/* ==========================================================================
   Folded in 2026-09-24 (Batch 3): the inline CSS the Aurelia modules attach to
   this stylesheet, in their original cascade order. The PHP modules still emit
   these blocks; aurelia-css-consolidation.php drops any block whose content
   matches a copy here, so an edited block keeps working until it is re-folded.
   Not folded: the product-card surface block (layout.php, aru_product_card_surface),
   which must stay page-scoped because the PDP related grid reuses .ruo-card-surface.
   ========================================================================== */

/* block 76d1961e */

	.aurelia-op .woocommerce-message,.aurelia-op .woocommerce-info,.aurelia-op .woocommerce-error{
		border-radius:12px;padding:16px 20px;font-family:var(--sans);line-height:1.6}
	.aurelia-op .woocommerce-error{border-color:rgba(214,120,110,.55)}
	.aurelia-op .woocommerce-error li{margin:0 0 4px}
	.aurelia-op .woocommerce-error li:last-child{margin:0}

	.aurelia-track-intro{max-width:620px;margin:0 0 24px;font-family:var(--sans);font-size:15px;line-height:1.7;
		color:var(--cream-dim)}
	.aurelia-track-form{max-width:620px;margin:0}
	.aurelia-track-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
	.aurelia-track-form .form-row{float:none;width:auto;margin:0;padding:0}
	body.aurelia-op .aurelia-track-form .form-row label{display:block;margin:0 0 8px;font-family:var(--sans);
		font-size:11.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--cream);opacity:1}
	form.aurelia-track-form .form-row input.input-text{
		width:100%;height:52px;padding:0 16px;border-radius:12px;
		background:rgba(241,237,228,.04);border:1px solid rgba(230,184,109,.28);
		color:var(--cream);font-family:var(--sans);font-size:15px;transition:border-color .2s ease,background .2s ease}
	form.aurelia-track-form .form-row input.input-text::placeholder{color:rgba(241,237,228,.42)}
	form.aurelia-track-form .form-row input.input-text:hover{border-color:rgba(230,184,109,.5)}
	form.aurelia-track-form .form-row input.input-text:focus{outline:none;border-color:var(--gold);background:rgba(241,237,228,.07);
		box-shadow:0 0 0 3px rgba(230,184,109,.22)}
	form.aurelia-track-form .form-row input.input-text:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
	.aurelia-track-form .aurelia-field-hint{display:block;margin:8px 0 0;font-family:var(--sans);font-size:12.5px;
		line-height:1.5;color:var(--cream-dim)}
	.aurelia-track-submit{margin:26px 0 0 !important}
	.aurelia-track-form .aurelia-btn,.aurelia-op .woocommerce-Button,.aurelia-op .button:not(.aurelia-plain){
		display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 30px;
		border-radius:12px;border:1px solid rgba(230,184,109,.66);
		background:linear-gradient(175deg,rgba(241,237,228,.11),transparent 46%),linear-gradient(180deg,#1B1C1C,#0D0E0E);
		color:var(--cream);font-family:var(--sans);font-size:13px;font-weight:500;letter-spacing:.14em;
		text-transform:uppercase;cursor:pointer;transition:.22s ease;text-decoration:none}
	.aurelia-track-form .aurelia-btn:hover,.aurelia-op .button:not(.aurelia-plain):hover{border-color:var(--gold);
		box-shadow:0 5px 14px rgba(0,0,0,.34)}
	.aurelia-op .button:focus-visible,.aurelia-track-form .aurelia-btn:focus-visible,
	.aurelia-op a:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:12px}

	.aurelia-order-status-card{margin:0 0 30px;padding:24px 26px;border:1px solid var(--line);border-radius:16px;
		background:linear-gradient(180deg,rgba(230,184,109,.05),transparent 60%),var(--ink-3)}
	.aurelia-osc-eyebrow{margin:0 0 6px;font-family:var(--sans);font-size:11px;font-weight:500;letter-spacing:.22em;
		text-transform:uppercase;color:var(--gold)}
	.aurelia-osc-number{margin:0 0 12px;font-family:var(--serif);font-size:34px;line-height:1.1;color:var(--cream)}
	.aurelia-osc-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0;
		font-family:var(--sans);font-size:13.5px;color:var(--cream-dim)}
	.aurelia-osc-pill{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:12px;
		border:1px solid rgba(230,184,109,.4);background:rgba(230,184,109,.08);
		font-size:11.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--cream)}
	.aurelia-osc-pill::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--gold-deep)}
	.aurelia-osc-pill--completed::before{background:#8FB98A}
	.aurelia-osc-pill--cancelled::before,.aurelia-osc-pill--failed::before,
	.aurelia-osc-pill--refunded::before{background:#C98C84}
	.aurelia-order-updates-title{margin:34px 0 14px;font-family:var(--serif);font-size:26px;color:var(--cream)}
	.aurelia-order-notes{list-style:none;margin:0 0 30px;padding:0}
	.aurelia-order-notes li{padding:16px 18px;margin:0 0 12px;border:1px solid var(--line);border-radius:12px;
		background:var(--ink-3)}
	.aurelia-order-notes .meta{margin:0 0 6px;font-family:var(--sans);font-size:11px;letter-spacing:.14em;
		text-transform:uppercase;color:var(--cream-dim)}
	.aurelia-order-notes .description p{margin:0;font-size:14px;color:var(--cream)}

	.aurelia-op .woocommerce-order-details__title,.aurelia-op .woocommerce-column__title,
	.aurelia-op .woocommerce-customer-details h2,.aurelia-op .woocommerce-MyAccount-content h2,
	.aurelia-op .woocommerce-order-downloads__title{
		margin:0 0 16px;font-family:var(--serif);font-size:26px;font-weight:400;color:var(--cream)}
	.aurelia-op table.shop_table,.aurelia-op table.woocommerce-table{
		width:100%;border:0;border-collapse:collapse;border-radius:0;margin:0 0 28px;font-family:var(--sans)}
	.aurelia-op table.shop_table th,.aurelia-op table.woocommerce-table th{
		padding:12px 10px;border:0;border-bottom:1px solid rgba(230,184,109,.4);
		font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--cream-dim);text-align:left}
	.aurelia-op table.shop_table td,.aurelia-op table.woocommerce-table td{
		padding:16px 10px;border:0;border-bottom:1px solid var(--line-soft);font-size:14.5px;color:var(--cream);vertical-align:middle}
	.aurelia-op table.shop_table tfoot th,.aurelia-op table.shop_table tfoot td{
		border-bottom:1px solid var(--line-soft);font-size:14px;letter-spacing:0;text-transform:none;color:var(--cream-dim);font-weight:400}
	.aurelia-op table.shop_table tfoot td{color:var(--cream);text-align:right}
	.aurelia-op table.shop_table tfoot tr:last-child th,.aurelia-op table.shop_table tfoot tr:last-child td{
		border-bottom:0;padding-top:16px;font-size:17px;color:var(--cream);font-weight:600}
	.aurelia-op table.shop_table .product-total,.aurelia-op table.shop_table td:last-child,
	.aurelia-op table.shop_table th:last-child{text-align:right}
	.aurelia-op .product-quantity{color:var(--cream-dim);font-weight:400}
	.aurelia-op .shipped_via{display:block;font-size:12.5px;color:var(--cream-dim)}
	.aurelia-op .woocommerce-table__product-name a{color:var(--cream);text-decoration:none;
		border-bottom:1px solid rgba(230,184,109,.4)}
	.aurelia-op .woocommerce-table__product-name a:hover{color:var(--gold)}
	.aurelia-op mark,.aurelia-op .order-info mark{background:transparent;color:var(--cream);font-weight:500}

	.aurelia-op .rs-tracking,.rs-tracking{border-radius:16px;padding:24px 26px}
	.rs-tracking-steps{gap:8px}
	.rs-tracking-dot{width:16px;height:16px;display:flex;align-items:center;justify-content:center;
		background:var(--ink-2);border:1px solid rgba(241,237,228,.3)}
	.rs-tracking-step.is-done .rs-tracking-dot{background:var(--gold-deep);border-color:var(--gold-deep)}
	.rs-tracking-step.is-done .rs-tracking-dot::before{content:'';display:block;width:9px;height:5px;
		border-left:1.5px solid #17130B;border-bottom:1.5px solid #17130B;transform:rotate(-45deg) translate(1px,-1px)}
	.rs-tracking-step.is-current .rs-tracking-dot{background:var(--cream);border-color:var(--cream);
		box-shadow:0 0 0 4px rgba(241,237,228,.16)}
	.rs-tracking-step.is-current .rs-tracking-dot::before{border-color:#17130B}
	.rs-tracking-step:not(:last-child)::after{top:8px}
	.rs-tracking-label{font-size:12.5px;max-width:130px}
	.rs-tracking-step.is-current .rs-tracking-label{font-weight:600}
	.rs-tracking-state{display:block;margin-top:4px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
		color:var(--cream-dim)}
	.rs-tracking-step.is-current .rs-tracking-state{color:var(--gold)}
	.rs-tracking-number{font-family:ui-monospace,Menlo,Consolas,monospace;letter-spacing:.04em}
	.rs-tracking-link{display:inline-flex;align-items:center;min-height:44px;padding:0 22px;border-radius:12px}

	.aurelia-op .woocommerce-MyAccount-navigation ul{list-style:none;margin:0;padding:0;
		border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--ink-3)}
	.aurelia-op .woocommerce-MyAccount-navigation li{border-bottom:1px solid var(--line-soft)}
	.aurelia-op .woocommerce-MyAccount-navigation li:last-child{border-bottom:0}
	.aurelia-op .woocommerce-MyAccount-navigation li a{display:block;min-height:44px;padding:14px 20px;
		font-family:var(--sans);font-size:13px;letter-spacing:.06em;color:var(--cream-dim);text-decoration:none}
	.aurelia-op .woocommerce-MyAccount-navigation li a:hover{color:var(--cream);background:rgba(230,184,109,.06)}
	.aurelia-op .woocommerce-MyAccount-navigation li.is-active a{color:var(--cream);
		box-shadow:inset 2px 0 0 var(--gold-deep)}
	.aurelia-op .woocommerce-orders-table__cell-order-actions a,
	.aurelia-op .woocommerce-orders-table__cell-order-number a{min-height:44px;display:inline-flex;align-items:center}
	.aurelia-op .rs-account-hello{font-family:var(--serif);font-size:24px;color:var(--cream);margin:0 0 20px}
	.aurelia-op .woocommerce-Address{border:1px solid var(--line);border-radius:16px;padding:20px 22px;
		background:var(--ink-3);margin:0 0 20px}
	.aurelia-op .woocommerce-Address address{font-style:normal;font-size:14px;line-height:1.7;color:var(--cream-dim)}
	.aurelia-op .woocommerce-customer-details--phone,
	.aurelia-op .woocommerce-customer-details--email{margin:6px 0 0;font-size:14px;color:var(--cream-dim)}

	.aurelia-op .woocommerce-order ul.woocommerce-order-overview{display:grid;
		grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;list-style:none;margin:0 0 30px;padding:0;border:0}
	.aurelia-op .woocommerce-order-overview li{padding:16px 18px;border:1px solid var(--line);border-radius:12px;
		background:var(--ink-3);font-family:var(--sans);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
		color:var(--cream-dim)}
	.aurelia-op .woocommerce-order-overview li strong{display:block;margin-top:8px;font-size:15px;letter-spacing:0;
		text-transform:none;color:var(--cream)}

	.aurelia-op .woocommerce-checkout-payment,.aurelia-op #payment{border:1px solid var(--line);border-radius:16px;
		background:var(--ink-3);padding:22px 24px}
	.aurelia-op #payment ul.payment_methods{list-style:none;margin:0 0 18px;padding:0;border:0}
	.aurelia-op #payment ul.payment_methods li{padding:12px 0;border-bottom:1px solid var(--line-soft)}
	.aurelia-op #payment div.payment_box{background:rgba(241,237,228,.04);border-radius:12px;padding:14px 16px;
		font-size:13.5px;color:var(--cream-dim)}

	.aurelia-op .woocommerce-table--order-downloads td,.aurelia-op .woocommerce-table--order-downloads th{
		text-align:left}

	@media (max-width:640px){
		.aurelia-track-fields{grid-template-columns:1fr}
		form.aurelia-track-form .form-row input.input-text{font-size:16px}
		.aurelia-osc-number{font-size:28px}
		.aurelia-order-status-card{padding:20px}
		.aurelia-op .rs-tracking,.rs-tracking{padding:20px 18px}
		.rs-tracking-steps{flex-direction:column;align-items:flex-start;gap:14px}
		.rs-tracking-step{flex-direction:row;align-items:center;gap:12px;text-align:left;width:100%}
		.rs-tracking-step:not(:last-child)::after{display:none}
		.rs-tracking-dot{margin:0}
		.rs-tracking-label{max-width:none}
		.rs-tracking-state{display:inline;margin:0 0 0 8px}
		.aurelia-op table.shop_table td,.aurelia-op table.shop_table th{padding:12px 6px;font-size:14px}
		.aurelia-track-form .aurelia-btn,.aurelia-op .woocommerce-pay-order .button{width:100%}
	}
	@media (prefers-reduced-motion:reduce){
		.aurelia-op *,.aurelia-track-form *{transition:none !important}
	}
	

/* block 701d5208 */
.gate .arm-toggle{position:relative}
.gate .arm-t{transition:opacity .16s ease,color .16s ease,background .16s ease}
.gate .arm-toggle.is-switching .arm-t{pointer-events:none;opacity:.34}
.gate .arm-toggle.is-switching .arm-t.is-switching{opacity:1;color:var(--gold)}
.gate .arm-t.is-switching::before{content:"";width:10px;height:10px;border:1px solid rgba(230,184,109,.32);border-top-color:var(--gold);border-radius:50%;animation:rs-market-spin .6s linear infinite}
@keyframes rs-market-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.gate .arm-t{transition:none}.gate .arm-t.is-switching::before{animation:none}}

/* block 9356d64e */
/* 5. above the skip link (400), the toast (95), the drawer (80). */
.gate{z-index:500}
/* 8. first paint: the backdrop exists before the footer gate does. Nothing is
   removed from the DOM and no text is hidden from a crawler; this is the same
   opaque cover the gate itself paints, brought forward. */
html:not(.rs-gate-passed) body.rs-has-gate::before{content:"";position:fixed;inset:0;z-index:499;background:rgba(6,7,7,.94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
/* 7. a scroll lock that also holds on iOS. */
html:not(.rs-gate-passed):has(body.rs-has-gate){overflow:hidden;height:100%;overscroll-behavior:none}
html:not(.rs-gate-passed) body.rs-has-gate{overflow:hidden;height:100%;overscroll-behavior:none}
/* 2. fieldset, with every UA default reset so the design is unchanged.
   min-inline-size:0 matters: a fieldset defaults to min-content and would
   otherwise refuse to shrink on a narrow viewport. */
.gate .checks{border:0;margin:0 0 11px;padding:0;min-inline-size:0;display:flex;flex-direction:column;gap:7px;text-align:left}
.gate .checks>legend{padding:0}
/* 4. Aurelia's gold focus treatment on the declarations. */
.gate .check input:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:3px}
.gate .check:has(input:focus-visible){border-color:rgba(230,184,109,.55);background:rgba(230,184,109,.05)}
/* 1. what is outstanding, shown on the row as well as in words. */
.gate .check.is-missing{border-color:#E5685C;background:rgba(229,104,92,.055);box-shadow:0 0 0 2px rgba(229,104,92,.14)}
.gate .check.is-missing:has(input:checked){border-color:rgba(230,184,109,.42);background:rgba(230,184,109,.045);box-shadow:none}
/* 3. always in the accessibility tree; zero height while empty. */
.gate .gate-error{margin:0!important;padding:0;border:0;text-align:left;color:#E1A098!important}
.gate .gate-error:empty{height:0;overflow:hidden;line-height:0;font-size:0}
.gate .gate-error:not(:empty){max-width:none;margin:0 0 10px!important;padding:8px 11px;border:1px solid rgba(229,104,92,.45);border-radius:8px;font-size:11.75px;line-height:1.4}
/* 9. contrast: .56 on the gate panel is 5.5:1; .38 was 3.2:1. */
.gate .gate-fine{color:rgba(241,237,228,.56);font-size:10.5px}
.gate .rs-consent--compact .rs-consent-privacy{font-size:10.5px!important}
.gate .rs-consent-option small{font-size:10px}
.gate .rs-consent-copy p{font-size:11px}
/* 6. secondary market control, below the primary flow. */
.gate .gate-market{margin:14px 0 0;padding-top:12px;border-top:1px solid rgba(241,237,228,.08);display:flex;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap}
.gate .gate-market .gate-market-lbl{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:rgba(241,237,228,.56)}
.gate-box .gate-market .arm-toggle{margin:0}
.gate .gate-market .arm-t{font-size:11px;padding:5px 7px}
.gate .gate-market .arm-t svg{width:16px;height:11px}
/* the hover tooltip would hang off the bottom edge of the panel, and the
   aria-label on the link already says where it goes. */
.gate .gate-market .arm-t::after{display:none}
@media(max-width:560px){
.gate .checks{gap:6px;margin-bottom:9px}
.gate .gate-fine{font-size:10px}
.gate .gate-market{margin-top:12px;padding-top:10px}
}

/* block 7c150f7b */
.aru-lab-section{padding-top:0}
/* Same box as a compound card: block, clipped, image covering it. display:grid
   with place-items:center also made the img a grid item, which sized it square
   against the box instead of to the box - a second way the two cards diverged. */
.aru-lab-card .card-media{background:linear-gradient(165deg,#1D1D1B,#0C0C0B);display:block;overflow:hidden}
/* No blend mode. mix-blend-mode:luminosity keeps only the image's lightness and
   takes its colour from the backdrop, and the backdrop here is a near-black
   gradient - so every equipment photo rendered as greyscale. The vials elsewhere
   on the page are shot against black and need no help; this was flattening real
   product colour for no gain. */
/* cover, not contain. The media box is taller than it is wide on desktop
   (288x305), so contain letterboxed a square photo with a 9px band above and
   below it - the gap against the card border. cover fills the box and takes the
   overflow off the sides, which is exactly what the compound cards do. */
.aru-lab-card .card-media img{width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.aru-lab-card{border-color:rgba(169,137,82,.3)}
.aru-lab-card .card-body{min-height:156px}
.aru-lab-card .dose{color:var(--gold)}
.aru-lab-section .sec-cta{text-align:center;margin-top:28px}
/* Orphan row. .pgrid is four columns from 1024px up, so five cards left the
   fifth alone on a second row. The counts now come from the markup as
   --aru-cols-* because the section is curated with the Featured star and can
   hold any number of cards: five fit one clean row from 1200px, and between
   1024 and 1199 five become 3 + 2 rather than 4 + 1. Fewer than four cards
   simply take that many columns instead of stretching across the grid. No
   product, price or Special Order behaviour changes. */
@media(min-width:768px) and (max-width:1023px){
  .aru-lab-grid{grid-template-columns:repeat(var(--aru-cols-sm,3),1fr)}
}
@media(min-width:1024px) and (max-width:1199px){
  .aru-lab-grid{grid-template-columns:repeat(var(--aru-cols-md,3),1fr)}
}
@media(min-width:1200px){
  .aru-lab-grid{grid-template-columns:repeat(var(--aru-cols-lg,5),1fr);gap:16px}
  .aru-lab-card .card-body{min-height:150px}
  .aru-lab-card h3{font-size:18px}
}
@media(max-width:767px){
  .aru-lab-grid{display:grid;grid-auto-flow:column;grid-template-columns:none;grid-auto-columns:calc((100vw - (var(--gut) * 2) - 14px) / 2);gap:14px;overflow-x:auto;padding:8px var(--gut) 14px;margin-inline:calc(var(--gut) * -1);scroll-snap-type:x mandatory;scroll-padding-inline:var(--gut);-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .aru-lab-grid::-webkit-scrollbar{display:none}
  .aru-lab-grid .aru-lab-card{scroll-snap-align:start}
}

/* block ab8e5ef9 */
/* Keep the basket one tap away on mobile. */
@media(max-width:900px){
	.hdr .util{display:flex;margin-left:auto;gap:0}
	.hdr .util .arm-toggle,
	.hdr .util>button,
	.hdr .util>a:not([aria-label="Cart"]):not([aria-label="Basket"]){display:none}
	.hdr .util>a[aria-label="Cart"],
	.hdr .util>a[aria-label="Basket"]{display:grid}
}
@media(max-width:390px){
	.hdr .wrap{gap:4px}
	.brand img{height:48px}
}

/* Keep account architecture but remove it from the current public header journey. */
.hdr .util>a[aria-label="Account"],
.drawer-panel>a[href*="/my-account"]{display:none!important}

/* Header order stays Search, then Cart, on compact screens. */
@media(max-width:900px){
	.hdr .brand{order:1;margin-right:auto}
	.hdr .burger-search{order:2}
	.hdr .util{order:3;margin-left:0}
	.hdr .burger{order:4}
}

/* Aurelia basket drawer: quiet glass, stable viewport and deliberate hierarchy. */
/* overflow:clip, not hidden. hidden still makes these two elements scroll
   containers, and the browser scrolled them sideways when a control inside the
   panel took focus while the panel was still translated off-screen - the drawer
   was seen sliding past the edge of the screen and coming back. Nothing can
   scroll a clipped box, so the transform is the only thing that moves the panel.
   theme.js also asks for focus with preventScroll for browsers without clip. */
.rs-mini{overscroll-behavior:contain;overflow:hidden;overflow:clip;touch-action:manipulation}
/* A miss on the - or + used to register as a double-tap and zoom the page, which
   is exactly the gesture a stepper invites: two quick taps in the same spot.
   touch-action:manipulation drops double-tap-to-zoom (and the 300ms click delay
   that came with waiting for it) while leaving panning and pinch-zoom alone, so
   the drawer still scrolls and can still be magnified deliberately. Set on the
   controls too, not just the container: the effective value is the intersection
   up the ancestor chain, so this is belt and braces rather than duplication. */
.rs-mini-step,.rs-mini-remove,.rs-mini-close,.rs-mini-qty,.rs-mini-continue,.rs-mini-checkout{touch-action:manipulation}
.rs-mini-scrim{background:rgba(0,0,0,.68);backdrop-filter:blur(2px)}
.rs-mini-panel{width:min(92vw,420px);height:100dvh;overflow:hidden;overflow:clip;
	background:linear-gradient(155deg,rgba(241,237,228,.045),transparent 34%),rgba(19,20,20,.965);
	border-left:1px solid rgba(230,184,109,.24);
	box-shadow:-24px 0 70px rgba(0,0,0,.48);backdrop-filter:blur(22px)}
.rs-mini-top{padding:20px 20px 17px;border-bottom-color:rgba(241,237,228,.09)}
.rs-mini-title{font-size:23px;line-height:1.1}
/* The gold scrollbar was a visible seam down the inside edge of the panel and
   read as a stray gold line rather than a control. The body still scrolls; it
   just does it silently. */
.rs-mini-body{min-height:0;overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none}
.rs-mini-body::-webkit-scrollbar{width:0;height:0;display:none}
.rs-mini-items{padding:8px 20px;flex-shrink:0}
/* Two rows, three columns: the thumbnail spans both, the name sits over its own
   stepper, and remove and price hold the right edge. Stacking name/price/stepper
   in one middle column left the price floating mid-line and the right edge empty. */
.rs-mini-item{grid-template-columns:68px minmax(0,1fr) auto;
	grid-template-areas:"img name remove" "img qty price";
	column-gap:14px;row-gap:11px;padding:16px 0;align-items:center}
.rs-mini-img{grid-area:img;align-self:center}
.rs-mini-img img{width:68px;height:68px;border:1px solid rgba(241,237,228,.1);border-radius:12px}
.rs-mini-name{grid-area:name;align-self:end;display:block;
	font-family:var(--serif);font-weight:400;font-size:17px;line-height:1.2;
	color:var(--cream);text-decoration:none}
a.rs-mini-name:hover{color:var(--gold)}
.rs-mini-remove{grid-area:remove;align-self:end;justify-self:end;border-radius:9px}
.rs-mini-qty{grid-area:qty;justify-self:start;align-self:start;margin-top:0}
/* Shorter stepper. The shared control system sizes every stepper button 44x44
   for the iOS touch-target minimum, which in a basket line is taller than the
   name beside it and makes the row top-heavy. Width is left at 44 so the pill
   keeps its proportions and the horizontal target is untouched; only the height
   comes in, and 36px is still a comfortable thumb target in a list this size. */
.rs-mini-qty .rs-mini-step{height:36px;min-height:36px}
.rs-mini-price{grid-area:price;justify-self:end;align-self:center;
	margin-top:0;font-size:14px;white-space:nowrap}
.rs-mini-step:focus-visible,.rs-mini-remove:focus-visible,.rs-mini-close:focus-visible,
.rs-mini-continue:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
/* The foot is flush with the drawer: same --ink-2 as the item list above it
   and the actions bar below, and no rule on top. The panel reads as one
   continuous surface rather than three banded blocks. border-top is zeroed
   rather than dropped because the theme stylesheet also declares one on
   .rs-mini-foot, which would otherwise come back through the cascade. The
   rule above the Checkout button (.rs-mini-actions) is untouched. */
.rs-mini-foot{flex-shrink:0;padding:18px 20px;
	border-top:0;background:var(--ink-2)}
/* Subtotal takes the same Poppins as the fee line beneath it - the foot now
   reads as one block of running totals rather than a serif heading with sans
   notes hanging off it. Label and amount are both 18px. */
.rs-mini-sub{font-family:var(--sans);font-size:18px}
.rs-mini-sub span:last-child{color:var(--cream);font-size:18px}
.rs-mini-note{margin:7px 0 15px}
.rs-mini-empty{padding:46px 24px}
.rs-mini-actions{position:sticky;bottom:0;z-index:1;flex-shrink:0;padding:12px 20px calc(18px + env(safe-area-inset-bottom,0px));background:var(--ink-2);border-top:1px solid rgba(241,237,228,.09)}
.rs-mini-actions .btn{display:block;width:100%;text-align:center;margin-top:9px}
/* iOS Safari ignores overflow:hidden on body, so with a short basket the page
   behind the open drawer scrolled under the customer's finger. Pinning the body
   is the only lock that holds there; theme.js parks the scroll offset in `top`
   and restores it on close so nothing jumps back to the top of the page. */
body.rs-locked-fixed{position:fixed;left:0;right:0;width:100%;overflow:hidden;overscroll-behavior:none}
/* The nav drawer takes the same treatment as the basket. overflow:clip because
   hidden leaves .drawer a scroll container the browser can shove sideways, and
   the panel gets a scroller of its own: it is height:100% inside a clipped box,
   so with several nav groups expanded on a short phone the tail of the menu had
   nowhere to go and the page behind it was never the thing that could reach it. */
.drawer{overflow:hidden;overflow:clip}
.drawer-panel{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
	padding-bottom:calc(30px + env(safe-area-inset-bottom,0px));
	scrollbar-width:none;-ms-overflow-style:none}
.drawer-panel::-webkit-scrollbar{width:0;height:0;display:none}
/* A quantity change is a round trip. The stepper answers the tap immediately;
   these are the figures the server has yet to correct, so they read as pending
   rather than standing there looking authoritative while stale. */
.rs-mini-body.is-busy .rs-mini-price,
.rs-mini-body.is-busy .rs-mini-foot{opacity:.52;transition:opacity .16s ease}
/* Totals rows waiting for the Store API snapshot that matches this basket. */
.rs-mini-foot.aru-pending .aru-mini-rows{opacity:.52;transition:opacity .16s ease}
.rs-mini-item.is-going{opacity:.4}
@media(prefers-reduced-motion:reduce){
	.rs-mini-panel,.rs-mini-scrim{transition:none}
	.rs-mini-body.is-busy .rs-mini-price,.rs-mini-body.is-busy .rs-mini-foot{transition:none}
}

/* Remove internal breadcrumb trails; the header already provides site navigation. */
.crumb{display:none!important}

/* WooCommerce Blocks checkout, restyled without changing its architecture. */
.wc-block-components-sidebar-layout.wc-block-checkout{gap:0}
.wc-block-checkout__main .wc-block-components-checkout-step{margin-bottom:30px}
.wc-block-checkout__main .wc-block-components-checkout-step__heading{margin-bottom:14px}
.wc-block-checkout__main .wc-block-components-checkout-step__title{font-family:var(--serif);font-weight:400;color:var(--cream)}
body .wc-block-components-text-input input[type="text"],
body .wc-block-components-text-input input[type="email"],
body .wc-block-components-text-input input[type="tel"],
body .wc-block-components-combobox .wc-block-components-combobox-control input,
body .wc-block-components-address-form select{
	background:rgba(19,20,20,.78)!important;color:var(--cream)!important;
	border:1px solid rgba(241,237,228,.14)!important;border-radius:10px!important;
	box-shadow:inset 0 1px 0 rgba(241,237,228,.035)!important}
body .wc-block-components-text-input label,
body .wc-block-components-combobox .wc-block-components-combobox-control label{color:rgba(241,237,228,.52)!important}
body .wc-block-components-text-input input:focus,
body .wc-block-components-combobox .wc-block-components-combobox-control input:focus{
	border-color:var(--gold)!important;box-shadow:0 0 0 2px rgba(230,184,109,.15)!important}
.wc-block-checkout__sidebar .wc-block-components-order-summary,
.wc-block-checkout__sidebar .wc-block-components-totals-wrapper{
	border-color:rgba(241,237,228,.08)!important}
.wc-block-checkout__sidebar{border:0;border-left:1px solid rgba(241,237,228,.08);border-radius:0;
	background:transparent;box-shadow:none;padding-left:32px}
.wc-block-checkout__main .wc-block-components-checkout-step{padding-bottom:24px;border-bottom:1px solid rgba(241,237,228,.06)}
.wc-block-checkout__main .wc-block-components-checkout-step:last-of-type{border-bottom:0}
.wc-block-components-radio-control{overflow:hidden;border:1px solid rgba(241,237,228,.1);border-radius:16px;background:rgba(19,20,20,.46)}
.wc-block-components-radio-control__option{min-height:54px!important;border:0!important;border-bottom:1px solid rgba(241,237,228,.07)!important;background:transparent!important}
.wc-block-components-radio-control__option:last-child{border-bottom:0!important}
.wc-block-components-radio-control__option-checked,
.wc-block-components-radio-control__option--checked-option-highlighted{background:rgba(230,184,109,.07)!important}
.wc-block-components-radio-control__input:focus-visible{outline:2px solid var(--gold)!important;outline-offset:3px}
.wc-block-components-order-summary-item{padding-block:16px!important;border-bottom-color:rgba(241,237,228,.07)!important}
.rs-cart-update-status{margin:0 0 16px;padding:10px 14px;border-left:2px solid var(--gold);background:rgba(230,184,109,.06);color:var(--cream-dim);font-size:12px}
.rs-cart-update-status:empty{display:none}.rs-cart-update-status.is-error{color:var(--cream)}
.wc-block-cart-items__row.is-updating{opacity:.5;pointer-events:none}
/* Basket page: while a quantity change saves, the figures it will change stay
   on screen, dimmed as in the drawer, and the steppers stay live. */
.rs-cart-syncing .wc-block-cart-item__total,
.rs-cart-syncing .wc-block-components-totals-item__value{opacity:.52;transition:opacity .16s ease}
.wc-block-cart-items__row.is-going{opacity:.4}
@media(prefers-reduced-motion:reduce){
	.rs-cart-syncing .wc-block-cart-item__total,.rs-cart-syncing .wc-block-components-totals-item__value{transition:none}
}
/* Blocks ships a white checkbox, which on this checkout was either invisible
   (once the address-form text-field rule stripped its background) or a bright
   white square against near-black. Give it a real surface people can find, and
   a filled gold state so "ticked" reads at a glance. accent-color does nothing
   here - the control is appearance:none and draws its tick as an SVG. Size is
   left at Blocks' own 20px: the tick mark is absolutely positioned against it. */
.wc-block-components-checkbox .wc-block-components-checkbox__input[type="checkbox"]{
	accent-color:#E6B86D;cursor:pointer;
	background:rgba(19,20,20,.9)!important;
	border:1px solid rgba(230,184,109,.55)!important;
	border-radius:4px!important}
.wc-block-components-checkbox .wc-block-components-checkbox__input[type="checkbox"]:hover{border-color:var(--gold)!important}
.wc-block-components-checkbox .wc-block-components-checkbox__input[type="checkbox"]:checked{
	background:var(--gold)!important;border-color:var(--gold)!important}
/* Dark tick on the filled gold box. The theme turns the mark gold on :checked,
   which was legible over a transparent box and invisible over a gold one. */
.wc-block-components-checkbox__input:checked + .wc-block-components-checkbox__mark{color:#17130B}
.wc-block-components-checkbox .wc-block-components-checkbox__input[type="checkbox"]:focus-visible{
	outline:2px solid var(--gold);outline-offset:2px}
/* The label is the other half of the target and it is a long sentence - make it
   obvious the whole thing is tappable, not just the 20px square. */
.wc-block-components-checkbox label{cursor:pointer}
.wc-block-components-validation-error{color:#E1A098}
@media(max-width:767px){
	.rs-mini-panel{width:min(94vw,390px)}
	.rs-mini-top,.rs-mini-foot,.rs-mini-actions{padding-left:16px;padding-right:16px}
	.rs-mini-items{padding-left:16px;padding-right:16px}
	.rs-mini-item{grid-template-columns:60px minmax(0,1fr) auto;column-gap:11px}
	.rs-mini-img img{width:60px;height:60px}
	.rs-mini-name{font-size:16px}
	.wc-block-checkout__sidebar{border-left:0;border-top:1px solid rgba(241,237,228,.08);padding:24px 0 0}
}

/* The theme's own toast is centred and content-width, but its <=480px rule
   pinned it to left:16px/right:16px with max-width:none, which on a phone is a
   full-bleed bar rather than the small acknowledgement it is meant to be. Put it
   back on the centre line and let it size to its own text. */
@media(max-width:480px){
	.rs-toast{left:50%;right:auto;width:max-content;max-width:calc(100vw - 32px);
		transform:translate(-50%,12px);
		bottom:calc(16px + env(safe-area-inset-bottom,0px))}
	.rs-toast.on{transform:translate(-50%,0)}
}

/* Quiet confirmation after a homepage quick add. */
.rs-cart-toast{position:fixed;left:50%;bottom:max(18px,env(safe-area-inset-bottom));z-index:280;
	transform:translate(-50%,14px);opacity:0;pointer-events:none;display:flex;align-items:center;gap:14px;
	width:max-content;max-width:calc(100vw - 24px);padding:11px 14px 11px 16px;border:1px solid rgba(230,184,109,.38);
	border-radius:12px;background:rgba(19,20,20,.94);color:var(--cream);
	box-shadow:inset 0 1px 0 rgba(241,237,228,.08),0 16px 46px rgba(0,0,0,.42);
	backdrop-filter:blur(18px);transition:opacity .2s ease,transform .2s ease}
.rs-cart-toast.on{transform:translate(-50%,0);opacity:1;pointer-events:auto}
/* Same face and metrics as the product-page toast and the coupon notice:
   Poppins 14px/1.45, no tracking. It was 12px with .04em, which read as a
   third voice for what is the same confirmation. The family was already
   inherited from body; declared here so a later rule cannot take it the way
   one took the product toast. */
.rs-cart-toast span{font-family:var(--sans);font-size:14px;line-height:1.45;letter-spacing:normal}
.rs-cart-toast a{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);white-space:nowrap}
.hdr a[aria-label="Cart"].rs-cart-pulse::after,
.hdr a[aria-label="Basket"].rs-cart-pulse::after{content:"";position:absolute;inset:2px;border:1px solid var(--gold);
	border-radius:8px;animation:rs-cart-ring .7s ease both;pointer-events:none}
@keyframes rs-cart-ring{0%{opacity:0;transform:scale(.82)}35%{opacity:1}100%{opacity:0;transform:scale(1.18)}}

/* Free-delivery status, shared by drawer and full basket. */
.rs-free-delivery{margin:0 0 15px;padding:12px 13px;border:1px solid rgba(230,184,109,.22);
	border-radius:10px;background:rgba(230,184,109,.045)}
.rs-free-delivery p{margin:0 0 8px;font-size:11.5px;line-height:1.45;color:var(--cream-dim);text-align:center}
.rs-free-delivery.is-earned p{color:var(--gold)}
.rs-free-track{height:4px;border-radius:999px;overflow:hidden;background:rgba(241,237,228,.1)}
.rs-free-fill{display:block;height:100%;width:0;border-radius:inherit;background:var(--grad-gold);
	transition:width .28s ease}
.rs-mini-body>.rs-free-delivery{margin:14px 20px 0;flex-shrink:0}
.rs-free-delivery:has(+.wc-block-cart),.rs-free-delivery:has(+.wc-block-checkout){margin:0 0 18px}
@media(max-width:767px){.rs-mini-body>.rs-free-delivery{margin-left:16px;margin-right:16px}}

@media(prefers-reduced-motion:reduce){
	.rs-cart-toast,.rs-free-fill{transition:none}
	.hdr a[aria-label="Cart"].rs-cart-pulse::after{animation:none}
}
/* ------------------------------------------------------------------
   Checkout: one continuous column, not a stack of boxes.

   1. Doubled gutter. `wc-block-checkout` is on BOTH the outer block
      wrapper and the sidebar-layout React renders inside it, so the
      theme's `padding:... var(--gut) ...` was applied twice - 36px of
      dead margin each side on a phone, leaving the order-summary
      content 211px wide inside a 375px screen. Padding now belongs to
      the outer wrapper only.
   2. Three nested containers around the same list (block-fill ring,
      order-summary panel at 26px, then the rows' own 16px insets).
      Flattened to one column with hairlines between rows.
   3. Two headings saying "Order summary" once the panel is open, and
      three stacked hairlines - sidebar border-top, panel title
      border-top, then its border-bottom - reading as an empty band.
   4. The total sat under two rules 31px apart (the wrapper's border-top
      and the footer item's own), which rendered as a blank row.
   ------------------------------------------------------------------ */
/* Checkout only: the Cart block's outer wrapper carries no `wc-block-cart`
   class, so it never doubled and must keep its own padding. */
.wp-block-woocommerce-checkout > .wc-block-components-sidebar-layout.wc-block-checkout{
	max-width:none;margin:0;padding:0}
/* .wrap is the theme's gutter and already wraps this block - the outer
   block wrapper was adding a second one, so the form sat 36px inside the
   free-delivery bar directly above it. */
.wrap > .wp-block-woocommerce-checkout.wc-block-checkout{padding-left:0;padding-right:0;max-width:none}

.wp-block-woocommerce-checkout-order-summary-block .checkout-order-summary-block-fill{
	border:0!important;border-radius:0!important;background:transparent!important}
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-order-summary,
.wp-block-woocommerce-checkout-order-summary-block.checkout-order-summary-block-fill-wrapper .wc-block-components-order-summary{
	border:0!important;border-radius:0!important;background:transparent!important;
	padding:0!important;margin:0!important}
.wp-block-woocommerce-checkout-order-summary-block .checkout-order-summary-block-fill .wc-block-components-totals-item,
.wp-block-woocommerce-checkout-order-summary-block .checkout-order-summary-block-fill .wc-block-components-totals-coupon{
	padding-left:0!important;padding-right:0!important}

/* The wrapper above it already draws the rule; the item drew a second. */
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-totals-footer-item{
	border-top:0!important;padding-top:0!important;margin-top:0!important}

@media(max-width:1023px){
	.wc-block-checkout__sidebar{border-top:0!important;padding:0!important;margin:0 0 8px!important}
	/* This copy is the recap above Place order, not a duplicate of the
	   collapsible bar at the top - it keeps its heading. */
	.wp-block-woocommerce-checkout-order-summary-block.checkout-order-summary-block-fill-wrapper{padding-bottom:8px!important}
	.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-checkout-order-summary__title{
		margin-top:0!important;border-top:0!important;padding:18px 0!important}
}
@media(max-width:600px){
	.wp-block-woocommerce-checkout.wc-block-checkout{padding-top:8px}
	.wc-block-checkout__main .wc-block-components-checkout-step{padding:24px 0!important}
}

/* ------------------------------------------------------------------
   No rules anywhere in the checkout column - sections are separated by
   space alone. Every hairline below was doing the job whitespace does
   better on a near-black page, where a 10%-opacity line reads as grime
   rather than structure. Spacing is opened up to carry the hierarchy
   the lines were carrying.

   Deliberately untouched: the shipping/payment option list. Those rules
   divide selectable choices, not sections - without them the options
   run together and the tap target stops being legible.
   ------------------------------------------------------------------ */
.wc-block-checkout .wc-block-components-checkout-step,
.wc-block-checkout .wc-block-components-checkout-step:first-of-type,
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-checkout-order-summary__title,
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-checkout-order-summary__content,
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-checkout-order-summary__content.is-open,
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-totals-wrapper,
.wp-block-woocommerce-checkout-order-summary-block .wp-block-woocommerce-checkout-order-summary-totals-block,
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-order-summary-item,
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-order-summary-item:last-child{
	border-top:0!important;border-bottom:0!important}
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-totals-wrapper:after,
.wc-block-checkout .wc-block-components-totals-wrapper:after{border-width:0!important;content:none!important}
.wc-block-checkout .wc-block-checkout__terms.wc-block-checkout__terms--with-separator{
	border-top:0!important;padding-top:0!important}

/* Space replaces the rules - and has to be bigger than the padding the
   rules sat inside, or the sections read as one undifferentiated column. */
.wc-block-checkout__main .wc-block-components-checkout-step{padding:46px 0 0!important}
.wc-block-checkout__main .wc-block-components-checkout-step:first-of-type{padding-top:0!important}
.wc-block-checkout__main .wc-block-components-checkout-step__heading{margin-bottom:20px!important}
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-totals-footer-item{
	margin-top:22px!important}
@media(max-width:1023px){
	.wc-block-checkout__sidebar{margin:0 0 22px!important}
}
@media(max-width:600px){
	.wc-block-checkout__main .wc-block-components-checkout-step{padding:38px 0 0!important}
}

/* block 3b59a966 */
.rs-gate-access-unavailable .hdr,.rs-gate-access-unavailable .ftr,.rs-gate-access-unavailable .rs-gate-legal-return,.rs-gate-legal-page .hdr .nav,.rs-gate-legal-page .hdr .util,.rs-gate-legal-page .hdr .burger-search,.rs-gate-legal-page .hdr .burger,.rs-gate-legal-page .drawer{display:none!important}.rs-gate-legal-return{margin:0;padding:10px var(--gut);text-align:center;background:var(--ink);border-bottom:1px solid rgba(241,237,228,.1)}.rs-gate-legal-return a{color:var(--gold);font-size:12px;letter-spacing:.08em;text-transform:uppercase}

/* block 70fec9e7 */
.rs-uhdr{border-bottom:1px solid rgba(241,237,228,.12);background:var(--ink);padding:18px 0}.rs-uhdr .wrap{display:flex;align-items:center;justify-content:center}.rs-uhdr img{height:38px;width:auto;display:block}.rs-uftr{border-top:1px solid rgba(241,237,228,.12);background:var(--ink);padding:26px 0;margin-top:64px}.rs-uftr .wrap{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;justify-content:center;text-align:center}.rs-uftr a{color:var(--gold);font-size:12px;letter-spacing:.06em;text-transform:uppercase}.rs-uftr .rs-uftr-ruo{flex:0 0 100%;font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.6}.rs-utility-shell .phead{padding-top:48px}

/* block f4b55ad5 */
/* Quantity saving on a basket / checkout line. */
.aru-price{display:block;line-height:1.35}
.aru-price .aru-was{margin-right:8px;color:rgba(241,237,228,.42);text-decoration:line-through;text-decoration-thickness:1px;font-variant-numeric:tabular-nums}
.aru-price .aru-now{color:var(--gold);font-variant-numeric:tabular-nums}
.aru-price .aru-note{display:block;margin-top:4px;font-family:var(--sans);font-size:10.5px;letter-spacing:.05em;line-height:1.3;color:var(--cream-dim)}
/* The native price is left in the DOM for assistive tech order but hidden
   whenever our two-part price replaces it. */
.aru-has-saving .wc-block-cart-item__total-price-and-sale-badge-wrapper,
.aru-has-saving>.wc-block-components-product-price{display:none!important}
/* The theme's classic-cart "3-vial pricing applied" tag would repeat this. */
.wc-block-cart-items__row .rs-bundle-flag,
.wc-block-components-order-summary-item .rs-bundle-flag{display:none!important}
/* Rows this file replaces or retires. */
.aru-row-hidden{display:none!important}
/* A native price superseded by the two-part price above it. */
.aru-native-hidden{display:none!important}
/* The drawer's price cell is nowrap for a single figure; ours is three lines. */
.rs-mini-price.aru-has-saving{white-space:normal;text-align:right;line-height:1.3}
/* Drawer running totals, matching the Basket's order summary. */
.aru-mini-rows{margin-top:9px;display:flex;flex-direction:column;gap:7px}
.aru-mini-row{display:flex;justify-content:space-between;gap:12px;
	font-family:var(--sans);font-size:13px;color:var(--cream-dim)}
.aru-mini-row.is-total{margin-top:4px;padding-top:11px;
	border-top:1px solid rgba(241,237,228,.09);font-size:18px;color:var(--cream)}
/* The drawer's "Discounts and shipping are calculated at checkout" is answered
   by the rows above it. Hidden in CSS rather than JS so it is never briefly
   painted on screen while the drawer re-renders after an add. */
.rs-mini-note{display:none!important}
.rs-mini-foot.aru-keep-note .rs-mini-note{display:block!important}
/* Free-delivery bar reuses the existing basket bar styling. */
.rs-free-delivery.aru-fd p{letter-spacing:.03em}
.rs-free-delivery.aru-fd.is-earned p{color:var(--gold)}

/* block 791eacaf */
.hdr{position:sticky;top:0;z-index:60;background:rgba(13,14,14,.86);border-bottom:1px solid rgba(241,237,228,.08);
	backdrop-filter:blur(18px) saturate(118%);-webkit-backdrop-filter:blur(18px) saturate(118%)}
.hdr a[aria-label="Cart"] .rs-bag-icon{width:21px;height:21px}
.hdr a[aria-label="Cart"]:hover .rs-bag-icon{color:var(--gold)}
body.admin-bar .drawer-panel,body.admin-bar .rs-mini-panel{
	top:var(--wp-admin--admin-bar--height,32px);height:calc(100dvh - var(--wp-admin--admin-bar--height,32px))}

/* block 2b9d742f */
.fbrand p{max-width:32ch;margin-bottom:10px;line-height:1.6}
.fcol h4{margin-bottom:14px}
.fcontact{gap:9px 18px}
.fcol-contact .full{max-width:34ch;color:rgba(241,237,228,.58);font-size:11px;line-height:1.55}
.fcol-contact .full .lbl{margin-bottom:4px;color:rgba(241,237,228,.42);letter-spacing:.11em}
.fbot{margin-top:40px;padding:18px 0}
@media(max-width:767px){
	.fbot{margin-top:32px;padding:17px 0}
}

/* block 963807cb */
.rs-shop-selector{display:flex;gap:8px;margin:0 0 28px}
.rs-shop-tab{padding:9px 18px;border:1px solid rgba(241,237,228,.14);border-radius:999px;
	font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--cream-dim);text-decoration:none}
.rs-shop-tab.is-active{border-color:var(--gold);color:var(--gold);background:rgba(230,184,109,.06)}
.rs-shop-tab:hover{color:var(--cream)}

/* block 8b5311f3 */
.rs-coa-status{display:inline-block;font-size:11px;letter-spacing:.07em;text-transform:uppercase;padding:4px 9px;border-radius:2px;margin:2px 0 4px}.rs-coa-status-historical{color:var(--gold);border:1px solid rgba(230,184,109,.38)}.rs-coa-status-revoked{color:#e8b4b4;border:1px solid rgba(232,180,180,.42)}.rs-coa-revoked .card-media{opacity:.55}.rs-coa-revoked .rs-verify-help{font-size:12px;line-height:1.6;margin:6px 0 10px}

/* block b6edb49c */
.fchannels{display:flex;flex-wrap:wrap;gap:10px;grid-column:1 / -1}
.fchannel{display:inline-flex;align-items:center;gap:9px;min-height:40px;padding:0 18px;
  border:1px solid var(--gold-deep);border-radius:999px;background:rgba(230,184,109,.045);
  color:var(--gold-deep);font:500 11px/1 var(--sans);letter-spacing:.09em;text-transform:uppercase;
  transition:color .2s,border-color .2s,background-color .2s}
.fchannel svg{width:15px;height:15px;flex:0 0 auto}
@media(hover:hover){
  .fchannel:hover{color:var(--gold);border-color:var(--gold);background:rgba(230,184,109,.09)}
}
.fchannel:focus-visible{outline:2px solid var(--gold);outline-offset:2px}


/* block d2795fea */
.rs-cf.is-wa .rs-cf-form,.rs-cf.is-wa .rs-cf-done{display:none!important}
.rs-cf:not(.is-wa) .rs-cf-wa{display:none}
.rs-cf-wa{text-align:center;padding:4px 0 2px}
.rs-cf-wa .rs-cf-intro{margin:0 0 18px;text-align:center}
.rs-wa-qr{width:188px;margin:0 auto 20px;padding:13px;border-radius:14px;background:#F1EDE4;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 12px 28px rgba(0,0,0,.36)}
.rs-wa-qr svg{display:block;width:100%;height:auto;fill:#0B0C0C}
.rs-wa-num{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:7px 12px;margin:0 0 18px}
.rs-wa-lbl{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(241,237,228,.45)}
.rs-wa-number{font-family:var(--serif);font-size:20px;line-height:1;color:var(--cream);letter-spacing:.02em;
  font-variant-numeric:tabular-nums lining-nums}
.rs-wa-web{display:inline-flex;align-items:center;justify-content:center;gap:9px;width:100%;height:46px;padding:0 20px;
  border:1px solid var(--aru-control-border);border-radius:var(--aru-control-compact-radius);
  background:var(--aru-control-surface);color:var(--cream);box-shadow:var(--aru-control-shadow);
  font-family:var(--sans);font-size:11.5px;font-weight:500;line-height:1;letter-spacing:.1em;text-transform:uppercase;
  transition:color .2s ease,border-color .2s ease}
.rs-wa-web svg{width:16px;height:16px;flex:0 0 16px;fill:#25D366}
@media(hover:hover){.rs-wa-web:hover{color:var(--gold);border-color:rgba(230,184,109,.92)}}
.rs-wa-web:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media (max-width:767px){.rs-wa-qr{width:160px;padding:11px}.rs-wa-number{font-size:18px}}

/* block 3f3423c7 */
.rs-oos .rs-dose,.rs-oos .rs-qtier,.rs-oos .rs-stepper,.rs-oos .quantity,.rs-oos form.cart,.rs-oos .single_add_to_cart_button{display:none!important}.rs-stock-alert{margin:22px 0 0}.rs-stock-alert p{margin:0 0 12px;font-size:14px;color:var(--cream-dim)}.rs-stock-alert .rs-stock-row{display:flex;gap:10px;flex-wrap:wrap}.rs-stock-alert input[type=email]{flex:1 1 220px;min-width:0;height:var(--aru-control-height,52px);padding:0 16px;border:1px solid var(--line);border-radius:var(--aru-control-radius,12px);background:var(--ink-2,#131414);color:var(--cream);font-family:var(--sans);font-size:14px}.rs-stock-alert input[type=email]:focus{outline:none;border-color:var(--gold)}.rs-stock-alert .rs-stock-msg{margin:12px 0 0;font-size:13px;color:var(--gold)}.rs-stock-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* block 6cd8beff */
:root{--aru-control-radius:12px;--rs-control-radius:var(--aru-control-radius);--aru-card-radius:16px}

/* Interactive controls only; passive cards, fields and panels are untouched. */
body .btn,
body .site-main .wp-element-button,
body .site-main .wc-block-components-button,
body .site-main .woocommerce-button,
body .rs-mini .btn,
body .rs-mini button,
body .rs-dose,
body .rs-qtier,
body .rs-step,
body .ruo-card-plus,
body .ruo-strength-option,
body .chip,
body .arm-t{
	border-radius:var(--rs-control-radius)!important;
}
.btn,
body .site-main .wp-element-button,
body .site-main .wc-block-components-button,
body .site-main .woocommerce-button{
	min-height:44px;
	align-items:center;
	justify-content:center;
}
.btn:focus-visible,
body .site-main .wp-element-button:focus-visible,
body .site-main .wc-block-components-button:focus-visible,
body .site-main .woocommerce-button:focus-visible,
body .rs-mini button:focus-visible,
body .rs-dose:focus-visible,
body .rs-qtier:focus-visible,
body .rs-step:focus-visible,
body .ruo-card-plus:focus-visible,
body .ruo-strength-option:focus-visible,
body .chip:focus-visible,
body .arm-t:focus-visible{
	outline:2px solid #E6B86D!important;
	outline-offset:3px;
}
button:disabled,.btn[aria-disabled="true"]{cursor:not-allowed;opacity:.52}

/* The only routine gold-filled action. The satin-foil depth - the inset
   highlight, the dark inner edge, the lift shadow and the raised text - is
   kept exactly as it was; only the fill itself is now the flat --grad-gold
   shared with the best-seller .rs-badge, instead of a bespoke gradient. */
.hero .hero-cta .btn-gold{
	color:#11120f!important;
	border-color:#E7BF78!important;
	background:var(--grad-gold)!important;
	box-shadow:
		inset 0 1px 0 rgba(255,248,226,.48),
		inset 0 -1px 0 rgba(92,60,16,.24),
		0 7px 18px rgba(0,0,0,.26)!important;
	text-shadow:0 1px 0 rgba(255,248,226,.28);
}
.hero .hero-cta .btn-gold:hover{
	filter:brightness(1.035);
	box-shadow:inset 0 1px 0 rgba(255,248,226,.54),inset 0 -1px 0 rgba(92,60,16,.28),0 8px 20px rgba(0,0,0,.28)!important;
}
.hero .hero-cta .btn-gold:active{
	filter:brightness(.97);
	box-shadow:inset 0 2px 5px rgba(87,55,12,.28),0 4px 12px rgba(0,0,0,.24)!important;
}
@media(prefers-reduced-motion:reduce){
	.btn,.site-main .wp-element-button,.site-main .wc-block-components-button,.rs-mini button,
	.rs-dose,.rs-qtier,.rs-step,.ruo-card-plus,.ruo-strength-option{transition:none!important}
}

/* block 09039322 */
.ftr.arfr-footer{margin:0!important;padding-top:52px;background:var(--ink);border-top:1px solid var(--line-soft);color:var(--cream)}
.arfr-footer *{box-sizing:border-box}.arfr-shell{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:44px}.arfr-content{min-width:0}.arfr-contact-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10rem),1fr));gap:10px;margin-bottom:26px}.arfr-contact-action{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 14px;border:1px solid var(--line-soft);border-radius:12px;background:rgba(255,255,255,.025);box-shadow:0 8px 18px rgba(0,0,0,.16);color:var(--cream)!important;font-size:12px;letter-spacing:.08em;line-height:1;text-decoration:none!important;text-transform:uppercase}.arfr-contact-action:hover{border-color:var(--gold);background:rgba(201,166,105,.08);color:var(--cream)!important}.arfr-contact-action svg{width:17px;height:17px;flex:0 0 17px;fill:none;stroke:currentColor;stroke-width:1.6}.arfr-whatsapp svg{fill:#25D366;stroke:none}.arfr-footer a:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:2px}.arfr-contact-action:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:12px}.arfr-bottom{margin-top:44px!important}.arfr-bottom .fbot-ruo{margin-left:auto}@media (max-width:1023px){.arfr-shell{grid-template-columns:1fr;gap:30px}}@media (max-width:767px){.ftr.arfr-footer{padding-top:38px}.arfr-shell{gap:24px}.arfr-contact-actions{margin-bottom:22px}.arfr-bottom{margin-top:26px!important}.arfr-bottom .fbot-ruo{margin-left:0}}@media (prefers-reduced-motion:reduce){.arfr-footer *{scroll-behavior:auto!important;transition:none!important}}@media (max-width:767px){.arfr-footer .arfr-bottom{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:24px 0 30px}.arfr-footer .arfr-bottom .fbot-legal{justify-content:center;gap:10px;font-size:12px;letter-spacing:.04em}.arfr-footer .arfr-bottom .fbot-ruo{margin:0;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);opacity:.75;text-wrap:balance}}

/* block d7783333 */
h1,h2,h3,h4,h5,h6,.rs-pdp-title{text-wrap:balance}
p,li,dd,figcaption,blockquote,.rn-ex{text-wrap:pretty}
.lede,.sec-sub,.phead p,.rs-pdp-desc,.rs-verify-intro p,.ap-txt span,.arfr-brand p,
.bcard p,.rs-ruo-note span,.rs-news-meta{text-wrap:balance}
.ar-nw{white-space:nowrap}
@media(max-width:600px){
	.card .card-body h3,
	:is(.ruo-home .pgrid,.ruo-card-surface ul.products) .card .card-body h3{font-size:17px;line-height:1.2}
	.ap-txt b{font-size:.94em;text-wrap:balance} /* wraps inside its column rather than running into the next icon */
}

/* block 84a744d8 */

 .rs-toast { flex-direction:column; align-items:stretch; gap:8px; min-width:min(80vw,220px); padding:12px 14px; text-align:center; --aru-control-height:44px; }
 /* Same face as the coupon notice (.wc-block-components-notice-banner__content
    in the snackbar list): Poppins 14px/1.45. Both are the same kind of
    transient confirmation, so they read as one voice rather than two. */
 .rs-toast-msg { font-family:var(--sans); font-size:14px; line-height:1.45; white-space:normal; }
 #rs-toast-action.btn { width:100%; padding:0 14px !important; font-size:10.5px !important; text-decoration:none; }
 body .rs-pdp.rs-equipment .btn-gold {
 background:var(--aru-control-surface)!important;
 color:var(--cream)!important;
 border:1px solid var(--aru-control-border)!important;
 border-radius:var(--rs-control-radius)!important;
 box-shadow:var(--aru-control-shadow)!important;
 }
 

/* block fbc65bbb */
.hdr .nav .drawer-cart{display:none}

/* block 18266339 */
@media (max-width: 1023px) { .drawer .drawer-top, .drawer nav a, .drawer .nav-top-link, .drawer .nav-top, .drawer .nav-sub a { border-top: 0; border-bottom: 0; } }

/* block 228946c6 */
.card-body .dose:empty,.rs-badge:empty{display:none!important}

/* block b3dbd42f */

 body .ruo-home > section { border-top:0!important; border-bottom:0!important; }
 body .ruo-home .rule, body .ruo-home hr { display:none!important; }
 body .ruo-home > .sec { padding:28px 0!important; }
 body .ruo-home .hero > .wrap { padding-top:36px!important; padding-bottom:28px!important; }
 body .ruo-home .sec-head { margin-bottom:24px!important; }
 body .ruo-home .sec-head h2 { margin-bottom:10px; }
 body .ruo-home .sec-sub { margin-top:0; }
 body .ruo-home .grid-cta { margin-top:24px!important; }
 body .ruo-home .card-foot { border-top:0!important; }
 body.home .ftr { border-top:0!important; }
 @media(max-width:600px) {
 body .ruo-home > .sec { padding:20px 0!important; }
 body .ruo-home .hero > .wrap { padding-top:20px!important; padding-bottom:20px!important; }
 body .ruo-home .sec-head { margin-bottom:18px!important; }
 body .ruo-home .grid-cta { margin-top:18px!important; }
 }
 

/* block f37e5ff7 */
/* Established Aurelia radii: 12px large controls, 8px compact labels, 4px counters.
   The shop tabs are controls, so they take the 12px control radius. */
body .rs-badge,
body .tag,
body .purity,
body .pass,
body .rs-bundle-flag,
body .rs-qtysave,
body .wc-block-components-chip.wc-block-components-totals-discount__coupon-list-item {
	border-radius: 8px !important;
}

/* The 16px cart counter is a compact label, not a circular notification dot. */
body .cart-count {
	border-radius: 4px;
}

/* Full-width gate and refusal CTAs share the established 52px-control treatment. */
body .gate .btn,
body .rs-access-card .btn,
body .fchannel,
body .arfr-contact-action {
	border-radius: var(--rs-control-radius, var(--aru-control-radius, 12px)) !important;
}

/* The compact market control and its hover/focus tooltip need a smaller radius. */
body .arm-t,
body .arm-t::after {
	border-radius: 8px !important;
}

/* Keep the toggle thumb circular, while making the track a compact soft rectangle. */
body .rs-consent-option input {
	border-radius: 9px;
}

/* Pseudo-layers already inherit the corrected button/chip radius. Focus outlines remain untouched. */

/* block 52c31289 */
.ftr.arfr-footer{padding-top:36px;border-top:0!important;background:var(--ink)}
.arfr-footer .arfr-shell{gap:36px;align-items:start}
.arfr-footer .arfr-contact-actions{grid-template-columns:repeat(2,minmax(0,190px));gap:10px;margin-bottom:18px}
body .arfr-footer .arfr-contact-action{min-height:42px;padding:0 14px;font-size:11px;letter-spacing:.12em;border-color:rgba(241,237,228,.12);background:rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(241,237,228,.05);transition:border-color .2s ease,background .2s ease,transform .2s ease}
.arfr-footer .arfr-contact-action svg{width:15px;height:15px;flex:0 0 15px}
@media(hover:hover){body .arfr-footer .arfr-contact-action:hover{border-color:rgba(230,184,109,.7);background:rgba(230,184,109,.06);transform:translateY(-1px)}}
.arfr-footer .arfr-bottom{margin-top:24px!important;padding:0 0 36px!important;border-top:0!important;font-size:11.5px;letter-spacing:.03em;color:rgba(241,237,228,.55)}
.arfr-footer .fbot-legal a{color:rgba(241,237,228,.55);transition:color .2s ease}
.arfr-footer .fbot-legal a:hover{color:var(--gold)}
.arfr-footer .arfr-bottom .fbot-ruo{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);opacity:.7}
@media (max-width:1023px){.arfr-footer .arfr-shell{gap:26px}}
/* Newsletter spacing moved out of this layer on 2026-09-19: the newsletter
   band now owns its own rhythm in the homepage plugin stylesheet, so there is
   one set of rules for it instead of several competing !important layers. */
body .ruo-home > section.sec:last-of-type{padding:28px 0 0!important}
@media (max-width:767px){body .ruo-home > section.sec:last-of-type{padding:20px 0 0!important}}
@media (max-width:767px){
.ftr.arfr-footer{padding-top:28px}
.arfr-footer .arfr-shell{gap:22px}
.arfr-footer .arfr-contact-actions{grid-template-columns:1fr 1fr;margin-bottom:14px}
.arfr-footer .arfr-bottom{margin-top:8px!important;padding:0 0 28px!important;gap:8px}
}@media (min-width:768px){
.ftr.arfr-footer{padding-top:46px}
.arfr-footer .arfr-shell{display:block}
.arfr-footer .arfr-content{display:flex;flex-direction:column;align-items:center;gap:30px;max-width:900px;margin:0 auto}
.arfr-footer .arfr-contact-actions{display:flex;justify-content:center;gap:14px;margin:0!important}
.arfr-footer .arfr-contact-action{min-width:186px}
.arfr-footer .arfr-links{display:flex;flex-direction:column;align-items:center;gap:15px;width:100%}
.arfr-footer .arfr-inline{display:flex!important;flex-wrap:wrap;align-items:center;justify-content:center;width:100%}
.arfr-footer .arfr-inline-util a{color:rgba(241,237,228,.78);font-size:11.5px}
.arfr-footer .arfr-inline-legal a{font-size:10.5px;letter-spacing:.18em;color:rgba(241,237,228,.42)}
.arfr-footer .arfr-inline a{position:relative;padding:0 22px;color:rgba(241,237,228,.58);font-family:var(--sans);font-size:11px;font-weight:500;letter-spacing:.2em;line-height:1;text-transform:uppercase;text-decoration:none;transition:color .2s ease}
.arfr-footer .arfr-inline a+a::before{content:"";position:absolute;left:0;top:50%;width:1px;height:12px;margin-top:-6px;background:rgba(241,237,228,.15)}
.arfr-footer .arfr-inline a:hover{color:var(--gold)}
.arfr-footer .arfr-bottom{display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:9px;margin-top:34px!important;padding:20px 0 36px!important;border-top:1px solid rgba(241,237,228,.07)!important;text-align:center}
.arfr-footer .arfr-bottom .fbot-legal{justify-content:center;margin:0}
.arfr-footer .arfr-bottom .fbot-ruo{margin:0!important}
}
@media (max-width:767px){
/* Phones: every link row shares one two-column grid, the same width and gap
   as the Email/WhatsApp pair, so each column is centred under its button at
   any phone width, at a single 44px row pitch. One size and one colour for
   all six links. */
.arfr-footer .arfr-links{display:flex;flex-direction:column;gap:0;width:100%;margin:2px auto 0}
.arfr-footer .arfr-inline{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));justify-items:center;column-gap:10px;row-gap:0;width:100%}
.arfr-footer .arfr-inline a{display:block;padding:10px 0;font-family:var(--sans);font-size:11px;font-weight:500;letter-spacing:.12em;line-height:1;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap;transition:color .2s ease}
.arfr-footer .arfr-inline a::before{content:none!important}
.arfr-footer .arfr-inline-util a,
.arfr-footer .arfr-inline-legal a{color:rgba(241,237,228,.55)}
.arfr-footer .arfr-inline a:active{color:var(--gold)}
/* The disclaimer's two phrases on two centred lines, without the separator. */
.arfr-footer .arfr-bottom .fbot-ruo{display:flex;flex-direction:column;align-items:center;gap:4px}
.arfr-footer .arfr-bottom .fbot-sep{display:none}
}
@media (max-width:359px){.arfr-footer .arfr-inline a{letter-spacing:.08em}
body .arfr-footer .arfr-contact-action{padding:0 10px;letter-spacing:.08em;white-space:nowrap}}

/* block b026ef9c */
body .rs-pdp .rs-qtyrow .rs-qtysave:not(#rs-qty-save):empty{display:none!important}

/* block 9ac744e9 */
/* The product-card grids. Related-products rails and the COA library keep
   their own treatment and are deliberately not in this list. */
:is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card{position:relative}

/* ---- Title: exactly two lines, always ----
   min-height already reserved two lines; nothing capped the top, so a long
   equipment name ran to three and took the row with it. Clamped like the COA
   card titles already are - the full name stays in the markup for assistive
   technology and is shown in full on the product page. */
:is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card h3{
	display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
	overflow:hidden;line-height:1.2;width:100%;
	min-height:calc(2 * 1.2em);max-height:calc(2 * 1.2em)}

/* ---- Strength line: one reserved row on every tile ----
   A fixed row height and a fixed body gap, so the reservation below is exact
   at every breakpoint. */
:is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card-body{gap:7px}
:is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card .dose{
	display:block;width:100%;font-size:11.5px;line-height:16px;min-height:16px}
/* Three strengths ("10MG / 20MG / 30MG") fit the one reserved row on the
   narrowest two-up phones only slightly tighter. */
@media (max-width:399px){
	:is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card .dose{font-size:11px;letter-spacing:.06em}
}
/* Lab Equipment's label is intentionally blank: it holds its line instead of
   collapsing. */
body :is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card-body > .dose:empty{
	display:block!important;visibility:hidden}
/* A product with no strength attribute renders no line at all, so the same
   16px row plus the 7px gap is reserved under its title. */
:is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card-body:not(:has(> .dose)) > h3{
	margin-bottom:23px}

/* ---- Badges sit over the image, not in the card body ----
   "New" and "Best Seller" are computed automatically (aurelia-auto-badges.php),
   so the badge has to cost no height: out of flow, over the top-left of the
   image, which is free on these grids because the category tag is stripped
   from product cards. The product page badge is untouched. */
:is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card-body > .rs-badge{
	position:absolute;top:12px;left:12px;z-index:2;margin:0;
	box-shadow:0 2px 10px rgba(0,0,0,.35)}

/* ---- Lab Equipment grid uses the Compounds grid's own values ---- */
.aru-lab-card .card-body{min-height:0}
@media(min-width:1200px){
	.aru-lab-grid{gap:22px}
	.aru-lab-card h3{font-size:21px}
	.aru-lab-card .card-body{min-height:0}
}
@media(max-width:767px){
	:is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card-body > .rs-badge{
		top:10px;left:10px}
}

/* block b540e958 */
/* Grid: same columns and gap as the Compounds grid */
@media(min-width:768px){
	body .aru-lab-grid{gap:22px}
}
@media(min-width:768px) and (max-width:1023px){
	body .aru-lab-grid{grid-template-columns:repeat(3,1fr)}
}
@media(min-width:1024px){
	body .aru-lab-grid{grid-template-columns:repeat(4,1fr)}
}

/* Card internals: Compounds values */
body .aru-lab-grid .aru-lab-card{height:100%}
body .aru-lab-grid .aru-lab-card .card-media{aspect-ratio:1/1.06}
body .aru-lab-grid .aru-lab-card .card-body{padding:14px 14px 15px;gap:7px;min-height:0}
body .aru-lab-grid .aru-lab-card h3{font-size:21px}
body .aru-lab-grid .aru-lab-card .card-foot{padding-top:11px}

@media(max-width:767px){
	body .aru-lab-grid .aru-lab-card{height:auto;align-self:start}
	body .aru-lab-grid .aru-lab-card .card-media{aspect-ratio:1/.92}
	body .aru-lab-grid .aru-lab-card .card-body{padding:14px 14px 15px;min-height:0;flex:0 0 auto}
	body .aru-lab-grid .aru-lab-card h3{font-size:20px}
	body .aru-lab-grid .aru-lab-card .card-foot{margin-top:0}
}
@media(max-width:600px){
	body .aru-lab-grid .aru-lab-card h3{font-size:17px;line-height:1.2}
}

/* Price row: always one line. On narrow phones a variable product's range
   (e.g. $114.99 - $194.99) wrapped to two lines and made that tile taller,
   so there it shows as From $114.99. Full range stays for screen readers
   and on wider screens. */
@media(max-width:600px){
	:is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card-foot .price{white-space:nowrap}
	:is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card-foot .price:has(> .amount ~ .amount) > .amount ~ .amount,
	:is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card-foot .price:has(> .amount ~ .amount) > span[aria-hidden]:not(.amount){display:none}
	:is(.ruo-home .pgrid,.ruo-card-surface ul.products,.aru-lab-grid) .card-foot .price:has(> .amount ~ .amount) > .amount:first-of-type::before{content:'From ';font-size:.62em;letter-spacing:.08em;text-transform:uppercase;opacity:.7;vertical-align:.12em}
}

/* handle aurelia-categories-hidden */
#rs-coa-filters,.coa-card .rs-card-tag,.rs-card-tag,.rs-shop-filters{display:none!important}

/* handle aurelia-premium-features */
.pf-addon{display:flex;align-items:center;gap:12px;margin:12px 0 4px;padding:10px 12px;border:1px solid var(--line-soft,rgba(241,237,228,.1));border-radius:14px;background:rgba(241,237,228,.025)}
.pf-addon-img{width:44px;height:44px;object-fit:cover;border-radius:10px;flex:0 0 auto;background:#000}
.pf-addon-txt{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.pf-addon-txt b{font-weight:500;font-size:13px;color:var(--cream,#F1EDE4)}
.pf-addon-txt span{font-size:12px;color:var(--cream-dim,rgba(241,237,228,.62))}
.pf-addon-txt .woocommerce-Price-amount{color:var(--cream,#F1EDE4)}
.pf-addon-btn{flex:0 0 auto;min-width:76px;height:36px;padding:0 16px;border-radius:999px;border:1px solid rgba(230,184,109,.55);background:transparent;color:var(--gold,#E6B86D);font:500 11px/1 var(--sans,Poppins,sans-serif);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;transition:background .2s,color .2s}
.pf-addon-btn:hover:not([disabled]){background:var(--gold,#E6B86D);color:#0D0E0E}
.pf-addon-btn:focus-visible{outline:2px solid var(--gold,#E6B86D);outline-offset:2px}
.pf-addon .pf-done-l{display:none}
.pf-addon.is-added .pf-add-l{display:none}
.pf-addon.is-added .pf-done-l{display:inline}
.pf-addon.is-added .pf-addon-btn{border-color:rgba(241,237,228,.18);color:var(--cream-dim,rgba(241,237,228,.62));cursor:default}
.pf-addon.is-busy .pf-addon-btn{opacity:.6;cursor:progress}
.pf-sr-note{margin:10px 0 2px;font-size:11.5px;line-height:1.5;color:var(--cream-dim,rgba(241,237,228,.55))}
.rs-sr.pf-sr-sequence .rs-sr-v,.rs-sr.pf-sr-storage .rs-sr-v{text-align:right;max-width:62%;word-break:break-word}
.pf-related{margin:56px 0 8px;padding-top:40px;border-top:1px solid var(--line-soft,rgba(241,237,228,.08))}
.pf-related-head h2{font-size:30px;text-align:center;margin:0 0 26px}
.pf-related-grid ul.products{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin:0;padding:0;list-style:none}
.pf-related-grid ul.products li.product{margin:0;width:auto;float:none}
.pf-related-grid .card{position:relative;height:100%;border-radius:16px;background:linear-gradient(155deg,rgba(241,237,228,.055),transparent 42%),rgba(19,20,20,.96);border:1px solid rgba(241,237,228,.12);box-shadow:inset 0 1px 0 rgba(241,237,228,.055),0 12px 30px rgba(0,0,0,.16);color:inherit;text-decoration:none}
.pf-related-grid .card:hover{border-color:rgba(230,184,109,.42)}
.pf-related-grid .card:focus-visible{outline:2px solid var(--gold,#E6B86D);outline-offset:3px}
.pf-related-grid .card-media{border-radius:15px 15px 0 0;overflow:hidden}
.pf-related-grid .card-body{padding:14px 14px 15px;gap:7px}
.pf-related-grid .card h3{font-size:21px;line-height:1.12;min-height:0}
.pf-related-grid .dose{font-size:11.5px}
.pf-related-grid .card-foot{justify-content:flex-start;padding-top:11px;margin-top:auto}
.pf-related-grid .price{font-size:21px}
@media (max-width:900px){.pf-related{margin-top:40px;padding-top:30px}.pf-related-head h2{font-size:24px;margin-bottom:18px}.pf-related-grid ul.products{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;padding:6px 0;-webkit-overflow-scrolling:touch;scrollbar-width:none}.pf-related-grid ul.products::-webkit-scrollbar{display:none}.pf-related-grid ul.products li.product{flex:0 0 46%;scroll-snap-align:start}}

/* handle aurelia-premium-pass */
.ap-band{border-bottom:1px solid var(--line-soft,rgba(241,237,228,.08));background:linear-gradient(180deg,rgba(230,184,109,.035),rgba(230,184,109,0))}
.ap-band .wrap{padding-top:22px;padding-bottom:22px}
.ap-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px 28px}
.ap-item{display:flex;align-items:center;gap:13px;min-width:0}
.ap-ico{flex:0 0 auto;color:var(--gold,#E6B86D);opacity:.95}
.ap-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.ap-txt b{font-weight:500;font-size:13px;letter-spacing:.02em;color:var(--cream,#F1EDE4);line-height:1.3}
.ap-txt span{font-size:12px;color:var(--cream-dim,rgba(241,237,228,.62));line-height:1.35}
.ap-item + .ap-item{position:relative}
@media (min-width:901px){.ap-item + .ap-item::before{content:"";position:absolute;left:-14px;top:15%;bottom:15%;width:1px;background:var(--line-soft,rgba(241,237,228,.08))}}
@media (max-width:900px){.ap-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 14px}.ap-band .wrap{padding-top:18px;padding-bottom:18px}.ap-item{gap:10px;align-items:flex-start}.ap-ico{width:20px;height:20px;margin-top:1px}.ap-txt b{font-size:12.5px}.ap-txt span{font-size:11.5px}}
/* 2. Card rhythm: strength directly under the name; footer stays pinned. */
:is(.ruo-home .pgrid,.woocommerce ul.products,.ruo-card-surface ul.products) .card h3{min-height:0}
:is(.ruo-home .pgrid,.woocommerce ul.products,.ruo-card-surface ul.products) .card .card-foot{margin-top:auto}

/* handle aurelia-tile-parity-phone */
/* The Shop archive and the Lab Equipment category archive are the same
   catalogue surface and share this contract. Every other product category
   archive redirects to the Shop, so .tax-product_cat only ever means Lab
   Equipment here. */
/* Equal tracks: 1fr alone inflates to the widest price, which then feeds the
   fixed-ratio image and makes one column's tiles taller than the other's. */
body:is(.woocommerce-shop,.tax-product_cat) ul.products{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:1023px){
	body:is(.woocommerce-shop,.tax-product_cat) ul.products{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:767px){
	body:is(.woocommerce-shop,.tax-product_cat) ul.products{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* Every row is one height, each card fills it and the price rail is pinned to
   the bottom, so prices line up across the row. The strength sits directly
   under the name; the spare height goes above the price rail rather than
   between name and strength (the old two-line title reservation). */
body:is(.woocommerce-shop,.tax-product_cat) ul.products li.product{align-self:stretch}
body:is(.woocommerce-shop,.tax-product_cat) ul.products li.product > .card{height:100%}
body:is(.woocommerce-shop,.tax-product_cat) ul.products .card-body{flex:1 1 auto;min-height:0}
body:is(.woocommerce-shop,.tax-product_cat) ul.products .card-foot{margin-top:auto}

/* Customizer Additional CSS (post 324) */
/* Tapping around the buy controls must never zoom the page: iOS zooms when a
   focused field is under 16px, and a near-miss double tap zooms too. The
   strength pills and quantity tiles are tapped in quick succession as well. */
.rs-qtyrow,.rs-stepper,.rs-step,.rs-stepper input,
.rs-pdp-doses,.rs-dose,
.rs-pdp-tiers,.rs-qtier{touch-action:manipulation;}
@media (max-width:767px){
.rs-stepper input{font-size:16px;}
}

/* Below 767px the bento cards become a sticky stack, and the stack leaves a
   tail behind it: the last card's 18px bottom margin plus an 8px spacer.
   That is 26px of whitespace no other section has, which is why the gap
   above the newsletter still read as larger on a phone. The tail is only
   trailing space - it sits after the final card, so removing it does not
   change how the cards stack. */
@media (max-width:767px){
body .ruo-home .bento > .bcard:last-child{margin-bottom:0;}
body .ruo-home .bento-spacer{display:none;}
}


/* Mobile homepage carousel rhythm: compact rail-to-CTA spacing. */
@media (max-width:767px){
  body .ruo-home #products .prail,
  body .ruo-home #lab-equipment .prail{margin:0 auto 12px!important;}
  body .ruo-home #products .grid-cta,
  body .ruo-home #lab-equipment .sec-cta{margin-top:12px!important;}
}


/* Aurelia storefront micro-polish: clearer mobile cues, comfortable targets, restrained hero entrance. */
@media (max-width:767px){
  body .ruo-home #products .prail,
  body .ruo-home #lab-equipment .prail,
  body .ruo-home #products .prail-track,
  body .ruo-home #lab-equipment .prail-track{width:40px!important;}

  footer.arfr-footer .arfr-contact-action{min-height:44px!important;}
  footer.arfr-footer .arfr-inline a{
    display:inline-flex;
    align-items:center;
    min-height:44px!important;
  }
}

@media (prefers-reduced-motion:no-preference){
  body .ruo-home .hero-copy{animation:aurelia-home-hero-rise .48s cubic-bezier(.22,1,.36,1) both;}
  body .ruo-home .hero-media{animation:aurelia-home-hero-rise .56s cubic-bezier(.22,1,.36,1) .06s both;}
}
@keyframes aurelia-home-hero-rise{
  from{opacity:0;transform:translateY(10px);}
  to{opacity:1;transform:translateY(0);}
}


/* Aurelia storefront refinement: selection clarity, mobile readability and easy recovery from an empty search. */
.toolbar .woocommerce-ordering .orderby{border-radius:var(--aru-control-radius,12px);min-height:44px;
  /* The site's nav caret in place of the browser's native arrow. */
  -webkit-appearance:none;appearance:none;padding-right:40px;
  background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23F1EDE4' stroke-opacity='.7' stroke-width='1.4'/%3E%3C/svg%3E") no-repeat right 16px center/10px 6px;}
.toolbar .woocommerce-ordering .orderby:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
.rs-shop-selector .rs-shop-tab{border-radius:var(--aru-control-radius,12px);}

.ruo-search-panel .ruo-search-recovery{
  display:flex;align-items:center;justify-content:center;gap:14px;
  min-height:52px;padding:8px 16px;
  border-top:1px solid rgba(230,184,109,.16);
}
.ruo-search-recovery-clear,.ruo-search-recovery-browse{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:40px;padding:0 2px;
  color:#f1ede4;font:600 11px/1.2 Poppins,Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;
}
.ruo-search-recovery-clear{border:0;background:transparent;cursor:pointer;}
.ruo-search-recovery-browse{color:#e6b86d;text-decoration:none;border-bottom:1px solid rgba(230,184,109,.62);}
.ruo-search-recovery-clear:focus-visible,.ruo-search-recovery-browse:focus-visible{outline:2px solid #e6b86d;outline-offset:3px;border-radius:3px;}

@media (max-width:767px){
  #rs-cf .rs-cf-field > label{font-size:12px;color:rgba(241,237,228,.65);}
  #rs-cf input:not([tabindex="-1"]),#rs-cf textarea{font-size:16px;}
  #rs-cf .rs-cf-close{display:grid;place-items:center;width:44px;height:44px;min-width:44px;min-height:44px;}
  #rs-cf .rs-cf-copy{display:inline-flex;align-items:center;justify-content:center;min-height:44px;}
  .rs-shop-selector .rs-shop-tab{display:inline-flex;align-items:center;justify-content:center;min-height:44px;}
  .ruo-search-panel .ruo-search-recovery{min-height:60px;padding:8px 14px;gap:16px;}
  .ruo-search-recovery-clear,.ruo-search-recovery-browse{min-height:44px;}
}

