/* Rogue — base + homepage. Hand-written, token-driven. */

*, *::before, *::after { box-sizing: border-box; }

/* Kill the grey tap-highlight box on every tap/click + make the whole site's text
   UN-COPIABLE / non-selectable (headlines and body copy included). Form inputs and
   textareas stay editable/selectable so users can still fill them in. */
* { -webkit-tap-highlight-color: transparent; }
html { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
/* re-enable selection ONLY inside fields the user must type in */
input, textarea, select, [contenteditable="true"] { -webkit-user-select: text; user-select: text; }
img, svg { -webkit-user-drag: none; }
/* The global `user-select: none` above makes iOS treat a press-and-move on an image as
   a long-press/drag instead of a scroll, which swallows swipe gestures inside carousels.
   Suppress the callout on horizontal scrollers so the swipe reaches them. */
.rg-pdp__stage-track, .rg-pdp__stage-track *,
.rg-pdp__thumbs, .rg-pdp__thumbs *,
.mp13-cart__related-list, .mp13-cart__related-list * {
	-webkit-touch-callout: none;
	-webkit-user-drag: none;
}

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* ---- Brand scrollbars everywhere: purple track + volt-green thumb ---- */
/* Firefox */
* { scrollbar-color: var(--rg-volt) var(--rg-violet); scrollbar-width: thin; }
/* WebKit / Blink (Chrome, Edge, Safari) — page + any scrollable container */
::-webkit-scrollbar { width: 12px; height: 12px; }
::-webkit-scrollbar-track { background: var(--rg-violet); }
::-webkit-scrollbar-thumb {
	background: var(--rg-volt);
	border-radius: 999px;
	border: 2px solid var(--rg-violet);   /* padding so the green thumb sits on the purple track */
}
::-webkit-scrollbar-thumb:hover { background: #bfe05a; }
::-webkit-scrollbar-corner { background: var(--rg-violet); }

/* Lenis smooth scroll (required base styles) */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }

body {
	margin: 0;
	background: var(--rg-bg);
	color: var(--rg-ink);
	font-family: "Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	font-weight: 400;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	/* `clip` (not `hidden`) prevents horizontal scroll WITHOUT making body a scroll
	   container — `overflow-x:hidden` forces overflow-y:auto, which breaks every
	   position:sticky on the page (e.g. the FAQ girl, detail tabs). */
	overflow-x: clip;
}

a { color: inherit; text-decoration: none; }
img { max-width: 100%; height: auto; display: block; }

/* Headings — Montserrat 900 Black, uppercase, brand colors (H1 volt / H2 violet / H3 volt) */
h1, h2, h3, h4, h5, h6 {
	font-family: "Montserrat", sans-serif;
	font-weight: 900;
	text-transform: uppercase;
	line-height: 1.05;
	letter-spacing: -0.02em;
	text-wrap: balance;
	margin: 0 0 0.4em;
}
h1 { color: var(--rg-h1); }
h2 { color: var(--rg-h2); }
h3 { color: var(--rg-h3); }
h4, h5, h6 { color: var(--rg-ink); }
p { text-wrap: pretty; }

.rg-container { width: min(var(--rg-container), 92vw); margin-inline: auto; }
.rg-section { padding-block: clamp(3rem, 8vw, 7rem); }

.rg-skip-link {
	position: absolute; left: -9999px; top: 0; z-index: var(--rg-z-tooltip);
	background: var(--rg-accent); color: var(--rg-accent-ink);
	padding: 0.6em 1em; border-radius: var(--rg-r-sm);
}
.rg-skip-link:focus { left: 1rem; top: 1rem; }

/* ================================================================
   HEADER — viewport-driven, roomy (no cramping)
   ================================================================ */
.rg-site-header {
	position: sticky; top: 0; z-index: var(--rg-z-sticky);
	background: var(--rg-glass-bg);
	-webkit-backdrop-filter: var(--rg-blur);
	backdrop-filter: var(--rg-blur);
	border-bottom: 0;                          /* no white/glass line under the header */
	transition: transform var(--rg-dur) var(--rg-ease-out), background var(--rg-dur) var(--rg-ease-out);
}
/* Homepage header: FIXED, transparent over the hero, → glassmorphism on scroll */
.rg-site-header--overlay {
	position: fixed; left: 0; right: 0; top: 0;
	background: transparent; backdrop-filter: none; -webkit-backdrop-filter: none;
	border-bottom: 1px solid transparent;   /* transparent (not 0) so it fades to the glass border with no white flash */
}
/* Glassmorphism once scrolled past the hero (JS toggles .is-scrolled) */
.rg-site-header--overlay.is-scrolled {
	background: rgba(18, 18, 18, 0.55);
	-webkit-backdrop-filter: blur(16px) saturate(140%);
	backdrop-filter: blur(16px) saturate(140%);
	border-bottom: 0;                                    /* no bottom line */
	box-shadow: 0 1vh 3vh rgba(0, 0, 0, 0.35);
}
/* All headers: keep the glass transition smooth */
.rg-site-header { transition: transform var(--rg-dur) var(--rg-ease-out), background var(--rg-dur) var(--rg-ease-out), backdrop-filter var(--rg-dur) var(--rg-ease-out), border-color var(--rg-dur) var(--rg-ease-out); }
.rg-site-header__inner {
	display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
	column-gap: 3vw;
	height: 11vh; min-height: 64px;
	padding-inline: 3vw;
	width: 100%; max-width: 100%; margin: 0;   /* full-bleed header, not container-clamped */
}
.rg-header-left { display: flex; align-items: center; gap: 1.6vw; justify-self: start; }
.rg-brand { justify-self: center; display: flex; align-items: center; position: relative; }
.rg-header-actions { display: flex; align-items: center; gap: 1.8vw; justify-self: end; }
.rg-brand__text { font-weight: 900; font-size: 2vw; letter-spacing: -0.04em; text-transform: uppercase; }

/* ===== Logo → "Rogue Supplements" text crossfade on hover (single source, no dupes) ===== */
.rg-brand .custom-logo-link { display: inline-flex; line-height: 0; }
.rg-brand .custom-logo {
	height: 4.5vh; min-height: 30px; width: auto;
	/* opacity driven by GSAP (see main.js) — CSS :hover didn't animate reliably */
}
.rg-brand__hover {
	position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
	white-space: nowrap; opacity: 0;
	font-family: "Montserrat", sans-serif; font-weight: 900; text-transform: uppercase;
	font-size: 1.5vw; letter-spacing: -0.02em; line-height: 1;
	color: var(--rg-volt);
}
/* no-JS fallback: show logo, hide text (GSAP takes over when JS runs) */
.no-js .rg-brand__hover { display: none; }
@media (max-width: 780px) { .rg-brand__hover { font-size: 4vw; } }

/* Hamburger — volt green bars */
/* Two elegant lines → morph to an X on open. Lines are absolutely centered in a
   fixed box so they cross exactly; each rotates around the box center. */
.rg-burger {
	position: relative; display: inline-block;
	width: 2.6vw; min-width: 28px; height: 2.6vw; min-height: 28px;
	background: none; border: 0; cursor: pointer; padding: 0;
}
.rg-burger span {
	position: absolute; left: 50%; top: 50%;
	width: 100%; height: 2px; border-radius: 2px;
	background: var(--rg-volt);
	transform-origin: center;
	transition: transform 0.4s cubic-bezier(0.65, 0, 0.35, 1), opacity 0.3s ease;
}
.rg-burger span:nth-child(1) { transform: translate(-50%, calc(-50% - 4px)); }  /* top line */
.rg-burger span:nth-child(2) { transform: translate(-50%, calc(-50% + 4px)); }  /* bottom line */
/* Active (menu open) → cross into an X */
.rg-burger.is-active span:nth-child(1) { transform: translate(-50%, -50%) rotate(45deg); }
.rg-burger.is-active span:nth-child(2) { transform: translate(-50%, -50%) rotate(-45deg); }
/* language switcher — dark-glass dropdown (reuses data-rg-dropdown JS) */
.rg-lang-wrap { position: relative; display: inline-flex; }
.rg-lang {
	color: var(--rg-volt); font-weight: 800; font-size: 0.82rem; display: inline-flex; align-items: center; gap: 0.4em;
	background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.12); border-radius: var(--rg-r-pill);
	padding: 0.4em 0.7em; cursor: pointer; text-transform: uppercase; letter-spacing: 0.04em;
	transition: border-color 0.3s var(--rg-ease-out), background 0.3s var(--rg-ease-out);
}
.rg-lang:hover, .rg-lang-wrap.is-open .rg-lang { border-color: rgba(169,207,63,0.4); background: rgba(255,255,255,0.08); }
.rg-lang__flag { font-size: 1.05em; line-height: 1; }
/* Mobile-only header pieces, hidden by default so desktop is untouched:
   - the switcher slot rendered inside .rg-header-actions (header.php)
   - the RS monogram that replaces the wordmark on phones
   Both are switched on inside the ≤600px block. */
.rg-lang-slot--mobile { display: none; }
.rg-brand__mono { display: none; }
.rg-lang__chev { transition: transform 0.3s var(--rg-ease-out); }
.rg-lang-wrap.is-open .rg-lang__chev { transform: rotate(180deg); }
.rg-lang__menu {
	position: absolute; top: calc(100% + 0.5rem); right: 0; z-index: var(--rg-z-dropdown, 700);
	list-style: none; margin: 0; padding: 0.4rem; min-width: 11rem;
	background: rgba(14,14,16,0.85); border: 1px solid rgba(255,255,255,0.12); border-radius: var(--rg-r-md, 14px);
	-webkit-backdrop-filter: blur(18px) saturate(130%); backdrop-filter: blur(18px) saturate(130%);
	box-shadow: 0 20px 50px rgba(0,0,0,0.5);
	opacity: 0; visibility: hidden; transform: translateY(-6px); transition: opacity 0.25s var(--rg-ease-out), transform 0.25s var(--rg-ease-out), visibility 0.25s;
}
.rg-lang-wrap.is-open .rg-lang__menu { opacity: 1; visibility: visible; transform: translateY(0); }
.rg-lang__opt {
	display: flex; align-items: center; gap: 0.6em; padding: 0.55em 0.7em; border-radius: 10px;
	color: rgba(255,255,255,0.85); text-decoration: none; font-weight: 600; font-size: 0.9rem;
	transition: background 0.2s, color 0.2s;
}
.rg-lang__opt:hover { background: rgba(169,207,63,0.1); color: var(--rg-volt); }
.rg-lang__opt.is-current { color: var(--rg-volt); }
.rg-lang__opt .rg-lang__flag { font-size: 1.2em; }
.rg-lang__name { margin-right: auto; }
.rg-lang__tick { color: var(--rg-volt); }
/* The button already renders an SVG chevron (.rg-lang__chev); this ::after triangle was
   a second one stacked next to it. Removed — one chevron only. */

/* Mobile: the switcher sits at the far LEFT of the header, so a right-anchored
   dropdown (min-width 11rem) hangs off the screen edge — measured at left:-44px on a
   393px viewport. Anchor it to the left there and cap the width to the viewport. */
@media (max-width: 780px) {
	.rg-lang__menu {
		right: auto;
		left: 0;
		min-width: 10rem;
		max-width: calc(100vw - 1.5rem);
	}
}

/* Header icons — volt green line icons with badges */
.rg-icon { position: relative; display: inline-flex; color: var(--rg-volt); background: none; border: 0; cursor: pointer; padding: 0; transition: transform var(--rg-dur-fast) var(--rg-ease-out); }
.rg-icon:hover { transform: translateY(-0.4vh); }
.rg-icon svg { display: block; width: 2.4vw; height: 2.4vw; min-width: 22px; min-height: 22px; }
.rg-badge {
	/* bigger + closer to the icon */
	position: absolute; top: -0.6vh; right: -0.5vw; min-width: 2vh; height: 2vh; min-height: 20px; min-width: 20px;
	display: grid; place-items: center; padding: 0 0.4vh;
	font-size: 1.3vh; font-weight: 800; line-height: 1;
	/* FILLED circle (volt bg, black number) — identical to the wishlist badge. */
	color: var(--rg-black); background: var(--rg-volt);
	border: 2px solid var(--rg-charcoal); border-radius: var(--rg-r-pill);
}
/* Cart badge is identical to the wishlist badge (filled volt circle, above).
   .rg-badge sets display:grid, which overrides the [hidden] attribute — force
   hidden badges (empty cart) to actually stay hidden. */
.rg-badge[hidden] { display: none !important; }

/* Kill the plugins' Yammy fly-to-header ghosts (flying cart / flying hearts).
   We replace them with a direct pop/flash on the header icon (below). */
.mp13c-cart-fly, .mp13w-heart-fly { display: none !important; }

/* Add-to-cart / add-to-wishlist feedback: pop + volt flash on the header icon. */
@keyframes rg-icon-pop {
	0%   { transform: scale(1); }
	35%  { transform: scale(1.35); }
	70%  { transform: scale(0.94); }
	100% { transform: scale(1); }
}
@keyframes rg-icon-flash {
	0%, 100% { filter: none; }
	40%      { filter: drop-shadow(0 0 10px rgba(169, 207, 63, 0.9)) drop-shadow(0 0 4px rgba(169, 207, 63, 0.8)); }
}
.rg-icon-pop { animation: rg-icon-pop 0.45s cubic-bezier(0.34, 1.56, 0.64, 1); }
.rg-icon-pop svg { animation: rg-icon-flash 0.45s ease; }
/* also pop the count badge itself */
.rg-icon-pop .rg-badge,
.rg-icon-pop .mp13-wishlist-trigger__badge { animation: rg-icon-pop 0.45s cubic-bezier(0.34, 1.56, 0.64, 1); }
@media (prefers-reduced-motion: reduce) {
	.rg-icon-pop, .rg-icon-pop svg, .rg-icon-pop .rg-badge { animation: none; }
}

/* ---- Header icon dropdowns (account; wishlist uses its plugin's own) ---- */
.rg-icon-wrap { position: relative; display: inline-flex; }

.rg-dropdown {
	position: absolute;
	top: calc(100% + 1.2vh);
	right: 0;
	z-index: var(--rg-z-dropdown, 700);
	width: min(20rem, 78vw);
	padding: 1.1rem;
	border-radius: var(--rg-r-lg);
	background: rgba(18, 18, 18, 0.92);
	-webkit-backdrop-filter: blur(16px) saturate(140%);
	backdrop-filter: blur(16px) saturate(140%);
	border: 1px solid rgba(169, 207, 63, 0.28);
	box-shadow: 0 2vh 5vh rgba(0, 0, 0, 0.5), 0 0 30px rgba(123, 74, 168, 0.25);
	/* hidden state */
	opacity: 0; visibility: hidden;
	transform: translateY(-0.6vh);
	transition: opacity var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur) var(--rg-ease-out), visibility var(--rg-dur);
}
.rg-account.is-open .rg-dropdown {
	opacity: 1; visibility: visible; transform: translateY(0);
}
/* hover-bridge so the panel doesn't close while crossing the gap */
.rg-account::after {
	content: ""; position: absolute; top: 100%; right: 0; width: 100%; height: 1.4vh;
}

.rg-dropdown__head { margin: 0 0 0.9rem; display: flex; flex-direction: column; gap: 0.15rem; }
.rg-dropdown__hi { color: var(--rg-ink-muted); font-size: 0.82rem; }
.rg-dropdown__name { color: var(--rg-white); font-weight: 800; text-transform: uppercase; letter-spacing: 0.01em; font-size: 1rem; }

/* Rogue Points pill in the account dropdown — volt green, black text + black monogram */
.rg-dropdown__points {
	display: inline-flex; align-items: center; gap: 0.4em; margin: 0 0 0.9rem;
	padding: 0.4em 0.9em; border-radius: var(--rg-r-pill); text-decoration: none; align-self: flex-start;
	background: var(--rg-volt); color: #000;
	transition: transform 0.25s var(--rg-ease-out), box-shadow 0.25s var(--rg-ease-out);
}
.rg-dropdown__points:hover { transform: translateY(-1px); box-shadow: 0 0 18px rgba(169,207,63,0.5); }
.rg-dropdown__points-mark { width: 1em; height: 1em; object-fit: contain; display: block; }
.rg-dropdown__points-num { font-weight: 900; font-size: 0.9rem; color: #000; }
.rg-dropdown__points-label { font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.7rem; color: #000; }

.rg-dropdown__list { list-style: none; margin: 0 0 0.9rem; padding: 0; display: grid; gap: 0.15rem; }
.rg-dropdown__list a,
.rg-dropdown__link {
	display: block; padding: 0.6rem 0.7rem; border-radius: 10px;
	color: var(--rg-white); text-decoration: none;
	font-weight: 700; font-size: 0.92rem; letter-spacing: 0.01em;
	transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out);
}
.rg-dropdown__list a:hover,
.rg-dropdown__link:hover { background: rgba(169, 207, 63, 0.12); color: var(--rg-volt); }

.rg-dropdown__cta {
	display: block; text-align: center;
	padding: 0.75rem 1rem; border-radius: var(--rg-r-pill);
	background: var(--rg-volt); color: var(--rg-black);
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.85rem;
	text-decoration: none;
	transition: box-shadow var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur-fast) var(--rg-ease-out);
}
.rg-dropdown__cta:hover { box-shadow: 0 0 26px rgba(169, 207, 63, 0.55); transform: translateY(-1px); }
.rg-dropdown__link { text-align: center; margin-top: 0.4rem; color: var(--rg-ink-muted); }

.rg-nav { display: none; } /* primary nav lives in the glass menu on this design */

/* Header cramping fix on narrow viewports: bump min sizes, tighten to edges */
@media (max-width: 780px) {
	.rg-site-header__inner { height: 9vh; column-gap: 4vw; }
	.rg-brand__text { font-size: 5vw; }
	.rg-lang { font-size: 3.4vw; }
}

/* ---- Buttons ---- */
.rg-btn {
	display: inline-flex; align-items: center; gap: 0.5em;
	padding: 1.4vh 2.4vw; border-radius: var(--rg-r-pill);
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.02em;
	border: 0; cursor: pointer;
	transition: transform var(--rg-dur-fast) var(--rg-ease-out), box-shadow var(--rg-dur) var(--rg-ease-out);
}
.rg-btn--primary { background: var(--rg-volt); color: var(--rg-primary-ink); box-shadow: var(--rg-shadow-glow); }
.rg-btn--accent { background: var(--rg-grad-accent); color: var(--rg-accent-ink); }
.rg-btn:hover { transform: translateY(-2px); }
.rg-btn:active { transform: translateY(0); }

/* ================================================================
   HERO — exactly one viewport tall; figure overlaps & spills below
   ================================================================ */
.rg-hero {
	position: relative;
	height: 100vh; height: 100svh;   /* exactly one viewport */
	display: grid; place-items: center;
	/* NOTE: not clipped — the cut-out figure must spill past the bottom edge */
	/* radius on ONE corner only: bottom-left (TL TR BR BL) — viewport-scaled, larger */
	border-radius: 0 0 0 6vw;
	background: var(--rg-black);                        /* black canvas so the ambient glows read */
	/* subtle purple brand glow (restored — this is what makes the radius read) */
	box-shadow: 0 3vh 7vh rgba(123, 74, 168, 0.30);
	z-index: 2;   /* above section 2 (z:0), below the girl (z:3) — woman (z:3) stays overlapping */
}
/* media + scrim are clipped to the curved hero; the figure is NOT */
.rg-hero__media {
	position: absolute; inset: 0; z-index: 0; overflow: hidden;
	border-radius: inherit;
}
/* video toned down to ambient texture — visible but calm, sitting behind the glows. */
.rg-hero__video {
	width: 100%; height: 100%; object-fit: cover; display: block;
	filter: brightness(0.72) saturate(0.85) blur(1px);
	transform: scale(1.04);   /* hide blur edges */
	opacity: 1;
}
.rg-hero__scrim {
	position: absolute; inset: 0;
	background:
		radial-gradient(ellipse at center, rgba(0,0,0,0.10) 0%, rgba(0,0,0,0.45) 100%),
		linear-gradient(180deg, rgba(0,0,0,0.30) 0%, rgba(0,0,0,0.05) 40%, var(--rg-black) 100%);
}
.rg-hero__content { position: relative; z-index: 2; text-align: center; padding: 0 4vw; max-width: 90vw; margin-inline: auto; }

/* ============================================================================
   HERO — SPLIT variant (copy left, framed contained figure right) — mirrors the
   About page hero the user loved.
   ========================================================================== */
.rg-hero--split { height: auto; min-height: 92vh; min-height: 92svh; display: flex; align-items: center; place-items: initial; overflow: hidden; }
/* video bg on the split hero: HEAVILY blurred + edge-masked → ambient texture only */
.rg-hero--split .rg-hero__media { position: absolute; inset: 0; z-index: 0; overflow: hidden; border-radius: inherit; }
.rg-hero--split .rg-hero__video {
	width: 100%; height: 100%; object-fit: cover; display: block;
	filter: brightness(0.95) saturate(0.95) blur(22px);   /* much brighter than before */
	transform: scale(1.15);   /* hide the blur bleed at the edges */
	opacity: 0.9;
	/* soft radial mask so it dissolves into the black canvas at the edges */
	-webkit-mask-image: radial-gradient(130% 100% at 55% 40%, #000 40%, transparent 92%);
	        mask-image: radial-gradient(130% 100% at 55% 40%, #000 40%, transparent 92%);
}
.rg-hero--split .rg-hero__scrim {
	position: absolute; inset: 0;
	/* lighter scrim — just enough to keep text legible, not a black-out */
	background:
		linear-gradient(90deg, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.25) 45%, rgba(0,0,0,0.05) 100%),
		linear-gradient(180deg, rgba(0,0,0,0.1) 0%, transparent 40%, rgba(0,0,0,0.35) 100%);
}
.rg-hero--split .rg-hero__inner {
	position: relative; z-index: 2;
	/* 78vw is for wide screens (it stops the figure panel freezing at 1200px and the
	   figures bursting out). On a phone 78vw leaves only ~342px of 438, which cropped
	   the headline — so mobile keeps the full-bleed 92vw it had before. */
	width: 92vw; margin-inline: auto;
	display: grid; grid-template-columns: 1.05fr 0.95fr; gap: clamp(2rem, 5vw, 5rem);
	align-items: center; padding-block: clamp(4rem, 10vh, 8rem);
}
/* Desktop only: narrow the hero so the figure panel keeps scaling with the viewport. */
@media (min-width: 901px) {
	.rg-hero--split .rg-hero__inner { width: 78vw; }
}
/* Phones: the grid column resolved ~3px wider than the container, so the title, the
   sub-copy and the figure all ran past the right edge. Pin the column to the container
   and let long words wrap instead of pushing the track wider. */
@media (max-width: 900px) {
	.rg-hero--split .rg-hero__inner { grid-template-columns: minmax(0, 1fr); }
	.rg-hero--split .rg-hero__inner > * { min-width: 0; max-width: 100%; }
	.rg-hero--split .rg-hero__title { overflow-wrap: anywhere; }
}
.rg-hero--split .rg-hero__copy { max-width: 60ch; text-align: left; }
.rg-hero__eyebrow { margin: 0 0 1em; font-weight: 800; letter-spacing: 0.3em; text-transform: uppercase; font-size: clamp(0.72rem, 1vw, 0.85rem); color: var(--rg-volt); }
/* left-align the rotating title in the split layout */
/* 8vw made the longest word ("SUPPLEMENTS") run past the copy column and overlap the
   glass figure panel. 6.4vw keeps the same scaling behaviour, one notch smaller. */
.rg-hero--split .rg-hero__title { font-size: clamp(3rem, 6vw, 7rem); display: grid; place-items: start; justify-content: start; text-align: left; min-height: 1.1em; margin: 0 0 0.5em; }
.rg-hero--split .rg-hero__title .rg-word { justify-self: start; }
.rg-hero--split .rg-hero__lead { text-align: left; margin: 0 0 1.6em; max-width: 46ch; padding-inline: 0; }
/* split hero: SOLID WHITE lead (kill the silver background-clip shine) */
.rg-hero--split .rg-hero__lead,
.rg-hero--split .rg-hero__lead.is-in {
	background: none !important;
	-webkit-text-fill-color: #fff !important; color: #fff !important;
	animation: none !important;
}
.rg-hero__cta { display: inline-flex; }

/* framed figure — same glass panel + dropshadow as the About hero */
/* the panel starts LOWER (top:22%) so the figures' heads rise above its top edge */
.rg-hero__figure { position: relative; display: flex; align-items: flex-end; justify-content: center; align-self: stretch; min-height: 60vh; padding-top: clamp(3rem, 8vh, 6rem); }
.rg-hero__figure::before {
	content: ""; position: absolute; left: 4%; right: 4%; bottom: 0; top: 22%; z-index: 0;
	border-radius: var(--rg-r-xl);
	background: radial-gradient(120% 90% at 50% 15%, rgba(123,74,168,0.16), transparent 62%), rgba(255,255,255,0.03);
	border: 1px solid rgba(255,255,255,0.10);
	box-shadow: 0 40px 80px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.06);
}
.rg-hero__figure-glow { position: absolute; inset: 18% 6% 0; z-index: 0; background: radial-gradient(circle at 50% 55%, rgba(169,207,63,0.20), rgba(123,74,168,0.20) 52%, transparent 74%); filter: blur(50px); }
.rg-hero__figure-img { position: relative; z-index: 1; width: auto; max-width: 100%; max-height: clamp(50vh, 66vh, 76vh); object-fit: contain; object-position: bottom center; margin-inline: auto; filter: drop-shadow(0 30px 45px rgba(0,0,0,0.6)); }

/* DUO: two athletes stacked on the panel — woman IN FRONT, man behind. They overlap
   and BOTH heads rise above the panel's top edge. Bottom-anchored. */
.rg-hero__figure--duo .rg-hero__figure-stage {
	position: relative; z-index: 1;
	display: flex; align-items: flex-end; justify-content: center;
	width: 100%; height: 100%;
}
/* Woman (--a) on the LEFT, man (--b) on the RIGHT, standing side by side with a
   SLIGHT overlap at the join — both fully visible. The woman is in front at the seam
   (higher z) so she isn't hidden behind him. */
.rg-hero__figure--duo .rg-hero__figure-stage { gap: 0; justify-content: center; }
/* woman shifted RIGHT (positive left margin) + a negative right margin so she moves
   toward and overlaps the man */
.rg-hero__figure--duo .rg-hero__figure-img--a { z-index: 2; margin: 0 -22% 0 12%; max-height: clamp(48vh, 62vh, 72vh); object-position: bottom center; }
/* man ~5% bigger than the woman */
.rg-hero__figure--duo .rg-hero__figure-img--b { z-index: 1; margin: 0; max-height: clamp(50vh, 65vh, 76vh); object-position: bottom center; filter: drop-shadow(0 30px 45px rgba(0,0,0,0.6)) brightness(0.92); }

/* Pull the pair back inside the container's rounded edge — her 2vw right, him 2vw
   left. vw (not %) so the shift scales with the viewport instead of with each image's
   own width. Heights are untouched, so he stays ~5% taller than her. */
.rg-hero__figure--duo .rg-hero__figure-img--a { margin-right: -2vw; }
.rg-hero__figure--duo .rg-hero__figure-img--b { margin-left: -2vw; }

@media (max-width: 900px) {
	.rg-hero--split .rg-hero__inner { grid-template-columns: 1fr; text-align: center; }
	/* Push the eyebrow + rotating heading down 4vw. Applied to the COPY column only, so
	   the figure panel below keeps its current position. */
	.rg-hero--split .rg-hero__copy { max-width: 100%; margin-inline: auto; text-align: center; padding-top: 4vw; }
	.rg-hero--split .rg-hero__title { place-items: center; justify-content: center; text-align: center; }
	.rg-hero--split .rg-hero__title .rg-word { justify-self: center; }
	.rg-hero--split .rg-hero__lead { text-align: center; margin-inline: auto; }
	.rg-hero__figure { min-height: 44vh; order: 2; }
	.rg-hero__figure-img { max-height: 48vh; }
	.rg-hero__figure--duo .rg-hero__figure-img { max-height: 40vh; }
}
@media (max-width: 520px) {
	/* Both figures stay on phones (the man used to be dropped here "to avoid
	   crowding"). They share the stage instead: a tighter overlap in vw plus a smaller
	   height cap keeps the pair inside the panel without either one shrinking away. */
	.rg-hero__figure--duo .rg-hero__figure-img--a {
		margin: 0 -3vw 0 0;
		max-height: 37.8vh;   /* 36vh + 5% */
	}
	.rg-hero__figure--duo .rg-hero__figure-img--b {
		margin: 0 -3vw 0 0;
		max-height: 39.9vh;   /* 38vh + 5%; stays ~5% taller than her */
	}
}
.rg-hero__title {
	font-size: 7.5vw;                /* ~half the old size; fits within the viewport */
	line-height: 0.9; margin: 0 0 2.5vh;
	/* rotator: stack words in one slot, centered */
	position: relative; display: grid; place-items: center; justify-content: center;
	width: 100%;              /* span the content block so absolutely-positioned words center on screen */
	min-height: 7.5vw;
}
.rg-hero__title .rg-word {
	grid-area: 1 / 1;             /* grid stack in one cell → place-items:center centers them */
	justify-self: center;         /* center within the cell */
	white-space: nowrap;
	opacity: 0;                   /* JS (GSAP) drives the opacity crossfade */
	will-change: opacity;
	/* gradient + travelling gleam (matches the shop title). SEAMLESS: starts and ends
	   on the SAME colour (volt) so the 200%-tile loop has no hard join line. */
	background: linear-gradient(100deg,
		var(--rg-volt) 0%,
		var(--rg-violet) 25%,
		#ffffff 50%,
		var(--rg-violet) 75%,
		var(--rg-volt) 100%);
	background-size: 200% 100%;
	background-position: 100% 0;
	-webkit-background-clip: text; background-clip: text;
	-webkit-text-fill-color: transparent; color: transparent;
	filter: drop-shadow(0 0.5vh 4vh rgba(0,0,0,0.5)) drop-shadow(0 0 30px rgba(169,207,63,0.2));
	animation: rg-title-gleam 5s linear infinite;
}
@media (prefers-reduced-motion: reduce) {
	.rg-hero__title .rg-word { animation: none; background-position: 50% 0; }
}
/* no-JS / reduced-motion: just show the first word */
.no-js .rg-hero__title .rg-word:first-child,
.rg-hero__title .rg-word:first-child { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
	.rg-hero__title .rg-word { transition: none; }
	.rg-hero__title .rg-word:not(.is-active) { opacity: 0; }
	.rg-hero__title .rg-word.is-active { opacity: 1; }
}
.rg-hero__lead {
	color: var(--rg-white);
	font-weight: 800; text-transform: uppercase;
	font-size: 2vw; line-height: 1.25; letter-spacing: 0.01em;
	max-width: 26ch; margin-inline: auto;
	text-shadow: 0 0.2vh 2vh rgba(0,0,0,0.6);
	/* fade-up reveal on load */
	opacity: 0; transform: translateY(1.2em); filter: blur(4px);
	transition: opacity 1s var(--rg-ease-out), transform 1s var(--rg-ease-out), filter 1s var(--rg-ease-out);
}
.rg-hero__lead.is-in { opacity: 1; transform: translateY(0); filter: blur(0); }
/* subtle WHITE shine sweeping across the lead (no brand colours — just a soft
   silver highlight gliding through). Kicks in only after the reveal finishes. */
.rg-hero__lead.is-in {
	background: linear-gradient(100deg,
		rgba(255,255,255,0.78) 0%,
		rgba(255,255,255,0.78) 38%,
		#ffffff 50%,                /* soft bright shine peak (no hard band) */
		rgba(255,255,255,0.78) 62%,
		rgba(255,255,255,0.78) 100%);
	background-size: 220% 100%;
	background-position: 100% 0;
	-webkit-background-clip: text; background-clip: text;
	-webkit-text-fill-color: transparent; color: transparent;
	animation: rg-lead-shine 6s linear infinite;
}
@keyframes rg-lead-shine { to { background-position: -120% 0; } }
.no-js .rg-hero__lead { opacity: 1; transform: none; filter: none; }
@media (prefers-reduced-motion: reduce) {
	.rg-hero__lead { opacity: 1; transform: none; filter: none; transition: none; }
	.rg-hero__lead.is-in { animation: none; background-position: 50% 0; }
}

/* Vertical SCROLL indicator, bottom-left — label + animated line drawing down */
.rg-hero__scroll {
	position: absolute; left: 3vw; bottom: 5vh; z-index: 4;
	display: flex; flex-direction: column; align-items: center; gap: 1.4vh;
	color: var(--rg-white);
}
.rg-hero__scroll-label {
	font-size: max(0.8vw, 11px); font-weight: 700; letter-spacing: 0.3em;
	writing-mode: vertical-rl; text-orientation: mixed;
}
/* the track is a thin line; a dot travels down it on a smooth loop */
.rg-hero__scroll-track {
	position: relative; width: 2px; height: 8vh; border-radius: 2px;
	background: linear-gradient(180deg, rgba(255,255,255,0.15), rgba(255,255,255,0.35));
	overflow: hidden;
}
.rg-hero__scroll-dot {
	position: absolute; left: 50%; top: 0; transform: translateX(-50%);
	width: 4px; height: 40%; border-radius: 2px;
	background: var(--rg-volt); box-shadow: 0 0 10px var(--rg-volt);
	animation: rg-scroll-run 1.8s var(--rg-ease-out) infinite;
}
@keyframes rg-scroll-run {
	0%   { top: -40%; opacity: 0; }
	25%  { opacity: 1; }
	75%  { opacity: 1; }
	100% { top: 100%; opacity: 0; }
}
@media (prefers-reduced-motion: reduce) { .rg-hero__scroll-dot { animation: none; top: 30%; } }

@media (max-width: 780px) {
	.rg-hero__title { font-size: 13vw; }
	.rg-hero__lead { font-size: 4vw; }
	.rg-hero__scroll { font-size: 2.6vw; }
}

/* ================================================================
   SECTION 2 — "FOR THE REBELS AT HEART". The WOMAN lives in this section,
   top-right, spilling PAST its bottom edge. Section 3 covers her feet slightly.
   ================================================================ */
.rg-rebels {
	position: relative; z-index: auto;   /* no stacking context → the girl child can rise above the hero */
	background: var(--rg-black);
	padding: 16vh 4vw 18vh;           /* more breathing room above + below the title */
	min-height: 60vh;
	overflow: visible;                /* she must spill past the bottom */
	/* same trick as section 3 (reversed): overlap the seam so the hero's shadow
	   projects down cleanly with no hard clip line. §3 pulls up over §2; here §2
	   pulls up under the hero. */
	margin-top: -8vh;
}
.rg-rebels__inner { position: relative; z-index: 2; max-width: 74vw; }
.rg-rebels__lead {
	color: var(--rg-violet);
	font-weight: 900; text-transform: uppercase;
	font-size: 6vw; line-height: 1; letter-spacing: -0.02em;
	margin: 0;
}
/* The woman — top-right of section 2, spilling below into section 3's overlap */
.rg-rebels__figure {
	position: absolute; right: 5vw; top: -42vh; z-index: 3;   /* above hero (z:2), below section 3 (z:4) */
	height: 98vh; width: auto;
	will-change: transform;           /* bobbing target */
	pointer-events: none;
}
.rg-rebels__figure-img { height: 100%; width: auto; display: block; filter: drop-shadow(0 1.5vh 3vh rgba(0,0,0,0.55)); }

/* ================================================================
   SECTION 3 — next section (Break the rules later). Sits ABOVE section 2,
   pulled up to cover the woman's feet SLIGHTLY. Rounded top-left + dropshadow.
   ================================================================ */
.rg-next {
	position: relative; z-index: 4;
	background: var(--rg-black);
	/* section 2 is now a marquee (no spilling figure), so the old -8vh overlap would
	   clip the marquee's bottom row. Neutralised. */
	margin-top: 0;
	min-height: 90vh;
	border-radius: 4vw 0 0 0;         /* rounded top-left corner */
	/* volt-green glow ONLY on the top (rising) edge — negative spread pulls the blur
	   in so it can't bleed out the bottom/sides of the section. */
	box-shadow: 0 -1.5vh 4vh -1.5vh rgba(169, 207, 63, 0.30);
	overflow: hidden;                 /* clip the full-bleed image to the rounded corner */
	/* two columns: image (left, full-bleed) | statement (right) */
	display: grid; grid-template-columns: 1fr 1fr; align-items: stretch;
}
/* Left: B&W image sized to 90vh, pinned to the BOTTOM of the section */
.rg-next__media {
	position: relative;
	display: flex; align-items: flex-end; justify-content: center;   /* bottom-anchored */
}
.rg-next__img {
	height: 100vh; width: 100%; max-width: 100%;
	object-fit: cover; object-position: center top;   /* bigger; crops from the LEGS (bottom), keeps the head */
	display: block;
	filter: grayscale(1) contrast(1.05);   /* clean, true B&W — refined + minimal */
}
/* Black→transparent overlays fading the image into black on ALL sides.
   The right-edge fade is strongest — it hides the vertical seam between image + text.
   Sized to the image box (not the whole column) via the wrapper below. */
.rg-next__media::after {
	content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 1;
	background:
		linear-gradient(to right,  #000 0%, transparent 32%, transparent 60%, #000 88%),   /* stronger black on BOTH sides */
		linear-gradient(to bottom, #000 0%, transparent 15%, transparent 82%, #000 100%);    /* top + bottom */
}
/* Right: the statement block */
.rg-next__content {
	position: relative;
	display: flex; flex-direction: column; justify-content: center;
	gap: 3.5vh; padding: 12vh 6vw 12vh 5vw;   /* a touch more breathing room */
}
/* faint violet undertone behind the statement (ties into the ambient palette) */
.rg-next__content::before {
	content: ""; position: absolute; z-index: 0; pointer-events: none;
	left: 2vw; top: 30%; width: 60%; height: 50%;
	background: radial-gradient(circle, rgba(123,74,168,0.22), transparent 70%);
	filter: blur(50px);
}
.rg-next__content > * { position: relative; z-index: 1; }
.rg-next__title {
	font-size: 5.5vw; line-height: 0.98; margin: 0;
	text-transform: uppercase; letter-spacing: -0.02em;
	/* SCROLL-FILL in VOLT: dim volt → bright volt, top-to-bottom as it scrolls in. */
	--fill: 0%;
	background: linear-gradient(180deg,
		var(--rg-volt) 0%,
		var(--rg-volt) var(--fill),
		rgba(169,207,63,0.22) calc(var(--fill) + 8%),
		rgba(169,207,63,0.22) 100%);
	-webkit-background-clip: text; background-clip: text;
	-webkit-text-fill-color: transparent; color: transparent;
}
@media (prefers-reduced-motion: reduce) { .rg-next__title { --fill: 100%; } }
.rg-next__sub {
	color: var(--rg-white);
	font-weight: 800; text-transform: uppercase;
	font-size: 1.4vw; line-height: 1.3; letter-spacing: 0.01em;
	max-width: 32ch; margin: 0;
}
.rg-next__cta { align-self: flex-start; margin-top: 1vh; }
/* gradient pill button (pink → purple) with magnetic follow + arrow slide-in */
.rg-btn--grad {
	background: linear-gradient(120deg, var(--rg-pink) 0%, var(--rg-violet) 100%);
	color: #fff; box-shadow: 0 1vh 3vh rgba(219, 30, 121, 0.35);
	position: relative; overflow: hidden;
	transition: box-shadow 0.4s var(--rg-ease-out);   /* transform handled by GSAP (magnetic) */
	will-change: transform;
}
.rg-btn--grad .rg-btn__label { position: relative; z-index: 1; transition: transform 0.4s var(--rg-ease-out); }
.rg-btn--grad .rg-btn__arrow {
	position: relative; z-index: 1; display: inline-flex; align-items: center;
	width: 0; overflow: hidden; opacity: 0;
	transform: translateX(-6px);
	transition: width 0.4s var(--rg-ease-out), opacity 0.4s var(--rg-ease-out), transform 0.4s var(--rg-ease-out);
}
.rg-btn--grad:hover {
	box-shadow: 0 1.5vh 4vh rgba(219, 30, 121, 0.55), 0 0 24px rgba(123, 74, 168, 0.5);
}
.rg-btn--grad:hover .rg-btn__label { transform: translateX(-4px); }
.rg-btn--grad:hover .rg-btn__arrow { width: 1.5em; opacity: 1; transform: translateX(0); margin-left: 0.35em; }
@media (max-width: 860px) {
	.rg-next { grid-template-columns: 1fr; min-height: auto; }
	/* .rg-next__img is height:100vh, which ignored the 60vh wrapper and ate a whole
	   phone screen before the heading appeared. Constrain the image itself and keep it
	   anchored to the top so the torso — not the legs — is what you see. */
	.rg-next__media { height: 60vh; }
	.rg-next__img { height: 60vh; object-position: center top; }
	.rg-next__content { padding: 8vh 6vw; text-align: left; }
	.rg-next__title { font-size: 11vw; }
	.rg-next__sub { font-size: 4vw; }
}

/* Scroll reveal: visible by default (no-JS/SEO safe). GSAP's from() hides then
   reveals it on scroll — so no opacity:0 default that could flash or stick. */
[data-rg-scroll-fade] {
	will-change: opacity, transform;
}
@media (prefers-reduced-motion: reduce) { [data-rg-scroll-fade] { opacity: 1 !important; transform: none !important; } }

@media (max-width: 780px) {
	.rg-rebels__inner { max-width: 100%; }
	.rg-rebels__lead { font-size: 10vw; }
	.rg-rebels__figure { height: 80vh; right: 0; top: -8vh; opacity: 0.95; }
	.rg-next { border-radius: 8vw 0 0 0; margin-top: -4vh; }
}

/* ================================================================
   SECTION 4 — manifesto box (left) + product grid (right)
   ================================================================ */
.rg-manifesto {
	background: transparent;                    /* let the ambient glows show through */
	display: grid; grid-template-columns: 1fr 1fr;
	gap: clamp(2rem, 4vw, 4vw); align-items: center;
	padding: clamp(4rem, 10vh, 8rem) 4vw;
}
/* NO grey box — manifesto sits on black with a faint violet undertone behind it */
.rg-manifesto__box {
	position: relative;
	background: transparent;
	padding: clamp(1rem, 3vh, 2rem) clamp(0.5rem, 1.5vw, 1.5rem);
}
.rg-manifesto__box::before {
	content: ""; position: absolute; z-index: 0; pointer-events: none;
	left: -2vw; top: 20%; width: 70%; height: 60%;
	background: radial-gradient(circle, rgba(123,74,168,0.20), transparent 70%);
	filter: blur(55px);
}
.rg-manifesto__text {
	position: relative; z-index: 1;
	font-weight: 900; text-transform: uppercase;
	font-size: clamp(1.5rem, 2.6vw, 2.8rem); line-height: 1.28; letter-spacing: -0.01em;
	margin: 0;
	/* SCROLL-FILL: dim → white, filling TOP-TO-BOTTOM as you scroll through the block.
	   JS sets --fill (0→100%) from the element's scroll progress. Soft edge on the
	   fill front reads as an ink-fill wipe. */
	--fill: 0%;
	background: linear-gradient(180deg,
		var(--rg-white) 0%,
		var(--rg-white) var(--fill),
		rgba(255,255,255,0.18) calc(var(--fill) + 8%),
		rgba(255,255,255,0.18) 100%);
	-webkit-background-clip: text; background-clip: text;
	-webkit-text-fill-color: transparent; color: transparent;
}
@media (prefers-reduced-motion: reduce) {
	.rg-manifesto__text { --fill: 100%; }
}

/* Right: 2-col product grid, split volt/violet cards */
.rg-manifesto__grid {
	display: grid; grid-template-columns: 1fr 1fr; gap: 2vw;
}
.rg-pcard {
	position: relative; display: flex; flex-direction: column;
	border-radius: var(--rg-r-lg);
	background: #111; text-decoration: none;
	transition: transform 0.8s var(--rg-ease-out), box-shadow 0.8s var(--rg-ease-out);   /* slower lift */
	will-change: transform;
}
/* dispersed glow BELOW the card, revealed on hover */
.rg-pcard::after {
	content: ""; position: absolute; left: 8%; right: 8%; bottom: -4vh; height: 6vh;
	border-radius: 50%; z-index: -1; opacity: 0; pointer-events: none;
	filter: blur(22px);
	transition: opacity 0.45s var(--rg-ease-out);
}
.rg-pcard--volt::after   { background: var(--rg-volt); }
.rg-pcard--violet::after { background: var(--rg-violet); }
/* split background: top half brand color, bottom half its partner */
.rg-pcard--volt   { background: linear-gradient(180deg, var(--rg-black) 0% 50%, var(--rg-volt) 50% 100%); box-shadow: 0 0 0 1px rgba(169,207,63,0.4), 0 1vh 3vh rgba(0,0,0,0.5); }
.rg-pcard--violet { background: linear-gradient(180deg, #e9e9ea 0% 50%, var(--rg-violet) 50% 100%); box-shadow: 0 0 0 1px rgba(123,74,168,0.4), 0 1vh 3vh rgba(0,0,0,0.5); }
.rg-pcard__media { position: relative; display: grid; place-items: center; padding: 4vh 1vw; min-height: 30vh; overflow: hidden; border-radius: inherit; }
/* Product name — BLACK title below the bottle, on the colored bottom band */
.rg-pcard__name {
	position: absolute; left: 0; right: 0; bottom: 2vh; text-align: center;
	color: var(--rg-black);
	font-weight: 900; text-transform: uppercase;
	font-size: 1.1vw; letter-spacing: 0.03em; line-height: 1.1;
	padding: 0 0.5vw;
}
@media (max-width: 980px) { .rg-pcard__name { font-size: 3vw; } }
.rg-pcard__img {
	max-height: 28vh; width: auto; object-fit: contain;
	filter: drop-shadow(0 1vh 2vh rgba(0,0,0,0.5));
	transition: transform 0.9s var(--rg-ease-out), filter 0.9s var(--rg-ease-out);   /* slower bottle */
	will-change: transform;
}
/* HOVER: card lifts, glow disperses below, bottle pops up + bigger */
.rg-pcard:hover {
	transform: translateY(-1.2vh);   /* smaller, gentler lift */
	box-shadow: 0 0 0 1px var(--rg-volt), 0 3vh 6vh rgba(0,0,0,0.6);
}
.rg-pcard:hover::after { opacity: 0.55; }
.rg-pcard:hover .rg-pcard__img {
	transform: translateY(-1vh) scale(1.06);
	filter: drop-shadow(0 2vh 3vh rgba(0,0,0,0.6));
}
@media (prefers-reduced-motion: reduce) {
	.rg-pcard, .rg-pcard__img { transition: none; }
	.rg-pcard:hover { transform: none; }
	.rg-pcard:hover .rg-pcard__img { transform: none; }
}

@media (max-width: 980px) {
	.rg-manifesto { grid-template-columns: 1fr; gap: 6vh; }
	.rg-manifesto__text { font-size: 5vw; }
}

/* ================================================================
   SECTION 5 — bento continuation: pack cards + trending + green CTA
   ================================================================ */
.rg-bento {
	background: var(--rg-black);
	display: grid;
	/* 4 columns. Top row: col 1 EMPTY, cols 2-4 = pack | pack | trending.
	   Bottom row: CTA spans all 4 columns full-width. The woman overflows UP
	   from the CTA into the empty top-left cell. */
	grid-template-columns: repeat(4, 1fr);
	grid-template-areas:
		".   pack1 pack2 trend"
		"cta cta   cta   .";
	gap: 2vw;
	padding: 0 4vw 10vh;
	align-items: stretch;
}
.rg-bento__pack:nth-of-type(1) { grid-area: pack1; }
.rg-bento__pack:nth-of-type(2) { grid-area: pack2; }
.rg-bento__trending { grid-area: trend; }
.rg-bento__cta { grid-area: cta; }

/* Trending tile — purple, heading + pack image */
.rg-bento__trending {
	position: relative; display: flex; flex-direction: column; justify-content: space-between;
	background: var(--rg-violet); border-radius: var(--rg-r-lg);
	padding: 4vh 2.5vw; text-decoration: none; overflow: hidden;
	transition: transform 0.8s var(--rg-ease-out), box-shadow 0.8s var(--rg-ease-out);
}
.rg-bento__trending-title {
	color: var(--rg-black); font-weight: 900; text-transform: uppercase;
	font-size: 2.6vw; line-height: 1.02; margin: 0; letter-spacing: -0.01em;
}
.rg-bento__trending-img { max-height: 24vh; width: auto; align-self: center; margin-top: 2vh;
	filter: drop-shadow(0 1.5vh 3vh rgba(0,0,0,0.4)); transition: transform 0.8s var(--rg-ease-out); }
.rg-bento__trending:hover { transform: translateY(-1.2vh); box-shadow: 0 3vh 6vh rgba(0,0,0,0.5); }
.rg-bento__trending:hover .rg-bento__trending-img { transform: translateY(-0.8vh) scale(1.05); }

/* Green CTA tile — full-width. Woman pinned bottom-left, overflows UP into the
   empty top-left cell. Headline + button sit to the right of her. */
.rg-bento__cta {
	position: relative;
	background: var(--rg-volt); border-radius: var(--rg-r-lg);
	overflow: visible;                 /* let the woman rise above the box */
	min-height: 42vh;
	display: flex; align-items: center;
	padding: 5vh 4vw 5vh 26vw;         /* left padding clears the woman's column */
}
/* The figure: absolutely pinned to the box's bottom-left, tall enough to peek up */
.rg-bento__cta-figure {
	position: absolute; left: 2vw; bottom: 0; z-index: 2;
	width: auto; height: 62vh;         /* taller than the box → torso/head peek above */
	object-fit: contain; object-position: bottom;
	pointer-events: none;
}
.rg-bento__cta-body { display: flex; flex-direction: column; gap: 3.5vh; max-width: 60ch; }
.rg-bento__cta-title {
	color: var(--rg-black); font-weight: 900; text-transform: uppercase;
	font-size: 3vw; line-height: 1.05; margin: 0; letter-spacing: -0.01em;
}
.rg-bento__cta-btn { align-self: flex-start; }

@media (max-width: 980px) {
	.rg-bento {
		grid-template-columns: 1fr 1fr;
		grid-template-areas: "pack1 pack2" "trend trend" "cta cta";
	}
	.rg-bento__cta {
		flex-direction: column; align-items: stretch; padding: 5vh 6vw;
		min-height: auto; overflow: hidden;
	}
	.rg-bento__cta-figure { position: relative; left: auto; height: 40vh; align-self: center; }
	.rg-bento__cta-body { max-width: 100%; }
	.rg-bento__trending-title, .rg-bento__cta-title { font-size: 6vw; }
}

/* ================================================================
   SECTION 6 — Products in Detail (vertical tabs)
   ================================================================ */
.rg-detail { background: var(--rg-black); padding: 8vh 0 12vh; }
.rg-detail__title {
	color: var(--rg-violet); font-weight: 900; text-transform: uppercase;
	font-size: 6vw; line-height: 0.95; letter-spacing: -0.02em; margin: 0 0 6vh;
}
.rg-detail__wrap { display: grid; grid-template-columns: 22vw 1fr; gap: 4vw; align-items: start; }

/* vertical tab buttons — sticky while scrolling the content, releases at section end */
.rg-detail__tabs {
	display: flex; flex-direction: column; gap: 2vh;
	position: sticky; top: 14vh;   /* top offset (clears the header) = padding on scroll */
	align-self: start;             /* required so sticky works inside the grid track */
}
.rg-detail__tab {
	appearance: none; cursor: pointer; text-align: left;
	padding: 1.8vh 1.4vw; border-radius: var(--rg-r-pill);
	font-family: "Montserrat", sans-serif; font-weight: 800; text-transform: uppercase;
	font-size: clamp(0.85rem, 1vw, 1rem); letter-spacing: 0.02em;
	background: rgba(255,255,255,0.04); color: var(--rg-ink-muted);
	border: 1px solid rgba(255,255,255,0.08);
	transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out), border-color var(--rg-dur) var(--rg-ease-out);
}
.rg-detail__tab:hover { color: var(--rg-white); border-color: rgba(169,207,63,0.4); }
.rg-detail__tab.is-active {
	background: var(--rg-volt); color: var(--rg-black); border-color: var(--rg-volt);
}

/* panels */
.rg-detail__panel { display: block; }
.rg-detail__panel[hidden] { display: none; }
.rg-detail__heading {
	color: var(--rg-volt); font-weight: 900; text-transform: uppercase;
	font-size: 2vw; letter-spacing: 0.01em; margin: 0 0 4vh;
}
.rg-detail__media { margin: 0 0 4vh; }
.rg-detail__img { max-width: 30vw; height: auto; border-radius: var(--rg-r-md); }
/* body copy: sentence case, lighter weight, more line-height → readable + calm */
.rg-detail__copy { color: var(--rg-ink-muted); font-weight: 500; }
.rg-detail__copy p { font-size: clamp(1rem, 1.15vw, 1.2rem); line-height: 1.65; letter-spacing: 0; margin: 0 0 3.5vh; max-width: 60ch; }
.rg-detail__copy ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.8vh; }
.rg-detail__copy li { position: relative; padding-left: 1.8rem; font-size: clamp(0.95rem, 1.05vw, 1.1rem); line-height: 1.5; color: var(--rg-white); font-weight: 600; }
.rg-detail__copy li::before { content: ""; position: absolute; left: 0; top: 0.55em; width: 0.6rem; height: 0.6rem; border-radius: 50%; background: var(--rg-volt); }

/* crossfade when switching panels (JS toggles hidden + is-active) */
.rg-detail__panel.is-active { animation: rg-detail-in 0.5s var(--rg-ease-out); }
@keyframes rg-detail-in { from { opacity: 0; transform: translateY(2vh); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .rg-detail__panel.is-active { animation: none; } }

@media (max-width: 900px) {
	.rg-detail__title { font-size: 11vw; }
	.rg-detail__wrap { grid-template-columns: 1fr; gap: 5vh; }
	.rg-detail__tabs { flex-direction: row; flex-wrap: wrap; position: static; }
	.rg-detail__tab { font-size: 3.4vw; padding: 1.6vh 4vw; }
	.rg-detail__heading { font-size: 6vw; }
	.rg-detail__img { max-width: 80vw; }
	.rg-detail__copy p, .rg-detail__copy li { font-size: 4vw; }
	.rg-detail__copy li { padding-left: 6vw; }
}

/* ================================================================
   SECTION 7 — "Top of the Range" product carousel
   ================================================================ */
.rg-carousel { background: transparent; padding: 8vh 0 16vh; overflow: hidden; }   /* glows show through */
.rg-carousel__head {
	display: flex; align-items: flex-end; justify-content: space-between;
	padding: 0 4vw; margin-bottom: 5vh; gap: 2vw;
}
.rg-carousel__title {
	color: var(--rg-volt); font-weight: 900; text-transform: uppercase;
	font-size: 5vw; line-height: 0.95; letter-spacing: -0.02em; margin: 0;
}
.rg-carousel__nav { display: flex; gap: 1vw; flex: 0 0 auto; }
.rg-carousel__arrow {
	width: 3.4vw; height: 3.4vw; min-width: 44px; min-height: 44px;
	display: grid; place-items: center; cursor: pointer;
	border-radius: var(--rg-r-pill); border: 1px solid rgba(255,255,255,0.10);
	background: rgba(255,255,255,0.04);
	-webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
	color: var(--rg-volt);
	transition: transform var(--rg-dur) var(--rg-ease-out), background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out), border-color var(--rg-dur) var(--rg-ease-out);
}
.rg-carousel__arrow:hover { background: var(--rg-volt); color: var(--rg-black); transform: translateY(-0.4vh); }

/* Viewport: clips the infinite track. Left offset aligns to gutter; the loop
   itself provides the endless peek so a card is always partly visible at the edge. */
/* Splide manages the track/list; give it vertical room for the card glow + lift */
.rg-carousel__splide { padding: 3vh 0 9vh; cursor: grab; }
.rg-carousel__splide.is-dragging, .rg-carousel__splide .splide__track:active { cursor: grabbing; }
.rg-carousel__splide .splide__track { overflow: visible; }   /* let glow/lift show, not clipped */
.rg-carousel__splide .splide__list { align-items: stretch; }
.rg-carousel__splide .splide__slide { height: auto; display: flex; }
.rg-carousel__splide .splide__slide .rg-pcarousel-card { width: 100%; }
.rg-pcarousel-card { scroll-snap-align: start; }

/* Streamlined e-commerce card */
.rg-pcarousel-card {
	width: 100%;                              /* Splide's slide controls the outer width */
	background: rgba(255,255,255,0.04);       /* dark glass (was solid #141414) */
	-webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
	border-radius: var(--rg-r-lg);
	border: 1px solid rgba(255,255,255,0.08);
	display: flex; flex-direction: column; overflow: visible; position: relative;
	transition: transform 0.5s var(--rg-ease-out), box-shadow 0.5s var(--rg-ease-out), border-color 0.5s var(--rg-ease-out);
	will-change: transform;
}
.rg-pcarousel-card:hover { border-color: rgba(169,207,63,0.4); }
/* EQUAL-HEIGHT cards: body fills remaining height so price + button align across
   the row even when one title wraps to more lines. */
.rg-pcarousel-card__body { flex: 1 1 auto; display: flex; flex-direction: column; }
.rg-pcarousel-card__name { min-height: 2.6em; }        /* room for up to 2 title lines */
.rg-pcarousel-card__price { margin-top: auto; }        /* push price + CTA to the bottom */
/* dispersed glow beneath */
.rg-pcarousel-card::after {
	content: ""; position: absolute; left: 10%; right: 10%; bottom: -3vh; height: 5vh;
	border-radius: 50%; z-index: -1; opacity: 0; filter: blur(24px);
	background: var(--rg-volt); transition: opacity 0.5s var(--rg-ease-out);
}
/* whole card floats up on hover (matches the bento tiles) */
.rg-pcarousel-card:hover { transform: translateY(-1.6vh); box-shadow: 0 3vh 6vh rgba(0,0,0,0.6); }
.rg-pcarousel-card:hover::after { opacity: 0.55; }

.rg-pcarousel-card__media {
	position: relative; border-radius: var(--rg-r-lg) var(--rg-r-lg) 0 0; overflow: hidden;
	aspect-ratio: 1 / 1;
	/* FROSTED LIGHT-GLASS shelf: a soft luminous light panel (brighter top → cooler
	   bottom) so white-background product photos melt INTO it as a lit glass surface
	   rather than reading as a pasted-in white rectangle. */
	background:
		radial-gradient(80% 65% at 50% 38%, #ffffff 0%, #f4f5f7 55%, #e7e9ee 100%);
}
/* feather the edges + a soft floor shadow so the product sits ON the shelf */
.rg-pcarousel-card__media::before {
	content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
	border-radius: inherit;
	box-shadow: inset 0 -2.2rem 2.5rem -1.5rem rgba(120,120,140,0.35),   /* soft floor */
	            inset 0 0 0 1px rgba(255,255,255,0.5);                    /* glassy rim */
	background: radial-gradient(70% 55% at 50% 42%, transparent 60%, rgba(200,202,212,0.25) 100%);
}
.rg-pcarousel-card__imglink { display: block; width: 100%; height: 100%; }
/* STRETCHED LINK: the NAME anchor (which lives in __body, OUTSIDE the media's
   overflow:hidden) covers the WHOLE card so clicking anywhere goes to the product.
   The old approach used __imglink::after, but __imglink sits inside __media
   (overflow:hidden) which CLIPPED the hit-area to just the image. Using the name
   anchor — a child of the card, not the clipped media — spans the full card.
   Interactive controls (wishlist, add-to-cart, view-cart) are raised above it. */
/* The anchor + __name stay STATIC (unpositioned) so the ::after's containing block
   resolves UP to .rg-pcarousel-card (the only positioned ancestor) → covers the
   whole card, not just the name. */
.rg-pcarousel-card__name, .rg-pcarousel-card__name a { position: static; }
.rg-pcarousel-card__name a::after {
	content: ""; position: absolute; inset: 0; z-index: 1;
}
/* interactive controls raised ABOVE the stretched link so they stay clickable */
.rg-pcarousel-card__wish,
.rg-pcarousel-card__cta,
.rg-pcarousel-card .added_to_cart { position: relative; z-index: 3; }
.rg-pcarousel-card__img {
	position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; object-fit: contain; padding: 12%;
	transition: opacity 0.5s var(--rg-ease-out), transform 0.6s var(--rg-ease-out);
}
.rg-pcarousel-card__img--hover { opacity: 0; }
/* hover: zoom the main + crossfade to the gallery image */
.rg-pcarousel-card:hover .rg-pcarousel-card__img--main { opacity: 0; transform: scale(1.12); }
.rg-pcarousel-card:hover .rg-pcarousel-card__img--hover { opacity: 1; transform: scale(1.08); }
/* if no hover image, the main just zooms (stays visible) */
.rg-pcarousel-card__media:not(:has(.rg-pcarousel-card__img--hover)):hover .rg-pcarousel-card__img--main,
.rg-pcarousel-card:hover .rg-pcarousel-card__img--main:only-child { opacity: 1; transform: scale(1.12); }

/* wishlist heart, top-right */
.rg-pcarousel-card__wish {
	position: absolute; top: 1vh; right: 1vh; z-index: 3;   /* above the media overlay */
	width: 2.4vw; height: 2.4vw; min-width: 38px; min-height: 38px;
	display: grid; place-items: center; cursor: pointer;
	border-radius: var(--rg-r-pill); border: 0;
	background: rgba(255,255,255,0.85); color: var(--rg-violet); backdrop-filter: blur(6px);
	transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur) var(--rg-ease-out);
}
.rg-pcarousel-card__wish:hover { background: var(--rg-violet); color: #fff; transform: scale(1.1); }
.rg-pcarousel-card__wish.is-active { color: var(--rg-violet); }
.rg-pcarousel-card__wish.is-active svg { fill: var(--rg-violet); stroke: var(--rg-violet); }

.rg-pcarousel-card__body { padding: 2.4vh 1.4vw 2.4vh; display: flex; flex-direction: column; gap: 1.4vh; flex: 1 1 auto; }
.rg-pcarousel-card__name { margin: 0; font-size: 1.15vw; font-weight: 800; text-transform: uppercase; letter-spacing: 0.01em; }
.rg-pcarousel-card__name a { color: #fff; }
.rg-pcarousel-card__name a:hover { color: var(--rg-volt); }
.rg-pcarousel-card__price { color: var(--rg-volt); font-weight: 900; font-size: 1.4vw; }
.rg-pcarousel-card__price del { color: var(--rg-ink-muted); font-weight: 600; margin-right: 0.4em; font-size: 0.8em; }
.rg-pcarousel-card__price ins { text-decoration: none; }
/* add-to-cart button — volt pill, our style */
.rg-pcarousel-card__cta.button {
	margin-top: 0.6vh; align-self: stretch; text-align: center;
	background: var(--rg-volt) !important; color: var(--rg-black) !important;
	font-weight: 800 !important; text-transform: uppercase; letter-spacing: 0.02em;
	border-radius: var(--rg-r-pill) !important; padding: 1.4vh 1.5vw !important; border: 0 !important;
	transition: transform var(--rg-dur-fast) var(--rg-ease-out), box-shadow var(--rg-dur) var(--rg-ease-out) !important;
}
.rg-pcarousel-card__cta.button:hover { transform: translateY(-2px); box-shadow: var(--rg-shadow-glow); }
.rg-pcarousel-card__cta.loading { opacity: 0.7; }
.rg-pcarousel-card__cta.added::after { content: " ✓"; }

/* WC "View cart" link (appears after AJAX add) → styled as a proper Rogue button.
   Applies to ALL product cards (carousels, shop grid, related). */
.rg-pcarousel-card__body .added_to_cart,
.products .added_to_cart {
	display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem;
	margin-top: 0.6vh; align-self: stretch; text-align: center; width: 100%;
	background: transparent; color: var(--rg-white);
	border: 1px solid rgba(255,255,255,0.25); border-radius: var(--rg-r-pill);
	padding: 1.1vh 1.5vw; text-decoration: none;
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.03em; font-size: 0.8rem;
	transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out), border-color var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur-fast) var(--rg-ease-out);
	animation: rg-viewcart-in 0.4s var(--rg-ease-out) both;
}
.rg-pcarousel-card__body .added_to_cart:hover,
.products .added_to_cart:hover { background: var(--rg-violet); color: #fff; border-color: var(--rg-violet); transform: translateY(-2px); }
@keyframes rg-viewcart-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }

@media (max-width: 900px) {
	.rg-carousel__title { font-size: 10vw; }
	.rg-pcarousel-card { flex-basis: 70vw; }
	.rg-pcarousel-card__name { font-size: 4.4vw; }
	.rg-pcarousel-card__price { font-size: 5.4vw; }
	.rg-carousel__arrow { width: 12vw; height: 12vw; }
}

/* ---- Generic panels / cards (used sparingly per design rules) ---- */
.rg-panel {
	background: var(--rg-glass-bg);
	-webkit-backdrop-filter: var(--rg-blur); backdrop-filter: var(--rg-blur);
	border: 1px solid var(--rg-glass-brd);
	border-radius: var(--rg-r-lg); padding: clamp(1.25rem, 3vw, 2rem);
	box-shadow: var(--rg-shadow-1);
}

/* ---- Footer — 4 columns: brand+socials+newsletter | policies | links | contacts ---- */
.rg-site-footer {
	position: relative;
	/* DARK GLASS panel — frosted translucent over the ambient glows (was solid black) */
	background: rgba(255, 255, 255, 0.025);
	-webkit-backdrop-filter: blur(14px) saturate(120%);
	backdrop-filter: blur(14px) saturate(120%);
	/* almost full-width with a small inset gutter each side */
	margin: clamp(2rem, 6vh, 5rem) clamp(0.75rem, 1.5vw, 1.5rem) 0;
	/* curved top corners + soft violet glow along the rising edge */
	border-radius: clamp(2rem, 4vw, 4vw) clamp(2rem, 4vw, 4vw) 0 0;
	box-shadow: 0 -1.5vh 5vh -1.5vh rgba(123, 74, 168, 0.55);   /* top-only violet glow */
}
/* thin lit line tracing the curved top edge for extra definition */
.rg-site-footer::before {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: clamp(2rem, 4vw, 4vw);
	border-radius: inherit;
	border-top: 1px solid rgba(123, 74, 168, 0.5);
	border-left: 1px solid rgba(123, 74, 168, 0.25);
	border-right: 1px solid rgba(123, 74, 168, 0.25);
	pointer-events: none;
}
.rg-site-footer__inner {
	display: grid;
	grid-template-columns: 1.2fr 1fr 0.85fr 1.4fr;   /* wider Contacts col so the email fits on one line */
	gap: clamp(1.5rem, 4vw, 4rem);
	padding-block: clamp(3rem, 8vh, 6rem) clamp(2rem, 5vh, 4rem);
}
.rg-footer-col { min-width: 0; }

/* brand column */
.rg-footer-logo { display: inline-block; }
.rg-footer-logo__img { display: block; width: clamp(160px, 14vw, 240px); height: auto; }
.rg-footer-follow {
	margin: clamp(1.2rem, 3vh, 2rem) 0 1rem;
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.03em;
	font-size: clamp(0.85rem, 1vw, 1rem); color: var(--rg-white);
}
.rg-footer-socials { list-style: none; display: flex; gap: 0.7rem; margin: 0 0 clamp(1.5rem, 4vh, 2.5rem); padding: 0; }
.rg-footer-social {
	width: 2.8rem; height: 2.8rem;
	display: inline-flex; align-items: center; justify-content: center;
	border-radius: 12px;
	/* glass tile with a violet accent (was a solid violet block) */
	background: rgba(255, 255, 255, 0.05); color: var(--rg-white);
	border: 1px solid rgba(123, 74, 168, 0.4);
	transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out), border-color var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur) var(--rg-ease-out);
}
.rg-footer-social:hover { background: var(--rg-violet); color: #fff; border-color: var(--rg-violet); transform: translateY(-2px); }

/* newsletter — dark glass (was a light-grey input + solid violet button) */
.rg-footer-news {
	display: flex; flex-direction: column;
	max-width: 22rem; overflow: hidden;
	border-radius: 12px;
	border: 1px solid rgba(255, 255, 255, 0.10);
}
.rg-footer-news__input {
	border: 0; padding: 0.9rem 1rem;
	background: rgba(255, 255, 255, 0.05); color: var(--rg-white);
	font: inherit; font-size: 0.95rem;
}
.rg-footer-news__input::placeholder { color: var(--rg-ink-muted); text-transform: uppercase; letter-spacing: 0.02em; font-size: 0.85rem; }
.rg-footer-news__btn {
	border: 0; cursor: pointer;
	padding: 0.85rem 1rem;
	background: var(--rg-volt); color: var(--rg-black);
	font: inherit; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em;
	transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out);
}
.rg-footer-news__btn:hover { background: var(--rg-violet); color: #fff; }

/* column headings + lists */
.rg-footer-heading {
	margin: 0 0 clamp(1rem, 2.5vh, 1.6rem);
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.02em;
	font-size: clamp(1rem, 1.25vw, 1.3rem);
	color: var(--rg-violet);
}
.rg-footer-list { list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(0.6rem, 1.6vh, 1rem); }
.rg-footer-list a {
	color: var(--rg-white); text-decoration: none;
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.01em;
	font-size: clamp(0.85rem, 1vw, 1rem);
	transition: color var(--rg-dur) var(--rg-ease-out);
}
.rg-footer-list a:hover { color: var(--rg-volt); }

/* contacts */
.rg-footer-contacts .rg-footer-email { white-space: nowrap; }   /* keep email on one line */
@media (max-width: 1200px) {
	.rg-footer-contacts .rg-footer-email { white-space: normal; word-break: break-word; }
}
.rg-footer-address {
	color: var(--rg-white);
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.01em;
	font-size: clamp(0.85rem, 1vw, 1rem); line-height: 1.4;
}

.rg-site-footer__legal {
	padding-block: clamp(1.5rem, 4vh, 2.5rem);
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	color: var(--rg-ink-muted); font-size: 0.9rem;
}

/* responsive */
@media (max-width: 960px) {
	.rg-site-footer__inner { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
	.rg-site-footer__inner { grid-template-columns: 1fr; }
}

/* ---- Test-mode banner (matches reference: violet bar, volt-green uppercase) ---- */
.rg-testbar {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--rg-z-toast);
	/* dark glass */
	background: rgba(14, 14, 16, 0.55);
	-webkit-backdrop-filter: blur(18px) saturate(140%);
	backdrop-filter: blur(18px) saturate(140%);
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	box-shadow: 0 -8px 30px rgba(0, 0, 0, 0.35);
	overflow: hidden;                       /* clip the scrolling track */
	padding: 0.7em 0; line-height: 1.2;
	/* subtle volt edge-glow bleeding up from the bottom */
	background-image: radial-gradient(120% 140% at 50% 120%, rgba(169,207,63,0.10), transparent 60%);
}
/* the moving belt — two full copies scroll left, seamless loop */
.rg-testbar__track {
	display: flex; align-items: center; width: max-content;
	white-space: nowrap;
	animation: rg-marquee 28s linear infinite;
}
.rg-testbar:hover .rg-testbar__track { animation-play-state: paused; }   /* pause on hover */
.rg-testbar__item {
	color: var(--rg-volt);
	font-weight: 800; text-transform: uppercase;
	letter-spacing: 0.08em; font-size: clamp(0.72rem, 1.5vw, 0.9rem);
	padding: 0 1.4rem;
}
.rg-testbar__sep {
	color: rgba(255, 255, 255, 0.35);
	font-size: 0.7em; transform: translateY(-1px);
}
@keyframes rg-marquee {
	from { transform: translateX(0); }
	to   { transform: translateX(-50%); }   /* 4 items = 2 logical copies → -50% is one full loop */
}
@media (prefers-reduced-motion: reduce) {
	.rg-testbar__track { animation: none; justify-content: center; width: 100%; }
	.rg-testbar__item:nth-child(n+3), .rg-testbar__sep { display: none; }
}

/* ---- Custom cursor: dot + soft blurred volt glow ---- */
.rg-cursor {
	position: fixed; top: 0; left: 0; z-index: 10000;   /* above drawers/overlays */
	pointer-events: none; opacity: 0;
	transition: opacity 0.3s ease;
	will-change: transform;
}
.rg-cursor.is-active { opacity: 1; }
.rg-cursor__dot {
	position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
	width: 8px; height: 8px; border-radius: 50%;
	background: var(--rg-volt);                              /* volt green by default */
	transition: width 0.25s var(--rg-ease-out), height 0.25s var(--rg-ease-out), background 0.25s ease;
}
/* Over a volt-green element → dot + glow flip to PURPLE (stays visible) */
.rg-cursor.is-on-volt .rg-cursor__dot { background: var(--rg-violet); }
.rg-cursor.is-on-volt .rg-cursor__glow {
	background: radial-gradient(circle, rgba(123,74,168,0.5) 0%, rgba(123,74,168,0.2) 36%, rgba(123,74,168,0) 73%);
}
.rg-cursor__glow {
	position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
	width: 120px; height: 120px; border-radius: 50%;      /* big, dispersed glow */
	background: radial-gradient(circle, rgba(169,207,63,0.45) 0%, rgba(169,207,63,0.18) 35%, rgba(169,207,63,0) 72%);
	filter: blur(22px);                                    /* heavily blurred / soft */
	transition: width 0.35s var(--rg-ease-out), height 0.35s var(--rg-ease-out), opacity 0.3s ease;
}
/* Hover over clickable things → dot grows + glow intensifies + spreads (keeps its current color) */
.rg-cursor.is-hover .rg-cursor__dot { width: 14px; height: 14px; }
.rg-cursor.is-hover .rg-cursor__glow {
	width: 190px; height: 190px;
	background: radial-gradient(circle, rgba(169,207,63,0.6) 0%, rgba(169,207,63,0.22) 38%, rgba(169,207,63,0) 74%);
	filter: blur(28px);
}
/* Hide the custom cursor on touch / coarse pointers (no mouse) */
@media (hover: none), (pointer: coarse) {
	.rg-cursor { display: none !important; }
}
@media (prefers-reduced-motion: reduce) { .rg-cursor { display: none !important; } }
/* On fine-pointer devices, hide the native arrow cursor everywhere so only ours shows */
@media (hover: hover) and (pointer: fine) {
	html.rg-cursor-on, html.rg-cursor-on * { cursor: none !important; }
}

/* ---- Reveal (progressive-enhancement: visible by default) ---- */
.rg-reveal { opacity: 1; }
.js .rg-reveal { opacity: 0; transform: translateY(24px); }

/* ============================================================
   SECTION 8: FAQ — accordion (left) + "Why choose Rogue" (right)
   ============================================================ */
.rg-faq {
	padding-block: clamp(4rem, 10vh, 9rem);
	/* Match the black carousel section directly above — was --rg-charcoal (#121212),
	   which read as a lighter band next to the pure-black section. */
	background: var(--rg-black);
	/* NO overflow:hidden here — it would kill position:sticky on the media column.
	   The girl's overflow is already clipped by .rg-faq__col--media's own overflow. */
}
.rg-faq__wrap {
	display: grid;
	grid-template-columns: 1.05fr 0.95fr;
	gap: clamp(2rem, 6vw, 6vw);
	align-items: start;                 /* required so the media column can be sticky */
}
/* REVERSED variant (PDP "Why Choose Rogue"): media is col 1 (left), accordion col 2
   (right). The media is DOM-first here, so no order-swap needed — just give the
   accordion the wider share so the copy has room. */
.rg-faq--reverse .rg-faq__wrap { grid-template-columns: 0.95fr 1.05fr; }

/* ---- left: accordion ---- */
.rg-faq__eyebrow {
	margin: 0 0 0.6em;
	font-weight: 800;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	font-size: clamp(0.72rem, 0.9vw, 0.85rem);
	color: var(--rg-volt);
}
.rg-faq__title {
	margin: 0 0 clamp(1.6rem, 4vh, 3rem);
	font-weight: 900;
	line-height: 0.98;
	letter-spacing: -0.01em;
	text-transform: uppercase;
	font-size: clamp(2rem, 4.4vw, 3.4rem);
	color: var(--rg-white);
}
.rg-faq__list { display: flex; flex-direction: column; gap: 1.1vh; }

.rg-faq__item {
	border: 1px solid rgba(255, 255, 255, 0.10);
	border-radius: var(--rg-r-lg);
	background: rgba(255, 255, 255, 0.03);
	overflow: hidden;
	transition: border-color var(--rg-dur) var(--rg-ease-out),
	            background var(--rg-dur) var(--rg-ease-out);
}
.rg-faq__item.is-open {
	border-color: rgba(169, 207, 63, 0.45);
	background: rgba(169, 207, 63, 0.06);
}
.rg-faq__q {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.2rem;
	padding: clamp(1rem, 2.4vh, 1.6rem) clamp(1.2rem, 2.6vw, 2rem);
	background: transparent;
	border: 0;
	cursor: pointer;
	text-align: left;
	color: var(--rg-white);
	font: inherit;
}
.rg-faq__q-text {
	font-weight: 800;
	letter-spacing: 0.01em;
	font-size: clamp(1rem, 1.35vw, 1.22rem);
	line-height: 1.25;
	text-transform: uppercase;
}
.rg-faq__item.is-open .rg-faq__q-text { color: var(--rg-volt); }

/* plus/minus morph icon */
.rg-faq__icon {
	position: relative;
	flex: 0 0 auto;
	width: 2.6vh; height: 2.6vh;
	min-width: 22px; min-height: 22px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.08);
	transition: background var(--rg-dur) var(--rg-ease-out);
}
.rg-faq__item.is-open .rg-faq__icon { background: var(--rg-volt); }
.rg-faq__icon span {
	position: absolute;
	top: 50%; left: 50%;
	width: 44%; height: 2px;
	background: var(--rg-white);
	border-radius: 2px;
	transform: translate(-50%, -50%);
	transition: transform var(--rg-dur) var(--rg-ease-out),
	            background var(--rg-dur) var(--rg-ease-out);
}
.rg-faq__icon span:last-child { transform: translate(-50%, -50%) rotate(90deg); }
.rg-faq__item.is-open .rg-faq__icon span { background: var(--rg-black); }
.rg-faq__item.is-open .rg-faq__icon span:last-child { transform: translate(-50%, -50%) rotate(0deg); }

/* answer panel — height animates via max-height */
.rg-faq__a {
	max-height: 0;
	overflow: hidden;
	transition: max-height var(--rg-dur) var(--rg-ease-out);
}
.rg-faq__a[hidden] { display: block; }              /* keep in flow so it can animate */
.rg-faq__item.is-open .rg-faq__a { max-height: 40vh; }
.rg-faq__a-inner {
	margin: 0;
	padding: 0 clamp(1.2rem, 2.6vw, 2rem) clamp(1.1rem, 2.4vh, 1.6rem);
	color: var(--rg-ink-muted);
	font-size: clamp(0.95rem, 1.1vw, 1.05rem);
	line-height: 1.6;
}

/* ---- right: image with glow + faded wordmark ----
   She sits RIGHT-aligned (pushed off to the right, clear of the wordmark/text
   beneath her) inside a soft glowing container so she doesn't read as cut-off. */
.rg-faq__col--media {
	position: relative;
	display: flex;
	align-items: flex-end;
	justify-content: flex-end;          /* push her to the RIGHT edge */
	/* STICKY — scrolls with the page but sticks in view while the accordion content
	   scrolls past on the left, releasing at the section end. Same as Products-in-Detail.
	   Fixed height (not accordion-tracking) so it never jumps. */
	position: sticky;
	top: 14vh;                          /* clears the fixed header */
	align-self: start;                  /* required for sticky inside the grid track */
	height: 58vh;
	padding: clamp(1.5rem, 3vw, 3rem);  /* breathing room inside the box */
	/* Rounded DARK container with a soft volt-green OUTER GLOW — no crisp border. */
	background: var(--rg-black);
	border-radius: var(--rg-r-xl);
	box-shadow:
		0 0 70px 6px rgba(169, 207, 63, 0.35),        /* volt outer glow */
		0 3vh 7vh rgba(0, 0, 0, 0.55);                /* depth drop-shadow */
	overflow: hidden;                    /* clip her to the rounded container */
}
/* Soft radial glow behind her — this is the "container glow" so she isn't cut off */
.rg-faq__blob {
	position: absolute;
	z-index: 0;
	/* anchored to the RIGHT, roughly where she stands */
	right: -6%;
	bottom: -4%;
	width: 78%;
	height: 92%;
	background:
		radial-gradient(52% 50% at 62% 50%, rgba(169, 207, 63, 0.20), rgba(169, 207, 63, 0) 68%),
		radial-gradient(58% 58% at 55% 46%, rgba(123, 74, 168, 0.55), rgba(123, 74, 168, 0) 72%);
	filter: blur(10px);
	border-radius: 46% 54% 52% 48% / 54% 48% 52% 46%;
}
.rg-faq__wordmark {
	position: absolute;
	top: clamp(1.5rem, 3vw, 3rem);      /* clear the container padding — not cramped */
	left: clamp(1.5rem, 3vw, 3rem);
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.02em;
	font-weight: 900;
	line-height: 0.86;
	letter-spacing: -0.01em;
	text-transform: uppercase;
	font-size: clamp(2.4rem, 6vw, 5.4rem);
	color: rgba(123, 74, 168, 0.85);
	pointer-events: none;
	user-select: none;
}
.rg-faq__wordmark-brand {
	font-family: inherit;
	text-transform: none;
	font-style: italic;
	color: var(--rg-violet);
}
.rg-faq__img {
	position: relative;
	z-index: 2;
	display: block;
	width: auto;
	/* Break past the container padding so she stands full-height edge-to-edge;
	   the padding is only there to give the wordmark breathing room. */
	margin: 0 calc(-1 * clamp(1.5rem, 3vw, 3rem)) calc(-1 * clamp(1.5rem, 3vw, 3rem)) 0;
	max-width: calc(100% + clamp(1.5rem, 3vw, 3rem));
	max-height: 100%;                   /* fill the container, whatever height it tracks to */
	height: auto;
	object-fit: contain;
	filter: drop-shadow(0 3vh 5vh rgba(0, 0, 0, 0.5));
	will-change: transform;
	/* horizontal bob is driven by GSAP (data-rg-faq-bob) — see main.js */
}

/* ---- responsive ---- */
@media (max-width: 900px) {
	/* `.rg-faq--reverse .rg-faq__wrap` (two columns) out-specifies a bare
	   `.rg-faq__wrap`, so the reversed variant — "Why choose Rogue" on the PDP — stayed
	   side-by-side on phones and squeezed the figure into a sliver. Match specificity. */
	.rg-faq__wrap,
	.rg-faq--reverse .rg-faq__wrap { grid-template-columns: 1fr; }
	.rg-faq__col--media {
		order: -1;
		min-height: 46vh;
		justify-content: center;        /* re-center on mobile */
		margin-right: 0;
	}
	.rg-faq__img { max-width: 100%; margin-right: 0; max-height: 56vh; }
	.rg-faq__blob { right: 0; width: 90%; }
	.rg-faq__wordmark { inset: 3% auto auto 4%; font-size: clamp(2rem, 12vw, 3.4rem); }
}

/* ============================================================
   SECTION 9: "Simple & Secure" — glowing gradient panel + 2x2 grid
   ============================================================ */
.rg-ss {
	padding-block: clamp(4rem, 10vh, 9rem);
	background: transparent;
}

/* ---- ONE glowing gradient panel: heading + intro + icon grid ----
   Volt glow lives near the TOP and blends into black over a FIXED distance
   (not a % of height), so it stays consistent no matter how tall the panel is. */
.rg-ss__panel {
	position: relative;
	border-radius: var(--rg-r-xl);
	padding: clamp(2.5rem, 7vh, 6rem) clamp(1.8rem, 5vw, 5rem) clamp(3rem, 8vh, 6rem);
	background: rgba(255, 255, 255, 0.03);
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
	border: 1px solid rgba(255, 255, 255, 0.08);
	overflow: hidden;
}
.rg-ss__panel::before {
	content: ""; position: absolute; z-index: 0; pointer-events: none;
	left: 50%; top: -20%; transform: translateX(-50%);
	width: 70%; height: 60%;
	background: radial-gradient(circle, rgba(169,207,63,0.18), transparent 70%);
	filter: blur(40px);
}
.rg-ss__panel > * { position: relative; z-index: 1; }
.rg-ss__title {
	margin: 0 0 clamp(1.2rem, 3vh, 2rem);
	font-weight: 900;
	line-height: 0.95;
	letter-spacing: -0.01em;
	text-transform: uppercase;
	font-size: clamp(2.6rem, 7vw, 6rem);
	color: var(--rg-volt);
	text-align: center;
}
.rg-ss__intro {
	max-width: 62ch;
	margin: 0 auto;                       /* centered block */
	font-weight: 600;
	text-transform: none;                 /* sentence case — lighter, more readable */
	letter-spacing: 0;
	line-height: 1.6;
	font-size: clamp(0.85rem, 1vw, 1rem);
	color: rgba(255,255,255,0.85);
	text-align: center;
}
.rg-ss__intro-accent { color: var(--rg-volt); font-weight: 700; }
.rg-ss__intro-accent { color: var(--rg-volt); }

/* ---- 2x2 feature grid ---- */
.rg-ss__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: clamp(0.8rem, 1.5vw, 1.5rem);
	margin-top: clamp(2rem, 5vh, 3.5rem);
	overflow-x: auto;
	scrollbar-width: none;
	padding-bottom: 0.5rem;
}
.rg-ss__grid::-webkit-scrollbar { display: none; }
.rg-ss__card {
	display: flex;
	flex-direction: row;
	align-items: center;
	text-align: left;
	gap: 0.8rem;
	min-width: 12rem;
	padding: clamp(0.9rem, 1.6vh, 1.3rem) clamp(0.9rem, 1.4vw, 1.3rem);
	border-radius: var(--rg-r-lg);
	background: rgba(255,255,255,0.03);
	border: 1px solid rgba(255,255,255,0.08);
	transition: border-color var(--rg-dur) var(--rg-ease-out);
}
.rg-ss__card:hover { border-color: rgba(169,207,63,0.4); }
.rg-ss__card-txt { display: flex; flex-direction: column; min-width: 0; }
.rg-ss__icon {
	display: inline-flex;
	width: clamp(28px, 2.4vw, 36px);
	height: clamp(28px, 2.4vw, 36px);
	color: var(--rg-volt);
	transition: transform var(--rg-dur) var(--rg-ease-out),
	            filter var(--rg-dur) var(--rg-ease-out);
}
.rg-ss__icon svg { width: 100%; height: 100%; display: block; }
.rg-ss__card:hover .rg-ss__icon {
	transform: translateY(-0.6vh) scale(1.05);
	filter: drop-shadow(0 0 14px rgba(169, 207, 63, 0.6));
}
.rg-ss__card-title {
	margin: 0.2rem 0 0;
	font-weight: 800;
	line-height: 1.15;
	text-transform: uppercase;
	letter-spacing: 0.01em;
	font-size: clamp(0.78rem, 0.95vw, 0.95rem);
	color: var(--rg-violet);
}
.rg-ss__card-body {
	margin: 0;
	max-width: 22ch;
	font-weight: 600;
	text-transform: none;
	letter-spacing: 0;
	line-height: 1.45;
	font-size: clamp(0.72rem, 0.85vw, 0.85rem);
	color: var(--rg-ink-muted);
}

/* ---- responsive ---- */
@media (max-width: 760px) {
	/* keep the compact cards in a horizontal scroll row (don't stack to 1 col) */
	.rg-ss__grid { grid-template-columns: repeat(4, minmax(13rem, 1fr)); }
}

/* ============================================================
   SECTION 10: "Our Reviews" — violet panel (left) + testimonial slider (right)
   ============================================================ */
.rg-reviews {
	position: relative;
	display: grid;
	grid-template-columns: 34% 1fr;
	gap: 0;
	background: transparent;
	min-height: 70vh;
	align-items: stretch;
	padding-bottom: clamp(3rem, 9vh, 7rem);   /* breathing room above the footer */
	overflow: hidden;                          /* nothing leaves the section */
}

/* ---- left: violet panel, heading anchored bottom-left ---- */
.rg-reviews__panel {
	position: relative;
	z-index: 1;
	background: transparent;
	display: flex;
	align-items: flex-end;
	padding: clamp(2rem, 6vh, 5rem) clamp(1.5rem, 3vw, 3rem);
}
.rg-reviews__panel::before {
	content: ""; position: absolute; z-index: -1; pointer-events: none;
	left: -4vw; top: 25%; width: 85%; height: 55%;
	background: radial-gradient(circle, rgba(123,74,168,0.28), transparent 70%);
	filter: blur(55px);
}
.rg-reviews__title {
	margin: 0;
	font-weight: 900;
	line-height: 0.9;
	letter-spacing: -0.01em;
	text-transform: uppercase;
	font-size: clamp(2.6rem, 7vw, 7rem);
	color: var(--rg-white);
}

/* ---- right: slider stage on black ---- */
.rg-reviews__stage {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-width: 0;                              /* let the slider shrink, not overflow */
	padding: clamp(2rem, 6vh, 5rem) clamp(1.5rem, 4vw, 4rem) 0;
}
/* card bleeds further LEFT over the violet edge, contained on the right */
.rg-reviews__splide {
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: 60vw;
	margin-left: 0;   /* no violet panel to overlap anymore */
}
/* autoHeight (JS) makes the track match the CURRENT slide's height, so shorter
   reviews no longer leave a dark empty block below (the "shadow" was taller slides
   showing through a fixed-height track). Track clips horizontally as usual. */
.rg-reviews__splide .splide__slide { display: flex; }

.rg-review-card {
	margin: 0;
	width: 100%;
	background: rgba(255,255,255,0.04);
	-webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: var(--rg-r-xl);
	padding: clamp(1.8rem, 4vw, 3.5rem);
	/* No box-shadow: on a pure-black section a dark drop-shadow adds nothing but a
	   hard clipped rectangle (the autoHeight track clips it). The border defines the
	   card edge cleanly. */
	min-height: 30vh;
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.rg-review-card__quote {
	display: block;
	font-family: Georgia, "Times New Roman", serif;
	font-size: clamp(3rem, 6vw, 5rem);
	line-height: 0.6;
	color: var(--rg-volt);
	margin-bottom: clamp(1rem, 2.5vh, 2rem);
}
.rg-review-card__text {
	margin: 0 0 clamp(1rem, 2.5vh, 1.8rem);
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.01em;
	line-height: 1.35;
	font-size: clamp(1.05rem, 1.5vw, 1.6rem);
	color: var(--rg-white);
}
.rg-review-card__meta {
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	font-size: clamp(0.85rem, 1.05vw, 1.05rem);
	color: var(--rg-volt);
}

/* ---- controls row: arrows & CTA (left) + dots (right, prominent) ---- */
.rg-reviews__controls {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	flex-wrap: wrap;
	margin-top: clamp(1.5rem, 4vh, 3rem);
	max-width: none;
	margin-left: 0;
}
/* dots on the LEFT, arrows + CTA on the far RIGHT */
.rg-reviews__dots {
	order: 1;
	display: flex;
	gap: 0.9rem;
	align-items: center;
}
.rg-reviews__nav {
	order: 2;
	margin-left: auto;                          /* shove nav + CTA to the right edge */
}
.rg-reviews__dot {
	width: 1.15rem; height: 1.15rem;            /* bigger / more visible */
	padding: 0; border: 0; border-radius: 50%;
	background: rgba(123, 74, 168, 0.7);        /* brighter dim violet */
	cursor: pointer;
	transition: background var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur) var(--rg-ease-out);
}
.rg-reviews__dot:hover { background: rgba(123, 74, 168, 1); }
.rg-reviews__dot.is-active { background: var(--rg-volt); transform: scale(1.3); box-shadow: 0 0 12px rgba(169, 207, 63, 0.6); }

.rg-reviews__nav { display: flex; align-items: center; gap: 0.8rem; }
.rg-reviews__arrow {
	width: 2.8rem; height: 2.8rem;
	display: inline-flex; align-items: center; justify-content: center;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(169, 207, 63, 0.35);
	color: var(--rg-white);
	cursor: pointer;
	transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur) var(--rg-ease-out);
}
.rg-reviews__arrow:hover { background: var(--rg-volt); color: var(--rg-black); transform: translateY(-2px); }
/* CTA: solid VOLT-GREEN with BLACK font (override the gradient base; keep magnetic + arrow) */
.rg-reviews__cta.rg-btn--grad {
	margin-left: 0.4rem;
	background: var(--rg-volt);
	color: var(--rg-black);
	box-shadow: 0 0 30px rgba(169, 207, 63, 0.45);
}
.rg-reviews__cta.rg-btn--grad .rg-btn__label,
.rg-reviews__cta.rg-btn--grad .rg-btn__arrow { color: var(--rg-black); }
.rg-reviews__cta.rg-btn--grad:hover { box-shadow: 0 0 44px rgba(169, 207, 63, 0.7); }

/* ---- responsive ---- */
@media (max-width: 860px) {
	.rg-reviews { grid-template-columns: 1fr; min-height: auto; }
	.rg-reviews__panel { border-radius: 0; padding-block: clamp(2.5rem, 8vh, 5rem); }
	.rg-reviews__stage { padding: clamp(2rem, 6vh, 4rem) 6vw 0; }
	.rg-reviews__splide,
	.rg-reviews__controls { margin-left: 0; max-width: 100%; }
	.rg-reviews__controls { justify-content: center; }
	/* Both children measured 400px inside a 393px viewport (padding + track width
	   escaping the grid column). border-box + an explicit cap keeps them contained. */
	.rg-reviews__panel,
	.rg-reviews__stage {
		box-sizing: border-box;
		max-width: 100%;
		min-width: 0;
	}
}

/* ============================================================
   MOBILE SYSTEM — consolidated responsive rules (single source of truth).
   Breakpoints (the standard for this theme + inner pages):
     • tablet:  max-width 900px
     • phone:   max-width 600px   (primary target ~390px)
   Sizing rule: header icons + fine details switch from vw → fixed px on phone so
   they don't shrink to nothing. Layouts collapse to single column.
   ============================================================ */

/* ---- Header: fixed icon sizes so vw doesn't shrink them on phones ---- */
@media (max-width: 900px) {
	.rg-header-left { gap: 3vw; }
	.rg-header-actions { gap: 4vw; }
	.rg-icon svg,
	.mp13-wishlist-trigger__btn svg { width: 24px !important; height: 24px !important; }

	/* Tap targets: the icons themselves stay 24px, but the hit area must reach the
	   44px iOS/WCAG minimum — measured 24–28px, which is fiddly to hit on a phone.
	   A flex centre + min-height grows the target without moving the glyph. */
	.rg-icon,
	.rg-burger,
	.rg-lang,
	.mp13-wishlist-trigger__btn,
	.mp13-search-trigger {
		min-width: 44px;
		min-height: 44px;
		display: inline-flex;
		align-items: center;
		justify-content: center;
	}
	/* The switcher keeps its pill shape; only the height grows. */
	.rg-lang { min-width: 0; padding-inline: 0.6rem; }

	/* iOS Safari auto-zooms the page when a focused field's text is under 16px, and
	   does NOT zoom back out — the layout is left shifted and the user has to pinch.
	   16px on every text-entry control is the documented way to prevent it. Applied
	   to real inputs only, so the custom sort/filter controls keep their own sizing. */
	input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=submit]):not([type=button]),
	select,
	textarea {
		font-size: 16px;
	}
}

/* ---- Phone (≤600px, targets ~390px) ---- */
@media (max-width: 600px) {

	/* HEADER: collapse to burger + cart only. Account/wishlist/search move into
	   the glass menu (still reachable there); the bar stays clean. */
	.rg-icon--collapse { display: none !important; }
	.rg-header-actions { gap: 0; }
	.rg-header-left { gap: 4vw; }

	/* HERO: keep the rotating title readable, never overflow.
	   18vw → 16vw: the longest word ("SUPPLEMENTS") ran past the screen edge. */
	.rg-hero__title { font-size: clamp(3rem, 16vw, 5rem); }
	/* The homepage hero is `.rg-hero--split`, and its base rule
	   (`.rg-hero--split .rg-hero__title`, two classes) outranks the single-class
	   mobile rule above — which is why editing that one changed nothing.
	   Matching the specificity here is what makes a mobile size apply at all.

	   Note the size on a phone comes from the clamp FLOOR, not the vw term:
	   6vw at 390px is only 23px, so `clamp(3rem, 6vw, 7rem)` rendered at its
	   3rem = 48px floor. Lowering the vw value alone would change nothing.
	   Floor dropped 3rem -> 2.7rem (48px -> 43.2px) so the longest rotating
	   word ("SUPPLEMENTS") stops clipping at the right edge. */
	.rg-hero--split .rg-hero__title { font-size: clamp(2.7rem, 6vw, 5rem); }
	.rg-hero__lead { font-size: clamp(0.95rem, 4.4vw, 1.15rem); padding-inline: 6vw; }

	/* REBELS + NEXT: single column, comfortable type */
	.rg-next__title { font-size: 13vw; }

	/* MANIFESTO: box + product grid stack; grid to 2-up */
	.rg-manifesto { grid-template-columns: 1fr; }
	.rg-manifesto__text { font-size: 6.5vw; }

	/* BENTO on phones: the two packs (Starter / Advanced) sit SIDE BY SIDE in two
	   columns, then Trending and the CTA each take the full width below.
	   The ≤980px block sets grid-template-areas, so those are cleared here — leaving
	   them assigned produced the half-overlapping, staggered cards.
	   The gap matches the product grid above it — clamp(1.5rem, 3vw, 2.5rem) — so the
	   two sections read as one rhythm rather than two different spacings. */
	.rg-bento {
		display: grid;
		grid-template-columns: 1fr 1fr;
		grid-template-areas: none;
		gap: 2vw;               /* same gap as .rg-manifesto__grid above */
		align-items: stretch;
	}
	.rg-bento > * { min-width: 0; width: auto; }
	/* `.rg-bento__trending { grid-area: trend }` and `__cta { grid-area: cta }` are set
	   globally (no media query). grid-area is a SHORTHAND, so it resets grid-column —
	   which is why these two kept landing in named cells and rendering half-width.
	   Clear the area on each element at the same specificity, then place them. */
	.rg-bento__pack,
	.rg-bento__trending,
	.rg-bento__cta { grid-area: auto !important; }
	/* the two pack cards share a row */
	.rg-bento__pack { grid-column: span 1 !important; }
	/* trending + CTA each take a full row of their own */
	.rg-bento__trending { grid-column: 1 / -1 !important; }
	.rg-bento__cta { grid-column: 1 / -1 !important; }
	/* The CTA is a flex row (figure beside copy) — inside a full-width cell that read
	   as two columns again. Stack it on phones: figure above, copy below. */
	.rg-bento__cta {
		flex-direction: column;
		align-items: stretch;
		padding: 4vh 6vw;
		min-height: auto;
		overflow: hidden;
	}
	/* On phones the figure sits in normal flow (not pinned to the box's bottom edge),
	   so her legs end mid-air. A black gradient veils the bottom of the image so she
	   grounds into shadow instead of being cut off. Scoped to this ≤600px block, so
	   desktop — where she is bottom-anchored and overflows the box by design — keeps
	   no overlay at all. */
	.rg-bento__cta-figure {
		position: relative;
		left: auto;
		height: 34vh;
		align-self: center;
	}
	/* The figure is a bare <img>, which cannot carry a pseudo-element, so the veil is
	   drawn by the CTA card itself: a black gradient pinned to the top of the card,
	   exactly as tall as the image, sitting above it (z-index 3 > figure's 2). */
	.rg-bento__cta { position: relative; }
	.rg-bento__cta::before {
		content: "";
		position: absolute;
		left: 0;
		right: 0;
		top: calc(4vh + 34vh - 9vh);   /* padding-top + figure height − veil height */
		height: 9vh;
		z-index: 3;
		pointer-events: none;
		background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.6) 60%, rgba(0, 0, 0, 0.92) 100%);
	}
	.rg-bento__cta-body { max-width: 100%; }

	/* Read as ONE grid with the section above: the manifesto's bottom padding plus the
	   bento's own top padding created a seam much larger than the grid gap. Drop the
	   manifesto's bottom padding to the gap value and zero the bento's top, so the
	   vertical rhythm between the two sections equals the gap between the cards. */
	.rg-manifesto { padding-bottom: 2vw; }
	.rg-bento {
		padding-top: 0;
		margin-top: 0;
		padding-inline: 4vw;   /* same side gutters as the manifesto above */
	}

	/* PRODUCTS-IN-DETAIL: tabs become a horizontal scroll row above the panel */
	.rg-detail__wrap { grid-template-columns: 1fr; }
	.rg-detail__tabs {
		position: static; flex-direction: row; flex-wrap: nowrap;
		overflow-x: auto; gap: 2vw; padding-bottom: 1vh;
		-webkit-overflow-scrolling: touch; scrollbar-width: none;
	}
	.rg-detail__tabs::-webkit-scrollbar { display: none; }
	.rg-detail__tab { flex: 0 0 auto; font-size: 3.6vw; padding: 1.4vh 4vw; }

	/* FAQ: image on top, accordion below; kill sticky (no room on phone) */
	.rg-faq__wrap { grid-template-columns: 1fr; }
	.rg-faq__col--media { position: static; height: 44vh; order: -1; }
	.rg-faq__q-text { font-size: 4.2vw; }

	/* SIMPLE & SECURE: keep compact cards scrolling horizontally */
	.rg-ss__grid { grid-template-columns: repeat(4, minmax(13rem, 1fr)); }
	.rg-ss__title { font-size: clamp(2.4rem, 12vw, 3.4rem); }

	/* OUR REVIEWS: stack panel over slider; card full width.
	   Dots are hidden on phones — one dot per review is far too many at this width to
	   read as navigation; the prev/next arrows stay. */
	.rg-reviews__dots { display: none !important; }
	.rg-reviews { grid-template-columns: 1fr; }
	.rg-reviews__splide, .rg-reviews__controls { margin-left: 0; max-width: 100%; }
	.rg-reviews__title { font-size: clamp(3rem, 18vw, 5rem); }
	.rg-reviews__controls { flex-direction: column-reverse; align-items: stretch; gap: 1.2rem; }
	.rg-reviews__nav { justify-content: center; margin-left: 0; }
	.rg-reviews__dots { justify-content: center; }

	/* FOOTER: single column, logo + newsletter full width */
	.rg-site-footer__inner { grid-template-columns: 1fr; }
	.rg-footer-news { max-width: none; }

	/* Section vertical rhythm — a touch tighter on phone */
	.rg-ss, .rg-faq, .rg-carousel { padding-block: clamp(3rem, 8vh, 5rem); }

	/* HEADER (phone): burger alone on the left, logo truly centred, language pill moved
	   to the right of the logo so it sits with the action icons instead of crowding the
	   burger. The pill also loses its vertical padding — it was taller than the icons. */
	.rg-site-header__inner {
		display: grid;
		grid-template-columns: auto 1fr auto;
		align-items: center;
		gap: 0.5rem;
	}
	.rg-header-left { gap: 0; }
	.rg-brand { justify-self: center; }
	/* Monogram replaces the wordmark: frees ~70px so every icon can reach a 44px tap
	   target instead of the 24–31px they were squeezed to. */
	.rg-brand__mono { display: inline-flex; align-items: center; }
	/* height drives it; width follows the 412:331 ratio so the mark is not squashed */
	.rg-brand__mono { position: relative; }
	.rg-brand__mono-img { height: 30px; width: auto; display: block; transition: opacity 0.32s var(--rg-ease-out, ease); }
	/* purple sits exactly on top of green and fades in while green fades out */
	.rg-brand__mono-img--purple { position: absolute; inset: 0; opacity: 0; }
	.rg-brand__mono:active .rg-brand__mono-img--purple,
	.rg-brand__mono.is-pressed .rg-brand__mono-img--purple { opacity: 1; }
	.rg-brand__mono:active .rg-brand__mono-img--green,
	.rg-brand__mono.is-pressed .rg-brand__mono-img--green { opacity: 0; }
	.rg-brand .custom-logo-link,
	.rg-brand .custom-logo,
	.rg-brand__hover,
	.rg-brand__text { display: none !important; }
	/* `.rg-icon--collapse` is set on BOTH account and wishlist, and the ≤600px block
	   hides everything carrying it. Both belong in the bar — the monogram and the
	   chrome-less switcher freed enough room for the full set. */
	.rg-icon-wrap--wishlist.rg-icon--collapse,
	.rg-account.rg-icon--collapse,
	button.rg-icon--collapse[data-y-search-open] { display: inline-flex !important; }
	/* Account dropdown: `right: 0` anchors a 20rem panel to an icon sitting near the
	   right edge, so it ran off the LEFT of a phone screen. Centre it on the viewport
	   instead and cap the width. */
	/* Centre the panel on the viewport instead of anchoring it to an icon at the right
	   edge (a 20rem panel with `right: 0` ran off-screen). `left: 12px; right: 12px`
	   is used rather than left:50% + translateX, because `.rg-account.is-open
	   .rg-dropdown` sets `transform: translateY(0)` and would wipe out the centring. */
	.rg-account .rg-dropdown,
	.rg-account.is-open .rg-dropdown {
		position: fixed;
		top: 4.6rem;                 /* just under the header bar */
		left: 12px;
		right: 12px;
		width: auto;
		max-width: none;
	}

	/* swap which switcher is visible: hide the left one, show the one rendered inside
	   the action group (see header.php) */
	.rg-header-left > .rg-lang-wrap { display: none; }
	.rg-lang-slot--mobile { display: inline-flex; align-items: center; }
	/* Switcher on phones: bare "EN ▾" — no pill chrome, no flag. The pill's border and
	   background made it read as a button competing with the icons, and the flag added
	   ~18px for no information the code doesn't already give. */
	.rg-lang {
		padding: 0;
		font-size: 0.78rem;
		gap: 0.2em;
		background: none;
		border: 0;
		min-width: 0;
	}
	.rg-lang .rg-lang__flag { display: none; }
	/* keep flags inside the OPEN dropdown — there they aid recognition */
	.rg-lang__menu .rg-lang__flag { display: inline; }
}

/* ============================================================
   SHOP / PRODUCT ARCHIVE — Rogue toolbar + off-canvas filters
   (product cards reuse .rg-pcarousel-card)
   ============================================================ */
.rg-shop { padding-block: clamp(7rem, 14vh, 11rem) clamp(4rem, 10vh, 8rem); background: var(--rg-black); }

/* hero */
/* Shop hero: clean CENTERED title on black, with subtle glow + a gleam sweeping the
   gradient text. No purple panel. */
.rg-shop__hero {
	position: relative; text-align: center;
	margin-bottom: clamp(2.5rem, 6vh, 4rem);
	padding-block: clamp(1rem, 3vh, 2.5rem);
}
/* soft glow blobs behind the title (violet core + volt halo) */
.rg-shop__hero::before,
.rg-shop__hero::after {
	content: ""; position: absolute; z-index: 0; pointer-events: none;
	left: 50%; border-radius: 50%; filter: blur(70px);
}
.rg-shop__hero::before {
	width: 42vw; max-width: 620px; aspect-ratio: 1.7/1; top: 34%; transform: translate(-50%, -50%);
	background: radial-gradient(circle, rgba(123,74,168,0.42), transparent 68%);
}
.rg-shop__hero::after {
	width: 30vw; max-width: 440px; aspect-ratio: 2/1; top: 24%; transform: translate(-50%, -50%);
	background: radial-gradient(circle, rgba(169,207,63,0.22), transparent 66%);
}
.rg-shop__hero > * { position: relative; z-index: 1; }
.rg-shop__eyebrow {
	display: inline-block; margin: 0 0 1em;
	padding: 0.45em 1.3em; border-radius: var(--rg-r-pill);
	background: rgba(169,207,63,0.12); border: 1px solid rgba(169,207,63,0.4);
	font-weight: 800; letter-spacing: 0.28em; text-transform: uppercase; font-size: clamp(0.72rem, 0.9vw, 0.85rem); color: var(--rg-volt);
}
.rg-shop__title {
	margin: 0 0 0.4em; font-weight: 900; line-height: 0.95; letter-spacing: -0.015em;
	text-transform: uppercase; font-size: clamp(3rem, 8vw, 7rem);
	/* SEAMLESS travelling gleam — starts & ends on volt so the 200%-tile loop has no
	   hard vertical join line sweeping through. */
	background: linear-gradient(100deg,
		var(--rg-volt) 0%,
		var(--rg-violet) 25%,
		#ffffff 50%,
		var(--rg-violet) 75%,
		var(--rg-volt) 100%);
	background-size: 200% 100%;
	background-position: 100% 0;
	-webkit-background-clip: text; background-clip: text;
	-webkit-text-fill-color: transparent; color: transparent;
	text-wrap: balance;
	filter: drop-shadow(0 0 30px rgba(169,207,63,0.25));
	animation: rg-title-gleam 5s linear infinite;
}
@keyframes rg-title-gleam {
	to { background-position: -100% 0; }
}
@media (prefers-reduced-motion: reduce) {
	.rg-shop__title { animation: none; background-position: 50% 0; }
}
.rg-shop__sub { margin: 0 auto; max-width: 52ch; color: var(--rg-ink-muted); font-weight: 700; text-transform: uppercase; letter-spacing: 0.01em; font-size: clamp(0.9rem, 1.1vw, 1.05rem); line-height: 1.5; }

/* toolbar: sort | chips | more-filters */
.rg-shop__toolbar {
	display: flex; align-items: center; gap: 1rem; flex-wrap: nowrap;
	margin-bottom: 1.4rem;
}
.rg-shop__sort { display: flex; align-items: center; gap: 0.6rem; flex: 0 0 auto; }
.rg-shop__sort-label { color: var(--rg-ink-muted); font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.72rem; }
.rg-shop__sort .woocommerce-ordering { margin: 0; }
.rg-shop__sort select, .woocommerce-ordering select {
	appearance: none; -webkit-appearance: none;
	background: rgba(255,255,255,0.05); color: var(--rg-white);
	border: 1px solid rgba(169,207,63,0.35); border-radius: var(--rg-r-pill);
	padding: 0.7rem 2.4rem 0.7rem 1.1rem; font: inherit; font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; font-size: 0.8rem; cursor: pointer;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23A9CF3F' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>");
	background-repeat: no-repeat; background-position: right 0.9rem center;
}
.rg-shop__sort select option { background: #121212; color: #fff; }

/* category chips — horizontal scroll with arrows */
.rg-shop__chips-wrap { display: flex; align-items: center; gap: 0.5rem; flex: 1 1 auto; min-width: 0; }
.rg-shop__chip-arrow {
	flex: 0 0 auto; width: 2.4rem; height: 2.4rem; display: inline-flex; align-items: center; justify-content: center;
	border-radius: 50%; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.10); color: var(--rg-white); cursor: pointer;
	transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out);
}
.rg-shop__chip-arrow:hover { background: var(--rg-volt); color: var(--rg-black); }
.rg-shop__chips {
	display: flex; gap: 0.6rem; overflow-x: auto; scroll-behavior: smooth; min-width: 0;
	scrollbar-width: none; -webkit-overflow-scrolling: touch; padding: 0.2rem 0;
}
.rg-shop__chips::-webkit-scrollbar { display: none; }
.rg-shop__chip {
	flex: 0 0 auto; display: inline-flex; align-items: center; padding: 0.7rem 1.4rem;
	border-radius: var(--rg-r-pill); text-decoration: none; white-space: nowrap;
	background: rgba(255,255,255,0.05); color: var(--rg-white); border: 1px solid rgba(255,255,255,0.10);
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.02em; font-size: clamp(0.72rem, 0.85vw, 0.85rem);
	transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out), border-color var(--rg-dur) var(--rg-ease-out);
}
.rg-shop__chip:hover { border-color: rgba(169,207,63,0.5); }
.rg-shop__chip.is-active { background: var(--rg-volt); color: var(--rg-black); border-color: var(--rg-volt); }

/* more-filters button */
.rg-shop__more-filters {
	flex: 0 0 auto; display: inline-flex; align-items: center; gap: 0.5rem; cursor: pointer;
	padding: 0.75rem 1.4rem; border-radius: var(--rg-r-pill);
	background: var(--rg-violet); color: #fff; border: 0;
	font: inherit; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.8rem;
	transition: background var(--rg-dur) var(--rg-ease-out), box-shadow var(--rg-dur) var(--rg-ease-out);
}
.rg-shop__more-filters:hover { background: var(--rg-volt); color: var(--rg-black); box-shadow: 0 0 24px rgba(169,207,63,0.4); }
.rg-shop__more-count {
	display: inline-grid; place-items: center; min-width: 1.3rem; height: 1.3rem; padding: 0 0.3rem;
	border-radius: var(--rg-r-pill); background: var(--rg-volt); color: var(--rg-black); font-size: 0.72rem; font-weight: 900;
}

.rg-shop__count { margin: 0 0 clamp(1.5rem, 4vh, 2.5rem); color: var(--rg-ink-muted); font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; font-size: 0.85rem; }
.rg-shop__count .woocommerce-result-count { margin: 0; }

/* grid */
/* Row gap is larger than the column gap: cards are much taller than they are
   wide, so equal gaps read as cramped vertically. */
.rg-shop__grid.products { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); column-gap: clamp(1.5rem, 3vw, 2.5rem); row-gap: clamp(2.5rem, 5vw, 4rem); }
.rg-shop__grid.products::before, .rg-shop__grid.products::after { content: none !important; }
.rg-shop-cell { margin: 0 !important; width: auto !important; float: none !important; }

/* ---- PAGINATION ------------------------------------------------------------
   Woo ships its own look for this and it is the "connected grey squares" box:
   `.woocommerce-pagination ul` gets `border:1px solid #cfc8d8; border-right:0`
   and every `li` a right border. Those rules are more specific than a bare
   `.page-numbers` selector, so they must be explicitly unset — styling only the
   inner links (what we did before) left Woo's box drawn around them.

   NOTE: `.page-numbers` is BOTH the <ul> and each <a>/<span> inside it, so
   selectors have to be anchored on `ul` / `li >` to hit the right one. */
/* Horizontally scrollable pagination.
   ---------------------------------------------------------------------------
   The scroll lives on `.rg-shop__pagination` — the ONE element both render
   paths produce. The page emits
     <div class="rg-shop__pagination"><nav class="woocommerce-pagination"><ul>
   while the AJAX endpoint emits
     <div class="rg-shop__pagination"><ul>
   with no nav. A previous attempt styled the nav, so the whole thing stopped
   applying after the first AJAX navigation and the pills vanished. Anchoring
   to this div avoids that entirely.

   `justify-content` is NOT used: on an overflowing scroller `center` pushes the
   first pages out of reach off the left edge. `margin: auto` on the inner row
   centres it only when it fits, which is the behaviour we want. */
.rg-shop__pagination {
	margin-top: clamp(3rem, 7vh, 5rem);
	display: block;
	overflow-x: auto;
	overflow-y: hidden;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
	padding-bottom: 0.35rem;
}
.rg-shop__pagination::-webkit-scrollbar { display: none; }

/* Inner row: one line, centred while it fits, scrolls when it does not.
   `width: max-content` is what lets it exceed the container so the parent can
   scroll; `margin-inline: auto` centres it below that width. */
.rg-shop__pagination > nav,
.rg-shop__pagination > ul.page-numbers {
	width: max-content;
	max-width: none;
	margin-inline: auto;
}
.rg-shop__pagination ul.page-numbers {
	flex-wrap: nowrap !important;
}

/* kill Woo's box.
   The layout properties carry !important alongside the resets: Woo's own
   `.woocommerce-pagination ul { display: inline-block }` is equally specific and
   loads first, so without it a stale or partially-applied stylesheet leaves the
   list stacked vertically with its bullets showing. */
.rg-shop__pagination ul.page-numbers,
.woocommerce nav.woocommerce-pagination ul,
nav.woocommerce-pagination ul.page-numbers {
	border: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	display: flex !important;
	flex-wrap: wrap;
	gap: 0.5rem;
	justify-content: center;
	align-items: center;
	list-style: none !important;
	white-space: normal;
}
.rg-shop__pagination .woocommerce-pagination ul.page-numbers li,
.rg-shop__pagination ul.page-numbers li,
.woocommerce nav.woocommerce-pagination ul li,
nav.woocommerce-pagination ul.page-numbers li {
	border: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	float: none !important;
	overflow: visible !important;
	display: block !important;
	list-style: none !important;
}

/* the pills */
.rg-shop__pagination .page-numbers li a.page-numbers,
.rg-shop__pagination .page-numbers li span.page-numbers,
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.8rem;
	height: 2.8rem;
	padding: 0 0.85rem !important;
	border-radius: var(--rg-r-pill);
	text-decoration: none;
	background: rgba(255,255,255,0.05);
	color: var(--rg-white);
	border: 1px solid rgba(255,255,255,0.10);
	font-weight: 800;
	font-size: 0.9rem;
	line-height: 1;
	transition: background var(--rg-dur) var(--rg-ease-out),
		border-color var(--rg-dur) var(--rg-ease-out),
		color var(--rg-dur) var(--rg-ease-out),
		box-shadow var(--rg-dur) var(--rg-ease-out);
}
.rg-shop__pagination .page-numbers li a.page-numbers:hover,
.woocommerce nav.woocommerce-pagination ul li a:hover {
	background: rgba(169,207,63,0.14);
	border-color: rgba(169,207,63,0.5);
	color: var(--rg-volt);
}
/* current page — volt pill, matching the active shop chip */
.rg-shop__pagination .page-numbers li span.current,
.rg-shop__pagination .page-numbers li a.current,
.woocommerce nav.woocommerce-pagination ul li span.current,
.woocommerce nav.woocommerce-pagination ul li a.current {
	background: var(--rg-volt) !important;
	color: var(--rg-black) !important;
	border-color: var(--rg-volt) !important;
	box-shadow: 0 0 18px rgba(169,207,63,0.28);
}
/* prev/next arrows — purple so direction reads apart from page numbers */
.rg-shop__pagination .page-numbers li a.next,
.rg-shop__pagination .page-numbers li a.prev,
.woocommerce nav.woocommerce-pagination ul li a.next,
.woocommerce nav.woocommerce-pagination ul li a.prev {
	background: rgba(123,74,168,0.22);
	border-color: rgba(123,74,168,0.5);
	font-size: 1.05rem;
}
.rg-shop__pagination .page-numbers li a.next:hover,
.rg-shop__pagination .page-numbers li a.prev:hover,
.woocommerce nav.woocommerce-pagination ul li a.next:hover,
.woocommerce nav.woocommerce-pagination ul li a.prev:hover {
	background: var(--rg-violet);
	border-color: var(--rg-volt);
	color: var(--rg-volt);
}
/* the "…" gap indicator is not clickable — keep it flat */
.rg-shop__pagination .page-numbers li span.dots,
.woocommerce nav.woocommerce-pagination ul li span.dots {
	background: none;
	border-color: transparent;
	color: var(--rg-ink-muted);
	min-width: 1.6rem;
	padding: 0 !important;
}
.rg-shop__empty { text-align: center; color: var(--rg-ink-muted); font-size: 1.1rem; padding-block: clamp(3rem, 8vh, 6rem); }

/* ---- OFF-CANVAS FILTER DRAWER ---- */
/* overflow: hidden is essential — the drawer inside is parked at translateX(100%),
   i.e. a full 420px BEYOND the right edge. Without clipping here that off-screen box
   widens the document and the whole shop page gets a horizontal scrollbar even while
   the filter panel is closed. */
/* ==========================================================================
   OFF-CANVAS FILTER DRAWER — rebuilt as a plain grid overlay.
   Structure: .rg-filter (fixed overlay) > .rg-filter__scrim + .rg-filter__drawer
   The panel is a 3-row grid: head (auto) | body (1fr, THE scroller) | foot (auto).
   Grid is used rather than flex because a grid track sized 1fr already clamps to the
   container, so the scroller cannot be inflated by its own children — which is what
   kept `overflow-y` from ever engaging in the previous flex-based version.
   ========================================================================== */
.rg-filter {
	position: fixed;
	inset: 0;
	z-index: 800;
	visibility: hidden;
	pointer-events: none;
	/* The drawer inside parks at translateX(100%) — a full panel width BEYOND the right
	   edge. Without clipping here that off-screen box widens the document and the whole
	   page gets a horizontal scrollbar. `clip` rather than `hidden`: hidden would make
	   this a scroll container and interfere with the drawer's own vertical scrolling. */
	overflow: clip;
}
.rg-filter.is-open { visibility: visible; pointer-events: auto; }

.rg-filter__scrim {
	position: absolute;
	inset: 0;
	background: rgba(0,0,0,0.55);
	opacity: 0;
	transition: opacity 0.35s var(--rg-ease-out);
	cursor: pointer;
}
.rg-filter.is-open .rg-filter__scrim { opacity: 1; }

.rg-filter__drawer {
	position: absolute;
	top: 0;
	right: 0;
	width: min(420px, 92vw);
	height: 100%;                       /* fills the fixed overlay = viewport */
	display: grid;
	grid-template-rows: auto minmax(0, 1fr) auto;   /* minmax(0,…) is the key */
	background: #0e0e10;
	border-left: 1px solid rgba(255,255,255,0.08);
	box-shadow: -22px 0 60px rgba(0,0,0,0.5);
	transform: translateX(100%);
	transition: transform 0.45s var(--rg-ease-out);
}
.rg-filter.is-open .rg-filter__drawer { transform: translateX(0); }

.rg-filter__head {
	display: flex; align-items: center; justify-content: space-between;
	padding: clamp(1.2rem,3vh,2rem) clamp(1.4rem,3vw,2rem) 1rem;
	border-bottom: 1px solid rgba(255,255,255,0.08);
}

/* THE scroller — the only scrollable element in the drawer */
.rg-filter__body {
	overflow-y: auto;
	overflow-x: hidden;
	-webkit-overflow-scrolling: touch;
	overscroll-behavior: contain;
	padding: clamp(1.2rem,3vh,2rem) clamp(1.4rem,3vw,2rem);
}
.rg-filter__body > * + * { margin-top: clamp(1.6rem,4vh,2.4rem); }

.rg-filter__foot {
	display: flex; gap: 1rem; align-items: center;
	padding: clamp(1.2rem,3vh,1.8rem) clamp(1.4rem,3vw,2rem);
	border-top: 1px solid rgba(255,255,255,0.08);
	background: #0e0e10;
}

.rg-filter__title { margin: 0; font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em; font-size: 1.6rem; color: var(--rg-white); }
.rg-filter__close { width: 2.6rem; height: 2.6rem; border: 0; border-radius: 50%; background: var(--rg-volt); color: var(--rg-black); font-size: 1.4rem; line-height: 1; cursor: pointer; transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out); }
.rg-filter__close:hover { background: var(--rg-violet); color: #fff; }
/* `min-height: 0` is REQUIRED here. A flex item defaults to `min-height: auto`, which
   means it refuses to shrink below its content — so this box grew to fit every filter,
   `overflow-y: auto` never had anything to scroll, and the touch gesture chained
   straight through to the page behind the drawer (it looked like the site outranked
   the drawer). `overscroll-behavior: contain` then stops the chain at the edges. */
/* Scroll container. Two things matter here, and both were wrong before:
   1. It must NOT be `display: flex` itself. As a flex container its children default
      to min-height:auto, refuse to shrink, and force this box to grow past the drawer —
      so `overflow-y` never had anything to scroll. Block layout + margins instead.
   2. An explicit max-height, not just `flex: 1`. The working reference in this codebase
      (.mp13-wishlist-dropdown__body) uses `max-height: 60vh; overflow-y: auto` and
      scrolls perfectly, while every flex-height chain here failed. */
.rg-filter__body {
	display: block;
	flex: 1 1 auto;
	min-height: 0;
	max-height: calc(100svh - 12rem);   /* drawer minus head + foot */
	overflow-y: auto;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
	touch-action: pan-y;
	padding: clamp(1.2rem,3vh,2rem) clamp(1.4rem,3vw,2rem);
}
/* gap replacement, since this is no longer a flex container */
.rg-filter__body > * + * { margin-top: clamp(1.6rem,4vh,2.4rem); }
.rg-filter__label { margin: 0 0 1rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.03em; font-size: 0.9rem; color: var(--rg-volt); }

/* dual range slider */
.rg-filter__range { position: relative; height: 1.4rem; }
.rg-filter__range-track { position: absolute; top: 50%; left: 0; right: 0; height: 4px; transform: translateY(-50%); background: var(--rg-violet); border-radius: 4px; }
.rg-filter__range-fill { position: absolute; top: 0; height: 100%; background: var(--rg-volt); border-radius: 4px; }
.rg-filter__range-input { position: absolute; top: 0; left: 0; width: 100%; height: 1.4rem; margin: 0; background: none; pointer-events: none; -webkit-appearance: none; appearance: none; }
.rg-filter__range-input::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; pointer-events: auto; width: 1.2rem; height: 1.2rem; border-radius: 50%; background: var(--rg-volt); border: 2px solid #121212; cursor: pointer; box-shadow: 0 0 8px rgba(169,207,63,0.6); }
.rg-filter__range-input::-moz-range-thumb { pointer-events: auto; width: 1.2rem; height: 1.2rem; border-radius: 50%; background: var(--rg-volt); border: 2px solid #121212; cursor: pointer; }
.rg-filter__range-vals { display: flex; justify-content: space-between; margin-top: 0.6rem; color: var(--rg-white); font-weight: 700; }
.rg-filter__range-vals strong { color: var(--rg-volt); }

/* checkboxes */
.rg-filter__checks { display: grid; gap: 0.7rem; }
.rg-filter__check { display: flex; align-items: center; gap: 0.7rem; cursor: pointer; color: var(--rg-white); font-weight: 700; }
.rg-filter__check input { position: absolute; opacity: 0; width: 0; height: 0; }
/* Round, to match the "remember me" control and the pill language used across
   the rest of the UI. */
.rg-filter__box { flex: 0 0 auto; width: 1.3rem; height: 1.3rem; border-radius: 50%; border: 2px solid rgba(169,207,63,0.5); background: rgba(255,255,255,0.04); transition: background var(--rg-dur) var(--rg-ease-out), border-color var(--rg-dur) var(--rg-ease-out); position: relative; }
.rg-filter__check input:checked + .rg-filter__box { background: var(--rg-volt); border-color: var(--rg-volt); }
/* Tick nudged for the circular box — the old offsets were tuned for a square. */
.rg-filter__check input:checked + .rg-filter__box::after { content: ""; position: absolute; left: 50%; top: 46%; width: 5px; height: 9px; border: solid #000; border-width: 0 2px 2px 0; transform: translate(-50%, -50%) rotate(45deg); }
.rg-filter__check-label em { color: var(--rg-ink-muted); font-style: normal; font-weight: 600; }

/* pills (level / rating) */
.rg-filter__pills { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.rg-filter__pill { cursor: pointer; }
.rg-filter__pill input { position: absolute; opacity: 0; }
.rg-filter__pill span { display: inline-flex; align-items: center; gap: 0.3rem; padding: 0.6rem 1.1rem; border-radius: var(--rg-r-pill); background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.10); color: var(--rg-white); font-weight: 800; text-transform: uppercase; letter-spacing: 0.02em; font-size: 0.8rem; transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out), border-color var(--rg-dur) var(--rg-ease-out); }
.rg-filter__pill input:checked + span { background: var(--rg-volt); color: var(--rg-black); border-color: var(--rg-volt); }
.rg-filter__pill--rating span { color: var(--rg-volt); }
.rg-filter__pill--rating input:checked + span { color: var(--rg-black); }
.rg-filter__pill--rating em { font-style: normal; font-size: 0.7rem; color: inherit; }

/* toggle switch */
.rg-filter__toggle { display: flex; align-items: center; gap: 0.8rem; cursor: pointer; color: var(--rg-white); font-weight: 700; }
.rg-filter__toggle input { position: absolute; opacity: 0; }
.rg-filter__switch { flex: 0 0 auto; width: 3rem; height: 1.6rem; border-radius: var(--rg-r-pill); background: var(--rg-violet); position: relative; transition: background var(--rg-dur) var(--rg-ease-out); }
.rg-filter__switch::after { content: ""; position: absolute; top: 2px; left: 2px; width: 1.2rem; height: 1.2rem; border-radius: 50%; background: #fff; transition: transform var(--rg-dur) var(--rg-ease-out); }
.rg-filter__toggle input:checked + .rg-filter__switch { background: var(--rg-volt); }
.rg-filter__toggle input:checked + .rg-filter__switch::after { transform: translateX(1.4rem); background: #000; }

/* footer: clear / apply */
.rg-filter__foot { display: flex; gap: 1rem; align-items: center; padding: clamp(1.2rem,3vh,1.8rem) clamp(1.4rem,3vw,2rem); border-top: 1px solid rgba(255,255,255,0.08); }
.rg-filter__clear { color: var(--rg-ink-muted); text-decoration: none; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.85rem; transition: color var(--rg-dur) var(--rg-ease-out); }
.rg-filter__clear:hover { color: var(--rg-white); }
.rg-filter__apply { flex: 1; padding: 0.9rem 1.4rem; border: 0; border-radius: var(--rg-r-pill); background: var(--rg-volt); color: var(--rg-black); font: inherit; font-weight: 900; text-transform: uppercase; letter-spacing: 0.06em; cursor: pointer; transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out); }
.rg-filter__apply:hover { background: var(--rg-violet); color: #fff; }

/* responsive */
/* 2 columns from 900px down. The narrow-screen block further down only tightens
   spacing and type — it no longer needs to change the column count, so a device
   reporting an unexpected viewport width (Samsung's "Desktop site" mode, display
   scaling) still gets 2 columns rather than falling back to the 3-column base. */
@media (max-width: 900px) { .rg-shop__grid.products { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 700px) {
	/* Order on phones: category pills FIRST on their own row, then "More filters" and
	   the sort dropdown sharing the line below it. */
	.rg-shop__toolbar { flex-wrap: wrap; row-gap: 0.7rem; }
	.rg-shop__chips-wrap { order: 1; width: 100%; }
	.rg-shop__more-filters { order: 2; flex: 0 0 auto; }
	.rg-shop__sort { order: 3; margin-left: auto; flex: 0 1 auto; min-width: 0; }
	/* The dropdown already reads "Default sorting / Sort by …", so the separate "Sort"
	   label was redundant and cost width on a line that has to fit two controls. */
	.rg-shop__sort-label { display: none; }
	/* Both pills must share ONE row. Smaller type + tighter padding, and the sort
	   button truncates instead of wrapping ("Sort by price: low to high" is long). */
	.rg-shop__more-filters {
		font-size: 0.68rem;
		padding: 0.6rem 0.9rem;
		letter-spacing: 0.02em;
		white-space: nowrap;
	}
	.rg-shop__sort .rg-select__btn {
		font-size: 0.68rem;
		padding: 0.55rem 0.8rem;
		letter-spacing: 0.01em;
		max-width: 100%;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
	}
	/* The sort pill now sits at the RIGHT edge (margin-left:auto), and its 250px option
	   panel is anchored to the pill's LEFT — so it ran 75px past the viewport and gave
	   the whole shop page a horizontal scrollbar (measured scrollWidth 475 vs 400).
	   Anchor the panel to the right instead and cap it to the screen. */
	.rg-shop__sort .rg-select__menu {
		left: auto;
		right: 0;
		width: max-content;
		max-width: calc(100vw - 2rem);
	}

	/* Active-filter badge: at 1.3rem it widened "More filters" enough to break the row
	   onto two lines as soon as a filter was applied. Shrink it and tuck it closer. */
	.rg-shop__more-count {
		min-width: 1rem;
		height: 1rem;
		padding: 0 0.22rem;
		font-size: 0.58rem;
		margin-left: 0.15rem;
	}
	/* When the count badge appears, drop the bars icon — the badge already signals the
	   control, and keeping both is what pushed the pill onto a second row. */
	.rg-shop__more-filters:has(.rg-shop__more-count) > svg { display: none; }

	/* Sorting pill: clip the selected label rather than let it size the pill. The full
	   text is visible in the open dropdown, so truncating here costs nothing. */
	.rg-shop__sort .rg-select__btn {
		max-width: 10.5rem;
	}
	.rg-shop__sort .rg-select__btn > span,
	.rg-shop__sort .rg-select__btn .rg-select__value {
		display: block;
		min-width: 0;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	/* "Clear filters" gets its own row UNDER the two pills — squeezed onto the same
	   line it was the third control fighting for ~368px. */
	.rg-shop__clear-btn {
		order: 4;
		width: 100%;
		justify-content: center;
		margin-top: 0.1rem;
		font-size: 0.68rem;
		padding: 0.55rem 0.9rem;
	}
}
/* MOBILE: two columns.
   ---------------------------------------------------------------------------
   The first attempt at this overflowed and produced very tall cards. The cause
   was NOT the grid — it was the card itself:

     * every size is in `vw` (padding 2.4vh 1.4vw, font-size 1.15vw,
       CTA padding 1.4vh 1.5vw). At 412px those collapse to a few pixels, so
       the padding vanished while other parts stayed fixed;
     * `.rg-pcarousel-card__name` has `min-height: 2.6em` reserving two title
       lines, which at a smaller font is proportionally much taller;
     * `.rg-pcarousel-card__media` is `aspect-ratio: 1/1`, so a ~180px-wide
       cell forces a 180px-tall image before any text exists.

   So the fix is to give the card REAL units at this width rather than shrink
   the grid. `min-width: 0` on the cell is the piece that actually stops the
   overflow — grid items default to `min-width: auto`, which refuses to shrink
   below their content and pushes the second column off-screen.
   ------------------------------------------------------------------------ */
@media (max-width: 600px) {
	.rg-shop__grid.products {
		grid-template-columns: repeat(2, 1fr);
		gap: 0.7rem;
	}
	/* THE fix for the overflow — without this a grid item will not shrink
	   below its intrinsic content width. */
	.rg-shop__grid.products > li,
	.rg-shop__grid.products .rg-shop-cell {
		min-width: 0;
	}
	.rg-shop__grid.products .rg-pcarousel-card { min-width: 0; }

	/* EQUAL HEIGHTS.
	   Grid rows already stretch their items, but the CARD inside the <li> was
	   sizing to its own content, so a 1-line title next to a 2-line one left the
	   shorter card visibly stubby. Make the cell a flex column and let the card
	   fill it; the body is already `flex: 1 1 auto` with `margin-top: auto` on
	   the price, so the CTA lines up along the row automatically. */
	.rg-shop__grid.products > li,
	.rg-shop__grid.products .rg-shop-cell {
		display: flex;
	}
	.rg-shop__grid.products .rg-pcarousel-card {
		width: 100%;
		height: 100%;
		display: flex;
		flex-direction: column;
	}

	/* Image: 1/1 is too tall for a half-width cell — a shallower ratio keeps the
	   product visible without dominating the card. */
	/* A touch taller than 4/3 — more of the product visible while still far
	   shorter than the square desktop ratio.
	   `flex-shrink: 0` matters now the card is a flex column: without it the
	   image would be squashed on whichever card has to stretch to match its
	   taller neighbour, so the two images in a row would differ in height. */
	.rg-shop__grid.products .rg-pcarousel-card__media {
		aspect-ratio: 1 / 1;
		flex-shrink: 0;
	}

	/* Body: real units instead of vw, tighter rhythm. */
	.rg-shop__grid.products .rg-pcarousel-card__body {
		padding: 0.7rem 0.6rem 0.75rem;
		gap: 0.35rem;
	}
	.rg-shop__grid.products .rg-pcarousel-card__name {
		font-size: 0.6rem;
		line-height: 1.25;
		letter-spacing: 0.01em;
		/* Reserves two lines so titles of different lengths keep the CTAs aligned
		   across a row. Slight positive tracking added back — at 0.6rem the
		   uppercase title tightens up and reads worse without it. */
		min-height: 2.5em;
		overflow: hidden;
	}
	.rg-shop__grid.products .rg-pcarousel-card__price { font-size: 0.9rem; }
	.rg-shop__grid.products .rg-pcarousel-card__price del { font-size: 0.7em; margin-right: 0.25em; }
	.rg-shop__grid.products .rg-pcarousel-card__cta.button {
		padding: 0.6rem 0.4rem !important;
		font-size: 0.68rem;
		margin-top: 0.35rem;
		letter-spacing: 0;
		/* The longest label in this catalogue is "Select options" (14 chars) on
		   variable products. nowrap plus a small clamp keeps it on one line at
		   ~160px without ever pushing the cell wider. */
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
		max-width: 100%;
	}

	/* Badges scaled so two never collide on a ~170px card. */
	.rg-shop__grid.products .rg-mens-pill--card {
		font-size: 0.48rem; padding: 0.25em 0.5em; top: 0.4rem; left: 0.4rem;
	}
	.rg-shop__grid.products .rg-points-pill--card {
		font-size: 0.48rem; left: 0.4rem; bottom: 0.4rem; padding: 0.2em 0.45em 0.2em 0.35em;
	}
	.rg-shop__grid.products .rg-points-pill--card .rg-points-pill__text { font-size: 0.48rem; }
	.rg-shop__grid.products .rg-pcarousel-card__wish {
		width: 28px; height: 28px; top: 0.4rem; right: 0.4rem;
	}
	.rg-shop__grid.products .rg-pcarousel-card__wish svg { width: 14px; height: 14px; }
	.rg-shop__grid.products .rg-pcarousel-card__badge {
		font-size: 0.5rem; padding: 0.2em 0.5em;
	}
	/* "View cart" link after an AJAX add. */
	.rg-shop__grid.products .added_to_cart { font-size: 0.65rem; padding: 0.45rem 0.6rem !important; }
}

@media (max-width: 900px) {
	/* Pull the whole shop layout up — the desktop top padding (clamp 7rem–11rem) left
	   a large empty band under the header on a phone. */
	.rg-shop { padding-block: calc(clamp(7rem, 14vh, 11rem) - 5vw) clamp(4rem, 10vh, 8rem); }

	/* Two corner glows on the shop hero: VOLT top-left, VIOLET bottom-right.
	   Sized in vw so they scale with the phone (the desktop values collapsed to ~170px
	   here and disappeared behind the blur). They bleed off the edges deliberately —
	   that is what reads as ambient light rather than a visible blob. */
	/* The glows deliberately sit past the hero's edges (left:-30vw / right:-35vw), so
	   the hero itself must NOT clip them — but their off-canvas half would widen the
	   document. Clip at the SECTION instead: the wash still bleeds beyond the hero box,
	   while nothing extends past the viewport to create a horizontal scrollbar. */
	.rg-shop__hero { overflow: visible; }
	.rg-shop { overflow-x: clip; }
	.rg-shop__hero::before {
		/* volt green — top left */
		width: 95vw;
		max-width: none;
		aspect-ratio: 1/1;
		left: -30vw;
		top: -18%;
		transform: none;
		filter: blur(60px);
		background: radial-gradient(circle, rgba(169,207,63,0.38), transparent 68%);
	}
	.rg-shop__hero::after {
		/* brand violet — bottom right */
		width: 105vw;
		max-width: none;
		aspect-ratio: 1/1;
		left: auto;
		right: -35vw;
		top: auto;
		bottom: -25%;
		transform: none;
		filter: blur(60px);
		background: radial-gradient(circle, rgba(123,74,168,0.5), transparent 68%);
	}
	/* And pull the hero block (eyebrow "Shop / Nutrition", title, sub, trust badges)
	   plus everything after it up a further 5vw, tightening the gap under the header. */
	.rg-shop__hero {
		margin-top: -5vw;
		padding-block: 0 clamp(0.5rem, 2vh, 1.5rem);
		margin-bottom: clamp(1.5rem, 4vh, 2.5rem);
	}

	/* The fixed background glows live at z-index:-1, but `.rg-shop` paints an opaque
	   black over them, so the volt/violet wash never showed on this page. Make the
	   section transparent and let the page's own black show through with the glows. */
	.rg-shop { background: transparent; }
}

/* ---- Custom SORT dropdown (replaces native <select> option list) ---- */
.rg-select { position: relative; display: inline-block; }
/* Hidden but still MEASURABLE. WooCommerce's variation script checks that the select
   is visible before it will match a variation and enable Add to cart; a 0x0 element
   fails that check, so the button stayed disabled even with an option chosen. Keeping a
   1px box (clipped, transparent) satisfies the check without showing anything. */
.rg-select__native {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	overflow: hidden;
	pointer-events: none;
}
.rg-select__btn {
	display: inline-flex; align-items: center; gap: 0.6rem; cursor: pointer;
	padding: 0.7rem 1.1rem; border-radius: var(--rg-r-pill);
	background: rgba(255,255,255,0.05); color: var(--rg-white);
	border: 1px solid rgba(169,207,63,0.35);
	font: inherit; font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; font-size: 0.8rem;
	transition: border-color var(--rg-dur) var(--rg-ease-out), background var(--rg-dur) var(--rg-ease-out);
}
.rg-select__btn:hover { border-color: var(--rg-volt); }
.rg-select__btn svg { transition: transform var(--rg-dur) var(--rg-ease-out); }
.rg-select.is-open .rg-select__btn svg { transform: rotate(180deg); }
.rg-select__menu {
	position: absolute; top: calc(100% + 0.5rem); left: 0; z-index: 50;
	min-width: 100%; width: max-content; max-width: 20rem;
	background: var(--rg-volt);                         /* GREEN back */
	border-radius: 14px;
	padding: 6px; margin: 0; list-style: none;
	box-shadow: 0 1.5vh 4vh rgba(0,0,0,0.5), 0 0 24px rgba(169,207,63,0.3);
	opacity: 0; visibility: hidden; transform: translateY(-0.4rem);
	transition: opacity var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur) var(--rg-ease-out), visibility var(--rg-dur);
}
.rg-select.is-open .rg-select__menu { opacity: 1; visibility: visible; transform: translateY(0); }
.rg-select__opt {
	padding: 0.6rem 0.9rem; border-radius: 8px; cursor: pointer;    /* base radius */
	color: #000;                                        /* BLACK fonts */
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.02em; font-size: 0.78rem;
	transition: background var(--rg-dur) var(--rg-ease-out);
}
/* end items get a bigger outer radius so they nest cleanly into the panel corners
   (panel 14px − 6px padding = 8px inner; use it so highlights hug the corners) */
.rg-select__opt:first-child { border-top-left-radius: 8px; border-top-right-radius: 8px; }
.rg-select__opt:last-child { border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; }
.rg-select__opt:hover { background: rgba(0,0,0,0.12); }
.rg-select__opt.is-selected { background: #000; color: var(--rg-volt); }

/* AJAX shop: subtle loading state while the results region swaps */
.rg-shop__results { transition: opacity 0.2s ease; }
.rg-shop__results.is-loading { opacity: 0.5; pointer-events: none; }

/* standalone Clear-filters button (toolbar) — shown only when filters active */
.rg-shop__clear-btn {
	flex: 0 0 auto; display: inline-flex; align-items: center; gap: 0.4rem;
	padding: 0.7rem 1.1rem; border-radius: var(--rg-r-pill); text-decoration: none;
	background: transparent; color: var(--rg-violet);
	border: 1px solid rgba(123,74,168,0.6);
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.03em; font-size: 0.78rem;
	transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out);
}
.rg-shop__clear-btn:hover { background: var(--rg-violet); color: #fff; }
.rg-shop__clear-btn[hidden] { display: none; }

/* AJAX shop: entrance animations for the swapped title + grid cards */
@keyframes rg-title-swap {
	0%   { opacity: 0; transform: translateY(0.4em) scale(0.98); }
	100% { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes rg-card-in {
	0%   { opacity: 0; transform: translateY(24px); }
	100% { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
	.rg-shop__grid > li { animation: none !important; }
	.rg-shop__title { animation: none !important; }
}

/* ============================================================
   AMBIENT BACKGROUND GLOWS — two slow-drifting blurred lights (volt + purple)
   behind all content, giving the black canvas depth "behind glass". Site-wide.
   ============================================================ */
.rg-bg-glows {
	position: fixed; inset: 0; z-index: -1;   /* BEHIND everything — no stacking fights */
	pointer-events: none; overflow: hidden;
}
.rg-bg-glow {
	position: absolute; border-radius: 50%;
	filter: blur(90px);
	will-change: transform;
	opacity: 0.85;
}
.rg-bg-glow--volt {
	width: 48vw; height: 48vw; max-width: 760px; max-height: 760px;
	background: radial-gradient(circle, rgba(169,207,63,0.55), transparent 70%);
	top: -8vh; left: -6vw;
	animation: rg-glow-drift-a 28s ease-in-out infinite;
}
.rg-bg-glow--violet {
	width: 54vw; height: 54vw; max-width: 860px; max-height: 860px;
	background: radial-gradient(circle, rgba(123,74,168,0.65), transparent 70%);
	bottom: -12vh; right: -8vw;
	animation: rg-glow-drift-b 34s ease-in-out infinite;
}
@keyframes rg-glow-drift-a {
	0%, 100% { transform: translate(0, 0) scale(1); }
	33%      { transform: translate(18vw, 22vh) scale(1.15); }
	66%      { transform: translate(8vw, 48vh) scale(0.95); }
}
@keyframes rg-glow-drift-b {
	0%, 100% { transform: translate(0, 0) scale(1); }
	33%      { transform: translate(-16vw, -20vh) scale(1.1); }
	66%      { transform: translate(-6vw, -44vh) scale(0.9); }
}
@media (prefers-reduced-motion: reduce) {
	.rg-bg-glow { animation: none !important; }
}

/* The glow layer is z-index:-1 (behind everything), so content shows above it with
   NO forced positioning — do NOT set position/z-index on header/main/footer, that
   traps the fixed header + glass menu. Make the black canvas transparent so the
   fixed glows bleed through. Keep body black as the base behind the glows. */
body { background: var(--rg-black); }
.rg-hero, .rg-rebels, .rg-carousel, .rg-faq, .rg-ss, .rg-reviews, .rg-shop,
.rg-manifesto, .rg-bento { background: transparent !important; }

/* ============================================================
   SHOP MARKETING SECTIONS — benefits bar, promo strip, spotlight, CTA band
   ============================================================ */

/* --- Trust / benefits bar --- */
.rg-shop__benefits {
	display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(1rem, 2vw, 2rem);
	margin-bottom: clamp(1.5rem, 4vh, 2.5rem);
	padding: clamp(1.2rem, 3vh, 2rem) clamp(1rem, 2.5vw, 2rem);
	border: 1px solid rgba(255,255,255,0.08); border-radius: var(--rg-r-lg);
	background: rgba(255,255,255,0.03);
	-webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.rg-shop__benefit { display: flex; align-items: center; gap: 0.9rem; }
.rg-shop__benefit-icon { flex: 0 0 auto; color: var(--rg-volt); display: inline-flex; }
.rg-shop__benefit-body { display: flex; flex-direction: column; min-width: 0; }
.rg-shop__benefit-body strong { color: var(--rg-white); font-weight: 800; text-transform: uppercase; letter-spacing: 0.02em; font-size: clamp(0.8rem, 1vw, 0.95rem); }
.rg-shop__benefit-body em { color: var(--rg-ink-muted); font-style: normal; font-size: clamp(0.72rem, 0.85vw, 0.82rem); }

/* --- Promo banner strip --- */
.rg-shop__promo {
	position: relative; overflow: hidden; display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap;
	margin-bottom: clamp(2rem, 5vh, 3rem);
	padding: clamp(1.4rem, 3.5vh, 2.4rem) clamp(1.6rem, 4vw, 3rem);
	border-radius: var(--rg-r-lg); text-decoration: none;
	background: linear-gradient(110deg, var(--rg-violet) 0%, #5c3585 55%, var(--rg-black) 100%);
	box-shadow: 0 0 50px rgba(123,74,168,0.35);
}
.rg-shop__promo-glow { position: absolute; inset: 0; background: radial-gradient(40% 120% at 85% 50%, rgba(169,207,63,0.35), transparent 70%); pointer-events: none; }
.rg-shop__promo-tag { position: relative; z-index: 1; padding: 0.35em 1em; border-radius: var(--rg-r-pill); background: var(--rg-volt); color: #000; font-weight: 900; text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.72rem; }
.rg-shop__promo-title { position: relative; z-index: 1; flex: 1; min-width: 12ch; color: #fff; font-weight: 900; text-transform: uppercase; letter-spacing: -0.005em; line-height: 1.1; font-size: clamp(1.1rem, 2.2vw, 1.9rem); }
.rg-shop__promo-cta { position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.7rem 1.3rem; border-radius: var(--rg-r-pill); background: var(--rg-volt); color: #000; font-weight: 800; text-transform: uppercase; letter-spacing: 0.03em; font-size: 0.82rem; transition: background var(--rg-dur) var(--rg-ease-out); }
.rg-shop__promo:hover .rg-shop__promo-cta { background: #fff; }

/* --- Featured spotlight (Beast Pack) --- */
.rg-shop__spotlight {
	display: grid; grid-template-columns: 0.9fr 1.1fr; align-items: center; gap: clamp(1.5rem, 5vw, 5rem);
	margin-top: clamp(3rem, 8vh, 6rem);
	padding: clamp(2rem, 5vh, 4rem) clamp(1.5rem, 4vw, 3.5rem);
	border-radius: var(--rg-r-xl); overflow: hidden;
	background: linear-gradient(140deg, #141414 0%, #0a0a0a 100%);
	border: 1px solid rgba(169,207,63,0.2);
	box-shadow: 0 0 60px rgba(0,0,0,0.5);
}
.rg-shop__spotlight-media { position: relative; display: flex; justify-content: center; }
.rg-shop__spotlight-glow { position: absolute; inset: 8% 8% 0; background: radial-gradient(circle, rgba(169,207,63,0.35), rgba(123,74,168,0.25) 45%, transparent 72%); filter: blur(30px); }
.rg-shop__spotlight-img { position: relative; z-index: 1; max-width: 100%; max-height: 46vh; height: auto; object-fit: contain; filter: drop-shadow(0 2vh 4vh rgba(0,0,0,0.5)); }
.rg-shop__spotlight-eyebrow { display: inline-block; margin-bottom: 0.8em; padding: 0.4em 1.1em; border-radius: var(--rg-r-pill); background: rgba(169,207,63,0.14); border: 1px solid rgba(169,207,63,0.4); color: var(--rg-volt); font-weight: 800; text-transform: uppercase; letter-spacing: 0.2em; font-size: 0.72rem; }
.rg-shop__spotlight-title { margin: 0 0 0.4em; color: var(--rg-white); font-weight: 900; line-height: 0.98; letter-spacing: -0.01em; text-transform: uppercase; font-size: clamp(1.8rem, 3.6vw, 3.2rem); }
.rg-shop__spotlight-text { margin: 0 0 1.2em; max-width: 44ch; color: var(--rg-ink-muted); font-weight: 600; line-height: 1.5; font-size: clamp(0.95rem, 1.1vw, 1.1rem); }
.rg-shop__spotlight-price { margin-bottom: 1.4em; color: var(--rg-volt); font-weight: 900; font-size: clamp(1.4rem, 2.4vw, 2rem); }
.rg-shop__spotlight-price del { color: var(--rg-ink-muted); font-weight: 600; margin-right: 0.4em; }
.rg-shop__spotlight-cta { align-self: flex-start; }

/* --- Bottom CTA / newsletter band --- */
.rg-shop__cta-band {
	position: relative; overflow: hidden; text-align: center;
	margin-top: clamp(3rem, 8vh, 6rem);
	padding: clamp(3rem, 8vh, 6rem) clamp(1.5rem, 5vw, 4rem);
	border-radius: var(--rg-r-xl);
	background: radial-gradient(120% 100% at 50% 0%, rgba(123,74,168,0.5) 0%, var(--rg-black) 60%);
	border: 1px solid rgba(123,74,168,0.3);
}
.rg-shop__cta-glow { position: absolute; top: -30%; left: 50%; transform: translateX(-50%); width: 60vw; max-width: 700px; aspect-ratio: 2/1; background: radial-gradient(circle, rgba(169,207,63,0.25), transparent 70%); filter: blur(60px); pointer-events: none; }
.rg-shop__cta-title { position: relative; z-index: 1; margin: 0 0 0.3em; font-weight: 900; text-transform: uppercase; letter-spacing: -0.02em; font-size: clamp(2.4rem, 6vw, 5rem); background: linear-gradient(100deg, var(--rg-volt), #fff 50%, var(--rg-violet)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; }
.rg-shop__cta-sub { position: relative; z-index: 1; margin: 0 0 2em; color: rgba(255,255,255,0.85); font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; font-size: clamp(0.85rem, 1.1vw, 1.05rem); }
.rg-shop__cta-form { position: relative; z-index: 1; display: flex; gap: 0.6rem; max-width: 30rem; margin: 0 auto; }
.rg-shop__cta-input { flex: 1; min-width: 0; padding: 0.9rem 1.2rem; border: 1px solid rgba(255,255,255,0.15); border-radius: var(--rg-r-pill); background: rgba(255,255,255,0.06); color: #fff; font: inherit; }
.rg-shop__cta-input::placeholder { color: var(--rg-ink-muted); }
.rg-shop__cta-btn { padding: 0.9rem 1.6rem; border: 0; border-radius: var(--rg-r-pill); background: var(--rg-volt); color: #000; font: inherit; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; cursor: pointer; transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out); }
.rg-shop__cta-btn:hover { background: var(--rg-violet); color: #fff; }

/* responsive */
@media (max-width: 820px) {
	.rg-shop__benefits { grid-template-columns: 1fr 1fr; }
	.rg-shop__spotlight { grid-template-columns: 1fr; text-align: center; }
	.rg-shop__spotlight-text { margin-inline: auto; }
	.rg-shop__spotlight-cta { align-self: center; }
	.rg-shop__spotlight-media { order: -1; }
}
@media (max-width: 500px) {
	/* Keep the four trust badges as a 2×2 grid instead of a single stacked column —
	   stacked they ate most of a phone screen before any product was visible. */
	.rg-shop__benefits {
		grid-template-columns: 1fr 1fr;
		gap: 0.7rem;
		padding: 0.9rem;
	}
	/* icon above the text so each cell stays narrow enough for two per row */
	.rg-shop__benefit {
		flex-direction: column;
		align-items: flex-start;
		gap: 0.45rem;
	}
	.rg-shop__benefit-body { font-size: 0.82rem; line-height: 1.3; }
	.rg-shop__cta-form { flex-direction: column; }
}

/* ============================================================
   BIG TWO-ROW MARQUEE — top drifts left, bottom drifts right. Rebel energy.
   ============================================================ */
.rg-marquee {
	background: transparent;
	padding-block: clamp(2rem, 6vh, 5rem);
	overflow: hidden;
	display: flex; flex-direction: column; gap: clamp(0.2rem, 1vh, 0.8rem);
	user-select: none;
}
.rg-marquee__row { overflow: hidden; white-space: nowrap; }
.rg-marquee__track {
	display: inline-flex; align-items: center; gap: clamp(1rem, 2.5vw, 3rem);
	will-change: transform;
}
.rg-marquee__row--a .rg-marquee__track { animation: rg-marquee-left 32s linear infinite; }
.rg-marquee__row--b .rg-marquee__track { animation: rg-marquee-right 32s linear infinite; }
@keyframes rg-marquee-left  { from { transform: translateX(0); }    to { transform: translateX(-50%); } }
@keyframes rg-marquee-right { from { transform: translateX(-50%); } to { transform: translateX(0); } }

.rg-marquee__word {
	font-weight: 900; text-transform: uppercase; letter-spacing: -0.02em;
	font-size: clamp(2.5rem, 8vw, 8rem); line-height: 1;
}
/* row A: FILLED white; row B: OUTLINE (hollow) — nice contrast between the two lines */
.rg-marquee__row--a .rg-marquee__word { color: var(--rg-white); }
.rg-marquee__row--b .rg-marquee__word {
	color: transparent;
	-webkit-text-stroke: 1.5px rgba(255,255,255,0.35);
}
.rg-marquee__dot {
	font-size: clamp(1.5rem, 4vw, 4rem); line-height: 1;
	color: var(--rg-volt);
}
.rg-marquee__row--b .rg-marquee__dot { color: var(--rg-violet); }

@media (prefers-reduced-motion: reduce) {
	.rg-marquee__track { animation: none !important; }
}

/* single-row SLOGAN marquee (replaces the old section-2 figure). Alternate the
   words filled/outline for rhythm; dots stay volt. */
.rg-marquee--slogan { padding-block: clamp(3rem, 9vh, 7rem); scroll-margin-top: 6rem; }
.rg-marquee--slogan .rg-marquee__word:nth-child(4n+3) {
	color: transparent; -webkit-text-stroke: 1.5px rgba(255,255,255,0.35);
}

/* ============================================================
   BENTO — reworked toward minimal: dark glass tiles, subtle accents (was loud
   split-color + solid violet/volt blocks). Same layout, calmer surfaces.
   ============================================================ */
/* pack cards: kill the split-color halves → dark glass card */
.rg-bento__pack.rg-pcard--volt,
.rg-bento__pack.rg-pcard--violet {
	background: rgba(255,255,255,0.04) !important;
	box-shadow: none !important;
	border: 1px solid rgba(255,255,255,0.08);
	border-radius: var(--rg-r-lg);
	transition: border-color var(--rg-dur) var(--rg-ease-out), transform 0.6s var(--rg-ease-out);
}
.rg-bento__pack.rg-pcard--volt:hover { border-color: rgba(169,207,63,0.5); }
.rg-bento__pack.rg-pcard--violet:hover { border-color: rgba(123,74,168,0.6); }
.rg-bento__pack .rg-pcard__media::after { display: none !important; }   /* remove the color band */
.rg-bento__pack .rg-pcard__name { color: var(--rg-white); }

/* trending tile: dark glass, white title, volt accent underline */
.rg-bento__trending {
	background: rgba(255,255,255,0.04) !important;
	border: 1px solid rgba(255,255,255,0.08);
}
.rg-bento__trending:hover { border-color: rgba(169,207,63,0.5); }
.rg-bento__trending-title { color: var(--rg-white) !important; }
.rg-bento__trending-title::after {
	content: ""; display: block; width: 3rem; height: 3px; margin-top: 0.6rem;
	background: var(--rg-volt); border-radius: 3px;
}

/* CTA tile: dark glass with a violet→black gradient + glow (was solid volt) */
.rg-bento__cta {
	background: linear-gradient(120deg, rgba(123,74,168,0.35) 0%, var(--rg-black) 70%) !important;
	border: 1px solid rgba(123,74,168,0.3);
	box-shadow: 0 0 50px rgba(123,74,168,0.25);
}
.rg-bento__cta-title { color: var(--rg-white) !important; }

/* ============================================================
   MANIFESTO product grid (§4) — same minimal dark-glass rework as the bento
   (was loud volt/violet split-color cards).
   ============================================================ */
.rg-manifesto__grid .rg-pcard.rg-pcard--volt,
.rg-manifesto__grid .rg-pcard.rg-pcard--violet {
	background: rgba(255,255,255,0.04) !important;
	box-shadow: none !important;
	border: 1px solid rgba(255,255,255,0.08);
	border-radius: var(--rg-r-lg);
	transition: border-color var(--rg-dur) var(--rg-ease-out), transform 0.6s var(--rg-ease-out);
}
.rg-manifesto__grid .rg-pcard--volt:hover { border-color: rgba(169,207,63,0.5); }
.rg-manifesto__grid .rg-pcard--violet:hover { border-color: rgba(123,74,168,0.6); }
.rg-manifesto__grid .rg-pcard__media::after { display: none !important; }   /* remove the color band */
.rg-manifesto__grid .rg-pcard__name { color: var(--rg-white); }

/* ============================================================
   PRODUCTS IN DETAIL — sticky-scroll story (image pins, copy scrolls past,
   image crossfades per product). Replaces the tabbed layout.
   ============================================================ */
.rg-detail.rg-story { background: transparent !important; }   /* let ambient glows show through */
.rg-story__wrap {
	display: grid; grid-template-columns: 0.9fr 1.1fr;
	gap: clamp(2rem, 5vw, 5rem); align-items: start;
}

/* sticky media column */
.rg-story__media { position: relative; }
.rg-story__media-inner {
	position: sticky; top: 14vh;
	height: 72vh; display: grid; place-items: center;
	border-radius: var(--rg-r-xl);
	background: rgba(255,255,255,0.03);
	border: 1px solid rgba(255,255,255,0.07);
	overflow: hidden;
}
.rg-story__glow {
	position: absolute; inset: 10%;
	background: radial-gradient(circle, rgba(169,207,63,0.28), rgba(123,74,168,0.22) 50%, transparent 72%);
	filter: blur(40px); pointer-events: none;
}
.rg-story__img-wrap {
	grid-area: 1 / 1; margin: 0;
	display: grid; place-items: center; width: 100%; height: 100%;
	opacity: 0; transform: scale(0.96);
	transition: opacity 0.6s var(--rg-ease-out), transform 0.6s var(--rg-ease-out);
}
.rg-story__img-wrap.is-active { opacity: 1; transform: scale(1); }
.rg-story__img { max-width: 76%; max-height: 60vh; height: auto; object-fit: contain; position: relative; z-index: 1; filter: drop-shadow(0 3vh 5vh rgba(0,0,0,0.5)); }

/* scrolling copy steps */
.rg-story__steps { display: flex; flex-direction: column; }
.rg-story__step {
	min-height: 72vh; display: flex; flex-direction: column; justify-content: center;
	padding-block: 6vh;
	opacity: 0.35; transition: opacity 0.5s var(--rg-ease-out);
}
.rg-story__step.is-active { opacity: 1; }
.rg-story__index { font-weight: 900; font-size: clamp(1rem, 1.4vw, 1.3rem); color: var(--rg-volt); letter-spacing: 0.1em; }
.rg-story__name { display: block; margin: 0.2em 0 0.6em; font-weight: 800; text-transform: uppercase; letter-spacing: 0.16em; font-size: clamp(0.75rem, 0.9vw, 0.9rem); color: var(--rg-ink-muted); }
.rg-story__heading { margin: 0 0 0.6em; color: var(--rg-white); font-weight: 900; text-transform: uppercase; line-height: 1.02; letter-spacing: -0.01em; font-size: clamp(1.6rem, 2.8vw, 2.8rem); }
.rg-story__body { margin: 0 0 1.6em; max-width: 52ch; color: var(--rg-ink-muted); font-weight: 500; line-height: 1.65; font-size: clamp(1rem, 1.15vw, 1.15rem); }
.rg-story__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.2vh; }
.rg-story__list li { position: relative; padding-left: 1.8rem; color: var(--rg-white); font-weight: 600; line-height: 1.5; font-size: clamp(0.95rem, 1.05vw, 1.1rem); }
.rg-story__list li::before { content: ""; position: absolute; left: 0; top: 0.55em; width: 0.6rem; height: 0.6rem; border-radius: 50%; background: var(--rg-volt); }

/* responsive: stack, media becomes inline per step (no sticky) */
@media (max-width: 900px) {
	.rg-story__wrap { grid-template-columns: 1fr; }
	.rg-story__media-inner { position: relative; top: 0; height: 46vh; }
	.rg-story__step { min-height: auto; padding-block: 5vh; opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
	.rg-story__step { opacity: 1; }
}

/* ============================================================
   PRODUCTS IN DETAIL — pinned HORIZONTAL scroll gallery. The section pins and
   vertical scroll pushes products in from the right (1→N), then releases.
   ============================================================ */
.rg-detail.rg-hscroll { background: transparent !important; padding: 8vh 0 0; }
.rg-hscroll__head { margin-bottom: clamp(2rem, 5vh, 4rem); }

/* progress bar — inside the pinned viewport, centered above the slides */
.rg-hscroll__progress {
	position: absolute; z-index: 3; top: clamp(1rem, 3vh, 2.5rem); left: 50%; transform: translateX(-50%);
	width: min(40vw, 420px); height: 4px; border-radius: 4px;
	background: rgba(255,255,255,0.12); overflow: hidden;
}
.rg-hscroll__progress-bar { position: absolute; inset: 0 auto 0 0; width: 20%; background: var(--rg-volt); border-radius: 4px; box-shadow: 0 0 12px rgba(169,207,63,0.5); }

/* pinned viewport (JS gives it a tall scroll distance + pins it) */
.rg-hscroll__viewport { position: relative; overflow: hidden; padding-top: clamp(2.5rem, 6vh, 4.5rem); }
.rg-hscroll__track {
	display: flex; align-items: stretch;
	will-change: transform;
}
.rg-hscroll__panel {
	flex: 0 0 100vw; min-height: 82vh;
	display: grid; grid-template-columns: 1fr 1fr; align-items: center;
	gap: clamp(2rem, 5vw, 6rem);
	padding: 0 max(4vw, calc((100vw - var(--rg-container)) / 2 + 1rem));
	box-sizing: border-box;
}
/* media */
.rg-hscroll__media {
	position: relative; display: grid; place-items: center;
	height: 62vh; border-radius: var(--rg-r-xl);
	background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.07);
	overflow: hidden;
}
.rg-hscroll__glow { position: absolute; inset: 12%; background: radial-gradient(circle, rgba(169,207,63,0.28), rgba(123,74,168,0.22) 50%, transparent 72%); filter: blur(40px); pointer-events: none; }
.rg-hscroll__img { position: relative; z-index: 1; max-width: 74%; max-height: 52vh; height: auto; object-fit: contain; filter: drop-shadow(0 3vh 5vh rgba(0,0,0,0.5)); }

/* PHONES: the pinned horizontal scroll is KEPT (the JS no longer bails out below
   900px). The panel is restructured instead — image as a band across the top, copy
   below it — because the desktop two-column grid at 82vh with 62vh of media pushed
   ~300 characters of body text off the bottom of the screen.
   Heights use svh (small viewport height): with vh, iOS measures the viewport as if
   the URL bar were hidden, so a pinned panel is taller than the visible area and its
   last lines sit under the bar. svh is the always-visible height. */
@media (max-width: 900px) {
	.rg-hscroll__viewport {
		/* The header is fixed at 9vh. Pinned at `top top` the viewport starts at y=0,
		   so anything in the first 9vh sits UNDER the header — which is where the
		   featured image was disappearing. Clear it, plus a little breathing room. */
		padding-top: calc(9vh + 1rem);
		/* Pinned at `top top`, the viewport IS the screen: give it the full small-
		   viewport height so panels fill it and nothing peeks in from below.
		   vh first as a fallback for iOS < 15.4, svh where supported. */
		height: 100vh;
		height: 100svh;
		max-height: 100vh;
		max-height: 100svh;
		box-sizing: border-box;
	}
	.rg-hscroll__panel {
		/* keep the full-width flex basis from the base rule — overriding min-height
		   without it let the panels shrink to content and the row wrapped into a
		   vertical stack that overlapped the sections below. */
		flex: 0 0 100%;
		grid-template-columns: 1fr;
		grid-template-rows: auto 1fr;
		/* fill the pinned viewport rather than sizing to content, so each panel is a
		   full screen and the CTA lands at a consistent height on every slide */
		min-height: 0;
		height: 100%;
		gap: 1rem;
		padding: 0 6vw 2rem;
		align-content: stretch;
	}
	/* a flex row must never wrap, or the panels stack instead of sitting side by side */
	.rg-hscroll__track { flex-wrap: nowrap; }
	/* image band: bigger again now that the prose description is hidden on phones and
	   only the three bullets remain below it */
	.rg-hscroll__media {
		height: 26svh;
		border-radius: var(--rg-r-lg);
	}
	.rg-hscroll__img { max-height: 23svh; max-width: 74%; }
	/* copy column: a flex column so the CTA sits at the bottom of the panel */
	.rg-hscroll__copy {
		min-width: 0;
		display: flex;
		flex-direction: column;
		min-height: 0;
	}
	.rg-hscroll__heading { font-size: clamp(1.35rem, 6vw, 1.9rem); line-height: 1.1; margin-bottom: 0.3em; }
	/* Drop the prose description on phones — ~300 characters per panel left no room
	   for the bullets, which carry the same information far more scannably. The text
	   stays in the markup for SEO and for desktop, it is just not painted here. */
	.rg-hscroll__body { display: none; }
	/* the bullet list becomes the panel's body copy */
	.rg-hscroll__list {
		flex: 1 1 auto;
		min-height: 0;
		overflow-y: auto;
		-webkit-overflow-scrolling: touch;
		margin-bottom: 0.9rem;
		font-size: 0.95rem;
		line-height: 1.45;
	}
	/* CTA pinned to the bottom of every panel */
	.rg-hscroll__cta {
		flex: 0 0 auto;
		align-self: flex-start;
		margin-top: auto;
	}
	/* the pinned track must not fight the browser's vertical gesture */
	.rg-hscroll__track { touch-action: pan-y; }
	/* Panels are `flex: 0 0 100vw`. On iOS 100vw includes the scrollbar gutter and does
	   not always equal the pinned viewport's width, which leaves a sliver of the next
	   panel visible at rest. 100% of the viewport element is exact.
	   Only when PINNED: without the pin the section falls back to native swipe, and
	   `overflow: hidden` there would trap the panels stacked with no way to reach
	   them — which is exactly what broke the section. */
	.rg-hscroll.is-pinned .rg-hscroll__panel { flex-basis: 100%; width: 100%; }
	.rg-hscroll.is-pinned .rg-hscroll__viewport { overflow: hidden; }
	/* Fallback (no GSAP / reduced motion): keep panels swipeable and full-width. */
	.rg-hscroll:not(.is-pinned) .rg-hscroll__panel { flex: 0 0 100%; width: 100%; }
	/* Clip at the section too, so a mis-measured track can never paint over the
	   sections above or below it. */
	.rg-detail.rg-hscroll { overflow-x: hidden; }
}
/* copy */
.rg-hscroll__index { font-weight: 900; font-size: clamp(0.85rem, 1vw, 1rem); color: var(--rg-volt); letter-spacing: 0.12em; }
.rg-hscroll__name { display: block; margin: 0.3em 0 0.6em; font-weight: 800; text-transform: uppercase; letter-spacing: 0.16em; font-size: clamp(0.75rem, 0.9vw, 0.9rem); color: var(--rg-ink-muted); }
.rg-hscroll__heading { margin: 0 0 0.6em; color: var(--rg-white); font-weight: 900; text-transform: uppercase; line-height: 1.02; letter-spacing: -0.01em; font-size: clamp(1.6rem, 2.8vw, 2.8rem); }
.rg-hscroll__body { margin: 0 0 1.6em; max-width: 52ch; color: var(--rg-ink-muted); font-weight: 500; line-height: 1.65; font-size: clamp(1rem, 1.15vw, 1.15rem); }
.rg-hscroll__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.2vh; }
.rg-hscroll__list li { position: relative; padding-left: 1.8rem; color: var(--rg-white); font-weight: 600; line-height: 1.5; font-size: clamp(0.95rem, 1.05vw, 1.1rem); }
.rg-hscroll__list li::before { content: ""; position: absolute; left: 0; top: 0.55em; width: 0.6rem; height: 0.6rem; border-radius: 50%; background: var(--rg-volt); }
/* "View <product>" CTA on each detail panel — button-only navigation (keeps the
   image perfectly centered on its shelf; wrapping the img in a link broke that). */
.rg-hscroll__cta { margin-top: 2.2vh; align-self: flex-start; }

/* Fallback (no JS/GSAP or reduced-motion): native horizontal scroll-snap */
.rg-hscroll:not(.is-pinned) .rg-hscroll__viewport { overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.rg-hscroll:not(.is-pinned) .rg-hscroll__viewport::-webkit-scrollbar { display: none; }
.rg-hscroll:not(.is-pinned) .rg-hscroll__panel { scroll-snap-align: start; }

/* Mobile used to stack these panels vertically and switch the pin off entirely:
       .rg-hscroll__track  { flex-direction: column; }
       .rg-hscroll__panel  { flex: none; }
       .rg-hscroll__viewport { overflow: visible; }
       .rg-hscroll__progress { display: none; }
   Because this block sat AFTER the mobile rules further up, it overrode them — the
   panels stacked and spilled over the neighbouring sections. The pinned horizontal
   scroll now runs on phones too, so only the head stays stacked. */
@media (max-width: 900px) {
	.rg-hscroll__head { flex-direction: column; align-items: flex-start; }
}

/* ============================================================
   SINGLE PRODUCT (PDP) — dark-glass premium: split hero (frosted light-glass
   gallery + sticky buy box), styled variations, description panel, related.
   ============================================================ */
.rg-pdp { background: transparent; padding-block: clamp(6rem, 12vh, 10rem) clamp(4rem, 10vh, 8rem); }

/* breadcrumb */
.rg-pdp__crumbs { display: flex; align-items: center; gap: 0.6rem; margin-bottom: clamp(1.5rem, 4vh, 3rem); font-size: 0.82rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--rg-ink-muted); flex-wrap: wrap; }
.rg-pdp__crumbs a { color: var(--rg-ink-muted); text-decoration: none; transition: color var(--rg-dur) var(--rg-ease-out); }
.rg-pdp__crumbs a:hover { color: var(--rg-volt); }
.rg-pdp__crumbs-current { color: var(--rg-white); }

/* HERO split */
.rg-pdp__hero { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: clamp(2rem, 5vw, 5rem); align-items: start; }

/* ---- GALLERY: frosted light-glass stage ---- */
.rg-pdp__gallery { position: sticky; top: 14vh; }
.rg-pdp__stage {
	position: relative; border-radius: var(--rg-r-xl); overflow: hidden;
	aspect-ratio: 1 / 1;
	background: radial-gradient(80% 65% at 50% 38%, #ffffff 0%, #f4f5f7 55%, #e7e9ee 100%);
}
.rg-pdp__stage-glow { position: absolute; inset: 12%; z-index: 0; background: radial-gradient(circle, rgba(169,207,63,0.20), rgba(123,74,168,0.16) 55%, transparent 74%); filter: blur(30px); mix-blend-mode: multiply; }
.rg-pdp__stage::before { content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none; border-radius: inherit; box-shadow: inset 0 -3rem 3rem -2rem rgba(120,120,140,0.35), inset 0 0 0 1px rgba(255,255,255,0.5); }
/* SWIPE/SLIDE track: horizontal scroll-snap belt of full-size slides */
.rg-pdp__stage-track {
	position: absolute; inset: 0; z-index: 1;
	display: flex; overflow-x: auto; overflow-y: hidden;
	scroll-snap-type: x mandatory;
	-ms-overflow-style: none; scrollbar-width: none;   /* hide scrollbar */
	touch-action: pan-y pinch-zoom;                    /* allow horizontal drag */
	cursor: grab;
}
.rg-pdp__stage-track::-webkit-scrollbar { display: none; }
.rg-pdp__stage-track.is-grabbing { cursor: grabbing; scroll-snap-type: none; }
.rg-pdp__slide {
	flex: 0 0 100%; scroll-snap-align: center;
	display: grid; place-items: center;
}
.rg-pdp__stage-img { width: 100%; height: 100%; object-fit: contain; padding: 10%; -webkit-user-select: none; user-select: none; -webkit-user-drag: none; }
/* prev/next arrows — reuse the module arrow language */
.rg-pdp__nav {
	position: absolute; top: 50%; transform: translateY(-50%); z-index: 4;
	width: 2.9rem; height: 2.9rem; display: grid; place-items: center;
	border: 0; border-radius: 50%; cursor: pointer;
	background: rgba(0,0,0,0.10); color: var(--rg-violet);
	-webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
	transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out), opacity var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur) var(--rg-ease-out);
}
.rg-pdp__nav:hover { background: var(--rg-violet); color: #fff; }
.rg-pdp__nav--prev { left: 0.8rem; }
.rg-pdp__nav--next { right: 0.8rem; }
.rg-pdp__nav:disabled { opacity: 0; pointer-events: none; }
.rg-pdp__badge { position: absolute; top: 1rem; left: 1rem; z-index: 4; padding: 0.35em 1em; border-radius: var(--rg-r-pill); background: var(--rg-pink); color: #fff; font-weight: 900; text-transform: uppercase; letter-spacing: 0.05em; font-size: 0.72rem; }
.rg-pdp__wish { position: absolute; top: 1rem; right: 1rem; z-index: 4; width: 2.8rem; height: 2.8rem; display: grid; place-items: center; border: 0; border-radius: var(--rg-r-pill); background: rgba(0,0,0,0.08); color: var(--rg-violet); backdrop-filter: blur(4px); cursor: pointer; transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur) var(--rg-ease-out); }
.rg-pdp__wish:hover { background: var(--rg-violet); color: #fff; transform: scale(1.08); }
.rg-pdp__wish.is-active svg { fill: var(--rg-violet); }

.rg-pdp__thumbs { display: flex; gap: 0.7rem; margin-top: 1rem; flex-wrap: wrap; }
.rg-pdp__thumb { width: 4.5rem; height: 4.5rem; padding: 0; border-radius: 12px; overflow: hidden; cursor: pointer; background: rgba(255,255,255,0.9); border: 2px solid transparent; transition: border-color var(--rg-dur) var(--rg-ease-out); }
.rg-pdp__thumb img { width: 100%; height: 100%; object-fit: contain; padding: 8%; }
.rg-pdp__thumb.is-active { border-color: var(--rg-volt); }

/* ---- BUY BOX ---- */
.rg-pdp__buy-inner {
	padding: clamp(1.8rem, 4vw, 3rem);
	border-radius: var(--rg-r-xl);
	background: rgba(255,255,255,0.03);
	-webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
	border: 1px solid rgba(255,255,255,0.08);
}
.rg-pdp__eyebrow { display: inline-block; margin-bottom: 0.9em; padding: 0.4em 1.1em; border-radius: var(--rg-r-pill); background: rgba(169,207,63,0.12); border: 1px solid rgba(169,207,63,0.4); color: var(--rg-volt); font-weight: 800; text-transform: uppercase; letter-spacing: 0.16em; font-size: 0.72rem; }
.rg-pdp__title {
	margin: 0 0 0.4em; font-weight: 900; line-height: 0.98; letter-spacing: -0.015em; text-transform: uppercase;
	font-size: clamp(2rem, 3.4vw, 3.4rem);
	background: linear-gradient(100deg, var(--rg-volt) 0%, var(--rg-violet) 25%, #fff 50%, var(--rg-violet) 75%, var(--rg-volt) 100%);
	background-size: 200% 100%; background-position: 100% 0;
	-webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent;
	animation: rg-title-gleam 6s linear infinite;
}
@media (prefers-reduced-motion: reduce) { .rg-pdp__title { animation: none; background-position: 50% 0; } }
.rg-pdp__rating { display: inline-flex; align-items: center; gap: 0.6rem; margin-bottom: 1em; text-decoration: none; cursor: pointer; }
.rg-pdp__rating .rg-pdp__rcount { transition: color var(--rg-dur) var(--rg-ease-out); }
.rg-pdp__rating:hover .rg-pdp__rcount { color: var(--rg-volt); text-decoration: underline; }
.rg-pdp__stars { position: relative; font-size: 1.1rem; letter-spacing: 0.1em; color: rgba(255,255,255,0.15); }
.rg-pdp__stars::before { content: "★★★★★"; position: absolute; inset: 0; width: var(--rate); overflow: hidden; color: var(--rg-volt); }
.rg-pdp__rcount { color: var(--rg-ink-muted); font-size: 0.85rem; font-weight: 700; }
.rg-pdp__price { color: var(--rg-volt); font-weight: 900; font-size: clamp(1.6rem, 2.6vw, 2.4rem); margin-bottom: 1em; }
.rg-pdp__price del { color: var(--rg-ink-muted); font-weight: 600; font-size: 0.7em; margin-right: 0.4em; }
.rg-pdp__price ins { text-decoration: none; }

/* ---- Rogue Points pill (product cards + buy box) ---- */
.rg-points-pill {
	display: inline-flex; align-items: center; gap: 0.45em;
	padding: 0.32em 0.75em 0.32em 0.5em;
	border-radius: var(--rg-r-pill, 999px);
	background: rgba(169, 207, 63, 0.10);
	border: 1px solid rgba(169, 207, 63, 0.32);
	line-height: 1;
	white-space: nowrap;
}
.rg-points-pill__mark { width: 1.1em; height: 1.1em; object-fit: contain; display: block; }
.rg-points-pill__text {
	font-size: 0.72rem; font-weight: 700; letter-spacing: 0.01em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.75);
	white-space: nowrap;          /* keep it a single elongated line (like the homepage) */
}
.rg-points-pill { flex-wrap: nowrap; max-width: none; }
.rg-points-pill__text strong { color: var(--rg-volt); font-weight: 900; }
/* card variant: OVERLAID on the bottom of the product image (inside __media, which
   is overflow:hidden so it clips to the image box). Frosted so it reads on the light
   shelf. Raised above the card's stretched link so it never intercepts the click. */
.rg-pcarousel-card__media .rg-points-pill--card {
	position: absolute; left: 0.7rem; bottom: 0.7rem; z-index: 3;
	width: max-content; max-width: none;   /* single elongated line — do NOT cap (a cap forces a wrap) */
	background: rgba(20, 22, 16, 0.62);
	border-color: rgba(169, 207, 63, 0.45);
	-webkit-backdrop-filter: blur(8px) saturate(130%);
	backdrop-filter: blur(8px) saturate(130%);
	pointer-events: none;   /* purely informational — let clicks fall through to the card */
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.28);
}
/* single elongated line; shrink a touch so the longest ("EARN FROM +N ROGUE POINTS")
   fits on one row even on the narrower shop grid cards */
.rg-points-pill--card .rg-points-pill__text { font-size: 0.6rem; letter-spacing: 0; color: rgba(255,255,255,0.85); }
.rg-points-pill--card { padding: 0.3em 0.7em 0.3em 0.45em; gap: 0.35em; }
/* HARD guarantee the card pill stays on ONE elongated line (was wrapping on the
   narrower shop grid). Children must not shrink; text must not wrap. */
.rg-points-pill--card { flex-wrap: nowrap !important; white-space: nowrap !important; }
.rg-points-pill--card .rg-points-pill__mark { flex: 0 0 auto; }
.rg-points-pill--card .rg-points-pill__text { flex: 0 0 auto; white-space: nowrap !important; }
.rg-points-pill--card .rg-points-pill__text strong { white-space: nowrap; }

/* Homepage "Simple & Secure" section headline — big + white (the .rg-page .rg-h2
   white rule only covers the content pages, so scope it here for the homepage). */
.rg-ss .rg-h2 {
	margin: 0 0 0.4em; font-weight: 900; text-transform: uppercase;
	letter-spacing: -0.01em; line-height: 1.0;
	font-size: clamp(2.4rem, 6vw, 4.5rem); color: #fff;
	text-align: left;
}
.rg-ss .rg-eyebrow {
	margin: 0 0 0.8em; font-weight: 800; letter-spacing: 0.28em; text-transform: uppercase;
	font-size: clamp(0.72rem, 1vw, 0.85rem); color: var(--rg-volt);
	text-align: left;
}
/* whole advantage/ss header block left-aligned (eyebrow + headline + lead) */
.rg-about-advantage__head { text-align: left; }
/* buy-box variant: wrapper flex-row keeps the (unchanged) price block + pill on one
   line, centered, wrapping the pill under the price on tight widths */
.rg-pdp__price-row { display: flex; align-items: center; flex-wrap: wrap; gap: 0.5rem 0.9rem; margin-bottom: 1em; }
.rg-pdp__price-row .rg-pdp__price { margin-bottom: 0; }
.rg-points-pill--buy { padding: 0.42em 0.95em 0.42em 0.62em; }
.rg-points-pill--buy .rg-points-pill__text { font-size: 0.78rem; }

/* ---- Bulk-discount tier ladder (buy box) ---- */
.rg-bulk {
	margin: 1.4em 0;
	padding: 1.1em 1.2em;
	border-radius: var(--rg-r-md, 16px);
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(255, 255, 255, 0.09);
}
.rg-bulk__head { display: flex; align-items: center; gap: 0.55em; margin-bottom: 0.9em; }
.rg-bulk__icon { color: var(--rg-volt); display: inline-flex; }
.rg-bulk__title {
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em;
	font-size: clamp(0.72rem, 1vw, 0.82rem); color: #fff;
}
.rg-bulk__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.5em; }
.rg-bulk__tier {
	display: grid; grid-template-columns: 4.2em 1fr auto; align-items: center; gap: 0.7em;
	padding: 0.5em 0.7em; border-radius: 12px;
	background: rgba(255, 255, 255, 0.02);
	border: 1px solid rgba(255, 255, 255, 0.07);
	transition: background 0.3s var(--rg-ease-out), border-color 0.3s var(--rg-ease-out), transform 0.3s var(--rg-ease-out);
}
.rg-bulk__qty { font-weight: 800; color: rgba(255,255,255,0.85); font-size: 0.85rem; white-space: nowrap; }
.rg-bulk__bar { position: relative; height: 6px; border-radius: 6px; background: rgba(255,255,255,0.08); overflow: hidden; }
.rg-bulk__bar-fill { position: absolute; inset: 0 auto 0 0; border-radius: 6px; background: linear-gradient(90deg, var(--rg-violet), var(--rg-volt)); opacity: 0.5; transition: opacity 0.3s ease; }
.rg-bulk__save { display: flex; flex-direction: column; align-items: flex-end; line-height: 1.1; }
.rg-bulk__pct { font-weight: 900; color: var(--rg-volt); font-size: 0.95rem; }
.rg-bulk__each { font-size: 0.62rem; color: rgba(255,255,255,0.5); font-weight: 700; }
.rg-bulk__each del { display: none; }
/* active (qty ≥ this tier) */
.rg-bulk__tier.is-active {
	background: rgba(169, 207, 63, 0.10);
	border-color: rgba(169, 207, 63, 0.35);
}
.rg-bulk__tier.is-active .rg-bulk__bar-fill { opacity: 1; }
/* the current best tier — emphasised */
.rg-bulk__tier.is-current {
	background: rgba(169, 207, 63, 0.16);
	border-color: var(--rg-volt);
	transform: translateX(2px);
	box-shadow: 0 0 0 1px rgba(169,207,63,0.25), 0 6px 18px rgba(169,207,63,0.12);
}
.rg-bulk__note {
	margin: 0.85em 0 0; text-align: center;
	font-size: 0.72rem; color: rgba(255,255,255,0.6); font-weight: 700;
}
.rg-bulk__note strong { color: var(--rg-volt); }
/* clickable tiers — clicking loads the threshold qty into the stepper */
.rg-bulk__tier.is-clickable { cursor: pointer; }
.rg-bulk__tier.is-clickable:hover {
	background: rgba(169, 207, 63, 0.08);
	border-color: rgba(169, 207, 63, 0.30);
}
.rg-bulk__tier.is-clickable:focus-visible {
	outline: 2px solid var(--rg-volt); outline-offset: 2px;
}
@keyframes rg-bulk-pulse {
	0%   { box-shadow: 0 0 0 0 rgba(169,207,63,0.5); }
	100% { box-shadow: 0 0 0 0.7em rgba(169,207,63,0); }
}
.rg-bulk__tier.rg-bulk-pulse { animation: rg-bulk-pulse 0.55s ease-out; }

/* ---- Limited-time offer countdown clock ---- */
.rg-offer {
	margin: 0 0 1.5em; padding: 1em 1.2em;
	border-radius: var(--rg-r-md, 16px);
	background: rgba(219, 30, 121, 0.08);
	border: 1px solid rgba(219, 30, 121, 0.30);
	background-image: radial-gradient(120% 140% at 0% 0%, rgba(219,30,121,0.14), transparent 55%);
}
.rg-offer__label {
	display: inline-flex; align-items: center; gap: 0.5em;
	color: var(--rg-pink, #DB1E79);
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em;
	font-size: clamp(0.68rem, 1vw, 0.8rem);
	margin-bottom: 0.7em;
}
.rg-offer__pulse {
	width: 0.55em; height: 0.55em; border-radius: 50%;
	background: var(--rg-pink, #DB1E79);
	box-shadow: 0 0 0 0 rgba(219,30,121,0.6);
	animation: rg-offer-pulse 1.6s ease-out infinite;
}
@keyframes rg-offer-pulse {
	0%   { box-shadow: 0 0 0 0 rgba(219,30,121,0.55); }
	70%  { box-shadow: 0 0 0 0.7em rgba(219,30,121,0); }
	100% { box-shadow: 0 0 0 0 rgba(219,30,121,0); }
}
.rg-offer__clock { display: flex; align-items: flex-start; gap: 0.35em; }
.rg-offer__unit {
	display: flex; flex-direction: column; align-items: center;
	min-width: 3.1em; padding: 0.35em 0.15em;
	background: rgba(255,255,255,0.05);
	border: 1px solid rgba(255,255,255,0.10);
	border-radius: 10px;
}
.rg-offer__num {
	color: #fff; font-weight: 900; line-height: 1;
	font-size: clamp(1.15rem, 2.2vw, 1.6rem);
	font-variant-numeric: tabular-nums;
}
.rg-offer__cap {
	margin-top: 0.35em; color: rgba(255,255,255,0.55);
	font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.1em; font-weight: 700;
}
.rg-offer__sep {
	color: rgba(255,255,255,0.35); font-weight: 900;
	font-size: clamp(1.15rem, 2.2vw, 1.6rem); line-height: 1; padding-top: 0.28em;
}

.rg-pdp__short { color: rgba(255,255,255,0.85); line-height: 1.7; margin-bottom: 1.5em; font-size: clamp(0.95rem, 1.1vw, 1.05rem); }
.rg-pdp__short p { margin: 0 0 0.6em; }

/* trust row */
.rg-pdp__trust { list-style: none; display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; margin: 1.5rem 0 0; padding: 1.5rem 0 0; border-top: 1px solid rgba(255,255,255,0.08); }
.rg-pdp__trust li { display: inline-flex; align-items: center; gap: 0.5rem; color: var(--rg-ink-muted); font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; font-size: 0.75rem; }
.rg-pdp__trust svg { color: var(--rg-volt); }

/* ---- Woo add-to-cart form — clean 3-row layout ---- */
/* Flex column so the variation price + stock (which WooCommerce injects at the BOTTOM
   of the form, after the add-to-cart row) can be ordered above the BOXES selector.
   They only appear once a variation is chosen — before that the theme's own price row
   higher up is what shows, so nothing is duplicated. */
.rg-pdp__form {
	margin-top: 1.5rem;
	display: flex;
	flex-direction: column;
	align-items: stretch;
}
.rg-pdp__form .variations { order: 1; }          /* BOXES row */
/* The price + stock live INSIDE .single_variation_wrap (not as direct children of the
   form), so ordering .woocommerce-variation alone never moved them. Lift the wrap
   above the BOXES row, then inside it put the variation data before the cart row. */
.rg-pdp__form .single_variation_wrap {
	order: 0;
	display: flex;
	flex-direction: column;
}
.rg-pdp__form .single_variation_wrap .single_variation { order: 0; }
.rg-pdp__form .single_variation_wrap .woocommerce-variation-add-to-cart { order: 2; }

/* ROW 1: variation selector — Boxes label (centered) + full-width dropdown */
.rg-pdp__form .variations { display: block; width: 100%; margin: 0 0 0.4rem; border: 0; }
.rg-pdp__form .variations tbody, .rg-pdp__form .variations tr { display: block; width: 100%; }
.rg-pdp__form .variations tr { display: flex; align-items: center; gap: 1rem; }
.rg-pdp__form .variations th.label {
	flex: 0 0 auto; width: 4.5rem; padding: 0; margin: 0;
	color: var(--rg-white); font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.8rem;
}
.rg-pdp__form .variations th.label label { margin: 0; }
/* value cell: dropdown + CLEAR side by side on one row */
.rg-pdp__form .variations td.value { flex: 1; min-width: 0; padding: 0; margin: 0; display: flex; align-items: center; gap: 0.8rem; }
.rg-pdp__form .variations .rg-select--pdp { flex: 1; min-width: 0; }
.rg-pdp__form .variations .rg-select--pdp .rg-select__btn {
	width: 100%; justify-content: space-between; text-align: left;
	padding: 1rem 1.3rem; font-size: 0.95rem;
	background: rgba(255,255,255,0.05); border: 1px solid rgba(169,207,63,0.35); color: var(--rg-white);
}
.rg-pdp__form .variations .rg-select--pdp .rg-select__menu { width: 100%; max-width: none; }
.rg-pdp__form .variations .rg-select--pdp .rg-select__opt { text-align: left; }

/* CLEAR link — on the RIGHT of the dropdown, same row (Woo shows it only after a pick) */
.rg-pdp__form .variations td.value .reset_variations {
	flex: 0 0 auto; white-space: nowrap; margin: 0;
	color: var(--rg-violet) !important; font-size: 0.75rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em;
}
.rg-pdp__form .variations td.value .reset_variations:hover { color: var(--rg-volt) !important; }

.rg-pdp__form .woocommerce-variation-price { color: var(--rg-volt); font-weight: 900; font-size: 1.4rem; margin: 0 0 1rem; }
/* stock / availability → Rogue pill: block, heavy, centered */
.rg-pdp__form .woocommerce-variation-availability,
.rg-pdp__form .stock,
.rg-pdp__buy-inner .stock {
	display: block; width: max-content; margin: 0 0 1.2rem;
	padding: 0.45em 1.1em; border-radius: var(--rg-r-pill);
	background: rgba(169,207,63,0.12); border: 1px solid rgba(169,207,63,0.35);
	color: var(--rg-volt) !important;
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.78rem;
	text-align: center;
}
/* out of stock → pink */
.rg-pdp__form .out-of-stock, .rg-pdp__buy-inner .out-of-stock {
	background: rgba(219,30,121,0.12) !important; border-color: rgba(219,30,121,0.4) !important; color: var(--rg-pink) !important;
}
.rg-pdp__form .single_variation_wrap { margin-top: 1rem; }
.rg-pdp__form .reset_variations_alert { display: none; }

/* VARIABLE product: form.cart stacks (variations table on top, then the wrap).
   Only the INNER qty+button wrap is a flex row. */
.rg-pdp__form form.variations_form.cart { display: block; }
.rg-pdp__form .woocommerce-variation-add-to-cart {
	display: flex; flex-wrap: nowrap; align-items: stretch; gap: 0.8rem;
}
/* SIMPLE product: form.cart itself holds qty + button → flex row */
.rg-pdp__form form.cart:not(.variations_form) {
	display: flex; flex-wrap: nowrap; align-items: stretch; gap: 0.8rem;
}
.rg-pdp__form .quantity {
	flex: 0 0 auto; display: inline-flex; align-items: stretch; gap: 0.3rem;
	padding: 0.4rem 0.5rem; border-radius: var(--rg-r-lg);
	background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1);
}
.rg-pdp__form .quantity .qty {
	width: 2.4rem; text-align: center; background: transparent; border: 0;
	color: var(--rg-white); font: inherit; font-weight: 800; font-size: 1.1rem; -moz-appearance: textfield;
}
.rg-pdp__form .quantity .qty::-webkit-outer-spin-button, .rg-pdp__form .quantity .qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
/* stacked +/- column: + on top, − on bottom */
.rg-qty-steps { display: flex; flex-direction: column; gap: 0.25rem; justify-content: center; }
.rg-pdp__form .single_add_to_cart_button,
.rg-pdp__form button.single_add_to_cart_button {
	flex: 1 1 auto; min-width: 0;
	padding: 1.1rem 1.5rem; border: 0; border-radius: var(--rg-r-pill);
	background: linear-gradient(120deg, var(--rg-pink) 0%, var(--rg-violet) 100%); color: #fff;
	font: inherit; font-weight: 900; text-transform: uppercase; letter-spacing: 0.05em; cursor: pointer;
	box-shadow: 0 1vh 3vh rgba(219,30,121,0.35);
	position: relative; will-change: transform;
	transition: box-shadow 0.4s var(--rg-ease-out);   /* transform via magnetic JS */
}
.rg-pdp__form .single_add_to_cart_button:hover {
	background: linear-gradient(120deg, var(--rg-volt) 0%, var(--rg-violet) 100%); color: #000;
	box-shadow: 0 1.5vh 4vh rgba(219,30,121,0.55), 0 0 24px rgba(123,74,168,0.5);
}
.rg-pdp__form .single_add_to_cart_button:disabled { opacity: 0.5; cursor: not-allowed; box-shadow: none; }

/* ---- Description panel ---- */
.rg-pdp__desc {
	margin-top: clamp(3rem, 8vh, 6rem);
	padding: clamp(2rem, 5vw, 4rem);
	border-radius: var(--rg-r-xl);
	background: rgba(255,255,255,0.03);
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
	border: 1px solid rgba(255,255,255,0.08);
}
.rg-pdp__desc-title { margin: 0 0 1.2em; color: var(--rg-white); font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em; font-size: clamp(1.5rem, 2.4vw, 2.2rem); }
.rg-pdp__desc-body { color: var(--rg-ink-muted); line-height: 1.75; font-size: clamp(0.95rem, 1.1vw, 1.1rem); }
.rg-pdp__desc-body p { margin: 0 0 1em; }
.rg-pdp__desc-body strong { color: var(--rg-white); }

/* ---- Related ---- */
.rg-pdp__related { margin-top: clamp(4rem, 10vh, 8rem); }
.rg-pdp__related-title { margin: 0 0 clamp(1.5rem, 4vh, 3rem); color: var(--rg-white); font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em; font-size: clamp(1.6rem, 3vw, 2.6rem); }

/* ---- responsive ---- */
@media (max-width: 900px) {
	.rg-pdp__hero {
		grid-template-columns: minmax(0, 1fr);   /* minmax(0,…) so the column can shrink */
		gap: clamp(1.5rem, 5vh, 2.5rem);         /* vertical only once stacked */
		justify-items: stretch;
	}
	.rg-pdp__gallery {
		position: relative; top: 0;
		/* a grid item will not shrink below its content unless min-width is cleared —
		   that is what let the square stage push past the section's right gutter.
		   No `overflow: hidden` here: the thumbnail row deliberately breaks out to
		   100vw and would be clipped back to the container by it. */
		min-width: 0;
		max-width: 100%;
	}
	.rg-pdp__hero { min-width: 0; max-width: 100%; }
	.rg-pdp__hero > * { min-width: 0; max-width: 100%; }
	.rg-pdp__related .rg-shop__grid.products { grid-template-columns: repeat(2, 1fr); }
	/* Variation price + stock sit ABOVE the Boxes row and must flow normally — the
	   earlier absolute positioning (used for the Clear link) made them overlay. */
	.rg-pdp__form .woocommerce-variation {
		order: -2;
		position: static;
		display: block;
		width: 100%;
		margin-bottom: 0.4rem;
	}
	.rg-pdp__form .woocommerce-variation-price {
		position: static;
		display: block;
		margin: 0 0 0.6rem;
	}
	.rg-pdp__form .woocommerce-variation-availability,
	.rg-pdp__form .stock {
		position: static;
		margin: 0 0 0.9rem;
	}
	/* hide the duplicate theme price once a variation supplies its own */
	.rg-pdp__form:has(.woocommerce-variation-price:not(:empty)) ~ * .rg-pdp__price-row { display: none; }


	/* ---- BUY BOX (mobile) ---- */

	/* 1. Slimmer quantity control: just the number and the +/- steppers. */
	.rg-pdp__form .quantity {
		padding: 0.25rem 0.35rem;
		gap: 0.15rem;
		border-radius: var(--rg-r-md, 14px);
	}
	.rg-pdp__form .quantity .qty {
		width: 1.7rem;
		font-size: 1rem;
	}
	.rg-qty-steps { gap: 0.15rem; }
	.rg-qty-btn { width: 1.35rem; height: 1.35rem; font-size: 0.9rem; }
	/* the button takes the space the qty box gives back */
	.rg-pdp__form .single_add_to_cart_button,
	.rg-pdp__form button.single_add_to_cart_button {
		padding: 1rem 1.2rem;
		font-size: 0.95rem;
	}

	/* 2 + 3. Variations stack: label row on top (with Clear on its right when a
	   variation is chosen), dropdown full-width beneath. */
	.rg-pdp__form .variations tr {
		display: grid;
		grid-template-columns: 1fr auto;   /* label | clear */
		grid-template-areas:
			"label clear"
			"value value";
		align-items: center;
		gap: 0.5rem 0.8rem;
	}
	.rg-pdp__form .variations th.label { grid-area: label; }
	.rg-pdp__form .variations td.value {
		grid-area: value;
		display: block;          /* dropdown gets the full row */
		width: 100%;
	}
	.rg-pdp__form .variations .rg-select--pdp { width: 100%; }
	/* Clear sits beside the BOXES label. WooCommerce toggles this link with jQuery
	   .show()/.hide(), which writes an inline `display:` — so it must be positioned
	   without relying on display, and re-shown as inline-block rather than the inline
	   that .show() restores. */
	.rg-pdp__form .variations tr { position: relative; }
	.rg-pdp__form .variations td.value .reset_variations {
		position: absolute;
		top: 0;
		right: 0;
		z-index: 2;
		line-height: 1.6;
		white-space: nowrap;
	}
	/* beat jQuery's inline display:inline when it re-shows the link */
	.rg-pdp__form .variations td.value .reset_variations[style*="display"] {
		display: inline-block !important;
	}
	/* keep the label clear of the Clear link */
	.rg-pdp__form .variations th.label { padding-right: 4.5rem; }

	/* Pull the breadcrumbs — and everything under them — up by 15vw. */
	.rg-pdp {
		position: relative;
		/* Centre exactly like .rg-container does on every other page — the PDP never
		   used that class, so it had no symmetric gutters and the whole section sat
		   off to one side. Width + auto margins, NOT padding: padding on a full-width
		   block cannot centre anything. */
		box-sizing: border-box;
		width: min(var(--rg-container), 92vw);
		margin-inline: auto;
		padding: calc(clamp(6rem, 12vh, 10rem) - 15vw) 0 clamp(4rem, 10vh, 8rem);
	}
	/* crumbs line up with the 90vw content below them */
	.rg-pdp__crumbs { width: auto; margin-inline: 0; }


	/* The PDP section has no .rg-container, so it had no side gutters — content ran to
	   the edges and anything centred with a vw width sat off-centre against it. Give
	   the section real padding and let everything inside be plain 100% width. */
	.rg-pdp__hero { width: auto; margin-inline: 0; }
	.rg-pdp__stage {
		width: auto;
		max-width: 100%;
	}
	.rg-pdp__slide { flex: 0 0 100%; width: 100%; min-width: 0; }
	/* Let the browser do the swiping natively. `touch-action: pan-y pinch-zoom` on the
	   track tells the browser to keep horizontal gestures for itself — which is exactly
	   backwards for a horizontal carousel: it hands vertical to the page and refuses
	   the horizontal drag. `pan-x` claims horizontal for this scroller instead. */
	/* `pan-x` alone hands the browser ONLY horizontal panning and blocks vertical, so
	   you could not scroll the page by dragging over the image. Listing both axes lets
	   the browser pick per gesture: horizontal swipes the gallery, vertical scrolls
	   the page. */
	.rg-pdp__stage-track {
		touch-action: pan-x pan-y !important;
		overflow-x: auto !important;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior-x: contain;
	}
	/* the base rule pads the image 10% on every side, which on a phone leaves the
	   product floating in a large white box — tighten it so the product fills more */
	.rg-pdp__stage-img { max-width: 100%; padding: 4%; }
	/* Thumbnails: one row that scrolls horizontally instead of wrapping to two lines.
	   `flex-wrap: nowrap` + overflow-x, with the items locked to their size so they
	   cannot be squashed to fit. */
	/* centre the gallery column itself — the hero grid left it sitting off to the right */
	.rg-pdp__gallery { justify-self: center; width: 100%; }
	.rg-pdp__thumbs {
		/* Break out of the centred container so the row runs to the screen edge instead
		   of stopping at the gutter mid-thumbnail — that cut-off is the affordance that
		   tells you there is more to scroll. The right padding keeps the LAST thumb
		   clear of the edge once you reach the end. */
		width: 100vw;
		max-width: 100vw;
		margin-left: calc(50% - 50vw);
		margin-right: calc(50% - 50vw);
		padding-left: calc((100vw - min(var(--rg-container), 92vw)) / 2);
		padding-right: calc((100vw - min(var(--rg-container), 92vw)) / 2);
		scroll-padding-left: calc((100vw - min(var(--rg-container), 92vw)) / 2);
		flex-wrap: nowrap !important;   /* base rule sets `wrap`, which split the row */
		overflow-x: auto;
		overflow-y: hidden;
		scroll-snap-type: x proximity;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior-x: contain;
		touch-action: pan-x;
		scrollbar-width: none;
		padding-bottom: 0.2rem;
	}
	.rg-pdp__thumbs::-webkit-scrollbar { display: none; }
	.rg-pdp__thumb {
		flex: 0 0 auto;
		width: 3.9rem;
		height: 3.9rem;
		scroll-snap-align: start;
	}
}
@media (max-width: 560px) {
	.rg-pdp__related .rg-shop__grid.products { grid-template-columns: 1fr; }
	.rg-pdp__form form.cart:not(.variations_form),
	.rg-pdp__form .woocommerce-variation-add-to-cart { flex-direction: row; align-items: stretch; }
}

/* ---- PDP: bigger GRADIENT sale badge (was small solid pink) ---- */
.rg-pdp__badge {
	position: absolute; top: 1rem; left: 1rem; z-index: 4;
	padding: 0.6em 1.2em; border-radius: var(--rg-r-pill);
	background: linear-gradient(120deg, var(--rg-pink) 0%, var(--rg-violet) 100%);
	color: #fff; font-weight: 900; text-transform: uppercase; letter-spacing: 0.04em;
	font-size: clamp(1rem, 1.5vw, 1.5rem);
	box-shadow: 0 0 26px rgba(219,30,121,0.5);
}

/* ---- PDP marketing: benefits bar ---- */
.rg-pdp__benefits {
	display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(1rem, 2vw, 2rem);
	margin-top: clamp(2.5rem, 6vh, 4rem);
	padding: clamp(1.2rem, 3vh, 2rem) clamp(1rem, 2.5vw, 2rem);
	border-radius: var(--rg-r-lg); border: 1px solid rgba(255,255,255,0.08);
	background: rgba(255,255,255,0.03); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
.rg-pdp__benefit { display: flex; align-items: center; gap: 0.8rem; }
.rg-pdp__benefit-ic { flex: 0 0 auto; color: var(--rg-volt); display: inline-flex; }
.rg-pdp__benefit span span, .rg-pdp__benefit > span:last-child { display: flex; flex-direction: column; min-width: 0; }
.rg-pdp__benefit strong { color: var(--rg-white); font-weight: 800; text-transform: uppercase; letter-spacing: 0.02em; font-size: clamp(0.78rem, 0.95vw, 0.9rem); }
.rg-pdp__benefit em { color: var(--rg-ink-muted); font-style: normal; font-size: clamp(0.7rem, 0.82vw, 0.8rem); }

/* ---- PDP details ACCORDION ---- */
.rg-pdp__acc { margin-top: clamp(3rem, 8vh, 6rem); }
.rg-pdp__acc-heading { margin: 0 0 clamp(1.5rem, 4vh, 2.5rem); color: var(--rg-white); font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em; font-size: clamp(1.5rem, 2.6vw, 2.4rem); }
.rg-pdp__acc-item {
	border: 1px solid rgba(255,255,255,0.10); border-radius: var(--rg-r-lg);
	background: rgba(255,255,255,0.03); margin-bottom: 1rem; overflow: hidden;
	transition: border-color var(--rg-dur) var(--rg-ease-out), background var(--rg-dur) var(--rg-ease-out);
}
.rg-pdp__acc-item.is-open { border-color: rgba(169,207,63,0.45); background: rgba(169,207,63,0.05); }
.rg-pdp__acc-q { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 1.2rem; padding: clamp(1rem, 2.4vh, 1.5rem) clamp(1.2rem, 2.6vw, 2rem); background: transparent; border: 0; cursor: pointer; text-align: left; color: var(--rg-white); font: inherit; }
.rg-pdp__acc-q span:first-child { font-weight: 800; text-transform: uppercase; letter-spacing: 0.01em; font-size: clamp(0.95rem, 1.3vw, 1.2rem); }
.rg-pdp__acc-item.is-open .rg-pdp__acc-q span:first-child { color: var(--rg-volt); }
.rg-pdp__acc-icon { position: relative; flex: 0 0 auto; width: 24px; height: 24px; border-radius: 50%; background: rgba(255,255,255,0.08); transition: background var(--rg-dur) var(--rg-ease-out); }
.rg-pdp__acc-item.is-open .rg-pdp__acc-icon { background: var(--rg-volt); }
.rg-pdp__acc-icon span { position: absolute; top: 50%; left: 50%; width: 44%; height: 2px; background: #fff; border-radius: 2px; transform: translate(-50%, -50%); transition: transform var(--rg-dur) var(--rg-ease-out), background var(--rg-dur) var(--rg-ease-out); }
.rg-pdp__acc-icon span:last-child { transform: translate(-50%, -50%) rotate(90deg); }
.rg-pdp__acc-item.is-open .rg-pdp__acc-icon span { background: #000; }
.rg-pdp__acc-item.is-open .rg-pdp__acc-icon span:last-child { transform: translate(-50%, -50%) rotate(0deg); }
.rg-pdp__acc-a {
	max-height: 0; overflow: hidden; opacity: 0;
	/* slower + smoother open/close */
	transition: max-height 0.7s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.6s ease;
}
.rg-pdp__acc-a[hidden] { display: block; }   /* keep in flow so max-height can animate */
.rg-pdp__acc-item.is-open .rg-pdp__acc-a { max-height: 100vh; opacity: 1; }
.rg-pdp__acc-inner { transform: translateY(-0.6rem); transition: transform 0.7s cubic-bezier(0.22, 1, 0.36, 1); }
.rg-pdp__acc-item.is-open .rg-pdp__acc-inner { transform: translateY(0); }
.rg-pdp__acc-inner { padding: 0 clamp(1.2rem, 2.6vw, 2rem) clamp(1.2rem, 2.6vh, 1.8rem); color: var(--rg-ink-muted); line-height: 1.7; font-size: clamp(0.95rem, 1.1vw, 1.05rem); }
.rg-pdp__acc-inner strong { color: var(--rg-white); }

/* ---- PDP mid-page CTA band ---- */
.rg-pdp__cta-band {
	position: relative; overflow: hidden;
	display: flex; align-items: center; justify-content: space-between; gap: 2rem; flex-wrap: wrap;
	margin-top: clamp(3rem, 8vh, 6rem);
	padding: clamp(2rem, 5vh, 3.5rem) clamp(1.8rem, 4vw, 3.5rem);
	border-radius: var(--rg-r-xl);
	background: linear-gradient(120deg, rgba(123,74,168,0.4) 0%, var(--rg-black) 70%);
	border: 1px solid rgba(123,74,168,0.3);
}
.rg-pdp__cta-glow { position: absolute; inset: 0; background: radial-gradient(40% 120% at 80% 50%, rgba(169,207,63,0.28), transparent 70%); pointer-events: none; }
.rg-pdp__cta-body { position: relative; z-index: 1; }
.rg-pdp__cta-title { margin: 0 0 0.3em; color: var(--rg-white); font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em; line-height: 1.05; font-size: clamp(1.4rem, 2.6vw, 2.4rem); }
.rg-pdp__cta-sub { margin: 0; color: rgba(255,255,255,0.8); font-weight: 600; font-size: clamp(0.9rem, 1.1vw, 1.05rem); }
.rg-pdp__cta-btn { position: relative; z-index: 1; flex: 0 0 auto; }

/* PDP related carousel — inherits .rg-carousel; just reset its heavy bottom pad */
.rg-pdp__related.rg-carousel { padding: clamp(3rem, 8vh, 6rem) 0 0; }

@media (max-width: 700px) {
	.rg-pdp__benefits { grid-template-columns: 1fr 1fr; }
	.rg-pdp__cta-band { flex-direction: column; align-items: flex-start; }
}

/* ============================================================
   PDP REVIEWS — dark-glass restyle of Woo's default comments/reviews block.
   ============================================================ */
.rg-pdp__reviews { margin-top: clamp(3rem, 8vh, 6rem); }
.rg-pdp__reviews #reviews { color: var(--rg-white); }
.rg-pdp__reviews .woocommerce-Reviews-title {
	margin: 0 0 clamp(1.5rem, 4vh, 2.5rem);
	color: var(--rg-white); font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em;
	font-size: clamp(1.5rem, 2.6vw, 2.4rem);
}
.rg-pdp__reviews .woocommerce-noreviews {
	margin: 0 0 2rem; padding: clamp(1.4rem, 3vh, 2rem);
	border-radius: var(--rg-r-lg); border: 1px solid rgba(255,255,255,0.08);
	background: rgba(255,255,255,0.03);
	color: var(--rg-ink-muted);
}

/* existing reviews list */
.rg-pdp__reviews .commentlist { list-style: none; margin: 0 0 2.5rem; padding: 0; display: grid; gap: 1rem; }
.rg-pdp__reviews .commentlist li.review, .rg-pdp__reviews .commentlist li.comment {
	padding: clamp(1.2rem, 3vw, 2rem); border-radius: var(--rg-r-lg);
	border: 1px solid rgba(255,255,255,0.08); background: rgba(255,255,255,0.03);
}
.rg-pdp__reviews .comment_container { display: flex; gap: 1rem; }
.rg-pdp__reviews .avatar { border-radius: 50%; width: 3rem; height: 3rem; }
.rg-pdp__reviews .comment-text { flex: 1; }
.rg-pdp__reviews .woocommerce-review__author { color: var(--rg-white); font-weight: 800; }
.rg-pdp__reviews .woocommerce-review__dash { color: var(--rg-ink-muted); }
.rg-pdp__reviews .woocommerce-review__published-date { color: var(--rg-ink-muted); font-size: 0.85rem; }
.rg-pdp__reviews .description { color: var(--rg-ink-muted); line-height: 1.6; }

/* star ratings (display) → volt */
.rg-pdp__reviews .star-rating { color: var(--rg-volt); }
.rg-pdp__reviews .star-rating::before { color: rgba(255,255,255,0.2); }

/* review FORM — the "leave a review" panel */
.rg-pdp__reviews #review_form_wrapper { }
.rg-pdp__reviews #respond.comment-respond {
	padding: clamp(1.6rem, 4vw, 2.5rem); border-radius: var(--rg-r-xl);
	border: 1px solid rgba(255,255,255,0.08); background: rgba(255,255,255,0.03);
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
}
.rg-pdp__reviews .comment-reply-title { color: var(--rg-white); font-weight: 800; text-transform: uppercase; letter-spacing: 0.02em; font-size: 1.1rem; display: block; margin-bottom: 1rem; }
.rg-pdp__reviews .comment-form label { display: block; color: var(--rg-ink-muted); font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; font-size: 0.8rem; margin: 1rem 0 0.4rem; }
.rg-pdp__reviews .comment-form input[type="text"],
.rg-pdp__reviews .comment-form input[type="email"],
.rg-pdp__reviews .comment-form textarea {
	width: 100%; box-sizing: border-box;
	background: rgba(255,255,255,0.05); color: var(--rg-white);
	border: 1px solid rgba(255,255,255,0.12); border-radius: 12px;
	padding: 0.9rem 1rem; font: inherit;
}
.rg-pdp__reviews .comment-form input:focus, .rg-pdp__reviews .comment-form textarea:focus { outline: none; border-color: rgba(169,207,63,0.6); }
.rg-pdp__reviews .comment-form-rating label { display: inline-block; }
/* the interactive star selector */
.rg-pdp__reviews .stars a { color: var(--rg-volt); }
.rg-pdp__reviews .comment-form .submit,
.rg-pdp__reviews #respond input#submit {
	margin-top: 1.2rem; padding: 0.95rem 2rem; border: 0; border-radius: var(--rg-r-pill); cursor: pointer;
	background: linear-gradient(120deg, var(--rg-pink) 0%, var(--rg-violet) 100%); color: #fff;
	font: inherit; font-weight: 900; text-transform: uppercase; letter-spacing: 0.05em;
	box-shadow: 0 1vh 3vh rgba(219,30,121,0.35);
	transition: background var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur-fast) var(--rg-ease-out);
}
.rg-pdp__reviews #respond input#submit:hover { background: linear-gradient(120deg, var(--rg-volt) 0%, var(--rg-violet) 100%); color: #000; transform: translateY(-2px); }
.rg-pdp__reviews .comment-form-cookies-consent { display: flex; align-items: center; gap: 0.5rem; }
.rg-pdp__reviews .comment-form-cookies-consent label { margin: 0; }

/* ---- PDP wishlist button (below add-to-cart) ---- */
.rg-pdp__wishlist {
	margin-top: 0.9rem; width: 100%;
	display: inline-flex; align-items: center; justify-content: center; gap: 0.6rem;
	padding: 0.95rem 1.5rem; border-radius: var(--rg-r-pill); cursor: pointer;
	background: rgba(255,255,255,0.05); color: var(--rg-white);   /* glass bg so it doesn't blend in */
	border: 1px solid rgba(123,74,168,0.4);
	font: inherit; font-weight: 800; text-transform: uppercase; letter-spacing: 0.03em; font-size: 0.85rem;
	transition: background var(--rg-dur) var(--rg-ease-out), color var(--rg-dur) var(--rg-ease-out), border-color var(--rg-dur) var(--rg-ease-out);
}
.rg-pdp__wishlist:hover { background: rgba(123,74,168,0.18); border-color: var(--rg-violet); color: #fff; }
.rg-pdp__wishlist.is-active { color: #fff; border-color: var(--rg-violet); background: rgba(123,74,168,0.25); }
.rg-pdp__wishlist.is-active svg { fill: var(--rg-violet); }
.rg-pdp__wishlist svg { transition: fill var(--rg-dur) var(--rg-ease-out); }

/* ---- PDP add-to-cart loading / added states ---- */
.rg-pdp__form .single_add_to_cart_button.loading { opacity: 0.75; pointer-events: none; }
.rg-pdp__form .single_add_to_cart_button.is-adding { animation: rg-atc-pulse 0.6s ease infinite; }
.rg-pdp__form .single_add_to_cart_button.is-added { background: linear-gradient(120deg, var(--rg-volt) 0%, #7cd66a 100%) !important; color: #000 !important; }
@keyframes rg-atc-pulse { 0%,100% { transform: scale(1); } 50% { transform: scale(0.98); } }

/* ---- PDP reviews carousel ---- */
.rg-pdp__reviews-head { display: flex; align-items: baseline; gap: 1.2rem; flex-wrap: wrap; margin-bottom: clamp(1.5rem, 4vh, 2.5rem); }
.rg-pdp__reviews-title { margin: 0; color: var(--rg-white); font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em; font-size: clamp(1.5rem, 2.6vw, 2.4rem); }
.rg-pdp__reviews-empty { color: var(--rg-ink-muted); padding: clamp(1.4rem, 3vh, 2rem); border-radius: var(--rg-r-lg); border: 1px solid rgba(255,255,255,0.08); background: rgba(255,255,255,0.03); margin: 0 0 2rem; }
.rg-pdp__reviews-splide { padding: 1vh 0 3vh; }
.rg-review-card__stars { display: block; position: relative; font-size: 1.1rem; letter-spacing: 0.1em; color: rgba(255,255,255,0.15); margin-bottom: 1rem; width: max-content; }
.rg-review-card__stars::before { content: "★★★★★"; position: absolute; inset: 0; width: var(--rate); overflow: hidden; color: var(--rg-volt); }
.rg-review-card__photo { width: 100%; max-height: 30vh; object-fit: cover; border-radius: 12px; margin-bottom: 1rem; }
.rg-review-card__verified { display: inline-flex; align-items: center; margin-left: 0.6rem; padding: 0.15em 0.7em; border-radius: var(--rg-r-pill); background: rgba(169,207,63,0.14); color: var(--rg-volt); font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.65rem; }

/* review form (plugin) — dark glass */
.rg-pdp__review-form { margin-top: clamp(1.5rem, 4vh, 2.5rem); }
.rg-pdp__review-form .y-product-review-form,
.rg-pdp__review-form form {
	padding: clamp(1.6rem, 4vw, 2.5rem); border-radius: var(--rg-r-xl);
	border: 1px solid rgba(255,255,255,0.08); background: rgba(255,255,255,0.03);
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
}
.rg-pdp__review-form .y-product-review-form__title { margin: 0 0 0.4em; color: var(--rg-white); font-weight: 900; text-transform: uppercase; font-size: 1.2rem; }
.rg-pdp__review-form label { color: var(--rg-ink-muted); font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; font-size: 0.78rem; }
.rg-pdp__review-form textarea, .rg-pdp__review-form input[type="text"] {
	width: 100%; box-sizing: border-box; margin-top: 0.5rem;
	background: rgba(255,255,255,0.05); color: var(--rg-white);
	border: 1px solid rgba(255,255,255,0.12); border-radius: 12px; padding: 0.9rem 1rem; font: inherit;
}
.rg-pdp__review-form textarea:focus, .rg-pdp__review-form input:focus { outline: none; border-color: rgba(169,207,63,0.6); }
/* ---- STAR RATING INPUT: big clickable stars, no radio buttons ----
   The plugin renders radio+label(★) pairs in REVERSE order (5→1) inside
   .y-product-review-form__stars, so we hide the radios and use hover / :checked
   sibling selectors to fill the stars. */
.y-product-review-form__rating { border: 0 !important; outline: 0 !important; margin: 0 0 1.2rem; padding: 0; background: none !important; }
.y-product-review-form__stars {
	display: inline-flex; flex-direction: row-reverse; justify-content: flex-end;
	gap: 0.15em; padding: 0; border: 0 !important; outline: 0 !important; background: none !important;
}
.y-product-review-form__stars input[type="radio"] {
	position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; margin: 0;   /* hide radios */
}
.y-product-review-form__stars label {
	cursor: pointer; margin: 0; padding: 0 0.04em; line-height: 1;
	font-size: clamp(2rem, 5vw, 2.8rem);           /* BIG stars */
	color: rgba(255,255,255,0.18);                  /* empty */
	transition: color 0.15s var(--rg-ease-out), transform 0.15s var(--rg-ease-out);
	outline: 0 !important;                          /* no focus box on click */
	-webkit-user-select: none; user-select: none;   /* the "bar" was the ★ text getting selected */
	-webkit-tap-highlight-color: transparent;
}
.y-product-review-form__stars label:focus, .y-product-review-form__stars input:focus + label { outline: 0 !important; }
/* reverse-order trick: a star + all stars AFTER it (visually to its left) light up on
   hover/selection */
.y-product-review-form__stars label:hover,
.y-product-review-form__stars label:hover ~ label,
.y-product-review-form__stars input:checked ~ label { color: var(--rg-volt); }
.y-product-review-form__stars label:hover,
.y-product-review-form__stars label:hover ~ label { transform: scale(1.08); }
.y-product-review-form__stars label:active { transform: scale(0.94); }
.rg-pdp__review-form button[type="submit"], .rg-pdp__review-form .button, .rg-pdp__review-form input[type="submit"] {
	margin-top: 1.2rem; padding: 0.95rem 2rem; border: 0; border-radius: var(--rg-r-pill); cursor: pointer;
	background: linear-gradient(120deg, var(--rg-pink) 0%, var(--rg-violet) 100%); color: #fff;
	font: inherit; font-weight: 900; text-transform: uppercase; letter-spacing: 0.05em;
	transition: background var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur-fast) var(--rg-ease-out);
}
.rg-pdp__review-form button[type="submit"]:hover, .rg-pdp__review-form input[type="submit"]:hover { background: linear-gradient(120deg, var(--rg-volt) 0%, var(--rg-violet) 100%); color: #000; transform: translateY(-2px); }
.rg-pdp__review-form a { color: var(--rg-volt); }

/* ---- PDP quantity stepper (+/- around Woo's number input) ---- */
.rg-pdp__form .quantity { padding: 0.2rem; }
.rg-qty-btn {
	width: 1.6rem; height: 1.6rem; flex: 0 0 auto;
	display: inline-flex; align-items: center; justify-content: center;
	border: 0; border-radius: 0; cursor: pointer;
	/* No plate behind the glyphs: the rounded rectangle sat inside the qty box's own
	   radius and its corners read as breaking out of it. Bare glyphs on the box. */
	background: none; color: var(--rg-volt);
	font-size: 1rem; font-weight: 800; line-height: 1;
	transition: color var(--rg-dur) var(--rg-ease-out), transform var(--rg-dur-fast) var(--rg-ease-out), opacity var(--rg-dur) var(--rg-ease-out);
}
.rg-qty-btn:hover { background: none; color: #fff; }
.rg-qty-btn:active { transform: scale(0.88); }

/* ---- PDP reviews: 2-column (carousel left + form right) ---- */
.rg-pdp__reviews-grid {
	display: grid; grid-template-columns: 1.15fr 0.85fr;
	gap: clamp(1.5rem, 4vw, 3.5rem); align-items: start;
}
.rg-pdp__reviews-carousel { min-width: 0; }
.rg-pdp__reviews-splide { padding: 0; }
/* the controls row inherits .rg-reviews__controls/__dots/__arrow styling from §10 */
.rg-pdp__reviews-controls { margin-top: 1.5rem; max-width: none; margin-left: 0; }
.rg-pdp__review-form { margin-top: 0; position: sticky; top: 14vh; }

@media (max-width: 900px) {
	.rg-pdp__reviews-grid { grid-template-columns: 1fr; }
	.rg-pdp__review-form { position: relative; top: 0; }
}

/* ---- Review stars → VOLT GREEN (plugin summary uses Yammy brown by default) ---- */
:root { --mp13-star: var(--rg-volt); --mp13-star-empty: rgba(255,255,255,0.18); }
.mp13-rating-summary__avg { color: var(--rg-white) !important; }
.mp13-rating-summary__count { color: var(--rg-volt) !important; }
.mp13-rating-summary { color: var(--rg-volt) !important; }
/* the "X reviews" link → volt, underline on hover */
.mp13-rating-summary a, a.mp13-rating-summary { color: var(--rg-volt) !important; text-decoration: none; }
.mp13-rating-summary a:hover { text-decoration: underline; }

/* ============================================================================
   PAGE TRANSITION — dark-glass monogram screen
   Three states:
     .is-entering  → covering (on first paint); JS removes it to REVEAL the page
     (default)     → hidden / non-interactive
     .is-leaving   → covering again (on navigation away)
   ========================================================================== */
.rg-transition {
	position: fixed; inset: 0; z-index: 12000;
	display: grid; place-items: center;
	pointer-events: none;
	opacity: 1; visibility: visible;
	/* stay rendered through the wipe, then hide (delay > panel wipe duration) */
	transition: visibility 0s linear 0.8s;
}
/* fully hidden only once revealed AND the wipe has finished */
.rg-transition:not(.is-entering):not(.is-leaving) { visibility: hidden; }
/* the dark-glass sheet */
.rg-transition__panel {
	position: absolute; inset: 0;
	background: rgba(10, 10, 12, 0.72);
	-webkit-backdrop-filter: blur(26px) saturate(120%);
	backdrop-filter: blur(26px) saturate(120%);
	/* ambient volt + violet glow bleeding from the edges */
	background-image:
		radial-gradient(60% 50% at 22% 18%, rgba(169,207,63,0.14), transparent 60%),
		radial-gradient(55% 55% at 82% 86%, rgba(123,74,168,0.18), transparent 62%);
	/* clip-path wipe: revealed = collapsed to the top edge */
	clip-path: inset(0 0 100% 0);
	transition: clip-path 0.75s cubic-bezier(0.76, 0, 0.24, 1);
}
.rg-transition__mark {
	position: relative; z-index: 1;
	display: grid; place-items: center;
	opacity: 0; transform: translateY(8px) scale(0.94);
	transition: opacity 0.4s ease, transform 0.5s var(--rg-ease-out);
}
.rg-transition__mark img {
	width: clamp(64px, 8vw, 92px); height: auto; object-fit: contain;
	filter: drop-shadow(0 0 24px rgba(169,207,63,0.45));
}
/* pulsing ring behind the mark */
.rg-transition__ring {
	position: absolute; top: 50%; left: 50%;
	width: 150%; aspect-ratio: 1; border-radius: 50%;
	transform: translate(-50%, -50%);
	border: 1.5px solid rgba(169,207,63,0.35);
	opacity: 0;
}

/* ---- COVERING states (entering on load, leaving on nav) ---- */
.rg-transition.is-entering,
.rg-transition.is-leaving {
	opacity: 1; visibility: visible; pointer-events: auto;
}
.rg-transition.is-entering .rg-transition__panel,
.rg-transition.is-leaving .rg-transition__panel { clip-path: inset(0 0 0 0); }
.rg-transition.is-entering .rg-transition__mark,
.rg-transition.is-leaving .rg-transition__mark {
	opacity: 1; transform: translateY(0) scale(1);
}
.rg-transition.is-entering .rg-transition__ring,
.rg-transition.is-leaving .rg-transition__ring {
	animation: rg-trans-ring 1.6s ease-out infinite;
}

/* On LEAVE the panel wipes UP from the bottom to cover (mirror of the reveal). */
.rg-transition.is-leaving .rg-transition__panel {
	clip-path: inset(0 0 0 0);
	transition: clip-path 0.55s cubic-bezier(0.76, 0, 0.24, 1);
}

/* REVEAL (default, after JS drops .is-entering): the mark fades first, then the
   sheet wipes up off the top edge. */
.rg-transition:not(.is-entering):not(.is-leaving) .rg-transition__panel {
	clip-path: inset(0 0 100% 0);
}

@keyframes rg-trans-ring {
	0%   { opacity: 0.6; transform: translate(-50%, -50%) scale(0.7); }
	70%  { opacity: 0;   transform: translate(-50%, -50%) scale(1.15); }
	100% { opacity: 0;   transform: translate(-50%, -50%) scale(1.15); }
}

@media (prefers-reduced-motion: reduce) {
	.rg-transition { display: none !important; }
}

/* ============================================================================
   CONTENT PAGES — About / Reviews / Contacts (dark-glass)
   ========================================================================== */
.rg-page { position: relative; }
/* shared small helpers used on these pages */
.rg-page .rg-eyebrow { margin: 0 0 0.6em; font-weight: 800; letter-spacing: 0.28em; text-transform: uppercase; font-size: clamp(0.7rem, 1vw, 0.82rem); color: var(--rg-volt); }
.rg-page .rg-h2 { margin: 0 0 0.5em; font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em; line-height: 1.02; font-size: clamp(1.9rem, 4vw, 3.1rem); color: #fff; }
.rg-page p { color: var(--rg-ink-muted); line-height: 1.7; }

/* ---- Page hero (About) ---- */
/* overflow-x only: the glow is meant to bleed DOWN into the next section. `overflow:
   hidden` cut it dead at the hero's edge, which read as a hard band between sections.
   Clipping X still stops the negative offsets widening the page. */
.rg-phero { position: relative; min-height: clamp(52vh, 60vh, 70vh); display: grid; align-items: center; overflow-x: clip; }
.rg-phero__media { position: absolute; inset: 0; z-index: 0; }
.rg-phero__img { width: 100%; height: 100%; object-fit: cover; object-position: 70% 30%; }
.rg-phero__scrim { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(0,0,0,0.92) 0%, rgba(0,0,0,0.72) 42%, rgba(0,0,0,0.25) 100%); }
.rg-phero__inner { position: relative; z-index: 1; padding-block: clamp(3rem, 8vw, 6rem); max-width: 62ch; }
.rg-phero__eyebrow { margin: 0 0 0.8em; font-weight: 800; letter-spacing: 0.3em; text-transform: uppercase; font-size: clamp(0.72rem, 1vw, 0.85rem); color: var(--rg-volt); }
.rg-phero__title { margin: 0; font-weight: 900; text-transform: uppercase; line-height: 0.98; letter-spacing: -0.015em; font-size: clamp(2.4rem, 6vw, 5rem); color: #fff; }
.rg-phero__lead { margin: 1.2em 0 0; max-width: 52ch; font-size: clamp(1.05rem, 1.4vw, 1.3rem); color: rgba(255,255,255,0.82); }

/* SPLIT hero variant: copy left, CONTAINED figure right (no stretch/crop) */
.rg-phero--split { min-height: auto; }
.rg-phero--split .rg-phero__inner { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: clamp(2rem, 5vw, 5rem); align-items: center; max-width: var(--rg-container); }
.rg-phero--split .rg-phero__copy { max-width: 60ch; }
.rg-phero__figure { position: relative; display: flex; align-items: flex-end; justify-content: center; align-self: stretch; min-height: 58vh; padding-top: clamp(3rem, 8vh, 6rem); }
/* framed glass panel starting LOWER so the man's head peeks over the top edge */
.rg-phero__figure::before {
	content: ""; position: absolute; left: 4%; right: 4%; bottom: 0; top: 20%; z-index: 0;
	border-radius: var(--rg-r-xl);
	background: radial-gradient(120% 90% at 50% 15%, rgba(123,74,168,0.14), transparent 62%), rgba(255,255,255,0.03);
	border: 1px solid rgba(255,255,255,0.10);
	box-shadow: 0 40px 80px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.06);
}
.rg-phero__figure-glow { position: absolute; inset: 16% 6% 0; z-index: 0; background: radial-gradient(circle at 60% 55%, rgba(169,207,63,0.20), rgba(123,74,168,0.20) 52%, transparent 74%); filter: blur(50px); }
.rg-phero__figure-img { position: relative; z-index: 1; width: auto; max-width: 100%; max-height: clamp(48vh, 62vh, 72vh); object-fit: contain; object-position: bottom center; margin-inline: auto; filter: drop-shadow(0 30px 45px rgba(0,0,0,0.6)); }
@media (max-width: 900px) {
	.rg-phero--split .rg-phero__inner { grid-template-columns: 1fr; text-align: center; }
	.rg-phero--split .rg-phero__copy { max-width: 100%; margin-inline: auto; }
	.rg-phero__figure { min-height: 40vh; order: 2; }
	.rg-phero__figure-img { max-height: 46vh; }
}

/* ---- About: intro / mission ---- */
.rg-about-intro { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: clamp(2rem, 6vw, 6vw); align-items: start; }
.rg-about-intro__lead p { font-size: clamp(1.02rem, 1.25vw, 1.2rem); margin: 0 0 1.2em; }
.rg-about-intro__mantra { display: flex; flex-direction: column; gap: 0.4em; padding: clamp(1.6rem, 3vw, 2.4rem); border-radius: var(--rg-r-lg); background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.09); }
.rg-about-intro__mantra-lead { color: rgba(255,255,255,0.7); font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.8rem; }
.rg-about-intro__mantra-big { font-weight: 900; text-transform: uppercase; line-height: 1; font-size: clamp(2rem, 4vw, 3rem); color: var(--rg-volt); }
.rg-about-intro__mantra-sub { color: var(--rg-ink-muted); line-height: 1.6; margin-top: 0.6em; }

/* ---- About: quality split ---- */
.rg-about-quality__wrap { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: clamp(2rem, 6vw, 6vw); align-items: center; }
/* media: the PANEL is shorter than the figure, so her head peeks over the top edge */
.rg-about-quality__media { position: relative; aspect-ratio: 4/5; display: flex; align-items: flex-end; justify-content: center; }
/* the glass shelf/panel — reaches ~her shoulders (85% of the media height, bottom-aligned) */
.rg-about-quality__panel { position: absolute; left: 0; right: 0; bottom: 0; height: 82%; z-index: 0; border-radius: var(--rg-r-xl); overflow: hidden; background: radial-gradient(120% 90% at 50% 20%, rgba(123,74,168,0.16), transparent 60%), rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.10); box-shadow: 0 30px 60px rgba(0,0,0,0.4); }
.rg-about-quality__glow { position: absolute; inset: -10% -10% -20%; background: radial-gradient(circle at 50% 45%, rgba(169,207,63,0.22), rgba(123,74,168,0.18) 55%, transparent 74%); filter: blur(40px); }
/* the figure: taller than the panel, bottom-anchored so the head rises above it */
.rg-about-quality__img { position: relative; z-index: 1; width: auto; max-width: 100%; height: 100%; object-fit: contain; object-position: bottom center; filter: drop-shadow(0 24px 40px rgba(0,0,0,0.5)); }
.rg-about-quality__ship { margin-top: 1.2em; color: var(--rg-volt); font-weight: 800; }

/* ---- About: manufacturer trust blocks ---- */
.rg-about-makers { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.5rem, 4vw, 3rem); }
.rg-about-maker { padding: clamp(1.6rem, 3vw, 2.4rem); border-radius: var(--rg-r-lg); background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.09); }
.rg-about-maker__title { margin: 0 0 0.7em; font-weight: 900; text-transform: uppercase; line-height: 1.05; font-size: clamp(1.4rem, 2.2vw, 1.9rem); color: var(--rg-violet); }
.rg-about-maker p { margin: 0 0 0.9em; }
.rg-about-maker strong { color: #fff; }

/* ---- About: the Rogue advantage grid ---- */
.rg-about-advantage__head { max-width: 60ch; margin-bottom: clamp(2rem, 4vw, 3rem); }
.rg-about-advantage__lead { font-size: clamp(1.02rem, 1.25vw, 1.2rem); color: rgba(255,255,255,0.8); }
.rg-about-advantage__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(1.2rem, 3vw, 2rem); }
.rg-about-card { position: relative; padding: clamp(1.6rem, 3vw, 2.2rem); border-radius: var(--rg-r-lg); background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.08); transition: border-color 0.4s var(--rg-ease-out), transform 0.4s var(--rg-ease-out); overflow: hidden; }
.rg-about-card:hover { border-color: rgba(169,207,63,0.4); transform: translateY(-4px); }
.rg-about-card__num { display: block; font-weight: 900; font-size: clamp(2rem, 4vw, 2.8rem); color: rgba(169,207,63,0.25); line-height: 1; margin-bottom: 0.3em; }
.rg-about-card__title { margin: 0 0 0.5em; font-weight: 900; text-transform: uppercase; font-size: clamp(1.05rem, 1.5vw, 1.3rem); color: #fff; }
.rg-about-card__body { margin: 0; color: var(--rg-ink-muted); line-height: 1.6; }

/* ---- Closing CTA band (shared: About + Reviews) ---- */
.rg-about-cta { text-align: center; }
.rg-about-cta__inner { max-width: 60ch; margin-inline: auto; padding: clamp(2.5rem, 6vw, 5rem) clamp(1.5rem, 4vw, 3rem); border-radius: var(--rg-r-xl); background: radial-gradient(120% 140% at 50% 0%, rgba(123,74,168,0.18), transparent 60%), rgba(255,255,255,0.02); border: 1px solid rgba(255,255,255,0.09); }
.rg-about-cta__title { margin: 0 0 0.4em; font-weight: 900; text-transform: uppercase; font-size: clamp(1.8rem, 4vw, 3rem); color: #fff; }
.rg-about-cta__lead { margin: 0 auto 1.8em; max-width: 48ch; color: rgba(255,255,255,0.78); }
.rg-about-cta__btn { display: inline-flex; }

/* ---- Reviews page ---- */
.rg-reviews-hero { padding-block: clamp(3rem, 8vw, 6rem) clamp(1rem, 2vw, 2rem); text-align: center; }
.rg-reviews-hero__inner { max-width: 60ch; margin-inline: auto; }
.rg-reviews-hero .rg-phero__eyebrow, .rg-reviews-hero .rg-phero__title { text-align: center; }
.rg-reviews-hero__stats { display: inline-flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.6em; margin-top: 1.4em; padding: 0.6em 1.4em; border-radius: var(--rg-r-pill); background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.1); }
.rg-reviews-hero__avg { font-weight: 900; font-size: 1.5rem; color: var(--rg-volt); }
.rg-reviews-hero__stars, .rg-review-tile__stars { --rate: 100%; position: relative; display: inline-block; font-size: 1.1rem; letter-spacing: 2px; line-height: 1; color: rgba(255,255,255,0.16); }
.rg-reviews-hero__stars::before, .rg-review-tile__stars::before { content: "★★★★★"; position: absolute; inset: 0; width: var(--rate); overflow: hidden; white-space: nowrap; color: var(--rg-volt); }
.rg-reviews-hero__count { color: var(--rg-ink-muted); font-weight: 600; font-size: 0.95rem; }

.rg-review-wall { columns: 3 260px; column-gap: clamp(1rem, 2vw, 1.6rem); }
.rg-review-tile { break-inside: avoid; margin: 0 0 clamp(1rem, 2vw, 1.6rem); padding: clamp(1.3rem, 2.4vw, 1.8rem); border-radius: var(--rg-r-lg); background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.08); transition: border-color 0.4s var(--rg-ease-out), transform 0.4s var(--rg-ease-out); }
.rg-review-tile:hover { border-color: rgba(169,207,63,0.35); transform: translateY(-3px); }
.rg-review-tile__stars { margin-bottom: 0.7em; }
.rg-review-tile__text { margin: 0 0 1.2em; color: rgba(255,255,255,0.9); line-height: 1.6; font-size: 1.02rem; }
.rg-review-tile__foot { display: flex; align-items: center; gap: 0.7em; }
.rg-review-tile__avatar { flex: 0 0 auto; width: 2.4em; height: 2.4em; display: grid; place-items: center; border-radius: 50%; background: linear-gradient(135deg, var(--rg-violet), var(--rg-volt)); color: #000; font-weight: 900; }
.rg-review-tile__meta { display: flex; flex-direction: column; line-height: 1.25; margin-right: auto; }
.rg-review-tile__author { color: #fff; font-weight: 800; font-size: 0.95rem; }
.rg-review-tile__product { color: var(--rg-ink-muted); font-size: 0.8rem; text-decoration: none; }
.rg-review-tile__product:hover { color: var(--rg-volt); }
.rg-review-tile__verified { display: inline-flex; align-items: center; gap: 0.3em; color: var(--rg-volt); font-size: 0.68rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.05em; }

/* ---- Contacts page ---- */
.rg-contact__wrap { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: clamp(2rem, 5vw, 4rem); align-items: start; }
.rg-contact__aside { display: flex; flex-direction: column; gap: 1rem; }
.rg-contact__card { display: flex; align-items: center; gap: 1rem; padding: 1.1rem 1.3rem; border-radius: var(--rg-r-lg); background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.09); text-decoration: none; transition: border-color 0.35s var(--rg-ease-out), background 0.35s var(--rg-ease-out); }
a.rg-contact__card:hover { border-color: rgba(169,207,63,0.4); background: rgba(169,207,63,0.06); }
.rg-contact__card-ic { flex: 0 0 auto; width: 2.9rem; height: 2.9rem; display: grid; place-items: center; border-radius: 12px; background: rgba(169,207,63,0.12); color: var(--rg-volt); }
.rg-contact__card-body { display: flex; flex-direction: column; line-height: 1.3; }
.rg-contact__card-label { color: var(--rg-ink-muted); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; }
.rg-contact__card-value { color: #fff; font-weight: 800; font-size: 1rem; word-break: break-word; }
.rg-contact__social { display: flex; gap: 0.6rem; margin-top: 0.5rem; }
.rg-contact__social a { width: 2.6rem; height: 2.6rem; display: grid; place-items: center; border-radius: 50%; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); color: #fff; transition: background 0.3s, color 0.3s; }
.rg-contact__social a:hover { background: var(--rg-volt); color: #000; }

.rg-contact__formwrap { padding: clamp(1.6rem, 3vw, 2.4rem); border-radius: var(--rg-r-xl); background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.09); }
.rg-contact__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.rg-contact__flash { margin: 0 0 1.2rem; padding: 0.9rem 1.1rem; border-radius: 12px; font-weight: 700; }
.rg-contact__flash--ok { background: rgba(169,207,63,0.12); border: 1px solid rgba(169,207,63,0.4); color: var(--rg-volt); }
.rg-contact__flash--err { background: rgba(219,30,121,0.12); border: 1px solid rgba(219,30,121,0.4); color: var(--rg-pink); }
.rg-field { margin-bottom: 1.1rem; }
/* name + email side by side; stacks on narrow screens */
.rg-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.rg-field-row .rg-field { margin-bottom: 1.1rem; }
@media (max-width: 520px) { .rg-field-row { grid-template-columns: 1fr; gap: 0; } }
.rg-field__label { display: block; margin-bottom: 0.5em; color: rgba(255,255,255,0.75); font-weight: 700; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.05em; }
.rg-field__input { width: 100%; padding: 0.95em 1.3em; border-radius: var(--rg-r-xl); background: rgba(0,0,0,0.3); border: 1px solid rgba(255,255,255,0.14); color: #fff; font: inherit; transition: border-color 0.3s var(--rg-ease-out), box-shadow 0.3s var(--rg-ease-out); }
/* textarea gets the same big radius but a touch tighter so the rounded corners read */
.rg-field__input--area { border-radius: calc(var(--rg-r-xl) * 0.7); }
.rg-field__input::placeholder { color: rgba(255,255,255,0.4); }
.rg-field__input:focus { outline: 0; border-color: var(--rg-volt); box-shadow: 0 0 0 3px rgba(169,207,63,0.18); }
.rg-field__input--area { resize: vertical; min-height: 8em; }
.rg-contact__submit { margin-top: 0.5rem; }

/* ---- responsive: stack all page grids ---- */
@media (max-width: 900px) {
	.rg-about-intro, .rg-about-quality__wrap, .rg-about-makers, .rg-about-advantage__grid, .rg-contact__wrap { grid-template-columns: 1fr; }
	.rg-about-quality__media { order: -1; aspect-ratio: 16/10; }
	.rg-review-wall { columns: 2 240px; }
}
@media (max-width: 560px) {
	.rg-review-wall { columns: 1; }
}

/* ---- Ambient music toggle + volume (pinned bottom-left) ---- */
/* z-index 150 — deliberately BELOW every overlay: cart/search drawers (200), the
   filter drawer (800) and the glass menu (9000). At 9000 the sound pill floated on
   top of all of them, overlapping drawer content. */
.rg-music { position: fixed; left: clamp(1rem, 3vw, 2rem); bottom: clamp(4.5rem, 8vh, 6rem); z-index: 150; display: flex; align-items: center; gap: 0.5rem; }
/* volume slider: collapsed by default, expands on hover/focus/when playing */
.rg-music__vol {
	max-width: 0; opacity: 0; overflow: hidden;
	transition: max-width 0.35s var(--rg-ease-out), opacity 0.3s var(--rg-ease-out);
	display: flex; align-items: center;
}
/* reveal on hover/focus, OR while the user is actively adjusting (.vol-open, set by
   JS and cleared shortly after they stop) — so it hides once the volume is set. */
.rg-music:hover .rg-music__vol,
.rg-music:focus-within .rg-music__vol,
.rg-music.vol-open .rg-music__vol { max-width: 9.5rem; opacity: 1; }
/* the slider sits inside a glass pill */
.rg-music__vol {
	padding: 0.5rem 0.85rem;
	background: rgba(14,14,16,0.55);
	border: 1px solid rgba(255,255,255,0.14); border-radius: var(--rg-r-pill, 999px);
	-webkit-backdrop-filter: blur(16px) saturate(130%); backdrop-filter: blur(16px) saturate(130%);
	box-shadow: 0 8px 24px rgba(0,0,0,0.35);
}
.rg-music__vol-range {
	-webkit-appearance: none; appearance: none;
	width: 6.5rem; height: 6px; margin: 0; border-radius: 6px; cursor: pointer;
	background: transparent;
}
/* WebKit track + fill via the --rg-vol-fill custom prop */
.rg-music__vol-range::-webkit-slider-runnable-track {
	height: 6px; border-radius: 6px;
	background: linear-gradient(90deg, var(--rg-volt) 0 var(--rg-vol-fill, 45%), rgba(255,255,255,0.2) var(--rg-vol-fill, 45%) 100%);
}
.rg-music__vol-range::-webkit-slider-thumb {
	-webkit-appearance: none; appearance: none; margin-top: -5px;
	width: 16px; height: 16px; border-radius: 50%; background: var(--rg-volt);
	border: 2px solid #0e0e10; box-shadow: 0 0 10px rgba(169,207,63,0.5); cursor: pointer;
}
/* Firefox track + progress + thumb */
.rg-music__vol-range::-moz-range-track { height: 6px; border-radius: 6px; background: rgba(255,255,255,0.2); }
.rg-music__vol-range::-moz-range-progress { height: 6px; border-radius: 6px; background: var(--rg-volt); }
.rg-music__vol-range::-moz-range-thumb {
	width: 16px; height: 16px; border-radius: 50%; background: var(--rg-volt);
	border: 2px solid #0e0e10; box-shadow: 0 0 10px rgba(169,207,63,0.5); cursor: pointer;
}
.rg-music__btn {
	display: inline-flex; align-items: center; gap: 0.55em;
	padding: 0.55em 1em 0.55em 0.8em;
	border: 1px solid rgba(255,255,255,0.14); border-radius: var(--rg-r-pill, 999px);
	background: rgba(14,14,16,0.55); color: #fff; cursor: pointer;
	-webkit-backdrop-filter: blur(16px) saturate(130%); backdrop-filter: blur(16px) saturate(130%);
	box-shadow: 0 8px 24px rgba(0,0,0,0.35);
	transition: border-color 0.3s var(--rg-ease-out), background 0.3s var(--rg-ease-out), transform 0.3s var(--rg-ease-out);
}
.rg-music__btn:hover { border-color: rgba(169,207,63,0.45); transform: translateY(-2px); }
.rg-music__label { font-size: 0.72rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em; }
/* icons swap on state */
.rg-music__ic { display: inline-flex; color: var(--rg-volt); }
.rg-music__ic--on { display: none; }
.rg-music.is-playing .rg-music__ic--muted { display: none; }
.rg-music.is-playing .rg-music__ic--on { display: inline-flex; }
/* animated equaliser bars — only bounce while playing */
.rg-music__eq { display: none; align-items: flex-end; gap: 2px; height: 14px; }
.rg-music.is-playing .rg-music__eq { display: inline-flex; }
.rg-music.is-playing .rg-music__ic--on { display: none; }   /* eq replaces the speaker while playing */
.rg-music__eq span { width: 3px; background: var(--rg-volt); border-radius: 2px; animation: rg-eq 0.9s ease-in-out infinite; }
.rg-music__eq span:nth-child(1) { animation-delay: 0s; height: 40%; }
.rg-music__eq span:nth-child(2) { animation-delay: 0.2s; height: 100%; }
.rg-music__eq span:nth-child(3) { animation-delay: 0.4s; height: 60%; }
.rg-music__eq span:nth-child(4) { animation-delay: 0.15s; height: 80%; }
@keyframes rg-eq { 0%,100% { transform: scaleY(0.4); } 50% { transform: scaleY(1); } }
@media (prefers-reduced-motion: reduce) { .rg-music__eq span { animation: none; } }

/* ============================================================================
   BLOG — listing (home.php) + single post (single.php). Dark glass, product-card
   styled post cards, shop-style category pills.
   ========================================================================== */
.rg-blog { padding-block: clamp(2rem, 5vw, 4rem) clamp(3rem, 8vw, 6rem); }
/* CENTER the blog category pills (no sort control like the shop, so center them) */
.rg-blog__toolbar { margin-bottom: clamp(1.5rem, 4vw, 2.5rem); display: flex; justify-content: center; }
/* The SCROLLER is .rg-shop__chips (the <nav>); .rg-shop__chips-wrap only holds the two
   arrows around it. `justify-content: center` on an OVERFLOWING scroller pushes the
   first item past the left edge into space you cannot scroll back to — which is why
   the "All" pill was unreachable. Start from the left and let it scroll. */
.rg-blog__toolbar .rg-shop__chips-wrap { justify-content: flex-start; max-width: 100%; }
.rg-blog__toolbar .rg-shop__chips {
	justify-content: flex-start !important;
	scroll-padding-left: 0;
}
.rg-blog__toolbar .rg-shop__chips { justify-content: center; }
/* subtle fade while AJAX swaps the grid */
.rg-blog__results { transition: opacity 0.25s ease; }
.rg-blog__results.is-loading { opacity: 0.35; pointer-events: none; }

/* grid of post cards */
.rg-blog__grid {
	display: grid; grid-template-columns: repeat(3, 1fr);
	gap: clamp(1.2rem, 2.4vw, 2rem);
}
@media (max-width: 900px) { .rg-blog__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .rg-blog__grid { grid-template-columns: 1fr; } }

/* post card — mirrors the product card language */
.rg-blog-card {
	position: relative; display: flex; flex-direction: column;
	background: rgba(255,255,255,0.04);
	-webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
	border: 1px solid rgba(255,255,255,0.08); border-radius: var(--rg-r-lg);
	overflow: hidden;
	transition: transform 0.5s var(--rg-ease-out), box-shadow 0.5s var(--rg-ease-out), border-color 0.5s var(--rg-ease-out);
}
.rg-blog-card:hover { transform: translateY(-1.4vh); border-color: rgba(169,207,63,0.4); box-shadow: 0 3vh 6vh rgba(0,0,0,0.6); }
.rg-blog-card__media { position: relative; aspect-ratio: 16/10; overflow: hidden; background: #0c0c0e; }
.rg-blog-card__img {
	width: 100%; height: 100%; object-fit: cover;
	/* top-centre: `cover` defaults to `50% 50%`, which crops from the middle and cut
	   the subject's head off on every card. Applies to desktop and mobile alike. */
	object-position: top center;
	transition: transform 0.6s var(--rg-ease-out);
}
.rg-blog-card:hover .rg-blog-card__img { transform: scale(1.06); }
.rg-blog-card__img--placeholder { display: block; background: radial-gradient(80% 80% at 50% 30%, rgba(123,74,168,0.35), rgba(12,12,14,1) 75%); }
.rg-blog-card__cat {
	position: absolute; top: 0.9rem; left: 0.9rem; z-index: 2;
	padding: 0.35em 0.9em; border-radius: var(--rg-r-pill);
	background: rgba(12,12,14,0.6); border: 1px solid rgba(169,207,63,0.45);
	-webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
	color: var(--rg-volt); font-size: 0.66rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em;
}
.rg-blog-card__body { display: flex; flex-direction: column; gap: 0.8rem; padding: clamp(1.2rem, 2vw, 1.6rem); flex: 1 1 auto; }
.rg-blog-card__meta { display: flex; align-items: center; gap: 0.5em; color: var(--rg-ink-muted); font-size: 0.78rem; font-weight: 600; }
.rg-blog-card__dot { opacity: 0.5; }
.rg-blog-card__read { color: var(--rg-volt); }
.rg-blog-card__title { margin: 0; font-size: clamp(1.1rem, 1.5vw, 1.35rem); font-weight: 800; line-height: 1.2; text-transform: none; letter-spacing: -0.01em; }
.rg-blog-card__title a { color: #fff; text-decoration: none; }
/* stretched link — whole card clickable (name anchor covers it) */
.rg-blog-card__title a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.rg-blog-card__excerpt { margin: 0; color: var(--rg-ink-muted); line-height: 1.6; font-size: 0.92rem; }
.rg-blog-card__more { margin-top: auto; display: inline-flex; align-items: center; gap: 0.4em; color: var(--rg-volt); font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.78rem; }
.rg-blog-card__more svg { transition: transform 0.35s var(--rg-ease-out); }
.rg-blog-card:hover .rg-blog-card__more svg { transform: translateX(4px); }

/* pagination */
.rg-blog__pagination { margin-top: clamp(2.5rem, 5vw, 4rem); }
.rg-blog__pagination .nav-links { display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center; }
.rg-blog__pagination .page-numbers {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 2.6rem; height: 2.6rem; padding: 0 0.7rem; border-radius: var(--rg-r-pill);
	background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.1);
	color: #fff; text-decoration: none; font-weight: 700;
	transition: background 0.3s, border-color 0.3s, color 0.3s;
}
.rg-blog__pagination .page-numbers:hover { border-color: rgba(169,207,63,0.5); color: var(--rg-volt); }
.rg-blog__pagination .page-numbers.current { background: var(--rg-volt); color: #000; border-color: var(--rg-volt); }

/* ---- SINGLE POST ---- */
.rg-post__head { padding-block: clamp(2.5rem, 6vw, 5rem) clamp(1.5rem, 3vw, 2.5rem); }
.rg-post__head-inner { max-width: 60ch; }
.rg-post__crumbs { display: flex; gap: 0.5em; color: var(--rg-ink-muted); font-size: 0.8rem; margin-bottom: 1.4em; }
.rg-post__crumbs a { color: var(--rg-ink-muted); text-decoration: none; }
.rg-post__crumbs a:hover { color: var(--rg-volt); }
.rg-post__cat { display: inline-block; margin-bottom: 1em; padding: 0.35em 1em; border-radius: var(--rg-r-pill); background: rgba(169,207,63,0.12); border: 1px solid rgba(169,207,63,0.35); color: var(--rg-volt); font-size: 0.7rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; text-decoration: none; }
.rg-post__title { margin: 0 0 0.6em; font-weight: 900; text-transform: uppercase; line-height: 1.02; letter-spacing: -0.015em; font-size: clamp(2rem, 4.5vw, 3.6rem); color: #fff; }
.rg-post__meta { display: flex; align-items: center; gap: 0.5em; color: var(--rg-ink-muted); font-weight: 600; font-size: 0.9rem; }
.rg-post__read { color: var(--rg-volt); }

/* featured image on a frosted shelf */
.rg-post__hero { position: relative; border-radius: var(--rg-r-xl); overflow: hidden; margin-bottom: clamp(2rem, 4vw, 3rem); aspect-ratio: 16/8; }
.rg-post__hero-glow { position: absolute; inset: -15%; z-index: 0; background: radial-gradient(circle at 50% 30%, rgba(169,207,63,0.16), rgba(123,74,168,0.16) 55%, transparent 74%); filter: blur(45px); }
.rg-post__hero-img { position: relative; z-index: 1; width: 100%; height: 100%; object-fit: cover; object-position: top center; }   /* top-centre, same as the blog cards */

/* prose body */
.rg-post__body { max-width: 68ch; margin-inline: auto; }
.rg-prose { color: rgba(255,255,255,0.9); font-size: clamp(1.02rem, 1.2vw, 1.15rem); line-height: 1.8; }
.rg-prose p { margin: 0 0 1.4em; }
.rg-prose h2 { margin: 1.8em 0 0.6em; font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em; font-size: clamp(1.4rem, 2.4vw, 2rem); color: var(--rg-volt); line-height: 1.1; }
.rg-prose h3 { margin: 1.5em 0 0.5em; font-weight: 800; font-size: clamp(1.2rem, 2vw, 1.5rem); color: #fff; }
.rg-prose a { color: var(--rg-volt); text-decoration: underline; text-underline-offset: 3px; }
.rg-prose ul, .rg-prose ol { margin: 0 0 1.4em; padding-left: 1.4em; }
.rg-prose li { margin-bottom: 0.5em; }
.rg-prose strong { color: #fff; }
.rg-prose blockquote { margin: 1.6em 0; padding: 0.6em 1.4em; border-left: 3px solid var(--rg-volt); color: rgba(255,255,255,0.8); font-style: italic; }
.rg-prose img { border-radius: var(--rg-r-lg); margin: 1.6em 0; }
/* Gutenberg block-editor content (used by simple/legal pages): mirror the prose
   headings + add table/list block coverage so Privacy/Terms/etc. read cleanly. */
.rg-prose h1, .rg-prose .wp-block-heading { color: #fff; }
.rg-prose h2.wp-block-heading { margin: 1.8em 0 0.6em; font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em; font-size: clamp(1.4rem, 2.4vw, 2rem); color: var(--rg-volt); line-height: 1.1; }
.rg-prose h3.wp-block-heading { margin: 1.5em 0 0.5em; font-weight: 800; font-size: clamp(1.2rem, 2vw, 1.5rem); color: #fff; }
.rg-prose h4.wp-block-heading { margin: 1.3em 0 0.4em; font-weight: 800; color: #fff; text-transform: uppercase; font-size: 1.05rem; letter-spacing: 0.02em; }
.rg-prose table { width: 100%; border-collapse: collapse; margin: 1.6em 0; }
.rg-prose th, .rg-prose td { padding: 0.7em 0.9em; border: 1px solid rgba(255,255,255,0.1); text-align: left; }
.rg-prose th { background: rgba(255,255,255,0.04); color: #fff; font-weight: 800; }
.rg-prose hr, .rg-prose .wp-block-separator { border: 0; height: 1px; background: rgba(255,255,255,0.1); margin: 2em 0; }
.rg-prose figure { margin: 1.6em 0; }
/* keep legal/prose pages readable — constrain line length */
.rg-page--std:not(.rg-page--wc) .rg-page__content.rg-prose { max-width: 74ch; }
.rg-page--std:not(.rg-page--wc) .rg-page__head { max-width: 74ch; }

.rg-post__foot { max-width: 68ch; margin: clamp(2.5rem, 5vw, 4rem) auto 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem; padding-top: 2rem; border-top: 1px solid rgba(255,255,255,0.1); }
.rg-post__tags { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.rg-post__tags a { padding: 0.3em 0.9em; border-radius: var(--rg-r-pill); background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.12); color: var(--rg-ink-muted); font-size: 0.78rem; text-decoration: none; }
.rg-post__tags a:hover { color: var(--rg-volt); border-color: rgba(169,207,63,0.4); }
.rg-post__back { display: inline-flex; }

.rg-post__related-title { margin: 0 0 clamp(1.5rem, 3vw, 2rem); font-weight: 900; text-transform: uppercase; font-size: clamp(1.5rem, 3vw, 2.2rem); color: #fff; }

/* ============================================================================
   CART & CHECKOUT — dark-glass restyle of WooCommerce's classic templates.
   Styles WC's own classes (update-safe) + a CSS-only 2-column checkout.
   ========================================================================== */
/* generic page shell */
.rg-page--std .rg-page__head { margin-bottom: clamp(1.5rem, 4vw, 2.5rem); }
.rg-page--std .rg-page__eyebrow { margin: 0 0 0.6em; font-weight: 800; letter-spacing: 0.28em; text-transform: uppercase; font-size: clamp(0.72rem, 1vw, 0.85rem); color: var(--rg-volt); }
.rg-page--std .rg-page__title { margin: 0; font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em; line-height: 1; font-size: clamp(2rem, 5vw, 3.6rem); color: #fff; }
/* WooCommerce injects an <h3>cart/checkout heading from the old content — hide any stray one */
.rg-page--wc .entry-content > h3:first-child { display: none; }

/* ---- shared WC field styling (billing/shipping/coupon inputs) ---- */
.rg-page--wc .woocommerce { color: rgba(255,255,255,0.9); }
.rg-page--wc h3, .rg-page--wc .cart-subtotal th, .rg-page--wc .order-total th { color: #fff; }
.rg-page--wc label { color: rgba(255,255,255,0.8); font-weight: 600; font-size: 0.9rem; }
.rg-page--wc .form-row { margin-bottom: 1rem; }
/* two-per-row layout (WC's dequeued layout.css used to provide these). Use grid on
   the field wrapper so first/last sit side by side; wide/full span both. */
/* Two-column form via our OWN .rg-fieldrow wrappers (template-controlled, so WC's
   locale JS + CSS cascade can't undo it). Each row is a flex line of 1–2 fields. */
/* the wrapper stacks the rows VERTICALLY (block) — force it, in case something set
   it to flex/grid, which would put every field on one line. */
.rg-page--wc .woocommerce-billing-fields__field-wrapper,
.rg-page--wc .woocommerce-shipping-fields__field-wrapper { display: block !important; }
/* .rg-fieldrow has inline display:flex from the template; children fill 50/50 */
.rg-fieldrow > .form-row, .rg-fieldrow > p.rg-half { flex: 1 1 0 !important; min-width: 0 !important; float: none !important; width: auto !important; margin: 0 0 1rem !important; }
.rg-fieldrow--1 > .form-row { flex: 1 1 100% !important; }
/* belt-and-suspenders: hide address line 2 + company + state */
.rg-page--wc #billing_address_2_field, .rg-page--wc #shipping_address_2_field,
.rg-page--wc #billing_company_field, .rg-page--wc #shipping_company_field,
.rg-page--wc .rg-hide-field { display: none !important; }
/* a rg-fieldrow that only holds a hidden field collapses cleanly */
.rg-page--wc .rg-fieldrow:has(> .rg-hide-field:only-child),
.rg-page--wc .rg-fieldrow:empty { display: none; }
@media (max-width: 560px) {
	.rg-page--wc .rg-fieldrow { flex-direction: column; gap: 0; }
}
/* broad + !important so WC/blocks default white inputs can't win */
.rg-page--wc input.input-text,
.rg-page--wc input[type="text"],
.rg-page--wc input[type="email"],
.rg-page--wc input[type="tel"],
.rg-page--wc input[type="password"],
.rg-page--wc input[type="number"],
.rg-page--wc input[type="search"],
.rg-page--wc textarea,
.rg-page--wc select,
.rg-page--wc .select2-container--default .select2-selection--single {
	width: 100%; padding: 0.85em 1.1em !important; border-radius: var(--rg-r-md, 14px) !important;
	background: rgba(0,0,0,0.3) !important; border: 1px solid rgba(255,255,255,0.14) !important;
	color: #fff !important; font: inherit; height: auto !important; line-height: 1.4 !important;
	box-shadow: none;
	transition: border-color 0.3s var(--rg-ease-out), box-shadow 0.3s var(--rg-ease-out);
}
.rg-page--wc input.input-text:focus,
.rg-page--wc input[type="text"]:focus,
.rg-page--wc input[type="email"]:focus,
.rg-page--wc input[type="tel"]:focus,
.rg-page--wc textarea:focus,
.rg-page--wc select:focus {
	outline: 0; border-color: var(--rg-volt) !important; box-shadow: 0 0 0 3px rgba(169,207,63,0.18) !important;
}
.rg-page--wc input::placeholder, .rg-page--wc textarea::placeholder { color: rgba(255,255,255,0.4) !important; }
.rg-page--wc .select2-container--default .select2-selection--single { display: flex; align-items: center; }
.rg-page--wc .select2-selection__rendered { color: #fff !important; line-height: 1.4 !important; padding: 0 !important; }
.rg-page--wc .select2-dropdown { background: #16161a; border-color: rgba(255,255,255,0.14); color: #fff; }
.rg-page--wc .select2-results__option--highlighted { background: var(--rg-violet) !important; }

/* ---- CART: 2-COLUMN LAYOUT (items left, totals right sticky) ----
   Scoped to body.woocommerce-cart (WP core body class) — reliable, no :has(). */
@media (min-width: 981px) {
	body.woocommerce-cart .rg-page--wc .woocommerce {
		display: grid;
		grid-template-columns: minmax(0, 1fr) 23rem;   /* items shrink-to-fit | fixed summary */
		gap: clamp(1.5rem, 3vw, 2.5rem); align-items: start;
	}
	body.woocommerce-cart .rg-page--wc .woocommerce-cart-form { grid-column: 1; margin: 0; min-width: 0; }
	body.woocommerce-cart .rg-page--wc .cart-collaterals { grid-column: 2; position: sticky; top: 6rem; min-width: 0; }
	body.woocommerce-cart .rg-page--wc .woocommerce-notices-wrapper { grid-column: 1 / -1; }
}

/* ---- CART TABLE → glass card ---- */
.woocommerce-cart-form { margin-bottom: 2rem; }
/* NOTE: scope the ITEMS-table rules to the CART FORM table only — the totals table
   also has .shop_table, so unscoped rules would wreck it (vertical text!). */
.woocommerce-cart-form table.shop_table {
	width: 100%; max-width: 100%; border: 1px solid rgba(255,255,255,0.09); border-radius: var(--rg-r-lg);
	background: rgba(255,255,255,0.03); border-collapse: separate; border-spacing: 0; overflow: hidden;
	table-layout: fixed;   /* fixed → columns obey the widths below, never overflow */
}
/* explicit column widths so the 6-col table always fits its grid track cleanly */
.woocommerce-cart-form td.product-remove,    .woocommerce-cart-form th.product-remove    { width: 3.2rem; padding-left: 0.9rem; padding-right: 0.3rem; }
.woocommerce-cart-form td.product-thumbnail, .woocommerce-cart-form th.product-thumbnail { width: 5.5rem; }
.woocommerce-cart-form td.product-name,      .woocommerce-cart-form th.product-name       { width: auto; }
.woocommerce-cart-form td.product-price,     .woocommerce-cart-form th.product-price      { width: 7.5rem; white-space: nowrap; }
.woocommerce-cart-form td.product-quantity,  .woocommerce-cart-form th.product-quantity   { width: 8rem; white-space: nowrap; }
.woocommerce-cart-form td.product-subtotal,  .woocommerce-cart-form th.product-subtotal   { width: 8rem; white-space: nowrap; }
.woocommerce-cart-form table.shop_table th, .woocommerce-cart-form table.shop_table td { white-space: normal; word-wrap: break-word; }
.woocommerce-cart-form table.shop_table thead th {
	background: rgba(255,255,255,0.02); color: var(--rg-ink-muted);
	font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 800;
	padding: 1em 1.2em; text-align: left; border-bottom: 1px solid rgba(255,255,255,0.08);
}
.woocommerce-cart-form table.shop_table td {
	padding: 1.1em 1em; border-top: 1px solid rgba(255,255,255,0.06); vertical-align: middle; color: rgba(255,255,255,0.9);
}
/* thumbnail cell — real product image on a light shelf */
.woocommerce-cart td.product-thumbnail { width: 84px; }
.woocommerce-cart td.product-thumbnail img {
	width: 64px !important; height: 64px !important; max-width: none; object-fit: contain;
	border-radius: 10px; background: #f4f5f7; padding: 4px; display: block;
}
.woocommerce-cart td.product-name { font-weight: 700; }
.woocommerce-cart td.product-name a { color: #fff; text-decoration: none; font-weight: 700; }
.woocommerce-cart td.product-name a:hover { color: var(--rg-volt); }
.woocommerce-cart td.product-name .variation { margin: 0.3em 0 0; font-size: 0.8rem; color: var(--rg-ink-muted); }
/* bulk savings badge (mp13-bulk-line-pill) → force BELOW the product name, purple
   background + white text. Appended after the name inline by the plugin — GLOBAL so
   it looks the same on cart, checkout order-review, AND the cart drawer. */
.mp13-bulk-line-pill {
	display: flex !important; width: max-content; align-items: center; gap: 0.35em; margin-top: 0.5em;
	padding: 0.3em 0.75em; border-radius: var(--rg-r-pill, 999px);
	background: var(--rg-violet) !important; border: 0 !important; color: #fff !important;
	font-size: 0.72rem !important; font-weight: 800; line-height: 1; letter-spacing: 0.01em;
	white-space: nowrap; vertical-align: middle;
}
.mp13-bulk-line-pill strong { color: #fff !important; }
.mp13-bulk-line-pill svg { color: #fff; opacity: 0.9; }
/* keep the product name link inline so the badge drops onto its own line under it */
.woocommerce-cart td.product-name > a,
.woocommerce-checkout #order_review .product-name > a { display: inline; }
.woocommerce-cart td.product-price { color: rgba(255,255,255,0.85); }
.woocommerce-cart td.product-price { color: rgba(255,255,255,0.85); }
.woocommerce-cart td.product-subtotal { color: var(--rg-volt); font-weight: 800; }
.woocommerce-cart .product-remove a.remove {
	display: inline-grid; place-items: center; width: 1.9rem; height: 1.9rem; border-radius: 50%;
	color: var(--rg-pink) !important; background: rgba(219,30,121,0.1); font-size: 1.1rem; text-decoration: none;
	transition: background 0.25s, color 0.25s, transform 0.25s;
}
.woocommerce-cart .product-remove a.remove:hover { background: var(--rg-pink); color: #fff !important; transform: rotate(90deg); }
/* qty box → input + our stacked +/- stepper (like the PDP). flex-nowrap so the input
   and stepper always sit side by side, never wrap. */
.woocommerce-cart .quantity { display: inline-flex; align-items: center; gap: 0.4rem; flex-wrap: nowrap; }
.woocommerce-cart .quantity input.qty {
	width: 3rem; flex: 0 0 auto; text-align: center; padding: 0.55em 0.2em; border-radius: 10px;
	background: rgba(0,0,0,0.3); border: 1px solid rgba(255,255,255,0.14); color: #fff;
	font-weight: 700; -moz-appearance: textfield;
}
.woocommerce-cart .quantity input.qty::-webkit-outer-spin-button,
.woocommerce-cart .quantity input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.woocommerce-cart .quantity .rg-qty-steps { gap: 0.2rem; flex: 0 0 auto; }
/* tighten cell padding on the numeric columns so figures have room */
.woocommerce-cart-form td.product-price, .woocommerce-cart-form td.product-quantity, .woocommerce-cart-form td.product-subtotal { padding-left: 0.6rem; padding-right: 0.6rem; }

/* AUTO-UPDATE: no manual Update button, no separate coupon row (coupon lives in the
   totals card). Hide the whole actions row's controls but keep the row for spacing. */
.woocommerce-cart .cart .actions { padding: 0; }
.woocommerce-cart .cart .actions .coupon,
.woocommerce-cart .cart .actions button[name="update_cart"],
.woocommerce-cart .cart .actions input[name="update_cart"] { display: none !important; }
/* subtle "updating" state while the cart auto-refreshes */
.woocommerce-cart-form.rg-cart-updating { opacity: 0.55; transition: opacity 0.2s ease; pointer-events: none; }

/* hide SHIPPING on the cart — sorted at checkout */
.woocommerce-cart .cart_totals .woocommerce-shipping-totals.shipping,
.woocommerce-cart .cart_totals .shipping-calculator-form,
.woocommerce-cart .cart_totals tr.shipping { display: none !important; }
.woocommerce-cart .button, .woocommerce .button.alt, .woocommerce #place_order {
	background: linear-gradient(100deg, var(--rg-violet), var(--rg-pink)) !important;
	color: #fff !important; border: 0 !important; border-radius: var(--rg-r-pill) !important;
	padding: 0.9em 1.8em !important; font-weight: 800 !important; text-transform: uppercase !important;
	letter-spacing: 0.03em !important; cursor: pointer; transition: transform 0.25s var(--rg-ease-out), box-shadow 0.25s var(--rg-ease-out); box-shadow: 0 0 24px rgba(219,30,121,0.3);
}
.woocommerce-cart .button:hover, .woocommerce .button.alt:hover, .woocommerce #place_order:hover { transform: translateY(-2px); box-shadow: 0 6px 30px rgba(219,30,121,0.45); }
.woocommerce-cart .button[name="update_cart"] {
	background: transparent !important; color: #fff !important; border: 1px solid rgba(255,255,255,0.25) !important; box-shadow: none;
}
.woocommerce-cart .button[name="update_cart"]:hover { background: var(--rg-violet) !important; border-color: var(--rg-violet) !important; }

/* ---- CART TOTALS → glass card (sits in the sticky right column) ---- */
.cart-collaterals { width: 100%; }
.cart-collaterals .cross-sells { display: none; }   /* hide up-sells for a clean summary column */
.cart_totals {
	width: 100%; padding: clamp(1.6rem, 3.5vw, 2.4rem);
	border: 1px solid rgba(255,255,255,0.09); border-radius: var(--rg-r-lg);
	background: radial-gradient(120% 100% at 100% 0%, rgba(123,74,168,0.12), transparent 60%), rgba(255,255,255,0.03);
}
/* the totals TABLE itself has NO border/radius — only divider lines between rows */
.rg-page--wc .cart_totals table.shop_table,
.woocommerce-cart .cart-collaterals .cart_totals table.shop_table {
	border: 0 !important; border-radius: 0 !important; background: transparent !important; overflow: visible !important;
}
.cart_totals h2 { margin: 0 0 1rem; font-weight: 900; text-transform: uppercase; font-size: 1.4rem; color: #fff; }
/* higher-specificity prefix to beat woocommerce.css's 3-class rules */
.rg-page--wc .cart_totals table,
.woocommerce-cart .cart-collaterals .cart_totals table { width: 100% !important; border-collapse: collapse !important; table-layout: fixed !important; margin: 0 !important; }
.rg-page--wc .cart_totals table tr th, .rg-page--wc .cart_totals table tr td,
.woocommerce-cart .cart-collaterals .cart_totals table tr th,
.woocommerce-cart .cart-collaterals .cart_totals table tr td {
	padding: 0.7em 0 !important; border: 0 !important; border-top: 0 !important;
	border-bottom: 1px solid rgba(255,255,255,0.08) !important;
	color: rgba(255,255,255,0.85) !important; vertical-align: top; word-wrap: break-word;
}
/* last row (Total) — no divider under it */
.rg-page--wc .cart_totals table tr:last-child th, .rg-page--wc .cart_totals table tr:last-child td,
.woocommerce-cart .cart-collaterals .cart_totals table tr:last-child th,
.woocommerce-cart .cart-collaterals .cart_totals table tr:last-child td { border-bottom: 0 !important; }
.rg-page--wc .cart_totals th,
.woocommerce-cart .cart-collaterals .cart_totals table th { font-weight: 700; width: 42% !important; text-align: left !important; }
.rg-page--wc .cart_totals td,
.woocommerce-cart .cart-collaterals .cart_totals table td { width: 58% !important; text-align: right !important; }
/* hide the DEFAULT coupon field in the items-table actions row (relocated into the
   totals card as a toggle). Keep the "Update cart" button. */
.woocommerce-cart-form .actions .coupon { display: none !important; }

/* ---- Rogue coupon toggle (inside the totals card) ---- */
.rg-coupon { margin: 0 0 1.2rem; }
.rg-coupon__toggle {
	display: inline-flex; align-items: center; gap: 0.5em; cursor: pointer;
	background: none; border: 0; padding: 0; color: var(--rg-volt);
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.8rem;
}
.rg-coupon__toggle svg { transition: transform 0.3s var(--rg-ease-out); }
.rg-coupon.is-open .rg-coupon__toggle svg { transform: rotate(45deg); }
.rg-coupon__panel {
	display: grid; grid-template-columns: 1fr auto; gap: 0.5rem; margin-top: 0.8rem;
	overflow: hidden; max-height: 0; opacity: 0;
	transition: max-height 0.35s var(--rg-ease-out), opacity 0.3s var(--rg-ease-out), margin-top 0.35s var(--rg-ease-out);
}
.rg-coupon.is-open .rg-coupon__panel { max-height: 4rem; opacity: 1; }
.rg-coupon__input {
	width: 100%; padding: 0.75em 1em; border-radius: var(--rg-r-md, 12px);
	background: rgba(0,0,0,0.3); border: 1px solid rgba(255,255,255,0.14); color: #fff; font: inherit;
}
.rg-coupon__input:focus { outline: 0; border-color: var(--rg-volt); box-shadow: 0 0 0 3px rgba(169,207,63,0.18); }
.rg-coupon__apply {
	padding: 0.75em 1.3em !important; border-radius: var(--rg-r-pill) !important;
	background: linear-gradient(100deg, var(--rg-violet), var(--rg-pink)) !important; color: #fff !important;
	border: 0 !important; font-weight: 800 !important; text-transform: uppercase !important; cursor: pointer; white-space: nowrap;
}
.rg-coupon__apply:hover { transform: translateY(-1px); }

/* shipping method list inside totals — compact, no bullet overflow */
.cart_totals .shipping ul#shipping_method { margin: 0; padding: 0; list-style: none; }
.cart_totals .shipping .woocommerce-shipping-destination { font-size: 0.8rem; color: var(--rg-ink-muted); }
.cart_totals .shipping-calculator-button { color: var(--rg-volt); }
.cart_totals .order-total th, .cart_totals .order-total td { font-size: 1.15rem; font-weight: 900; color: #fff; border-bottom: 0; padding-top: 1em; }
.cart_totals .order-total .amount { color: var(--rg-volt); }
.cart_totals .wc-proceed-to-checkout { margin-top: 1.4rem; }
.cart_totals .wc-proceed-to-checkout .checkout-button { display: flex; align-items: center; justify-content: center; width: 100%; text-align: center; }

/* "Earn Rogue Points" banner (cart + checkout) */
.rg-cart-points {
	display: flex; align-items: center; gap: 0.7em; margin: 1rem 0;
	padding: 0.8em 1em; border-radius: var(--rg-r-md, 14px);
	background: rgba(169,207,63,0.1); border: 1px solid rgba(169,207,63,0.32);
}
.rg-cart-points__mark { width: 1.4em; height: 1.4em; object-fit: contain; flex: 0 0 auto; }
.rg-cart-points__text { color: rgba(255,255,255,0.85); font-size: 0.9rem; font-weight: 600; }
.rg-cart-points__text strong { color: var(--rg-volt); font-weight: 900; }
.rg-cart-points-row td { padding: 0 !important; border: 0 !important; }
.rg-cart-points-row .rg-cart-points { margin: 0.8rem 0 0; }

/* ======================= CHECKOUT — 2-column premium ======================= */
/* Return-to-cart button (rendered above the form) */
.rg-checkout-back { margin: 0 0 1.6rem; }
.rg-checkout-back a {
	display: inline-flex; align-items: center; gap: 0.5em;
	padding: 0.6em 1.2em; border-radius: var(--rg-r-pill);
	background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.16);
	color: #fff; text-decoration: none; font-weight: 700; font-size: 0.85rem;
	transition: background 0.3s var(--rg-ease-out), border-color 0.3s var(--rg-ease-out), transform 0.3s var(--rg-ease-out);
}
.rg-checkout-back a:hover { background: var(--rg-violet); border-color: var(--rg-violet); transform: translateX(-3px); }
.rg-checkout-back svg { transition: transform 0.3s var(--rg-ease-out); }
.rg-checkout-back a:hover svg { transform: translateX(-3px); }

/* the 2-column grid — details left, sticky order summary right. #customer_details
   and #order_review(+heading) are the only direct children of form.checkout. */
@media (min-width: 981px) {
	body.woocommerce-checkout form.checkout.woocommerce-checkout {
		display: grid; grid-template-columns: minmax(0, 1fr) 24rem;
		grid-template-rows: auto 1fr;
		gap: 0 clamp(1.5rem, 3vw, 3rem); align-items: start;
	}
	body.woocommerce-checkout form.checkout #customer_details { grid-column: 1; grid-row: 1 / span 2; min-width: 0; }
	body.woocommerce-checkout form.checkout #order_review_heading { grid-column: 2; grid-row: 1; margin: 0 0 1rem; }
	body.woocommerce-checkout form.checkout #order_review { grid-column: 2; grid-row: 2; position: sticky; top: 6rem; min-width: 0; }
}
.woocommerce-checkout #order_review_heading { font-weight: 900; text-transform: uppercase; font-size: 1.4rem; color: #fff; }
/* customer_details holds billing + shipping stacked; make each a glass card */
.woocommerce-checkout #customer_details .col2-set { display: block; }
.woocommerce-checkout .woocommerce-billing-fields,
.woocommerce-checkout .woocommerce-shipping-fields,
.woocommerce-checkout .woocommerce-additional-fields,
.woocommerce-checkout #order_review {
	padding: clamp(1.4rem, 3vw, 2rem); margin-bottom: 1.5rem;
	border: 1px solid rgba(255,255,255,0.09); border-radius: var(--rg-r-lg);
	background: rgba(255,255,255,0.03);
}
.woocommerce-checkout #order_review {
	background: radial-gradient(120% 100% at 100% 0%, rgba(123,74,168,0.12), transparent 60%), rgba(255,255,255,0.03);
}
.woocommerce-checkout h3, .woocommerce-checkout .woocommerce-billing-fields > h3,
.woocommerce-checkout #ship-to-different-address { margin: 0 0 1.2rem; font-weight: 900; text-transform: uppercase; font-size: 1.15rem; color: #fff; }
.woocommerce-checkout #ship-to-different-address label { font-weight: 900; text-transform: uppercase; color: #fff; }

/* order review TABLE (no border box, dividers only, like the cart totals) */
.woocommerce-checkout #order_review table.shop_table { width: 100% !important; border: 0 !important; background: transparent !important; border-collapse: collapse !important; margin: 0 !important; }
.woocommerce-checkout #order_review table.shop_table th,
.woocommerce-checkout #order_review table.shop_table td { padding: 0.6em 0 !important; border: 0 !important; border-bottom: 1px solid rgba(255,255,255,0.08) !important; text-align: right; color: rgba(255,255,255,0.85); vertical-align: top; }
.woocommerce-checkout #order_review .product-name,
.woocommerce-checkout #order_review thead .product-name { text-align: left !important; color: #fff; }
.woocommerce-checkout #order_review .product-name .product-quantity { color: var(--rg-ink-muted); font-weight: 600; }
.woocommerce-checkout #order_review tfoot .order-total th,
.woocommerce-checkout #order_review tfoot .order-total td { font-size: 1.2rem !important; font-weight: 900 !important; color: #fff !important; border-bottom: 0 !important; padding-top: 0.9em !important; }
.woocommerce-checkout #order_review .order-total .amount { color: var(--rg-volt); }

/* payment methods */
.woocommerce-checkout #payment { background: transparent !important; border-radius: 0; margin-top: 1.2rem; }
.woocommerce-checkout #payment ul.payment_methods { border: 0 !important; padding: 0; margin: 0 0 1rem; list-style: none; }
.woocommerce-checkout #payment ul.payment_methods li { padding: 0.7em 0; border-bottom: 1px solid rgba(255,255,255,0.08); color: rgba(255,255,255,0.9); }
.woocommerce-checkout #payment ul.payment_methods li input[type="radio"] { accent-color: var(--rg-volt); }
.woocommerce-checkout #payment ul.payment_methods li label { color: #fff; font-weight: 600; }
/* NOTE the `div.` — Woo ships `.woocommerce-checkout #payment div.payment_box
   { background-color:#dcd7e2 }`, which is element+class and therefore OUTRANKS a
   bare `.payment_box`. Without matching that specificity the box stayed light
   grey on the dark checkout. */
.woocommerce-checkout #payment div.payment_box,
.woocommerce-cart #payment div.payment_box,
#add_payment_method #payment div.payment_box {
	background: rgba(0,0,0,0.25) !important;
	background-color: rgba(0,0,0,0.25) !important;
	border-radius: 10px;
	padding: 1em;
	margin-top: 0.6em;
	color: rgba(255,255,255,0.7) !important;
	font-size: 0.85rem;
}
.woocommerce-checkout #payment .payment_box::before { display: none !important; }
.woocommerce-checkout #payment .woocommerce-privacy-policy-text { color: var(--rg-ink-muted); font-size: 0.8rem; margin-top: 1rem; }
/* Place Order → proper Rogue CTA (magnetic + arrow injected by JS) */
.woocommerce-checkout #place_order {
	width: 100%; margin-top: 1rem;
	display: inline-flex !important; align-items: center; justify-content: center; gap: 0.5em;
	font-family: inherit !important; font-weight: 900 !important; text-transform: uppercase; letter-spacing: 0.04em;
	position: relative; overflow: hidden;
}
.woocommerce-checkout #place_order .rg-btn__label { font-family: inherit; font-weight: 900; }
/* the injected arrow: hidden until hover, then slides in (matches the CTA language) */
.woocommerce-checkout #place_order .rg-btn__arrow {
	display: inline-flex; width: 0; opacity: 0; overflow: hidden;
	transform: translateX(-6px); transition: width 0.35s var(--rg-ease-out), opacity 0.3s var(--rg-ease-out), transform 0.35s var(--rg-ease-out);
}
.woocommerce-checkout #place_order:hover .rg-btn__arrow { width: 1.4em; opacity: 1; transform: translateX(0); }
/* checkbox rows (ship to different, terms) */
.woocommerce-checkout .woocommerce-form__label-for-checkbox { display: flex; align-items: flex-start; gap: 0.6em; color: rgba(255,255,255,0.85); }
.woocommerce-checkout .woocommerce-form__input-checkbox { accent-color: var(--rg-volt); margin-top: 0.2em; }

/* ---- CHECKOUT coupon → compact toggle like the cart's (not the big info bar) ---- */
.woocommerce-checkout .woocommerce-form-coupon-toggle { margin-bottom: 1.4rem; }
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info {
	background: transparent !important; border: 0 !important; box-shadow: none !important;
	padding: 0 !important; margin: 0 !important; color: var(--rg-volt) !important;
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.85rem;
	-webkit-backdrop-filter: none !important; backdrop-filter: none !important;
}
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info::before { display: none !important; content: none !important; }
.woocommerce-checkout .woocommerce-form-coupon-toggle .showcoupon { color: var(--rg-volt) !important; text-decoration: underline; text-underline-offset: 3px; }
/* the revealed coupon form → glass row matching the cart coupon */
.woocommerce-checkout form.checkout_coupon {
	margin: 1rem 0 1.5rem !important; padding: 1rem 1.2rem !important;
	border: 1px solid rgba(255,255,255,0.12) !important; border-radius: var(--rg-r-lg) !important;
	background: rgba(255,255,255,0.03) !important; display: flex; gap: 0.6rem; align-items: center;
}
/* the two <p> rows inside are the INPUT (first) and the APPLY button (last) — lay them
   side by side. Override the global grid-column rules (these aren't in a grid here). */
.woocommerce-checkout form.checkout_coupon .form-row {
	margin: 0 !important; padding: 0 !important; display: block; grid-column: auto !important;
}
.woocommerce-checkout form.checkout_coupon .form-row-first { flex: 1 1 auto; }
.woocommerce-checkout form.checkout_coupon .form-row-last { flex: 0 0 auto; }
.woocommerce-checkout form.checkout_coupon input[name="coupon_code"] {
	margin: 0; width: 100%; font: inherit !important;   /* Montserrat, not a fallback */
}
.woocommerce-checkout form.checkout_coupon label.screen-reader-text { position: absolute; left: -9999px; }
.woocommerce-checkout form.checkout_coupon button[name="apply_coupon"] {
	padding: 0.85em 1.4em !important; border-radius: var(--rg-r-pill) !important;
	background: linear-gradient(100deg, var(--rg-violet), var(--rg-pink)) !important; color: #fff !important;
	border: 0 !important; font: inherit !important; font-weight: 800 !important; text-transform: uppercase !important; white-space: nowrap; cursor: pointer;
}

/* coupon toggle / notices */
.woocommerce-info, .woocommerce-message, .woocommerce-error {
	position: relative;
	background: rgba(20,22,16,0.94); border: 1px solid rgba(255,255,255,0.12); border-left: 3px solid var(--rg-volt);
	color: #fff; border-radius: 12px; padding: 0.9em 1.2em 0.9em 2.8em; list-style: none; margin: 0 0 1.5rem;
	font-weight: 600; line-height: 1.4; box-shadow: 0 8px 24px rgba(0,0,0,0.35);
	-webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
/* WC's ::before is a font-icon glyph that was overlapping the text — restyle it as a
   clean, properly-inset volt checkmark. */
.woocommerce-info::before, .woocommerce-message::before, .woocommerce-error::before {
	position: absolute; left: 1em; top: 50%; transform: translateY(-50%);
	margin: 0; color: var(--rg-volt); font-size: 1.1em; line-height: 1;
}
.woocommerce-error::before { color: var(--rg-pink); }
.woocommerce-error { border-left-color: var(--rg-pink); }
.woocommerce-info a, .woocommerce-message a { color: var(--rg-volt); text-decoration: underline; }
/* the message spans full width in the cart grid, not squeezed in one column */
.woocommerce-cart .woocommerce-message, .woocommerce-cart .woocommerce-info, .woocommerce-cart .woocommerce-error { grid-column: 1 / -1; }
.woocommerce-message .button, .woocommerce-info .button { margin-left: 1rem; }

/* empty cart state */
.cart-empty.woocommerce-info { text-align: center; }
.woocommerce .return-to-shop .button { display: inline-flex; margin-top: 1rem; }

/* mobile: cart ITEMS table becomes stacked cards (scoped to the form so the totals
   table is untouched). Also drop the fixed table-layout so it can stack. */
@media (max-width: 768px) {
	.woocommerce-cart-form table.shop_table { table-layout: auto; }
	.woocommerce-cart-form table.shop_table thead { display: none; }
	.woocommerce-cart-form table.shop_table tr { display: block; border-top: 1px solid rgba(255,255,255,0.08); padding: 0.5em 0; }
	.woocommerce-cart-form table.shop_table td { display: flex; width: auto !important; justify-content: space-between; align-items: center; border: 0; padding: 0.5em 1.2em; }
	.woocommerce-cart-form table.shop_table td::before { content: attr(data-title); font-weight: 700; color: var(--rg-ink-muted); text-transform: uppercase; font-size: 0.72rem; }
	.cart_totals { width: 100%; }
}

/* ============================================================================
   THANK-YOU / order-received — Rogue bespoke confirmation.
   ========================================================================== */
.rg-thankyou { padding-bottom: clamp(3rem, 8vw, 6rem); }
.rg-thankyou__hero {
	position: relative; overflow: hidden; text-align: center;
	padding-block: clamp(3.5rem, 9vw, 7rem) clamp(2.5rem, 6vw, 4rem);
}
.rg-thankyou__glow {
	position: absolute; left: 50%; top: -10%; width: 60vw; height: 60vw; max-width: 900px; max-height: 900px;
	transform: translateX(-50%); z-index: 0; pointer-events: none;
	background: radial-gradient(circle, rgba(169,207,63,0.18), rgba(123,74,168,0.16) 45%, transparent 70%);
	filter: blur(40px);
}
.rg-thankyou__hero-inner { position: relative; z-index: 1; max-width: 60ch; }
.rg-thankyou__check {
	display: inline-grid; place-items: center; width: 4.6rem; height: 4.6rem; margin: 0 auto 1.4rem;
	border-radius: 50%; color: #000; background: var(--rg-volt);
	box-shadow: 0 0 0 8px rgba(169,207,63,0.14), 0 12px 34px rgba(169,207,63,0.35);
	animation: rg-ty-pop 0.6s var(--rg-ease-out) both;
}
@keyframes rg-ty-pop { 0% { transform: scale(0); opacity: 0; } 60% { transform: scale(1.12); } 100% { transform: scale(1); opacity: 1; } }
.rg-thankyou__eyebrow { margin: 0 0 0.6em; font-weight: 800; letter-spacing: 0.28em; text-transform: uppercase; font-size: clamp(0.72rem, 1vw, 0.85rem); color: var(--rg-volt); }
.rg-thankyou__title { margin: 0 0 0.5em; font-weight: 900; text-transform: uppercase; letter-spacing: -0.015em; line-height: 1.02; font-size: clamp(2rem, 5vw, 3.6rem); color: #fff; }
.rg-thankyou__lead { margin: 0 auto 2em; max-width: 46ch; color: rgba(255,255,255,0.8); font-size: clamp(1.02rem, 1.3vw, 1.2rem); }
.rg-thankyou__hero--failed .rg-thankyou__eyebrow, .rg-thankyou__hero--failed .rg-thankyou__title { color: var(--rg-pink); }

/* quick-facts row */
.rg-thankyou__facts {
	display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px;
	max-width: 44rem; margin: 0 auto 1.6rem; border-radius: var(--rg-r-lg); overflow: hidden;
	background: rgba(255,255,255,0.09); border: 1px solid rgba(255,255,255,0.09);
}
.rg-thankyou__fact { background: rgba(255,255,255,0.03); padding: 1.1em 0.6em; display: flex; flex-direction: column; gap: 0.35em; }
.rg-thankyou__fact-label { color: var(--rg-ink-muted); font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; }
.rg-thankyou__fact-value { color: #fff; font-weight: 800; font-size: 0.98rem; }
.rg-thankyou__fact-value--total { color: var(--rg-volt); }
@media (max-width: 620px) { .rg-thankyou__facts { grid-template-columns: repeat(2, 1fr); } }

/* points earned pill */
.rg-thankyou__points {
	display: inline-flex; align-items: center; gap: 0.6em; margin: 0 0 2rem;
	padding: 0.7em 1.3em; border-radius: var(--rg-r-pill); text-decoration: none;
	background: rgba(169,207,63,0.1); border: 1px solid rgba(169,207,63,0.32); color: rgba(255,255,255,0.9);
	transition: background 0.3s var(--rg-ease-out), border-color 0.3s var(--rg-ease-out), transform 0.3s var(--rg-ease-out);
}
a.rg-thankyou__points:hover { background: rgba(169,207,63,0.16); border-color: rgba(169,207,63,0.5); transform: translateY(-2px); }
.rg-thankyou__points-mark { width: 1.5em; height: 1.5em; object-fit: contain; }
.rg-thankyou__points strong { color: var(--rg-volt); }
.rg-thankyou__points-arrow { color: var(--rg-volt); transition: transform 0.3s var(--rg-ease-out); }
a.rg-thankyou__points:hover .rg-thankyou__points-arrow { transform: translateX(3px); }

.rg-thankyou__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 1.2rem; }
.rg-thankyou__link { color: rgba(255,255,255,0.75); text-decoration: underline; text-underline-offset: 3px; font-weight: 600; }
.rg-thankyou__link:hover { color: var(--rg-volt); }

/* ---- WooCommerce order details (items + addresses) → glass cards ---- */
/* order details + customer details SIDE BY SIDE (2-col), compact */
.rg-thankyou__details {
	display: grid; grid-template-columns: 1.25fr 0.75fr; gap: clamp(1.2rem, 2.5vw, 2rem); align-items: start;
}
.rg-thankyou__details .woocommerce-order-details { grid-column: 1; }
.rg-thankyou__details .woocommerce-customer-details { grid-column: 2; }
@media (max-width: 900px) { .rg-thankyou__details { grid-template-columns: 1fr; } .rg-thankyou__details .woocommerce-order-details, .rg-thankyou__details .woocommerce-customer-details { grid-column: 1; } }
.rg-thankyou .woocommerce-order-details, .rg-thankyou .woocommerce-customer-details {
	padding: clamp(1.4rem, 3vw, 2rem); margin: 0;
	border: 1px solid rgba(255,255,255,0.09); border-radius: var(--rg-r-lg);
	background: rgba(255,255,255,0.03);
}
.rg-thankyou .woocommerce-order-details__title, .rg-thankyou .woocommerce-column__title,
.rg-thankyou section.woocommerce-customer-details h2 { margin: 0 0 1rem; font-weight: 900; text-transform: uppercase; font-size: 1.15rem; color: #fff; }
/* the inner table: NO border box — dividers only (WC gives .shop_table a 1px border) */
.rg-thankyou table.woocommerce-table--order-details {
	width: 100% !important; border: 0 !important; border-radius: 0 !important; background: transparent !important;
	border-collapse: collapse !important; margin: 0 !important;
}
.rg-thankyou table.woocommerce-table--order-details th,
.rg-thankyou table.woocommerce-table--order-details td { padding: 0.7em 0 !important; border: 0 !important; border-bottom: 1px solid rgba(255,255,255,0.08) !important; text-align: left; color: rgba(255,255,255,0.85); }
.rg-thankyou table.woocommerce-table--order-details td.woocommerce-table__product-total,
.rg-thankyou table.woocommerce-table--order-details th.woocommerce-table__product-total { text-align: right; white-space: nowrap; }
.rg-thankyou .woocommerce-table--order-details tfoot th,
.rg-thankyou .woocommerce-table--order-details tfoot td { font-weight: 800; color: #fff; }
.rg-thankyou .woocommerce-table--order-details tfoot tr:last-child th,
.rg-thankyou .woocommerce-table--order-details tfoot tr:last-child td { font-size: 1.1rem; color: var(--rg-volt); border-bottom: 0; }
.rg-thankyou .woocommerce-table--order-details a { color: #fff; text-decoration: none; font-weight: 700; }
.rg-thankyou .woocommerce-table--order-details a:hover { color: var(--rg-volt); }
.rg-thankyou .wc-item-meta, .rg-thankyou .wc-item-meta li { list-style: none; margin: 0.3em 0 0; padding: 0; color: var(--rg-ink-muted); font-size: 0.82rem; }
/* customer addresses stack vertically in the narrow right column */
.rg-thankyou .woocommerce-customer-details .woocommerce-columns--addresses { display: flex; flex-direction: column; gap: 1.4rem; }
.rg-thankyou .woocommerce-customer-details .woocommerce-column { margin: 0; }
.rg-thankyou .woocommerce-customer-details address { color: rgba(255,255,255,0.85); font-style: normal; line-height: 1.7; border: 0; padding: 0; }
/* the bulk savings badge on order items → same purple pill */
.rg-thankyou .mp13-bulk-line-pill { margin-top: 0.4em; }

/* ============================================================================
   WISHLIST page — shop-style grid of favourites.
   ========================================================================== */
.rg-wishlist { padding-block: clamp(2rem, 5vw, 4rem) clamp(3rem, 8vw, 6rem); }
.rg-wishlist__count { margin: 0 0 1.4rem; color: var(--rg-ink-muted); font-weight: 700; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.06em; }
/* reuse the shop grid */
.rg-wishlist__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: clamp(1.2rem, 2.4vw, 2rem); list-style: none; margin: 0; padding: 0; }
/* a card being removed fades + collapses */
.rg-wishlist__grid .rg-shop-cell { transition: opacity 0.35s var(--rg-ease-out), transform 0.35s var(--rg-ease-out); }
.rg-wishlist__grid .rg-shop-cell.is-removing { opacity: 0; transform: scale(0.92); pointer-events: none; }

/* empty state */
.rg-wishlist__empty { text-align: center; max-width: 40ch; margin: clamp(2rem, 6vw, 5rem) auto; padding: clamp(2rem, 5vw, 3.5rem); border: 1px solid rgba(255,255,255,0.09); border-radius: var(--rg-r-xl); background: radial-gradient(120% 120% at 50% 0%, rgba(123,74,168,0.14), transparent 60%), rgba(255,255,255,0.02); }
.rg-wishlist__empty-ic { display: inline-grid; place-items: center; width: 5rem; height: 5rem; margin-bottom: 1.2rem; border-radius: 50%; color: var(--rg-violet); background: rgba(123,74,168,0.14); }
.rg-wishlist__empty-title { margin: 0 0 0.4em; font-weight: 900; text-transform: uppercase; font-size: clamp(1.4rem, 3vw, 2rem); color: #fff; }
.rg-wishlist__empty-text { margin: 0 auto 1.8em; color: var(--rg-ink-muted); line-height: 1.6; }
.rg-wishlist__empty-cta { display: inline-flex; }

/* ============================================================================
   MY ACCOUNT — dark-glass dashboard grid + styled endpoints.
   ========================================================================== */
/* the account content already sits in .rg-page--wc via page.php */
.rg-account__head { margin-bottom: clamp(1.5rem, 4vw, 2.5rem); }
.rg-account__eyebrow { margin: 0 0 0.6em; font-weight: 800; letter-spacing: 0.28em; text-transform: uppercase; font-size: clamp(0.72rem, 1vw, 0.85rem); color: var(--rg-volt); }
.rg-account__title { margin: 0; font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em; line-height: 1; font-size: clamp(1.8rem, 4vw, 3rem); color: #fff; }

/* dashboard GRID */
.rg-account__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(1rem, 2vw, 1.4rem); }
@media (max-width: 620px) { .rg-account__grid { grid-template-columns: 1fr; } }

/* base card */
.rg-account-card {
	position: relative; display: flex; align-items: center; gap: 1rem; overflow: hidden;
	padding: clamp(1.2rem, 2.4vw, 1.6rem); border-radius: var(--rg-r-lg); text-decoration: none;
	background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.09);
	transition: transform 0.4s var(--rg-ease-out), border-color 0.4s var(--rg-ease-out), background 0.4s var(--rg-ease-out);
}
.rg-account-card:hover { transform: translateY(-4px); border-color: rgba(169,207,63,0.4); background: rgba(255,255,255,0.05); }
.rg-account-card__icon { flex: 0 0 auto; width: 3rem; height: 3rem; display: grid; place-items: center; border-radius: 14px; background: rgba(123,74,168,0.16); color: var(--rg-volt); }
.rg-account-card__body { display: flex; flex-direction: column; gap: 0.2em; margin-right: auto; }
.rg-account-card__label { color: #fff; font-weight: 900; text-transform: uppercase; letter-spacing: 0.01em; font-size: 1.05rem; }
.rg-account-card__desc { color: var(--rg-ink-muted); font-size: 0.85rem; }
.rg-account-card__meta { color: var(--rg-volt); font-weight: 800; font-size: 0.8rem; white-space: nowrap; }
.rg-account-card__arrow { flex: 0 0 auto; color: rgba(255,255,255,0.4); transition: transform 0.35s var(--rg-ease-out), color 0.35s; }
.rg-account-card:hover .rg-account-card__arrow { color: var(--rg-volt); transform: translateX(4px); }
.rg-account-card--customer-logout:hover { border-color: rgba(219,30,121,0.4); }
.rg-account-card--customer-logout:hover .rg-account-card__icon { color: var(--rg-pink); }

/* Rogue Points feature card — spans full width, richer */
.rg-account-card--points {
	grid-column: 1 / -1; flex-direction: row; align-items: center; gap: 1.2rem;
	background: radial-gradient(120% 160% at 100% 0%, rgba(169,207,63,0.16), transparent 55%), radial-gradient(100% 140% at 0% 100%, rgba(123,74,168,0.18), transparent 60%), rgba(255,255,255,0.03);
	border-color: rgba(169,207,63,0.28);
}
.rg-account-card--points .rg-account-card__glow { position: absolute; right: -10%; top: -40%; width: 40%; height: 180%; background: radial-gradient(circle, rgba(169,207,63,0.25), transparent 70%); filter: blur(30px); pointer-events: none; }
.rg-account-card__mascot { flex: 0 0 auto; width: 3rem; height: 3rem; object-fit: contain; position: relative; z-index: 1; }
.rg-account-card__points-num { position: relative; z-index: 1; font-weight: 900; font-size: clamp(2rem, 4vw, 2.8rem); color: var(--rg-volt); line-height: 1; }
.rg-account-card__points-label { position: relative; z-index: 1; color: #fff; font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.9rem; align-self: center; }
.rg-account-card__cta { position: relative; z-index: 1; margin-left: auto; display: inline-flex; align-items: center; gap: 0.4em; color: #fff; font-weight: 800; text-transform: uppercase; font-size: 0.78rem; letter-spacing: 0.04em; }
.rg-account-card--points:hover .rg-account-card__cta { color: var(--rg-volt); }

/* ---- NAVIGATION (on sub-pages: nav left, content right) ---- */
@media (min-width: 861px) {
	.woocommerce-account:not(.rg-account-is-dashboard) .woocommerce-MyAccount-content { }
	.rg-page--wc .woocommerce-account .woocommerce { }
}
.woocommerce-MyAccount-navigation { margin-bottom: 2rem; }
.woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.woocommerce-MyAccount-navigation li a {
	display: inline-flex; align-items: center; padding: 0.6em 1.1em; border-radius: var(--rg-r-pill);
	background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.1); color: rgba(255,255,255,0.85);
	text-decoration: none; font-weight: 700; font-size: 0.85rem; transition: background 0.3s, border-color 0.3s, color 0.3s;
}
.woocommerce-MyAccount-navigation li a:hover { border-color: rgba(169,207,63,0.4); color: var(--rg-volt); }
.woocommerce-MyAccount-navigation li.is-active a { background: var(--rg-volt); color: #000; border-color: var(--rg-volt); }

/* ---- generic account content (orders table, addresses, forms) ---- */
.rg-page--wc .woocommerce-MyAccount-content { color: rgba(255,255,255,0.9); }
.rg-page--wc .woocommerce-MyAccount-content h2, .rg-page--wc .woocommerce-MyAccount-content h3 { color: #fff; font-weight: 900; text-transform: uppercase; }
.rg-page--wc .woocommerce-orders-table, .rg-page--wc table.shop_table.account-orders-table {
	width: 100%; border-collapse: collapse; border: 0 !important; background: rgba(255,255,255,0.03); border-radius: var(--rg-r-lg); overflow: hidden;
}
.rg-page--wc .woocommerce-orders-table th { background: rgba(255,255,255,0.02); color: var(--rg-ink-muted); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.06em; padding: 1em 1.1em; text-align: left; }
.rg-page--wc .woocommerce-orders-table td { padding: 1em 1.1em; border-top: 1px solid rgba(255,255,255,0.06); color: rgba(255,255,255,0.85); }
.rg-page--wc .woocommerce-orders-table .woocommerce-button, .rg-page--wc .woocommerce-MyAccount-content .button {
	background: linear-gradient(100deg, var(--rg-violet), var(--rg-pink)) !important; color: #fff !important; border: 0 !important;
	border-radius: var(--rg-r-pill) !important; padding: 0.6em 1.3em !important; font-weight: 800 !important; text-transform: uppercase !important; text-decoration: none;
}
.rg-page--wc .woocommerce-MyAccount-content mark, .rg-page--wc .order-status { background: rgba(169,207,63,0.15); color: var(--rg-volt); padding: 0.15em 0.6em; border-radius: 999px; font-weight: 700; }
/* address cards */
.rg-page--wc .woocommerce-Addresses { display: grid; grid-template-columns: 1fr 1fr; gap: 1.4rem; margin-top: 1rem; }
.rg-page--wc .woocommerce-Address { padding: 1.4rem; border: 1px solid rgba(255,255,255,0.09); border-radius: var(--rg-r-lg); background: rgba(255,255,255,0.03); }
.rg-page--wc .woocommerce-Address address { color: rgba(255,255,255,0.85); font-style: normal; line-height: 1.7; }
@media (max-width: 620px) { .rg-page--wc .woocommerce-Addresses { grid-template-columns: 1fr; } }

/* edit-account form: branded password fieldset + field descriptions */
.rg-page--wc .woocommerce-EditAccountForm fieldset.rg-account-password {
	margin: 0.5rem 0 1.5rem; padding: clamp(1.2rem, 2.5vw, 1.6rem);
	border: 1px solid rgba(255,255,255,0.09); border-radius: var(--rg-r-lg); background: rgba(255,255,255,0.02);
}
.rg-page--wc .woocommerce-EditAccountForm fieldset.rg-account-password legend { padding: 0 0.5em; color: var(--rg-volt); font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.8rem; }
.rg-page--wc .woocommerce-EditAccountForm #account_display_name_description em { display: block; margin-top: 0.4em; color: var(--rg-ink-muted); font-size: 0.78rem; font-style: normal; }

/* ---- Rogue Points endpoint: balance + stats + ledger ---- */
.rg-acc-points__top { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: clamp(1.2rem, 3vw, 2rem); align-items: stretch; margin-bottom: clamp(1.5rem, 3vw, 2.2rem); }
@media (max-width: 780px) { .rg-acc-points__top { grid-template-columns: 1fr; } }
.rg-acc-points__card {
	display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 0.2rem;
	padding: clamp(1.8rem, 4vw, 2.6rem); border-radius: var(--rg-r-xl);
	background: radial-gradient(120% 120% at 50% 0%, rgba(169,207,63,0.18), transparent 55%), radial-gradient(100% 140% at 0% 100%, rgba(123,74,168,0.16), transparent 60%), rgba(255,255,255,0.03);
	border: 1px solid rgba(169,207,63,0.3);
}
.rg-acc-points__mark { width: 3rem; height: 3rem; object-fit: contain; margin-bottom: 0.4rem; }
.rg-acc-points__balance { font-weight: 900; font-size: clamp(2.8rem, 8vw, 4.2rem); color: var(--rg-volt); line-height: 1; }
.rg-acc-points__label { color: #fff; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.82rem; }
/* stats block on the right */
.rg-acc-points__stats { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; border-radius: var(--rg-r-lg); overflow: hidden; background: rgba(255,255,255,0.09); border: 1px solid rgba(255,255,255,0.09); align-content: start; }
.rg-acc-points__stat { background: rgba(255,255,255,0.03); padding: clamp(1.1rem, 2.4vw, 1.5rem); display: flex; flex-direction: column; gap: 0.3em; }
.rg-acc-points__stat-num { font-weight: 900; font-size: clamp(1.4rem, 3vw, 2rem); color: #fff; line-height: 1; }
.rg-acc-points__stat-label { color: var(--rg-ink-muted); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.06em; font-weight: 700; }
.rg-acc-points__stat--how { grid-column: 1 / -1; }
.rg-acc-points__stat-hint { color: rgba(255,255,255,0.8); font-size: 0.9rem; line-height: 1.5; }
.rg-acc-points__cta { grid-column: 1 / -1; margin: 0.4rem 1.2rem 1.2rem; display: inline-flex; align-self: start; }

/* ledger */
.rg-acc-points__history { padding: clamp(1.4rem, 3vw, 2rem); border: 1px solid rgba(255,255,255,0.09); border-radius: var(--rg-r-lg); background: rgba(255,255,255,0.03); }
.rg-acc-points__history-title { margin: 0 0 1.2rem; font-weight: 900; text-transform: uppercase; font-size: 1.15rem; color: #fff; }
.rg-acc-points__ledger { list-style: none; margin: 0; padding: 0; }
.rg-acc-points__row { display: flex; align-items: center; gap: 1rem; padding: 0.9em 0; border-bottom: 1px solid rgba(255,255,255,0.08); }
.rg-acc-points__row:last-child { border-bottom: 0; }
.rg-acc-points__row-ic { flex: 0 0 auto; width: 2.2rem; height: 2.2rem; display: grid; place-items: center; border-radius: 50%; font-weight: 900; font-size: 1.1rem; }
.rg-acc-points__row--add .rg-acc-points__row-ic { background: rgba(169,207,63,0.14); color: var(--rg-volt); }
.rg-acc-points__row--remove .rg-acc-points__row-ic { background: rgba(219,30,121,0.14); color: var(--rg-pink); }
.rg-acc-points__row-body { display: flex; flex-direction: column; gap: 0.15em; margin-right: auto; }
.rg-acc-points__row-action { color: #fff; font-weight: 700; font-size: 0.95rem; }
.rg-acc-points__row-date { color: var(--rg-ink-muted); font-size: 0.78rem; }
.rg-acc-points__row-pts { font-weight: 900; font-size: 1.05rem; white-space: nowrap; }
.rg-acc-points__row--add .rg-acc-points__row-pts { color: var(--rg-volt); }
.rg-acc-points__row--remove .rg-acc-points__row-pts { color: var(--rg-pink); }
.rg-acc-points__empty { color: var(--rg-ink-muted); text-align: center; padding: 2rem 0; }

/* ============================================================================
   404 — "this page went rogue"
   ========================================================================== */
.rg-404 { position: relative; overflow: hidden; min-height: 70vh; display: grid; place-items: center; text-align: center; padding-block: clamp(3rem, 9vw, 7rem); }
.rg-404__glow { position: absolute; left: 50%; top: 30%; width: 70vw; height: 70vw; max-width: 900px; max-height: 900px; transform: translate(-50%,-50%); z-index: 0; pointer-events: none; background: radial-gradient(circle, rgba(123,74,168,0.2), rgba(169,207,63,0.1) 45%, transparent 70%); filter: blur(50px); }
.rg-404__inner { position: relative; z-index: 1; max-width: 52ch; }
.rg-404__code {
	margin: 0 0 0.1em; font-weight: 900; line-height: 0.9; letter-spacing: -0.04em;
	font-size: clamp(6rem, 22vw, 15rem);
	background: linear-gradient(120deg, var(--rg-volt), var(--rg-violet) 50%, var(--rg-pink));
	-webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent;
	filter: drop-shadow(0 10px 40px rgba(123,74,168,0.35));
}
.rg-404__eyebrow { margin: 0 0 0.5em; font-weight: 800; letter-spacing: 0.28em; text-transform: uppercase; font-size: clamp(0.72rem, 1vw, 0.85rem); color: var(--rg-volt); }
.rg-404__title { margin: 0 0 0.5em; font-weight: 900; text-transform: uppercase; line-height: 1; letter-spacing: -0.015em; font-size: clamp(1.8rem, 5vw, 3.2rem); color: #fff; }
.rg-404__lead { margin: 0 auto 2em; max-width: 44ch; color: rgba(255,255,255,0.8); font-size: clamp(1rem, 1.3vw, 1.15rem); }
.rg-404__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 1.2rem; margin-bottom: 2.4rem; }
.rg-404__cta { display: inline-flex; }
.rg-404__link { color: rgba(255,255,255,0.75); text-decoration: underline; text-underline-offset: 3px; font-weight: 600; }
.rg-404__link:hover { color: var(--rg-volt); }
.rg-404__quick { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.6rem; }
.rg-404__quick a { padding: 0.5em 1.1em; border-radius: var(--rg-r-pill); background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.1); color: rgba(255,255,255,0.85); text-decoration: none; font-weight: 700; font-size: 0.8rem; transition: border-color 0.3s, color 0.3s; }
.rg-404__quick a:hover { border-color: rgba(169,207,63,0.4); color: var(--rg-volt); }

/* ============================================================================
   VIEW ORDER (My Account → single order) — reuses the thank-you order-details look.
   ========================================================================== */
.rg-vieworder__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; padding: clamp(1.1rem, 2.5vw, 1.5rem); border: 1px solid rgba(255,255,255,0.09); border-radius: var(--rg-r-lg); background: rgba(255,255,255,0.03); }
.rg-vieworder__meta { display: flex; flex-direction: column; gap: 0.2em; }
.rg-vieworder__num { font-weight: 900; font-size: 1.4rem; color: #fff; }
.rg-vieworder__date { color: var(--rg-ink-muted); font-size: 0.85rem; }
.rg-vieworder__status { padding: 0.4em 1em; border-radius: var(--rg-r-pill); font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.78rem; background: rgba(169,207,63,0.15); color: var(--rg-volt); }
.rg-vieworder__status--pending, .rg-vieworder__status--on-hold, .rg-vieworder__status--failed { background: rgba(219,30,121,0.15); color: var(--rg-pink); }
.rg-vieworder__status--completed { background: rgba(169,207,63,0.2); color: var(--rg-volt); }

.rg-vieworder__updates { margin-bottom: 1.5rem; padding: clamp(1.2rem, 3vw, 1.8rem); border: 1px solid rgba(255,255,255,0.09); border-radius: var(--rg-r-lg); background: rgba(255,255,255,0.03); }
.rg-vieworder__updates-title { margin: 0 0 1rem; font-weight: 900; text-transform: uppercase; font-size: 1.1rem; color: #fff; }
.rg-vieworder__notes { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1rem; }
.rg-vieworder__note { padding-left: 1.2rem; border-left: 2px solid rgba(169,207,63,0.4); }
.rg-vieworder__note-date { display: block; color: var(--rg-ink-muted); font-size: 0.78rem; font-weight: 700; margin-bottom: 0.3em; }
.rg-vieworder__note-text { color: rgba(255,255,255,0.85); line-height: 1.6; }
.rg-vieworder__note-text p { margin: 0; }

/* the order-details table + addresses — same treatment as .rg-thankyou */
.rg-vieworder__details { display: grid; grid-template-columns: 1.25fr 0.75fr; gap: clamp(1.2rem, 2.5vw, 2rem); align-items: start; }
@media (max-width: 900px) { .rg-vieworder__details { grid-template-columns: 1fr; } }
.rg-vieworder .woocommerce-order-details, .rg-vieworder .woocommerce-customer-details {
	padding: clamp(1.4rem, 3vw, 2rem); margin: 0; border: 1px solid rgba(255,255,255,0.09); border-radius: var(--rg-r-lg); background: rgba(255,255,255,0.03);
}
.rg-vieworder .woocommerce-order-details__title, .rg-vieworder .woocommerce-column__title, .rg-vieworder section.woocommerce-customer-details h2 { margin: 0 0 1rem; font-weight: 900; text-transform: uppercase; font-size: 1.15rem; color: #fff; }
.rg-vieworder table.woocommerce-table--order-details { width: 100% !important; border: 0 !important; background: transparent !important; border-collapse: collapse !important; margin: 0 !important; }
.rg-vieworder table.woocommerce-table--order-details th, .rg-vieworder table.woocommerce-table--order-details td { padding: 0.7em 0 !important; border: 0 !important; border-bottom: 1px solid rgba(255,255,255,0.08) !important; text-align: left; color: rgba(255,255,255,0.85); }
.rg-vieworder table.woocommerce-table--order-details td.woocommerce-table__product-total, .rg-vieworder table.woocommerce-table--order-details th.woocommerce-table__product-total { text-align: right; white-space: nowrap; }
.rg-vieworder .woocommerce-table--order-details tfoot tr:last-child th, .rg-vieworder .woocommerce-table--order-details tfoot tr:last-child td { font-size: 1.1rem; color: var(--rg-volt); border-bottom: 0 !important; }
.rg-vieworder .woocommerce-table--order-details a { color: #fff; text-decoration: none; font-weight: 700; }
.rg-vieworder .woocommerce-table--order-details a:hover { color: var(--rg-volt); }
.rg-vieworder .woocommerce-customer-details .woocommerce-columns--addresses { display: flex; flex-direction: column; gap: 1.4rem; }
.rg-vieworder .woocommerce-customer-details address { color: rgba(255,255,255,0.85); font-style: normal; line-height: 1.7; border: 0; padding: 0; }

/* ============================================================================
   FRONTEND LOGIN / REGISTER (My Account guest view) — dark-glass card.
   ========================================================================== */
/* compact login card on the LEFT (about half the content width) */
.rg-login { max-width: 30rem; margin: 0; }
.rg-login--split { max-width: 62rem; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.5rem, 3vw, 2.5rem); }
@media (max-width: 780px) { .rg-login, .rg-login--split { max-width: 100%; grid-template-columns: 1fr; } }
/* on the login page, since it's a compact left box, stack the username/password
   VERTICALLY (a narrow box → full-width fields read better than tiny halves) */
.rg-login:not(.rg-login--split) .rg-fieldrow { flex-direction: column; gap: 0; }
.rg-login__col {
	padding: clamp(1.6rem, 4vw, 2.4rem); border: 0; border-radius: var(--rg-r-xl);
	background: radial-gradient(120% 130% at 0% 0%, rgba(123,74,168,0.16), transparent 55%), rgba(255,255,255,0.04);
	-webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
}
/* the inner WC form has NO card of its own (the __col is the card) → strip its
   border/bg/padding and let the fields reach the card edges */
.rg-login__form.woocommerce-form-login, .rg-login__form.woocommerce-form-register {
	border: 0 !important; background: none !important; box-shadow: none !important; padding: 0 !important; margin: 0 !important;
	-webkit-backdrop-filter: none !important; backdrop-filter: none !important;
}
.rg-login__form .form-row, .rg-login__form .rg-half { width: 100% !important; margin: 0 0 1.1rem !important; }
.rg-login__form input.input-text { width: 100% !important; box-sizing: border-box; }
.rg-login__col--register { background: radial-gradient(120% 130% at 100% 0%, rgba(169,207,63,0.12), transparent 55%), rgba(255,255,255,0.03); }
.rg-login__title { margin: 0 0 0.3em; font-weight: 900; text-transform: uppercase; letter-spacing: -0.01em; font-size: clamp(1.5rem, 3vw, 2rem); color: #fff; }
.rg-login__sub { margin: 0 0 1.6rem; color: var(--rg-ink-muted); font-size: 0.95rem; }
.rg-login__form label { display: block; margin-bottom: 0.5em; color: rgba(255,255,255,0.8); font-weight: 600; font-size: 0.85rem; }
.rg-login__row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.8rem; margin: 0.4rem 0 1.4rem; }
.rg-login__remember { display: inline-flex; align-items: center; gap: 0.5em; margin: 0 !important; color: rgba(255,255,255,0.8) !important; font-weight: 600 !important; font-size: 0.85rem; cursor: pointer; }
.rg-login__remember input { accent-color: var(--rg-volt); }
.rg-login__lost { color: var(--rg-volt); text-decoration: none; font-size: 0.85rem; font-weight: 600; }
.rg-login__lost:hover { text-decoration: underline; }
.rg-login__submit { width: 100%; justify-content: center; }
.rg-login__note { color: var(--rg-ink-muted); font-size: 0.9rem; line-height: 1.5; margin: 0 0 1.2rem; }
/* the login page shouldn't show the account nav (guest has no menu) */
.woocommerce-account:not(.logged-in) .woocommerce-MyAccount-navigation { display: none; }

/* ==========================================================================
   PDP variation lead: price left, stock right — plain text, no pills at all.
   ========================================================================== */
.rg-pdp__variation-lead {
	display: flex !important;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	width: 100%;
	margin: 0 0 1.1rem;
	padding: 0;
	background: none;
	border: 0;
	box-sizing: border-box;
}
.rg-pdp__variation-lead .woocommerce-variation-price {
	margin: 0 !important;
	padding: 0 !important;
	background: none !important;
	border: 0 !important;
	color: var(--rg-volt);
	font-weight: 900;
	font-size: clamp(1.4rem, 6vw, 2rem);
	line-height: 1.1;
	/* Woo centres this block; align it hard left so it starts exactly above BOXES. */
	text-align: left !important;
	/* fill the free space so Woo's centring has nothing to centre WITHIN — otherwise
	   the block shrink-wraps and its centred text floats mid-row */
	flex: 1 1 auto;
	min-width: 0;
	/* pull flush to the container's left edge — Woo's <p> and the theme's own price
	   rules both leave an indent that keeps the number off the BOXES alignment */
	margin-left: 0 !important;
	padding-left: 0 !important;
	text-indent: 0 !important;
}
.rg-pdp__variation-lead .woocommerce-variation-price * { text-align: left !important; }
.rg-pdp__variation-lead .woocommerce-variation-price .price,
.rg-pdp__variation-lead .woocommerce-variation-price .amount,
.rg-pdp__variation-lead .woocommerce-variation-price span,
.rg-pdp__variation-lead .woocommerce-variation-price bdi {
	color: inherit;
	font: inherit;
	/* Woo's .price/.amount ship their own padding and inline-block gaps, which pushed
	   the number in from the left edge of the block. */
	margin: 0 !important;
	padding: 0 !important;
	display: inline !important;
	text-align: left !important;
}
/* stock: plain text too — no pill, no border, no background */
.rg-pdp__variation-lead .woocommerce-variation-availability,
.rg-pdp__variation-lead .stock {
	margin: 0 !important;
	width: auto !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: none !important;
	color: var(--rg-volt) !important;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	font-size: 0.75rem;
	white-space: nowrap;
	flex: 0 0 auto;
	margin-left: auto !important;
	text-align: right !important;
}
.rg-pdp__variation-lead:empty { display: none !important; }

/* The variation price still began 16px in from the wrapper even with padding/margin at
   zero: WooCommerce wraps the amount in nested <span class="price"> / <bdi> nodes that
   inherit the theme's own .rg-pdp__price indent. Reset the whole subtree hard so the
   number starts exactly on the BOXES alignment. */
.rg-pdp__variation-lead .woocommerce-variation-price,
.rg-pdp__variation-lead .woocommerce-variation-price * {
	margin-left: 0 !important;
	padding-left: 0 !important;
	text-indent: 0 !important;
	border-left: 0 !important;
}
.rg-pdp__variation-lead .woocommerce-variation-price::before,
.rg-pdp__variation-lead .woocommerce-variation-price *::before { content: none !important; }

/* The variation price sits 16px in from the container (WooCommerce's own nested
   markup); rather than fight it, indent the BOXES label and the CLEAR link by the same
   16px so the whole buy box shares one left edge. */
@media (max-width: 900px) {
	.rg-pdp__form .variations th.label { padding-left: 16px; }
	.rg-pdp__form .variations td.value .reset_variations { right: 0; }
}

/* Pull the right-hand pair inward by the same 16px the left column uses, so the buy
   box has matching optical margins on both sides. */
@media (max-width: 900px) {
	.rg-pdp__form .variations td.value .reset_variations { right: 16px !important; }
	/* stock needs less than the 16px CLEAR uses — its text box already carries
	   trailing space, so a full 16px pushed it visibly further in than CLEAR */
	.rg-pdp__variation-lead .woocommerce-variation-availability,
	.rg-pdp__variation-lead .stock { margin-right: 8px !important; }
}

/* ==========================================================================
   MOBILE: "Why choose Rogue" figure + footer padding
   ========================================================================== */
@media (max-width: 900px) {
	/* The figure carries a negative right margin so she bleeds off the edge on the
	   desktop split layout. Stacked on a phone that just shoves her off-centre —
	   centre her instead and anchor the crop to the TOP so the head is never cut. */
	/* Keep her original off-centre placement — only anchor the crop to the TOP so the
	   head is always visible instead of being cut off.
	   `position: relative` is essential: an earlier mobile rule sets this column to
	   `position: static`, which removes the containing block for the absolutely
	   positioned .rg-faq__wordmark — the title then anchored to a far ancestor and shot
	   up into the hero section. */


	.rg-faq__img {
		object-fit: cover;
		object-position: top center;
	}
}

@media (max-width: 600px) {
	/* Footer needed more breathing room inside the panel. */
	.rg-site-footer__inner {
		padding-block: clamp(3.5rem, 10vh, 5rem) clamp(2.5rem, 7vh, 4rem);
		padding-inline: clamp(1.25rem, 5vw, 2rem);
		gap: clamp(2rem, 6vh, 3rem);
	}
	.rg-site-footer__bottom {
		padding-block: clamp(1.5rem, 4vh, 2.5rem);
		padding-inline: clamp(1.25rem, 5vw, 2rem);
	}
}



@media (max-width: 900px) {
	/* Push the eyebrow + white heading down clear of the figure above them. */
	.rg-faq--reverse .rg-faq__eyebrow { margin-top: 22vw !important; }
	/* keep her head in frame */
	.rg-faq--reverse .rg-faq__img {
		/* The base rule gives her NEGATIVE margins and a max-width larger than the box
		   so she bleeds past it on desktop — that is what pushes her up past the top
		   edge here and cuts the head. Neutralise the bleed and fit her inside. */
		margin: 0 !important;
		max-width: 100% !important;
		/* No forced height — `height: 100%` squeezed her into a box shorter than she is,
		   which cropped the head. Let the COLUMN grow to fit her instead. */
		width: auto !important;
		height: auto !important;
		max-height: none !important;
		/* `contain` letterboxes her INSIDE the box, so she floats with empty space below.
		   Align the element itself to the bottom of the flex/grid cell instead. */
		object-fit: contain !important;
		object-position: bottom center !important;
		align-self: end !important;
		margin-top: auto !important;
	}
	/* The purple wordmark is position:absolute; an earlier mobile rule sets this column
	   `position: static`, which removes its containing block so it anchors to a far
	   ancestor and jumps to the top of the page. */
	.rg-faq--reverse .rg-faq__col--media {
		position: relative !important;
		height: auto !important;
		min-height: 0 !important;
		display: flex !important;
		align-items: flex-end !important;
		justify-content: center !important;
		/* the base rule pads the box on all sides; that bottom padding is the gap
		   between her feet and the container edge */
		padding-bottom: 0 !important;
	}
}

@media (max-width: 900px) {
	/* The four countdown boxes are `min-width: 3.1em` each plus three separators and a
	   gap — wider than the container's inner width on a phone, so the row overran the
	   right padding and the gap there looked half the size of the left one.
	   Let the boxes share the space instead of forcing a minimum. */
	.rg-offer__clock {
		width: 100%;
		justify-content: space-between;
		gap: 0.3em;
	}
	.rg-offer__unit {
		flex: 1 1 0;
		min-width: 0;
	}
}

/* ==========================================================================
   ABOUT + REVIEWS — ambient corner glows (mobile)
   Each host gets `overflow-x: clip` FIRST: the glows sit at negative offsets and
   their off-canvas half would otherwise widen the document and give the page a
   horizontal scrollbar. `clip` (not `hidden`) so nothing becomes a scroll container.
   ========================================================================== */
@media (max-width: 900px) {
	.rg-about-advantage,
	.rg-about-cta,
	.rg-reviews-hero {
		position: relative;
		overflow-x: clip;
	}
	.rg-about-advantage::before,
	.rg-about-cta::before,
	.rg-reviews-hero::before,
	.rg-about-advantage::after,
	.rg-about-cta::after,
	.rg-reviews-hero::after {
		content: "";
		position: absolute;
		z-index: 0;
		pointer-events: none;
		border-radius: 50%;
		aspect-ratio: 1 / 1;
		filter: blur(60px);
	}
	/* volt — top left */
	.rg-about-advantage::before,
	.rg-about-cta::before,
	.rg-reviews-hero::before {
		width: 90vw;
		left: -30vw;
		top: -6vh;
		background: radial-gradient(circle, rgba(169,207,63,0.30), transparent 68%);
	}
	/* violet — bottom right */
	.rg-about-advantage::after,
	.rg-about-cta::after,
	.rg-reviews-hero::after {
		width: 100vw;
		right: -34vw;
		bottom: -8vh;
		background: radial-gradient(circle, rgba(123,74,168,0.42), transparent 68%);
	}
	/* keep real content above the wash */
	.rg-about-advantage > *,
	.rg-about-cta > *,
	.rg-reviews-hero > * { position: relative; z-index: 1; }
}

/* ==========================================================================
   HERO GLOWS — About (.rg-phero) and Reviews (.rg-reviews-hero).
   Both hosts already clip (phero has overflow:hidden; the reviews hero gets
   overflow-x: clip above), so the negative offsets cannot widen the document.
   z-index 1 puts the wash ABOVE the hero photo + scrim but below the copy.
   ========================================================================== */
.rg-phero::before,
.rg-phero::after {
	content: "";
	position: absolute;
	z-index: 1;
	pointer-events: none;
	border-radius: 50%;
	aspect-ratio: 1 / 1;
	filter: blur(70px);
}
.rg-phero::before {                       /* volt — top left */
	width: 70vw;
	max-width: 720px;
	left: -18vw;
	top: -14vh;
	background: radial-gradient(circle, rgba(169,207,63,0.55), transparent 70%);
	mix-blend-mode: screen;
}
.rg-phero::after {                        /* violet — bottom right */
	width: 80vw;
	max-width: 820px;
	right: -22vw;
	bottom: -16vh;
	background: radial-gradient(circle, rgba(123,74,168,0.65), transparent 70%);
	mix-blend-mode: screen;
}
/* copy stays above the wash */
.rg-phero__inner, .rg-phero__content, .rg-phero > .rg-container { position: relative; z-index: 2; }

@media (max-width: 900px) {
	.rg-phero::before { width: 95vw; left: -30vw; }
	.rg-phero::after  { width: 105vw; right: -34vw; }
}

/* ==========================================================================
   PASSWORD FIELDS — show/hide toggle, round "remember me", stray-artifact kill
   ========================================================================== */

/* Woo's HINT line only — the strength meter itself is styled further down as a
   4-segment bar. (An earlier version of this rule hid the meter too, which is why the
   grey placeholder bars persisted on top of the new one.) */
.woocommerce-password-hint,
.rg-login__form .woocommerce-password-hint { display: none !important; }

/* 2. Show/hide password toggle */
.rg-pw-wrap { position: relative; display: block; }
.rg-pw-wrap > input[type="password"],
.rg-pw-wrap > input[type="text"] { padding-right: 3.4rem !important; }
.rg-pw-toggle {
	position: absolute;
	/* Anchored to the TOP of the wrapper, not its middle.
	   `.rg-pw-wrap` is Woo's `.password-input`, and once the strength meter
	   appears Woo injects it INSIDE that wrapper — so the wrapper grows and a
	   `top:50%` toggle drifts down past the field. Offsetting from the top by
	   half the input's own height keeps the icon centred on the input whatever
	   is rendered below it.

	   The offset is derived, not guessed: the account inputs are
	   `padding: 0.85em` + `line-height: 1.4` at 1rem, so the field is about
	   3.1rem tall and its centre sits at ~1.55rem from the wrapper top. */
	top: 1.55rem;
	right: 0.9rem;
	transform: translateY(-50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.2rem;
	height: 2.2rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: none;
	color: var(--rg-ink-muted);
	cursor: pointer;
	transition: color var(--rg-dur) var(--rg-ease-out);
}
.rg-pw-toggle:hover,
.rg-pw-toggle:focus-visible { color: var(--rg-volt); }
/* Wrappers that contain ONLY the input (no strength meter, e.g. the login form)
   are exactly input-height, so centring on the wrapper is still correct there
   and stays right if the field size ever changes. */
.rg-pw-wrap:not(:has(.woocommerce-password-strength)) > .rg-pw-toggle {
	top: 50%;
}
.rg-pw-toggle svg { width: 20px; height: 20px; display: block; }
.rg-pw-toggle .rg-pw-toggle__off { display: none; }
.rg-pw-toggle.is-shown .rg-pw-toggle__on { display: none; }
.rg-pw-toggle.is-shown .rg-pw-toggle__off { display: block; }

/* 3. "Remember me" checkbox → round */
.woocommerce-form-login__rememberme input[type="checkbox"],
.rg-login__remember input[type="checkbox"] {
	appearance: none;
	-webkit-appearance: none;
	width: 1.15rem;
	height: 1.15rem;
	flex: 0 0 auto;
	margin: 0 0.55rem 0 0;
	border: 2px solid rgba(255,255,255,0.35);
	border-radius: 50%;
	background: transparent;
	cursor: pointer;
	position: relative;
	transition: border-color var(--rg-dur) var(--rg-ease-out), background var(--rg-dur) var(--rg-ease-out);
}
.woocommerce-form-login__rememberme input[type="checkbox"]:checked,
.rg-login__remember input[type="checkbox"]:checked {
	background: var(--rg-volt);
	border-color: var(--rg-volt);
}
.woocommerce-form-login__rememberme input[type="checkbox"]:checked::after,
.rg-login__remember input[type="checkbox"]:checked::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 46%;
	width: 0.3rem;
	height: 0.55rem;
	border: solid #000;
	border-width: 0 2px 2px 0;
	transform: translate(-50%, -50%) rotate(45deg);
}

/* ==========================================================================
   MY ACCOUNT (mobile) + password-field artifacts
   ========================================================================== */

/* 4 + 5. The small white bar under every password box is WooCommerce's password
   strength/hint element rendering unstyled — it appears on BOTH the login form and
   Account details. Catch every variant Woo emits. */
.woocommerce-password-hint,
.woocommerce-form-row .description,
.woocommerce-form-row > span[id$="_description"],
.woocommerce-EditAccountForm span[id$="_description"],
.rg-login__form span[id$="_description"],
form.woocommerce-form-login .description { display: none !important; }
/* the hint text under "Leave blank to keep" is an <em> inside a bare <span> */
.woocommerce-EditAccountForm fieldset legend + p em,
.woocommerce-EditAccountForm em { font-style: normal; color: var(--rg-ink-muted); font-size: 0.8rem; }

@media (max-width: 900px) {
	/* 1. Account nav pills → one horizontal scrolling row, first pill always reachable
	      (justify-content: center on an overflowing row hides item 1 — same bug as the
	      blog "All" chip). */
	.woocommerce-MyAccount-navigation ul {
		display: flex;
		flex-wrap: nowrap;
		justify-content: flex-start;
		gap: 0.6rem;
		margin: 0 0 1.5rem;
		padding: 0 0 0.4rem;
		list-style: none;
		overflow-x: auto;
		overscroll-behavior-x: contain;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}
	.woocommerce-MyAccount-navigation ul::-webkit-scrollbar { display: none; }
	.woocommerce-MyAccount-navigation li { flex: 0 0 auto; }

	/* 2. Points card: stack the number above the label, give the CTA room. */
	.rg-acc-points__card,
	.rg-account-points {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		gap: 0.35rem;
	}
	.rg-acc-points__balance { line-height: 1; }
	.rg-acc-points__label { line-height: 1.2; }
	.rg-acc-points__cta,
	.rg-account-points__cta {
		width: 100%;
		justify-content: center;
		white-space: nowrap;
		margin-top: 0.8rem;
		padding-inline: 1.4rem;
	}

	/* 3. Orders list: air between each order block. */
	.woocommerce-MyAccount-content .woocommerce-orders-table__row,
	.woocommerce-MyAccount-content table.shop_table tbody tr {
		display: block;
		margin-bottom: 1.4rem;
		padding-bottom: 1.2rem;
		border-bottom: 1px solid rgba(255,255,255,0.10);
	}
	.woocommerce-MyAccount-content table.shop_table tbody tr:last-child {
		margin-bottom: 0;
		border-bottom: 0;
	}
	.woocommerce-MyAccount-content table.shop_table td { padding-block: 0.45rem; }
}

/* ==========================================================================
   PASSWORD STRENGTH — 4-segment bar.
   Woo emits ONE element with a single state class (short|bad|good|strong). Draw four
   segments with a repeating gradient and reveal them progressively with background-size,
   so the bar GROWS and takes the state colour instead of sitting as a static grey pill.
   ========================================================================== */
.woocommerce-password-strength {
	position: relative;
	margin: 0.55rem 0 0 !important;
	padding: 0 0 1.15rem !important;
	border: 0 !important;
	background: none !important;
	font-size: 0.7rem !important;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	text-align: left !important;
	color: var(--rg-ink-muted) !important;
	line-height: 1;
}
/* the track: four grey segments */
.woocommerce-password-strength.short::before,
.woocommerce-password-strength.bad::before,
.woocommerce-password-strength.good::before,
.woocommerce-password-strength.strong::before {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 5px;
	border-radius: 999px;
	background:
		repeating-linear-gradient(90deg,
			rgba(255,255,255,0.12) 0 calc(25% - 4px),
			transparent calc(25% - 4px) 25%);
}
/* the fill: same segment shape, coloured, width driven by the state class */
.woocommerce-password-strength.short::after,
.woocommerce-password-strength.bad::after,
.woocommerce-password-strength.good::after,
.woocommerce-password-strength.strong::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 0;
	height: 5px;
	border-radius: 999px;
	background:
		repeating-linear-gradient(90deg,
			currentColor 0 calc(25% - 4px),
			transparent calc(25% - 4px) 25%);
	background-size: 400% 100%;
	transition: width 0.35s var(--rg-ease-out), color 0.35s var(--rg-ease-out);
}
/* No state class = nothing to draw: the ::before track and ::after fill are both
   keyed to .short/.bad/.good/.strong, so a class-less meter renders as an empty
   box on its own. No display rule needed — and adding one breaks it, see below. */
/* NOTE: do NOT re-add a `:not(.short):not(.bad)...{display:none}` rule here.
   Woo's checkPasswordStrength() runs:

       e.removeClass("short bad good strong"); ... if (e.is(":hidden")) return;

   It strips every state class BEFORE testing visibility and bails out early when
   the meter is hidden — so hiding the class-less state deadlocks it: no classes
   -> hidden -> early return -> classes never re-added -> hidden forever.
   The empty state is handled by Woo itself (it calls .hide() on an empty field). */
.woocommerce-password-strength.short  { color: #ff5c8a !important; }
.woocommerce-password-strength.bad    { color: #ff9f43 !important; }
.woocommerce-password-strength.good   { color: #c9a6ec !important; }
.woocommerce-password-strength.strong { color: var(--rg-volt) !important; }

.woocommerce-password-strength.short::after  { width: 25%; }
.woocommerce-password-strength.bad::after    { width: 50%; }
.woocommerce-password-strength.good::after   { width: 75%; }
.woocommerce-password-strength.strong::after { width: 100%; }

/* Woo's separate hint line — that was the SECOND grey bar. */
.woocommerce-password-hint { display: none !important; }

@media (max-width: 900px) {
	/* 2. Order rows: a volt order number separating each block. */
	.woocommerce-MyAccount-content table.shop_table tbody tr {
		position: relative;
		padding-top: 2.2rem;
	}
	/* The order-number cell is a <th scope="row">, NOT a <td> — targeting td only meant
	   the rule never applied and the number stayed invisible. */
	.woocommerce-MyAccount-content table.shop_table tbody tr th.woocommerce-orders-table__cell-order-number,
	.woocommerce-MyAccount-content table.shop_table tbody tr td.woocommerce-orders-table__cell-order-number,
	.woocommerce-MyAccount-content table.shop_table tbody tr th[data-title="Order"],
	.woocommerce-MyAccount-content table.shop_table tbody tr td[data-title="Order"] {
		display: block !important;
		position: absolute;
		top: 0.4rem;
		left: 0;
		padding: 0 !important;
		color: var(--rg-volt) !important;
		font-weight: 900;
		text-transform: uppercase;
		letter-spacing: 0.05em;
		font-size: 0.85rem;
	}
	.woocommerce-MyAccount-content table.shop_table tbody tr th[data-title="Order"]::before,
	.woocommerce-MyAccount-content table.shop_table tbody tr td[data-title="Order"]::before { content: none !important; }

	/* 3. Scroll affordance on the account pills: a volt fade at the right edge that
	      disappears once the row is scrolled to its end. */
	.woocommerce-MyAccount-navigation { position: relative; }
	.woocommerce-MyAccount-navigation::after {
		content: "";
		position: absolute;
		top: 0;
		right: 0;
		width: 3rem;
		height: 100%;
		pointer-events: none;
		background: linear-gradient(90deg, transparent, rgba(12,12,14,0.95) 70%);
	}
	.woocommerce-MyAccount-navigation ul {
		scroll-snap-type: x proximity;
		mask-image: linear-gradient(90deg, #000 88%, transparent 100%);
		-webkit-mask-image: linear-gradient(90deg, #000 88%, transparent 100%);
	}
	.woocommerce-MyAccount-navigation li { scroll-snap-align: start; }
}


/* ==========================================================================
   ORDERS TABLE (desktop) — breathing room + volt order numbers
   ========================================================================== */
.woocommerce-MyAccount-content table.shop_table.woocommerce-orders-table {
	border-collapse: separate;
	border-spacing: 0 0.6rem;
}
.woocommerce-MyAccount-content .woocommerce-orders-table__row > td,
.woocommerce-MyAccount-content .woocommerce-orders-table__row > th {
	padding-block: 1.15rem !important;
	background: rgba(255,255,255,0.03);
	border-top: 1px solid rgba(255,255,255,0.07);
	border-bottom: 1px solid rgba(255,255,255,0.07);
	vertical-align: middle;
}
/* rounded ends so each order reads as one card */
.woocommerce-MyAccount-content .woocommerce-orders-table__row > *:first-child {
	border-left: 1px solid rgba(255,255,255,0.07);
	border-radius: var(--rg-r-md, 14px) 0 0 var(--rg-r-md, 14px);
	padding-left: 1.2rem !important;
}
.woocommerce-MyAccount-content .woocommerce-orders-table__row > *:last-child {
	border-right: 1px solid rgba(255,255,255,0.07);
	border-radius: 0 var(--rg-r-md, 14px) var(--rg-r-md, 14px) 0;
	padding-right: 1.2rem !important;
}
/* the order number in volt */
.woocommerce-MyAccount-content .woocommerce-orders-table__cell-order-number,
.woocommerce-MyAccount-content .woocommerce-orders-table__cell-order-number a {
	color: var(--rg-volt) !important;
	font-weight: 900;
	letter-spacing: 0.02em;
	text-decoration: none;
}
.woocommerce-MyAccount-content .woocommerce-orders-table__cell-order-number a:hover {
	color: #fff !important;
}

/* ===========================================================================
   SEXUAL WELLNESS SECTION
   A product category (not a separate page type) so it blends into the shop and
   inherits the archive, filters and pagination for free. Two visual markers:
   the menu entry and a pill on every card in the category.
   ========================================================================= */

/* --- Product-card pill ------------------------------------------------------
   Top-left of the card media. The points pill owns bottom-left, so they never
   overlap. pointer-events:none keeps clicks falling through to the card link. */
.rg-mens-pill {
	display: inline-flex; align-items: center;
	padding: 0.34em 0.85em;
	border-radius: var(--rg-r-pill);
	/* Same pink → violet ramp as the primary CTA (.rg-btn--grad), so the section
	   badge reads as part of the brand rather than a fourth accent colour. */
	background: linear-gradient(120deg, var(--rg-pink) 0%, var(--rg-violet) 100%);
	color: #fff;
	font-weight: 900; text-transform: uppercase;
	letter-spacing: 0.05em; font-size: 0.62rem; line-height: 1.4;
	white-space: nowrap;
	border: 0;
	box-shadow: 0 4px 16px rgba(219, 30, 121, 0.32);
	pointer-events: none;
}
.rg-pcarousel-card__media .rg-mens-pill--card {
	position: absolute; top: 0.7rem; left: 0.7rem; z-index: 3;
}
/* If the product is also on sale, Woo's Sale badge takes top-left on the PDP —
   drop the Men's pill just beneath it rather than stacking the two. */
.rg-mens-pill--pdp {
	position: absolute; top: 1rem; left: 1rem; z-index: 5;
	font-size: 0.7rem; padding: 0.38em 1em;
}
.rg-pdp__badge ~ .rg-mens-pill--pdp,
.rg-mens-pill--pdp:has(~ .rg-pdp__badge) { top: 3.6rem; }

/* --- Menu entry -------------------------------------------------------------
   The glass-menu renderer (mp13-glass-menu/includes/Renderer.php) reduces each
   item to label+url and prints a bare <li><a> with NO per-item class, so the
   usual "add a CSS class in Appearance > Menus" route has nothing to hook.
   Matching on href is the only stable handle. Covers the off-canvas menu, the
   header nav and the footer at once, in every language prefix.

   Typography is deliberately NOT overridden: glass-menu-brand.css sets the nav
   links to Montserrat Black 900 / -0.01em, so the pill inherits the exact face,
   size and tracking of Home / Products / About us and reads as one of them.
   Only `color` is forced, because that file sets #FFFFFF with !important. */
.mp13-glass-menu__list a[href*="/product-category/sexual-wellness"],
.y-mobile-menu__list a[href*="/product-category/sexual-wellness"],
.rg-site-header a[href*="/product-category/sexual-wellness"],
.rg-footer a[href*="/product-category/sexual-wellness"],
li a[href*="/product-category/sexual-wellness"] {
	/* CTA ramp (pink -> violet), matching .rg-btn--grad and the product-card
	   badge, so the section reads as one brand element rather than three
	   different accent colours. */
	background: linear-gradient(120deg, var(--rg-pink) 0%, var(--rg-violet) 100%);
	color: #fff !important;
	border-radius: var(--rg-r-pill);
	padding: 0.06em 0.7em 0.14em;
	border: 0;
	/* Offset left so the pill hangs outside the text column and the LABEL still
	   lines up with the other menu items — padding alone would indent the text. */
	margin-left: -0.7em;
	transition: background 0.3s var(--rg-ease-out), box-shadow 0.3s var(--rg-ease-out);
}
/* The nav <a> is inline by default, so vertical padding would not push the
   neighbours apart and the pill would clip. inline-block gives it a box. */
.mp13-glass-menu__list a[href*="/product-category/sexual-wellness"],
.y-mobile-menu__list a[href*="/product-category/sexual-wellness"] {
	display: inline-block;
}
.mp13-glass-menu__list a[href*="/product-category/sexual-wellness"]:hover,
.y-mobile-menu__list a[href*="/product-category/sexual-wellness"]:hover,
.rg-site-header a[href*="/product-category/sexual-wellness"]:hover,
.rg-footer a[href*="/product-category/sexual-wellness"]:hover,
li a[href*="/product-category/sexual-wellness"]:hover {
	/* Same ramp, brightened, plus a pink glow — keeps the hover in the gradient
	   family instead of jumping to a different hue. */
	background: linear-gradient(120deg, #e8367f 0%, #8d55c0 100%);
	color: #fff !important;
	box-shadow: 0 0 22px rgba(219, 30, 121, 0.45);
}

/* --- Sexual Wellness shop chip -------------------------------------------------
   Volt already carries a meaning in this control — it marks the ACTIVE filter
   (.rg-shop__chip.is-active). Reusing it for Sexual Wellness would read as "this
   filter is on". Purple keeps the section marked without colliding with state.
   The chips are plain <a>s with only .rg-shop__chip, so href is the handle. */
.rg-shop__chip[href*="product_cat=sexual-wellness"] {
	background: linear-gradient(120deg, var(--rg-pink) 0%, var(--rg-violet) 100%);
	color: #fff;
	border-color: transparent;
}
.rg-shop__chip[href*="product_cat=sexual-wellness"]:hover {
	background: linear-gradient(120deg, #e8367f 0%, #8d55c0 100%);
	border-color: transparent;
	box-shadow: 0 0 18px rgba(219, 30, 121, 0.4);
}
/* Active state: the chip gains .is-active, which sets volt with equal
   specificity and would otherwise win on source order. Keep it purple and mark
   "on" with the volt ring + text instead, so the section colour stays stable. */
.rg-shop__chip.is-active[href*="product_cat=sexual-wellness"] {
	background: linear-gradient(120deg, var(--rg-pink) 0%, var(--rg-violet) 100%);
	color: #fff;
	border-color: var(--rg-volt);
	box-shadow: 0 0 18px rgba(169, 207, 63, 0.45);
}

/* --- Staff-only admin shortcut on the account dashboard --------------------
   Rendered only for users with `edit_posts` (see myaccount/dashboard.php), so a
   customer never sees it. Purple marks it as a different KIND of destination —
   it leaves the storefront — without competing with the volt Rogue Points card. */
.rg-account-card--rg-admin {
	border-color: rgba(123, 74, 168, 0.55);
	background: linear-gradient(140deg, rgba(123,74,168,0.16), rgba(123,74,168,0.05));
}
.rg-account-card--rg-admin:hover {
	border-color: rgba(169, 207, 63, 0.55);
	box-shadow: 0 0 26px rgba(123, 74, 168, 0.28);
}
.rg-account-card--rg-admin .rg-account-card__icon { color: var(--rg-volt); }
.rg-account-card--rg-admin .rg-account-card__meta {
	background: var(--rg-violet);
	color: var(--rg-volt);
	border-radius: var(--rg-r-pill);
	padding: 0.2em 0.7em;
	font-size: 0.62rem;
	font-weight: 900;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	white-space: nowrap;
}

/* Sub-categories in the filter drawer: indented and slightly dimmed so the
   parent/child relationship is readable without a tree widget. */
.rg-filter__check--child {
	padding-left: 1.4rem;
}
.rg-filter__check--child .rg-filter__check-label {
	color: rgba(255, 255, 255, 0.72);
	font-size: 0.88em;
}

/* "All" sits above the category list as a reset — separated so it does not read
   as just another category. */
.rg-filter__check--all {
	border-bottom: 1px solid rgba(255, 255, 255, 0.1);
	padding-bottom: 0.55rem;
	margin-bottom: 0.35rem;
	font-weight: 800;
}

/* ---------------------------------------------------------------------------
   PRODUCT PACKS
   The contents list is generated from the pack's members, so it can never drift
   from what is actually in the pack.
   ------------------------------------------------------------------------ */
.rg-pack {
	margin: 1.25rem 0 0;
	padding: 1rem 1.15rem;
	border: 1px solid rgba(169, 207, 63, 0.28);
	border-radius: var(--rg-r-md, 14px);
	background: rgba(169, 207, 63, 0.05);
}
.rg-pack__title {
	margin: 0 0 0.6rem;
	font-size: 0.78rem;
	font-weight: 900;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--rg-volt);
}
.rg-pack__list { list-style: none; margin: 0; padding: 0; }
.rg-pack__item {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 1rem;
	padding: 0.4rem 0;
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}
.rg-pack__item:last-child { border-bottom: 0; }
.rg-pack__item a {
	color: var(--rg-ink);
	text-decoration: none;
	font-weight: 700;
	border-bottom: 1px solid transparent;
	transition: color 0.25s var(--rg-ease-out), border-color 0.25s var(--rg-ease-out);
}
.rg-pack__item a:hover { color: var(--rg-volt); border-bottom-color: var(--rg-volt); }
.rg-pack__item-price { color: var(--rg-ink-muted); font-size: 0.88rem; white-space: nowrap; }
.rg-pack__total {
	margin: 0.75rem 0 0;
	font-weight: 800;
	font-size: 0.9rem;
	color: var(--rg-volt);
}
/* "save X (Y%)" badge beside the price, on the PDP and in the shop grid. */
.rg-pack__save {
	display: inline-block;
	margin-left: 0.5rem;
	padding: 0.2em 0.6em;
	border-radius: var(--rg-r-pill);
	background: linear-gradient(120deg, var(--rg-pink) 0%, var(--rg-violet) 100%);
	color: #fff;
	font-size: 0.68rem;
	font-weight: 900;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	white-space: nowrap;
	vertical-align: middle;
}
.rg-pcarousel-card__price .rg-pack__save { font-size: 0.58rem; margin-left: 0.35rem; }
.rg-pack__inline { margin-top: 0.6rem; font-size: 0.9rem; color: var(--rg-ink-muted); }
.rg-pack__inline a { color: var(--rg-volt); text-decoration: underline; }

/* ---------------------------------------------------------------------------
   REVOLUT AT CHECKOUT
   Revolut renders its widgets in its own containers with light-theme defaults
   (white panels, grey text) which read as foreign boxes on the dark checkout.
   These rules wrap them in the same dark-glass panel the rest of the payment
   area uses, without touching the button INSIDE — that is an iframe/web
   component owned by Revolut and restyling it would break their branding
   (and, for Apple Pay, Apple's presentation rules).
   ------------------------------------------------------------------------ */

/* The Revolut Pay / Digital Wallet button container */
.woocommerce-checkout #payment .revolut-pay,
.woocommerce-checkout #payment #revolut-pay-express-checkout-button,
.woocommerce-checkout #payment .wc-revolut-pay-express-checkout-instance,
.woocommerce-checkout #payment #wc-revolut-payment-request-container {
	background: rgba(0, 0, 0, 0.25);
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 12px;
	padding: 0.9rem;
	margin-top: 0.6em;
}

/* Card field.
   Revolut sets `style="background:#191919"` inline on #woocommerce-revolut-card-element
   and renders the inputs in an iframe it owns, so only the frame around it is
   ours: a border, radius and padding that match the other checkout inputs.
   The inline background is left alone — overriding it would fight Revolut's own
   dark theming and could leave the iframe text unreadable. */
.woocommerce-checkout #payment #woocommerce-revolut-card-element,
.woocommerce-checkout #payment .rc-card-field {
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 10px;
	padding: 0.9rem 0.85rem;
	transition: border-color 0.3s var(--rg-ease-out);
}
.woocommerce-checkout #payment #woocommerce-revolut-card-element:focus-within,
.woocommerce-checkout #payment .rc-card-field:focus-within {
	border-color: rgba(169, 207, 63, 0.55);
}

/* Woo's own credit-card fieldset: it ships a light border and margin that read
   as a stray box on the dark panel. */
.woocommerce-checkout #payment fieldset.wc-credit-card-form,
.woocommerce-checkout #payment fieldset.wc-payment-form {
	background: transparent !important;
	border: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
}

/* The upsell banner is an iframe on a white background that Revolut controls.
   We cannot restyle its inside, so give it a rounded mask and a little breathing
   room instead of letting a white slab butt against the dark panel. */
.woocommerce-checkout #payment #revolut-upsell-banner {
	border-radius: 10px;
	overflow: hidden;
	margin-top: 0.75rem;
	line-height: 0;
}

/* The promotional / cashback banner — kept, but toned down so it sits with the
   dark UI instead of shouting a light panel at the customer. */
.woocommerce-checkout #payment #revolut-pay-informational-banner,
.woocommerce-checkout #payment .revolut-pay-label-container {
	background: rgba(219, 30, 121, 0.08);
	border: 1px solid rgba(219, 30, 121, 0.25);
	border-radius: 10px;
	padding: 0.6rem 0.8rem;
	margin-top: 0.5em;
	font-size: 0.82rem;
	color: rgba(255, 255, 255, 0.85);
}

/* Scheme icons (Visa/Mastercard) sit on white artwork — give them a light chip
   so they stay legible rather than disappearing into the dark panel. */
.woocommerce-checkout #payment .revolut-payment-method-label-scheme-icons,
.woocommerce-checkout #payment .revolut-scheme-icons-wrapper {
	background: rgba(255, 255, 255, 0.9);
	border-radius: 6px;
	padding: 2px 6px;
	display: inline-flex;
	align-items: center;
	gap: 4px;
}

/* Errors in the brand's pink rather than Woo's default red. */
.woocommerce-checkout #payment .revolut-error,
.woocommerce-checkout #payment .woocommerce-revolut-card-element-error {
	color: var(--rg-pink);
	font-size: 0.82rem;
	margin-top: 0.4rem;
}

/* "Save card" checkbox, matched to the round controls used elsewhere. */
.woocommerce-checkout #payment .revolut-payment-method-save label {
	color: rgba(255, 255, 255, 0.8);
	font-size: 0.85rem;
}
.woocommerce-checkout #payment .revolut-payment-method-save input[type="checkbox"] {
	accent-color: var(--rg-volt);
}

/* When Revolut hides Place Order (Revolut Pay / wallets own the submit), make
   sure nothing leaves an empty gap behind it. */
.woocommerce-checkout #place_order.hidden_by_revolut {
	display: none !important;
	margin: 0 !important;
}

/* The Revolut Pay button wrapper.
   Markup is `<div class="revolut-pay revolut-pay-v2">` containing an iframe —
   the iframe itself is Revolut's and must not be restyled, but the grey wrapper
   around it is ours to blend into the dark panel. */
.woocommerce-checkout #payment .revolut-pay,
.woocommerce-checkout #payment .revolut-pay-v2,
.woocommerce-checkout #payment #woocommerce-revolut-pay-element {
	background: transparent !important;
	border: 0 !important;
	padding: 0 !important;
	margin: 0.4rem 0 0 !important;
	border-radius: 14px;
	overflow: hidden;
}
/* The sandbox warning the plugin prints with an inline style="color:red".
   Inline styles cannot be overridden by a normal rule, so this needs
   !important. It disappears by itself once the gateway is set to live. */
.woocommerce-checkout #payment div.payment_box p[style*="color:red"],
.woocommerce-checkout #payment div.payment_box p[style*="color: red"] {
	color: var(--rg-pink) !important;
	font-size: 0.78rem;
	margin: 0 0 0.6rem;
	opacity: 0.85;
}

/* ---------------------------------------------------------------------------
   ACCOUNT-FORM BUTTONS (lost password, reset, edit account, save address)

   These render as `.woocommerce-Button.button` — NOT `.button.alt` — so the
   gradient CTA rule above never reached them and they fell back to Woo's stock
   grey. Same treatment here so every submit in the account area matches the
   rest of the site.
   ------------------------------------------------------------------------ */
.woocommerce .woocommerce-Button,
.woocommerce button.woocommerce-Button,
.woocommerce-account button[type="submit"].button,
.woocommerce-account input[type="submit"].button,
.woocommerce-ResetPassword button[type="submit"],
.woocommerce-LostPassword button[type="submit"] {
	background: linear-gradient(100deg, var(--rg-violet), var(--rg-pink)) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: var(--rg-r-pill) !important;
	padding: 0.9em 1.8em !important;
	font-weight: 800 !important;
	text-transform: uppercase !important;
	letter-spacing: 0.03em !important;
	font-size: 0.85rem;
	cursor: pointer;
	box-shadow: 0 0 24px rgba(219, 30, 121, 0.3);
	transition: transform 0.25s var(--rg-ease-out), box-shadow 0.25s var(--rg-ease-out);
}
.woocommerce .woocommerce-Button:hover,
.woocommerce button.woocommerce-Button:hover,
.woocommerce-account button[type="submit"].button:hover,
.woocommerce-account input[type="submit"].button:hover,
.woocommerce-ResetPassword button[type="submit"]:hover,
.woocommerce-LostPassword button[type="submit"]:hover {
	transform: translateY(-2px);
	box-shadow: 0 6px 30px rgba(219, 30, 121, 0.45);
}

/* The lost-password form's own layout: give the field and button room and stop
   the button sitting flush under the input. */
.woocommerce-ResetPassword .form-row,
.woocommerce-LostPassword .form-row { margin-bottom: 1.1rem; }
.woocommerce-ResetPassword p:first-of-type,
form.lost_reset_password p:first-of-type { color: var(--rg-ink-muted); }

/* ---------------------------------------------------------------------------
   ACCOUNT FORM WIDTH

   `.rg-page--std:not(.rg-page--wc)` deliberately exempts WooCommerce pages from
   the 74ch reading cap, because cart and checkout need the full container for
   their tables. But that also let the small account forms — lost password,
   reset, login — stretch the whole ~1200px width, so a single email field ran
   edge to edge.

   Constrain just those forms, matching `.rg-login`'s 30rem card so the account
   area is consistent. Cart/checkout are untouched.
   ------------------------------------------------------------------------ */
.rg-page--wc .woocommerce-ResetPassword,
.rg-page--wc form.lost_reset_password,
.rg-page--wc .woocommerce-form-login,
.rg-page--wc .woocommerce-form-register {
	max-width: 30rem;
	margin-inline: 0;
}
/* The intro copy above the form should share the same measure, otherwise the
   sentence runs far wider than the field it describes. */
.rg-page--wc form.lost_reset_password > p:first-of-type,
.rg-page--wc .woocommerce-ResetPassword > p:first-of-type {
	max-width: 30rem;
}
/* Inputs fill their (now constrained) form rather than a fixed pixel width. */
.rg-page--wc form.lost_reset_password .woocommerce-Input,
.rg-page--wc .woocommerce-ResetPassword .woocommerce-Input {
	width: 100%;
}


/* ---------------------------------------------------------------------------
   CARD CATEGORY BADGE
   Sits above the product title and links to the shop filtered by that category.
   Deliberately understated — it is a wayfinding aid, not a call to action, so it
   must not compete with the price or the Add to Cart button.
   ------------------------------------------------------------------------ */
.rg-pcarousel-card__cat {
	/* Top-left over the product image. `--rg-r-lg` on the media clips overflow,
	   so the badge is inset rather than flush to the corner. */
	position: absolute;
	top: 0.7rem;
	left: 0.7rem;
	z-index: 4;
	display: inline-block;
	max-width: calc(100% - 3.6rem);   /* never reach the wishlist heart */
	padding: 0.22em 0.7em;
	border-radius: var(--rg-r-pill);
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.12);
	color: rgba(255, 255, 255, 0.72);
	font-size: 0.6rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	text-decoration: none;
	line-height: 1.6;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	transition: color 0.25s var(--rg-ease-out), border-color 0.25s var(--rg-ease-out), background 0.25s var(--rg-ease-out);
}
/* Frosted rather than flat: these sit on photography that ranges from white
   vials to dark boxes, and a plain translucent chip disappears on light shots. */
.rg-pcarousel-card__media .rg-pcarousel-card__cat {
	background: rgba(12, 12, 14, 0.62);
	border-color: rgba(255, 255, 255, 0.18);
	color: rgba(255, 255, 255, 0.88);
	-webkit-backdrop-filter: blur(8px) saturate(130%);
	backdrop-filter: blur(8px) saturate(130%);
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.28);
}
/* When the section pill is also present it owns the corner — drop the category
   badge onto a second line beneath it instead of overlapping. */
.rg-mens-pill--card + .rg-pcarousel-card__cat {
	top: 2.5rem;
}

.rg-pcarousel-card__cat:hover,
.rg-pcarousel-card__cat:focus-visible {
	color: var(--rg-volt);
	border-color: rgba(169, 207, 63, 0.5);
	background: rgba(169, 207, 63, 0.1);
}
/* Two-column mobile: smaller, and it must not push the card taller. */
@media (max-width: 600px) {
	.rg-shop__grid.products .rg-pcarousel-card__cat {
		font-size: 0.48rem;
		padding: 0.18em 0.5em;
		letter-spacing: 0.04em;
		top: 0.4rem;
		left: 0.4rem;
		max-width: calc(100% - 2.6rem);
	}
	.rg-shop__grid.products .rg-mens-pill--card + .rg-pcarousel-card__cat {
		top: 1.85rem;
	}
}
