/* =====================================================================
   OASIS LABS — Design Direction v2  (real brand assets)
   Cormorant Garamond (display) + Jost (UI) · real forest/cream palette
   ===================================================================== */

:root{
  /* real brand tokens pulled from oasislabsusa.com */
  --forest-950:#20211a;   /* announce, footer, trust bar, delivery panel */
  --forest-900:#353525;   /* real brand dark — buttons */
  --forest-800:#2c2e1f;
  --forest-700:#535740;   /* real brand mid — kickers, accents */
  --forest-600:#6a6d50;
  --olive:#7c7f5c;

  --cream-50:#f5f3ee;
  --cream-100:#edeae3;
  --cream-200:#e5e1d6;
  --cream-300:#d9d3c4;

  --ink:#2a2a1d;
  --ink-soft:#43442f;
  --muted:#79795f;
  --muted-light:#c7c8ad;
  --line:#dcd6c8;

  --font-display:"Cormorant Garamond", Georgia, serif;
  --font-ui:"Jost", system-ui, sans-serif;

  --wrap:1240px;
  --radius:14px;
  --radius-lg:24px;
  --ease:cubic-bezier(.22,.61,.36,1);
  --shadow:0 30px 66px -38px rgba(20,21,15,.55);
  --shadow-soft:0 20px 48px -32px rgba(20,21,15,.42);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--font-ui);color:var(--ink);background:var(--cream-100);
  font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul{margin:0;padding:0;list-style:none}
h1,h2,h3,h4,h5{margin:0;font-weight:600;line-height:1.05}
svg.ic{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:26px}

.kicker{font-family:var(--font-ui);font-size:.72rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--forest-700);margin:0 0 1rem}
.kicker--light{color:var(--muted-light)}
.section-title{font-family:var(--font-display);font-weight:600;font-size:clamp(2.2rem,4.4vw,3.5rem);color:var(--ink);letter-spacing:.004em}
.section-title.center{text-align:center;margin-bottom:2.8rem}
.section-title .rule{display:block;width:54px;height:2px;background:var(--forest-700);opacity:.55;margin:1rem auto 0}

/* ---------- buttons ---------- */
.btn{--bg:var(--forest-900);--fg:#f6f4ec;display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  font-family:var(--font-ui);font-weight:600;font-size:.78rem;letter-spacing:.15em;text-transform:uppercase;
  padding:1.02em 1.9em;border-radius:8px;border:1.5px solid transparent;cursor:pointer;
  transition:transform .35s var(--ease), background .3s var(--ease), color .3s var(--ease), box-shadow .35s var(--ease);will-change:transform}
.btn--sm{padding:.86em 1.5em;font-size:.72rem}
.btn--solid{background:var(--bg);color:var(--fg);box-shadow:0 14px 26px -18px rgba(53,53,37,.9)}
.btn--solid:hover{transform:translateY(-3px);background:var(--forest-800);box-shadow:0 20px 34px -18px rgba(53,53,37,.95)}
.btn--ghost{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn--ghost:hover{transform:translateY(-3px);background:var(--ink);color:var(--cream-50)}
.btn--light{color:#f6f4ec;border-color:rgba(255,255,255,.5)}
.btn--light:hover{background:#f6f4ec;color:var(--forest-950);border-color:#f6f4ec}

/* =====================================================================
   ANNOUNCEMENT BAR
   ===================================================================== */
.announce{background:var(--forest-950);color:#e7e6d6;font-size:.72rem;letter-spacing:.06em}
.announce__inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:40px;padding-block:6px}
.announce__lead{display:inline-flex;align-items:center;gap:.5rem;text-transform:uppercase;font-weight:500}
.announce__lead .ic{width:17px;height:17px;opacity:.85}
.announce__mid{text-transform:uppercase;font-weight:500;opacity:.9}
.announce__mid i{margin-inline:.5rem;opacity:.4;font-style:normal}
.announce__right{text-transform:uppercase;font-weight:500;opacity:.85}
.announce__right i{margin-inline:.5rem;opacity:.4;font-style:normal}
/* Mobile marquee (hidden on desktop; shown ≤767 in the mobile block) */
.announce__marquee{display:none}
.announce__track{display:inline-flex;align-items:center;white-space:nowrap;will-change:transform}
.announce__chip{display:inline-flex;align-items:center;text-transform:uppercase;font-weight:500;padding-inline:1.1rem;position:relative}
.announce__chip::after{content:"·";position:absolute;right:-.15em;opacity:.45}
@keyframes announce-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.announce__track{animation:none!important}}

/* =====================================================================
   HEADER
   ===================================================================== */
.site-header{position:sticky;top:0;z-index:60;
  background:rgba(245,243,238,.5);
  backdrop-filter:blur(22px) saturate(1.6);-webkit-backdrop-filter:blur(22px) saturate(1.6);
  border-bottom:1px solid rgba(255,255,255,.35);
  box-shadow:0 6px 34px -26px rgba(20,21,15,.45);
  transition:box-shadow .4s var(--ease), background .4s var(--ease), border-color .4s}
.site-header::after{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.6),transparent);pointer-events:none}
.site-header.is-scrolled{background:rgba(245,243,238,.72);box-shadow:0 12px 34px -22px rgba(20,21,15,.5);border-color:rgba(255,255,255,.5)}
.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:2rem;min-height:80px}

/* header account + cart actions (moved out of the ticker) */
.header__actions{display:flex;align-items:center;gap:.4rem}
.header__action{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-ui);font-weight:600;
  font-size:.76rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);
  padding:.6rem .95rem;border-radius:40px;border:1px solid transparent;transition:background .25s,border-color .25s,color .25s}
.header__action svg{flex:none;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.header__action:hover{background:rgba(255,255,255,.55);border-color:rgba(255,255,255,.8);color:var(--forest-900)}
.header__action--cart{gap:.45rem;padding:.52rem .8rem}
.header__cartcount{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:20px;background:var(--forest-900);color:#f6f4ec;font-size:.64rem;font-weight:700;letter-spacing:0}
.brand{display:inline-flex;align-items:center}
.brand__logo{height:46px;width:auto}
.brand__logo--light{filter:brightness(0) invert(1);opacity:.96}
.nav{display:flex;align-items:center;gap:2.2rem}
.nav__link{font-weight:500;font-size:.82rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);
  position:relative;display:inline-flex;align-items:center;gap:.3rem;padding-block:.4rem;transition:color .25s}
.nav__link::after{content:"";position:absolute;left:0;bottom:0;height:1.5px;width:0;background:var(--forest-700);transition:width .3s var(--ease)}
.nav__link:hover{color:var(--forest-900)}
.nav__link:hover::after{width:100%}
.nav__link .caret{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.hamburger{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;padding:6px}
.hamburger span{width:24px;height:2px;background:var(--ink);transition:transform .3s,opacity .3s}
/* Header hamburger must look IDENTICAL on every page. The legacy global rule
   `body.oasis-redesign:not(.home) button{background:var(--ol-forest-900)!important}` in main.css
   is !important with specificity (0,2,2); an ID selector is needed to win the override. */
#siteHeader #hamburger{background:none!important;border:0!important;box-shadow:none!important;
  min-height:0!important;height:auto!important;width:auto!important;padding:6px!important;border-radius:0!important;color:inherit!important}
#siteHeader #hamburger:hover,#siteHeader #hamburger:focus{background:none!important;box-shadow:none!important}
#siteHeader #hamburger span{background:var(--ink)!important}

/* =====================================================================
   HERO — full-bleed cinematic composition
   ===================================================================== */
.hero{position:relative;overflow:hidden;background:var(--cream-50);isolation:isolate;height:calc(100svh - 121px);min-height:520px}
/* the cinematic product photo spans the ENTIRE hero, edge to edge */
.hero__bg{position:absolute;inset:0;z-index:0}
/* two stacked layers → clean crossfade (base holds the current image, overlay
   fades the next in on top so the cream background never flashes through) */
/* !important defeats the legacy global img{height:auto} reset which otherwise makes the
   hero image size to its intrinsic aspect and top-align (cropping the vial base). */
.hero__img{position:absolute;inset:0;width:100%!important;height:100%!important;object-fit:cover;object-position:center bottom}
.hero__img--base{z-index:0;opacity:1}
.hero__img--over{z-index:1;opacity:0;transition:opacity .9s var(--ease)}
.hero__img--over.is-shown{opacity:1}
/* gentle legibility wash over the continuous photo — soft on the left where the
   text sits, clear over the product. No hard band. */
.hero__scrim{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(96deg, rgba(245,243,238,.74) 0%, rgba(245,243,238,.5) 20%, rgba(245,243,238,.2) 38%, rgba(245,243,238,.04) 50%, transparent 60%),
    linear-gradient(180deg, rgba(245,243,238,.12) 0%, transparent 26%)}

/* featured-product clickable hotspot sits over the vial on the right */
.hero__hotspot{position:absolute;top:0;right:0;bottom:0;width:44%;z-index:3;display:block;cursor:pointer}

/* clean "stamp" seal: stacked text + truck (no curved micro-type) */
.hero__seal{position:absolute;top:7%;right:4%;width:clamp(172px,18vw,228px);aspect-ratio:1;color:var(--forest-900);z-index:4;
  background:rgba(247,245,239,.96);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  box-shadow:0 22px 44px -20px rgba(20,21,15,.55);transition:transform .5s var(--ease)}
.hero__seal::before{content:"";position:absolute;inset:8px;border-radius:50%;border:1px solid rgba(53,53,37,.28)}
.seal__line{font-family:var(--font-ui);font-weight:700;font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;line-height:1;z-index:1}
.seal__line--top{color:var(--forest-700)}
.seal__truck{width:38%;height:auto;fill:none;stroke:var(--forest-900);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;z-index:1}
.hero__hotspot:hover .hero__seal{transform:scale(1.05) rotate(-3deg)}

/* floating RUO compliance bubble in the hero */
.hero__compliance{position:absolute;left:50%;bottom:20px;transform:translateX(-50%);z-index:4;
  display:inline-flex;align-items:center;gap:.5rem;max-width:calc(100% - 48px);
  padding:.5rem 1rem;border-radius:40px;background:rgba(30,31,22,.62);color:#f3f1e8;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.18);
  font-size:.68rem;font-weight:500;letter-spacing:.04em;line-height:1.2;box-shadow:0 12px 30px -18px rgba(20,21,15,.6)}
.hero__compliance svg{width:15px;height:15px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;opacity:.85}

/* featured-product switcher */
.hero__swap{display:flex;align-items:center;gap:.7rem;margin-top:3rem;flex-wrap:wrap}
.hero__swap-label{font-size:.64rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.hero__swap-pills{display:flex;gap:.4rem;flex-wrap:wrap}
.hero__swap-pill{font-family:var(--font-ui);font-size:.7rem;font-weight:600;letter-spacing:.03em;
  padding:.42rem .82rem;border-radius:40px;border:1px solid var(--line);background:rgba(255,255,255,.5);
  color:var(--ink-soft);cursor:pointer;transition:background .25s,border-color .25s,color .25s,transform .25s var(--ease);white-space:nowrap;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.hero__swap-pill:hover{border-color:var(--forest-700);color:var(--forest-900);transform:translateY(-1px)}
.hero__swap-pill.is-active{background:var(--forest-900);border-color:var(--forest-900);color:#f6f4ec}

.hero__hint{position:absolute;left:50%;bottom:9%;transform:translate(-50%,14px);z-index:4;
  background:rgba(32,33,26,.92);color:#f4f1ea;font-size:.66rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  padding:.55em 1.15em;border-radius:40px;opacity:0;transition:opacity .4s var(--ease),transform .4s var(--ease);white-space:nowrap;pointer-events:none}
.hero__hotspot:hover .hero__hint{opacity:1;transform:translate(-50%,0)}

/* Hero FILLS the viewport below the 40px announce + 81px sticky header (=121px), so no
   section peeks below the fold. Image covers it; object-position:center bottom keeps the
   vial + foreground visible while any crop is taken from the empty sky at the top. */
.hero__inner{position:relative;z-index:2;min-height:100%;display:flex;align-items:center}
.hero__copy{max-width:600px;padding-block:clamp(1.4rem,3.5vw,2.4rem)}
.hero__title{font-family:var(--font-display);font-weight:600;color:var(--ink);
  font-size:clamp(2.9rem,5.8vw,5rem);line-height:.96;letter-spacing:-.005em;margin:.35rem 0 1.1rem}
/* emphasis: warm-olive italic on a key word (shared by hero + section titles) */
.hero__title em,.section-title em,.cta__title em{font-style:italic;font-weight:500;color:var(--olive)}
.hero__sub{font-size:1.08rem;color:var(--ink-soft);max-width:none;margin:0 0 2rem;white-space:normal}
.hero__trust{display:flex;flex-wrap:wrap;gap:1.2rem 1.7rem;padding-block:1.4rem;margin-bottom:1.9rem;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);max-width:440px}
.hero__trust li{display:inline-flex;align-items:center;gap:.55rem;font-size:.8rem;font-weight:500;color:var(--ink-soft);letter-spacing:.02em}
.hero__trust .ic{width:24px;height:24px;stroke-width:1.3;color:var(--forest-700)}
.hero__actions{display:flex;gap:1rem;flex-wrap:wrap}

/* =====================================================================
   TRUST BAR
   ===================================================================== */
.trustbar{background:var(--forest-950);color:#e9e7d5}
.trustbar__inner{display:grid;grid-template-columns:repeat(4,1fr);gap:1.6rem;padding-block:2.2rem}
.trustbar__item{display:flex;align-items:flex-start;gap:.9rem}
.trustbar__item .ic{width:30px;height:30px;stroke-width:1.2;color:#cfd1b3;margin-top:2px}
.trustbar__item h3{font-family:var(--font-ui);font-size:.82rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;margin-bottom:.35rem}
.trustbar__item p{font-size:.8rem;line-height:1.5;color:rgba(233,231,213,.7);margin:0}

/* =====================================================================
   STANDARD
   ===================================================================== */
.standard{position:relative;background:linear-gradient(180deg,var(--cream-50),var(--cream-100));overflow:hidden}
.standard__hex{position:absolute;top:-40px;right:-60px;width:min(46%,560px);aspect-ratio:1;pointer-events:none;opacity:.5;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='104' viewBox='0 0 120 104'><g fill='none' stroke='%23535740' stroke-width='1.1' opacity='0.28'><path d='M30 2 58 18 58 50 30 66 2 50 2 18Z'/><path d='M90 2 118 18 118 50 90 66 62 50 62 18Z'/><path d='M60 54 88 70 88 102 60 118 32 102 32 70Z'/></g></svg>");
  background-repeat:repeat;background-size:120px 104px;-webkit-mask-image:radial-gradient(80% 80% at 80% 20%,#000,transparent 75%);mask-image:radial-gradient(80% 80% at 80% 20%,#000,transparent 75%)}
.standard__inner{position:relative;display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(2rem,5vw,5rem);align-items:center;padding-block:clamp(3.6rem,7vw,6rem)}
.standard__text{color:var(--muted);max-width:48ch;margin:1.4rem 0 1.9rem}
.standard__text p{margin:0 0 1rem}
.standard__text p:last-child{margin-bottom:0}
.standard__text strong{color:var(--forest-700);font-weight:600}
/* 2x2 so the pillars fill the column height and sit balanced with the copy */
.standard__features{display:grid;grid-template-columns:repeat(2,1fr);gap:1.4rem;align-self:center}
.feature{display:flex;flex-direction:column;align-items:center;gap:.5rem;text-align:center;padding:1.5rem 1rem;
  border:1px solid var(--line);border-radius:var(--radius);background:rgba(255,255,255,.45);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s}
.feature:hover{transform:translateY(-5px);box-shadow:0 22px 46px -34px rgba(20,21,15,.5);border-color:var(--cream-300)}
.feature__ic{width:42px;height:42px;margin-bottom:.5rem;fill:none;stroke:var(--forest-900);stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
.feature h4{font-family:var(--font-ui);font-size:.78rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
.feature__sub{font-family:var(--font-ui);font-size:.68rem;font-weight:500;color:var(--muted);letter-spacing:.02em;line-height:1.3}

/* =====================================================================
   BEST SELLERS
   ===================================================================== */
.bestsellers{background:var(--cream-100);padding-block:clamp(3.4rem,7vw,5.5rem)}
.kicker.center{text-align:center}
.product-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.4rem}
.product-card{background:var(--cream-50);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;
  transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s}
.product-card:hover{transform:translateY(-6px);box-shadow:var(--shadow);border-color:var(--cream-300)}
.product-card__img{position:relative;aspect-ratio:1/1;overflow:hidden;background:#fff}
.product-card__img img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.product-card:hover .product-card__img img{transform:scale(1.05)}
/* Unified SALE badge — identical look on home cards, shop cards, related cards
   and the single-product gallery (see product-page.css .onsale). Clean forest
   pill, cream text, soft lift. */
.product-card__badge{position:absolute;top:.8rem;left:.8rem;z-index:2;
  background:linear-gradient(135deg,#e2942f 0%,#bd4a24 100%);color:#fff;
  font-family:var(--font-ui);font-size:.7rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;line-height:1;
  padding:.56em 1.02em;border-radius:999px;box-shadow:0 10px 22px -8px rgba(189,74,36,.5);
  transform-origin:left center;animation:ol-sale-pulse 2.6s var(--ease) infinite}
@keyframes ol-sale-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@media (prefers-reduced-motion:reduce){.product-card__badge{animation:none}}
.product-card__body{padding:1rem 1.1rem 1.15rem;display:flex;flex-direction:column;gap:.35rem;flex:1}
.product-card__name{font-family:var(--font-ui);font-size:.9rem;font-weight:600;color:var(--ink);line-height:1.25;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.product-card__price{font-family:var(--font-ui);font-size:.95rem;font-weight:600;color:var(--forest-700);margin-top:.1rem}
.product-card__price .was{color:var(--muted);font-weight:400;text-decoration:line-through;font-size:.82rem;margin-right:.4rem}
.product-card__cta{margin-top:.9rem;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  font-family:var(--font-ui);font-size:.7rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  padding:.7em 1em;border-radius:7px;border:1.5px solid var(--forest-900);background:var(--forest-900);color:#f6f4ec;
  transition:background .25s var(--ease),color .25s var(--ease)}
.product-card:hover .product-card__cta{background:transparent;color:var(--forest-900)}
.bestsellers__all{text-align:center;margin-top:2.6rem}

/* =====================================================================
   DELIVERY BANNER
   ===================================================================== */
.delivery{background:var(--cream-100);padding-block:clamp(1rem,3vw,2.5rem) clamp(3rem,6vw,4.5rem)}
.delivery__panel{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;
  background:var(--forest-950);color:#eae8d5;border-radius:var(--radius-lg);overflow:hidden;
  padding:clamp(2rem,4vw,3.4rem);isolation:isolate;box-shadow:var(--shadow)}
.delivery__photo{position:absolute;inset:0;left:auto;width:52%;z-index:-1;
  background-image:linear-gradient(90deg,var(--forest-950) 0%,rgba(32,33,26,.85) 22%,rgba(32,33,26,.15) 60%,transparent 100%),url("../img/v2/vegas-night.png");
  background-size:cover;background-position:center right}
.delivery__title{font-family:var(--font-display);font-weight:600;font-size:clamp(2rem,3.8vw,3rem);line-height:1.02;margin:.4rem 0 1rem;color:#f5f3ee}
.delivery__text{color:rgba(234,232,213,.82);max-width:38ch;margin:0 0 1.7rem}
.delivery__list{display:grid;gap:1.15rem;align-content:center}
.delivery__list li{display:flex;align-items:center;gap:.9rem}
.delivery__list .ic{width:26px;height:26px;stroke-width:1.2;color:#cfd1b3;flex:none}
.delivery__list b{display:block;font-size:.9rem;font-weight:600;color:#f5f3ee}
.delivery__list span{font-size:.8rem;color:rgba(234,232,213,.64)}

/* =====================================================================
   FINAL CTA
   ===================================================================== */
.cta{background:var(--cream-100);padding-block:clamp(2rem,5vw,4rem) clamp(3.4rem,7vw,5.5rem)}
.cta__panel{position:relative;display:grid;grid-template-columns:.92fr 1.06fr .92fr;gap:2rem;align-items:center;
  background:var(--cream-50);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;
  padding:clamp(1.6rem,3vw,2.4rem);box-shadow:var(--shadow-soft)}
.cta__photo{align-self:stretch;min-height:240px;border-radius:var(--radius);background-image:url("../img/v2/cta.png");background-size:cover;background-position:center}
.cta__title{font-family:var(--font-display);font-weight:600;font-size:clamp(1.9rem,3.5vw,2.8rem);line-height:1.02;margin-bottom:.9rem;color:var(--ink)}
.cta__copy p{color:var(--muted);margin:0 0 1.6rem;max-width:32ch}
.cta__points{display:grid;gap:1.15rem}
.cta__points li{display:flex;align-items:flex-start;gap:.85rem}
.cta__points .ic{width:26px;height:26px;stroke-width:1.2;color:var(--forest-900);margin-top:2px}
.cta__points b{display:block;font-size:.86rem;font-weight:600;color:var(--ink)}
.cta__points span{font-size:.8rem;color:var(--muted)}

/* =====================================================================
   FOOTER
   ===================================================================== */
.site-footer{background:var(--forest-950);color:#c9cbb2}
.site-footer__inner{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr 1.4fr;gap:2rem;padding-block:clamp(2.6rem,5vw,3.6rem)}
.site-footer__brand .brand__logo{height:38px}
.site-footer__tag{font-family:var(--font-display);font-size:1.05rem;color:#9a9c7f;margin:1rem 0 1.3rem;line-height:1.3}
.social{display:flex;gap:.7rem}
.social a{width:34px;height:34px;border-radius:50%;border:1px solid rgba(255,255,255,.16);display:grid;place-items:center;transition:background .3s,border-color .3s}
.social a svg{width:17px;height:17px;fill:none;stroke:#c9cbb2;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.social a:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.3)}
.site-footer__col h5{font-family:var(--font-ui);font-size:.74rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#f2ede2;margin-bottom:1.1rem}
.site-footer__col a{display:block;font-size:.85rem;color:#a8aa8f;padding:.28rem 0;transition:color .25s}
.site-footer__col a:hover{color:#f2ede2}
.site-footer__col p{font-size:.82rem;color:#9a9c7f;margin:0 0 1rem}
.subscribe{display:flex;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);border-radius:8px;overflow:hidden;max-width:290px}
.subscribe input{flex:1;background:none;border:0;color:#f2ede2;padding:.72rem .9rem;font-family:var(--font-ui);font-size:.84rem;outline:none}
.subscribe input::placeholder{color:#8a8c72}
.subscribe button{background:var(--forest-700);border:0;width:46px;display:grid;place-items:center;cursor:pointer;transition:background .3s}
.subscribe button:hover{background:var(--forest-600)}
.subscribe button svg{width:18px;height:18px;fill:none;stroke:#f2ede2;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
/* Footer newsletter — force the unified input+button pill on ALL pages/breakpoints.
   Legacy generic form/button rules were making the input white + button ~129px wide with a
   pill radius on non-home mobile, so it looked like two separate blobs. */
html body.oasis-redesign .site-footer .subscribe{
  display:flex!important;flex-wrap:nowrap!important;gap:0!important;overflow:hidden!important;
  background:rgba(255,255,255,.06)!important;border:1px solid rgba(255,255,255,.16)!important;
  border-radius:8px!important;max-width:320px!important;width:100%!important}
html body.oasis-redesign .site-footer .subscribe input{
  flex:1 1 auto!important;width:auto!important;min-width:0!important;background:transparent!important;
  border:0!important;border-radius:0!important;color:#f2ede2!important;box-shadow:none!important;
  padding:.72rem .9rem!important;margin:0!important;min-height:0!important}
html body.oasis-redesign .site-footer .subscribe button{
  flex:0 0 48px!important;width:48px!important;min-width:48px!important;max-width:48px!important;height:auto!important;
  background:var(--forest-700)!important;border:0!important;border-radius:0!important;padding:0!important;
  margin:0!important;min-height:0!important;display:grid!important;place-items:center!important}
.site-footer__legal{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:#7a7c63;border-top:1px solid rgba(255,255,255,.1);padding-block:1.3rem}

/* ---------- reveal ---------- */
[data-reveal]{opacity:0;transform:translateY(26px)}
.no-js [data-reveal]{opacity:1;transform:none}

/* =====================================================================
   RESPONSIVE
   ===================================================================== */
@media (max-width:1240px){ .announce__right{display:none} }
@media (max-width:1080px){
  .announce__mid{display:none}
  .product-grid{grid-template-columns:repeat(3,1fr)}
  .site-footer__inner{grid-template-columns:1fr 1fr 1fr;gap:2rem 1.5rem}
  .site-footer__brand{grid-column:1/-1}
  .site-footer__col--wide{grid-column:1/-1;max-width:none}
}
@media (max-width:900px){
  .nav{display:none}
  .header__action span:not(.header__cartcount){display:none}
  .header__action{padding:.5rem}
  .hamburger{display:flex}
  /* hero: image stays full-bleed behind; scrim shifts to a vertical fade so
     the overlaid text reads over the lower cream area on tall screens */
  .hero__img{object-position:72% bottom}
  .hero__scrim{background:
    linear-gradient(180deg, rgba(245,243,238,.15) 0%, rgba(245,243,238,.35) 42%, rgba(245,243,238,.9) 74%, var(--cream-50) 100%)}
  .hero__hotspot{width:100%;height:52%;bottom:auto;top:0}
  .hero__seal{top:10%;right:6%}
  .hero__inner{min-height:74vh;align-items:flex-end;padding-bottom:2.4rem}
  .hero__title{font-size:clamp(3.4rem,15vw,5rem)}
  .hero__copy{max-width:none}
  .trustbar__inner{grid-template-columns:1fr 1fr}
  .standard__inner{grid-template-columns:1fr;gap:2rem}
  .standard__features{grid-template-columns:1fr 1fr;gap:1.4rem 1rem}
  .product-grid{grid-template-columns:repeat(2,1fr)}
  .delivery__panel{grid-template-columns:1fr}
  .delivery__photo{position:relative;width:auto;height:200px;z-index:0;margin:-1rem -1rem 0;
    background-image:linear-gradient(180deg,transparent,rgba(32,33,26,.2)),url("../img/v2/vegas-night.png");order:3}
  .delivery__copy{order:1}.delivery__list{order:2}
  .cta__panel{grid-template-columns:1fr;gap:1.6rem}
  .cta__photo{min-height:210px}
}
@media (max-width:560px){
  .announce__lead{font-size:.58rem}
  .hero__compliance{font-size:.6rem;bottom:14px}
  .standard__features{grid-template-columns:1fr 1fr}
  .trustbar__inner{grid-template-columns:1fr;gap:1.3rem}
  .site-footer__inner{grid-template-columns:1fr 1fr}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;transition-duration:.001ms!important}
  [data-reveal]{opacity:1!important;transform:none!important}
  .hero__seal svg{animation:none!important}
  .ticker__track{animation:none!important}
  .ticker{overflow-x:auto}
  html{scroll-behavior:auto}
}

/* =====================================================================
   WORDPRESS INTEGRATION — Best Sellers WC cards + footer disclaimer
   ===================================================================== */
.product-card{position:relative}
.product-card__link{display:flex;flex-direction:column;flex:1;color:inherit}
.product-card__price ins{text-decoration:none;font-weight:600;color:var(--forest-700)}
.product-card__price del{color:var(--muted);font-weight:400;font-size:.82rem;margin-right:.4rem;opacity:.9}
.product-card__price .woocommerce-Price-amount{font-weight:600;color:var(--forest-700)}
.product-card__price{color:var(--forest-700)}
/* WooCommerce loop add-to-cart button, restyled as the v2 card CTA */
.product-card .button,
.product-card a.added_to_cart{margin:.9rem 1.1rem 1.15rem;display:flex;align-items:center;justify-content:center;gap:.4rem;
  font-family:var(--font-ui);font-size:.7rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  padding:.72em 1em;border-radius:7px;border:1.5px solid var(--forest-900);background:var(--forest-900);color:#f6f4ec;
  transition:background .25s var(--ease),color .25s var(--ease);cursor:pointer;text-align:center}
.product-card:hover .button{background:transparent;color:var(--forest-900)}
.product-card .button.loading{opacity:.65;pointer-events:none}
.product-card .button.added{border-color:var(--forest-700)}

/* =====================================================================
   SHOP + RELATED cards use the home .product-card markup (content-product.php
   override) so they match the home best-sellers EXACTLY. Neutralize the legacy
   `ul.products li.product` unified-card styling that would otherwise double up.
   ===================================================================== */
html body.oasis-redesign ul.products li.product.product-card{
  padding:0!important;margin:0!important;background:var(--cream-50)!important;
  border:1px solid var(--line)!important;border-radius:var(--radius)!important;overflow:hidden!important;
  text-align:left!important;display:flex!important;flex-direction:column!important;box-shadow:none!important;
  min-width:0!important}
html body.oasis-redesign ul.products li.product.product-card::before,
html body.oasis-redesign ul.products li.product.product-card::after{content:none!important}
html body.oasis-redesign ul.products li.product.product-card:hover{
  transform:translateY(-6px)!important;box-shadow:var(--shadow)!important;border-color:var(--cream-300)!important}
html body.oasis-redesign ul.products li.product.product-card .product-card__link{
  padding:0!important;display:flex!important;flex-direction:column!important;flex:1!important;color:inherit!important;text-decoration:none!important}
html body.oasis-redesign ul.products li.product.product-card .product-card__img{
  width:100%!important;aspect-ratio:1/1!important;border-radius:0!important;padding:0!important;border:0!important;box-shadow:none!important;background:#fff!important}
html body.oasis-redesign ul.products li.product.product-card .product-card__img img{
  width:100%!important;height:100%!important;object-fit:cover!important;transform:none!important;border-radius:0!important}
html body.oasis-redesign ul.products li.product.product-card:hover .product-card__img img{transform:scale(1.05)!important}
html body.oasis-redesign ul.products li.product.product-card .product-card__body{padding:1rem 1.1rem .2rem!important;text-align:left!important}
/* Add-to-cart on shop/related — match the home .product-card button EXACTLY. High
   specificity (mirrors product-cards.css's shop selector + .product-card) so it wins. */
html body.oasis-redesign :is(.ol-products__grid,.ol-shop-shell .ol-shop-body,.ol-shop-body,.related.products) ul.products li.product.product-card :is(.button,a.button,span.button,.add_to_cart_button,.ol-select-size){
  margin:.9rem 1.1rem 1.15rem!important;padding:.72em 1em!important;font-size:.7rem!important;line-height:1.6!important;
  border-radius:7px!important;letter-spacing:.1em!important;font-weight:600!important;min-height:0!important;width:auto!important;
  text-transform:uppercase!important;font-family:var(--font-ui)!important;
  background:var(--forest-900)!important;color:#f6f4ec!important;border:1.5px solid var(--forest-900)!important;
  display:flex!important;align-items:center!important;justify-content:center!important}
html body.oasis-redesign :is(.ol-products__grid,.ol-shop-shell .ol-shop-body,.ol-shop-body,.related.products) ul.products li.product.product-card:hover :is(.button,a.button,span.button,.add_to_cart_button,.ol-select-size){
  background:transparent!important;color:var(--forest-900)!important}
/* Rewards-plugin "earn X points" message doesn't exist on the home card — hide it so
   shop + related match exactly. (Points still accrue at checkout.) */
.product-card .wlr-product-message,
html body.oasis-redesign ul.products li.product.product-card .wlr-product-message{display:none!important}

/* Slim size selector on the LOOP cards (home best-sellers + shop + related): "Size:" label
   inline with the chips on one compact row, thinner chips. The <legend> won't flex as a
   row item in Safari/some browsers, so visually-hide it (kept for a11y) and render the
   label via ::before — a normal flex item that works everywhere. Scoped to cards only so
   the single-product buy box is untouched. */
html body.oasis-redesign :is(.product-card, ul.products li.product.product-card) .ol-card-options{
  display:flex!important;flex-direction:row!important;align-items:center!important;flex-wrap:wrap!important;
  gap:.35rem .5rem!important;min-height:0!important;margin:.7rem 1.1rem .15rem!important}
html body.oasis-redesign :is(.product-card, ul.products li.product.product-card) .ol-card-options::before{
  content:"Size:";font-family:var(--font-ui);font-size:.58rem;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:color-mix(in oklab,var(--ink) 58%,transparent);flex:0 0 auto;line-height:1}
html body.oasis-redesign :is(.product-card, ul.products li.product.product-card) .ol-card-options__legend{
  position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;
  overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important}
html body.oasis-redesign :is(.product-card, ul.products li.product.product-card) .ol-card-options__chips{
  display:flex!important;flex-wrap:wrap!important;gap:.4rem!important;min-height:0!important}
html body.oasis-redesign :is(.product-card, ul.products li.product.product-card) .ol-card-option{min-height:0!important}
html body.oasis-redesign :is(.product-card, ul.products li.product.product-card) .ol-card-option > span{
  min-height:0!important;min-width:0!important;padding:.3rem .68rem!important}
.product-card a.added_to_cart{margin-top:0;border-color:var(--forest-700);color:var(--forest-700)}

/* Footer disclaimer (long RUO paragraph) */
.site-footer__legal{border-top:1px solid rgba(255,255,255,.1);padding-block:1.6rem;display:flex;flex-direction:column;gap:.8rem;text-transform:none}
.site-footer__disclaimer{font-size:.66rem;line-height:1.65;color:#84866f;letter-spacing:.01em;text-transform:none;max-width:none;margin:0}
.site-footer__copy{font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:#7a7c63;margin:0}

/* keep the sticky glass header flush to the announce bar (no legacy offset) */
body.oasis-redesign{padding-top:0}

/* =====================================================================
   Primary nav — style the real WordPress wp_nav_menu output (.nav__menu)
   ===================================================================== */
.nav .nav__menu{display:flex;align-items:center;gap:1.9rem;list-style:none;margin:0;padding:0}
.nav .nav__menu li{position:relative}
.nav .nav__menu a{font-family:var(--font-ui);font-weight:500;font-size:.8rem;letter-spacing:.11em;text-transform:uppercase;
  color:var(--ink-soft);position:relative;display:inline-flex;align-items:center;gap:.3rem;padding-block:.5rem;white-space:nowrap;transition:color .25s}
.nav .nav__menu a::after{content:"";position:absolute;left:0;bottom:.15rem;height:1.5px;width:0;background:var(--forest-700);transition:width .3s var(--ease)}
.nav .nav__menu a:hover{color:var(--forest-900)}
.nav .nav__menu a:hover::after{width:100%}
.nav .nav__menu .menu-item-has-children > a::after{content:none}
.nav .nav__menu .menu-item-has-children > a{gap:.35rem}
.nav .nav__menu .menu-item-has-children > a::before{content:none}
/* dropdown submenus */
.nav .nav__menu .sub-menu{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%) translateY(4px);
  min-width:190px;background:rgba(245,243,238,.98);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border:1px solid var(--line);border-radius:12px;box-shadow:0 20px 44px -26px rgba(20,21,15,.5);
  padding:.5rem;list-style:none;margin:0;opacity:0;visibility:hidden;transition:opacity .2s var(--ease),transform .2s var(--ease);z-index:70}
/* Invisible hover bridge: fills the 6px gap between the nav link and the submenu
   (plus a little overlap into the link) so moving the mouse down never lands in a
   dead zone that drops li:hover and closes the menu. */
.nav .nav__menu .sub-menu::before{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}
.nav .nav__menu li:hover > .sub-menu,
.nav .nav__menu li:focus-within > .sub-menu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.nav .nav__menu .sub-menu li{display:block}
.nav .nav__menu .sub-menu a{display:block;padding:.6rem .8rem;border-radius:8px;letter-spacing:.06em;font-size:.76rem}
.nav .nav__menu .sub-menu a::after{content:none}
.nav .nav__menu .sub-menu a:hover{background:rgba(83,87,64,.1);color:var(--forest-900)}

@media (max-width:900px){
  .nav{position:absolute;top:100%;left:0;right:0;display:none;background:rgba(245,243,238,.98);
    -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);
    box-shadow:0 20px 40px -26px rgba(20,21,15,.5);padding:1rem 24px 1.4rem}
  .nav.nav--open{display:block}
  .nav .nav__menu{flex-direction:column;align-items:flex-start;gap:.2rem;width:100%}
  .nav .nav__menu li{width:100%;border-bottom:1px solid color-mix(in oklab,var(--forest-900) 8%,transparent)}
  .nav .nav__menu a{width:100%;padding:.9rem 0;font-size:.86rem}
  .nav .nav__menu .sub-menu{position:static;transform:none!important;opacity:1;visibility:visible;box-shadow:none;border:0;background:transparent;padding:0 0 .5rem 1rem;min-width:0;transition:none!important}
  /* Kill the desktop hover-slide on mobile: tapping the Support/Certifications parent
     was triggering `li:hover > .sub-menu{transform:translateX(-50%)}`, sliding the
     submenu off-screen. Force it inline/static on touch. */
  .nav .nav__menu li:hover > .sub-menu,
  .nav .nav__menu li:focus-within > .sub-menu{transform:none!important;left:auto!important;transition:none!important}
  .site-header__inner{position:relative;gap:1rem}
  /* Tighten the action cluster on mobile so logo + search/account/cart + burger
     fit without overflowing (the desktop 2rem inner gap + full-size icons pushed
     it ~13px past the viewport). */
  .header__actions{gap:.1rem}
  .header__action{padding:.45rem}
  .header__action--cart{padding:.45rem .5rem}
}

/* Force the header/footer logo size over legacy main.css img rules */
.site-header .brand__logo{height:46px !important;width:auto !important;max-width:none !important}
.site-footer .brand__logo{height:38px !important;width:auto !important;max-width:none !important}

/* =====================================================================
   Delivery seal — 4-line stamp (Same Day / truck / Local Delivery / Las Vegas)
   Text scales with the seal's own size via container-query units; seal scales
   down on mobile. Guarantees legibility at any display size.
   ===================================================================== */
.hero__seal{container-type:inline-size;flex-direction:column;justify-content:center;gap:0;
  width:clamp(122px,13.5vw,172px);top:8%;right:5%}
.hero__seal::before{inset:6cqw}
.seal__line{font-size:8.4cqw;letter-spacing:.04em;line-height:1.18;font-weight:700;margin:0;text-align:center}
.seal__line--top{color:var(--forest-700)}
.seal__line--city{color:var(--forest-700)}
.hero__seal .seal__truck{width:34cqw;height:auto;margin:1.5cqw 0}
@media (max-width:767px){
  /* Mobile announce = scrolling ticker rotating every desktop item on one line */
  .announce__inner{display:none}
  .announce__marquee{display:block;overflow:hidden;min-height:40px;padding-block:6px;
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
    mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
  .announce__track{animation:announce-marquee 26s linear infinite}
  .announce__chip{font-size:.62rem;letter-spacing:.08em}

  /* Mobile hero: image on top (vial fully visible), copy below on cream — no overlap.
     Reset the desktop fixed height so the stacked layout sizes to its content. */
  .hero{display:flex;flex-direction:column;background:var(--cream-50);isolation:isolate;height:auto;min-height:0}
  /* OVERLAY: tall 9:16 image (vial sits low, open sky up top). Copy is overlaid over the
     sky at the top so it clears the lower vial. Subtle top scrim keeps text crisp. */
  /* Hero fills the window below the announce+header; the tall image covers it. */
  .hero{position:relative;display:block;height:calc(100svh - 123px);min-height:560px;max-height:none}
  .hero__bg{position:absolute;inset:0;width:100%;height:100%;max-height:none;aspect-ratio:auto;z-index:0}
  .hero__img{position:absolute;inset:0;object-position:center bottom}
  /* top cream fade (text legibility) + bottom dark scrim (FEATURED + disclaimer legibility over any image) */
  .hero__scrim{display:block;position:absolute;inset:0;z-index:1;pointer-events:none;
    background:linear-gradient(0deg,rgba(28,28,20,.82) 0%,rgba(28,28,20,.6) 9%,rgba(28,28,20,.2) 18%,rgba(28,28,20,0) 26%)}
  /* Tappable featured-vial region (bounds the vial, lower-right) → navigates to the featured
     product (href kept in sync by JS). Above the image, below the FEATURED pills. */
  .hero__hotspot{display:block;position:absolute;left:50%;right:2%;top:60%;bottom:14%;width:auto;height:auto;z-index:2}
  .hero__seal{display:none}
  /* visible "FEATURED · <product> →" button chip floating just ABOVE the vial */
  .hero__hint{display:inline-flex;align-items:center;gap:.35rem;position:absolute;left:50%;top:0;bottom:auto;right:auto;
    transform:translate(-50%,-120%);opacity:1;background:rgba(53,53,37,.92);color:#f5f3ee;padding:.5rem .85rem;
    border-radius:100px;font-size:.68rem;font-weight:600;letter-spacing:.02em;white-space:nowrap;
    box-shadow:0 6px 18px -8px rgba(0,0,0,.6);
    /* On mobile the chip is always shown and floats ABOVE the hotspot's box, so it
       must be its own tap target (it's a child of the hotspot <a>, so a tap on it
       still follows the link). Base rule sets pointer-events:none for the desktop
       hover-reveal — re-enable it here. */
    pointer-events:auto;cursor:pointer}
  /* top copy: eyebrow, title, sub, CTAs over the sky */
  .hero__inner{position:relative;z-index:2;min-height:0;height:100%;display:flex;flex-direction:column;
    justify-content:flex-start;align-items:flex-start;padding:3rem 20px 0;
    /* The overlay spans the full hero (same z-index as .hero__hotspot but later in
       the DOM), so it was swallowing taps meant for the featured-product link
       below it. Make the overlay transparent to pointers; re-enable only its own
       interactive controls so the hotspot underneath stays tappable. */
    pointer-events:none}
  .hero__inner a,.hero__inner button,.hero__inner .hero__swap-pill{pointer-events:auto}
  /* Full-height radial fade behind the top text block. It's the FULL hero height (inset:0)
     with the gradient itself fading to transparent by ~62% — so there's no box edge to
     create a straight line; the fade dissolves naturally into the image. */
  .hero__inner::before{content:"";position:absolute;z-index:-1;inset:0;pointer-events:none;
    background:radial-gradient(160% 32% at 32% 16%,rgba(245,243,238,.9) 0%,rgba(245,243,238,.74) 48%,rgba(245,243,238,.4) 74%,rgba(245,243,238,.1) 92%,rgba(245,243,238,0) 100%)}
  .hero__copy{max-width:92%}
  .hero__title{font-size:clamp(2.1rem,9vw,2.9rem);line-height:1.02;margin:.3rem 0 .8rem}
  .hero__sub{font-size:.95rem;margin-bottom:1.1rem}
  /* FEATURED bar pinned to the bottom over the dark scrim, disclaimer just below it */
  .hero__swap{position:absolute;left:0;right:0;bottom:62px;margin:0;padding:0 20px;z-index:3;
    display:flex;flex-wrap:nowrap;align-items:center;gap:.4rem .5rem}
  .hero__swap-label{color:#f2efe6;opacity:.9}
  .hero__compliance{position:absolute;left:50%;transform:translateX(-50%);bottom:12px;margin:0;
    white-space:nowrap;font-size:.56rem;max-width:none;z-index:4;color:#eae7dc}
  .hero__compliance svg{stroke:#eae7dc}
  .hero__copy{max-width:none;padding-block:0}
  .hero__title{font-size:clamp(2.5rem,11vw,3.3rem);margin:.3rem 0 .9rem}
  .hero__sub{font-size:1rem;margin-bottom:1.4rem}
  .hero__swap{margin-top:1.6rem}
}

/* Hero emphasis word ("Serenity") — darker olive so it holds contrast over the
   bright hero sky (the cream-bg section titles keep the lighter --olive accent). */
.hero__title em{color:#4a4e2b}

/* =====================================================================
   INNER-PAGE HERO — align to the home page's clean cream editorial look.
   The legacy inner-page hero stacked a textured bg image (hero-bg-v7.jpg),
   a cream→guide-cream→guide-stone gradient, a cream/tan radial overlay, a
   brown (guide-umber) title and an extra body gradient band — reading as
   "too many colors". Flatten to one clean cream surface + ink title so
   every page matches the home page's palette. Loads after main.css.
   ===================================================================== */
body.oasis-redesign:not(.home) .ol-page-hero{background:var(--cream-50)!important}
body.oasis-redesign:not(.home) .ol-page-hero::before{
  background:var(--cream-50)!important;background-image:none!important;opacity:1!important}
body.oasis-redesign:not(.home) .ol-page-hero::after{
  background:linear-gradient(180deg,#f5f3ee 0%,#f2efe8 100%)!important}
/* Title → home ink (was brown guide-umber). */
body.oasis-redesign:not(.home) .ol-page-title,
body.oasis-redesign .ol-page-title--about,
body.oasis-redesign:not(.home) .ol-page-title--about,
body.oasis-redesign .ol-page-title--editorial,
body.oasis-redesign:not(.home) .ol-page-title--editorial{color:var(--ink)!important}
/* Eyebrow pill → clean cream + forest text + subtle olive border (matches home kicker/pills). */
body.oasis-redesign:not(.home) .ol-page-eyebrow{
  background:color-mix(in oklab,var(--olive) 8%,var(--cream-50))!important;
  border:1px solid color-mix(in oklab,var(--olive) 26%,transparent)!important;
  color:var(--forest-700)!important;box-shadow:none!important}
/* Remove the extra gradient band on the page body so it's one clean cream surface. */
body.oasis-redesign:not(.home) .ol-page-body,
body.oasis-redesign:not(.home) .ol-shop-body{background:var(--cream-50)!important}
/* Base page surface was a greyer cream (rgb 237,234,227) with a radial tint on the shell,
   showing as a grey band between header and hero. Flatten to clean cream-50 everywhere. */
body.oasis-redesign:not(.home){background:var(--cream-50)!important}
body.oasis-redesign:not(.home) .ol-page-shell{background-image:none!important;background-color:var(--cream-50)!important;
  padding-top:clamp(1.25rem,2.5vw,2rem)!important}
/* Product + shop shells carried the same redundant ~138px header-offset padding below the
   sticky header. Trim to the same tight value. `html` prefix (0,3,2) outranks the tying
   rules in main.css + product-page.css (0,3,1) regardless of load order. */
html body.oasis-redesign.single-product .ol-product-shell,
html body.oasis-redesign .ol-shop-shell{padding-top:clamp(1.25rem,2.5vw,2rem)!important}
/* .ol-shop-shell also had a 106px !important padding + muddy guide-tan/stone gradient at
   (0,3,1) in main.css that beat the rule above (esp. on mobile). Higher specificity wins. */
html body.oasis-redesign:not(.home) .ol-shop-shell{
  padding-top:clamp(1.25rem,2.5vw,2rem)!important;background:var(--cream-50)!important}

/* Tighten the wasted vertical space in the inner-page hero. The hero was a 460px
   flex box centering its content (dead space top+bottom) on most pages; only a few were
   collapsed. Make EVERY inner hero compact + top-aligned so spacing is uniform + tight. */
/* Include .ol-page-shell for higher specificity (0,4,1) so these beat the page-specific
   `.ol-page-my-account/.ol-page-certifications/... .ol-page-hero__inner` rules that set a
   ~98px header-offset padding-top (which otherwise tie on specificity and win by order). */
body.oasis-redesign:not(.home) .ol-page-shell .ol-page-hero{min-height:0!important;align-items:flex-start!important}
body.oasis-redesign:not(.home) .ol-page-shell .ol-page-hero__inner{
  padding-top:clamp(1.75rem,3.5vw,2.75rem)!important;
  padding-bottom:clamp(1.4rem,3vw,2.4rem)!important}

/* Trust pills → clean white with a soft shadow (was outlined/transparent). */
body.oasis-redesign:not(.home) .ol-page-proofline span{
  background:#fff!important;border-color:rgba(53,53,37,.08)!important;
  box-shadow:0 10px 26px -18px rgba(20,20,12,.4)!important;color:var(--forest-900)!important}

/* About-page image callout tags — floating white pills over the warm vial photo,
   restoring the "diagram points" in an on-brand, crisp way (real text, not baked-in). */
body.oasis-redesign .ol-about-hero__figure{position:relative;overflow:visible}
.ol-about-tag{position:absolute;z-index:3;display:inline-flex;align-items:center;
  background:#fff;color:var(--forest-900);font-family:var(--font-ui);font-size:.72rem;font-weight:600;
  letter-spacing:.05em;text-transform:uppercase;padding:.5rem .85rem;border-radius:100px;white-space:nowrap;
  box-shadow:0 14px 34px -16px rgba(20,20,12,.45);border:1px solid rgba(53,53,37,.06)}
.ol-about-tag::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--olive);margin-right:.5rem;flex:none}
.ol-about-tag--tl{top:9%;left:-5%}
.ol-about-tag--bl{bottom:20%;left:-5%}
.ol-about-tag--tr{top:20%;right:-5%}
.ol-about-tag--br{bottom:9%;right:-5%}
@media (max-width:760px){
  .ol-about-tag{font-size:.6rem;padding:.4rem .65rem}
  .ol-about-tag--tl,.ol-about-tag--bl{left:2%}
  .ol-about-tag--tr,.ol-about-tag--br{right:2%}
}

/* Shop: align the categories panel top with the product-card grid (was offset ~48px too
   low by a leftover `top:126px` on the now-position:relative sticky box). */
html body.oasis-redesign .ol-shop-shell .ol-shop-sidebar__sticky{top:78px!important}
@media (max-width:900px){
  html body.oasis-redesign .ol-shop-shell .ol-shop-sidebar__sticky{top:0!important}
}

/* Mobile/tablet: product/shop/page shells RE-ADD a ~98–114px header-offset padding inside
   @media(max-width:900/1024/540) blocks (main.css + product-page.css). Neutralize them at
   those breakpoints so the header→content gap stays tight on mobile like desktop. */
@media (max-width:1024px){
  /* main.css's mobile rule is `body.oasis-redesign:not(.home).single-product .ol-product-shell`
     = (0,4,1); include :not(.home) + html here → (0,4,2) to win. */
  html body.oasis-redesign:not(.home).single-product .ol-product-shell{padding-top:clamp(1.1rem,3vw,1.9rem)!important}
  html body.oasis-redesign:not(.home) .ol-shop-shell{padding-top:clamp(1.1rem,3vw,1.9rem)!important}
  html body.oasis-redesign:not(.home) .ol-page-shell{padding-top:clamp(1.1rem,3vw,1.9rem)!important}
}

/* ============================================================================
   Mobile product-page polish (2026-07-20)
   1. Sticky bar: legacy `@media(max-width:640px) body.oasis-redesign:not(.home)
      button{width:100%}` (0,2,2) forced the sticky ATC full-width, collapsing the
      price to 0. Restore intrinsic width so price + button sit side by side.
   2. Buy box felt bulky: qty(142)+ATC wrapped to two rows and controls were 52px.
      Put them on ONE row and trim to 48px.
   ========================================================================== */
@media (max-width:900px){
  /* sticky bar button must NOT be full width — beat the blanket button rule */
  html body.oasis-redesign .ol-product-sticky__btn,
  html body.oasis-redesign.single-product .ol-product-sticky__btn{
    width:auto!important;flex:0 0 auto!important;max-width:60%!important}
  html body.oasis-redesign .ol-product-sticky__price,
  html body.oasis-redesign.single-product .ol-product-sticky__price{
    flex:1 1 auto!important;min-width:0!important}
}
/* NOTE: mobile buy-box compaction (qty+ATC one row) lives in product-page.css
   because that sheet loads AFTER this one and would otherwise win on equal spec. */

/* =====================================================================
   HEADER PRODUCT SEARCH — icon button + slide-down overlay w/ live results
   ===================================================================== */
.header__action--search{padding:.55rem;border-radius:40px}
.header__action--search svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
/* The search entry is a <button>, so main.css's `body.oasis-redesign:not(.home)
   button{background:forest}` blanket rule painted it as a forest circle on every
   inner page — different from the home header and from the account/cart <a>
   icons. Force it back to a plain icon button everywhere (spec 0,3,1 / hover
   0,4,1 beats the blanket 0,2,2 / 0,3,2). */
body.oasis-redesign .header__action--search,
body.oasis-redesign:not(.home) .header__action--search{
  min-height:0!important;padding:.55rem!important;border:1px solid transparent!important;border-radius:40px!important;
  background:none!important;background-color:transparent!important;color:var(--ink-soft)!important;
  box-shadow:none!important;letter-spacing:normal!important;text-transform:none!important;font-size:inherit!important}
body.oasis-redesign:not(.home) .header__action--search:hover{
  background:rgba(255,255,255,.55)!important;border-color:rgba(255,255,255,.8)!important;
  color:var(--forest-900)!important;transform:none!important;box-shadow:none!important}

.ol-search{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;align-items:stretch;
  background:rgba(20,21,15,.34);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  opacity:0;visibility:hidden;transition:opacity .26s var(--ease),visibility .26s var(--ease)}
.ol-search.is-open{opacity:1;visibility:visible}
.ol-search[hidden]{display:none}
.ol-search__inner{background:var(--cream-50);border-bottom:1px solid var(--line);
  box-shadow:0 34px 64px -34px rgba(20,21,15,.55);padding:1.6rem 26px 1.5rem;
  transform:translateY(-18px);transition:transform .3s var(--ease);max-width:100%}
.ol-search.is-open .ol-search__inner{transform:translateY(0)}
.ol-search__form{display:flex;align-items:center;gap:.85rem;width:100%;max-width:var(--wrap);margin:0 auto;
  border-bottom:2px solid var(--forest-900);padding-bottom:.8rem}
.ol-search__glyph{width:26px;height:26px;fill:none;stroke:var(--forest-700);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
.ol-search__input{flex:1;min-width:0;border:0;background:transparent;font-family:var(--font-display);
  font-weight:500;font-size:clamp(1.35rem,3.4vw,2rem);letter-spacing:-.01em;color:var(--ink);outline:none;padding:0}
.ol-search__input::placeholder{color:var(--muted);opacity:.75}
.ol-search__input::-webkit-search-cancel-button,.ol-search__input::-webkit-search-decoration{-webkit-appearance:none;appearance:none}
.ol-search__close{flex:none;display:inline-grid;place-items:center;width:40px;height:40px;padding:0;
  border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--ink-soft);cursor:pointer;
  transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease)}
.ol-search__close:hover{background:var(--forest-900);border-color:var(--forest-900);color:var(--cream-50)}
.ol-search__close svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}

.ol-search__results{width:100%;max-width:var(--wrap);margin:0 auto;max-height:min(62vh,560px);overflow-y:auto}
.ol-search__results.is-visible{margin-top:1.1rem}
.ol-search__results.is-loading{opacity:.55}
.ol-search__list{display:grid;gap:.25rem;list-style:none;margin:0;padding:0}
.ol-search__item a{display:flex;align-items:center;gap:.9rem;padding:.55rem .6rem;border-radius:12px;
  text-decoration:none;transition:background .18s var(--ease)}
.ol-search__item a:hover{background:rgba(83,87,64,.09)}
.ol-search__thumb{flex:none;width:54px;height:54px;border-radius:9px;overflow:hidden;
  background:radial-gradient(circle at 50% 40%,#fff,#ece7dc);display:grid;place-items:center}
.ol-search__thumb img{width:100%;height:100%;object-fit:contain;padding:5px}
.ol-search__noimg{width:100%;height:100%;background:var(--cream-100)}
.ol-search__meta{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.ol-search__name{font-family:var(--font-ui);font-weight:600;font-size:.92rem;color:var(--ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ol-search__price{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-ui);
  font-size:.82rem;font-weight:600;color:var(--forest-700)}
.ol-search__price .amount{font-weight:600}
.ol-search__tag{font-size:.54rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--cream-50);background:var(--forest-900);padding:.18em .5em;border-radius:999px}
.ol-search__all{display:inline-block;margin-top:.9rem;font-family:var(--font-ui);font-weight:600;
  font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;color:var(--forest-900);
  border-bottom:1.5px solid currentColor;padding-bottom:2px}
.ol-search__all:hover{color:var(--forest-700)}
.ol-search__empty{font-family:var(--font-ui);color:var(--muted);font-size:.92rem;margin:.4rem 0 0;padding:.4rem .6rem}
body.ol-search-open{overflow:hidden}

@media (max-width:767px){
  .ol-search__inner{padding:1.1rem 18px 1.15rem}
  .ol-search__glyph{width:22px;height:22px}
  .ol-search__thumb{width:46px;height:46px}
}

