/*
Theme Name: Aurelia Research
Theme URI: https://aureliaresearch.com
Description: WooCommerce storefront theme for Aurelia Research. Ships the site chrome (announcement bar, header, mobile drawer, footer), the 21+ / research-use gate, the COA Library and FAQ, and the quantity-discount rules. Homepage sections come from the Aurelia Research — Homepage plugin.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
Author: Aurelia Research
Text Domain: aurelia

Tags: e-commerce, woocommerce, dark, one-column
*/

/* All theme functions use the rs_ prefix. The homepage plugin uses ruo_.
   An overlap between the two is a fatal error when both are active. */

:root{
  --ink:#0D0E0E;
  --ink-2:#131414;
  --ink-3:#1B1C1C;
  --line:rgba(230,184,109,.22);
  --line-soft:rgba(241,237,228,.10);
  --gold:#E6B86D;
  --gold-deep:#A98952;
  --gold-dark:#8E7143;
  --cream:#F1EDE4;
  --cream-dim:rgba(241,237,228,.66);
  --grad-gold:linear-gradient(100deg,#8E7143 0%,#E6B86D 38%,#F3DEB4 55%,#C69B54 78%,#8E7143 100%);
  --serif:"Cormorant Garamond",Didot,"Bodoni MT",Georgia,serif;
  --sans:"Poppins",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mark:url("assets/img/icon-mark.webp");
  --wrap:1280px;
  --gut:28px;
  --hdr:76px;
}
*{box-sizing:border-box}
/* clip, not hidden: overflow-x:hidden would turn the root into a scroll
   container and kill position:sticky on the header. clip contains stray
   width without that side effect, so nothing off to the right is reachable
   by pinching out. Safari ignores it before 16, where the drawer clip above
   is the real guard. */
html{-webkit-text-size-adjust:100%;overflow-x:clip}
body{overflow-x:clip}
body{
  margin:0;background:var(--ink);color:var(--cream);
  font-family:var(--sans);font-weight:300;font-size:16px;line-height:1.65;
  -webkit-font-smoothing:antialiased;
  /* Cormorant Garamond defaults to old-style figures, where 5 and 7 drop below
     the baseline and 1 sits at x-height. In compound names that reads as a
     misalignment: the -157 in BPC-157 looked lower than the letters. Lining
     figures put digits at cap height. Inherited, so it also fixes prices,
     purity values and batch numbers. A no-op for Poppins, whose figures
     already line. */
  font-variant-numeric:lining-nums;
}
body.rs-locked{overflow:hidden}
/* iOS Safari ignores overflow:hidden on body, so with either drawer open the
   page behind it still scrolled under the customer's finger. Pinning the body
   is the only lock that holds there; theme.js parks the scroll offset in the
   inline `top` and restores it on close so nothing jumps back to the top of
   the page. Theme-owned because the drawer and basket locks are production
   critical: this must not depend on the sandbox layer. A byte-identical copy
   still sits in novamira-sandbox/aurelia-cart-polish.php pending removal. */
body.rs-locked-fixed{position:fixed;left:0;right:0;width:100%;overflow:hidden;overscroll-behavior:none}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
input,select,textarea{font-family:inherit}
/* iOS Safari draws type=search with its own rounded, smaller native field and
   ignores the site's border radius and padding until the appearance is reset. */
input[type="search"]{-webkit-appearance:none;appearance:none}
input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
/* One keyboard focus ring for anything without a ring of its own. Zero
   specificity, so every component ring still wins. */
:where(a[href],button,summary,[role="button"],[tabindex]:not([tabindex="-1"])):focus-visible{outline:2px solid var(--gold);outline-offset:3px}
:where(a[href],summary):focus-visible{border-radius:4px}
.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 var(--gut)}

/* ---------- type ---------- */
.eyebrow{
  font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:.22em;
  text-transform:uppercase;color:var(--gold);margin:0 0 14px;
}
h1,h2,h3{font-family:var(--serif);font-weight:400;letter-spacing:.01em;margin:0}
/* Raise the hyphen in compound names. Cormorant centres it at 211/1000 for
   lowercase; capitals want ~312, hence the 0.1em lift. Relative positioning so
   the line box is untouched. */
.rs-hy{position:relative;bottom:.1em}
h1{font-size:clamp(38px,5.2vw,68px);line-height:1.04}
h2{font-size:clamp(28px,3.4vw,44px);line-height:1.12}
h3{font-size:20px;line-height:1.25}
p{margin:0 0 18px}
.lede{font-size:17px;color:var(--cream-dim);max-width:46ch}
.sec{padding:88px 0}
.sec-head{text-align:center;margin-bottom:46px}
.sec-head h2{margin-bottom:14px}
.rule{width:64px;height:1px;background:var(--grad-gold);margin:0 auto}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  height:52px;padding:0 30px;font-size:13px;font-weight:500;letter-spacing:.14em;
  text-transform:uppercase;border-radius:2px;transition:.22s ease;white-space:nowrap;
}
.btn-gold{background:var(--grad-gold);color:#17130B;box-shadow:0 1px 0 rgba(255,255,255,.18) inset}
.btn-gold:hover{filter:brightness(1.07)}
.btn-ghost{border:1px solid var(--gold);color:var(--gold)}
.btn-ghost:hover{background:rgba(230,184,109,.10)}

/* ---------- announcement ---------- */
.anno{background:var(--grad-gold);color:#1A1408}
.anno .wrap{display:flex;align-items:center;justify-content:center;gap:34px;height:40px;
  font-size:12px;font-weight:500;letter-spacing:.06em}
.anno span{display:inline-flex;align-items:center;gap:8px}
.anno .dot{opacity:.5}
.anno svg{width:14px;height:14px}
/* The bar's text links to the newsletter capture but reads as plain text -
   no underline, and it inherits the bar's own colour. */
.anno a{color:inherit;text-decoration:none}

/* ---------- header ---------- */
.hdr{position:sticky;top:0;z-index:60;background:rgba(13,14,14,.94);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line-soft)}
.hdr .wrap{display:flex;align-items:center;gap:20px;height:var(--hdr)}
.brand{display:flex;align-items:center;flex:0 0 auto}
.brand img{height:64px;width:auto}
.nav{display:flex;align-items:center;gap:34px;margin-left:auto}
.nav a{font-size:12.5px;font-weight:400;letter-spacing:.16em;text-transform:uppercase;
  color:var(--cream);position:relative;padding:6px 0;transition:color .2s}
.nav a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;
  background:var(--gold);transition:right .28s ease}
.nav a:hover{color:var(--gold)}
.nav a:hover::after{right:0}
.util{display:flex;align-items:center;gap:6px;margin-left:34px}
.icon-btn{width:42px;height:42px;display:grid;place-items:center;border-radius:var(--aru-control-compact-radius,12px);
  color:var(--cream);transition:color var(--aru-motion-fast) var(--aru-ease),background var(--aru-motion-fast) var(--aru-ease);position:relative;-webkit-tap-highlight-color:transparent}
@media (hover:hover) and (pointer:fine){
  .icon-btn:hover{color:var(--gold);background:rgba(230,184,109,.08)}
}
.icon-btn:active{color:var(--gold)}
.icon-btn:focus-visible{outline:2px solid var(--gold);outline-offset:2px;background:transparent}
.icon-btn svg{width:20px;height:20px}
.cart-count{position:absolute;top:5px;right:4px;min-width:16px;height:16px;padding:0 4px;
  border-radius:9px;background:var(--grad-gold);color:#17130B;font-size:10px;font-weight:600;
  display:grid;place-items:center;line-height:1}
.burger{display:none;width:42px;height:42px;place-items:center;color:var(--cream)}
.burger svg{width:22px;height:22px}

/* ---------- mobile drawer ---------- */
/* The closed panel is parked at translateX(100%), i.e. a full panel width past
   the right edge. Nothing clipped it, so the page's scrollable area extended
   that far and iOS Safari let you pinch out to reach it - and then would not
   snap back. Clipping here costs nothing: the panel slides inside this box, so
   there is never anything outside it worth showing. */
.drawer{position:fixed;inset:0;z-index:80;visibility:hidden;pointer-events:none;
 overflow:hidden}
.drawer.open{visibility:visible;pointer-events:auto}
.drawer-scrim{position:absolute;inset:0;background:rgba(0,0,0,.62);opacity:0;transition:opacity var(--aru-motion-panel) var(--aru-ease)}
.drawer.open .drawer-scrim{opacity:1}
.drawer-panel{position:absolute;top:0;right:0;height:100%;width:min(84vw,340px);
  background:var(--ink-2);border-left:1px solid var(--line-soft);
  transform:translateX(100%);transition:transform var(--aru-motion-panel) var(--aru-ease);will-change:transform;padding:18px 22px 30px;
  display:flex;flex-direction:column}
.drawer.open .drawer-panel{transform:none}
.drawer-top{display:flex;align-items:center;justify-content:space-between;
  padding-bottom:16px;border-bottom:1px solid var(--line-soft)}
.drawer-top img{height:44px}
.drawer nav{display:flex;flex-direction:column;padding:14px 0}
.drawer nav a{padding:14px 0;font-size:13px;letter-spacing:.16em;text-transform:uppercase;
  border-bottom:1px solid rgba(241,237,228,.06)}
.drawer .btn{width:100%;margin-top:20px}
/* Sits in the drawer nav alongside the menu links, so it takes their colour
   and sits directly under the last one - .drawer nav a supplies the shared
   size, tracking and padding. */
.drawer-cart{display:flex;align-items:center;gap:10px;text-transform:uppercase}
.drawer-cart svg{width:18px;height:18px}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line-soft)}
.hero::before{content:"";position:absolute;inset:0;
  background:radial-gradient(120% 90% at 78% 42%,rgba(230,184,109,.16) 0%,rgba(13,14,14,0) 58%);
  pointer-events:none}
.hero .wrap{position:relative;display:grid;grid-template-columns:1.02fr .98fr;
  align-items:center;gap:40px;padding-top:78px;padding-bottom:78px}
.hero h1{margin-bottom:22px}
.hero-cta{display:flex;gap:14px;flex-wrap:wrap;margin-top:30px}
.hero-media{display:flex;align-items:center;justify-content:center}
/* transparent foreground treatment: no fill, no card, contain */
.fg-img{width:100%;height:auto;max-height:520px;object-fit:contain;background:none}

/* placeholder skin — delete .ph wrapper when the real PNG lands */
.ph{display:grid;place-items:center;gap:10px;background:#191A1A;
  border:1px dashed rgba(230,184,109,.34);border-radius:3px;padding:22px}
.mk{display:block;background:var(--mark) center/contain no-repeat;opacity:.85}
.ph .mk{width:96px;height:96px}
.ph span{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:rgba(241,237,228,.45)}
.ph-hero{width:100%;aspect-ratio:1/.86;max-height:460px}

/* ---------- trust strip ---------- */
.trust{border-bottom:1px solid var(--line-soft);background:var(--ink-2)}
.trust .wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:0;padding-top:34px;padding-bottom:34px}
.trust-i{text-align:center;padding:6px 22px;border-right:1px solid var(--line-soft)}
.trust-i:last-child{border-right:0}
.trust-i svg{width:30px;height:30px;color:var(--gold);margin:0 auto 12px;display:block}
.trust-i b{display:block;font-family:var(--serif);font-size:17px;font-weight:500;
  color:var(--gold);margin-bottom:5px}
.trust-i small{font-size:12.5px;color:var(--cream-dim);line-height:1.5;display:block}

/* ---------- filters ---------- */
.filters{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:34px}
.chip{padding:8px 18px;border:1px solid var(--line-soft);border-radius:999px;font-size:11.5px;
  letter-spacing:.12em;text-transform:uppercase;color:var(--cream-dim);transition:color var(--aru-motion-fast) var(--aru-ease),border-color var(--aru-motion-fast) var(--aru-ease)}
.chip.on,.chip:hover{border-color:var(--gold);color:var(--gold)}
@media (pointer:coarse){.chip{display:inline-flex;align-items:center;justify-content:center;min-height:44px}}

/* ---------- products ---------- */
.pgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.card{background:var(--ink-2);border:1px solid var(--line-soft);border-radius:3px;
  overflow:hidden;display:flex;flex-direction:column;transition:transform var(--aru-motion) var(--aru-ease),border-color var(--aru-motion) var(--aru-ease)}
@media(hover:hover){.card:hover{border-color:var(--line);transform:translateY(-3px)}}
.card-media{position:relative;width:100%;aspect-ratio:1/1.06;overflow:hidden;background:#0B0C0C}
/* real photography: full-bleed, no padding / gradient / shadow */
.card-media img.shot{width:100%;height:100%;object-fit:cover}
.card-media .ph{position:absolute;inset:0;border:0;border-bottom:1px solid var(--line-soft);border-radius:0}
.card-media .ph .mk{width:54px;height:54px}
.card-body{padding:16px 16px 18px;text-align:center;display:flex;flex-direction:column;
  align-items:center;gap:8px;flex:1}
.tag{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);
  border:1px solid var(--line);border-radius:999px;padding:3px 10px}
.card h3{font-size:21px}
.dose{font-size:12px;letter-spacing:.12em;color:var(--cream-dim)}
.purity{font-size:10px;letter-spacing:.1em;border:1px solid var(--line-soft);
  border-radius:999px;padding:3px 10px;color:var(--cream-dim)}
.card-foot{display:flex;align-items:center;justify-content:space-between;width:100%;
  margin-top:auto;padding-top:14px;border-top:1px solid rgba(241,237,228,.06)}
.price{font-family:var(--serif);font-size:22px;color:var(--cream)}
.add{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);
  display:grid;place-items:center;color:var(--gold);transition:.2s}
.add:hover{background:var(--grad-gold);color:#17130B;border-color:transparent}
.add svg{width:16px;height:16px}

/* ---------- Lab Equipment: distinct dark/technical treatment ---------- */
.rs-equipment .card{background:linear-gradient(165deg,#1D1D1B,#0C0C0B);border-color:rgba(169,137,82,.30)}
.rs-equipment .card:hover{border-color:var(--gold-deep)}
.rs-equipment .card-media{background:#0A0A09}
.rs-equipment .tag{color:var(--gold-deep);border-color:rgba(169,137,82,.4)}
.rs-equipment .dose{color:var(--gold-deep);font-weight:500}
.rs-equipment .add{border-color:rgba(169,137,82,.4);color:var(--gold-deep)}
.rs-equipment .add:hover{background:linear-gradient(100deg,#5C4A2C,#A98952 45%,#C9AD75 70%,#5C4A2C 100%);color:#0D0E0E;border-color:transparent}

.rs-pdp.rs-equipment .rs-pdp-img{background:#0A0A09;border-color:rgba(169,137,82,.3)}
.rs-pdp.rs-equipment .rs-pdp-buy{background:linear-gradient(165deg,#1D1D1B,#0C0C0B);border:1px solid rgba(169,137,82,.3);border-radius:4px;padding:28px}
.rs-pdp.rs-equipment .eyebrow{color:var(--gold-deep)}
.rs-pdp.rs-equipment .rs-badge{background:none;border:1px solid var(--gold-deep);color:var(--gold-deep)}
.rs-pdp.rs-equipment .btn-gold{background:linear-gradient(100deg,#5C4A2C 0%,#A98952 42%,#C9AD75 70%,#5C4A2C 100%)!important;color:#0D0E0E!important}
.rs-pdp.rs-equipment .rs-stepper-locked{opacity:.7}.grid-cta{display:flex;justify-content:center;margin-top:44px}

/* ---------- bento ---------- */
.bento{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.bcard{position:relative;aspect-ratio:1/1;border-radius:3px;overflow:hidden;
  background:var(--ink-2);border:1px solid var(--line-soft);display:flex}
.bcard .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.bcard .ph{position:absolute;inset:0;border:0;border-radius:0;align-content:center;padding-bottom:34%}
.bcard .ph .mk{width:66px;height:66px}
.bcard .binner{position:relative;z-index:2;margin-top:auto;padding:22px;width:100%;
  background:linear-gradient(180deg,rgba(13,14,14,0) 0%,rgba(13,14,14,.88) 62%)}
.bcard h3{font-size:19px;margin-bottom:6px}
.bcard p{margin:0;font-size:13px;color:var(--cream-dim);line-height:1.5}
.bcard .num{position:absolute;top:16px;left:20px;z-index:2;font-family:var(--serif);
  font-size:13px;letter-spacing:.2em;color:var(--gold)}

/* ---------- coa band ---------- */
.coa{background:var(--ink-2);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.coa .wrap{display:grid;grid-template-columns:.82fr 1.18fr;gap:56px;align-items:center;
  padding-top:80px;padding-bottom:80px}
.coa-docs{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.doc{background:var(--ink);border:1px solid var(--line-soft);border-radius:3px;padding:14px}
.doc-thumb{aspect-ratio:1/1.28;background:#101111;border:1px solid rgba(241,237,228,.07);
  display:grid;place-items:center;gap:8px;margin-bottom:12px;padding:10px;text-align:center}
.doc-thumb .mk{width:38px;height:38px;opacity:.75}
.doc-thumb span{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:rgba(241,237,228,.4)}
.doc b{display:block;font-size:13px;font-weight:400}
.doc small{display:block;font-size:11.5px;color:var(--cream-dim);margin:2px 0 10px}
.doc a{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}

/* ---------- ruo notice ---------- */
.ruo{border:1px solid var(--line);border-radius:3px;padding:22px;text-align:center;
  background:rgba(230,184,109,.04)}
.ruo b{display:inline-flex;align-items:center;gap:10px;font-family:var(--serif);
  font-size:20px;color:var(--gold);font-weight:500}
.ruo svg{width:18px;height:18px}
.ruo p{margin:6px 0 0;font-size:13.5px;color:var(--cream-dim)}

/* ---------- newsletter ---------- */
/* The homepage newsletter band is owned end to end by the homepage plugin
   stylesheet (plugins/aurelia-homepage/assets/css/aurelia-homepage.css) as of
   2026-09-19. The .news / .nform markup only ever renders inside .ruo-home, so
   the rules that used to sit here were dead the moment that file scoped its
   own copies to .ruo-home - they are not duplicated back into the theme. */

/* ---------- footer ---------- */
.ftr{background:var(--ink);border-top:1px solid var(--line-soft);padding-top:52px}
/* The footer grid is set here only: desktop four columns, 768-1023 brand row
   over three columns, phones two columns with Contact on its own row, and a
   single column below 350px where two link columns cannot hold their labels. */
.fgrid{display:grid;grid-template-columns:minmax(250px,1.4fr) repeat(3,minmax(0,1fr));gap:clamp(28px,3.5vw,48px);align-items:start}
.fbrand img{height:64px;margin-bottom:18px}
.fbrand p{font-size:13.5px;color:var(--cream-dim);max-width:34ch;margin-bottom:12px}
.fcol h4{font-family:var(--sans);font-size:11px;font-weight:500;letter-spacing:.2em;
  text-transform:uppercase;color:var(--gold);margin:0 0 18px}
.fcol ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
/* List links only: the Contact buttons carry their own type and colour. */
.fcol li,.fcol li a{font-size:13.5px;color:var(--cream-dim);transition:color .2s}
.fcol li a{display:inline-flex;align-items:center;min-height:24px}
.fcol li a:hover{color:var(--gold)}
.fcontact{display:grid;grid-template-columns:1fr 1fr;gap:11px 20px}
.fcontact .full{grid-column:1 / -1}
.fcontact div{font-size:13.5px;color:var(--cream-dim);min-width:0;overflow-wrap:anywhere}
.fcontact .lbl{display:block;font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(241,237,228,.34);margin-bottom:3px}
.todo{display:inline-block;font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:#0D0E0E;background:var(--gold);border-radius:2px;padding:1px 7px;margin-left:6px}
.fbot{margin-top:52px;border-top:1px solid rgba(241,237,228,.07);padding:22px 0;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  font-size:12px;color:rgba(241,237,228,.5)}
.fbot nav{display:flex;gap:22px}

/* ---------- age gate ---------- */
.gate{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:18px;
  background:rgba(6,7,7,.94);backdrop-filter:blur(12px)}
.gate[hidden]{display:none}
/* A visitor who already confirmed: head script sets this on <html> before
   first paint, so the gate never flashes and scrolling is never locked. */
html.rs-gate-passed .gate{display:none}
html:not(.rs-gate-passed) body.rs-has-gate{overflow:hidden}
.gate-box{width:min(540px,100%);max-height:calc(100dvh - 24px);overflow:auto;padding:24px 28px 22px;
  text-align:center;background:linear-gradient(155deg,rgba(241,237,228,.055),transparent 42%),rgba(19,20,20,.98);
  border:1px solid rgba(230,184,109,.28);border-radius:18px;
  box-shadow:inset 0 1px 0 rgba(241,237,228,.07),0 28px 80px rgba(0,0,0,.48)}
.gate-box:focus{outline:none}
.gate-box .mk{width:32px;height:32px;margin:0 auto 5px}
.gate-box .arm-toggle{margin:0 auto 7px}
.gate-box h2{font-size:28px;line-height:1.05;margin:0 0 6px}
.gate-box>p{max-width:42ch;margin:0 auto 13px;font-size:11.5px;line-height:1.5;color:var(--cream-dim)}
.checks{display:flex;flex-direction:column;gap:7px;text-align:left;margin-bottom:11px}
.check{display:flex;gap:11px;align-items:flex-start;min-height:44px;padding:10px 12px;border-radius:9px;
  border:1px solid rgba(241,237,228,.11);background:rgba(241,237,228,.018);cursor:pointer;
  transition:border-color .18s ease,background .18s ease}
.check:hover{border-color:rgba(230,184,109,.36)}
.check:has(input:checked){border-color:rgba(230,184,109,.42);background:rgba(230,184,109,.045)}
.check input{margin:1px 0 0}
.check span{font-size:12.25px;line-height:1.38;color:var(--cream)}
.gate .btn{width:100%}
.gate .btn[disabled]{opacity:.4;cursor:not-allowed;filter:none}
.gate-exit{display:block;margin:11px auto 0;font-size:11.5px;color:var(--cream-dim);
  text-decoration:underline;text-underline-offset:3px}
.gate-fine{margin:11px 0 0;font-size:10px;line-height:1.45;color:rgba(241,237,228,.38)}
.rs-consent{margin:0 0 16px;padding:14px;text-align:left;border:1px solid var(--line-soft);border-radius:12px;background:rgba(241,237,228,.025)}
.rs-consent-options{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.rs-consent h2{margin:0 0 5px;font:500 15px/1.3 var(--sans);letter-spacing:0;color:var(--cream)}
.rs-consent>p{margin:0 0 12px!important;font-size:12px!important;line-height:1.55;color:var(--cream-dim)!important}
.rs-consent-option{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;cursor:pointer}
.rs-consent-option span{display:flex;flex-direction:column;gap:2px}
.rs-consent-option strong{font-size:13px;font-weight:500}
.rs-consent-option small{font-size:11px;color:var(--cream-dim)}
.rs-consent-option input{appearance:none;-webkit-appearance:none;position:relative;width:36px;height:22px;flex:0 0 36px;margin:0;border:1px solid var(--cream-dim);border-radius:999px;background:var(--ink-3);cursor:pointer}
.rs-consent-option input::before{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:var(--cream);transition:transform .15s}
.rs-consent-option input:checked{background:var(--gold);border-color:var(--gold)}
.rs-consent-option input:checked::before{background:var(--ink);transform:translateX(14px)}
.rs-consent-option input:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.rs-consent-option input:disabled{opacity:.45}
.rs-consent-details{font-size:11px;color:var(--cream-dim);margin-top:8px}
.rs-consent-details summary{display:inline-flex;align-items:center;gap:8px;list-style:none;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.rs-consent-details summary::-webkit-details-marker{display:none}
/* The browser's disclosure triangle, drawn as the site's chevron instead. */
.rs-consent-details summary::before{content:"";flex:0 0 auto;width:5px;height:5px;border:solid currentColor;border-width:0 1px 1px 0;transform:rotate(-45deg);transition:transform var(--aru-motion-fast) var(--aru-ease)}
.rs-consent-details[open] summary::before{transform:translateY(-2px) rotate(45deg)}
.rs-consent-details p{margin:9px 0 0px;line-height:1.55}
.rs-consent--compact{margin:0 0 11px;padding:10px 12px;border-radius:9px}
.rs-consent-summary{display:flex;align-items:center;justify-content:space-between;gap:16px}
.rs-consent-copy h3{margin:0 0 2px;font:500 12.5px/1.3 var(--sans);letter-spacing:0;color:var(--cream)}
.rs-consent-copy p{margin:0;font-size:10.5px;line-height:1.35;color:var(--cream-dim)}
.rs-consent--compact .rs-consent-option{flex:0 0 auto;gap:9px;padding:0}
.rs-consent--compact .rs-consent-option strong{font-size:12px}
.rs-consent--compact .rs-consent-option small{font-size:10px}
.rs-consent--compact .rs-consent-privacy{margin:7px 0 0!important;padding-top:7px;border-top:1px solid rgba(241,237,228,.07);font-size:10px!important;line-height:1.35;color:var(--cream-dim)!important}
.rs-consent a{text-decoration:underline;text-underline-offset:2px}
.gate-error{margin:0 0 10px!important;padding:8px 11px;border:1px solid rgba(225,91,91,.45);border-radius:8px;color:#ffd4d4!important}
.gate-exit:focus-visible,.rs-consent a:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.rs-access{min-height:calc(100vh - var(--hdr));display:grid;place-items:center;padding:60px 22px}
.rs-access-card{width:min(620px,100%);text-align:center;padding:44px 38px;border:1px solid var(--line);border-radius:18px;background:var(--ink-2)}
.rs-access-card .mk{width:64px;height:64px;margin:0 auto 18px}
.rs-access-card h1{font-size:38px;margin-bottom:12px}
.rs-access-card>p{color:var(--cream-dim);max-width:520px;margin:0 auto 24px}
.rs-access-card .rs-consent{text-align:left}
.rs-access-card .btn{border-radius:999px}
.rs-access-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}
/* Secondary legal links under the single action: the gate's own text-link treatment. */
.rs-access-card .rs-access-links{display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap;margin:18px 0 0;
  font-size:12.5px;color:var(--cream-dim)}
.rs-access-card .rs-access-links a{display:inline-flex;align-items:center;min-height:44px;color:var(--cream-dim);
  text-decoration:underline;text-underline-offset:3px;transition:color var(--aru-motion-fast) var(--aru-ease)}
@media (hover:hover){.rs-access-card .rs-access-links a:hover{color:var(--gold)}}
.rs-access-status{min-height:24px;margin:12px 0 0!important;color:var(--gold)!important}
@media(prefers-reduced-motion:reduce){
  .check,.rs-consent-option input::before{transition:none}
}
@media(max-width:560px){
  .gate{padding:7px}
  .gate-box{max-height:calc(100dvh - 14px);padding:18px 15px 16px;border-radius:14px}
  .gate-box .mk{width:28px;height:28px}
  .gate-box h2{font-size:25px}
  .gate-box>p{margin-bottom:10px}
  .checks{gap:6px;margin-bottom:9px}
  .check{padding:9px 10px}
  .check span{font-size:11.5px;line-height:1.32}
  .rs-consent--compact{padding:9px 10px;margin-bottom:9px}
  .rs-consent-summary{gap:10px}
  .gate-fine{font-size:10px}
  .rs-access-card{padding:34px 20px}
  .rs-access-card h1{font-size:31px}
}

/* ---------- responsive ---------- */
@media (max-width:1180px){
  .nav{gap:24px}
  .util{margin-left:20px}
}
@media (max-width:1023px){
  :root{--gut:22px}
  .nav{display:none}
  /* Search and Menu already got dedicated mobile buttons (.burger-search,
     .burger); the rest of .util (market toggle, header search icon, account
     link) is redundant at this width and stays hidden - but the cart link
     was being hidden along with them, leaving mobile with no basket icon or
     count at all. Show only the cart link, tightly grouped with the other
     two mobile icons instead of the old 20px .wrap gap. */
  .util{display:flex;gap:10px;margin-left:0}
  .util>*{display:none}
  .util .icon-btn[href*="/cart"]{display:grid}
  .hdr .wrap{gap:10px}
  .burger{display:grid}
  .brand{margin-right:auto}
  .hero .wrap{grid-template-columns:1fr;gap:34px;padding-top:52px;padding-bottom:52px}
  .hero-media{order:-1}
  .ph-hero{max-height:320px;aspect-ratio:1/.6}
  .trust .wrap{grid-template-columns:repeat(2,1fr);row-gap:26px}
  .trust-i:nth-child(2n){border-right:0}
  .pgrid{grid-template-columns:repeat(3,1fr)}
  .bento{grid-template-columns:repeat(2,1fr)}
  .coa .wrap{grid-template-columns:1fr;gap:34px}
  .fgrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}
  .fbrand{grid-column:1 / -1}
}
@media (max-width:767px){
  :root{--gut:18px;--hdr:64px}
  body{font-size:15px}
  .sec{padding:44px 0}
  .anno .wrap{gap:0;height:36px;font-size:11px}
  .anno span:not(.m-keep),.anno .dot{display:none}
  .brand img{height:44px}

  /* hero: aggressively short — products roughly one scroll away */
  .hero .wrap{padding-top:22px;padding-bottom:26px;gap:18px}
  .hero h1{font-size:31px;line-height:1.06;margin-bottom:12px}
  .hero .eyebrow{font-size:10.5px;margin-bottom:9px}
  .hero .lede{font-size:14px;line-height:1.55}
  .hero-cta{margin-top:18px;gap:10px;flex-wrap:nowrap}
  .hero-cta .btn{flex:1 1 0;height:46px;padding:0 12px;font-size:11px;letter-spacing:.08em}
  .ph-hero{max-height:168px;aspect-ratio:auto;height:168px;padding:12px}
  .ph-hero .mk{width:64px;height:64px}
  .fg-img{max-height:168px}

  .trust .wrap{padding-top:20px;padding-bottom:20px;row-gap:22px}
  .trust-i{padding:0 10px}
  .trust-i svg{width:24px;height:24px;margin-bottom:8px}
  .trust-i b{font-size:15px}
  .trust-i small{font-size:11.5px}

  .filters{gap:6px;margin-bottom:24px;flex-wrap:nowrap;overflow-x:auto;
    justify-content:flex-start;padding-bottom:4px;-webkit-overflow-scrolling:touch}
  .filters::-webkit-scrollbar{display:none}
  .chip{flex:0 0 auto}

  .pgrid{grid-template-columns:repeat(2,1fr);gap:12px}
  .card h3{font-size:17px}
  .price{font-size:18px}
  .card-body{padding:12px 10px 14px;gap:6px}
  .add{width:34px;height:34px}

  /* bento: 1:1 kept, sticky-stack scroll */
  .bento{display:block}
  .bcard{aspect-ratio:1/1;position:sticky;margin-bottom:18px;
    box-shadow:0 -14px 34px rgba(0,0,0,.55)}
  .bcard:nth-child(1){top:calc(var(--hdr) + 12px)}
  .bcard:nth-child(2){top:calc(var(--hdr) + 24px)}
  .bcard:nth-child(3){top:calc(var(--hdr) + 36px)}
  .bcard:nth-child(4){top:calc(var(--hdr) + 48px)}
  .bento-spacer{height:8px}

  .coa-docs{grid-template-columns:1fr;gap:12px}
  .doc{display:grid;grid-template-columns:78px 1fr;gap:14px;align-items:center}
  .doc-thumb{margin:0;aspect-ratio:1/1.2}

  /* footer: Explore + Information side by side, Contact its own row */
  .ftr{padding-top:42px}
  .fgrid{grid-template-columns:1fr 1fr;gap:28px 20px}
  .fcontact div{font-size:12.5px}
  .fbrand{grid-column:1 / -1}
  .fcol-contact{grid-column:1 / -1}
  .fbot{flex-direction:column;align-items:flex-start;gap:12px;text-align:left}
  .fbot nav{gap:18px}
  .gate-box{padding:28px 20px}
  .gate-box h2{font-size:25px}
}

/* ============ page head ============ */
.phead{border-bottom:1px solid var(--line-soft);background:var(--ink-2)}
.phead .wrap{padding-top:22px;padding-bottom:22px}
.crumb{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:rgba(241,237,228,.55);
  margin-bottom:12px}
.crumb a:hover{color:var(--gold)}
.phead h1{font-size:clamp(30px,4vw,50px)}
.phead p{margin:12px 0 0;color:var(--cream-dim);font-size:14.5px;max-width:62ch}

/* ============ toolbar ============ */
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;
  margin-bottom:26px;flex-wrap:wrap}
.count{font-size:12.5px;color:var(--cream-dim)}
.sel{height:42px;padding:0 14px;background:transparent;color:var(--cream);font:inherit;font-size:13px;
  border:1px solid var(--line-soft);border-radius:2px}
.sel:focus{outline:none;border-color:var(--gold)}
.searchbar{display:flex;gap:10px;max-width:520px;width:100%;margin:0 auto 26px}
.searchbar input{flex:1;height:48px;padding:0 16px;background:transparent;color:var(--cream);
  border:1px solid var(--line-soft);border-radius:2px;font:inherit;font-size:14px}
.searchbar input::placeholder{color:rgba(241,237,228,.36)}
.searchbar input:focus{outline:none;border-color:var(--gold)}

/* ============ pagination ============ */
.pager{display:flex;justify-content:center;gap:8px;margin-top:44px}
.pager a{min-width:40px;height:40px;display:grid;place-items:center;padding:0 12px;
  border:1px solid var(--line-soft);border-radius:2px;font-size:13px;color:var(--cream-dim)}
.pager a.on{border-color:var(--gold);color:var(--gold)}
.pager a:hover{border-color:var(--gold);color:var(--gold)}

/* ============ COA cards ============ */
.coa-card .card-body{align-items:stretch;text-align:left;gap:6px}
.coa-card .coa-name{font-family:var(--serif);font-size:20px}
.coa-card .meta{display:flex;justify-content:space-between;font-size:11.5px;color:var(--cream-dim)}
.coa-card .dl{margin-top:auto;padding-top:12px;border-top:1px solid rgba(241,237,228,.06);
  font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--gold);
  display:flex;align-items:center;gap:8px}
.coa-card .dl svg{width:14px;height:14px}
.pass{display:inline-flex;align-items:center;gap:6px;font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:#8FBF7A;border:1px solid rgba(143,191,122,.4);
  border-radius:999px;padding:2px 9px;align-self:flex-start}
.tier-note{font-size:11.5px;color:rgba(241,237,228,.42);padding:10px 16px;
  border-top:1px solid rgba(241,237,228,.06);background:rgba(241,237,228,.02)}
.coupon{display:flex;gap:8px;margin-top:18px;padding-top:18px;border-top:1px solid var(--line-soft)}
.coupon input{flex:1;height:44px;padding:0 12px;background:transparent;color:var(--cream);
  border:1px solid var(--line-soft);border-radius:2px;font:inherit;font-size:13px}
.coupon input:focus{outline:none;border-color:var(--gold)}
.coupon button{height:44px;padding:0 16px;border:1px solid var(--line);color:var(--gold);
  border-radius:2px;font-size:11px;letter-spacing:.12em;text-transform:uppercase}

/* ============ faq ============ */
.faq{max-width:840px;margin:0 auto}
.faq details{border-bottom:1px solid var(--line-soft)}
.faq summary{list-style:none;cursor:pointer;padding:22px 0;display:flex;justify-content:space-between;
  gap:20px;align-items:center;font-family:var(--serif);font-size:20px;line-height:1.3}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--gold);font-family:var(--sans);font-size:20px;flex:0 0 auto}
.faq details[open] summary::after{content:"\2212"}
.faq details[open] summary{color:var(--gold)}
.faq .ans{padding:0 0 22px;font-size:14.5px;color:var(--cream-dim);max-width:72ch}
.faq .ans p{margin:0 0 12px}
.faq .ans p:last-child{margin:0}

/* ============ legal / generic page ============ */
.doc-page{max-width:78ch;margin:0 auto;font-size:15px;color:var(--cream-dim)}
.doc-page h2{font-size:24px;color:var(--cream);margin:38px 0 14px}
.doc-page h3{font-size:18px;color:var(--cream);margin:26px 0 10px}
.doc-page ul{padding-left:20px}
.doc-page li{margin-bottom:8px}
.doc-page table{width:100%;border-collapse:collapse;font-size:14px;margin:16px 0}
.doc-page th,.doc-page td{border:1px solid var(--line-soft);padding:10px 12px;text-align:left}
.doc-page th{color:var(--cream);font-weight:500}
/* Links in running text (documents and FAQ answers): the site's text-link
   treatment (gold, underlined), so they read as links. :where keeps it at .doc-page's weight, so component links
   inside a document (question lists, cards, buttons) keep their own styles. */
.doc-page :where(p,li,dd) a:where(:not(.btn)),.faq .ans :where(p,li) a:where(:not(.btn)){color:var(--gold);text-decoration:underline;text-decoration-color:rgba(230,184,109,.45);text-underline-offset:3px;transition:text-decoration-color var(--aru-motion-fast) var(--aru-ease)}
@media (hover:hover){.doc-page :where(p,li,dd) a:where(:not(.btn)):hover,.faq .ans :where(p,li) a:where(:not(.btn)):hover{text-decoration-color:currentColor}}

/* ============ 404 ============ */
.e404{text-align:center;max-width:560px;margin:0 auto;padding:70px 0}
.e404 .num{font-family:var(--serif);font-size:96px;line-height:1;color:var(--gold);margin-bottom:10px}
.e404 p{color:var(--cream-dim)}
.e404 .btnrow{display:flex;gap:12px;justify-content:center;margin-top:26px;flex-wrap:wrap}

/* ============ responsive ============ */
@media (max-width:1023px){
}
@media (max-width:767px){
  .phead .wrap{padding-top:22px;padding-bottom:22px}
  .toolbar{gap:10px}
  .toolbar .sel{width:100%}
  .faq summary{font-size:17px;padding:18px 0}
  .e404 .num{font-size:70px}
}

/* ============ footer contact: keep the email on one line on desktop ============ */
.fcontact div{font-size:13px}
.fcontact .email{grid-column:1 / -1}
@media (max-width:767px){
  .fcontact .email{grid-column:auto}
  .fcontact div{font-size:12.5px}
}

/* ============================================================
   WooCommerce default templates, styled to match the preview.
   Cart, checkout and account use Woo's own markup — these rules
   dress it rather than overriding the templates, so Woo updates
   don't break the site.
   ============================================================ */

/* 56px under the page heading read as a black band - on the shop archive it was
   nearly double the 30px below the search bar. The top now matches that rhythm
   across every WooCommerce page; the foot keeps its 56px so the space before
   the footer is unchanged. */
.woocommerce-page .site-main{padding:30px 0 56px}
@media (max-width:767px){.woocommerce-page .site-main{padding-top:22px}}
.woocommerce .wrap,.woocommerce-page .wrap{max-width:var(--wrap)}

/* notices */
.woocommerce-message,.woocommerce-info,.woocommerce-error{
  border:1px solid var(--line);border-radius:var(--aru-control-radius,12px);background:rgba(230,184,109,.06);
  padding:14px 18px;margin:0 0 24px;font-size:14px;list-style:none}
/* A notice with an action (Woo prints the button before the text): text first, action at the end. */
.woocommerce-message:has(> .button),.woocommerce-info:has(> .button){
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 18px}
.woocommerce-message > .button,.woocommerce-info > .button{order:2;float:none;margin:0 0 0 auto}
.woocommerce-error{border-color:rgba(214,120,110,.5);background:rgba(214,120,110,.08)}
.woocommerce-message a,.woocommerce-info a{color:var(--gold)}

/* buttons */
.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,
.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt,
.woocommerce #respond input#submit{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;height:52px;padding:0 30px;
  font-family:var(--sans);font-size:13px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  border-radius:2px;border:0;background:var(--grad-gold);color:#17130B;transition:.22s;line-height:1}
.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover,
.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover{
  background:var(--grad-gold);filter:brightness(1.07);color:#17130B}
.woocommerce a.button.wc-backward,.woocommerce button[name="update_cart"]{
  background:none;border:1px solid var(--gold);color:var(--gold)}
.woocommerce a.button.wc-backward:hover,.woocommerce button[name="update_cart"]:hover{
  background:rgba(230,184,109,.10);color:var(--gold);filter:none}
.woocommerce button[name="update_cart"]:disabled{opacity:.4}

/* form fields */
.woocommerce form .form-row{padding:0;margin:0 0 16px}
.woocommerce form .form-row label,.woocommerce-billing-fields label,.woocommerce-account-fields label{
  display:block;font-size:11.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;
  color:var(--cream);margin-bottom:8px}
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce .select2-container .select2-selection--single{
  width:100%;height:var(--aru-control-height,52px);padding:0 16px;background:rgba(241,237,228,.04);color:var(--cream);
  border:1px solid rgba(230,184,109,.28);border-radius:var(--aru-control-radius,12px);font:inherit;font-size:15px;
  transition:border-color var(--aru-motion) var(--aru-ease),background var(--aru-motion) var(--aru-ease)}
.woocommerce form .form-row textarea{height:110px;padding:14px 16px}
@media (hover:hover){
  .woocommerce form .form-row input.input-text:hover,
  .woocommerce form .form-row textarea:hover,
  .woocommerce form .form-row select:hover{border-color:rgba(230,184,109,.5)}
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus{outline:none;border-color:var(--gold);background:rgba(241,237,228,.07);
  box-shadow:0 0 0 3px rgba(230,184,109,.22)}
.woocommerce .select2-container .select2-selection--single .select2-selection__rendered{
  line-height:50px;color:var(--cream);padding-left:0}
/* Show-password toggle. WooCommerce's own stylesheet (dequeued) draws this;
   without it the button is an empty 12x2px control still in the tab order. */
.woocommerce form .password-input{position:relative;display:block}
.woocommerce form .password-input input.input-text{padding-right:56px}
.woocommerce form .show-password-input{position:absolute;top:50%;right:4px;transform:translateY(-50%);
  display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:var(--aru-control-radius,12px);
  background:transparent;color:var(--cream-dim);cursor:pointer;transition:color var(--aru-motion-fast) var(--aru-ease)}
.woocommerce form .show-password-input::before{content:"";width:20px;height:20px;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") center/contain no-repeat}
.woocommerce form .show-password-input.display-password::before{
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='M4 20L20 4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='M4 20L20 4'/%3E%3C/svg%3E")}
@media (hover:hover){.woocommerce form .show-password-input:hover{color:var(--gold)}}
.woocommerce form .show-password-input:focus-visible{outline:2px solid var(--gold);outline-offset:-2px;color:var(--gold)}
/* Checkbox rows (Remember me, save-to-account): the attestation checkbox's treatment. */
.woocommerce form .form-row label.woocommerce-form__label-for-checkbox{display:inline-flex;align-items:center;gap:10px;
  margin:0;font-size:13px;font-weight:400;letter-spacing:0;text-transform:none;color:var(--cream-dim);cursor:pointer}
.woocommerce form .woocommerce-form__input-checkbox{margin:0}
/* 16px on phones so iOS does not zoom the page when a field takes focus. */
@media (max-width:767px){
  .woocommerce form .form-row input.input-text,
  .woocommerce form .form-row textarea,
  .woocommerce form .form-row select{font-size:16px}
}
.select2-dropdown{background:var(--ink-2);border-color:var(--line-soft);color:var(--cream)}
.select2-container--default .select2-results__option--highlighted[aria-selected]{
  background:rgba(230,184,109,.16);color:var(--gold)}

/* quantity */
.woocommerce .quantity .qty{
  width:76px;height:52px;padding:0 8px;text-align:center;background:transparent;color:var(--cream);
  border:1px solid var(--line-soft);border-radius:2px;font:inherit;font-size:15px}

/* ---------- cart ---------- */
.woocommerce table.shop_table{
  border:1px solid var(--line-soft);border-radius:3px;border-collapse:collapse;
  background:transparent;font-size:14px}
.woocommerce table.shop_table th{
  font-family:var(--sans);font-size:10.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(241,237,228,.45);padding:16px;border-bottom:1px solid var(--line-soft)}
.woocommerce table.shop_table td{
  padding:18px 16px;border-top:1px solid rgba(241,237,228,.07);color:var(--cream-dim);vertical-align:middle}
.woocommerce table.cart img{width:76px;border:1px solid var(--line-soft)}
.woocommerce table.cart .product-name a{font-family:var(--serif);font-size:19px;color:var(--cream)}
.woocommerce table.cart .product-name a:hover{color:var(--gold)}
.woocommerce a.remove{color:rgba(241,237,228,.4)!important;font-weight:400}
.woocommerce a.remove:hover{color:var(--gold)!important;background:none}
.woocommerce .cart-collaterals .cart_totals{
  border:1px solid var(--line-soft);border-radius:3px;padding:24px;width:100%;float:none}
.woocommerce .cart-collaterals .cart_totals h2{font-size:20px;margin-bottom:14px}
.woocommerce .cart-collaterals .cart_totals table th{border:0;padding:10px 0;text-transform:none;
  font-size:14px;letter-spacing:0;color:var(--cream-dim)}
.woocommerce .cart-collaterals .cart_totals table td{border:0;padding:10px 0;text-align:right}
.woocommerce .cart-collaterals .cart_totals .order-total th,
.woocommerce .cart-collaterals .cart_totals .order-total td{
  border-top:1px solid var(--line-soft);padding-top:16px;font-family:var(--serif);font-size:22px;color:var(--cream)}
.woocommerce .cart-collaterals .cart_totals .fee td,
.woocommerce .cart-collaterals .cart_totals .fee th{color:var(--gold)}
.woocommerce .wc-proceed-to-checkout a.checkout-button{width:100%;margin-top:12px}
.woocommerce .coupon{display:flex;gap:8px}
.woocommerce .coupon .input-text{height:44px}

/* bundle flag rendered on the cart line */
.rs-bundle-flag{display:inline-flex;align-items:center;gap:7px;font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--gold);border:1px solid var(--line);border-radius:999px;
  padding:3px 10px;margin-top:8px}

/* ---------- checkout ---------- */
.woocommerce-checkout h3,.woocommerce-checkout #order_review_heading{
  font-family:var(--serif);font-size:22px;font-weight:400;margin:0 0 18px}
.woocommerce-checkout .col2-set{display:grid;grid-template-columns:1fr 1fr;gap:30px}
.woocommerce-checkout .col2-set .col-1,.woocommerce-checkout .col2-set .col-2{width:100%;float:none}
#customer_details,#order_review_heading,#order_review{max-width:none}
.woocommerce-checkout-review-order{
  border:1px solid var(--line-soft);border-radius:3px;padding:24px;margin-top:8px}
.woocommerce-checkout-review-order table.shop_table{border:0}
.woocommerce-checkout #payment{background:transparent;border-radius:0}
.woocommerce-checkout #payment ul.payment_methods{border-bottom:1px solid var(--line-soft);padding:0 0 18px}
.woocommerce-checkout #payment ul.payment_methods li{
  border:1px solid var(--line-soft);border-radius:2px;padding:13px 14px;margin-bottom:10px;list-style:none}
.woocommerce-checkout #payment div.form-row{padding:18px 0 0}
.woocommerce-checkout #payment #place_order{width:100%}

/* research-use attestation at checkout */
.rs-attest{display:flex;gap:12px;align-items:flex-start;padding:16px;border:1px solid var(--line);
  border-radius:3px;background:rgba(230,184,109,.04);font-size:13px;line-height:1.55;margin:0 0 18px}
.rs-attest input{margin-top:2px}
.rs-attest label{margin:0;text-transform:none;letter-spacing:0;font-size:13px;color:var(--cream)}
/* Native checkboxes (access gate, attestation, Remember me). accent-color only
   tinted the ticked state: unticked they were the browser's bright white square
   on near-black. Same box as the checkout's Blocks checkbox: dark surface, gold
   hairline, 4px corners, filled gold with a dark tick when checked. */
:is(.check,.rs-attest) input[type="checkbox"],.woocommerce form .woocommerce-form__input-checkbox{
  -webkit-appearance:none;appearance:none;display:inline-grid;place-content:center;flex:0 0 auto;
  width:18px;height:18px;border:1px solid rgba(230,184,109,.55);border-radius:4px;background:rgba(19,20,20,.9);
  cursor:pointer;transition:background-color var(--aru-motion-fast) var(--aru-ease),border-color var(--aru-motion-fast) var(--aru-ease)}
:is(.check,.rs-attest) input[type="checkbox"]::before,.woocommerce form .woocommerce-form__input-checkbox::before{
  content:"";width:9px;height:5px;border:solid #17130B;border-width:0 0 2px 2px;transform:translateY(-1px) rotate(-45deg);opacity:0}
:is(.check,.rs-attest) input[type="checkbox"]:checked,.woocommerce form .woocommerce-form__input-checkbox:checked{background:var(--gold);border-color:var(--gold)}
:is(.check,.rs-attest) input[type="checkbox"]:checked::before,.woocommerce form .woocommerce-form__input-checkbox:checked::before{opacity:1}
@media (hover:hover){:is(.check,.rs-attest) input[type="checkbox"]:hover,.woocommerce form .woocommerce-form__input-checkbox:hover{border-color:var(--gold)}}
:is(.check,.rs-attest) input[type="checkbox"]:focus-visible,.woocommerce form .woocommerce-form__input-checkbox:focus-visible{outline:2px solid var(--gold);outline-offset:2px}

/* ---------- my account ---------- */
.woocommerce-account .woocommerce{display:flow-root;max-width:1000px;margin:0 auto}
/* Signed out, the page is a single login form: the Track order page's column. */
.woocommerce-account:not(.logged-in) .woocommerce{max-width:720px}
.woocommerce-account:not(.logged-in) .woocommerce > h2{margin:0 0 22px}
.woocommerce-account .woocommerce-form-login .form-row:has(.woocommerce-form-login__submit){
  display:flex;flex-direction:column;align-items:flex-start;gap:22px;margin:8px 0 0}
.woocommerce-account .woocommerce-LostPassword{margin:18px 0 0;font-size:13px}
.woocommerce-account .woocommerce-LostPassword a{color:var(--gold);border-bottom:1px solid rgba(230,184,109,.62)}
.woocommerce-account .col2-set{display:grid;grid-template-columns:1fr 1fr;gap:34px}
.woocommerce-account .u-column1,.woocommerce-account .u-column2{
  width:100%;float:none;border:1px solid var(--line-soft);border-radius:var(--aru-card-radius,16px);padding:26px}
.woocommerce-account .woocommerce-MyAccount-navigation{width:26%;float:left}
.woocommerce-account .woocommerce-MyAccount-navigation ul{list-style:none;margin:0;padding:0}
.woocommerce-account .woocommerce-MyAccount-navigation li{border-bottom:1px solid var(--line-soft)}
.woocommerce-account .woocommerce-MyAccount-navigation li a{
  display:block;padding:13px 0;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--cream-dim)}
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a,
.woocommerce-account .woocommerce-MyAccount-navigation li a:hover{color:var(--gold)}
.woocommerce-account .woocommerce-MyAccount-content{width:70%;float:right}

/* ---------- single product ---------- */
.woocommerce div.product{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start}
.woocommerce div.product .woocommerce-product-gallery{width:100%;float:none;margin:0}
.woocommerce div.product .summary{width:100%;float:none;margin:0}
.woocommerce div.product .woocommerce-tabs,
.woocommerce div.product .related{grid-column:1 / -1}
.woocommerce div.product .product_title{font-family:var(--serif);font-size:clamp(30px,3.6vw,44px);
  font-weight:400;line-height:1.1;margin:0 0 8px}
.woocommerce div.product p.price,.woocommerce div.product span.price{
  font-family:var(--serif);font-size:34px;color:var(--gold);margin:14px 0 6px}
.woocommerce div.product p.price del{font-family:var(--sans);font-size:15px;color:rgba(241,237,228,.4)}
.woocommerce div.product p.price ins{text-decoration:none}
.woocommerce div.product .woocommerce-product-details__short-description{
  font-size:14.5px;color:var(--cream-dim);border-bottom:1px solid var(--line-soft);
  padding-bottom:22px;margin-bottom:22px}
.woocommerce div.product form.cart{display:flex;gap:12px;margin:0 0 18px}
.woocommerce div.product form.cart .button{flex:1}
.woocommerce div.product .stock.in-stock{color:#8FBF7A;font-size:12.5px}
.woocommerce div.product .product_meta{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;
  color:rgba(241,237,228,.4);border-top:1px solid var(--line-soft);padding-top:16px;margin-top:18px}
.woocommerce div.product .woocommerce-product-gallery__image img{border:1px solid var(--line-soft)}
.woocommerce div.product .flex-control-thumbs{display:grid;grid-template-columns:repeat(4,1fr);
  gap:12px;margin-top:12px;list-style:none;padding:0}
.woocommerce div.product .flex-control-thumbs li{width:100%;float:none;margin:0}

/* tabs */
.woocommerce div.product .woocommerce-tabs{margin-top:60px;border-top:1px solid var(--line-soft)}
.woocommerce div.product .woocommerce-tabs ul.tabs{
  display:flex;padding:0;margin:0;border-bottom:1px solid var(--line-soft);overflow-x:auto}
.woocommerce div.product .woocommerce-tabs ul.tabs::before{display:none}
.woocommerce div.product .woocommerce-tabs ul.tabs li{
  background:none;border:0;border-radius:0;margin:0;padding:0}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after{display:none}
.woocommerce div.product .woocommerce-tabs ul.tabs li a{
  display:block;padding:18px 24px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--cream-dim);border-bottom:1px solid transparent;margin-bottom:-1px;font-weight:400}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:var(--gold);border-bottom-color:var(--gold)}
.woocommerce div.product .woocommerce-tabs .panel{padding:32px 0;max-width:78ch}
.woocommerce div.product .woocommerce-tabs .panel h2{font-size:24px;margin-bottom:14px}
.woocommerce table.shop_attributes th{text-transform:none;letter-spacing:0;font-size:14px;color:var(--cream)}
.woocommerce table.shop_attributes td{font-style:normal}

/* quantity tiers on the product page */
.rs-tiers{border:1px solid var(--line-soft);border-radius:3px;margin:0 0 22px;overflow:hidden}
.rs-tiers .rs-tier{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;
  padding:13px 16px;border-bottom:1px solid rgba(241,237,228,.06);font-size:13.5px}
.rs-tiers .rs-tier:last-of-type{border-bottom:0}
.rs-tiers .rs-save{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#17130B;
  background:var(--grad-gold);border-radius:2px;padding:2px 8px;margin-left:8px}
.rs-tiers .rs-each{color:var(--cream-dim)}
.rs-tiers .rs-tier-note{font-size:11.5px;color:rgba(241,237,228,.42);padding:10px 16px;
  border-top:1px solid rgba(241,237,228,.06);background:rgba(241,237,228,.02);margin:0}

/* research-use notice under the add-to-cart */
.rs-ruo-note{display:flex;flex-direction:column;gap:9px;margin:18px 0 0;padding-top:18px;
  border-top:1px solid var(--line-soft)}
.rs-ruo-note span{display:flex;gap:10px;align-items:center;font-size:13px;color:var(--cream-dim)}
.rs-ruo-note svg{width:16px;height:16px;color:var(--gold);flex:0 0 auto}

/* ---------- shop archive ---------- */
.woocommerce ul.products{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin:0;padding:0;list-style:none}
.woocommerce ul.products::before,.woocommerce ul.products::after{display:none}
.woocommerce ul.products li.product{width:100%;float:none;margin:0;padding:0}
.woocommerce .woocommerce-result-count{font-size:12.5px;color:var(--cream-dim);margin:0}
.woocommerce .woocommerce-ordering select{height:42px;padding:0 14px;background:transparent;
  color:var(--cream);border:1px solid var(--line-soft);border-radius:2px;font:inherit;font-size:13px}
/* 16px on phones so iOS does not zoom when the sort list opens. */
@media (max-width:767px){.woocommerce .woocommerce-ordering select{font-size:16px}}
.woocommerce nav.woocommerce-pagination ul{border:0;display:flex;justify-content:center;gap:8px;margin-top:44px}
.woocommerce nav.woocommerce-pagination ul li{border:0;margin:0}
.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span{
  min-width:40px;height:40px;display:grid;place-items:center;padding:0 12px;
  border:1px solid var(--line-soft);border-radius:2px;font-size:13px;color:var(--cream-dim)}
.woocommerce nav.woocommerce-pagination ul li span.current,
.woocommerce nav.woocommerce-pagination ul li a:hover{border-color:var(--gold);color:var(--gold)}

@media (max-width:1023px){
  .woocommerce div.product{grid-template-columns:1fr;gap:34px}
  .woocommerce ul.products{grid-template-columns:repeat(3,1fr)}
  .woocommerce-checkout .col2-set,.woocommerce-account .col2-set{grid-template-columns:1fr;gap:24px}
  .woocommerce-account .woocommerce-MyAccount-navigation,
  .woocommerce-account .woocommerce-MyAccount-content{width:100%;float:none}
  .woocommerce-account .woocommerce-MyAccount-content{margin-top:24px}
}
@media (max-width:767px){
  .woocommerce ul.products{grid-template-columns:repeat(2,1fr);gap:12px}
  .woocommerce div.product form.cart{flex-wrap:wrap}
  .woocommerce div.product form.cart .button{flex:1 1 100%}
  .woocommerce table.shop_table_responsive tr td{text-align:right}
  .woocommerce table.shop_table_responsive tr td::before{float:left;color:rgba(241,237,228,.45);
    font-size:11px;letter-spacing:.12em;text-transform:uppercase}
}

/* ============ theme-only odds and ends ============ */
.screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;
  clip:rect(1px,1px,1px,1px);white-space:nowrap}
.screen-reader-text:focus{position:fixed!important;top:12px;left:12px;width:auto;height:auto;
  clip:auto;padding:12px 18px;background:var(--ink-2);border:1px solid var(--gold);
  color:var(--gold);z-index:400}
.fsocial{display:flex;gap:4px;margin-top:16px}
.fsocial .icon-btn{width:36px;height:36px;color:rgba(241,237,228,.6)}
.fsocial .icon-btn:hover{color:var(--gold)}
.fsocial svg{width:18px;height:18px}
.rs-entry{border-bottom:1px solid var(--line-soft);padding-bottom:22px;margin-bottom:22px}
.rs-entry h2{margin-bottom:8px}
.pager .page-numbers{min-width:40px;height:40px;display:grid;place-items:center;padding:0 12px;
  border:1px solid var(--line-soft);border-radius:2px;font-size:13px;color:var(--cream-dim)}
.pager .page-numbers.on,.pager .page-numbers:hover{border-color:var(--gold);color:var(--gold)}
.pager ul{list-style:none;display:flex;gap:8px;margin:0;padding:0}

/* ============================================================
   v1.0.1 — WooCommerce now runs with no Woo stylesheets at all,
   so the few useful things woocommerce-smallscreen.css did are
   reproduced here.
   ============================================================ */

/* Responsive cart / order tables. Woo puts the column name in data-title. */
@media (max-width:767px){
  .woocommerce table.shop_table_responsive thead,
  .woocommerce table.shop_table_responsive tbody th{display:none}
  .woocommerce table.shop_table_responsive tr{display:block;border-bottom:1px solid var(--line-soft);padding:8px 0}
  .woocommerce table.shop_table_responsive tr:last-child{border-bottom:0}
  .woocommerce table.shop_table_responsive tr td{
    display:flex;justify-content:space-between;align-items:center;gap:14px;
    text-align:right;border:0;padding:8px 16px}
  .woocommerce table.shop_table_responsive tr td::before{
    content:attr(data-title) ": ";float:none;color:rgba(241,237,228,.45);
    font-size:11px;letter-spacing:.12em;text-transform:uppercase;text-align:left}
  .woocommerce table.shop_table_responsive tr td.product-remove::before,
  .woocommerce table.shop_table_responsive tr td.product-thumbnail::before{content:""}
  .woocommerce table.shop_table_responsive tr td.actions::before{content:""}
  .woocommerce table.shop_table_responsive tr td.actions{display:block;text-align:left}
  .woocommerce .coupon{flex-direction:column}
  .woocommerce .coupon .button,.woocommerce .coupon .input-text{width:100%}
}

/* Woo blocks the layout stylesheet used to float. Belt and braces in case a
   plugin re-enqueues it: these beat its #content-prefixed selectors. */
.woocommerce #content div.product div.summary,
.woocommerce-page #content div.product div.summary,
.woocommerce #content div.product div.images,
.woocommerce-page #content div.product div.images{width:100%;float:none;margin:0}
.woocommerce #content ul.products li.product,
.woocommerce-page #content ul.products li.product{width:100%;float:none;margin:0}
.woocommerce .cart-collaterals .cross-sells,
.woocommerce .cart-collaterals .cart_totals{width:100%;float:none}

/* Anything Woo appends below the two product columns spans both. */
.woocommerce div.product .up-sells,
.woocommerce div.product .related,
.woocommerce div.product .woocommerce-tabs{grid-column:1 / -1}
.woocommerce div.product .related ul.products,
.woocommerce div.product .up-sells ul.products{margin-top:22px}

/* Woo prints its notices above the product grid; keep them in the container. */
.woocommerce-notices-wrapper:empty{display:none}

/* Cart page layout: Woo emits the form and the totals as siblings. */
.woocommerce-cart .woocommerce{display:grid;grid-template-columns:1.55fr .95fr;gap:44px;align-items:start}
.woocommerce-cart .woocommerce > .woocommerce-notices-wrapper{grid-column:1 / -1}
.woocommerce-cart form.woocommerce-cart-form{min-width:0}
.woocommerce-cart .cart-collaterals{min-width:0}
@media (max-width:1023px){
  .woocommerce-cart .woocommerce{grid-template-columns:1fr;gap:28px}
}

/* Woo's lists lose their bullets with its own stylesheet gone. */
.woocommerce ul.products,
.woocommerce nav.woocommerce-pagination ul,
.woocommerce nav.woocommerce-pagination ul li,
.woocommerce div.product .woocommerce-tabs ul.tabs,
.woocommerce div.product .woocommerce-tabs ul.tabs li,
.woocommerce div.product .flex-control-thumbs,
.woocommerce-checkout #payment ul.payment_methods,
.woocommerce-account .woocommerce-MyAccount-navigation ul{list-style:none;margin-left:0;padding-left:0}
.woocommerce div.product .woocommerce-tabs ul.tabs li{display:block}
.woocommerce table.cart dl.variation{margin:6px 0 0;font-size:12px;color:var(--cream-dim)}
.woocommerce table.cart dl.variation dt,
.woocommerce table.cart dl.variation dd{display:inline;margin:0}
.woocommerce table.cart dl.variation dd p{display:inline;margin:0}
.woocommerce .cart-collaterals .cart_totals table.shop_table{border:0}
.woocommerce .cart-collaterals .cart_totals table.shop_table th,
.woocommerce .cart-collaterals .cart_totals table.shop_table td{border-top:0}
.woocommerce table.cart dl.variation dt{margin-right:5px;font-weight:400}
.woocommerce table.cart dl.variation dd{margin-right:10px}

@media (max-width:767px){
  /* Cart rows: label above value, not squeezed onto one line. */
  .woocommerce table.shop_table_responsive tr td.product-name,
  .woocommerce table.shop_table_responsive tr td.product-thumbnail,
  .woocommerce table.shop_table_responsive tr td.product-remove{
    display:block;text-align:left}
  .woocommerce table.shop_table_responsive tr td.product-name::before{
    display:block;margin-bottom:6px}
  .woocommerce table.shop_table_responsive tr td.product-remove{text-align:right;padding-bottom:0}
  .woocommerce table.shop_table_responsive tr td.product-thumbnail img,
  .woocommerce table.shop_table_responsive tr td.product-thumbnail .card-media{margin:0}
  .rs-bundle-flag{white-space:nowrap;flex:0 0 auto}
  .woocommerce table.cart dl.variation{display:block}
}

/* ============================================================
   v1.1.0 — per-product COA and spec fields
   ============================================================ */

/* Badge pill above the product title */
.rs-badge{display:inline-block;font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;
  color:#17130B;background:var(--grad-gold);border-radius:999px;padding:4px 12px;margin-bottom:12px}

/* Ticked spec lines */
.rs-specs{display:flex;flex-direction:column;gap:9px;margin:0 0 20px}
/* The merged specs/assurances list keeps the assurance block's own top gap -
   .rs-specs' margin would otherwise zero it and pull the rule up against the
   delivery note. 18px matches the order-total rule's gap above Add to Cart. */
.rs-ruo-note.rs-specs{margin-top:18px}
.rs-specs span{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:var(--cream-dim);line-height:1.5}
.rs-specs svg{width:15px;height:15px;color:var(--gold);flex:0 0 auto;margin-top:2px}

/* Certificate panel in the product summary */
.rs-coa-panel{border:1px solid var(--line);border-radius:3px;background:rgba(230,184,109,.04);
  padding:18px;margin:0 0 20px}
.rs-coa-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}
.rs-coa-title{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.rs-coa-purity{font-family:var(--serif);font-size:26px;line-height:1;color:var(--cream)}
.rs-coa-meta{display:flex;gap:34px;padding:12px 0;border-top:1px solid var(--line-soft);
  border-bottom:1px solid var(--line-soft);margin-bottom:14px}
.rs-coa-meta .rs-k{display:block;font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(241,237,228,.42);margin-bottom:4px}
.rs-coa-meta .rs-v{font-size:13.5px;color:var(--cream)}
.rs-coa-tests{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}
.rs-ttag{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--cream-dim);
  border:1px solid var(--line-soft);border-radius:3px;padding:4px 9px}
.rs-coa-btn{width:100%;height:46px}
.rs-coa-btn svg{width:15px;height:15px}
.rs-coa-btn-top{margin-bottom:20px;position:sticky;top:calc(var(--hdr) + 12px);z-index:5;box-shadow:0 8px 20px rgba(0,0,0,.35)}
.rs-stickybuy-coa{flex:0 0 auto;width:46px;height:46px;padding:0;display:grid;place-items:center}
.rs-stickybuy-coa svg{width:16px;height:16px}

/* Per-product / site-wide disclaimer */
.rs-disclaimer{font-size:11.5px;line-height:1.65;color:rgba(241,237,228,.4);
  border-top:1px solid var(--line-soft);padding-top:16px;margin:18px 0 0}

/* COA Library cards */
.coa-card .card-media{display:block;position:relative}
.rs-coa-badge{position:absolute;top:12px;right:12px;z-index:2;display:flex;flex-direction:column;
  align-items:flex-end;gap:2px;background:rgba(13,14,14,.82);backdrop-filter:blur(6px);
  border:1px solid var(--line);border-radius:3px;padding:7px 11px;
  font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.rs-coa-badge strong{font-family:var(--serif);font-size:19px;font-weight:400;letter-spacing:0;
  color:var(--cream);line-height:1}
.coa-card .coa-name a{color:inherit}
.coa-card .coa-name a:hover{color:var(--gold)}
.coa-card .rs-coa-tests{margin:4px 0 0}
.coa-card[hidden]{display:none}
.rs-coa-empty{text-align:center;color:var(--cream-dim);max-width:560px;margin:40px auto;font-size:14.5px;
  padding:22px;border:1px solid var(--line-soft);border-radius:var(--aru-control-radius,12px)}
.rs-coa-empty[hidden]{display:none}

/* The filter row on this page is buttons, not links */
.filters .chip{background:none;font-family:var(--sans);cursor:pointer}

/* Search field with no submit button sits centred like the rest */
.searchbar input[type="search"]{width:100%}

/* ============================================================
   v1.2.0 — product page
   Custom template, so none of WooCommerce's default summary
   markup is in play.
   ============================================================ */

.rs-pdp .crumb{margin-bottom:26px}
.rs-pdp-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start;margin-bottom:20px}

/* Image: forced 1:1, full-bleed cover. Photography ships with its background
   baked in, so no padding, gradient or shadow. */
.rs-pdp-img{position:relative;width:100%;aspect-ratio:1/1;overflow:hidden;background:#0B0C0C;
  border:1px solid var(--line-soft);border-radius:var(--aru-card-radius,16px)}
.rs-pdp-img img,.rs-pdp-img .shot{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center;display:block;max-width:none}
.rs-pdp-img .ph{position:absolute;inset:0;border:0;border-radius:0}
.rs-pdp-img .ph .mk{width:88px;height:88px}
.rs-oos{position:absolute;top:14px;left:14px;z-index:2;font-size:10px;letter-spacing:.14em;
  text-transform:uppercase;background:rgba(13,14,14,.86);border:1px solid var(--line);
  border-radius:2px;padding:5px 11px;color:var(--cream-dim)}
/* The same label on product cards, scaled to the smaller image. */
.card .card-media{position:relative}
.card .card-media .rs-oos{top:12px;left:12px;font-size:9px;padding:4px 9px}
@media (max-width:600px){
  .card .card-media .rs-oos{top:8px;left:8px;font-size:8px;letter-spacing:.1em;line-height:1.2;padding:3px 7px}
}
.rs-pdp-thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px}
.rs-pdp-thumbs div{position:relative;aspect-ratio:1/1;overflow:hidden;background:#0B0C0C;
  border:1px solid var(--line-soft);border-radius:var(--aru-control-radius,12px)}
.rs-pdp-thumbs img{width:100%;height:100%;object-fit:cover}

/* Summary column */
.rs-pdp-top{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.rs-pdp-top .eyebrow{margin:0}
.rs-pdp-top .rs-badge{margin:0}
.rs-pdp-title{font-family:var(--serif);font-size:clamp(30px,3.6vw,44px);font-weight:400;
  line-height:1.08;margin:0 0 12px}
.rs-pdp-size{font-size:.5em;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);
  vertical-align:middle;margin-left:8px;font-family:var(--sans)}
.rs-pdp-desc{font-size:14.5px;color:var(--cream-dim);margin:0 0 18px}
.rs-pdp-priceline{display:flex;align-items:baseline;gap:14px;padding-bottom:20px;
  border-bottom:1px solid var(--line-soft);margin-bottom:20px}
.rs-pdp-price{font-family:var(--serif);font-size:36px;color:var(--gold);line-height:1}
.rs-pdp-per{font-size:12.5px;color:rgba(241,237,228,.55)}

/* Strength and quantity are one control: three equal columns (so the two rows
   line up), each button two lines - the choice over its price. Border, surface,
   radius, hover and the selected state come from the shared control rules. */
.rs-pdp-doses,.rs-pdp-tiers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:22px}
.rs-dose,.rs-qtier{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;
  padding:11px 8px;text-align:center;cursor:pointer}
.rs-dose-l,.rs-qn{font-size:14px;letter-spacing:.04em;line-height:1.3;color:var(--cream);white-space:nowrap}
.rs-dose small,.rs-qp{font-size:11.5px;line-height:1.3;color:var(--cream-dim);white-space:nowrap}
.rs-dose.on small,.rs-qtier.on .rs-qp{color:var(--gold)}
.rs-qsave{margin-left:4px;font-style:normal;font-size:11px;letter-spacing:.02em;color:var(--gold)}
.rs-dose.oos{opacity:.4;cursor:not-allowed;text-decoration:line-through}

/* Order total + add to cart */
.rs-pdp-total{display:flex;align-items:center;justify-content:space-between;
  padding:16px 0;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
  margin-bottom:18px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--cream-dim)}
.rs-pdp-sum{font-family:var(--serif);font-size:28px;letter-spacing:0;text-transform:none;
  color:var(--cream)}
.rs-atc{width:100%;height:56px;font-size:13px}
.rs-atc[disabled]{opacity:.45;cursor:not-allowed}
.rs-pdp .rs-coa-btn{width:100%;margin-top:10px}

/* Lot table */
.rs-lot{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:22px 0 0;
  border-top:1px solid var(--line-soft)}
.rs-lot > div{display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:11px 0;border-bottom:1px solid rgba(241,237,228,.06)}
.rs-lot > div:nth-child(odd){padding-right:20px}
.rs-lot > div:nth-child(even){padding-left:20px;border-left:1px solid rgba(241,237,228,.06)}
/* An odd last cell (a product with only a SKU, or three lot facts) spans the
   row, so its rule meets the table's right edge instead of stopping halfway. */
.rs-lot > div:last-child:nth-child(odd){grid-column:1/-1;padding-right:0}
.rs-lot .rs-k{font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(241,237,228,.55)}
.rs-lot .rs-v{font-size:13px;color:var(--cream)}
/* Status is lifted out of the lot grid to sit with the buy controls, directly
   under Quantity: one full-width row, no grid borders of its own - the order
   total's top rule below it is the divider. */
.rs-lot.rs-lot-status{grid-template-columns:1fr;margin:0 0 18px;border-top:0}
.rs-lot.rs-lot-status > div{padding:0;border-bottom:0;border-left:0}
/* Its label reads at the same weight as the order-total label it sits above. */
.rs-lot.rs-lot-status .rs-k{font-size:12px;color:var(--cream-dim)}

/* Accordions */
.rs-accs{margin-top:26px;border-top:1px solid var(--line-soft)}
.rs-accs details{border-bottom:1px solid var(--line-soft)}
.rs-accs summary{list-style:none;cursor:pointer;padding:16px 0;display:flex;
  justify-content:space-between;align-items:center;gap:16px;font-family:var(--serif);font-size:17px;line-height:1.3}
.rs-accs summary::-webkit-details-marker{display:none}
.rs-accs summary::after{content:"+";font-family:var(--sans);font-size:18px;color:var(--gold)}
.rs-accs details[open] summary{color:var(--gold)}
.rs-accs details[open] summary::after{content:"\2212"}
.rs-ac{padding:0 0 18px;font-size:13.5px;color:var(--cream-dim);line-height:1.7}
.rs-ac p{margin:0 0 12px}
.rs-ac p:last-child{margin:0}
.rs-ac a{color:var(--gold);text-decoration:underline;text-underline-offset:3px}
.rs-sr{display:flex;justify-content:space-between;gap:20px;padding:9px 0;
  border-bottom:1px solid rgba(241,237,228,.06)}
.rs-sr:last-child{border-bottom:0}
.rs-sr-k{color:var(--cream)}
.rs-sr-v{text-align:right}

/* Related */
.rs-related{margin-top:72px;padding-top:52px;border-top:1px solid var(--line-soft)}
.rs-related .sec-head{margin-bottom:34px}
.rs-pdp-disclaimer{margin:44px 0 0;padding-top:22px;border-top:1px solid var(--line-soft);
  font-size:11.5px;line-height:1.7;color:rgba(241,237,228,.55)}

@media (max-width:1023px){
  .rs-pdp-grid{grid-template-columns:1fr;gap:32px}
}
@media (max-width:767px){
  .rs-pdp-grid{gap:24px}
  .rs-pdp-price{font-size:30px}
  .rs-pdp-doses,.rs-pdp-tiers{gap:8px}
  .rs-lot{grid-template-columns:1fr}
  .rs-lot > div:nth-child(odd),.rs-lot > div:nth-child(even){padding:11px 0;border-left:0}
}

/* ============================================================
   v1.3.0 — batch verification page (/verify)
   ============================================================ */

.rs-verify-form{max-width:560px}
.rs-verify-form input[type="search"]{text-transform:uppercase;letter-spacing:.08em;font-size:15px}
.rs-verify-form input::placeholder{text-transform:none;letter-spacing:0}

.rs-verify-intro{max-width:56ch;margin:34px auto 0;text-align:center;font-size:13.5px;
  color:var(--cream-dim);line-height:1.7}
.rs-verify-intro p{margin:0 0 10px}
.rs-verify-intro a{color:var(--gold);text-decoration:underline;text-underline-offset:3px}

.rs-verify-found{text-align:center;font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gold);margin:30px 0 22px}

/* One result, centred — same card as the COA Library, not a grid of one */
.rs-verify-result{max-width:380px;margin:0 auto;grid-template-columns:1fr}
.rs-verify-result .card{transform:none}
.rs-verify-result .card:hover{transform:none}
.rs-verify-btn{width:100%;height:44px;margin-top:12px}
.rs-verify-btn svg{width:15px;height:15px}
.rs-verify-link{font-size:11px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--cream-dim);margin-top:10px}
.rs-verify-link:hover{color:var(--gold)}
.rs-verify-note{text-align:center;max-width:56ch;margin:30px auto 0;font-size:12px;
  color:rgba(241,237,228,.4);line-height:1.7}

/* Not found */
.rs-verify-none{max-width:56ch;margin:40px auto 0;text-align:center}
.rs-verify-icon{display:grid;place-items:center;width:56px;height:56px;margin:0 auto 18px;
  border:1px solid var(--line-soft);border-radius:50%;color:var(--cream-dim)}
.rs-verify-icon svg{width:22px;height:22px}
.rs-verify-none h2{font-size:26px;margin-bottom:10px}
.rs-verify-none p{font-size:14px;color:var(--cream-dim);margin:0 0 12px}
.rs-verify-none strong{color:var(--cream);font-weight:400;letter-spacing:.06em}
.rs-verify-none .rs-verify-help{font-size:12.5px;color:rgba(241,237,228,.45);line-height:1.7}
.rs-verify-none .btnrow{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:22px}

@media (max-width:767px){
  .rs-verify-result{max-width:none}
  .rs-verify-none h2{font-size:22px}
}

/* ============================================================
   v1.3.1 — quantity stepper, equal-height cards
   ============================================================ */

/* Quantity stepper. Shares its value with the quantity-pricing tiles. */
.rs-qtyrow{display:flex;align-items:center;gap:16px;margin:0 0 22px;flex-wrap:wrap}
.rs-qtyrow .optlabel{margin:0}
.rs-stepper{display:inline-flex;align-items:center;border:1px solid var(--line-soft);border-radius:3px}
.rs-step{width:42px;height:46px;display:grid;place-items:center;font-size:17px;
  color:var(--cream-dim);background:none;border:0;cursor:pointer;transition:.2s;line-height:1}
@media(hover:hover){.rs-step:hover{color:var(--gold);background:rgba(230,184,109,.08)}}
.rs-stepper input{width:56px;height:46px;text-align:center;background:transparent;color:var(--cream);
  border:0;border-left:1px solid var(--line-soft);border-right:1px solid var(--line-soft);
  font:inherit;font-size:15px;-moz-appearance:textfield}
.rs-stepper input:focus{outline:none;background:rgba(230,184,109,.06)}
.rs-stepper input::-webkit-outer-spin-button,
.rs-stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.rs-qtysave{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#17130B;
  background:var(--grad-gold);border:1px solid var(--gold-deep);border-radius:999px;padding:5px 12px}
.rs-qtysave[hidden]{display:none}

/* ---- Equal-height product cards ----
   The grid stretches the <li>, but the .card inside it did not stretch with
   it, so a card with a one-line title sat shorter than its neighbours. */
.woocommerce ul.products li.product{display:flex}
.woocommerce ul.products li.product > .card,
.pgrid > .card{width:100%;height:100%}

/* Product titles reserve two lines and show in full when longer: min-height
   keeps a one-line title the same height as two, and the card foot sits on
   margin-top:auto, so price rails still line up across a row. COA names keep
   their two-line clip. */
.card h3{min-height:calc(2 * 1.25em);line-height:1.25;overflow-wrap:break-word;hyphens:auto}
.card .coa-name{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;text-overflow:ellipsis;
  min-height:calc(2 * 1.25em);line-height:1.25}
.card .coa-name{min-height:calc(2 * 1.2em);line-height:1.2}

/* The dose line always shows in full. On the narrowest phones its tracking is
   tightened so a three-strength line still fits on one row. */
.card .dose{max-width:100%;overflow-wrap:break-word}
@media (max-width:399px){.card .dose{letter-spacing:.06em}}

@media (max-width:767px){
  .rs-qtyrow{gap:12px}
  .rs-stepper input{width:48px}
}

/* ============================================================
   v1.3.2 — card tag as an image overlay, shop toolbar spacing
   ============================================================ */

/* Category tag sits over the top-left of the image, sized to its own text.
   In the card body it was a stretch item in a stretch column, so it ran the
   full card width. */
.rs-card-tag{
  position:absolute;top:12px;left:12px;z-index:2;
  display:inline-flex;align-items:center;width:auto;max-width:calc(100% - 90px);
  background:rgba(13,14,14,.82);backdrop-filter:blur(6px);
  border-color:var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Anything else in the body of a COA card stays left-aligned but must not
   stretch to full width. */
.coa-card .card-body > .tag,
.coa-card .card-body > .purity,
.coa-card .card-body > .pass{align-self:flex-start}

/* Shop archive: breathing room between the sort row and the grid. */
.woocommerce .toolbar{margin-bottom:32px}
.woocommerce .toolbar .woocommerce-result-count,
.woocommerce .toolbar .woocommerce-ordering{margin:0}
.woocommerce ul.products{margin-top:0}

@media (max-width:767px){
  /* Two cards to a row leaves no space for the tag and the purity badge on the
     same line, so the tag drops to the bottom-left of the image. */
  .rs-card-tag{top:auto;bottom:10px;left:10px;font-size:10px;padding:3px 8px;
    max-width:calc(100% - 20px)}
  /* Batch number and date collide side by side at this width. */
  .coa-card .meta{flex-direction:column;gap:2px}
}

/* Category chips on the shop archive, above the sort row. */
.rs-shop-filters{justify-content:flex-start;margin-bottom:26px}
@media (max-width:767px){
  /* One line that scrolls, rather than a stack of wrapped pills pushing the
     products off the first screen. */
  .rs-shop-filters{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;
    padding-bottom:4px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .rs-shop-filters::-webkit-scrollbar{display:none}
  .rs-shop-filters .chip{flex:0 0 auto}
}

/* --- empty cart --- */
.wp-block-woocommerce-empty-cart-block{padding:56px 0 80px;text-align:center}
.wp-block-woocommerce-empty-cart-block .wc-block-cart__empty-cart__title{
  font-family:var(--serif);font-weight:400;font-size:clamp(24px,3.2vw,34px);
  letter-spacing:.01em;color:var(--cream);margin:0 0 12px}
.wp-block-woocommerce-empty-cart-block p{color:var(--cream-dim);max-width:46ch;
  margin:0 auto 28px;font-size:15px;line-height:1.65}
.rs-cta-row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
/* --- mobile purchase bar ---
   Single column below 1024px is where the buy panel scrolls out of reach, so
   that is where this appears. Above it the panel sits beside the image and a
   persistent bar would only be in the way. */
.rs-stickybuy{position:fixed;left:0;right:0;bottom:0;z-index:70;display:none;
  background:rgba(13,14,14,.96);border-top:1px solid var(--line-soft);
  padding:10px 18px;padding-bottom:calc(10px + env(safe-area-inset-bottom,0px))}
@supports (backdrop-filter:blur(10px)){.rs-stickybuy{backdrop-filter:blur(10px)}}
.rs-stickybuy.on{display:block}
.rs-stickybuy-in{display:flex;align-items:center;gap:14px;max-width:var(--wrap);margin:0 auto}
.rs-stickybuy-info{flex:1;min-width:0}
.rs-stickybuy-name{display:block;font-size:12.5px;line-height:1.25;color:var(--cream);
  overflow-wrap:break-word}
.rs-stickybuy-meta{display:block;margin-top:2px;font-size:12px;color:var(--cream-dim)}
.rs-stickybuy-dot{opacity:.5;margin:0 3px}
.rs-stickybuy-btn{flex:0 0 auto;height:46px;padding:0 22px;font-size:12px;letter-spacing:.12em}
/* Never on desktop, never over the open drawer, never over the age gate. */
@media (min-width:1024px){.rs-stickybuy{display:none !important}}
body.rs-locked .rs-stickybuy{display:none !important}
html:not(.rs-gate-passed) .rs-stickybuy{display:none !important}
/* --- navigation groups ---
   The parent is a disclosure, not a destination: every page under it stays
   reachable as its own child, so nothing depends on hovering. */
.nav-group{position:relative;display:flex;align-items:center}
.nav-top-link{display:inline-flex;align-items:center;padding:6px 0}
.nav-top{display:inline-flex;align-items:center;padding:6px 0 6px 7px;
 font:400 12.5px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;
 color:var(--cream);background:none;border:0;cursor:pointer;transition:color .2s}
.nav-top:hover,.nav-group:focus-within .nav-top{color:var(--gold)}
/* 24px target (WCAG 2.2); the extra width is taken back so nothing moves. */
.nav-top{min-width:24px;min-height:24px;margin-right:-8px}
.nav-caret{width:9px;height:6px;opacity:.55;transition:transform .22s ease,opacity .2s}
.nav-group:hover .nav-caret,.nav-top[aria-expanded="true"] .nav-caret{opacity:1;transform:rotate(180deg)}
.nav-sub{position:absolute;top:calc(100% + 14px);left:50%;transform:translateX(-50%) translateY(-4px);
 display:flex;flex-direction:column;min-width:212px;padding:8px;gap:2px;
 background:rgba(19,20,20,.97);border:1px solid var(--line-soft);border-radius:var(--aru-control-radius,12px);
 box-shadow:0 14px 34px rgba(0,0,0,.45);
 opacity:0;visibility:hidden;pointer-events:none;z-index:70;
 transition:opacity .18s ease,transform .18s ease,visibility .18s}
@supports (backdrop-filter:blur(12px)){.nav-sub{backdrop-filter:blur(12px)}}
/* A gap between button and panel would drop the hover halfway across it. */
.nav-group::after{content:"";position:absolute;top:100%;left:0;right:0;height:16px}
/* Keyboard opening is the button's aria-expanded (set on focus, cleared by
   Escape), not :focus-within, so Escape can close a panel that still holds focus. */
.nav-group:hover .nav-sub,
.nav-top[aria-expanded="true"] + .nav-sub{opacity:1;visibility:visible;pointer-events:auto;
 transform:translateX(-50%) translateY(0)}
.nav-sub a{padding:9px 12px;font-size:11.5px;letter-spacing:.13em;border-radius:3px;
 white-space:nowrap;transition:color .18s,background .18s}
.nav-sub a::after{display:none}
.nav-sub a:hover{color:var(--gold);background:rgba(230,184,109,.08)}
/* In the drawer the group is a disclosure the thumb opens, closed to begin
   with so the menu reads as three choices rather than five. */
.drawer .nav-group{display:block;position:static}
.drawer .nav-group::after{display:none}
.drawer .nav-top-link{display:inline-flex;width:calc(100% - 44px);min-height:44px;padding:14px 0;font-size:13px;
 color:var(--cream);border-bottom:1px solid rgba(241,237,228,.06)}
.drawer .nav-top{width:44px;min-height:44px;margin-right:0;justify-content:center;padding:0;font-size:13px;
 color:var(--cream);border-bottom:1px solid rgba(241,237,228,.06);cursor:pointer}
.drawer .nav-caret{display:block;width:10px;height:7px;opacity:.5;transform:none}
.drawer .nav-group:hover .nav-caret{transform:none}
.drawer .nav-top[aria-expanded="true"]{color:var(--gold)}
.drawer .nav-top[aria-expanded="true"] .nav-caret{opacity:1;transform:rotate(180deg)}
.drawer .nav-sub{position:static;transform:none;opacity:1;visibility:visible;
 pointer-events:auto;min-width:0;padding:0;background:none;border:0;box-shadow:none;
 backdrop-filter:none;gap:0;display:none}
/* The desktop open rule re-applies translateX(-50%) to centre the panel under
   its button, and it outranks a plain .drawer .nav-sub reset. In the drawer the
   list sits in normal flow, so that shift pushed it clean off the side of the
   panel. Reset it here, where the selector actually wins. */
.drawer .nav-top[aria-expanded="true"] + .nav-sub{display:flex;flex-direction:column;
 transform:none;left:auto;top:auto;position:static}
.drawer .nav-sub a{padding:13px 0 13px 16px;font-size:12.5px;border-radius:0;
 border-bottom:1px solid rgba(241,237,228,.06);white-space:normal}

/* --- footer bottom bar --- */
.fbot-legal{display:inline-flex;align-items:center;gap:9px;flex-wrap:wrap}
.fbot-dot{opacity:.4}
.fbot-ruo{color:var(--cream-dim);text-wrap:balance}
.fbot-legal a{display:inline-flex;align-items:center;min-height:24px}
@media (max-width:349px){.fgrid{grid-template-columns:1fr}}

/* Telegram sits with the other contact details, and only ever renders when a
   destination has been set - an empty field means no icon, never a dead link. */
.ftg,.fwa{margin-top:12px}
.ftg-link,.fwa-link{display:inline-flex;align-items:center;gap:9px;transition:color .2s}
@media(hover:hover){.ftg-link:hover,.fwa-link:hover{color:var(--gold)}}
.ftg-link svg,.fwa-link svg{width:17px;height:17px;flex:0 0 auto}

/* The delivery threshold, stated once, next to the decision it affects. */
.rs-ship-note{margin:12px 0 0;font-size:12.5px;line-height:1.45;color:var(--cream-dim);
 display:flex;align-items:center;gap:8px}
.rs-ship-note::before{content:"";flex:0 0 auto;width:4px;height:4px;border-radius:50%;
 background:var(--gold);opacity:.7}

/* Contact email should not break mid-address while the column can hold it. */
.fcontact .email a{white-space:nowrap}
/* One column on a phone: the address had a 160px slot in a two-column grid
   that holds a single item, so it broke mid-word. */
@media (max-width:767px){
 .fcontact{grid-template-columns:1fr}
 .fcontact .email a{white-space:nowrap;font-size:13.5px}
}

/* --- mini-cart drawer ---
   Same overflow discipline as the menu drawer: the panel is parked off-screen
   when closed, so the shell clips it rather than letting the page pan. */
/* Quick-add / add-to-basket confirmation toast (minimum-delta addition,
   launch-polish pass). Sits above the mini-cart drawer's own z-index (90) so
   it is never hidden behind an already-open drawer, and never opens the
   drawer itself - only its action button does that. */
.rs-toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,12px);
 z-index:95;display:flex;align-items:center;gap:16px;
 background:linear-gradient(155deg,rgba(241,237,228,.045),transparent 34%),rgba(19,20,20,.94);
 border:1px solid rgba(230,184,109,.38);border-radius:14px;
 padding:13px 18px;box-shadow:inset 0 1px 0 rgba(241,237,228,.08),0 16px 46px rgba(0,0,0,.42);
 backdrop-filter:blur(18px);
 opacity:0;pointer-events:none;transition:opacity var(--aru-motion) var(--aru-ease),transform var(--aru-motion) var(--aru-ease);
 max-width:min(92vw,380px)}
.rs-toast.on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
@media(prefers-reduced-motion:reduce){
  .rs-toast{transition:opacity .12s linear;transform:translate(-50%,0)!important}
}
.rs-toast-msg{font-family:var(--sans);font-size:13.5px;color:var(--cream);white-space:nowrap}
.rs-toast-action{flex:0 0 auto;background:none;border:0;padding:0;
 font-family:var(--sans);font-size:12px;letter-spacing:.06em;text-transform:uppercase;
 color:var(--gold);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.rs-toast-action:hover{color:var(--cream)}
@media (max-width:480px){.rs-toast{left:16px;right:16px;transform:translateY(12px);
  max-width:none;bottom:calc(16px + env(safe-area-inset-bottom,0px))}
 .rs-toast.on{transform:translateY(0)}}
/* A toast on a product page must not sit on the sticky buy bar (73px + safe area). */
body:has(.rs-stickybuy.on) .rs-toast{bottom:calc(85px + env(safe-area-inset-bottom,0px))}

.rs-mini{position:fixed;inset:0;z-index:90;visibility:hidden;pointer-events:none;overflow:hidden}
.rs-mini.on{visibility:visible;pointer-events:auto}
.rs-mini-scrim{position:absolute;inset:0;background:rgba(0,0,0,.4);opacity:0;transition:opacity var(--aru-motion-panel) var(--aru-ease)}
.rs-mini.on .rs-mini-scrim{opacity:1}
.rs-mini-panel{position:absolute;top:0;right:0;height:100%;width:min(82vw,336px);
 background:var(--ink-2);border-left:1px solid var(--line-soft);
 transform:translateX(100%);transition:transform var(--aru-motion-panel) var(--aru-ease);will-change:transform;
 display:flex;flex-direction:column}
.rs-mini.on .rs-mini-panel{transform:none}
.rs-mini-top{display:flex;align-items:center;justify-content:space-between;
 padding:12px 16px;border-bottom:1px solid var(--line-soft);flex:0 0 auto}
.rs-mini-title{font-family:var(--serif);font-size:17px;color:var(--cream)}
.rs-mini-body{flex:1;overflow-y:auto;display:flex;flex-direction:column}
.rs-mini-items{padding:4px 16px}
.rs-mini-item{display:grid;grid-template-columns:44px 1fr auto;gap:10px;align-items:start;
 padding:10px 0;border-bottom:1px solid rgba(241,237,228,.06)}
.rs-mini-img img{width:44px;height:44px;object-fit:cover;border-radius:3px;display:block}
.rs-mini-info b{display:block;font-family:var(--serif);font-size:15px;font-weight:400;color:var(--cream)}
.rs-mini-price{display:block;margin-top:3px;font-size:13px;color:var(--gold)}
.rs-mini-qty{display:inline-flex;align-items:center;gap:2px;margin-top:9px;
 border:1px solid var(--line-soft);border-radius:3px}
.rs-mini-step{width:30px;height:28px;color:var(--cream-dim);background:none;border:0;
 cursor:pointer;font-size:14px;line-height:1;transition:color .18s}
@media(hover:hover){.rs-mini-step:hover{color:var(--gold)}}
.rs-mini-n{min-width:22px;text-align:center;font-size:13px;color:var(--cream)}
.rs-mini-remove{width:28px;height:28px;background:none;border:0;cursor:pointer;
 color:var(--cream-dim);font-size:17px;line-height:1;transition:color .18s}
@media(hover:hover){.rs-mini-remove:hover{color:var(--gold)}}
.rs-mini-foot{margin-top:auto;padding:16px 18px calc(16px + env(safe-area-inset-bottom,0px));
 border-top:1px solid var(--line-soft);background:var(--ink-2)}
.rs-mini-sub{display:flex;justify-content:space-between;align-items:baseline;
 font-size:14px;color:var(--cream)}
.rs-mini-note{margin:6px 0 14px;font-size:11.5px;color:var(--cream-dim)}
.rs-mini-fee{font-size:12.5px;color:var(--cream-dim)}
.rs-mini-fee.rs-mini-discount{color:var(--gold)}
.rs-mini-foot .btn{display:block;width:100%;text-align:center;margin-bottom:9px}
.rs-mini-continue{display:block;width:100%;padding:6px 0;background:none;border:0;
 cursor:pointer;font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;
 color:var(--cream-dim);transition:color .18s}
.rs-mini-continue:hover{color:var(--gold)}
.rs-mini-empty{padding:40px 18px;text-align:center;color:var(--cream-dim)}
.rs-mini-empty .btn{margin-top:16px}
.rs-mini-err{padding:24px 18px;text-align:center;color:var(--cream)}

/* Aurelia Glass: one shared interactive-control system. */
:root{
  --aru-control-compact-radius:12px;
  --aru-control-height:52px;
  --aru-control-surface:linear-gradient(175deg,rgba(241,237,228,.11),transparent 46%),linear-gradient(180deg,#1B1C1C,#0D0E0E);
  --aru-control-border:rgba(230,184,109,.66);
  --aru-control-shadow:inset 0 1px 0 rgba(241,237,228,.2),inset 0 -1px 0 rgba(230,184,109,.14),0 5px 12px rgba(0,0,0,.28);
  /* Motion for shared controls: short, one ease-out curve. Reduced-motion users get none. */
  --aru-motion-fast:.16s;
  --aru-motion:.22s;
  --aru-motion-panel:.32s;
  --aru-ease:cubic-bezier(.2,.8,.2,1);
}
:is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button){
  position:relative;isolation:isolate;overflow:hidden;box-sizing:border-box;
  display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:10px;
  height:var(--aru-control-height)!important;min-height:var(--aru-control-height)!important;padding:0 26px!important;
  border:1px solid var(--aru-control-border)!important;border-radius:var(--aru-control-radius)!important;
  background:var(--aru-control-surface)!important;color:var(--cream)!important;
  font-family:var(--sans)!important;font-size:13px!important;font-weight:500!important;line-height:1.2!important;
  letter-spacing:.14em!important;text-transform:uppercase;text-align:center!important;text-decoration:none;
  box-shadow:var(--aru-control-shadow)!important;
  transition:transform var(--aru-motion-fast) var(--aru-ease),box-shadow var(--aru-motion-fast) var(--aru-ease),border-color var(--aru-motion-fast) var(--aru-ease),filter var(--aru-motion-fast) var(--aru-ease)!important;
  -webkit-tap-highlight-color:transparent;
}
:is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button) svg{width:18px;height:18px;flex:0 0 18px}
/* The display:inline-flex!important above outranks the hidden attribute, so a
   hidden control (the toast's action on an error) still drew as an empty button. */
:is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button)[hidden]{display:none!important}
:is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button)::after{
  content:"";position:absolute;inset:-1px;z-index:-1;pointer-events:none;border-radius:inherit;
  background:radial-gradient(ellipse at 50% 0,rgba(230,184,109,.3),transparent 62%);
  opacity:0;transform:scale(.9);transition:opacity var(--aru-motion-fast) var(--aru-ease),transform var(--aru-motion) var(--aru-ease);
}
:is(.rs-dose,.rs-qtier,.ruo-card-plus){
  border:1px solid var(--aru-control-border);border-radius:var(--aru-control-compact-radius);
  background:var(--aru-control-surface);color:var(--cream);font-family:var(--sans);
  box-shadow:inset 0 1px 0 rgba(241,237,228,.12),0 3px 8px rgba(0,0,0,.16);
  transition:transform var(--aru-motion-fast) var(--aru-ease),border-color var(--aru-motion-fast) var(--aru-ease),box-shadow var(--aru-motion-fast) var(--aru-ease);-webkit-tap-highlight-color:transparent;
}
.rs-dose,.rs-qtier{min-height:48px}
.rs-dose.on,.rs-qtier.on{border-color:var(--gold);background:var(--aru-control-surface);box-shadow:inset 0 0 0 1px rgba(230,184,109,.28)}
.ruo-card-plus{position:relative;display:grid;place-items:center;width:36px;height:36px;padding:0;
  color:var(--gold);font:400 22px/1 var(--sans);text-decoration:none}
.rs-stepper,.rs-mini-qty,.wc-block-components-quantity-selector{
  border:1px solid rgba(230,184,109,.3)!important;border-radius:var(--aru-control-compact-radius)!important;overflow:hidden;background:var(--aru-control-surface)!important}
:is(.rs-step,.rs-mini-step,.wc-block-components-quantity-selector__button){
  display:grid;place-items:center;width:44px;min-width:44px;height:44px;min-height:44px;padding:0;border:0;
  color:var(--cream);background:transparent;font:400 20px/1 var(--sans);cursor:pointer;
  transition:color var(--aru-motion-fast) var(--aru-ease),background var(--aru-motion-fast) var(--aru-ease),transform var(--aru-motion-fast) var(--aru-ease);-webkit-tap-highlight-color:transparent;
}
.rs-stepper input{height:44px;min-height:44px}
.wc-block-components-quantity-selector{width:132px!important}
.wc-block-components-quantity-selector input{min-width:36px!important}
/* WooCommerce's block stylesheet sizes its own stepper glyphs at .9em with a
   two-class selector, which outranks the shared rule above on the basket page. */
.wc-block-cart .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button{font:400 20px/1 var(--sans)}
/* Basket-page remove: the checkout order summary's "Remove" text control
   rather than Woo's 24px bin icon (the aria-label still names the product).
   Woo styles the link through the table/row/quantity path, so this follows it. */
.wc-block-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity .wc-block-cart-item__remove-link{display:inline-flex;align-items:center;width:auto;height:auto;min-height:44px;padding:0 2px;
  background:none;border:0;cursor:pointer;text-decoration:none;font:500 11px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;
  color:var(--cream-dim);transition:color var(--aru-motion-fast) var(--aru-ease)}
.wc-block-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity .wc-block-cart-item__remove-link svg{display:none}
.wc-block-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity .wc-block-cart-item__remove-link::before{content:"Remove"}
@media (hover:hover){.wc-block-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity .wc-block-cart-item__remove-link:hover{color:#D29A93}}
.wc-block-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity .wc-block-cart-item__remove-link:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:4px}
@media(hover:hover){
  :is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button):hover:not(:disabled):not([aria-disabled="true"]),
  :is(.rs-dose,.rs-qtier,.ruo-card-plus):hover:not(:disabled):not(.is-disabled){
    border-color:rgba(230,184,109,.92)!important;filter:none!important;transform:translateY(-1px);
    box-shadow:inset 0 1px 0 rgba(241,237,228,.28),inset 0 -1px 0 rgba(230,184,109,.22),0 7px 16px rgba(0,0,0,.34)!important;
  }
  :is(.rs-step,.rs-mini-step,.wc-block-components-quantity-selector__button):hover:not(:disabled){color:var(--gold);background:rgba(230,184,109,.08)}
}
:is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button,.site-main .wp-element-button,.site-main .wc-block-components-button,.site-main .woocommerce-button,.rs-mini button):active:not(:disabled):not([aria-disabled="true"]),
:is(.rs-dose,.rs-qtier,.ruo-card-plus,.ruo-strength-option):active:not(:disabled):not(.is-disabled){transform:translateY(1px)}
:is(.rs-step,.rs-mini-step,.wc-block-components-quantity-selector__button):active:not(:disabled){transform:translateY(1px);color:var(--gold)}
:is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button).rs-gold-flash{animation:rs-gold-outline-flash .48s cubic-bezier(.22,.8,.25,1);outline:1px solid rgba(230,184,109,0)}
:is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button).rs-gold-flash::after{opacity:1;transform:scale(1.02)}
:is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button):focus-visible,:is(.rs-dose,.rs-qtier,.ruo-card-plus):focus-visible,:is(.rs-step,.rs-mini-step,.wc-block-components-quantity-selector__button):focus-visible,.rs-stepper input:focus-visible{
  outline:2px solid var(--gold)!important;outline-offset:3px;
}
:is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button):disabled,:is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button)[aria-disabled="true"],:is(.rs-dose,.rs-qtier,.ruo-card-plus):disabled,:is(.rs-dose,.rs-qtier,.ruo-card-plus).is-disabled,:is(.rs-step,.rs-mini-step,.wc-block-components-quantity-selector__button):disabled{
  opacity:.4!important;cursor:not-allowed;transform:none!important;box-shadow:none!important;
}
@keyframes rs-gold-outline-flash{
  0%{outline-color:rgba(230,184,109,0);outline-offset:0}
  38%{outline-color:rgba(230,184,109,.55);outline-offset:3px}
  100%{outline-color:rgba(230,184,109,0);outline-offset:6px}
}
@media(max-width:767px){
  :is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button){padding-inline:20px!important;font-size:12px!important}
  .ruo-card-plus{width:40px;height:40px}
}
@media(prefers-reduced-motion:reduce){
  :is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button),:is(.rs-dose,.rs-qtier,.ruo-card-plus),:is(.rs-step,.rs-mini-step,.wc-block-components-quantity-selector__button){transition:none!important}
  :is(.btn:not(.icon-btn),.rs-mini-continue,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button).rs-gold-flash{animation:none}
}

/* -------------------------------------------------------------------------
 * Post-purchase order tracking (My Account / Track Order / Thank You).
 * See wp-content/novamira-sandbox/aurelia-order-tracking.php.
 * ---------------------------------------------------------------------- */
.rs-tracking{margin:28px 0;padding:22px 24px;background:var(--ink-3);border:1px solid var(--line);border-radius:2px}
.rs-tracking-heading{margin:0 0 16px;font-family:var(--sans);font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--cream-dim);font-weight:600}
.rs-tracking-steps{display:flex;align-items:flex-start;gap:0;margin:0 0 18px;padding:0;list-style:none}
.rs-tracking-step{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;font-family:var(--sans);font-size:12px;color:var(--cream-dim)}
.rs-tracking-step:not(:last-child)::after{content:"";position:absolute;top:6px;left:calc(50% + 14px);width:calc(100% - 28px);height:1px;background:var(--line)}
.rs-tracking-step.is-done:not(:last-child)::after{background:var(--gold-deep)}
.rs-tracking-dot{width:13px;height:13px;border-radius:50%;background:var(--ink-2);border:1px solid var(--line);margin-bottom:8px}
.rs-tracking-step.is-done .rs-tracking-dot{background:var(--gold-deep);border-color:var(--gold-deep)}
.rs-tracking-step.is-current .rs-tracking-label{color:var(--cream)}
.rs-tracking-step.is-done .rs-tracking-label{color:var(--cream)}
.rs-tracking-label{max-width:110px}
.rs-tracking-detail{padding-top:16px;border-top:1px solid var(--line)}
.rs-tracking-meta{margin:0 0 12px;display:flex;gap:14px;flex-wrap:wrap;font-family:var(--sans);font-size:13px;color:var(--cream)}
.rs-tracking-carrier{font-weight:600}
.rs-tracking-number{letter-spacing:.03em;color:var(--cream-dim)}
.rs-tracking-note{margin:0;font-family:var(--sans);font-size:12.5px;line-height:1.6;color:var(--cream-dim)}
.rs-tracking-eta{margin:0 0 12px;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;font-family:var(--sans)}
.rs-tracking-eta-label{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--cream-dim)}
.rs-tracking-eta-date{font-size:13px;font-weight:600;color:var(--cream)}
.rs-tracking-inactive{margin:20px 0;padding:14px 18px;background:var(--ink-3);border:1px solid var(--line);border-radius:2px;font-family:var(--sans);font-size:13px;color:var(--cream-dim)}
.rs-tracking-thankyou{margin-top:6px}
.rs-tracking-whatnext{margin:0 0 14px;font-family:var(--sans);font-size:13.5px;line-height:1.6;color:var(--cream-dim)}
.rs-tracking-link{margin-top:2px}
@media (max-width:600px){
  .rs-tracking{padding:18px 16px}
  .rs-tracking-label{font-size:11px;max-width:80px}
}

/* ============================================================
   CHECKOUT (WooCommerce Blocks) — matched to the Aurelia theme
   The Checkout/Cart pages use WooCommerce's block-based checkout
   (wc-block-checkout / wc-block-cart), not the classic shortcode
   template, so the .woocommerce-checkout rules above this section
   do not reach them. This section is deliberately separate.
   ============================================================ */

.wc-block-checkout,
.wc-block-cart{
  max-width:var(--wrap);margin:0 auto;padding:56px var(--gut) 100px;
  color:var(--cream);font-family:var(--sans);font-weight:300;
}
.wc-block-checkout h2,.wc-block-cart h2,
.wc-block-components-checkout-step__title,
.wc-block-components-totals-wrapper + .wc-block-components-title,
.wc-block-cart__title{
  font-family:var(--serif)!important;font-weight:400!important;letter-spacing:.01em;
  color:var(--cream)!important;font-size:22px!important;
}

.wc-block-checkout__main{width:100%;max-width:none!important}
.wc-block-checkout__sidebar{width:100%;max-width:400px!important}
@media (min-width:1024px){
  .wc-block-checkout .wc-block-components-sidebar-layout__main{padding-right:48px!important}
  .wc-block-checkout__sidebar,.wc-block-cart__sidebar{position:sticky;top:calc(var(--hdr) + 24px)}
}
@media (max-width:1023px){
  .wc-block-checkout__sidebar{max-width:none!important;margin-top:8px}
}

/* Flowing document, not stacked cards: one hairline between steps instead
   of a boxed panel per step - reads as one continuous surface. */
.wc-block-components-checkout-step{
  border:0!important;background:transparent!important;border-radius:0!important;
  padding:30px 0!important;margin:0!important;border-top:1px solid var(--line-soft)!important;
}
.wc-block-components-checkout-step:first-of-type{border-top:0!important;padding-top:0!important}
.wc-block-components-checkout-step__heading{margin-bottom:16px;padding-bottom:0;border:0}
.wc-block-components-checkout-step__heading .wc-block-components-checkout-step__title{margin:0}
.wc-block-components-checkout-step__container{padding:0}
.wc-block-components-checkout-step__description{color:var(--cream-dim);font-size:13.5px}
.wc-block-components-checkout-step--with-step-number .wc-block-components-checkout-step__title-icon,
.wc-block-components-checkout-step__title .step-number{
  color:var(--gold);border-color:var(--gold);background:transparent;
}

.wc-block-components-text-input input[type="text"],
.wc-block-components-text-input input[type="email"],
.wc-block-components-text-input input[type="tel"],
.wc-block-components-text-input input[type="number"],
/* :not(checkbox/radio) - this list is text-field styling (transparent ground,
   10% border) and `.wc-block-components-address-form input` swept up the
   research-use checkbox with it, leaving an invisible 20x20 square on a
   near-black page. It still toggled; nobody could see where to tap. */
.wc-block-components-address-form input:not([type="checkbox"]):not([type="radio"]),
.wc-block-components-combobox-control input,
.wc-block-components-checkout-form select,
select.wc-block-components-country-input,
select.wc-block-components-state-input{
  background:transparent!important;color:var(--cream)!important;
  border:1px solid var(--line-soft)!important;border-radius:2px!important;
  font-family:var(--sans)!important;font-size:14px!important;
}
.wc-block-components-text-input label,
.wc-block-components-combobox-control label{
  color:rgba(241,237,228,.68)!important;font-family:var(--sans)!important;
}
.wc-block-components-text-input:focus-within input,
.wc-block-components-address-form input:not([type="checkbox"]):not([type="radio"]):focus,
.wc-block-components-combobox-control:focus-within input{
  border-color:var(--gold)!important;box-shadow:none!important;
}
.wc-block-components-text-input.is-active label,
.wc-block-components-text-input input:focus + label{color:var(--gold)!important}
.wc-block-components-checkbox svg,
.wc-block-components-radio-control input[type="radio"]{accent-color:var(--gold)}
.wc-block-components-checkbox__mark{fill:#17130B}
.wc-block-components-checkbox__input:checked + .wc-block-components-checkbox__mark{color:var(--gold)}

/* One seamless pill-shaped panel (18px, matching the site's real panel
   radius) instead of a small-radius box per row inside a differently-
   rounded group container - that mismatch was clipping row corners.
   Rows are flat with a single hairline between them; core's own
   divider/ring pseudo-elements are switched off below to avoid a second,
   conflicting set of lines. */
.wc-block-components-radio-control{
  background:var(--ink-2)!important;border:1px solid var(--line-soft)!important;
  border-radius:18px!important;overflow:hidden!important;
}
.wc-block-components-radio-control--highlight-checked::after,
.wc-block-components-radio-control--highlight-checked div.wc-block-components-radio-control-accordion-option::after,
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control__option::after{
  display:none!important;
}
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control-accordion-option--checked-option-highlighted,
.wc-block-components-radio-control--highlight-checked label.wc-block-components-radio-control__option--checked-option-highlighted{
  box-shadow:none!important;border-radius:0!important;
}
.wc-block-components-radio-control__option{
  border:0!important;border-top:1px solid var(--line-soft)!important;border-radius:0!important;
  background:transparent!important;padding:16px 16px 16px 48px!important;margin:0!important;
}
.wc-block-components-radio-control__option:first-child{border-top:0!important}
.wc-block-components-radio-control__option-checked,
.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{accent-color:var(--gold)!important}
.wc-block-components-radio-control__label-group .wc-block-components-radio-control__secondary-label,
.wc-block-components-radio-control__description{color:var(--cream-dim)!important}
.wc-block-components-payment-method-label{color:var(--cream)!important;font-family:var(--sans)!important}
.wc-block-components-payment-method-icons{filter:grayscale(0) opacity(.9)}

/* Blocks notices (e.g. "no payment methods available") were rendering in
   WooCommerce's default white/pink banner - jarring against the dark
   checkout. Re-themed to match the existing .woocommerce-error treatment;
   no logic touched, purely presentational. */
.wc-block-components-notice-banner{
  display:flex!important;align-items:flex-start!important;gap:10px!important;
  border:1px solid rgba(214,120,110,.35)!important;border-radius:18px!important;
  background:rgba(214,120,110,.08)!important;padding:14px 16px!important;margin:0 0 18px!important;
  color:var(--cream)!important;font-family:var(--sans)!important;font-size:13.5px!important;line-height:1.5!important;
}
.wc-block-components-notice-banner svg{flex:0 0 20px;width:20px;height:20px;fill:currentColor;color:#d6786e}
.wc-block-components-notice-banner .wc-block-components-notice-banner__content{color:var(--cream)!important}
.wc-block-components-notice-banner .wc-block-components-notice-banner__content a{color:var(--gold)!important}
.wc-block-components-notice-banner.is-success{border-color:rgba(139,196,140,.4)!important;background:rgba(139,196,140,.08)!important}
.wc-block-components-notice-banner.is-success svg{color:#8bc48c}
.wc-block-components-notice-banner.is-info,.wc-block-components-notice-banner.is-warning{border-color:var(--line-soft)!important;background:var(--ink-2)!important}
.wc-block-components-notice-banner.is-info svg,.wc-block-components-notice-banner.is-warning svg{color:var(--gold)}
.wc-block-components-notice-banner .wc-block-components-notice-banner__dismiss svg{color:var(--cream-dim)}

/* ---- transient store notices (snackbar) ----
 * WooCommerce Blocks shows a coupon-applied confirmation as a snackbar: its
 * own chrome, pinned bottom-left. The site already has a confirmation of
 * exactly this kind - .rs-toast, the add-to-basket acknowledgement - so the
 * snackbar wears it: centred above the bottom edge, dark glass on a gold
 * hairline, the message in the serif. Scoped to the snackbar variant, so the
 * inline banners (form errors, out-of-stock) keep the treatment above.
 */
/* position: centred above the bottom edge, like .rs-toast */
.wc-block-components-notice-snackbar-list{
  left:50%!important;right:auto!important;bottom:28px!important;
  transform:translateX(-50%);
  width:max-content!important;max-width:min(92vw,380px)!important;
  padding:0!important;
}
/* chrome: the toast's dark glass card */
.wc-block-components-notice-snackbar-list .wc-block-components-notice-banner,
.wc-block-components-notice-banner.wc-block-components-notice-snackbar{
  position:relative!important;
  display:flex!important;flex-direction:column!important;align-items:stretch!important;
  gap:8px!important;text-align:center!important;
  width:auto!important;max-width:none!important;margin:0!important;
  padding:12px 30px!important;
  background:linear-gradient(155deg,rgba(241,237,228,.045),transparent 34%),rgba(19,20,20,.94)!important;
  border:1px solid rgba(230,184,109,.38)!important;border-radius:14px!important;
  box-shadow:inset 0 1px 0 rgba(241,237,228,.08),0 16px 46px rgba(0,0,0,.42)!important;
  -webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);
  color:var(--cream)!important;
}
/* the toast carries no status icon */
.wc-block-components-notice-snackbar-list .wc-block-components-notice-banner>svg{display:none!important}
/* message: the toast's serif line */
.wc-block-components-notice-snackbar-list .wc-block-components-notice-banner__content{
  /* the checkout's own face, not the toast's serif: 14px --sans is what the
     totals rows, radio labels and step copy all use */
  font-family:var(--sans)!important;font-size:14px!important;line-height:1.45!important;
  color:var(--cream)!important;text-align:center!important;
}
/* dismiss out of the flow so the message centres on the whole card */
.wc-block-components-notice-snackbar-list .wc-block-components-notice-banner__dismiss{
  position:absolute!important;top:4px!important;right:4px!important;
  margin:0!important;padding:4px!important;background:none!important;border:0!important;
}
.wc-block-components-notice-snackbar-list .wc-block-components-notice-banner__dismiss svg{
  width:16px;height:16px;fill:currentColor;color:var(--cream-dim)!important;
}
.wc-block-components-notice-snackbar-list .wc-block-components-notice-banner__dismiss:hover svg{color:var(--gold)!important}

@media (max-width:480px){
  .wc-block-components-notice-snackbar-list{
    max-width:calc(100vw - 32px)!important;
    bottom:calc(16px + env(safe-area-inset-bottom,0px))!important;
  }
}

/* Address-autocomplete suggestions dropdown (Aurelia Research - Address
   Autocomplete plugin) rendered in its own plain white/grey styling -
   the one visibly "third-party" panel in checkout. Re-skinned to match the
   theme; the required "Powered by Google" attribution is kept, just
   recoloured for legibility on the dark ground. No autocomplete
   behaviour/markup touched. */
.wc-block-components-address-autocomplete-suggestions{
  background:var(--ink-2)!important;border:1px solid var(--line-soft)!important;
  border-radius:14px!important;box-shadow:0 8px 24px rgba(0,0,0,.4)!important;
  font-family:var(--sans)!important;overflow:hidden;
}
.wc-block-components-address-autocomplete-suggestion{
  color:var(--cream-dim)!important;border-top:1px solid var(--line-soft)!important;
  padding:9px 12px!important;font-size:13px!important;
}
.suggestions-list li.wc-block-components-address-autocomplete-suggestion:first-child{border-top:0!important}
.wc-block-components-address-autocomplete-suggestion:hover,
.wc-block-components-address-autocomplete-suggestion[aria-selected="true"]{
  background:rgba(230,184,109,.08)!important;color:var(--cream)!important;
}
.woocommerce-address-autocomplete-branding{
  border-top:1px solid var(--line-soft)!important;padding:6px 12px!important;
}
.woocommerce-address-autocomplete-branding span{color:var(--cream-dim)!important;opacity:.8!important}

.wc-block-components-order-summary{
  border:1px solid var(--line-soft)!important;border-radius:18px!important;background:var(--ink-2)!important;padding:26px!important;
}
.wc-block-components-order-summary-item__quantity{
  background:var(--gold)!important;color:#17130B!important;
}
/* The digit itself is painted by core through a nested span
   (…__quantity span{color:var(--wp--preset--color--base,#fff)}), which beat
   the colour set above and left the number white on gold. Same ink as every
   other gold control on the site. */
.wc-block-components-order-summary .wc-block-components-order-summary-item__quantity span{
  color:#17130B!important;
}
.wc-block-components-order-summary-item__individual-prices,
.wc-block-components-product-name{color:var(--cream)!important;font-family:var(--sans)!important}
.wc-block-components-totals-item__label{color:var(--cream-dim)!important}
.wc-block-components-totals-item__value{color:var(--cream)!important;font-variant-numeric:lining-nums}
.wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value{
  font-family:var(--serif)!important;font-size:21px!important;color:var(--cream)!important;
}
.wc-block-components-totals-footer-item{
  border-top:1px solid var(--line-soft)!important;padding-top:18px!important;margin-top:14px!important;
}
.wc-block-components-totals-coupon .wc-block-components-totals-coupon-link{color:var(--gold)!important}

.wc-block-checkout__actions,
.wp-block-woocommerce-checkout-actions-block{
  border-radius:var(--aru-control-radius,999px);
}
.wc-block-components-checkout-place-order-button{
  width:100%!important;box-sizing:border-box!important;
}
.rs-checkout-trust{
  margin:14px 2px 0;text-align:center;font-size:11.5px;letter-spacing:.06em;
  color:var(--cream-dim);
}

.wp-block-woocommerce-checkout-express-payment-block:not(:empty){
  border:1px solid var(--line-soft);border-radius:18px;background:var(--ink-2);
  padding:20px 24px;margin:0 0 18px;
}

.wc-block-cart-items{
  border:1px solid var(--line-soft);border-radius:0;background:var(--ink-2);overflow:hidden;
}
.wc-block-cart__totals-title{font-family:var(--serif)!important;font-weight:400!important;text-transform:none!important;font-size:28px!important}
.wc-block-cart table.wc-block-cart-items .wc-block-cart-items__header th{font-size:11px;font-weight:500;letter-spacing:.14em;color:var(--cream-dim)}
.wc-block-checkout .wc-block-components-radio-control .wc-block-components-radio-control__label{font-weight:400}
.wc-block-cart__sidebar .wc-block-components-totals-wrapper,
.wc-block-cart__sidebar .wc-block-components-panel{
  border-color:var(--line-soft)!important;
}
/* In the cart the Total row sits in its own totals wrapper, whose top border
   already divides it from Delivery; a second rule on the row drew a double line. */
.wc-block-cart__sidebar .wc-block-components-totals-footer-item{
  border-top:0!important;margin-top:0!important;
}
.wc-block-cart__submit-button{width:100%!important;box-sizing:border-box!important}

@media (max-width:600px){
  .wc-block-checkout,.wc-block-cart{padding:32px var(--gut) 60px}
  .wc-block-components-checkout-step{padding:20px 16px}
}

/* ---- basket icon success glow ----
 * Fires only from a confirmed WooCommerce add-to-cart success (theme.js).
 * The SVG alone animates - no background box, no layout shift, no persistent
 * gold: filter and transform do not affect layout, and the class is removed
 * as soon as the animation ends. */
@keyframes rs-cart-glow{
  0%{color:var(--cream);filter:drop-shadow(0 0 0 rgba(230,184,109,0));transform:scale(1)}
  35%{color:var(--gold);filter:drop-shadow(0 0 5px rgba(230,184,109,.7)) drop-shadow(0 0 11px rgba(230,184,109,.3));transform:scale(1.06)}
  100%{color:var(--cream);filter:drop-shadow(0 0 0 rgba(230,184,109,0));transform:scale(1)}
}
@keyframes rs-cart-glow-soft{
  0%{color:var(--cream)}40%{color:var(--gold)}100%{color:var(--cream)}
}
.icon-btn.rs-cart-glow svg{
  transform-origin:center;
  animation:rs-cart-glow .4s cubic-bezier(.22,.8,.25,1);
}
@media (prefers-reduced-motion:reduce){
  /* Colour acknowledgement is kept; the scale and halo are dropped. */
  .icon-btn.rs-cart-glow svg{animation:rs-cart-glow-soft .4s ease;transform:none}
}

/* ---- search / menu icon success glow ----
 * The same effect as the basket glow above, reusing its keyframes, duration
 * and easing so all three header icons acknowledge identically. Fired only
 * from a confirmed closed -> open transition (theme.js for Menu,
 * aurelia-search.js for Search); closing, a click while already open and a
 * failed open all stay silent. The SVG alone animates, so there is no
 * background box and no layout shift, and the class is removed as soon as the
 * animation ends. */
.icon-btn.rs-icon-glow svg,
.burger.rs-icon-glow svg{
  transform-origin:center;
  animation:rs-cart-glow .4s cubic-bezier(.22,.8,.25,1);
}
@media (prefers-reduced-motion:reduce){
  .icon-btn.rs-icon-glow svg,
  .burger.rs-icon-glow svg{animation:rs-cart-glow-soft .4s ease;transform:none}
}
/* The burger is the one header control that had neither: without the first
   line a tap paints the browser's square highlight over the icon, and the
   second keeps keyboard focus on the same gold outline every other icon uses
   instead of the UA default. */
.burger{-webkit-tap-highlight-color:transparent}
.burger:focus-visible{outline:2px solid var(--gold);outline-offset:2px}

/* ============================================================
   CHECKOUT - refinements
   Layered on the CHECKOUT (WooCommerce Blocks) section above
   rather than folded into it, so the two can be told apart
   and, if need be, reverted apart.
   ============================================================ */

/* ---- the duplicate order summary ----
 * WooCommerce renders the order summary twice below its "medium" breakpoint:
 * once as the collapsible panel in the sidebar, and again into the
 * checkoutOrderSummaryActionArea slot, which sits directly above the place
 * order button. Two identical panels, the second at the very bottom of the
 * form. The sidebar copy is the one that belongs to the layout, so the fill is
 * the one that goes. Presentation only - the slot itself is left registered for
 * any extension that fills it. */
.checkout-order-summary-block-fill-wrapper{display:none!important}

/* ---- two columns that actually share a row ----
 * .wc-block-components-sidebar-layout is a flex row with flex-wrap:wrap. Core
 * sizes the pair 65/35; the theme had been setting a fixed 400px sidebar
 * against core's 65% main, and any viewport where those two did not fit wrapped
 * the sidebar onto its own line - which is to say, dropped the order summary to
 * the bottom of the page. Percentages on both sides cannot disagree.
 *
 * The gutter rule this replaces targeted .wc-block-components-sidebar-layout__main,
 * which is not a class WooCommerce emits, so it had never applied. */
@media (min-width:1024px){
  .wc-block-checkout .wc-block-components-main{
    width:62%!important;max-width:none!important;padding-right:48px!important;
  }
  .wc-block-checkout__sidebar{
    width:38%!important;max-width:none!important;padding-left:0!important;
  }
}

/* Below the two-column threshold the summary belongs above the form, not under
 * it: it answers "what am I paying for", and that question comes first. Core
 * only reorders below its own 699px container query, which left the tablet
 * range stacking in source order. */
@media (max-width:1023px){
  .wc-block-checkout .wc-block-components-sidebar-layout{flex-direction:column}
  .wc-block-checkout .wc-block-components-main,
  .wc-block-checkout__sidebar{width:100%!important;max-width:none!important;padding-right:0!important}
  .wc-block-checkout__sidebar{order:0;margin:0 0 28px}
  .wc-block-checkout__main{order:1}
}

/* ---- coupon ----
 * The toggle was already gold; the Apply button was not in the theme's button
 * system at all, so it rendered in WooCommerce's default styling - the one
 * obviously un-branded control on the page. Both now read as the same offer. */
.wc-block-components-totals-coupon .wc-block-components-panel__button,
.wc-block-components-totals-coupon .wc-block-components-totals-coupon-link{
  color:var(--gold)!important;font-family:var(--sans)!important;
  font-size:12px!important;font-weight:400!important;
  letter-spacing:.08em;text-transform:uppercase;
}
.wc-block-components-totals-coupon .wc-block-components-panel__button:hover,
.wc-block-components-totals-coupon .wc-block-components-totals-coupon-link:hover{color:#F3DEB4!important}
.wc-block-components-totals-coupon .wc-block-components-panel__button svg{fill:var(--gold)}

/* center, not stretch: Apply carries a fixed 44px height, so it never
   stretched to the field beside it - it just sat against the top of a 58px
   box. */
.wc-block-components-totals-coupon__form{align-items:center;gap:10px!important}
.wc-block-components-totals-coupon__form .wc-block-components-totals-coupon__input input{
  height:44px!important;border-radius:var(--aru-control-radius,999px)!important;
  padding:0 15px!important;letter-spacing:.04em;text-transform:uppercase;
}
.wc-block-components-totals-coupon__form .wc-block-components-totals-coupon__input label{
  /* The floating label is absolutely positioned, so its horizontal inset is
     `left`. padding-left here was stacking ON TOP of that offset, indenting
     the label ~16px further than the code the customer types beneath it.
     Inset belongs to `left` alone, and the input padding above is set to
     match it (1px border + 15px = 16px) so the two agree by construction. */
  left:16px!important;padding-left:0!important;text-transform:none;letter-spacing:0;
}
.wc-block-components-totals-coupon__button{
  height:44px!important;min-height:44px!important;
  border:1px solid var(--gold)!important;border-radius:var(--aru-control-radius,999px)!important;
  background:transparent!important;color:var(--gold)!important;
  font-family:var(--sans)!important;font-size:12px!important;font-weight:400!important;
  letter-spacing:.1em;text-transform:uppercase;
  padding:0 22px!important;white-space:nowrap;
  transition:background .18s ease,color .18s ease;
}
.wc-block-components-totals-coupon__button:hover:not(:disabled){background:var(--gold)!important;color:#17130B!important}
.wc-block-components-totals-coupon__button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.wc-block-components-totals-coupon__button:disabled{opacity:.45}

/* An applied coupon reads as a gold chip rather than a grey pill. */
.wc-block-components-chip.wc-block-components-totals-discount__coupon-list-item{
  background:rgba(230,184,109,.10)!important;border:1px solid var(--line)!important;
  color:var(--gold)!important;border-radius:var(--aru-control-radius,999px)!important;
  /* WooCommerce normalises every coupon code to lower case (wc_strtolower on
     the woocommerce_coupon_code filter), so get_code() returns "umz5" even
     though the coupon is named UMZ5 and the field above renders what you type
     in caps. Presentation only - the stored code and the matching, which is
     case-insensitive either way, are untouched. */
  text-transform:uppercase;letter-spacing:.04em;
}
.wc-block-components-totals-discount__coupon-list-item .wc-block-components-chip__remove{color:var(--gold)!important}

/* ---- figures ----
 * Prices sit in a right-hand column and are read against each other, so they
 * want tabular figures: proportional digits make a column of numbers ragged
 * even when every row is right-aligned. */
.wc-block-components-totals-item__value,
.wc-block-components-formatted-money-amount,
.wc-block-components-product-price,
.wc-block-components-order-summary-item__total-price,
.wc-block-components-checkout-order-summary__title-price,
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value{
  font-variant-numeric:tabular-nums lining-nums;
  font-feature-settings:"tnum" 1,"lnum" 1;
}

/* ---- the batch line under each summary item ----
 * Store API item_data, rendered by WooCommerce as a definition list. Quiet by
 * design: it is provenance, not a selling line. */
.wc-block-components-product-details{margin:6px 0 0!important;padding:0!important}
.wc-block-components-product-details__name{
  color:var(--cream-dim)!important;font-size:11px!important;
  letter-spacing:.08em;text-transform:uppercase;
}
.wc-block-components-product-details__value{
  color:var(--cream)!important;font-size:11.5px!important;letter-spacing:.06em;
  font-variant-numeric:tabular-nums lining-nums;
}

/* ---- what sits under the place-order button ---- */
.rs-checkout-after{display:flex;flex-direction:column;align-items:center;gap:12px;margin:16px 2px 0}
.rs-back-basket{color:var(--cream-dim);font-size:12px;letter-spacing:.06em;transition:color .18s ease}
.rs-back-basket:hover{color:var(--gold)}
.rs-checkout-trust{margin:0!important}

/* ---- the button on a phone ----
 * It used to be a bar pinned to the viewport foot - full-bleed, blurred and
 * ruled off from the page. Now it simply ends the form: the actions block
 * stays in flow and is reached by scrolling, like every other control on it.
 * The bar gave the button ~23px of clear space above it; 24px keeps that
 * separation without the chrome, and sits inside the form's own 32px step
 * rhythm. No safe-area padding: the return-to-basket block, the trust line
 * and the checkout footer all follow the button, so it never meets the
 * screen edge. */
@media (max-width:700px){
  .rs-checkout-shell .wp-block-woocommerce-checkout-actions-block{
    margin-top:24px;
  }
}

/* ============================================================
   CHECKOUT SHELL - header, footer, page frame
   ============================================================ */

.rs-checkout-shell{--hdr:0px}
.rs-checkout-shell .site-main.sec{padding-top:0}

/* Same lockup as every other page: the logo size comes from .brand img so it
   can never drift from the site header, and the padding is set so the bar
   lands on the site header height (6 + 64 + 6 = 76px, the --hdr this shell
   zeroes for its own sticky maths). */
.rs-chdr{border-bottom:1px solid var(--line-soft);background:var(--ink);padding:6px 0}
.rs-chdr .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px}
.rs-chdr-secure{
  display:inline-flex;align-items:center;gap:8px;
  color:var(--cream-dim);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
}
.rs-chdr-secure svg{width:15px;height:15px;color:var(--gold);stroke-width:1.3}
/* SECURE CHECKOUT used to be hidden below 600px, leaving a bare padlock. The
   label is the half that carries the meaning, so it is the fixed element now
   and the wordmark is what yields: the brand can shrink, and max-width plus
   object-fit scales the logo down inside its own box, keeping its proportions
   and its left edge. No breakpoint to pick - the lockup simply always fits.
   Measured one line from 320px up. */
.rs-checkout-shell .rs-chdr-secure{flex:0 0 auto}
.rs-checkout-shell .rs-chdr-secure span{white-space:nowrap}
.rs-checkout-shell .rs-chdr .brand{flex:0 1 auto;min-width:0}
.rs-checkout-shell .rs-chdr .brand img{max-width:100%;object-fit:contain;object-position:left center}

.rs-cftr{border-top:1px solid var(--line-soft);background:var(--ink);padding:26px 0;margin-top:72px}
.rs-cftr .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px}
.rs-cftr-legal,.rs-cftr-ruo{color:var(--cream-dim);font-size:11px;letter-spacing:.06em}
.rs-cftr-ruo{flex:0 0 100%;text-transform:uppercase;letter-spacing:.09em;opacity:.75}
.rs-cftr-links{display:flex;flex-wrap:wrap;gap:8px 18px}
.rs-cftr-links a{color:var(--gold);font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.rs-cftr-links a:hover{color:#F3DEB4}

/* The site header steps down at 767px (--hdr:64px, .brand img 44px); the
   checkout bar follows it rather than keeping a breakpoint of its own. */
@media (max-width:767px){
  .rs-chdr{padding:10px 0}
}

@media (max-width:600px){
  .rs-cftr{margin-top:48px}
  .rs-cftr .wrap{justify-content:center;text-align:center}
  .rs-cftr-links{justify-content:center}
}

/* ============================================================
   ORDER RECEIVED
   WooCommerce hands the order-received endpoint back to the classic
   thankyou template, so this is ordinary Woo markup rather than blocks.
   ============================================================ */

.rs-order-received .woocommerce{max-width:760px;margin:0 auto;padding:56px 0 40px}
.rs-order-received .woocommerce-notice--success{
  font-family:var(--serif);font-size:30px;font-weight:400;line-height:1.25;
  color:var(--cream);margin:0 0 8px;padding:0;background:none;border:0;
}
.rs-order-received .woocommerce-notice--success::before{display:none}

.rs-order-received ul.order_details{
  list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:1px;margin:32px 0 0;padding:0;
  background:var(--line-soft);border:1px solid var(--line-soft);border-radius:18px;overflow:hidden;
}
.rs-order-received ul.order_details li{
  background:var(--ink-2);padding:18px 20px;margin:0;border:0;float:none;
  color:var(--cream-dim);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
}
.rs-order-received ul.order_details li strong{
  display:block;margin-top:7px;color:var(--cream);
  font-family:var(--serif);font-size:19px;letter-spacing:.01em;text-transform:none;
  font-variant-numeric:tabular-nums lining-nums;
}

.rs-order-received h2,
.rs-order-received .woocommerce-column__title{
  font-family:var(--serif);font-weight:400;font-size:22px;color:var(--cream);margin:44px 0 14px;
}
.rs-order-received table.shop_table{
  width:100%;border:1px solid var(--line-soft);border-radius:18px;border-collapse:separate;
  border-spacing:0;overflow:hidden;background:var(--ink-2);
}
.rs-order-received table.shop_table th,
.rs-order-received table.shop_table td{
  border:0;border-top:1px solid var(--line-soft);padding:14px 20px;
  font-size:13.5px;color:var(--cream);text-align:left;
  font-variant-numeric:tabular-nums lining-nums;
}
.rs-order-received table.shop_table thead th{
  border-top:0;color:var(--cream-dim);font-weight:400;
  font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
}
.rs-order-received table.shop_table tfoot th,
.rs-order-received table.shop_table tfoot td{color:var(--cream)}
.rs-order-received table.shop_table tfoot tr:last-child th,
.rs-order-received table.shop_table tfoot tr:last-child td{font-family:var(--serif);font-size:19px}
.rs-order-received .woocommerce-customer-details address{
  border:1px solid var(--line-soft);border-radius:18px;background:var(--ink-2);
  padding:18px 20px;font-style:normal;color:var(--cream);font-size:13.5px;line-height:1.7;
}
.rs-order-received .woocommerce-order-downloads{margin-top:36px}

@media (max-width:600px){
  .rs-order-received .woocommerce{padding:32px 0 24px}
  .rs-order-received .woocommerce-notice--success{font-size:24px}
  .rs-order-received table.shop_table th,
  .rs-order-received table.shop_table td{padding:12px 14px}
}

/* ---------- aurelia-reduced-motion ---------- */
/* Individual components already answer prefers-reduced-motion where the
   movement is the point - the basket drawer, the icon glows. This is the
   backstop for everything else: a visitor who has asked their operating
   system for less motion should not have to rely on each component having
   remembered. Durations are reduced to near-zero rather than set to none, so
   transitionend and animationend still fire and nothing that waits on them
   can stall. Last in the file so it wins on order against anything it
   overrides. */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
    scroll-behavior:auto!important}
}


/* Footer contact actions: compact Aurelia control treatment. */
.fcontact .fchannels{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(132px,1fr));
  gap:10px;
  grid-column:1 / -1;
  width:100%;
}
.fcontact .fchannel{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  width:100%;
  min-width:0;
  height:44px;
  min-height:44px;
  padding:0 10px;
  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;
  white-space:nowrap;
}
.fcontact .fchannel svg{width:16px;height:16px;flex:0 0 16px}
.fcontact .fchannel[href*="wa.me"] svg{fill:#25D366!important}
@media(hover:hover){
  .fcontact .fchannel:hover{
    color:var(--cream);
    border-color:rgba(230,184,109,.92);
    background:var(--aru-control-surface);
    box-shadow:inset 0 1px 0 rgba(241,237,228,.28),inset 0 -1px 0 rgba(230,184,109,.22),0 7px 16px rgba(0,0,0,.34);
    transform:translateY(-1px);
  }
}
.fcontact .fchannel:focus-visible{outline:2px solid var(--gold);outline-offset:3px}

/* Footer contact labels: concise visible copy. */
.fcontact .fchannel{font-size:0}
.fcontact .fchannel::after{content:"Email";font-size:11.5px;letter-spacing:.1em}
.fcontact .fchannel[href*="wa.me"]::after{content:"WhatsApp"}


/* -------------------------------------------------------------------------
 * Desktop bento captions: keep caption copy clear of imagery at desktop
 * widths while retaining the existing mobile and tablet card treatment.
 * Roll back by removing this marked block.
 * ---------------------------------------------------------------------- */
/* aurelia-desktop-bento-captions: 1 */
@media (min-width:1024px){
  .ruo-home .bcard{
    aspect-ratio:auto!important;
    flex-direction:column!important;
  }
  .ruo-home .bcard .bg,
  .ruo-home .bcard>.ph{
    position:relative!important;
    inset:auto!important;
    display:block;
    flex:0 0 auto;
    width:100%;
    height:auto!important;
    aspect-ratio:1/.82;
    object-fit:cover;
  }
  .ruo-home .bcard>.ph{
    display:grid;
    padding-bottom:0;
  }
  .ruo-home .bcard .num{
    position:static!important;
    top:auto!important;
    left:auto!important;
    z-index:auto;
    order:2;
    display:block;
    padding:14px 20px 0;
  }
  .ruo-home .bcard .binner{
    order:3;
    flex:1 0 auto;
    margin-top:0!important;
    padding:3px 20px 20px;
    background:var(--ink-2)!important;
  }
}


/* -------------------------------------------------------------------------
 * Contact modal
 * Opened from the footer Email control. The panel borrows the age gate's
 * surface and the shared compact-control geometry, so it belongs to the same
 * object family as the rest of the site rather than introducing a second
 * dialog system. The page lock is the theme's own body.rs-locked-fixed, the
 * only lock iOS Safari honours.
 * ---------------------------------------------------------------------- */
.rs-cf{position:fixed;inset:0;z-index:210;display:grid;place-items:center;padding:18px;
  background:rgba(6,7,7,.94);backdrop-filter:blur(12px)}
.rs-cf[hidden]{display:none}
.rs-cf-scrim{position:absolute;inset:0}
.rs-cf-panel{position:relative;width:min(520px,100%);max-height:calc(100dvh - 36px);overflow:auto;
  padding:22px 26px 24px;text-align:left;
  background:linear-gradient(155deg,rgba(241,237,228,.055),transparent 42%),rgba(19,20,20,.98);
  border:1px solid rgba(230,184,109,.28);border-radius:18px;
  box-shadow:inset 0 1px 0 rgba(241,237,228,.07),0 28px 80px rgba(0,0,0,.48)}
.rs-cf-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:6px}
.rs-cf-title{font-family:var(--serif);font-size:26px;font-weight:400;line-height:1.1;margin:0;color:var(--cream)}
.rs-cf-close{width:36px;height:36px;flex:0 0 36px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--line-soft);border-radius:10px;color:var(--cream-dim);
  transition:color .2s ease,border-color .2s ease}
.rs-cf-close svg{width:16px;height:16px}
@media(hover:hover){.rs-cf-close:hover{color:var(--gold);border-color:rgba(230,184,109,.5)}}
.rs-cf-close:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.rs-cf-intro{margin:0 0 16px;font-size:12.5px;line-height:1.5;color:var(--cream-dim)}
.rs-cf-field{margin:0 0 14px}
.rs-cf-field label{display:block;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(241,237,228,.45);margin-bottom:6px}
.rs-cf-opt{color:rgba(241,237,228,.28)}
.rs-cf-field input,.rs-cf-field textarea{width:100%;height:46px;padding:0 13px;background:transparent;
  color:var(--cream);border:1px solid var(--line-soft);border-radius:10px;font:inherit;font-size:14px;
  transition:border-color .18s ease}
.rs-cf-field textarea{height:auto;min-height:112px;padding:12px 13px;line-height:1.5;resize:vertical}
.rs-cf-field input::placeholder,.rs-cf-field textarea::placeholder{color:rgba(241,237,228,.3)}
.rs-cf-field input:focus,.rs-cf-field textarea:focus{outline:none;border-color:var(--gold)}
.rs-cf-field input:focus-visible,.rs-cf-field textarea:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
/* Invalid state matches the checkout's own invalid fields exactly. */
.rs-cf-field.has-err label{color:#E1A098}
.rs-cf-field.has-err input,.rs-cf-field.has-err textarea,.rs-cf-field.has-err input:focus,.rs-cf-field.has-err textarea:focus{border-color:#E5685C;box-shadow:0 0 0 2px rgba(229,104,92,.14)}
.rs-cf-field.has-err input:focus-visible,.rs-cf-field.has-err textarea:focus-visible{outline-color:#E5685C}
.rs-cf-err{margin:6px 0 0;font-size:11.5px;line-height:1.4;color:#E1A098}
.rs-cf-formerr{margin:0 0 12px;padding:10px 12px;border-radius:10px;font-size:12.5px;line-height:1.45;
  color:#F0C0B4;border:1px solid rgba(224,138,122,.4);background:rgba(224,138,122,.08)}
/* Honeypot: out of sight and out of the tab order, never display:none, which
   a capable bot reads as a field to skip. */
.rs-cf-hp{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.rs-cf-submit{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;
  height:48px;padding:0 24px;font-size:12.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  border:1px solid var(--aru-control-border);border-radius:var(--aru-control-compact-radius);
  background:var(--grad-gold);color:#17130B;box-shadow:var(--aru-control-shadow);transition:.22s ease}
@media(hover:hover){.rs-cf-submit:hover:not(:disabled){filter:brightness(1.07)}}
.rs-cf-submit:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.rs-cf-submit:disabled{opacity:.55;cursor:default;filter:none}
.rs-cf-spin{width:14px;height:14px;flex:0 0 14px;border-radius:50%;
  border:2px solid rgba(23,19,11,.28);border-top-color:#17130B;animation:rs-cf-spin .7s linear infinite}
.rs-cf-spin[hidden]{display:none}
@keyframes rs-cf-spin{to{transform:rotate(360deg)}}
.rs-cf-alt{margin:14px 0 0;font-size:12px;color:var(--cream-dim);
  display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.rs-cf-copy{font:inherit;font-size:12px;color:var(--gold);padding:2px 0;
  border-bottom:1px solid rgba(230,184,109,.4);transition:color .2s ease}
@media(hover:hover){.rs-cf-copy:hover{color:var(--cream)}}
.rs-cf-copy:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:4px}
.rs-cf-copied{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
.rs-cf-copied:empty{display:none}
.rs-cf-done{text-align:center;padding:16px 0 4px}
.rs-cf-done:focus{outline:none}
.rs-cf-done h3{font-family:var(--serif);font-size:23px;font-weight:400;margin:0 0 8px;color:var(--cream)}
.rs-cf-done p{margin:0 0 20px;font-size:13px;line-height:1.55;color:var(--cream-dim)}
/* The footer Email control. It opens the dialog now instead of handing off to
   a mail client, so it is a button - and it carries the treatment the address
   anchor had, leaving the contact row visually unchanged. */
.fcontact .email .rs-cf-open{font:inherit;font-size:13.5px;color:var(--cream-dim);padding:0;
  display:inline-flex;align-items:center;min-height:24px;transition:color .2s ease}
@media(hover:hover){.fcontact .email .rs-cf-open:hover{color:var(--gold)}}
.fcontact .email .rs-cf-open:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:4px}
@media (max-width:767px){
  .rs-cf{padding:12px}
  .rs-cf-panel{padding:18px 16px 20px;border-radius:14px;max-height:calc(100dvh - 24px)}
  .rs-cf-title{font-size:23px}
}

/* ============================================================
   v1.4.0 - Uniform product tiles on the shop archive.
   Delete this whole block to revert.
   ============================================================ */

/* Tiles are identical in height across the WHOLE grid, not just within
   a row. fr-sized implicit rows in an auto-height grid all resolve to the
   tallest card, so row 2 matches row 1. The card already stretches to its
   li (height:100% above), so nothing else is needed. */
.woocommerce ul.products,
.pgrid{grid-auto-rows:1fr}

/* The empty dose span on Lab Equipment is deliberately kept in flow by the
   tile-consistency sandbox module (display:block, visibility:hidden), so it
   holds its row rather than collapsing. Nothing to do here. */

/* Products with no purity attribute (Lab Equipment, Reconstitution Solution)
   are one row shorter in the body. The slack collects in .card-foot's
   margin-top:auto, so the price rail still sits on the same baseline as
   every other card in the grid. */


/* --- Mobile touch targets: September 2026 --- */
@media (max-width: 767px) {
	.hdr .icon-btn,
	.hdr .burger {
		width: 44px;
		height: 44px;
		min-width: 44px;
		min-height: 44px;
	}

	.ruo-card-plus {
		width: 44px;
		height: 44px;
	}
}


/* Contact form submit: shared black-glass control treatment. */
/* aurelia-contact-form-submit-glass: 1 */
.rs-cf-submit{
  background:var(--aru-control-surface);
  color:var(--cream);
  transition:transform .16s ease,box-shadow .18s ease,border-color .18s ease,filter .18s ease;
}
@media(hover:hover){
  .rs-cf-submit:hover:not(:disabled){
    border-color:rgba(230,184,109,.92);
    filter:none;
    transform:translateY(-1px);
    box-shadow:inset 0 1px 0 rgba(241,237,228,.28),inset 0 -1px 0 rgba(230,184,109,.22),0 7px 16px rgba(0,0,0,.34);
  }
}
.rs-cf-submit:active:not(:disabled){transform:translateY(1px)}
.rs-cf-submit .rs-cf-spin{
  border-color:rgba(241,237,228,.28);
  border-top-color:var(--cream);
}

