/*
Theme Name:  DENEX Child
Description: DENEX brand child theme for GeneratePress
Template:    generatepress
Version:     1.1.0
*/

/* ================================================
   Design Tokens
   ================================================ */
:root {
  /* Colors */
  --navy:         #0d243d;
  --accent:       #cc5500;
  --accent-dark:  #b34a00;
  --bg:           #f5f7fa;
  --surface:      #ffffff;
  --text:         #1a1a1a;
  --text-muted:   #777777;
  --text-light:   #555555;
  --border:       #e0e3e8;
  --disabled:     #999999;

  /* Layout */
  --radius:        4px;
  --content-width: 1200px;

  /* Typography */
  --font-heading: 'Public Sans', sans-serif;
  --font-body:    'Inter', sans-serif;
  --font-label:   700 12px/1.3 var(--font-body);

  /* Shadows */
  --shadow-sm:    0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
  --shadow-md:    0 4px 12px rgba(0,0,0,0.08);
  --shadow-lg:    0 12px 32px rgba(0,0,0,0.12), 0 4px 8px rgba(0,0,0,0.06);

  /* Easing */
  --ease-out:     cubic-bezier(0.4, 0, 0.2, 1);

  /* Category gradients */
  --cat-gradient-start:       #152d47;
  --cat-gradient-end:         #0a1e30;
  --cat-gradient-hover-start: #1e3e5e;
  --cat-gradient-hover-end:   #122638;

  /* Accent light (product ATC hover) */
  --accent-light: #e06a20;

  /* Strain badges */
  --badge-sativa: #d97706;
  --badge-indica: #6d28d9;
  --badge-hybrid: #059669;
  --badge-sdh: #ea580c;
  --badge-idh: #7c3aed;

  /* Footer */
  --navy-deep: #081a2d;
}

/* ================================================
   Utilities
   ================================================ */

/* Prevent horizontal overflow from archive hero full-bleed on shop/category pages */
body.post-type-archive-product #page,
body.tax-product_cat #page { overflow-x: hidden; }

/* Match staging body background for homepage — hero gap fills with navy */
body.page-homepage-v2 { background-color: var(--navy); }

/* Hide GP default navigation — custom DENEX header (GP Element) replaces it */
#site-navigation:not(.slideout-navigation) { display: none !important; }

/* Full-width breakout from a constrained content column */
.full-bleed {
  width: 100vw;
  margin-left: calc(-50vw + 50%);
  overflow-x: hidden;
}

/* Shared section padding */
.denex-trust-bar,
.denex-featured-products,
.denex-categories,
.denex-review-carousel,
.denex-brand-story,
.denex-newsletter {
  padding: 80px 24px;
}
@media (max-width: 768px) {
  .denex-trust-bar,
  .denex-featured-products,
  .denex-categories,
  .denex-review-carousel,
  .denex-brand-story,
  .denex-newsletter {
    padding: 48px 16px;
  }
}

/* Shared full-bleed sections */
.denex-trust-bar,
.denex-featured-products,
.denex-categories,
.denex-review-carousel,
.denex-brand-story,
.denex-newsletter {
  width: 100vw;
  margin-left: calc(-50vw + 50%);
}

/* Centered content column */
.container      { max-width: var(--content-width); margin: 0 auto; }

/* Section heading */
.section-heading {
  text-align: center;
  font-family: var(--font-heading);
  font-size: 28px;
  font-weight: 800;
  color: var(--text);
  margin-bottom: 40px;
  letter-spacing: -0.01em;
  -webkit-font-smoothing: antialiased;
}

/* Shared button base (hero CTAs) */
.btn-accent,
.btn-secondary-light {
  border-radius: var(--radius);
  font-size: 14px;
  font-family: var(--font-body);
  font-weight: 700;
  padding: 14px 32px;
  cursor: pointer;
  text-decoration: none;
  display: inline-block;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  transition: background 0.2s ease, color 0.2s ease, transform 0.15s ease, border-color 0.2s ease;
}

.btn-accent {
  background: var(--accent);
  color: #fff;
  border: 1.5px solid transparent;
}
.btn-accent:hover {
  background: #fff;
  color: var(--accent);
  border-color: #fff;
  transform: translateY(-1px);
}
.btn-accent:active {
  background: rgba(255,255,255,0.08);
  transform: translateY(0) scale(0.98);
}
.btn-accent:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

.btn-secondary-light {
  background: #fff;
  color: var(--navy);
  border: 1.5px solid var(--navy);
}
.btn-secondary-light:hover {
  background: var(--navy);
  color: #fff;
  border-color: var(--navy);
  transform: translateY(-1px);
}

/* Text links on dark backgrounds */
.link-on-dark {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color 0.15s ease;
}
.link-on-dark:hover { color: var(--accent-light); }


/* ================================================
   Phase 4: Header & Navigation
   ================================================ */

/* ── Site Header wrapper ── */
.denex-site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 999;
  background-color: var(--navy);
  border-bottom: 2px solid var(--accent);
  box-shadow: 0 2px 12px rgba(204,85,0,0.25);
  transition: background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}

/* Homepage hero: transparent until scrolled */
.home .denex-site-header:not(.denex-header-scrolled) {
  background-color: transparent;
  border-bottom-color: transparent;
  box-shadow: none;
}

/* Scrolled state — solid on all pages */
.denex-site-header.denex-header-scrolled {
  background-color: var(--navy);
  border-bottom-color: var(--accent);
  box-shadow: 0 4px 20px rgba(0,0,0,0.15), 0 2px 12px rgba(204,85,0,0.25);
}

/* Push content below fixed header */
.home .site-content { padding-top: 0; }

/* ── Desktop 3-column header ── */
.denex-desktop-header {
  display: grid;
  grid-template-columns: 200px 1fr auto;
  align-items: center;
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 24px;
  height: 72px;
  transition: height 0.3s ease;
}
.denex-site-header.denex-header-scrolled .denex-desktop-header { height: 60px; }

.denex-header-logo   { justify-self: start; }
.denex-header-nav-center { justify-self: center; }
.denex-header-actions {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 20px;
}

/* ── Logo ── */
.denex-logo {
  display: block;
  margin: 0;
  flex-shrink: 0;
}
.denex-logo img {
  height: 60px;
  width: auto;
  display: block;
  transition: height 0.3s cubic-bezier(0.4,0,0.2,1);
}
.denex-site-header.denex-header-scrolled .denex-logo img { height: 40px; }

/* ── Primary Navigation ── */
.denex-primary-nav .denex-nav-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: 28px;
  align-items: center;
}
.denex-primary-nav .denex-nav-list > li > a {
  color: #fff;
  text-decoration: none;
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  white-space: nowrap;
  border-bottom: 2px solid transparent;
  padding-bottom: 2px;
  transition: color 0.2s ease, border-color 0.2s ease;
}
.denex-primary-nav .denex-nav-list > li > a:hover,
.denex-primary-nav .denex-nav-list > li > a:focus {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

/* ── Dropdown submenus ── */
.denex-primary-nav .denex-nav-list .menu-item-has-children { position: relative; }
.denex-primary-nav .denex-nav-list .sub-menu {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 200px;
  background-color: var(--navy);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: var(--radius);
  padding: 6px 0;
  box-shadow: 0 12px 32px rgba(0,0,0,0.22), 0 4px 8px rgba(0,0,0,0.10);
  z-index: 100;
  list-style: none;
  margin: 0;
}
.denex-primary-nav .denex-nav-list .menu-item-has-children:hover > .sub-menu,
.denex-primary-nav .denex-nav-list .menu-item-has-children:focus-within > .sub-menu {
  display: block;
}
.denex-primary-nav .denex-nav-list .sub-menu li a {
  display: block;
  padding: 10px 18px;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 400;
  color: rgba(255,255,255,0.82);
  text-decoration: none;
  text-transform: none;
  white-space: nowrap;
  transition: color 0.15s ease, background-color 0.15s ease;
}
.denex-primary-nav .denex-nav-list .sub-menu li a:hover {
  color: #fff;
  background-color: rgba(255,255,255,0.06);
}

/* ── Search ── */
.denex-search-wrap { position: relative; }
.denex-search-toggle {
  display: flex;
  align-items: center;
  background: none;
  border: none;
  color: #fff;
  cursor: pointer;
  padding: 4px;
  transition: color 0.15s ease;
  -webkit-tap-highlight-color: transparent;
}
.denex-search-toggle:hover { color: var(--accent); background: none; }
.denex-search-dropdown {
  display: none;
  position: absolute;
  right: 0;
  top: calc(100% + 14px);
  width: 280px;
  background-color: var(--navy);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: var(--radius);
  padding: 12px;
  box-shadow: 0 12px 32px rgba(0,0,0,0.22);
  z-index: 100;
}
.denex-search-dropdown.is-open { display: block; }
.denex-search-dropdown input[type="search"],
.denex-search-dropdown input[type="text"] {
  width: 100%;
  background: rgba(255,255,255,0.1);
  border: 1px solid rgba(255,255,255,0.2);
  border-radius: var(--radius);
  color: #fff;
  padding: 10px 12px;
  font-family: var(--font-body);
  font-size: 14px;
  outline: none;
  box-sizing: border-box;
}
.denex-search-dropdown input::placeholder { color: rgba(255,255,255,0.45); }
.denex-search-dropdown input:focus { border-color: rgba(255,255,255,0.4); }
/* Hide WC search submit — icon implies action */
.denex-search-dropdown .woocommerce-product-search button[type="submit"],
.denex-search-dropdown .search-form .search-submit { display: none; }

/* ── Cart icon ── */
.denex-cart-link {
  position: relative;
  display: flex;
  align-items: center;
  color: #fff;
  text-decoration: none;
  transition: color 0.15s ease;
}
.denex-cart-link:hover { color: var(--accent); }
.denex-cart-icon { width: 24px; height: 24px; }
.denex-cart-count {
  position: absolute;
  top: -8px;
  right: -10px;
  background-color: var(--accent);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  min-width: 18px;
  height: 18px;
  border-radius: 9px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 4px;
}

/* Hide cart badge spans when empty (always rendered for WC fragment targeting) */
.denex-cart-count:empty,
.denex-mobile-cart-count:empty,
.denex-mobile-top-cart-count:empty { display: none; }

/* ── Mobile top bar ── */
.denex-mobile-top-bar {
  display: none;
  align-items: center;
  justify-content: space-between;
  padding: 0 16px;
  height: 56px;
  position: relative;
  background: var(--navy);
  z-index: 100;
}
.denex-mobile-top-logo {
  display: flex;
  align-items: center;
  text-decoration: none;
}
.denex-mobile-top-logo img {
  height: 36px;
  width: auto;
  display: block;
}
.denex-mobile-top-logo-text {
  font-family: var(--font-heading);
  font-size: 18px;
  font-weight: 800;
  color: #fff;
  letter-spacing: -0.02em;
}
.denex-mobile-top-actions {
  display: flex;
  align-items: center;
  gap: 18px;
}
.denex-mobile-top-btn {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  text-decoration: none;
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px;
  transition: color 0.15s ease;
  -webkit-tap-highlight-color: transparent;
}
.denex-mobile-top-btn:hover,
.denex-mobile-top-btn:active { color: var(--accent); }
.denex-mobile-top-btn svg { stroke: currentColor; }
.denex-mobile-top-cart-count {
  position: absolute;
  top: -4px;
  right: -6px;
  background-color: var(--accent);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  line-height: 1;
  min-width: 16px;
  height: 16px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 3px;
}

/* Homepage: top bar overlays hero transparently */
.home .denex-mobile-top-bar {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  background: transparent;
}

/* ── Mobile bottom navigation ── */
.denex-mobile-nav {
  display: none;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: 60px;
  padding-bottom: env(safe-area-inset-bottom, 0px);
  background: var(--navy);
  z-index: 998;
  grid-template-columns: repeat(4, 1fr);
  align-items: center;
  justify-items: center;
  border-top: 1px solid rgba(255,255,255,0.1);
}
.denex-mobile-nav-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  color: var(--surface);
  text-decoration: none;
  font-size: 10px;
  font-family: var(--font-body);
  font-weight: 500;
  padding: 6px 0;
  background: none;
  border: none;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.denex-mobile-nav-item:hover,
.denex-mobile-nav-item:active { color: var(--accent); }
.denex-mobile-nav-item svg { stroke: currentColor; }
.denex-mobile-nav-cart { position: relative; }
.denex-mobile-cart-count {
  position: absolute;
  top: 0;
  right: 50%;
  transform: translateX(14px);
  background-color: var(--accent);
  color: var(--surface);
  font-size: 10px;
  font-weight: 700;
  line-height: 1;
  min-width: 16px;
  height: 16px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 3px;
}

/* ── Mobile breakpoint ── */
@media (max-width: 768px) {
  /* Hide fixed desktop header wrapper so it doesn't ghost-overlay the mobile top bar */
  .denex-site-header    { display: none; }
  .denex-desktop-header { display: none !important; }
  .denex-mobile-top-bar { display: flex; }
  .denex-mobile-nav     { display: grid; transform: translateY(100%); transition: transform 0.25s ease; }

  /* Bottom nav visible state — toggled by IntersectionObserver JS */
  .denex-mobile-nav--visible { transform: translateY(0); }

  .home .site-content { padding-top: 0; }

  /* Body bottom padding — only when bottom nav is visible (toggled by JS) */
  body.denex-bottom-nav-visible {
    padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px));
  }
}

/* ── Offside / Slideout Menu (GP Premium) ── */
.slideout-navigation.main-navigation {
  background-color: var(--navy);
}
.slideout-navigation.main-navigation .main-nav ul li a {
  color: #fff;
  font-family: var(--font-body);
  font-size: 16px;
  padding: 14px 20px;
  border-bottom: 1px solid rgba(255,255,255,0.1);
}
.slideout-navigation.main-navigation .main-nav ul li a:hover,
.slideout-navigation.main-navigation .main-nav ul li a:focus {
  color: var(--accent);
}
.slideout-navigation.main-navigation .main-nav ul ul {
  background: rgba(0,0,0,0.15);
}
.slideout-navigation.main-navigation .main-nav ul ul li a {
  color: rgba(255,255,255,0.85);
  font-size: 14px;
  padding-left: 36px;
}
.slideout-navigation.main-navigation .main-nav ul ul li a:hover,
.slideout-navigation.main-navigation .main-nav ul ul li a:focus {
  color: var(--accent);
}
.slideout-navigation button.slideout-exit {
  color: #fff;
}

/* ================================================
   Phase 5: Homepage Sections
   ================================================ */

/* ── Trust Bar ── */
.denex-trust-bar { background: var(--navy); }
.denex-trust-items {
  list-style: none;
  margin: 0 auto;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  max-width: var(--content-width);
  text-align: center;
}
.denex-trust-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  color: #fff;
  padding: 0 16px;
  border-right: 1px solid rgba(255,255,255,0.10);
}
.denex-trust-item:last-child { border-right: none; }
.denex-trust-item svg {
  width: 28px;
  height: 28px;
  stroke: currentColor;
  flex-shrink: 0;
}
.denex-trust-item strong {
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 600;
  display: block;
}
.denex-trust-text span {
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 400;
  color: rgba(255,255,255,0.75);
}
@media (max-width: 768px) {
  .denex-trust-items { grid-template-columns: repeat(2, 1fr); gap: 20px; }
}

/* ── Featured Products (section bg only) ── */
.denex-featured-products { background: var(--bg); }
.denex-view-all { text-align: center; margin-top: 24px; }
.denex-view-all a {
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 600;
  color: var(--accent);
  text-decoration: none;
  transition: color 0.15s ease;
}
.denex-view-all a:hover { color: var(--accent-dark); }

/* ── Featured Categories ── */
.denex-categories { background: var(--navy); }
.denex-categories .section-heading {
  font-size: 32px;
  font-weight: 900;
  color: #fff;
  letter-spacing: -0.02em;
  text-transform: none;
}
.denex-category-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  max-width: var(--content-width);
  margin: 0 auto;
}
/* Suppress WordPress wpautop injections */
.denex-category-grid > p,
.denex-category-grid > br { display: none; }
@media (max-width: 768px) {
  .denex-category-grid { grid-template-columns: repeat(2, 1fr); }
}
.denex-category-card {
  display: block;
  text-decoration: none;
  border-left: 3px solid var(--accent);
  background: linear-gradient(160deg, #152d47 0%, #0a1e30 100%);
  border-radius: var(--radius);
  padding: 20px 16px 18px;
  transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
.denex-category-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 32px rgba(0,0,0,0.30);
  background: linear-gradient(160deg, #1e3e5e 0%, #122638 100%);
}
.denex-category-num {
  display: block;
  font-family: var(--font-heading);
  font-size: 11px;
  font-weight: 900;
  color: var(--accent);
  letter-spacing: 0.08em;
  margin-bottom: 10px;
}
.denex-category-name {
  display: block;
  font-family: var(--font-heading);
  font-size: 20px;
  font-weight: 900;
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  line-height: 1.1;
  margin-bottom: 8px;
}
.denex-category-tagline {
  display: block;
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 400;
  color: rgba(255,255,255,0.50);
  line-height: 1.4;
}
.denex-category-arrow {
  display: block;
  margin-top: 16px;
  font-size: 11px;
  font-weight: 600;
  color: rgba(255,255,255,0.25);
  transition: color 0.2s ease;
  letter-spacing: 0.04em;
}
.denex-category-card:hover .denex-category-arrow { color: var(--accent); }

/* ── Review Carousel ── */
.denex-review-carousel { background: #fff; }
.denex-review-carousel .section-heading {
  font-size: 32px;
  font-weight: 900;
  letter-spacing: -0.02em;
  margin-bottom: 8px;
}
.denex-reviews-subtext {
  text-align: center;
  font-family: var(--font-body);
  font-size: 16px;
  color: var(--text-muted);
  margin-bottom: 40px;
}
.denex-reviews-wrapper {
  position: relative;
  max-width: var(--content-width);
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 16px;
}
.denex-reviews-track-outer {
  overflow: hidden;
  flex: 1;
}
.denex-reviews-track {
  display: flex;
  gap: 20px;
  transition: transform 0.35s cubic-bezier(0.4,0,0.2,1);
}
.denex-review-card {
  flex: 0 0 calc((100% - 40px) / 3);
  background: #fff;
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  padding: 24px;
  box-sizing: border-box;
}
.denex-review-stars {
  font-size: 16px;
  color: var(--accent);
  margin-bottom: 12px;
  display: block;
}
.denex-review-quote {
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 400;
  color: #333;
  line-height: 1.6;
  font-style: italic;
  margin-bottom: 16px;
}
.denex-review-author {
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 600;
  color: #999;
}
.denex-carousel-prev,
.denex-carousel-next {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: #fff;
  border: 1.5px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.denex-carousel-prev:hover,
.denex-carousel-next:hover {
  background: var(--navy);
  border-color: var(--navy);
}
.denex-carousel-prev svg,
.denex-carousel-next svg {
  width: 16px;
  height: 16px;
  stroke: var(--navy);
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.denex-carousel-prev:hover svg,
.denex-carousel-next:hover svg { stroke: #fff; }
.denex-carousel-prev[disabled],
.denex-carousel-next[disabled] { opacity: 0.3; cursor: not-allowed; }
.denex-carousel-prev[disabled]:hover,
.denex-carousel-next[disabled]:hover {
  background: #fff;
  border-color: var(--border);
}
.denex-carousel-prev[disabled]:hover svg,
.denex-carousel-next[disabled]:hover svg { stroke: var(--navy); }
@media (max-width: 768px) {
  .denex-review-carousel { overflow: hidden; }
  .denex-reviews-track-outer { width: 100%; max-width: 100vw; }
  .denex-reviews-wrapper { flex-direction: column; gap: 20px; }
  .denex-review-card { flex: 0 0 100%; }
  /* Flanking arrows hidden on mobile; show centered nav below track */
  .denex-reviews-wrapper > .denex-carousel-prev,
  .denex-reviews-wrapper > .denex-carousel-next { display: none; }
  .denex-reviews-nav-mobile {
    display: flex;
    gap: 12px;
    justify-content: center;
  }
}
@media (min-width: 768px) {
  .denex-reviews-nav-mobile { display: none; }
}

/* ── Brand Story ── */
.denex-brand-story { background: var(--bg); text-align: center; }
.denex-brand-story-inner { max-width: 680px; margin: 0 auto; }
.denex-brand-divider {
  width: 48px;
  height: 2px;
  background: var(--accent);
  margin: 0 auto 24px;
  border: none;
}
.denex-brand-story .section-heading { text-transform: none; margin-bottom: 24px; }
.denex-brand-story p {
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 400;
  color: var(--text-light);
  line-height: 1.7;
}

/* ── Newsletter ── */
.denex-newsletter { background: var(--navy); text-align: center; }
.denex-newsletter-inner { max-width: 560px; margin: 0 auto; }
.denex-newsletter h2 {
  font-family: var(--font-heading);
  font-size: 28px;
  font-weight: 800;
  color: #fff;
  margin-bottom: 12px;
  letter-spacing: -0.01em;
  -webkit-font-smoothing: antialiased;
}
.denex-newsletter p {
  font-family: var(--font-body);
  font-size: 16px;
  color: rgba(255,255,255,0.80);
  line-height: 1.5;
  margin-bottom: 32px;
}
/* Klaviyo button override */
.denex-newsletter .klaviyo-form button[type="submit"],
.denex-newsletter .klaviyo-form button[type="button"],
.denex-newsletter [data-testid="klaviyo-form"] button {
  background: var(--accent) !important;
  border-radius: var(--radius) !important;
}

/* ================================================
   Phase 5: GP Layout Overrides (homepage)
   ================================================ */

/* Hide GP page title, featured image, sidebar on homepage */
body.home .entry-title,
body.home .post-image,
body.home .featured-image  { display: none; }
body.home #right-sidebar,
body.home .sidebar         { display: none; }
body.home .content-area    { width: 100%; max-width: 100%; }
body.home #content         { display: block; }
/* Remove GP article padding so hero sits flush under header */
body.home .inside-article  { padding: 0; }
body.home .site-main       { margin-top: 0; margin-bottom: 0; }

/* ================================================
   Global Button System
   ================================================ */
.btn-primary,
.btn-secondary,
.btn-ghost {
  font: 700 12px/1.3 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border-radius: var(--radius);
  padding: 16px 32px;
  cursor: pointer;
  display: inline-block;
  text-align: center;
  text-decoration: none;
}
.btn-primary:focus-visible,
.btn-secondary:focus-visible,
.btn-ghost:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

.btn-primary {
  background: var(--accent);
  color: #fff;
  border: 1.5px solid var(--accent);
  transition: background 0.2s ease, color 0.2s ease, transform 0.15s ease, border-color 0.2s ease;
}
.btn-primary:hover {
  background: #fff;
  color: var(--accent);
  border-color: var(--accent);
  transform: translateY(-1px);
}

.btn-secondary {
  background: var(--navy);
  color: #fff;
  border: 1.5px solid var(--navy);
  transition: background 0.2s ease, color 0.2s ease, transform 0.15s ease, border-color 0.2s ease;
}
.btn-secondary:hover {
  background: #fff;
  color: var(--navy);
  border-color: var(--navy);
  transform: translateY(-1px);
}

.btn-ghost {
  background: transparent;
  color: var(--text-light);
  border: none;
  transition: color 0.2s ease;
}
.btn-ghost:hover { color: var(--text); }

/* ================================================
   PHASE 6.1: PRODUCT PAGES POLISH
   (replaces Phase 6 product pages block entirely)
   ================================================ */

/* -- 0. WC Notice Rebrand -- */
body.single-product .woocommerce-notices-wrapper {
  padding: 16px 24px 0;
}
body.single-product .woocommerce-notices-wrapper .woocommerce-message,
body.single-product .woocommerce-notices-wrapper .woocommerce-info {
  background: var(--navy);
  color: #fff;
  border: none;
  border-radius: var(--radius);
  padding: 14px 20px;
  font-family: var(--font-body);
  font-size: 14px;
  display: flex;
  align-items: center;
  gap: 12px;
}
body.single-product .woocommerce-notices-wrapper .woocommerce-message::before,
body.single-product .woocommerce-notices-wrapper .woocommerce-info::before {
  display: none;
}
body.single-product .woocommerce-notices-wrapper .woocommerce-message a.button,
body.single-product .woocommerce-notices-wrapper .woocommerce-info a.button {
  background: var(--accent);
  color: #fff;
  border: none;
  border-radius: var(--radius);
  padding: 8px 18px;
  font: 700 12px/1 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-left: auto;
  flex-shrink: 0;
}
body.single-product .woocommerce-notices-wrapper .woocommerce-message a.button:hover,
body.single-product .woocommerce-notices-wrapper .woocommerce-info a.button:hover {
  background: #fff;
  color: var(--accent);
  border-color: #fff;
}

/* -- 1. GP Layout Override -- */
body.single-product .reset_variations_alert {
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip-path: inset(50%) !important;
}
body.single-product .inside-article { padding: 0; }
body.single-product .site-main { margin-top: 0; margin-bottom: 0; }
body.single-product .entry-header .entry-title { display: none; }
body.single-product #right-sidebar,
body.single-product .sidebar { display: none; }
body.single-product .content-area { width: 100%; max-width: 100%; }

/* -- 2. Breadcrumb -- */
body.single-product .woocommerce-breadcrumb {
  background: var(--bg);
  padding: 16px 0;
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 400;
  color: var(--text-light);
  letter-spacing: normal;
}
body.single-product .woocommerce-breadcrumb a {
  color: var(--text-light);
  text-decoration: none;
  transition: color 0.2s;
}
body.single-product .woocommerce-breadcrumb a:hover { color: var(--navy); }
body.single-product .woocommerce-breadcrumb .separator {
  margin: 0 8px;
  opacity: 0.4;
}

/* -- 3. Product Hero (50/50 grid) -- */
body.single-product div.product {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 48px 24px 64px;
  background: var(--surface);
  align-items: start;
}
body.single-product div.product > * {
  min-width: 0;
}
/* Override WC's 50% width on gallery/summary — grid handles column sizing */
body.single-product div.product div.images,
body.single-product div.product .summary,
body.single-product div.product .entry-summary {
  width: 100% !important;
  float: none !important;
}
@media (max-width: 768px) {
  /* Remove GP sticky-menu padding that creates gap between mobile top bar and breadcrumb */
  body.single-product .site-content,
  body.single-product #content { padding-top: 0 !important; margin-top: 0 !important; }

  body.single-product div.product {
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 16px 0 48px !important;
  }
  /* Summary text gets side padding; gallery stays edge-to-edge */
  body.single-product div.product .summary,
  body.single-product div.product .entry-summary {
    padding: 0 16px;
  }
}

/* -- 4. Gallery (left column) -- */
body.single-product .woocommerce-product-gallery__wrapper {
  background: var(--bg);
  border-radius: var(--radius);
  overflow: hidden;
}
/* Flexslider overrides — !important required (WC injects inline JS styles) */
.woocommerce-product-gallery .flex-viewport {
  width: 100% !important;
  float: none !important;
}
.woocommerce-product-gallery .flex-control-thumbs {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 8px !important;
  margin-top: 16px !important;
  float: none !important;
  width: 100% !important;
}
.flex-control-thumbs li {
  width: 100% !important;
  float: none !important;
  margin: 0 !important;
}
body.single-product .flex-control-thumbs li img {
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  cursor: pointer;
  transition: border-color 0.2s;
}
body.single-product .flex-control-thumbs li img.flex-active,
body.single-product .flex-control-thumbs li img:hover {
  border-color: var(--navy);
}

/* -- 5. Product Summary (right column) — Defined Zones -- */
body.single-product div.product .product_title {
  font-family: var(--font-heading);
  font-size: 36px;
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: -0.02em;
  color: var(--navy);
  text-transform: none;
  margin-bottom: 16px;
}
body.single-product div.product p.price,
body.single-product div.product span.price {
  font-family: var(--font-heading);
  font-size: 28px;
  font-weight: 800;
  line-height: 1.0;
  color: var(--accent);
  margin-bottom: 24px;
}
body.single-product div.product .woocommerce-product-details__short-description {
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 400;
  color: var(--text-light);
  line-height: 1.6;
  margin-bottom: 24px;
}
body.single-product .woocommerce-product-rating { display: none; }
body.single-product .product_meta { display: none; }
@media (max-width: 600px) {
  body.single-product div.product .product_title {
    font-size: 28px;
  }
}

/* Zone dividers */
body.single-product .denex-zone-divider {
  border: none;
  border-top: 1px solid var(--border);
  margin: 16px 0;
}

/* -- 6. Quantity Selector -- */
body.single-product .quantity {
  display: inline-flex;
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  flex-shrink: 0;
}
body.single-product .quantity button.minus,
body.single-product .quantity button.plus {
  width: 44px;
  height: 44px;
  background: transparent;
  border: none;
  font-size: 18px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text);
  transition: background 0.2s;
}
body.single-product .quantity button.minus:hover,
body.single-product .quantity button.plus:hover {
  background: var(--bg);
}
body.single-product .quantity input.qty {
  width: 48px;
  text-align: center;
  border: none;
  border-left: 1.5px solid var(--border);
  border-right: 1.5px solid var(--border);
  font: 700 12px/1.3 var(--font-body);
  -moz-appearance: textfield;
  appearance: textfield;
}
body.single-product .quantity input.qty::-webkit-outer-spin-button,
body.single-product .quantity input.qty::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* -- 7. ATC Row -- */
body.single-product .denex-atc-row {
  display: flex;
  align-items: center;
  gap: 12px;
}
/* (0,4,1) — V2 template: button is in .dnx-v2-purchase-zone, not div.product.
   Dual class .single_add_to_cart_button.btn-atc beats WC inline ".woocommerce button.button.alt" (0,3,1) */
body.single-product .dnx-v2-purchase-zone .single_add_to_cart_button.btn-atc {
  flex: 1;
  padding: 16px 32px;
  background: var(--accent);
  color: #fff;
  font: 700 12px/1.3 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border-radius: var(--radius);
  border: 1.5px solid transparent;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, transform 0.15s ease, border-color 0.2s ease;
  text-align: center;
}
body.single-product .dnx-v2-purchase-zone .single_add_to_cart_button.btn-atc:hover {
  background: transparent;
  color: var(--accent);
  border-color: var(--accent);
  transform: translateY(-1px);
}
body.single-product div.product .single_add_to_cart_button:focus-visible,
body.single-product .btn-atc:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
@media (max-width: 600px) {
  body.single-product .denex-atc-row {
    gap: 8px;
  }
  body.single-product .single_add_to_cart_button,
  body.single-product .btn-atc {
    padding: 14px 16px;
  }
}

/* -- 7b. Variation Form Styling -- */
body.single-product table.variations {
  border-collapse: collapse;
}
body.single-product table.variations td {
  vertical-align: middle;
  padding: 8px 0;
  font-family: var(--font-body);
  font-size: 14px;
}
body.single-product table.variations td.label {
  white-space: nowrap;
  padding-right: 12px;
}
body.single-product table.variations td.label label {
  font: 600 14px/1 var(--font-body);
  color: var(--text);
  margin: 0;
}
body.single-product table.variations td.value {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
body.single-product table.variations td.value select {
  font: 400 14px/1.4 var(--font-body);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 8px 12px;
  background: var(--surface);
  flex: 1;
  min-width: 0;
}
body.single-product table.variations .reset_variations {
  font: 400 12px/1 var(--font-body);
  color: var(--text-muted);
  white-space: nowrap;
}
/* Variation description indented like a dropdown panel */
body.single-product .woocommerce-variation-description {
  background: var(--bg);
  border-radius: var(--radius);
  padding: 12px 16px;
  margin-top: 0;
  margin-bottom: 1.5em;
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 1.6;
  color: var(--text-light);
}
body.single-product .woocommerce-variation-description p {
  margin: 0 0 8px;
}
body.single-product .woocommerce-variation-description p:last-child {
  margin-bottom: 0;
}
/* -- 7c. ATC Disabled State (no variation selected) -- */
body.single-product div.product .single_add_to_cart_button.disabled,
body.single-product div.product .single_add_to_cart_button:disabled,
body.single-product div.product .single_add_to_cart_button.wc-variation-is-unavailable {
  background: var(--disabled) !important;
  color: #fff !important;
  cursor: not-allowed;
  opacity: 1;
  transform: none;
}
body.single-product div.product .single_add_to_cart_button.disabled:hover,
body.single-product div.product .single_add_to_cart_button:disabled:hover,
body.single-product div.product .single_add_to_cart_button.wc-variation-is-unavailable:hover {
  background: var(--disabled) !important;
  transform: none;
}

/* -- 8. Trust Zone (Defined Zones architecture) -- */
body.single-product .denex-product-trust {
  background: var(--bg);
  padding: 12px 16px;
  border-radius: var(--radius);
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  gap: 8px;
}
body.single-product .denex-product-trust-item {
  display: flex;
  align-items: center;
  gap: 8px;
}
body.single-product .denex-product-trust-item svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  color: var(--accent);
}
body.single-product .denex-product-trust-item span {
  font: 700 12px/1.3 var(--font-body);
  color: var(--text);
}
body.single-product .denex-trust-coa-link {
  display: flex;
  align-items: center;
  gap: 8px;
  color: inherit;
  text-decoration: none;
}
body.single-product .denex-trust-coa-link:hover span {
  text-decoration: underline;
}
@media (max-width: 768px) {
  body.single-product .denex-product-trust {
    flex-direction: column;
  }
}

/* -- 9. Trust Strip (navy bar) -- */
body.single-product .denex-trust-strip-product {
  width: 100vw;
  margin-left: calc(-50vw + 50%);
  background: var(--navy);
  padding: 24px 0;
  overflow-x: hidden;
}
body.single-product .denex-trust-strip-inner {
  max-width: var(--content-width);
  margin: 0 auto;
  display: flex;
  justify-content: center;
  padding: 0 32px;
}
body.single-product .denex-trust-strip-item {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 32px;
  border-right: 1px solid rgba(255,255,255,0.10);
}
body.single-product .denex-trust-strip-item:last-child {
  border-right: none;
}
body.single-product .denex-trust-strip-item svg {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  stroke: #fff;
}
body.single-product .denex-trust-strip-label {
  font: 700 12px/1.3 var(--font-body);
  color: #fff;
}
body.single-product .denex-trust-strip-sublabel {
  font: 400 12px/1.3 var(--font-body);
  color: rgba(255,255,255,0.6);
}
@media (max-width: 768px) {
  body.single-product .denex-trust-strip-inner {
    flex-direction: column;
    gap: 16px;
  }
  body.single-product .denex-trust-strip-item {
    border-right: none;
  }
}

/* -- 10. Science Callout -- */
body.single-product .denex-science-callout {
  grid-column: 1 / -1;
  width: 100vw;
  margin-left: calc(-50vw + 50%);
  background: var(--navy);
  padding: 80px 24px;
  position: relative;
  overflow: hidden;
}
body.single-product .denex-science-eyebrow,
body.single-product .denex-science-heading,
body.single-product .denex-science-pills,
body.single-product .denex-science-benefits {
  max-width: 1000px;
  margin-left: auto;
  margin-right: auto;
  position: relative;
  z-index: 1;
}
body.single-product .denex-science-eyebrow {
  font: 700 12px/1.3 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--accent);
  margin-bottom: 16px;
  display: block;
}
body.single-product .denex-science-heading {
  font-family: var(--font-heading);
  font-size: 28px;
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: #fff;
  margin-bottom: 32px;
}
body.single-product .denex-science-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 48px;
}
body.single-product .denex-science-pill {
  background: transparent;
  border: 1.5px solid var(--accent);
  color: #fff;
  font: 700 12px/1.3 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 8px 16px;
  border-radius: var(--radius);
}
body.single-product .denex-science-benefits {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
body.single-product .denex-science-benefit {
  display: flex;
  align-items: center;
  gap: 16px;
}
body.single-product .denex-science-benefit-icon {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--accent);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
body.single-product .denex-science-benefit-icon svg {
  width: 16px;
  height: 16px;
  stroke: #fff;
}
body.single-product .denex-science-benefit-text {
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 400;
  color: #fff;
  line-height: 1.5;
}
@media (max-width: 768px) {
  body.single-product .denex-science-callout { padding: 56px 24px; }
}

/* -- 11. Description + Specs -- */
body.single-product .denex-description-section {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 48px;
  padding: 64px 24px;
  max-width: var(--content-width);
  margin: 0 auto;
  background: var(--surface);
}
body.single-product .denex-description-section.denex-description-section--no-specs {
  grid-template-columns: 1fr;
  max-width: 780px;
}
body.single-product .denex-description-section h2 {
  font-family: var(--font-heading);
  font-size: 28px;
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--text);
  margin-bottom: 24px;
  text-transform: lowercase;
}
body.single-product .denex-description-section p {
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 400;
  color: var(--text-light);
  line-height: 1.7;
  margin-bottom: 16px;
}
body.single-product .denex-spec-table {
  width: 100%;
  border-collapse: collapse;
}
body.single-product .denex-spec-table tr:nth-child(odd) {
  background: var(--bg);
}
body.single-product .denex-spec-table td {
  padding: 16px;
  font-family: var(--font-body);
  font-size: 12px;
  line-height: 1.3;
}
body.single-product .denex-spec-table td:first-child {
  font-weight: 700;
  color: var(--text);
  width: 45%;
}
body.single-product .denex-spec-table td:last-child {
  font-weight: 400;
  color: var(--text-light);
}
@media (max-width: 768px) {
  body.single-product .denex-description-section {
    grid-template-columns: 1fr;
    gap: 40px;
  }
}

/* -- 12. Strain Comparison Table (PROD-08) -- */
body.single-product .denex-strain-compare {
  grid-column: 1 / -1;
  width: 100vw;
  margin-left: calc(-50vw + 50%);
  background: var(--bg);
  padding: 48px 24px;
  max-width: 100vw;
  box-sizing: border-box;
}
body.single-product .denex-strain-compare-heading,
body.single-product .denex-strain-compare .denex-strain-table-wrap,
body.single-product .denex-strain-compare .denex-strain-cards {
  max-width: var(--content-width);
  margin-left: auto;
  margin-right: auto;
}
body.single-product .denex-strain-compare-heading {
  font: 800 28px/1.2 var(--font-heading);
  color: var(--text);
  margin-bottom: 24px;
  letter-spacing: -0.01em;
}
body.single-product .denex-strain-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
}
body.single-product .denex-strain-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-body);
  min-width: 480px;
  margin: 0;
}
body.single-product .denex-strain-table thead th:first-child {
  width: 110px;
  min-width: 90px;
  border-left: none;
}
body.single-product .denex-strain-table thead th {
  background: var(--navy);
  padding: 16px 16px;
  text-align: left;
  border-left: 1px solid rgba(255,255,255,0.1);
  vertical-align: bottom;
  /* Reserve space for highlight border so it doesn't shift layout */
  border-bottom: 3px solid transparent;
}
body.single-product .denex-strain-name {
  display: inline;
  font: 700 12px/1.3 var(--font-body);
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-right: 6px;
}
.denex-strain-badge {
  display: inline-block;
  font: 700 12px/1 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 3px 8px;
  border-radius: 20px;
}
.denex-strain-badge--hybrid {
  background: var(--badge-hybrid);
  color: #fff;
}
.denex-strain-badge--sativa {
  background: var(--badge-sativa);
  color: #fff;
}
.denex-strain-badge--indica {
  background: var(--badge-indica);
  color: #fff;
}
.denex-strain-badge--sativadominanthybrid {
  background: var(--badge-sdh);
  color: #fff;
}
.denex-strain-badge--indicadominanthybrid {
  background: var(--badge-idh);
  color: #fff;
}
body.single-product .denex-strain-table tbody td:first-child {
  background: var(--navy);
  color: rgba(255,255,255,0.7);
  font: 700 12px/1 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  border-top: 1px solid rgba(255,255,255,0.1);
  white-space: nowrap;
}
body.single-product .denex-strain-table tbody td {
  padding: 16px 16px;
  font: 400 12px/1.5 var(--font-body);
  color: var(--text);
  border-left: 1px solid var(--border);
  border-top: 1px solid var(--border);
}
body.single-product .denex-strain-table tbody tr:nth-child(even) td:not(:first-child) {
  background: var(--bg);
}
body.single-product .denex-strain-table thead th[data-current="true"] {
  border-bottom: 2px solid var(--accent);
}
/* Mobile card layout */
body.single-product .denex-strain-cards {
  display: none;
}
@media (max-width: 600px) {
  body.single-product .denex-strain-compare {
    padding: 32px 16px;
  }
  body.single-product .denex-strain-table-wrap {
    display: none;
  }
  body.single-product .denex-strain-cards {
    display: flex;
    flex-direction: column;
    gap: 16px;
  }
  body.single-product .denex-strain-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    overflow: hidden;
  }
  body.single-product .denex-strain-card--current {
    border: 2px solid var(--accent);
  }
  body.single-product .denex-strain-card__header {
    background: var(--navy);
    padding: 16px 16px;
  }
  body.single-product .denex-strain-card__row {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    padding: 8px 16px;
    border-top: 1px solid var(--border);
  }
  body.single-product .denex-strain-card__label {
    font: 700 12px/1 var(--font-body);
    color: var(--navy);
    text-transform: uppercase;
    letter-spacing: 0.06em;
  }
  body.single-product .denex-strain-card__value {
    font: 400 12px/1.4 var(--font-body);
    color: var(--text);
  }
}

/* ── Strain type legend ── */
body.single-product .denex-strain-legend {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 16px;
  padding: 0 4px;
}
body.single-product .denex-strain-legend__item {
  display: flex;
  align-items: center;
  gap: 8px;
}
body.single-product .denex-strain-legend__text {
  font-size: 12px;
  color: #6b7a8d;
  line-height: 1.4;
}

/* -- 13. FAQ Section (PROD-09) -- */
body.single-product .denex-faq {
  grid-column: 1 / -1;
  width: 100vw;
  margin-left: calc(-50vw + 50%);
  background: var(--bg);
  padding: 48px 24px;
}
body.single-product .denex-faq-heading,
body.single-product .denex-faq .denex-faq-item {
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}
body.single-product .denex-faq-heading {
  font: 800 28px/1.2 var(--font-heading);
  color: var(--text);
  margin-bottom: 24px;
  letter-spacing: -0.01em;
}
.denex-faq-item {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  margin-bottom: 8px;
  overflow: hidden;
  transition: background 0.2s ease, box-shadow 0.2s ease;
}
.denex-faq-item[open],
.denex-faq-item.is-open {
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}
.denex-faq-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 16px;
  cursor: pointer;
  list-style: none;
  font: 700 16px/1.4 var(--font-body);
  color: var(--text);
  user-select: none;
}
details.denex-faq-item summary::-webkit-details-marker { display: none; }
details.denex-faq-item summary::marker { display: none; }
.denex-faq-summary svg {
  flex-shrink: 0;
  color: var(--text-muted);
  transition: transform 0.2s ease;
}
.denex-faq-item[open] .denex-faq-summary svg {
  transform: rotate(45deg);
}
.denex-faq-answer {
  padding: 0 16px 16px;
  font: 400 16px/1.65 var(--font-body);
  color: var(--text-muted);
  max-width: 600px;
}
@media (max-width: 600px) {
  body.single-product .denex-faq {
    padding: 32px 16px;
  }
}

/* -- 13b. FAQ Page (/faq standalone page) -- */
body.page-faq .denex-faq-page {
  max-width: 800px;
  margin: 0 auto;
  padding: 48px 24px 64px;
}
body.page-faq .denex-faq-page-section {
  margin-bottom: 48px;
}
body.page-faq .denex-faq-page-cat-heading {
  font: 700 13px/1 var(--font-body);
  color: var(--denex-navy);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin: 0 0 16px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--denex-accent);
}
/* Flatten the full-width breakout that product-page .denex-faq uses */
body.page-faq .denex-faq {
  width: auto;
  margin-left: 0;
  background: transparent;
  padding: 0;
}
@media (max-width: 600px) {
  body.page-faq .denex-faq-page {
    padding: 32px 16px 48px;
  }
  body.page-faq .denex-faq-page-section {
    margin-bottom: 32px;
  }
}

/* -- 14. Related Products + Upsells (shared) -- */
body.single-product .related.products,
body.single-product section.upsells {
  grid-column: 1 / -1;
  width: 100vw;
  margin-left: calc(-50vw + 50%);
  background: var(--bg);
  padding: 64px 24px 80px;
  overflow-x: hidden;
}
body.single-product .related.products h2,
body.single-product section.upsells h2 {
  font-family: var(--font-heading);
  font-size: 28px;
  font-weight: 800;
  text-align: center;
  margin-bottom: 48px;
  color: var(--text);
  letter-spacing: -0.01em;
  text-transform: lowercase;
}
/* -- 15. Sticky ATC Bar -- */
body.single-product .denex-sticky-atc {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--navy);
  z-index: 200;
  border-top: 2px solid var(--accent);
  border-bottom: 2px solid var(--accent);
  box-shadow: 0 -2px 12px rgba(0,0,0,0.15);
  transform: translateY(100%);
  opacity: 0;
  transition: transform 0.3s ease, opacity 0.3s ease, bottom 0.3s ease;
  pointer-events: none;
}
body.single-product .denex-sticky-atc--visible {
  transform: translateY(0);
  opacity: 1;
  pointer-events: auto;
}
body.single-product .denex-sticky-atc-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 24px;
  height: 48px;
}
body.single-product .denex-sticky-atc-name {
  font: 700 12px/1.3 var(--font-body);
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}
body.single-product .denex-sticky-atc-price {
  font-family: var(--font-heading);
  font-size: 28px;
  font-weight: 800;
  color: #fff;
  white-space: nowrap;
  margin: 0 24px;
}
body.single-product .denex-sticky-atc-btn {
  padding: 12px 32px;
  background: var(--accent);
  color: #fff;
  font: 700 12px/1.3 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border-radius: var(--radius);
  border: 1.5px solid transparent;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
body.single-product .denex-sticky-atc-btn:hover {
  background: #fff;
  color: var(--accent);
  border-color: #fff;
}
/* Sticky ATC disabled state */
body.single-product .denex-sticky-atc-btn--disabled {
  background: var(--disabled);
  cursor: not-allowed;
}
body.single-product .denex-sticky-atc-btn--disabled:hover {
  background: var(--disabled);
}
/* Icon hidden on desktop, shown on mobile */
body.single-product .denex-sticky-atc-btn-icon { display: none; }
@media (max-width: 768px) {
  body.single-product .denex-sticky-atc-inner {
    height: 56px;
    gap: 12px;
  }
  body.single-product .denex-sticky-atc-price {
    font-size: 16px;
    font-weight: 700;
    margin: 0;
  }
  body.single-product .denex-sticky-atc-name {
    flex: 1;
    min-width: 0;
    font-size: 11px;
  }
  body.single-product .denex-sticky-atc-btn {
    flex: 0 0 auto;
    padding: 10px 14px;
    text-transform: uppercase;
  }
  body.single-product .denex-sticky-atc-btn-text { display: none; }
  body.single-product .denex-sticky-atc-btn-icon { display: flex; align-items: center; gap: 4px; }
  body.single-product { padding-bottom: 56px; }
}

/* -- 16. Variation Swatches -- */
body.single-product .thwvsf-wrapper-ul .thwvsf-wrapper-item-li {
  box-shadow: none;
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  font-family: var(--font-body);
  font-size: 13px;
}
body.single-product .thwvsf-wrapper-ul .thwvsf-wrapper-item-li:hover {
  box-shadow: none;
  border-color: var(--navy);
}
body.single-product .thwvsf-wrapper-ul .thwvsf-wrapper-item-li.selected {
  box-shadow: none;
  border: 2px solid var(--accent);
}
body.single-product .thwvsf-wrapper-ul .thwvsf-wrapper-item-li.deactive,
body.single-product .thwvsf-wrapper-ul .thwvsf-wrapper-item-li.out_of_stock {
  opacity: 1;
  background: #e5e5e5 !important;
  color: #999;
  border-color: #ccc;
  cursor: not-allowed;
}

/* -- 17. Bottom Nav + Sticky ATC Stacking -- */
@media (max-width: 768px) {
  /* ATC always above the 60px mobile nav */
  body.single-product .denex-sticky-atc {
    bottom: calc(60px + env(safe-area-inset-bottom, 0px));
  }
  body.single-product.denex-bottom-nav-visible {
    padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px));
  }
}

/* -- 18. NotificationX Suppression -- */
body.single-product .notificationx-frontend,
body.single-product .nx-bar {
  display: none;
}

/* -- 19. ATC Confirmation Modal -- */
#denex-atc-modal { position: fixed; inset: 0; z-index: 99999; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .2s ease; }
#denex-atc-modal.denex-atc-modal--open { opacity: 1; }
.denex-atc-modal-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.45); }
.denex-atc-modal-box { position: relative; background: #fff; border-radius: 12px; padding: 32px 28px 24px; max-width: 360px; width: 90%; text-align: center; box-shadow: 0 12px 40px rgba(0,0,0,.2); }
.denex-atc-modal-close { position: absolute; top: 10px; right: 14px; background: none; border: none; font-size: 22px; cursor: pointer; color: #888; line-height: 1; }
.denex-atc-modal-title { font-size: 16px; font-weight: 600; color: var(--navy, #0d243d); margin: 12px 0 20px; }
.denex-atc-modal-actions { display: flex; flex-direction: column; gap: 8px; }
.denex-atc-modal-btn { display: block; padding: 14px 20px; border-radius: var(--radius, 6px); font: 700 12px/1.3 var(--font-body, sans-serif); text-transform: uppercase; letter-spacing: 0.06em; text-decoration: none; text-align: center; cursor: pointer; border: 1.5px solid transparent; transition: background .2s ease, color .2s ease, border-color .2s ease; }
.denex-atc-modal-btn--primary { background: var(--accent, #cc5500); color: #fff; }
.denex-atc-modal-btn--primary:hover { background: transparent; color: var(--accent, #cc5500); border-color: var(--accent, #cc5500); }
.denex-atc-modal-btn--secondary { background: transparent; color: var(--navy, #0d243d); border-color: #ddd; }
.denex-atc-modal-btn--secondary:hover { border-color: var(--navy, #0d243d); }

/* ================================================
   PRODUCT V2: CLEAN TEMPLATE
   Scoped to .dnx-v2-product — zero overlap with V1 rules.
   ================================================ */

/* -- V2: Page layout -- */
.dnx-v2-product {
  background: var(--surface);
  padding-top: 76px;
  padding-bottom: 0;
}
.dnx-v2-product .woocommerce-product-rating,
.dnx-v2-product .product_meta {
  display: none;
}

/* -- V2: Breadcrumbs -- */
.dnx-v2-breadcrumbs {
  background: transparent;
  padding: 8px 24px;
}
.dnx-v2-breadcrumbs .woocommerce-breadcrumb {
  font: 400 11px/1.3 var(--font-body);
  color: var(--text-light);
  max-width: var(--content-width);
  margin: 0 auto;
}
.dnx-v2-breadcrumbs .woocommerce-breadcrumb a {
  color: var(--text-light);
  text-decoration: none;
  transition: color 0.2s;
}
.dnx-v2-breadcrumbs .woocommerce-breadcrumb a:hover {
  color: var(--navy);
}
.dnx-v2-breadcrumbs .separator {
  margin: 0 8px;
  opacity: 0.4;
}

/* -- V2: Hero (50/50 grid) -- */
.dnx-v2-hero {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 48px 24px 64px;
  align-items: start;
}
.dnx-v2-hero > * {
  min-width: 0;
}

/* -- V2: Gallery -- */
.dnx-v2-gallery__main {
  position: relative;
  background: var(--bg);
  border-radius: var(--radius);
  overflow: hidden;
}
.dnx-v2-gallery__slide {
  display: none;
  aspect-ratio: 1 / 1;
  background: #fff;
  padding: 16px;
  box-sizing: border-box;
}
.dnx-v2-gallery__slide--active {
  display: flex;
  align-items: center;
  justify-content: center;
}
.dnx-v2-gallery__img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
/* Gallery counter (visible on mobile swipe mode) */
.dnx-v2-gallery__counter {
  display: none;
  position: absolute;
  bottom: 12px;
  right: 12px;
  background: rgba(0,0,0,0.5);
  color: #fff;
  font: 700 11px/1 var(--font-body);
  padding: 4px 10px;
  border-radius: 12px;
  pointer-events: none;
  z-index: 1;
}
.dnx-v2-gallery__thumbs {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-top: 16px;
}
.dnx-v2-thumb {
  padding: 0;
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  cursor: pointer;
  background: transparent;
  transition: border-color 0.2s;
  overflow: hidden;
}
.dnx-v2-thumb:hover,
.dnx-v2-thumb--active {
  border-color: var(--navy);
}
.dnx-v2-thumb__img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: contain;
  background: #fff;
  display: block;
}

/* -- V2: Summary -- */
.dnx-v2-title {
  font-family: var(--font-heading);
  font-size: 36px;
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: -0.02em;
  color: var(--navy);
  text-transform: none;
  margin: 0 0 16px;
}
.dnx-v2-price {
  font-family: var(--font-heading);
  font-size: 28px;
  font-weight: 800;
  line-height: 1.0;
  color: var(--accent);
  margin-bottom: 24px;
}
.dnx-v2-short-desc {
  font: 400 16px/1.6 var(--font-body);
  color: var(--text-light);
  margin-bottom: 24px;
}
.dnx-v2-short-desc p {
  margin-bottom: 12px;
}
.dnx-v2-short-desc p:last-child {
  margin-bottom: 0;
}
.dnx-v2-short-desc strong {
  color: var(--text);
}
.dnx-v2-short-desc ul {
  padding-left: 20px;
  margin: 8px 0 0;
}
.dnx-v2-short-desc li {
  margin-bottom: 4px;
}
.dnx-v2-divider {
  border: none;
  border-top: 1px solid var(--border);
  margin: 16px 0;
}

/* -- V2: Purchase zone (wraps WC form) -- */
.dnx-v2-purchase-zone table.variations {
  width: 100%;
  border: none !important;
  border-collapse: collapse;
  border-spacing: 0;
  margin: 0;
}
.dnx-v2-purchase-zone table.variations,
.dnx-v2-purchase-zone table.variations thead,
.dnx-v2-purchase-zone table.variations tbody,
.dnx-v2-purchase-zone table.variations tr,
.dnx-v2-purchase-zone table.variations th,
.dnx-v2-purchase-zone table.variations td {
  border: none !important;
  border-width: 0 !important;
  outline: none;
  box-shadow: none;
}
.dnx-v2-purchase-zone table.variations td {
  padding: 4px 0;
  font: 400 14px/1.4 var(--font-body);
  display: block;
}
.dnx-v2-purchase-zone table.variations tr {
  display: block;
  margin-bottom: 12px;
}
.dnx-v2-purchase-zone table.variations td.label {
  padding-bottom: 6px;
}
.dnx-v2-purchase-zone table.variations td.label label {
  font: 700 11px/1 var(--font-body);
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin: 0;
}
.dnx-v2-purchase-zone table.variations td.value {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.dnx-v2-purchase-zone table.variations td.value select {
  font: 400 14px/1.4 var(--font-body);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 8px 12px;
  background: var(--surface);
  flex: 1;
  min-width: 0;
}
.dnx-v2-purchase-zone .reset_variations {
  font: 400 12px/1 var(--font-body);
  color: var(--text-muted);
  margin-top: 4px;
  display: block;
}
/* Pill picker */
.dnx-v2-purchase-zone .denex-var-picker {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.dnx-v2-purchase-zone .denex-var-option {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border: 1.5px solid var(--border);
  border-radius: 100px;
  background: var(--bg);
  cursor: pointer;
  transition: all 0.2s ease;
  user-select: none;
}
.dnx-v2-purchase-zone .denex-var-option:hover {
  border-color: var(--navy);
  background: var(--surface);
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(13,36,61,0.08);
}
.dnx-v2-purchase-zone .denex-var-option.is-selected {
  border-color: var(--accent);
  background: var(--surface);
  box-shadow: 0 0 0 1px var(--accent), 0 2px 8px rgba(204,85,0,0.1);
}
.dnx-v2-purchase-zone .denex-var-option.is-selected .denex-var-option__name {
  color: var(--accent);
}
.dnx-v2-purchase-zone .denex-var-option__name {
  font: 600 13px/1.3 var(--font-body);
  color: var(--text);
  transition: color 0.2s;
}
/* Unavailable pills — hidden (WC disabled the option, combo doesn't exist) */
.dnx-v2-purchase-zone .denex-var-option.is-unavailable {
  display: none;
}
/* OOS pills — visible but grayed out, not clickable */
.dnx-v2-purchase-zone .denex-var-option.is-oos {
  background: var(--bg);
  border-style: dashed;
  border-color: var(--border);
  cursor: not-allowed;
  pointer-events: none;
}
.dnx-v2-purchase-zone .denex-var-option.is-oos .denex-var-option__name {
  color: var(--text-muted);
  text-decoration: line-through;
}
.dnx-v2-purchase-zone .denex-var-option.is-oos:hover {
  transform: none;
  box-shadow: none;
}
.dnx-v2-purchase-zone .denex-pill-oos {
  font: 600 10px/1 var(--font-body);
  color: #c33;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
/* OOS variation — prominent banner */
.dnx-v2-purchase-zone .woocommerce-variation-availability p {
  font: 700 13px/1.3 var(--font-body);
  margin: 12px 0;
}
.dnx-v2-purchase-zone .woocommerce-variation-availability .stock {
  background: var(--bg);
  border: 1.5px dashed var(--border);
  border-radius: var(--radius);
  padding: 12px 16px;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 12px;
}
.dnx-v2-purchase-zone .woocommerce-variation-availability .out-of-stock {
  color: #c33;
}
.dnx-v2-purchase-zone .woocommerce-variation-availability .in-stock {
  color: #2a7d2e;
}
/* Variation description — hide when empty */
.dnx-v2-purchase-zone .woocommerce-variation-description {
  background: var(--bg);
  border-radius: var(--radius);
  padding: 12px 16px;
  margin-top: 0;
  font: 400 14px/1.6 var(--font-body);
  color: var(--text-light);
}
.dnx-v2-purchase-zone .woocommerce-variation-description:empty,
.dnx-v2-purchase-zone .single_variation_wrap .woocommerce-variation-description:not(:has(*)) {
  display: none;
  padding: 0;
  margin: 0;
}
.dnx-v2-purchase-zone .woocommerce-variation-description p {
  margin: 0 0 8px;
}
.dnx-v2-purchase-zone .woocommerce-variation-description p:last-child {
  margin-bottom: 0;
}
/* Hide empty variation price wrapper */
.dnx-v2-purchase-zone .woocommerce-variation-price:empty {
  display: none;
}
/* Quantity */
.dnx-v2-purchase-zone .quantity {
  display: inline-flex;
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  flex-shrink: 0;
}
.dnx-v2-purchase-zone .quantity button.minus,
.dnx-v2-purchase-zone .quantity button.plus {
  width: 44px;
  height: 44px;
  background: transparent;
  border: none;
  font-size: 18px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text);
  transition: background 0.2s;
}
.dnx-v2-purchase-zone .quantity button.minus:hover,
.dnx-v2-purchase-zone .quantity button.plus:hover {
  background: var(--bg);
}
.dnx-v2-purchase-zone .quantity input.qty {
  width: 48px;
  text-align: center;
  border: none;
  border-left: 1.5px solid var(--border);
  border-right: 1.5px solid var(--border);
  font: 700 12px/1.3 var(--font-body);
  -moz-appearance: textfield;
  appearance: textfield;
}
.dnx-v2-purchase-zone .quantity input.qty::-webkit-outer-spin-button,
.dnx-v2-purchase-zone .quantity input.qty::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
/* Hide WC's default variation price display (we show it in the ATC row) */
.dnx-v2-purchase-zone .woocommerce-variation-price {
  display: none;
}
/* ATC row (assembled by JS): price | qty | button */
.dnx-v2-purchase-zone .denex-atc-row {
  display: flex;
  align-items: center;
  gap: 12px;
}
.dnx-v2-purchase-zone .denex-atc-row-price {
  font-family: var(--font-heading);
  font-size: 24px;
  font-weight: 800;
  color: var(--accent);
  white-space: nowrap;
  line-height: 1;
}
.dnx-v2-purchase-zone .denex-atc-row-price:empty {
  display: none;
}
.dnx-v2-purchase-zone .single_add_to_cart_button {
  flex: 1;
  padding: 16px 32px;
  background: var(--accent);
  color: #fff;
  font: 700 12px/1.3 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border-radius: var(--radius);
  border: 1.5px solid transparent;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, transform 0.15s ease, border-color 0.2s ease;
  text-align: center;
}
.dnx-v2-purchase-zone .single_add_to_cart_button:hover {
  background: transparent;
  color: var(--accent);
  border-color: var(--accent);
  transform: translateY(-1px);
}
.dnx-v2-purchase-zone .single_add_to_cart_button:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
.dnx-v2-purchase-zone .single_add_to_cart_button.disabled,
.dnx-v2-purchase-zone .single_add_to_cart_button:disabled,
.dnx-v2-purchase-zone .single_add_to_cart_button.wc-variation-is-unavailable {
  background: var(--disabled) !important;
  color: #fff !important;
  border-color: var(--disabled) !important;
  cursor: not-allowed;
  opacity: 0.6;
  transform: none;
  pointer-events: none;
}
.dnx-v2-purchase-zone .single_add_to_cart_button.disabled:hover,
.dnx-v2-purchase-zone .single_add_to_cart_button:disabled:hover,
.dnx-v2-purchase-zone .single_add_to_cart_button.wc-variation-is-unavailable:hover {
  background: var(--disabled) !important;
  color: #fff !important;
  transform: none;
}
/* Zone divider inside purchase zone */
.dnx-v2-purchase-zone .denex-zone-divider {
  border: none;
  border-top: 1px solid var(--border);
  margin: 16px 0;
}
/* Hide variations alert */
.dnx-v2-purchase-zone .reset_variations_alert {
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  clip-path: inset(50%);
  position: absolute;
}

/* -- V2: Full-width sections use the same denex- classes -- */
/* These sections render via shared functions, so V1 CSS (scoped to
   body.single-product div.product) won't match inside .dnx-v2-product
   because there's no div.product wrapper. The grid-column: 1/-1 rules
   also don't apply. We need only the full-bleed overrides here. */

.dnx-v2-product .denex-strain-compare,
.dnx-v2-product .denex-science-callout,
.dnx-v2-product .denex-faq,
.dnx-v2-product .denex-trust-strip-product,
.dnx-v2-product .denex-description-section {
  width: 100vw;
  margin-left: calc(-50vw + 50%);
  box-sizing: border-box;
}

/* Description + Specs inside V2 */
.dnx-v2-product .denex-description-section {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 48px;
  padding: 64px 24px;
  max-width: var(--content-width);
  margin: 0 auto;
  background: var(--surface);
  width: auto;
}
.dnx-v2-product .denex-description-section.denex-description-section--no-specs {
  grid-template-columns: 1fr;
  max-width: 780px;
}
.dnx-v2-product .denex-description-section h2 {
  font: 800 28px/1.2 var(--font-heading);
  color: var(--text);
  margin-bottom: 24px;
  letter-spacing: -0.01em;
  text-transform: lowercase;
}
.dnx-v2-product .denex-description-section p {
  font: 400 16px/1.7 var(--font-body);
  color: var(--text-light);
  margin-bottom: 16px;
}
.dnx-v2-product .denex-spec-table {
  width: 100%;
  border-collapse: collapse;
}
.dnx-v2-product .denex-spec-table tr:nth-child(odd) {
  background: var(--bg);
}
.dnx-v2-product .denex-spec-table td {
  padding: 16px;
  font: 400 12px/1.3 var(--font-body);
}
.dnx-v2-product .denex-spec-table td:first-child {
  font-weight: 700;
  color: var(--text);
  width: 45%;
}
.dnx-v2-product .denex-spec-table td:last-child {
  color: var(--text-light);
}

/* Strain compare inside V2 */
.dnx-v2-product .denex-strain-compare {
  background: var(--bg);
  padding: 48px 24px;
}
.dnx-v2-product .denex-strain-compare-heading,
.dnx-v2-product .denex-strain-compare .denex-strain-table-wrap,
.dnx-v2-product .denex-strain-compare .denex-strain-cards {
  max-width: var(--content-width);
  margin-left: auto;
  margin-right: auto;
}
.dnx-v2-product .denex-strain-compare-heading {
  font: 800 28px/1.2 var(--font-heading);
  color: var(--text);
  margin-bottom: 24px;
  letter-spacing: -0.01em;
}
.dnx-v2-product .denex-strain-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
}
.dnx-v2-product .denex-strain-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-body);
  min-width: 480px;
  margin: 0;
}
.dnx-v2-product .denex-strain-table thead th:first-child {
  width: 110px;
  min-width: 90px;
  border-left: none;
}
.dnx-v2-product .denex-strain-table thead th {
  background: var(--navy);
  padding: 16px;
  text-align: left;
  border-left: 1px solid rgba(255,255,255,0.1);
  vertical-align: bottom;
  border-bottom: 3px solid transparent;
}
.dnx-v2-product .denex-strain-table thead th[data-current="true"] {
  border-bottom: 2px solid var(--accent);
}
.dnx-v2-product .denex-strain-table tbody td:first-child {
  background: var(--navy);
  color: rgba(255,255,255,0.7);
  font: 700 12px/1 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  border-top: 1px solid rgba(255,255,255,0.1);
  white-space: nowrap;
}
.dnx-v2-product .denex-strain-table tbody td {
  padding: 16px;
  font: 400 12px/1.5 var(--font-body);
  color: var(--text);
  border-left: 1px solid var(--border);
  border-top: 1px solid var(--border);
}
.dnx-v2-product .denex-strain-table tbody tr:nth-child(even) td:not(:first-child) {
  background: var(--bg);
}
.dnx-v2-product .denex-strain-cards {
  display: none;
}
/* ── Strain type legend ── */
.dnx-v2-product .denex-strain-legend {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 16px;
  padding: 0 4px;
  max-width: var(--content-width);
  margin-left: auto;
  margin-right: auto;
}
.dnx-v2-product .denex-strain-legend__item {
  display: flex;
  align-items: center;
  gap: 8px;
}
.dnx-v2-product .denex-strain-legend__text {
  font-size: 12px;
  color: #6b7a8d;
  line-height: 1.4;
}

/* Science callout inside V2 */
.dnx-v2-product .denex-science-callout {
  background: var(--navy);
  padding: 80px 24px;
  position: relative;
  overflow: hidden;
}
.dnx-v2-product .denex-science-eyebrow,
.dnx-v2-product .denex-science-heading,
.dnx-v2-product .denex-science-pills,
.dnx-v2-product .denex-science-benefits {
  max-width: 1000px;
  margin-left: auto;
  margin-right: auto;
  position: relative;
  z-index: 1;
}
.dnx-v2-product .denex-science-eyebrow {
  font: 700 12px/1.3 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--accent);
  margin-bottom: 16px;
  display: block;
}
.dnx-v2-product .denex-science-heading {
  font: 800 28px/1.2 var(--font-heading);
  letter-spacing: -0.01em;
  color: #fff;
  margin-bottom: 32px;
}
.dnx-v2-product .denex-science-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 48px;
}
.dnx-v2-product .denex-science-pill {
  background: transparent;
  border: 1.5px solid var(--accent);
  color: #fff;
  font: 700 12px/1.3 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 8px 16px;
  border-radius: var(--radius);
}
.dnx-v2-product .denex-science-benefits {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.dnx-v2-product .denex-science-benefit {
  display: flex;
  align-items: center;
  gap: 16px;
}
.dnx-v2-product .denex-science-benefit-icon {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--accent);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.dnx-v2-product .denex-science-benefit-icon svg {
  width: 16px;
  height: 16px;
  stroke: #fff;
}
.dnx-v2-product .denex-science-benefit-text {
  font: 400 16px/1.5 var(--font-body);
  color: #fff;
}

/* FAQ inside V2 */
.dnx-v2-product .denex-faq {
  background: var(--bg);
  padding: 48px 24px;
}
.dnx-v2-product .denex-faq-heading,
.dnx-v2-product .denex-faq .denex-faq-item {
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}
.dnx-v2-product .denex-faq-heading {
  font: 800 28px/1.2 var(--font-heading);
  color: var(--text);
  margin-bottom: 24px;
  letter-spacing: -0.01em;
}

/* Trust strip inside V2 */
.dnx-v2-product .denex-trust-strip-product {
  background: var(--navy);
  padding: 24px 0;
  overflow-x: hidden;
}
.dnx-v2-product .denex-trust-strip-inner {
  max-width: var(--content-width);
  margin: 0 auto;
  display: flex;
  justify-content: center;
  padding: 0 32px;
}
.dnx-v2-product .denex-trust-strip-item {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 32px;
  border-right: 1px solid rgba(255,255,255,0.10);
}
.dnx-v2-product .denex-trust-strip-item:last-child {
  border-right: none;
}
.dnx-v2-product .denex-trust-strip-item svg {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  stroke: #fff;
}
.dnx-v2-product .denex-trust-strip-label {
  font: 700 12px/1.3 var(--font-body);
  color: #fff;
}
.dnx-v2-product .denex-trust-strip-sublabel {
  font: 400 12px/1.3 var(--font-body);
  color: rgba(255,255,255,0.6);
}

/* Related/upsells section wrapper inside V2 — layout only, tile styling from base */
.dnx-v2-related .related.products,
.dnx-v2-related section.upsells {
  width: 100vw;
  margin-left: calc(-50vw + 50%);
  background: var(--bg);
  padding: 64px 24px 80px;
  overflow-x: hidden;
}
.dnx-v2-related .related.products h2,
.dnx-v2-related section.upsells h2 {
  font: 800 28px/1.2 var(--font-heading);
  text-align: center;
  margin-bottom: 48px;
  color: var(--text);
  letter-spacing: -0.01em;
  text-transform: lowercase;
}
.dnx-v2-related .related.products ul.products,
.dnx-v2-related section.upsells ul.products {
  max-width: var(--content-width);
  margin: 0 auto;
}

/* WC notices inside V2 */
.dnx-v2-product .woocommerce-notices-wrapper {
  padding: 16px 24px 0;
  max-width: var(--content-width);
  margin: 0 auto;
}
.dnx-v2-product .woocommerce-message,
.dnx-v2-product .woocommerce-info {
  background: var(--navy);
  color: #fff;
  border: none;
  border-radius: var(--radius);
  padding: 14px 20px;
  font: 400 20px/1.4 var(--font-body);
  display: flex;
  align-items: center;
  gap: 12px;
}
.dnx-v2-product .woocommerce-message::before,
.dnx-v2-product .woocommerce-info::before {
  display: none;
}
.dnx-v2-product .woocommerce-message a.button,
.dnx-v2-product .woocommerce-info a.button {
  background: var(--accent);
  color: #fff;
  border: none;
  border-radius: var(--radius);
  padding: 8px 18px;
  font: 700 12px/1 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-left: auto;
  flex-shrink: 0;
}
.dnx-v2-product .woocommerce-message a.button:hover,
.dnx-v2-product .woocommerce-info a.button:hover {
  background: var(--accent-dark);
}

/* Scroll reveal (shared class names, works in both V1 and V2) */
.dnx-v2-product .denex-reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.dnx-v2-product .denex-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* GP layout overrides for V2 — reset GP's defaults */
.dnx-v2-product ~ #right-sidebar,
body:has(.dnx-v2-product) .sidebar {
  display: none;
}
body:has(.dnx-v2-product) .content-area {
  width: 100%;
  max-width: 100%;
}
body:has(.dnx-v2-product) .inside-article {
  padding: 0;
}
body:has(.dnx-v2-product) .site-main {
  margin-top: 0;
  margin-bottom: 0;
}
body:has(.dnx-v2-product) .entry-header .entry-title {
  display: none;
}

/* ================================================
   V2: Responsive
   ================================================ */
@media (max-width: 768px) {
  /* Mobile top bar is static — no need for the 76px desktop-header offset */
  .dnx-v2-product { padding-top: 0; }

  .dnx-v2-hero {
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 16px 0 48px;
  }
  .dnx-v2-gallery {
    padding: 0;
  }
  /* Mobile: switch gallery to horizontal scroll-snap */
  .dnx-v2-gallery__main {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    border-radius: 0;
  }
  .dnx-v2-gallery__main::-webkit-scrollbar {
    display: none;
  }
  .dnx-v2-gallery__slide {
    display: block;
    flex: 0 0 100%;
    scroll-snap-align: start;
    aspect-ratio: 1 / 1;
    padding: 16px;
    box-sizing: border-box;
  }
  .dnx-v2-gallery__slide--active {
    display: block;
  }
  .dnx-v2-gallery__thumbs {
    display: none;
  }
  .dnx-v2-gallery__counter {
    display: block;
  }
  .dnx-v2-summary {
    padding: 0 16px;
  }
  .dnx-v2-product .denex-science-callout {
    padding: 56px 24px;
  }
  .dnx-v2-product .denex-description-section {
    grid-template-columns: 1fr;
    gap: 40px;
  }
  .dnx-v2-product .denex-trust-strip-inner {
    flex-direction: column;
    gap: 16px;
  }
  .dnx-v2-product .denex-trust-strip-item {
    border-right: none;
  }
  .dnx-v2-related .related.products ul.products,
  .dnx-v2-related section.upsells ul.products {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 600px) {
  .dnx-v2-title {
    font-size: 28px;
  }
  .dnx-v2-purchase-zone .denex-atc-row {
    gap: 8px;
    flex-wrap: wrap;
  }
  .dnx-v2-purchase-zone .denex-atc-row-price {
    width: 100%;
  }
  .dnx-v2-purchase-zone .single_add_to_cart_button {
    padding: 14px 16px;
  }
  .dnx-v2-product .denex-strain-compare {
    padding: 32px 16px;
  }
  .dnx-v2-product .denex-strain-table-wrap {
    display: none;
  }
  .dnx-v2-product .denex-strain-cards {
    display: flex;
    flex-direction: column;
    gap: 16px;
  }
  .dnx-v2-product .denex-strain-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    overflow: hidden;
  }
  .dnx-v2-product .denex-strain-card--current {
    border: 2px solid var(--accent);
  }
  .dnx-v2-product .denex-strain-card__header {
    background: var(--navy);
    padding: 16px;
  }
  .dnx-v2-product .denex-strain-card__row {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    padding: 8px 16px;
    border-top: 1px solid var(--border);
  }
  .dnx-v2-product .denex-strain-card__label {
    font: 700 12px/1 var(--font-body);
    color: var(--navy);
    text-transform: uppercase;
    letter-spacing: 0.06em;
  }
  .dnx-v2-product .denex-strain-card__value {
    font: 400 12px/1.4 var(--font-body);
    color: var(--text);
  }
  .dnx-v2-product .denex-faq {
    padding: 32px 16px;
  }
}

/* ================================================
   Phase 5.1: Homepage V2 — Mobile-First Redesign
   CSS base = mobile. Enhanced upward via min-width.
   ================================================ */

/* ── Smooth scroll — scoped to V2 only ────────── */
body.page-homepage-v2 { scroll-behavior: smooth; }

/* ── Scroll Reveal — pure CSS with animation-timeline ── */
body.page-homepage-v2 .denex-section {
  animation: denexReveal 0.6s var(--ease-out) both;
  animation-timeline: view();
  animation-range: entry 0% entry 25%;
}
@keyframes denexReveal {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
/* Fallback: if animation-timeline unsupported, show everything */
@supports not (animation-timeline: view()) {
  body.page-homepage-v2 .denex-section {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s var(--ease-out), transform 0.6s var(--ease-out);
  }
  body.page-homepage-v2 .denex-section.denex-visible {
    opacity: 1;
    transform: translateY(0);
  }
}
@media (prefers-reduced-motion: reduce) {
  body.page-homepage-v2 .denex-section {
    animation: none;
    opacity: 1;
    transform: none;
  }
}

/* ── V2 Page Layout Overrides ──────────────────── */
body.page-homepage-v2 .entry-title,
body.page-homepage-v2 .post-image,
body.page-homepage-v2 .featured-image { display: none; }
body.page-homepage-v2 #right-sidebar,
body.page-homepage-v2 .sidebar { display: none; }
body.page-homepage-v2 .content-area { width: 100%; max-width: 100%; }
body.page-homepage-v2 #content { display: block; }
body.page-homepage-v2 .inside-article { padding: 0; background: transparent; box-shadow: none; }
body.page-homepage-v2 .entry-content { max-width: none; }
body.page-homepage-v2 .separate-containers .inside-article { background: transparent; }
body.page-homepage-v2 .site-main { margin-top: 0; margin-bottom: 0; }
body.page-homepage-v2 .site-content { padding-top: 0; }

/* Header: fully transparent on V2 until scroll */
body.page-homepage-v2 .denex-site-header:not(.denex-header-scrolled) {
  background: transparent;
  border-bottom-color: transparent;
  box-shadow: none;
}
body.page-homepage-v2 .denex-mobile-top-bar {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  background: transparent;
}

/* ── V2 Full-bleed utility ─────────────────────── */
body.page-homepage-v2 .denex-hero,
body.page-homepage-v2 .denex-trust-bar,
body.page-homepage-v2 .denex-featured-products,
body.page-homepage-v2 .denex-split-panel,
body.page-homepage-v2 .denex-categories,
body.page-homepage-v2 .denex-social-proof,
body.page-homepage-v2 .denex-review-carousel,
body.page-homepage-v2 .denex-lifestyle-break,
body.page-homepage-v2 .denex-newsletter {
  width: 100vw;
  margin-left: calc(-50vw + 50%);
}

/* ── V2 Section container ──────────────────────── */
body.page-homepage-v2 .container {
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 16px;
}
@media (min-width: 768px) {
  body.page-homepage-v2 .container { padding: 0 24px; }
}

/* ═══════════════════════════════════════════════
   S1: HERO — Mobile-first
   ═══════════════════════════════════════════════ */
body.page-homepage-v2 .denex-hero {
  position: relative;
  height: 75vh;
  min-height: 420px;
  background-image: none; /* prevent Phase 5 background-image from loading */
  display: flex;
  align-items: center;
  overflow: hidden;
}
body.page-homepage-v2 .denex-hero-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  z-index: 0;
  animation: denexKenBurns 20s ease-in-out infinite alternate;
}
@keyframes denexKenBurns {
  0%   { transform: scale(1); }
  100% { transform: scale(1.05); }
}
@media (prefers-reduced-motion: reduce) {
  body.page-homepage-v2 .denex-hero-bg { animation: none; }
}
body.page-homepage-v2 .denex-hero-overlay {
  position: absolute;
  inset: 0;
  background: rgba(13,36,61,0.78);
  z-index: 1;
}
body.page-homepage-v2 .denex-hero-inner {
  position: relative;
  z-index: 2;
  padding: 80px 0 48px;
}
body.page-homepage-v2 .denex-hero-content {
  max-width: 560px;
}
body.page-homepage-v2 .denex-hero-eyebrow {
  display: block;
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 16px;
}
body.page-homepage-v2 .denex-hero-headline {
  font-family: var(--font-heading);
  font-size: 36px;
  font-weight: 900;
  line-height: 1.05;
  letter-spacing: -0.03em;
  color: #fff;
  margin: 0 0 16px;
}
body.page-homepage-v2 .denex-hero-subheadline {
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  color: rgba(255,255,255,0.80);
  margin: 0 0 24px;
}
body.page-homepage-v2 .denex-hero-ctas {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
body.page-homepage-v2 .denex-hero-cta-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  align-self: flex-start;
  width: auto;
  min-height: 48px;
  padding: 14px 32px;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #fff;
  background: var(--accent);
  border: 1.5px solid transparent;
  border-radius: var(--radius);
  text-decoration: none;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
body.page-homepage-v2 .denex-hero-cta-primary:hover {
  background: transparent;
  border-color: #fff;
  color: #fff;
}
body.page-homepage-v2 .denex-hero-social-proof {
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 500;
  color: rgba(255,255,255,0.55);
  margin-top: 24px;
  letter-spacing: 0.02em;
}

/* Scroll indicator */
body.page-homepage-v2 .denex-scroll-indicator {
  position: absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  color: rgba(255,255,255,0.4);
  animation: denexBounce 2s ease-in-out infinite;
}
@keyframes denexBounce {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50%      { transform: translateX(-50%) translateY(8px); }
}

/* Hero — Tablet+ */
@media (min-width: 768px) {
  body.page-homepage-v2 .denex-hero { height: 80vh; }
  body.page-homepage-v2 .denex-hero-overlay {
    background: linear-gradient(to right, rgba(13,36,61,0.82) 0%, rgba(13,36,61,0.15) 100%);
  }
  body.page-homepage-v2 .denex-hero-headline { font-size: 48px; }
  body.page-homepage-v2 .denex-hero-subheadline { font-size: 17px; }
  body.page-homepage-v2 .denex-hero-ctas { flex-direction: row; }
}

/* Hero — Small phones (≤480px) */
@media (max-width: 480px) {
  body.page-homepage-v2 .denex-hero-headline { font-size: 28px; }
  body.page-homepage-v2 .denex-hero-subheadline { font-size: 14px; }
  body.page-homepage-v2 .denex-hero-content { max-width: 100%; }
}

/* Hero — Desktop */
@media (min-width: 1024px) {
  body.page-homepage-v2 .denex-hero { height: 85vh; }
  body.page-homepage-v2 .denex-hero-headline { font-size: 56px; }
}

/* ═══════════════════════════════════════════════
   S2: TRUST BAR — Mobile-first
   ═══════════════════════════════════════════════ */
body.page-homepage-v2 .denex-trust-bar {
  background: var(--navy);
  padding: 32px 0;
}
body.page-homepage-v2 .denex-trust-items {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
  list-style: none;
  margin: 0;
  padding: 0;
}
body.page-homepage-v2 .denex-trust-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  color: #fff;
  text-align: center;
  padding: 16px 12px;
}
body.page-homepage-v2 .denex-trust-item:nth-child(odd) {
  border-right: 1px solid rgba(255,255,255,0.10);
}
body.page-homepage-v2 .denex-trust-item svg {
  width: 32px;
  height: 32px;
  stroke: currentColor;
  flex-shrink: 0;
}
body.page-homepage-v2 .denex-trust-text strong {
  display: block;
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 700;
}
body.page-homepage-v2 .denex-trust-text span {
  display: block;
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 400;
  color: rgba(255,255,255,0.60);
  margin-top: 2px;
}

/* Trust Bar — Tablet+ */
@media (min-width: 768px) {
  body.page-homepage-v2 .denex-trust-bar { padding: 40px 0; }
  body.page-homepage-v2 .denex-trust-items {
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
  }
  body.page-homepage-v2 .denex-trust-item {
    padding: 0 16px;
  }
  body.page-homepage-v2 .denex-trust-item:nth-child(odd) { border-right: none; }
  body.page-homepage-v2 .denex-trust-item:not(:last-child) {
    border-right: 1px solid rgba(255,255,255,0.10);
  }
  body.page-homepage-v2 .denex-trust-text strong { font-size: 16px; }
  body.page-homepage-v2 .denex-trust-text span { font-size: 13px; }
}

/* ═══════════════════════════════════════════════
   S3: FEATURED PRODUCTS — section wrapper only, tile styling from base
   ═══════════════════════════════════════════════ */
body.page-homepage-v2 .denex-featured-products {
  background: var(--bg);
  padding: 48px 0;
}
body.page-homepage-v2 .denex-featured-products .section-heading {
  font-family: var(--font-heading);
  font-size: 24px;
  font-weight: 900;
  text-align: center;
  color: var(--text);
  letter-spacing: -0.01em;
  margin-bottom: 32px;
}
@media (min-width: 768px) {
  body.page-homepage-v2 .denex-featured-products { padding: 80px 0; }
  body.page-homepage-v2 .denex-featured-products .section-heading { font-size: 28px; }
}
@media (max-width: 768px) {
  body.page-homepage-v2 .denex-featured-products { padding: 32px 0; }
  body.page-homepage-v2 .denex-featured-products .section-heading { margin-bottom: 20px; }
  body.page-homepage-v2 .denex-featured-products .woocommerce ul.products { gap: 12px; }
}

/* ═══════════════════════════════════════════════
   S4: LIFESTYLE SPLIT PANEL — Mobile-first
   ═══════════════════════════════════════════════ */
body.page-homepage-v2 .denex-split-panel {
  display: grid;
  grid-template-columns: 1fr;
  overflow: hidden;
}
body.page-homepage-v2 .denex-split-panel-image-wrap {
  position: relative;
  overflow: hidden;
}
body.page-homepage-v2 .denex-split-panel-image {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  display: block;
}
body.page-homepage-v2 .denex-split-panel-content {
  background: var(--navy);
  padding: 48px 24px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
body.page-homepage-v2 .denex-split-panel-heading {
  font-family: var(--font-heading);
  font-size: 24px;
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: -0.02em;
  color: #fff;
  margin: 0 0 20px;
}
body.page-homepage-v2 .denex-split-panel-body {
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 400;
  line-height: 1.7;
  color: rgba(255,255,255,0.75);
  margin: 0 0 28px;
}
body.page-homepage-v2 .denex-split-panel-cta {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  min-height: 44px;
  padding: 12px 24px;
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #fff;
  background: transparent;
  border: 1.5px solid rgba(255,255,255,0.5);
  border-radius: var(--radius);
  text-decoration: none;
  transition: background 0.2s ease, border-color 0.2s ease;
}
body.page-homepage-v2 .denex-split-panel-cta:hover {
  background: #fff;
  border-color: #fff;
  color: var(--navy);
}

/* Split — Tablet+ */
@media (min-width: 768px) {
  body.page-homepage-v2 .denex-split-panel {
    grid-template-columns: 1fr 1fr;
    min-height: 480px;
  }
  body.page-homepage-v2 .denex-split-panel-image {
    aspect-ratio: auto;
    height: 100%;
    min-height: 480px;
  }
  body.page-homepage-v2 .denex-split-panel-content { padding: 64px 48px; }
  body.page-homepage-v2 .denex-split-panel-heading { font-size: 32px; }
  body.page-homepage-v2 .denex-split-panel-body { font-size: 16px; }
}

/* ═══════════════════════════════════════════════
   S5: CATEGORY CARDS — Mobile-first
   ═══════════════════════════════════════════════ */
body.page-homepage-v2 .denex-categories {
  background: #0a1a2e;
  padding: 48px 0;
}
body.page-homepage-v2 .denex-categories .section-heading {
  font-family: var(--font-heading);
  font-size: 24px;
  font-weight: 900;
  text-align: center;
  color: #fff;
  letter-spacing: -0.01em;
  margin-bottom: 32px;
  text-transform: none;
}
body.page-homepage-v2 .denex-category-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
body.page-homepage-v2 .denex-category-card {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  border-left: 3px solid var(--accent);
  background: linear-gradient(160deg, var(--cat-gradient-start) 0%, var(--cat-gradient-end) 100%);
  border-radius: var(--radius);
  padding: 16px 14px;
  min-height: 120px;
  transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.3s ease;
}
body.page-homepage-v2 .denex-category-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
  background: linear-gradient(160deg, var(--cat-gradient-hover-start) 0%, var(--cat-gradient-hover-end) 100%);
}
body.page-homepage-v2 .denex-category-num {
  font-family: var(--font-heading);
  font-size: 11px;
  font-weight: 900;
  color: var(--accent);
  letter-spacing: 0.08em;
  margin-bottom: 8px;
}
body.page-homepage-v2 .denex-category-name {
  font-family: var(--font-heading);
  font-size: 18px;
  font-weight: 900;
  color: #fff;
  text-transform: uppercase;
  line-height: 1.1;
}
body.page-homepage-v2 .denex-category-tagline {
  font-family: var(--font-body);
  font-size: 12px;
  color: rgba(255,255,255,0.55);
  line-height: 1.4;
  margin-top: 6px;
}
body.page-homepage-v2 .denex-category-count {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 600;
  color: rgba(255,255,255,0.40);
  margin-top: 6px;
}
body.page-homepage-v2 .denex-category-arrow {
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,0.25);
  margin-top: auto;
  padding-top: 8px;
  transition: color 0.2s ease;
}
body.page-homepage-v2 .denex-category-card:hover .denex-category-arrow {
  color: var(--accent);
}

/* Categories — Tablet+ */
@media (min-width: 768px) {
  body.page-homepage-v2 .denex-categories { padding: 80px 0; }
  body.page-homepage-v2 .denex-categories .section-heading { font-size: 28px; }
  body.page-homepage-v2 .denex-category-grid { gap: 16px; }
  body.page-homepage-v2 .denex-category-card { padding: 20px 16px 18px; }
  body.page-homepage-v2 .denex-category-name { font-size: 20px; }
  body.page-homepage-v2 .denex-category-tagline { font-size: 12px; }
}
/* Categories — Desktop */
@media (min-width: 1024px) {
  body.page-homepage-v2 .denex-category-grid {
    grid-template-columns: repeat(4, 1fr);
  }
}

/* ═══════════════════════════════════════════════
   S6: SOCIAL PROOF BANNER — Mobile-first
   ═══════════════════════════════════════════════ */
body.page-homepage-v2 .denex-social-proof {
  background: var(--bg);
  padding: 48px 0;
}
body.page-homepage-v2 .denex-stats-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  text-align: center;
  align-items: start;
}
body.page-homepage-v2 .denex-stat-number {
  display: block;
  font-family: var(--font-heading);
  font-size: 28px;
  font-weight: 900;
  color: var(--accent);
  letter-spacing: -0.02em;
}
body.page-homepage-v2 .denex-stat-label {
  display: block;
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 500;
  color: var(--text-muted);
  margin-top: 4px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* Social Proof — Tablet+ */
@media (min-width: 768px) {
  body.page-homepage-v2 .denex-stats-grid { gap: 24px; }
  body.page-homepage-v2 .denex-stat-number { font-size: 36px; }
  body.page-homepage-v2 .denex-stat-label { font-size: 13px; }
}

/* ═══════════════════════════════════════════════
   S7: REVIEW CAROUSEL — CSS Scroll Snap, mobile-first
   ═══════════════════════════════════════════════ */
body.page-homepage-v2 .denex-review-carousel {
  background: var(--surface);
  padding: 48px 0;
}
body.page-homepage-v2 .denex-review-carousel .section-heading {
  font-family: var(--font-heading);
  font-size: 24px;
  font-weight: 900;
  text-align: center;
  color: var(--text);
  letter-spacing: -0.01em;
  margin-bottom: 32px;
  text-transform: none;
}

/* Carousel wrapper */
body.page-homepage-v2 .denex-reviews-wrapper {
  position: relative;
}
body.page-homepage-v2 .denex-reviews-track-outer {
  overflow: hidden;
}

/* Track: horizontal scroll snap on mobile */
body.page-homepage-v2 .denex-reviews-track {
  display: flex;
  gap: 16px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  padding: 0 4px 8px;
}
body.page-homepage-v2 .denex-reviews-track::-webkit-scrollbar { display: none; }

/* Review card */
body.page-homepage-v2 .denex-review-card {
  flex: 0 0 calc(100% - 16px);
  scroll-snap-align: center;
  background: var(--surface);
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  padding: 24px 20px;
  min-height: 180px;
  display: flex;
  flex-direction: column;
}
body.page-homepage-v2 .denex-review-stars {
  font-size: 16px;
  color: var(--accent);
  letter-spacing: 2px;
  margin-bottom: 12px;
}
body.page-homepage-v2 .denex-review-quote {
  font-family: var(--font-body);
  font-size: 15px;
  font-style: italic;
  color: var(--text);
  line-height: 1.6;
  margin: 0 0 auto;
  padding-bottom: 16px;
}
body.page-homepage-v2 .denex-review-author {
  display: block;
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
}
body.page-homepage-v2 .denex-review-product {
  display: block;
  font-family: var(--font-body);
  font-size: 12px;
  color: var(--accent);
  margin-top: 2px;
}

/* Prev/Next buttons — hidden on mobile */
body.page-homepage-v2 .denex-carousel-prev,
body.page-homepage-v2 .denex-carousel-next {
  display: none;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--surface);
  border: 1.5px solid var(--border);
  cursor: pointer;
  align-items: center;
  justify-content: center;
  z-index: 2;
  transition: background 0.15s ease, border-color 0.15s ease;
}
body.page-homepage-v2 .denex-carousel-prev { left: -20px; }
body.page-homepage-v2 .denex-carousel-next { right: -20px; }
body.page-homepage-v2 .denex-carousel-prev:hover,
body.page-homepage-v2 .denex-carousel-next:hover {
  background: var(--navy);
  border-color: var(--navy);
}
body.page-homepage-v2 .denex-carousel-prev:hover svg,
body.page-homepage-v2 .denex-carousel-next:hover svg { stroke: #fff; }
body.page-homepage-v2 .denex-carousel-prev:disabled,
body.page-homepage-v2 .denex-carousel-next:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}
body.page-homepage-v2 .denex-carousel-prev svg,
body.page-homepage-v2 .denex-carousel-next svg {
  width: 18px;
  height: 18px;
  stroke: var(--text);
  fill: none;
}

/* Dot indicators */
body.page-homepage-v2 .denex-carousel-dots {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 20px;
}
body.page-homepage-v2 .denex-carousel-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--border);
  border: none;
  padding: 0;
  cursor: pointer;
  transition: background 0.2s ease, transform 0.2s ease;
}
body.page-homepage-v2 .denex-carousel-dot.active {
  background: var(--accent);
  transform: scale(1.2);
}

/* Carousel — Desktop: keep scroll snap for JS scrollTo, show arrows */
@media (min-width: 1024px) {
  body.page-homepage-v2 .denex-review-carousel { padding: 80px 0; }
  body.page-homepage-v2 .denex-review-carousel .section-heading { font-size: 28px; }
  body.page-homepage-v2 .denex-reviews-track {
    gap: 20px;
    padding: 0 4px 8px;
  }
  body.page-homepage-v2 .denex-review-card {
    flex: 0 0 calc((100% - 40px) / 3);
  }
  body.page-homepage-v2 .denex-carousel-prev,
  body.page-homepage-v2 .denex-carousel-next {
    display: flex;
  }
}

/* ═══════════════════════════════════════════════
   S8: LIFESTYLE BREAK — Mobile-first
   ═══════════════════════════════════════════════ */
body.page-homepage-v2 .denex-lifestyle-break {
  position: relative;
  height: 28vh;
  min-height: 200px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
body.page-homepage-v2 .denex-lifestyle-break-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}
body.page-homepage-v2 .denex-lifestyle-break-overlay {
  position: absolute;
  inset: 0;
  background: rgba(13,36,61,0.55);
  z-index: 1;
}
body.page-homepage-v2 .denex-lifestyle-break-text {
  position: relative;
  z-index: 2;
  font-family: var(--font-heading);
  font-size: 20px;
  font-weight: 800;
  color: #fff;
  text-align: center;
  line-height: 1.3;
  letter-spacing: -0.02em;
  text-shadow: 0 2px 20px rgba(0,0,0,0.4);
  max-width: 480px;
  padding: 0 24px;
  margin: 0;
}

/* Lifestyle — Tablet+ */
@media (min-width: 768px) {
  body.page-homepage-v2 .denex-lifestyle-break {
    height: 35vh;
    min-height: 240px;
  }
  body.page-homepage-v2 .denex-lifestyle-break-text {
    font-size: 28px;
    max-width: 600px;
  }
}

/* ═══════════════════════════════════════════════
   S9: NEWSLETTER — Mobile-first
   ═══════════════════════════════════════════════ */
body.page-homepage-v2 .denex-newsletter {
  background: var(--navy);
  padding: 48px 0;
  text-align: center;
}
body.page-homepage-v2 .denex-newsletter-inner {
  max-width: 480px;
  margin: 0 auto;
  padding: 0 16px;
}
body.page-homepage-v2 .denex-newsletter h2 {
  font-family: var(--font-heading);
  font-size: 24px;
  font-weight: 900;
  color: #fff;
  margin: 0 0 12px;
  letter-spacing: -0.01em;
}
body.page-homepage-v2 .denex-newsletter-incentive {
  font-family: var(--font-body);
  font-size: 15px;
  color: var(--accent);
  margin: 0 0 8px;
  font-weight: 500;
}
body.page-homepage-v2 .denex-newsletter-incentive strong {
  font-weight: 700;
}
body.page-homepage-v2 .denex-newsletter-subtext {
  font-family: var(--font-body);
  font-size: 14px;
  color: rgba(255,255,255,0.65);
  line-height: 1.5;
  margin: 0 0 24px;
}

/* Klaviyo form overrides */
body.page-homepage-v2 .denex-klaviyo-embed {
  min-height: 56px;
}
body.page-homepage-v2 .denex-newsletter .klaviyo-form button[type="submit"],
body.page-homepage-v2 .denex-newsletter .klaviyo-form button[type="button"],
body.page-homepage-v2 .denex-newsletter [data-testid="klaviyo-form"] button {
  background: var(--accent) !important;
  border-radius: var(--radius) !important;
  min-height: 48px;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.06em !important;
}

/* Newsletter — Tablet+ */
@media (min-width: 768px) {
  body.page-homepage-v2 .denex-newsletter { padding: 80px 0; }
  body.page-homepage-v2 .denex-newsletter h2 { font-size: 28px; }
  body.page-homepage-v2 .denex-newsletter-inner { max-width: 560px; }
}

/* ================================================
   Phase 7: Cart & Checkout — Native Polish
   ================================================ */

/* (1) Buttons: GP global setting handles orange — override removed */
/* (2) White background */
body.woocommerce-cart .entry-content,
body.woocommerce-checkout .entry-content { background: var(--surface); }

/* (3) Page content shift — non-homepage pages with fixed header */
body:not(.home):not(.page-homepage-v2) .site-main { padding-top: 76px; }
@media (max-width: 768px) {
  body.woocommerce-cart .site-main { padding-top: 0 !important; }
}

/* Hide default GP page title on cart — replaced by .denex-cart-heading below */
body.woocommerce-cart .entry-title,
body.woocommerce-cart .page-header { display: none; }

/* (4) Dynamic cart heading typography */
body.woocommerce-cart .denex-cart-heading { font-family: var(--font-heading); font-weight: 800; font-size: clamp(22px, 4vw, 30px); color: var(--navy); margin: 0 0 4px; }
body.woocommerce-cart .denex-cart-subtext { font-size: 16px; color: var(--text-muted); margin: 0 0 12px; }

/* (4a) Free shipping progress bar — no border/card, left panel width via JS */
body.woocommerce-cart .denex-shipping-bar { margin: 0 0 16px; }
body.woocommerce-cart .denex-shipping-bar__track { background: var(--navy); border-radius: 99px; height: 3px; margin-top: 6px; position: relative; }
body.woocommerce-cart .denex-shipping-bar__fill { background: var(--accent); height: 100%; border-radius: 99px; transition: width 0.4s ease; position: relative; }
body.woocommerce-cart .denex-shipping-bar__fill::after { content: ""; position: absolute; right: -1px; top: -3px; bottom: -3px; width: 2px; background: var(--accent); filter: brightness(0.7); border-radius: 2px; }
body.woocommerce-cart .denex-shipping-bar__label { font-size: 15px; color: var(--text-muted); }
body.woocommerce-cart .denex-shipping-bar__label strong { color: var(--accent); font-weight: 700; }

/* (5) Compact coupon — plain input (kill floating-label animation, static field) */
body.woocommerce-cart .wc-block-components-totals-coupon { margin-top: 8px; }
body.woocommerce-cart .wc-block-components-totals-coupon .wc-block-components-text-input,
body.woocommerce-cart .wc-block-components-totals-coupon .wc-block-components-text-input.is-active { padding-top: 0 !important; transition: none !important; }
body.woocommerce-cart .wc-block-components-totals-coupon .wc-block-components-text-input.is-active input[type="text"] { padding-top: 0 !important; padding-left: 12px !important; }
body.woocommerce-cart .wc-block-components-totals-coupon label { display: none !important; }
body.woocommerce-cart .wc-block-components-totals-coupon input[type="text"] { height: 38px; font-size: 16px; padding: 0 12px; transition: none !important; animation: none !important; transform: none !important; }
body.woocommerce-cart .wc-block-components-totals-coupon .wc-block-components-button { height: 38px; min-height: 38px; padding: 0 16px; align-self: flex-end; }

/* (6) Secure checkout trust line — shared cart + checkout (🔒 via SVG data URI) */
body.woocommerce-cart .wp-block-woocommerce-proceed-to-checkout-block,
body.woocommerce-checkout .wc-block-checkout__actions { position: relative; margin-left: auto; }
body.woocommerce-cart .wp-block-woocommerce-proceed-to-checkout-block::after,
body.woocommerce-checkout .wc-block-checkout__actions::after { content: ""; display: flex; align-items: center; justify-content: center; gap: 6px; font-size: 12px; color: var(--text-muted); margin-top: 6px; }
body.woocommerce-cart .wp-block-woocommerce-proceed-to-checkout-block::after { content: "🔒 Secure and encrypted payment"; }
body.woocommerce-checkout .wc-block-checkout__actions::after { content: "🔒 Secure and encrypted payment"; }

/* (7) Font sizes — redefine WP's font-size preset so all WC rules that use
   var(--wp--preset--font-size--small) pick up 16px instead of 13px. */
body.woocommerce-cart, body.woocommerce-checkout { --wp--preset--font-size--small: 16px; }
body.woocommerce-cart .wc-block-cart .wc-block-cart__totals-title { font-size: 20px; }

/* (8) Variation pills — WC Blocks 9+ (ul/li) and older (dl/dt/dd) */
body.woocommerce-cart .wc-block-components-product-details { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px; }
body.woocommerce-cart .wc-block-components-product-details__item { display: flex; align-items: center; }
body.woocommerce-cart .wc-block-components-product-details__name { display: none; }
/* Remove WC's " / " separator injected between li items (CSS ::before) */
body.woocommerce-cart .wc-block-components-product-details__item + .wc-block-components-product-details__item::before { content: "" !important; display: none !important; }
body.woocommerce-cart .wc-block-components-product-details__separator { display: none !important; }
body.woocommerce-cart .wc-block-components-product-details__value { display: inline-block; background: var(--bg); border: 1px solid #b8bcc4; border-radius: 99px; font-size: 12px; color: var(--text-muted); padding: 2px 10px; }
body.woocommerce-cart .wc-block-components-product-metadata__description { display: flex; flex-wrap: wrap; gap: 4px; margin: 6px 0 0; }
body.woocommerce-cart .wc-block-components-product-metadata__description dt { display: none; }
body.woocommerce-cart .wc-block-components-product-metadata__description dd { display: inline-block; background: var(--bg); border: 1px solid #b8bcc4; border-radius: 99px; font-size: 12px; color: var(--text-muted); padding: 2px 10px; margin: 0; }

/* ── Cart Cross-Sells: compact card pattern ── */
@media (max-width: 768px) {
  body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block { display: none; }
}
body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 48px !important; }
body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block::before { content: "Other customers also purchase"; display: block; font-family: var(--font-heading); font-weight: 800; font-size: 20px; color: var(--navy); margin-bottom: 16px; grid-column: 1 / -1; text-align: center; }
body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block .cross-sells-product { display: flex; flex-direction: column; background: var(--surface); border: 1.5px solid var(--border); border-radius: var(--radius); overflow: hidden; transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; box-sizing: border-box; padding-right: 0; text-align: left; vertical-align: top; }
body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block .cross-sells-product:hover { border-color: var(--navy); box-shadow: var(--shadow-md); transform: translateY(-2px); }
body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block .cross-sells-product > div:first-child { padding: 0; }
body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block .cross-sells-product .wc-block-components-product-image { margin: 0; padding: 0; }
body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block .cross-sells-product .wc-block-components-product-image img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; display: block; }
body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block .cross-sells-product .wc-block-components-product-title { font-weight: 800; font-size: 13px; line-height: 1.3; font-family: var(--font-heading); color: var(--text); padding: 10px 12px 0; margin: 0; }
body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block .cross-sells-product .wc-block-components-product-name { color: var(--text); text-decoration: none; }
body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block .cross-sells-product .wc-block-components-product-price { font-weight: 400; font-size: 13px; line-height: 1; font-family: var(--font-body); color: var(--text-muted); display: block; padding: 4px 12px 12px; margin: 0; }
body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block .cross-sells-product .wc-block-components-product-rating-stars { display: none; }
body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block .cross-sells-product .wc-block-components-product-button { display: none; }

/* ================================================
   Phase 7b: Shared Cart + Checkout Brand Polish
   ================================================ */

/* ── Shared Rules (cart + checkout) ── */

/* (A1) Section heading typography */
body.woocommerce-cart .wc-block-cart__totals-title,
body.woocommerce-checkout .wc-block-components-checkout-step__title,
body.woocommerce-checkout .wc-block-components-checkout-order-summary__title { font-family: var(--font-heading); font-weight: 800; color: var(--navy); }

/* (A2) Left-border accent — section indicator (subtle gray, reusable) */
body.woocommerce-cart .wc-block-cart__sidebar .wp-block-woocommerce-cart-totals-block,
body.woocommerce-checkout .wc-block-components-checkout-step__content { border-left: 3px solid var(--border); padding-left: 20px; }

/* (A3) Primary action button — accent fill, hover swap */
/* !important required: WC Blocks injects button colors via inline CSS with !important — our rule must match that priority */
body.woocommerce-cart .wc-block-cart__submit-button,
body.woocommerce-checkout .wc-block-components-checkout-place-order-button { background: var(--accent) !important; color: #fff !important; border: 1.5px solid var(--accent); border-radius: var(--radius); font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; transition: background 0.15s ease, color 0.15s ease; min-width: 260px; padding: 16px 48px; }
body.woocommerce-cart .wc-block-cart__submit-button:hover,
body.woocommerce-checkout .wc-block-components-checkout-place-order-button:hover { background: #fff !important; color: var(--accent) !important; }

/* (A4) Input focus — border-color only, no glow (avoids floating label clash) */
body.woocommerce-cart .wc-block-components-text-input input:focus,
body.woocommerce-checkout .wc-block-components-text-input input:focus { border-color: var(--accent) !important; box-shadow: none !important; }

/* (A4b) Terms & Conditions checkbox — brand links */
body.woocommerce-checkout .wc-block-checkout__terms { font-size: 14px; color: var(--text-muted); }
body.woocommerce-checkout .wc-block-checkout__terms a { color: var(--navy); text-decoration: underline; }
body.woocommerce-checkout .wc-block-checkout__terms a:hover { color: var(--accent); }

/* (A5) Global checkbox — custom 18×18 square, accent fill */
input[type="checkbox"] {
  appearance: none; -webkit-appearance: none;
  width: 18px; height: 18px; min-width: 18px;
  border: 1px solid var(--border); border-radius: var(--radius);
  background: var(--surface); cursor: pointer; position: relative;
  vertical-align: middle; margin: 0;
  transition: background 0.15s ease, border-color 0.15s ease;
}
input[type="checkbox"]:checked {
  background: var(--accent); border-color: var(--accent);
}
input[type="checkbox"]:checked::after {
  content: ""; position: absolute; top: 2px; left: 5px;
  width: 5px; height: 9px;
  border: solid #fff; border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

/* (A6) Global radio — custom 20px circle, accent dot */
input[type="radio"] {
  appearance: none; -webkit-appearance: none;
  width: 20px; height: 20px; min-width: 20px;
  border: 2px solid var(--border); border-radius: 50%;
  background: var(--surface); cursor: pointer; position: relative;
  vertical-align: middle; margin: 0;
  transition: border-color 0.15s ease;
}
input[type="radio"]:checked {
  border-color: var(--accent);
}
input[type="radio"]:checked::after {
  content: ""; position: absolute;
  top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 10px; height: 10px;
  background: var(--accent); border-radius: 50%;
}

/* (A7) Notice recoloring — info variant uses accent */
body.woocommerce-cart .wc-block-components-notice-banner.is-info,
body.woocommerce-checkout .wc-block-components-notice-banner.is-info { border-color: var(--accent); background-color: #fff8f4; }

/* (A8) NotificationX suppression */
body.woocommerce-cart .notificationx-frontend, body.woocommerce-cart .nx-bar,
body.woocommerce-checkout .notificationx-frontend, body.woocommerce-checkout .nx-bar { display: none; }

/* ── Checkout-Only: Page + Layout ── */

/* (B1) Off-white page background */
body.woocommerce-checkout { background: var(--bg); }

/* (B2) Hide site header/nav on checkout — show only checkout header */
body.woocommerce-checkout .denex-site-header,
body.woocommerce-checkout .denex-mobile-top-bar,
body.woocommerce-checkout .denex-mobile-nav { display: none !important; }
body.woocommerce-checkout .site-main { padding-top: 0 !important; }

/* (B3) Step number styling — navy, bold */
body.woocommerce-checkout .wc-block-checkout__form .wc-block-components-checkout-step__title::before { color: var(--navy); font-weight: 800; }

/* (B4) Order summary sidebar — card treatment (single border, no nesting) */
body.woocommerce-checkout .wc-block-checkout__sidebar .wc-block-components-sidebar { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow-sm); overflow: hidden; }
body.woocommerce-checkout .wc-block-checkout__sidebar .wp-block-woocommerce-checkout-order-summary-block { border: none; }

/* (B4c) WC 10.6.1 bug — fill-wrapper rendered on mobile by React but has no display:none in WC CSS at mobile widths */
/* Hides the duplicate second order summary that appears at bottom of checkout on mobile */
@container (max-width: 699px) {
  body.woocommerce-checkout .checkout-order-summary-block-fill-wrapper { display: none !important; }
}

/* (B4b) Order summary total — Public Sans 800, navy */
body.woocommerce-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
body.woocommerce-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__value { font-family: var(--font-heading); font-weight: 800; color: var(--navy); }
body.woocommerce-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__value { font-size: 20px; }

/* (B5) Payment method border → navy when selected */
body.woocommerce-checkout .wc-block-components-radio-control--highlight-checked label.wc-block-components-radio-control__option--checked-option-highlighted { box-shadow: inset 0 0 0 1.5px var(--navy); }

/* (B6) Accept Blue card wrap — lighter border + radius */
body.woocommerce-checkout .acceptblue-card-wrap { border-radius: var(--radius); border: 1px solid var(--border) !important; }

/* (B7) Accent bar above payment section */
body.woocommerce-checkout .wc-block-checkout__payment-method .wc-block-components-checkout-step__container::before { content: ""; display: block; height: 3px; background: var(--accent); border-radius: 2px; margin-bottom: 16px; }

/* ── Checkout Header: navy bg, accent border ── */
body.woocommerce-checkout .denex-checkout-header { background: var(--navy); border-bottom: 2px solid var(--accent); padding: 0 24px; }
body.woocommerce-checkout .denex-checkout-header-inner { max-width: var(--content-width); margin: 0 auto; display: flex; align-items: center; justify-content: space-between; height: 64px; }
body.woocommerce-checkout .denex-checkout-header-left { display: flex; align-items: center; gap: 24px; }
body.woocommerce-checkout .denex-checkout-logo { text-decoration: none; display: flex; align-items: center; }
body.woocommerce-checkout .denex-checkout-logo img { height: 40px; width: auto; }
body.woocommerce-checkout .denex-checkout-back { font-size: 13px; color: rgba(255,255,255,0.6); text-decoration: none; display: flex; align-items: center; gap: 6px; transition: color 0.15s ease; }
body.woocommerce-checkout .denex-checkout-back:hover { color: #fff; }
body.woocommerce-checkout .denex-checkout-contact { font: 400 12px/1.4 var(--font-body); color: rgba(255,255,255,0.5); display: flex; align-items: center; gap: 12px; }
body.woocommerce-checkout .denex-checkout-contact a { color: rgba(255,255,255,0.5); text-decoration: none; transition: color 0.15s ease; }
body.woocommerce-checkout .denex-checkout-contact a:hover { color: #fff; }
@media (max-width: 768px) {
  body.woocommerce-checkout .denex-checkout-logo img { height: 32px; }
  body.woocommerce-checkout .denex-checkout-contact { display: none; }
}

/* ================================================
   Login Modal + Inline Checkout Login
   ================================================ */

/* ── Dialog ── */
#denex-login-modal { border: none; border-radius: calc(var(--radius) * 2); padding: 0; max-width: 400px; width: calc(100% - 32px); box-shadow: var(--shadow-lg); background: var(--surface); }
#denex-login-modal::backdrop { background: rgba(13, 36, 61, 0.5); }

.denex-login-inner { padding: 0; }

.denex-login-header { padding: 24px 28px 0; display: flex; align-items: center; justify-content: space-between; }
.denex-login-header h2 { font: 800 20px/1.2 var(--font-heading); color: var(--navy); margin: 0; }
/* #denex-login-modal gives (1,1,0) — beats any class-based GP button rule */
#denex-login-modal .denex-login-close { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border: none; background: none; box-shadow: none; cursor: pointer; border-radius: 50%; color: var(--text-muted); padding: 0; transition: background 0.15s, color 0.15s; }
#denex-login-modal .denex-login-close:hover { background: var(--bg); color: var(--text); }

/* ── Shared form styles (modal + checkout inline) ── */
.denex-login-form { padding: 20px 28px 24px; }
.denex-login-field { margin-bottom: 14px; }
.denex-login-field label { display: block; font: var(--font-label); color: var(--text-light); text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 5px; }
.denex-login-field input { width: 100%; padding: 11px 14px; font: 400 14px/1.4 var(--font-body); border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.denex-login-field input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px rgba(var(--accent-rgb), 0.15); }

.denex-login-options { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; font-size: 13px; }
.denex-login-options label { display: flex; align-items: center; gap: 6px; color: var(--text-light); cursor: pointer; }
.denex-login-options a { color: var(--accent); text-decoration: none; }
.denex-login-options a:hover { text-decoration: underline; }

.denex-login-submit { width: 100%; padding: 14px; background: var(--accent); color: #fff; border: 1.5px solid var(--accent); border-radius: var(--radius); font: 700 14px/1 var(--font-body); text-transform: uppercase; letter-spacing: 0.06em; cursor: pointer; transition: background 0.15s, color 0.15s; }
.denex-login-submit:hover { background: var(--surface); color: var(--accent); }
.denex-login-submit:disabled { opacity: 0.6; cursor: wait; }

.denex-login-footer { padding: 0 28px 24px; text-align: center; font: 400 13px/1.5 var(--font-body); color: var(--text-muted); }
.denex-login-footer a { color: var(--accent); text-decoration: none; font-weight: 600; }
.denex-login-footer a:hover { text-decoration: underline; }

/* ── Error banner ── */
.denex-login-error { background: #fef2f2; border: 1px solid #fecaca; border-radius: var(--radius); padding: 10px 14px; font: 400 13px/1.4 var(--font-body); color: #b91c1c; margin-bottom: 14px; display: flex; align-items: center; gap: 8px; }

/* ── Header account icon ── */
.denex-account-trigger, .denex-account-link { background: none; border: none; cursor: pointer; color: #fff; display: flex; align-items: center; padding: 4px; transition: color 0.15s ease; }
.denex-account-trigger:hover, .denex-account-link:hover { color: var(--accent); background: none; }
.denex-account-trigger svg, .denex-account-link svg { stroke: currentColor; }


/* ── Mobile slideout account link ── */
.denex-slideout-account { border-top: 1px solid var(--border); margin-top: 12px; padding-top: 12px; }
.denex-slideout-account a.denex-account-trigger { color: var(--accent); font-weight: 600; background: none; border: none; text-decoration: none; cursor: pointer; }

/* ================================================
   3-Tier Footer System
   Tier 1 (Full): Newsletter + 4-col grid
   Tier 2 (Streamlined): Inline row + compact email
   Tier 3 (Minimal): Trust signals only
   ================================================ */

/* ── Hide native GP footer widgets site-wide (replaced by custom PHP footer) ── */
/* intentionally unscoped — applies globally */
.footer-widgets-container { display: none; }

/* ── Newsletter Pre-Footer (Tier 1, non-homepage) ── */
.denex-footer-newsletter {
  background: var(--navy);
  text-align: center;
  padding: 48px 24px;
}
.denex-footer-newsletter-inner {
  max-width: 420px;
  margin: 0 auto;
}
.denex-footer-newsletter-heading {
  color: #fff;
  font-family: var(--font-heading);
  font-size: 24px;
  font-weight: 700;
  text-transform: lowercase;
  margin: 0 0 6px;
  letter-spacing: -0.01em;
}
.denex-footer-newsletter-incentive {
  color: var(--accent);
  font-size: 13px;
  font-weight: 600;
  margin: 0 0 10px;
}
.denex-footer-newsletter-subtext {
  color: rgba(255,255,255,0.55);
  font-size: 13px;
  line-height: 1.6;
  margin: 0 0 18px;
}
.denex-footer-newsletter-form {
  max-width: 360px;
  margin: 0 auto;
}

/* ── Tier 1: Full Footer Grid ── */
.denex-footer--full {
  background: var(--navy-deep);
  padding: 40px 24px;
}
.denex-footer--full .denex-footer-inner {
  max-width: var(--content-width);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.8fr 1fr 1fr 1.4fr;
  gap: 32px;
}
.denex-footer--full .denex-footer-heading {
  font: var(--font-label);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 14px;
}
.denex-footer--full .denex-footer-brand .custom-logo {
  max-width: 100px;
  height: auto;
  display: block;
  margin-bottom: 12px;
}
.denex-footer--full .denex-footer-tagline {
  font-size: 12px;
  color: rgba(255,255,255,0.4);
  line-height: 1.7;
  margin: 0 0 16px;
}
.denex-footer--full .denex-footer-social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: rgba(255,255,255,0.08);
  border-radius: 50%;
  color: rgba(255,255,255,0.5);
  text-decoration: none;
  transition: background 0.2s var(--ease-out);
}
.denex-footer--full .denex-footer-social:hover {
  background: rgba(255,255,255,0.15);
  color: #fff;
}
.denex-footer--full .denex-footer-links ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.denex-footer--full .denex-footer-links li {
  margin: 0 0 8px;
}
.denex-footer--full .denex-footer-links a {
  color: rgba(255,255,255,0.55);
  text-decoration: none;
  font-size: 13px;
  transition: color 0.15s var(--ease-out);
}
.denex-footer--full .denex-footer-links a:hover {
  color: #fff;
}
.denex-footer--full .denex-footer-trust-item {
  display: flex;
  align-items: center;
  gap: 8px;
  color: rgba(255,255,255,0.5);
  font-size: 12px;
  margin-bottom: 10px;
}
.denex-footer--full .denex-footer-trust-item svg {
  color: var(--accent);
  flex-shrink: 0;
}

/* Tier 1 — mobile: 2x2 grid */
@media (max-width: 768px) {
  .denex-footer--full .denex-footer-inner {
    grid-template-columns: 1fr 1fr;
    gap: 24px;
  }
  .denex-footer--full { padding: 32px 16px; }
  .denex-footer-newsletter { padding: 40px 16px; }
}
/* Keep 2-column layout on small phones — removed the 480px 1-column override */

/* ── Tier 2: Streamlined Footer ── */
.denex-footer--streamlined {
  background: var(--navy);
  padding: 28px 24px;
}
.denex-footer--streamlined .denex-footer-inner {
  max-width: var(--content-width);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}
.denex-footer--streamlined .denex-footer-streamlined-brand {
  display: flex;
  align-items: center;
  gap: 12px;
  order: 1;
}
.denex-footer--streamlined .denex-footer-streamlined-brand .custom-logo {
  max-width: 40px;
  height: auto;
}
.denex-footer--streamlined .denex-footer-tagline {
  font-size: 11px;
  color: rgba(255,255,255,0.35);
}
.denex-footer--streamlined .denex-footer-streamlined-nav {
  display: flex;
  gap: 24px;
  order: 2;
}
.denex-footer--streamlined .denex-footer-streamlined-nav a {
  color: rgba(255,255,255,0.5);
  font-size: 13px;
  text-decoration: none;
  transition: color 0.15s var(--ease-out);
}
.denex-footer--streamlined .denex-footer-streamlined-nav a:hover {
  color: #fff;
}
.denex-footer--streamlined .denex-footer-streamlined-trust {
  display: flex;
  align-items: center;
  gap: 16px;
  font-size: 11px;
  color: rgba(255,255,255,0.4);
  order: 4;
}
.denex-footer--streamlined .denex-footer-streamlined-trust svg {
  color: var(--accent);
  vertical-align: -2px;
  margin-right: 4px;
}
.denex-footer--streamlined .denex-footer-streamlined-email {
  display: flex;
  flex-direction: column;
  gap: 4px;
  order: 5;
}
.denex-footer--streamlined .denex-footer-streamlined-incentive {
  font-size: 12px;
  font-weight: 600;
  color: var(--accent);
}
.denex-footer--streamlined .denex-footer-social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: rgba(255,255,255,0.08);
  border-radius: 50%;
  color: rgba(255,255,255,0.45);
  text-decoration: none;
  transition: background 0.2s var(--ease-out);
  order: 3;
}
.denex-footer--streamlined .denex-footer-social:hover {
  background: rgba(255,255,255,0.15);
  color: #fff;
}

/* Tier 2 — mobile: 2-column grid (brand left, nav right) */
@media (max-width: 768px) {
  .denex-footer--streamlined .denex-footer-inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    justify-content: unset;
    text-align: left;
  }
  .denex-footer--streamlined .denex-footer-streamlined-brand {
    width: auto;
    justify-content: flex-start;
  }
  .denex-footer--streamlined .denex-footer-streamlined-nav {
    gap: 12px;
    flex-wrap: wrap;
    justify-content: flex-start;
  }
  .denex-footer--streamlined .denex-footer-streamlined-trust,
  .denex-footer--streamlined .denex-footer-streamlined-email {
    grid-column: 1 / -1;
  }
}
/* Tier 2 — hide footer on mobile product pages (sticky ATC + bottom nav suffice) */
@media (max-width: 768px) {
  body.single-product .denex-footer--streamlined,
  body.single-product.denex-footer-tier-2 .site-info {
    display: none !important;
  }
}

/* ── Tier 3: Minimal Footer ── */
.denex-footer--minimal {
  background: var(--navy);
  padding: 16px;
}
.denex-footer--minimal .denex-footer-inner {
  max-width: var(--content-width);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
}
.denex-footer--minimal .denex-footer-minimal-trust {
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
  justify-content: center;
}
.denex-footer--minimal .denex-footer-minimal-trust span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: rgba(255,255,255,0.5);
  font-size: 12px;
}
.denex-footer--minimal .denex-footer-minimal-trust svg {
  color: var(--accent);
}

/* ── .site-info Copyright Bar — per-tier styling ── */
body.denex-footer-tier-1 .site-info {
  background: var(--navy-deep);
  border-top: 1px solid rgba(255,255,255,0.08);
  padding: 14px 24px;
  font-size: 11px;
  color: rgba(255,255,255,0.25);
}
body.denex-footer-tier-1 .site-info a {
  color: rgba(255,255,255,0.25);
  text-decoration: none;
}
body.denex-footer-tier-1 .site-info a:hover {
  color: rgba(255,255,255,0.5);
}

body.denex-footer-tier-2 .site-info {
  background: var(--navy);
  border-top: 1px solid rgba(255,255,255,0.08);
  padding: 12px 24px;
  font-size: 10px;
  color: rgba(255,255,255,0.2);
}
body.denex-footer-tier-2 .site-info a {
  color: rgba(255,255,255,0.2);
  text-decoration: none;
}
body.denex-footer-tier-2 .site-info a:hover {
  color: rgba(255,255,255,0.4);
}

body.denex-footer-tier-3 .site-info {
  background: var(--navy);
  border-top: none;
  padding: 12px 24px;
  font-size: 10px;
  color: rgba(255,255,255,0.2);
}
body.denex-footer-tier-3 .site-info a {
  color: rgba(255,255,255,0.2);
  text-decoration: none;
}
body.denex-footer-tier-3 .site-info a:hover {
  color: rgba(255,255,255,0.4);
}

/* Hide variation description text in cart/checkout items */
body.woocommerce-cart .wc-block-components-product-metadata__description,
body.woocommerce-checkout .wc-block-components-product-metadata__description {
  display: none;
}

/* ================================================
   PRODUCT TILES — Base Layer (all contexts)
   ================================================ */

/* Grid: 4 cols desktop, 2 cols mobile. GP only applies grid via
   .wc-columns-container — shortcodes and custom sections need this fallback. */
.woocommerce ul.products {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  align-items: stretch;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after {
  display: none;
}
@media (max-width: 768px) {
  .woocommerce ul.products {
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
  }
}

/* Card — reset WC float layout so CSS Grid works */
/* (0,4,2) matches WC smallscreen [class*=columns-] selector — cascade order wins */
.woocommerce ul.products[class*=columns-] li.product,
.woocommerce ul.products li.product {
  float: none;
  width: auto;
  margin: 0;
  background: var(--surface);
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
/* Equal height: link fills card, title fills remaining space, price stays at bottom */
/* (0,4,2) — no competing rule sets flex on this element */
.woocommerce ul.products li.product .woocommerce-LoopProduct-link {
  flex: 1;
  display: flex;
  flex-direction: column;
  margin-bottom: 0;
}
.woocommerce ul.products li.product .woocommerce-LoopProduct-link > .woocommerce-loop-product__title {
  flex: 1;
}
.woocommerce ul.products li.product:hover {
  border-color: var(--navy);
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

/* Image: 1:1 aspect */
.woocommerce ul.products li.product img {
  aspect-ratio: 1 / 1;
  object-fit: cover;
  background: #fff;
  width: 100%;
  height: auto;
  transition: filter 0.2s ease;
}
.woocommerce ul.products li.product a:hover img {
  filter: saturate(0.75) brightness(0.92);
}

/* Title */
.woocommerce ul.products li.product .woocommerce-loop-product__title {
  font-family: var(--font-heading);
  font-size: 14px;
  font-weight: 800;
  color: var(--text);
  padding: 12px 12px 4px;
  text-align: center;
}

/* Star rating */
.woocommerce ul.products li.product .star-rating {
  font-size: 12px;
  color: var(--accent);
  margin: 2px auto 4px;
}
.woocommerce ul.products li.product .star-rating[title="Not yet rated"] {
  display: none;
}
.woocommerce ul.products li.product .star-rating span::before {
  color: var(--accent);
}

/* Price */
.woocommerce ul.products li.product .price {
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  padding: 0 12px;
  text-align: center;
}

/* ATC button: reveal on hover, always visible on touch */
.woocommerce ul.products li.product .button {
  display: block;
  background: var(--accent);
  color: #fff;
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-align: center;
  padding: 10px 16px;
  margin: 8px 12px 12px;
  border: 1.5px solid transparent;
  border-radius: var(--radius);
  transition: opacity 0.2s ease, transform 0.2s ease, background 0.15s ease;
}
@media (hover: hover) {
  .woocommerce ul.products li.product .button {
    opacity: 0;
    transform: translateY(4px);
  }
  .woocommerce ul.products li.product:hover .button {
    opacity: 1;
    transform: translateY(0);
  }
}
.woocommerce ul.products li.product .button:hover {
  background: transparent;
  color: var(--accent);
  border-color: var(--accent);
}

/* ================================================
   PRODUCT TILES — Simplified Variant
   Related, upsells, cross-sells: no ATC, smaller title
   ================================================ */
.dnx-v2-related ul.products li.product .button,
.related.products ul.products li.product .button,
section.upsells ul.products li.product .button,
section.cross-sells ul.products li.product .button {
  display: none;
}
.dnx-v2-related ul.products li.product .woocommerce-loop-product__title,
.related.products ul.products li.product .woocommerce-loop-product__title,
section.upsells ul.products li.product .woocommerce-loop-product__title,
section.cross-sells ul.products li.product .woocommerce-loop-product__title {
  font-size: 13px;
  padding: 12px 12px 4px;
}
.dnx-v2-related ul.products li.product .price,
.related.products ul.products li.product .price,
section.upsells ul.products li.product .price,
section.cross-sells ul.products li.product .price {
  padding: 0 12px 12px;
}

/* ── Product Disclaimers ─────────────────────────────────────────── */
body.single-product .denex-product-disclaimers {
  max-width: 720px;
  margin: 0 auto;
  padding: 0 24px;
}
body.single-product .denex-disclaimer-rule {
  border: none;
  border-top: 1px solid rgba(0,0,0,0.12);
  margin: 32px 0 20px;
}
body.single-product .denex-disclaimer-text {
  font-style: italic;
  font-size: 0.8rem;
  line-height: 1.6;
  margin-bottom: 8px;
}
body.single-product .denex-disclaimer-text strong {
  font-style: normal;
}

/* ================================================
   Product V2 — Star Rating Below Title
   ================================================ */
body.single-product .dnx-v2-rating {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 8px 0 4px;
}
body.single-product .dnx-v2-rating .star-rating {
  font-size: 14px;
  color: var(--accent);
}
body.single-product .dnx-v2-rating .star-rating span::before {
  color: var(--accent);
}
body.single-product .dnx-v2-rating__link {
  font: 400 14px/1 var(--font-body);
  color: var(--text-muted);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: all 0.2s var(--ease-out);
}
body.single-product .dnx-v2-rating__link:hover {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

/* (Star rating loop rules moved to unified base layer above) */

/* ================================================
   Product V2 — Reviews Section
   ================================================ */
body.single-product .dnx-v2-reviews {
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 64px 24px;
}
body.single-product .dnx-v2-reviews #reviews {
  max-width: 780px;
  margin: 0 auto;
}

/* Rating summary */
body.single-product .denex-review-summary {
  display: flex;
  gap: 32px;
  align-items: flex-start;
  margin-bottom: 32px;
  padding: 24px;
  background: var(--bg);
  border-radius: var(--radius);
  border: 1px solid var(--border);
}
body.single-product .denex-review-summary__left {
  text-align: center;
  min-width: 100px;
  flex-shrink: 0;
}
body.single-product .denex-review-summary__avg {
  display: block;
  font: 800 36px/1 var(--font-heading);
  color: var(--text);
}
body.single-product .denex-review-summary__stars {
  margin: 6px 0;
}
body.single-product .denex-review-summary__stars .star-rating {
  display: inline-block;
  font-size: 15px;
  color: var(--accent);
}
body.single-product .denex-review-summary__stars .star-rating span::before {
  color: var(--accent);
}
body.single-product .denex-review-summary__count {
  font: 400 13px/1 var(--font-body);
  color: var(--text-muted);
}
body.single-product .denex-review-summary__bars {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
body.single-product .denex-review-bar {
  display: flex;
  align-items: center;
  gap: 8px;
}
body.single-product .denex-review-bar__label {
  font: 500 13px/1 var(--font-body);
  color: var(--text);
  min-width: 32px;
  text-align: right;
}
body.single-product .denex-review-bar__track {
  flex: 1;
  height: 10px;
  background: var(--border);
  border-radius: 5px;
  overflow: hidden;
}
body.single-product .denex-review-bar__fill {
  height: 100%;
  background: var(--accent);
  border-radius: 5px;
  transition: width 0.3s var(--ease-out);
}
body.single-product .denex-review-bar__count {
  font: 400 13px/1 var(--font-body);
  color: var(--text-muted);
  min-width: 24px;
}

/* Section title */
body.single-product .dnx-v2-reviews .woocommerce-Reviews-title {
  font: 800 28px/1.2 var(--font-heading);
  color: var(--text);
  letter-spacing: -0.01em;
  text-transform: lowercase;
  margin-bottom: 32px;
}

/* Review list */
body.single-product .dnx-v2-reviews ol.commentlist {
  list-style: none;
  padding: 0;
  margin: 0;
}
body.single-product .dnx-v2-reviews ol.commentlist li.comment {
  border-bottom: 1px solid var(--border);
  padding: 24px 0;
}
body.single-product .dnx-v2-reviews ol.commentlist li.comment:first-child {
  padding-top: 0;
}
body.single-product .dnx-v2-reviews ol.commentlist li.comment:last-child {
  border-bottom: none;
}

/* Review card layout */
body.single-product .dnx-v2-reviews .comment_container {
  display: flex;
  gap: 16px;
}
body.single-product .dnx-v2-reviews .comment_container > img.avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  flex-shrink: 0;
}
body.single-product .dnx-v2-reviews .comment-text {
  flex: 1;
  min-width: 0;
}

/* Star rating */
body.single-product .dnx-v2-reviews .star-rating {
  float: none;
  display: inline-block;
  margin-bottom: 8px;
  color: var(--accent);
  font-size: 14px;
}
body.single-product .dnx-v2-reviews .star-rating span::before {
  color: var(--accent);
}

/* Review meta */
body.single-product .dnx-v2-reviews .comment-text .meta {
  font: 400 13px/1.4 var(--font-body);
  color: var(--text-muted);
  margin-bottom: 8px;
}
body.single-product .dnx-v2-reviews .woocommerce-review__author {
  color: var(--text);
  font-weight: 600;
}
body.single-product .dnx-v2-reviews .woocommerce-review__published-date {
  color: var(--text-muted);
}

/* Review body */
body.single-product .dnx-v2-reviews .comment-text .description p {
  font: 400 15px/1.7 var(--font-body);
  color: var(--text-light);
  margin: 0;
}
body.single-product .dnx-v2-reviews .comment-text .description p strong {
  display: block;
  font: 600 16px/1.4 var(--font-body);
  color: var(--text);
  margin-bottom: 6px;
}

/* No reviews message */
body.single-product .dnx-v2-reviews .woocommerce-noreviews {
  font: 400 15px/1.6 var(--font-body);
  color: var(--text-muted);
}

/* Pagination */
body.single-product .dnx-v2-reviews .woocommerce-pagination {
  margin-top: 24px;
  text-align: center;
}
body.single-product .dnx-v2-reviews .woocommerce-pagination ul {
  list-style: none;
  padding: 0;
  display: flex;
  gap: 8px;
  justify-content: center;
}
body.single-product .dnx-v2-reviews .woocommerce-pagination a,
body.single-product .dnx-v2-reviews .woocommerce-pagination span {
  display: inline-block;
  padding: 8px 14px;
  font: 500 14px/1 var(--font-body);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text);
  text-decoration: none;
  transition: all 0.2s var(--ease-out);
}
body.single-product .dnx-v2-reviews .woocommerce-pagination a:hover {
  border-color: var(--accent);
  color: var(--accent);
}
body.single-product .dnx-v2-reviews .woocommerce-pagination span.current {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}

/* Review form */
body.single-product .dnx-v2-reviews #review_form_wrapper {
  margin-top: 40px;
  padding-top: 40px;
  border-top: 1px solid var(--border);
}
body.single-product .dnx-v2-reviews .comment-reply-title {
  display: block;
  font: 700 20px/1.3 var(--font-heading);
  color: var(--text);
  margin-bottom: 20px;
}
body.single-product .dnx-v2-reviews .comment-form label {
  display: block;
  font: 600 13px/1.3 var(--font-body);
  color: var(--text);
  margin-bottom: 6px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
body.single-product .dnx-v2-reviews .comment-form input[type="text"],
body.single-product .dnx-v2-reviews .comment-form input[type="email"],
body.single-product .dnx-v2-reviews .comment-form textarea {
  width: 100%;
  padding: 12px 16px;
  font: 400 15px/1.5 var(--font-body);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  transition: border-color 0.2s var(--ease-out);
  box-sizing: border-box;
}
body.single-product .dnx-v2-reviews .comment-form input:focus,
body.single-product .dnx-v2-reviews .comment-form textarea:focus {
  outline: none;
  border-color: var(--accent);
}
body.single-product .dnx-v2-reviews .comment-form textarea {
  min-height: 120px;
  resize: vertical;
}
body.single-product .dnx-v2-reviews .comment-form p {
  margin-bottom: 16px;
}
body.single-product .dnx-v2-reviews .comment-form .form-submit input[type="submit"] {
  display: inline-block;
  padding: 14px 32px;
  font: 700 14px/1 var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: var(--accent);
  color: #fff;
  border: none;
  border-radius: var(--radius);
  cursor: pointer;
  transition: background 0.2s var(--ease-out);
}
body.single-product .dnx-v2-reviews .comment-form .form-submit input[type="submit"]:hover {
  background: var(--accent-dark);
}

/* Rating selector in form */
body.single-product .dnx-v2-reviews .comment-form-rating select {
  padding: 10px 14px;
  font: 400 15px/1.5 var(--font-body);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
}

/* Mobile */
@media (max-width: 768px) {
  body.single-product .dnx-v2-reviews {
    padding: 48px 16px;
  }
  body.single-product .dnx-v2-reviews .woocommerce-Reviews-title {
    font-size: 22px;
  }
  body.single-product .dnx-v2-reviews .comment_container > img.avatar {
    width: 32px;
    height: 32px;
  }
  body.single-product .denex-review-summary {
    flex-direction: column;
    gap: 20px;
  }
  body.single-product .denex-review-summary__left {
    display: flex;
    align-items: center;
    gap: 12px;
    text-align: left;
    min-width: auto;
  }
  body.single-product .denex-review-summary__avg {
    font-size: 28px;
  }
}

/* ================================================
   Phase 9: Category Pages & Account Pages
   ================================================ */

/* --- 9.0: Shared layout reset for all Phase 9 pages --- */
/* Kill all GP wrapper spacing so hero sits flush below sticky header.
   Targets every element in the chain: #page → #content → #primary → main → article → .inside-article → .entry-content
   GP sticky header adds padding-top to body — keep that, zero everything else */
body.post-type-archive-product #page,
body.post-type-archive-product #content,
body.post-type-archive-product #primary,
body.post-type-archive-product #main,
body.post-type-archive-product .inside-article,
body.post-type-archive-product .entry-content,
body.tax-product_cat #page,
body.tax-product_cat #content,
body.tax-product_cat #primary,
body.tax-product_cat #main,
body.tax-product_cat .inside-article,
body.tax-product_cat .entry-content,
body.woocommerce-account #page,
body.woocommerce-account #content,
body.woocommerce-account #primary,
body.woocommerce-account #main,
body.woocommerce-account .inside-article,
body.woocommerce-account .entry-content,
body.page-contact #page,
body.page-contact #content,
body.page-contact #primary,
body.page-contact #main,
body.page-contact .inside-article,
body.page-contact .entry-content {
    margin-top: 0;
    padding-top: 0;
}
/* Force block layout on archive pages (GP uses grid which puts hero beside content) */
body.post-type-archive-product #content,
body.tax-product_cat #content {
    display: block;
}
/* Hide duplicate page titles */
body.post-type-archive-product .woocommerce-products-header__title,
body.tax-product_cat .woocommerce-products-header__title {
    display: none;
}
body.woocommerce-account .entry-header,
body.page-contact .entry-header {
    display: none;
}

/* --- 9.1: Archive Hero (shared by shop + category) --- */
body.post-type-archive-product .denex-archive-hero,
body.tax-product_cat .denex-archive-hero {
    background: var(--navy);
    width: 100vw;
    margin-left: calc(-50vw + 50%);
    padding: 100px 24px 60px;
    margin-bottom: 32px;
}
.denex-archive-hero-inner {
    max-width: 1200px;
    margin: 0 auto;
}
.denex-archive-breadcrumbs {
    font-weight: 400; font-size: 12px; line-height: 1; font-family: var(--font-body);
    color: rgba(255,255,255,0.60);
    margin-bottom: 12px;
}
.denex-archive-breadcrumbs a {
    color: inherit;
    text-decoration: none;
}
.denex-archive-hero-title {
    font-weight: 900; font-size: 36px; line-height: 1.0; font-family: var(--font-heading);
    color: #fff;
    letter-spacing: -0.02em;
    margin: 0 0 8px;
}
.denex-archive-hero-tagline {
    font-weight: 400; font-size: 16px; line-height: 1.5; font-family: var(--font-body);
    color: rgba(255,255,255,0.70);
    margin: 0;
}
.denex-hero-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 16px;
}
.denex-hero-pill {
    display: inline-block;
    padding: 8px 16px;
    border: 1.5px solid rgba(255,255,255,0.50);
    border-radius: 4px;
    font-weight: 700; font-size: 12px; line-height: 1; font-family: var(--font-body);
    text-transform: uppercase;
    color: #fff;
    text-decoration: none;
    letter-spacing: 0.06em;
    transition: background 0.15s ease, color 0.15s ease;
}
.denex-hero-pill:hover {
    background: #fff;
    color: var(--navy);
}

/* --- 9.2: Account Hero --- */
body.woocommerce-account .denex-account-hero {
    background: var(--navy);
    width: 100vw;
    margin-left: calc(-50vw + 50%);
    padding: 100px 24px 60px;
    margin-bottom: 32px;
}
.denex-account-hero-inner {
    max-width: 1200px;
    margin: 0 auto;
}
.denex-account-breadcrumbs {
    font-weight: 400; font-size: 12px; line-height: 1; font-family: var(--font-body);
    color: rgba(255,255,255,0.60);
    margin-bottom: 12px;
}
.denex-account-breadcrumbs a {
    color: inherit;
    text-decoration: none;
}
.denex-account-hero-title {
    font-weight: 900; font-size: 36px; line-height: 1.0; font-family: var(--font-heading);
    color: #fff;
    letter-spacing: -0.02em;
    margin: 0;
}

/* === Shared Static Page Hero (page-static.php template + Learning Center) === */
body.page-template-page-static {
    overflow-x: clip;
}
body.page-template-page-static .site-content {
    display: block;
}
body.page-template-page-static #primary {
    width: 100%;
    float: none;
}
body.page-template-page-static #secondary {
    display: none;
}
.denex-page-hero {
    background: var(--navy);
    width: 100vw;
    margin-left: calc(-50vw + 50%);
    padding: 100px 24px 32px;
    margin-bottom: 48px;
}
.denex-page-hero-inner {
    max-width: 1200px;
    margin: 0 auto;
}
.denex-page-breadcrumbs {
    font-weight: 400; font-size: 12px; line-height: 1; font-family: var(--font-body);
    color: rgba(255,255,255,0.60);
    margin-bottom: 12px;
}
.denex-page-breadcrumbs a {
    color: inherit;
    text-decoration: none;
}
.denex-page-hero-title {
    font-weight: 900; font-size: 36px; line-height: 1.0; font-family: var(--font-heading);
    color: #fff;
    letter-spacing: -0.02em;
    margin: 0 0 8px;
}
.denex-page-hero-tagline {
    font-weight: 400; font-size: 16px; line-height: 1.5; font-family: var(--font-body);
    color: rgba(255,255,255,0.85);
    margin: 0;
}

/* --- 9.4: Product Grid (archive pages) --- */
body.post-type-archive-product ul.products,
body.tax-product_cat ul.products {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
    list-style: none;
    margin: 0;
    padding: 0;
}
body.post-type-archive-product ul.products li.product,
body.tax-product_cat ul.products li.product {
    background: var(--surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
    transition: box-shadow 0.15s ease;
    padding: 0;
    margin: 0;
    width: auto;
    float: none;
}
body.post-type-archive-product ul.products li.product:hover,
body.tax-product_cat ul.products li.product:hover {
    box-shadow: var(--shadow-md);
}
body.post-type-archive-product ul.products li.product a img,
body.tax-product_cat ul.products li.product a img {
    width: 100%;
    height: auto;
    display: block;
}
body.post-type-archive-product ul.products li.product .woocommerce-loop-product__title,
body.tax-product_cat ul.products li.product .woocommerce-loop-product__title {
    font-weight: 800; font-size: 15px; line-height: 1.3; font-family: var(--font-heading);
    color: var(--navy);
    padding: 12px 12px 4px;
    margin: 0;
}
body.post-type-archive-product ul.products li.product .price,
body.tax-product_cat ul.products li.product .price {
    font-weight: 400; font-size: 15px; line-height: 1.4; font-family: var(--font-body);
    color: var(--text);
    padding: 0 12px 12px;
}
/* --- 9.4b: Sale Badge --- */
body.woocommerce ul.products li.product .onsale,
body.woocommerce span.onsale,
body.single-product .onsale {
    background: var(--accent);
    color: #fff;
    font-weight: 700; font-size: 13px; line-height: 1; font-family: var(--font-heading);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-radius: 0;
    padding: 6px 12px;
    position: absolute;
    top: 10px;
    right: 10px;
    left: auto;
    margin: 0;
    min-height: auto;
    min-width: auto;
    line-height: 1;
    z-index: 2;
}

/* --- 9.5: Sort Bar --- */
body.post-type-archive-product .woocommerce-result-count,
body.tax-product_cat .woocommerce-result-count {
    font-weight: 400; font-size: 14px; line-height: 1; font-family: var(--font-body);
    color: var(--text-muted);
    margin: 0;
    padding: 16px 0;
}
body.post-type-archive-product .woocommerce-ordering select,
body.tax-product_cat .woocommerce-ordering select {
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--surface);
    padding: 10px 36px 10px 14px;
    font-weight: 400; font-size: 14px; line-height: 1.4; font-family: var(--font-body);
    color: var(--text);
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23777777' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    outline: none;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
body.post-type-archive-product .woocommerce-ordering select:focus,
body.tax-product_cat .woocommerce-ordering select:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(204,85,0,0.12);
}

/* --- 9.5b: Hide GP WooCommerce icon on sort dropdown (child theme uses custom SVG arrow) --- */
body.post-type-archive-product .woocommerce-ordering::after,
body.tax-product_cat .woocommerce-ordering::after {
    display: none;
}

/* --- 9.6: WC Pagination --- */
body.post-type-archive-product .woocommerce-pagination,
body.tax-product_cat .woocommerce-pagination {
    text-align: center;
    margin-top: 32px;
}
body.post-type-archive-product .woocommerce-pagination ul,
body.tax-product_cat .woocommerce-pagination ul {
    display: flex;
    justify-content: center;
    gap: 4px;
    list-style: none;
    padding: 0;
    margin: 0;
    border: 0;
}
body.post-type-archive-product .woocommerce-pagination ul li a,
body.post-type-archive-product .woocommerce-pagination ul li span,
body.tax-product_cat .woocommerce-pagination ul li a,
body.tax-product_cat .woocommerce-pagination ul li span {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    font-weight: 400; font-size: 14px; line-height: 1; font-family: var(--font-body);
    color: var(--text);
    text-decoration: none;
    transition: background 0.15s ease;
}
body.post-type-archive-product .woocommerce-pagination ul li a:hover,
body.tax-product_cat .woocommerce-pagination ul li a:hover {
    background: var(--bg);
}
body.post-type-archive-product .woocommerce-pagination ul li span.current,
body.tax-product_cat .woocommerce-pagination ul li span.current {
    background: var(--navy);
    color: #fff;
    border-color: var(--navy);
}

/* --- 9.7: My Account Nav (desktop) --- */
body.woocommerce-account .woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
body.woocommerce-account .woocommerce-MyAccount-navigation li a {
    display: block;
    font-weight: 400; font-size: 14px; line-height: 1.4; font-family: var(--font-body);
    color: var(--text);
    padding: 8px 12px;
    text-decoration: none;
    transition: color 0.15s ease;
}
body.woocommerce-account .woocommerce-MyAccount-navigation li a:hover {
    color: var(--accent);
}
body.woocommerce-account .woocommerce-MyAccount-navigation-link.is-active a,
body.woocommerce-account .woocommerce-MyAccount-navigation-link--is-active a {
    color: var(--accent);
    border-left: 3px solid var(--accent);
    padding-left: 12px;
}

/* --- 9.8: My Account Nav (mobile scroll tabs) --- */
@media (max-width: 768px) {
    body.woocommerce-account .woocommerce-MyAccount-navigation ul {
        display: flex;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        gap: 0;
        padding: 0;
        list-style: none;
        background: var(--bg);
        border-bottom: 1px solid var(--border);
        margin: 0 0 24px;
        width: 100vw;
        margin-left: calc(-50vw + 50%);
    }
    body.woocommerce-account .woocommerce-MyAccount-navigation ul::-webkit-scrollbar {
        display: none;
    }
    body.woocommerce-account .woocommerce-MyAccount-navigation li {
        flex-shrink: 0;
    }
    body.woocommerce-account .woocommerce-MyAccount-navigation li a {
        display: block;
        padding: 12px 16px;
        white-space: nowrap;
        border-bottom: 2px solid transparent;
        border-left: none;
    }
    body.woocommerce-account .woocommerce-MyAccount-navigation-link.is-active a,
    body.woocommerce-account .woocommerce-MyAccount-navigation-link--is-active a {
        border-bottom-color: var(--accent);
        color: var(--accent);
        border-left: none;
    }
}

/* --- 9.9: My Account Content Area --- */
body.woocommerce-account .woocommerce-MyAccount-content {
    background: var(--surface);
    padding: 24px;
    border-radius: var(--radius);
    border: 1px solid var(--border);
}
body.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button,
body.woocommerce-account .woocommerce-MyAccount-content button[type="submit"] {
    background: var(--accent);
    color: #fff;
    border: 1.5px solid var(--accent);
    text-transform: uppercase;
    font-weight: 700; font-size: 12px; line-height: 1; font-family: var(--font-body);
    letter-spacing: 0.06em;
    padding: 16px 32px;
    border-radius: var(--radius);
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
body.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button:hover,
body.woocommerce-account .woocommerce-MyAccount-content button[type="submit"]:hover {
    background: var(--surface);
    color: var(--accent);
    border-color: var(--accent);
}

/* --- 9.10: WC Orders Table --- */
body.woocommerce-account .woocommerce-orders-table {
    width: 100%;
    border-collapse: collapse;
}
body.woocommerce-account .woocommerce-orders-table thead th {
    background: var(--bg);
    border-bottom: 2px solid var(--navy);
    font-weight: 700; font-size: 12px; line-height: 1; font-family: var(--font-body);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--navy);
    padding: 12px 16px;
    text-align: left;
}
body.woocommerce-account .woocommerce-orders-table tbody td {
    background: var(--surface);
    border-bottom: 1px solid var(--border);
    font-weight: 400; font-size: 14px; line-height: 1.4; font-family: var(--font-body);
    color: var(--text);
    padding: 12px 16px;
}
body.woocommerce-account .woocommerce-orders-table tbody tr:hover td {
    background: #fafbfd;
}
body.woocommerce-account .woocommerce-orders-table .woocommerce-orders-table__cell-order-actions a {
    color: var(--accent);
    font-weight: 700;
    text-decoration: none;
}
@media (max-width: 768px) {
    body.woocommerce-account .woocommerce-orders-table thead {
        display: none;
    }
    body.woocommerce-account .woocommerce-orders-table tbody tr {
        display: block;
        background: var(--surface);
        border: 1px solid var(--border);
        border-radius: var(--radius);
        padding: 16px;
        margin-bottom: 12px;
    }
    body.woocommerce-account .woocommerce-orders-table tbody td {
        display: block;
        border-bottom: none;
        padding: 4px 0;
    }
    body.woocommerce-account .woocommerce-orders-table tbody td::before {
        content: attr(data-title) ": ";
        font-weight: 700;
        color: var(--navy);
    }
}

/* --- 9.11: Login/Register 2-Column Layout --- */
body.woocommerce-account .woocommerce .col-1,
body.woocommerce-account .woocommerce .col-2 {
    display: inline-block;
    width: 48%;
    vertical-align: top;
    background: var(--surface);
    padding: 32px;
    border-radius: var(--radius);
    border: 1px solid var(--border);
    box-sizing: border-box;
}
body.woocommerce-account .woocommerce .col-1 {
    margin-right: 2%;
}
body.woocommerce-account .woocommerce-form-login h2,
body.woocommerce-account .woocommerce-form-register h2 {
    font-weight: 800; font-size: 24px; line-height: 1.2; font-family: var(--font-heading);
    color: var(--navy);
    text-transform: lowercase;
    margin: 0 0 24px;
}
body.woocommerce-account .woocommerce-form-login__submit,
body.woocommerce-account .woocommerce-form-register__submit {
    background: var(--accent);
    color: #fff;
    border: 1.5px solid var(--accent);
    text-transform: uppercase;
    font-weight: 700; font-size: 12px; line-height: 1; font-family: var(--font-body);
    letter-spacing: 0.06em;
    padding: 16px 32px;
    border-radius: var(--radius);
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
    width: 100%;
}
body.woocommerce-account .woocommerce-form-login__submit:hover,
body.woocommerce-account .woocommerce-form-register__submit:hover {
    background: var(--surface);
    color: var(--accent);
    border-color: var(--accent);
}
body.woocommerce-account .woocommerce-form__label-for-checkbox {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 400; font-size: 14px; line-height: 1.4; font-family: var(--font-body);
    color: var(--text);
}
body.woocommerce-account .woocommerce-form__label-for-checkbox input[type="checkbox"] {
    width: 18px;
    height: 18px;
    accent-color: var(--accent);
}
@media (max-width: 768px) {
    body.woocommerce-account .woocommerce .col-1,
    body.woocommerce-account .woocommerce .col-2 {
        width: 100%;
        display: block;
        margin-bottom: 24px;
        margin-right: 0;
    }
}

/* --- 9.12: Contact Page Form Styling --- */
body.page-contact .entry-content {
    background: var(--bg);
    padding: 48px 24px;
}
body.page-contact .wpforms-container {
    max-width: 680px;
    margin: 0 auto;
    background: var(--surface);
    padding: 32px;
    border-radius: var(--radius);
}
body.page-contact .wpforms-form .wpforms-field input,
body.page-contact .wpforms-form .wpforms-field textarea,
body.page-contact .wpforms-form .wpforms-field select {
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--surface);
    padding: 10px 14px;
    font-weight: 400; font-size: 14px; line-height: 1.4; font-family: var(--font-body);
    color: var(--text);
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
    outline: none;
    width: 100%;
    box-sizing: border-box;
}
body.page-contact .wpforms-form .wpforms-field input:focus,
body.page-contact .wpforms-form .wpforms-field textarea:focus,
body.page-contact .wpforms-form .wpforms-field select:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(204,85,0,0.12);
}
body.page-contact .wpforms-form .wpforms-field-label {
    font-weight: 700; font-size: 14px; line-height: 1.4; font-family: var(--font-body);
    color: var(--text);
    margin-bottom: 4px;
}
body.page-contact .wpforms-submit {
    background: var(--accent);
    color: #fff;
    border: 1.5px solid var(--accent);
    text-transform: uppercase;
    font-weight: 700; font-size: 12px; line-height: 1; font-family: var(--font-body);
    letter-spacing: 0.06em;
    padding: 16px 32px;
    border-radius: var(--radius);
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
body.page-contact .wpforms-submit:hover {
    background: var(--surface);
    color: var(--accent);
    border-color: var(--accent);
}

/* Contact info panel */
body.page-contact .denex-contact-info {
    max-width: 680px;
    margin: 40px auto 0;
    padding: 32px;
    background: var(--surface);
    border-top: 3px solid var(--accent);
}
body.page-contact .denex-contact-info-inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px 32px;
}
body.page-contact .denex-contact-info-item {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
body.page-contact .denex-contact-info-label {
    font-weight: 700; font-size: 11px; line-height: 1; font-family: var(--font-body);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--accent);
}
body.page-contact .denex-contact-info-value {
    font-weight: 400; font-size: 15px; line-height: 1.5; font-family: var(--font-body);
    color: var(--text);
}
body.page-contact .denex-contact-info-value a {
    color: var(--text);
    text-decoration: none;
}
body.page-contact .denex-contact-info-value a:hover {
    color: var(--accent);
}

@media (max-width: 768px) {
    body.page-contact .entry-content {
        padding: 32px 16px;
    }
    body.page-contact .wpforms-container {
        padding: 24px 16px;
    }
    body.page-contact .denex-contact-info-inner {
        grid-template-columns: 1fr;
    }
}

/* --- 9.13: Shared Form Field Styling --- */
body.woocommerce-account .woocommerce input[type="text"],
body.woocommerce-account .woocommerce input[type="email"],
body.woocommerce-account .woocommerce input[type="password"],
body.woocommerce-account .woocommerce input[type="tel"],
body.woocommerce-account .woocommerce select,
body.woocommerce-account .woocommerce textarea {
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--surface);
    padding: 10px 14px;
    font-weight: 400; font-size: 14px; line-height: 1.4; font-family: var(--font-body);
    color: var(--text);
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
    outline: none;
}
body.woocommerce-account .woocommerce input[type="text"]:focus,
body.woocommerce-account .woocommerce input[type="email"]:focus,
body.woocommerce-account .woocommerce input[type="password"]:focus,
body.woocommerce-account .woocommerce input[type="tel"]:focus,
body.woocommerce-account .woocommerce select:focus,
body.woocommerce-account .woocommerce textarea:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(204,85,0,0.12);
}

/* --- 9.R: Phase 9 Responsive --- */
@media (max-width: 768px) {
    body.post-type-archive-product .denex-archive-hero,
    body.tax-product_cat .denex-archive-hero {
        padding: 40px 16px;
    }
    .denex-archive-hero-title {
        font-size: 28px;
    }
    body.woocommerce-account .denex-account-hero {
        padding: 40px 16px;
    }
    .denex-account-hero-title {
        font-size: 28px;
    }
    .denex-page-hero {
        padding: 40px 16px;
    }
    .denex-page-hero-title {
        font-size: 28px;
    }
    body.post-type-archive-product.woocommerce #wc-column-container.wc-mobile-columns-1 .products,
    body.tax-product_cat.woocommerce #wc-column-container.wc-mobile-columns-1 .products {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 16px;
    }
}

/* ================================================
   Phase 10: Static Pages
   ================================================ */

/* --- 10.0: Shared layout reset --- */
body.page-about-us #page,
body.page-about-us #content,
body.page-about-us #primary,
body.page-about-us #main,
body.page-about-us .inside-article,
body.page-about-us .entry-content,
body.page-lab-results #page,
body.page-lab-results #content,
body.page-lab-results #primary,
body.page-lab-results #main,
body.page-lab-results .inside-article,
body.page-lab-results .entry-content,
body.blog #page,
body.blog #content,
body.blog #primary,
body.blog #main {
    margin-top: 0;
    padding-top: 0;
}
body.page-about-us .entry-header,
body.page-lab-results .entry-header {
    display: none;
}

/* About Us hero → .denex-page-hero (shared above) */

/* --- 10.2: About Us body content --- */
body.page-about-us .entry-content {
    max-width: 720px;
    padding: 0 24px 60px;
}
body.page-about-us .entry-content h2 {
    font-weight: 700; font-size: 22px; line-height: 1.2; font-family: var(--font-heading);
    color: var(--navy);
    margin: 36px 0 12px;
}
body.page-about-us .entry-content p {
    font-weight: 400; font-size: 17px; line-height: 1.7; font-family: var(--font-body);
    color: var(--text);
    margin: 0 0 16px;
}
body.page-about-us .wp-block-button__link {
    background: var(--accent);
    color: #fff;
    font-weight: 700; font-size: 14px; line-height: 1; font-family: var(--font-body);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 14px 28px;
    border-radius: 4px;
    text-decoration: none;
    display: inline-block;
    margin-top: 8px;
    transition: background 0.15s ease;
}
body.page-about-us .wp-block-button__link:hover {
    background: #a84400;
}

/* Lab Results hero → .denex-page-hero (shared above) */

/* --- 10.4: Lab Results columns --- */
body.page-lab-results .entry-content {
    padding: 0 24px 60px;
}
body.page-lab-results .wp-block-columns {
    gap: 32px;
    margin-bottom: 32px;
}
body.page-lab-results .wp-block-column h2 {
    font-weight: 700; font-size: 18px; line-height: 1.2; font-family: var(--font-heading);
    color: var(--navy);
    margin: 0 0 12px;
    padding-bottom: 8px;
    border-bottom: 2px solid var(--accent);
}
body.page-lab-results .wp-block-column ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
body.page-lab-results .wp-block-column li {
    font-weight: 400; font-size: 14px; line-height: 1.5; font-family: var(--font-body);
    color: var(--text);
    padding: 6px 0;
    border-bottom: 1px solid #e8eaed;
}
body.page-lab-results .wp-block-column li:last-child {
    border-bottom: none;
}
body.page-lab-results .wp-block-column li a {
    color: var(--navy);
    text-decoration: none;
}
body.page-lab-results .wp-block-column li a:hover {
    color: var(--accent);
    text-decoration: underline;
}

/* --- 10.5: Learning Center Blog Archive --- */
/* Hero → .denex-page-hero (shared above); grid-column + margin-bottom override: */
body.blog .denex-page-hero {
    margin-bottom: 0;
    grid-column: 1 / -1;
}
/* 3-column grid for blog posts */
body.blog #main {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    padding: 32px 24px 60px;
    max-width: 1200px;
    margin: 0 auto;
    box-sizing: border-box;
}
body.blog #main .navigation,
body.blog #main .page-numbers {
    grid-column: 1 / -1;
}
/* Post cards */
body.blog article.post,
body.blog article.type-post {
    background: var(--surface);
    border-radius: var(--radius);
    border: 1px solid #d4d8dd;
    box-shadow: var(--shadow-sm);
    padding: 24px;
    transition: box-shadow 0.15s ease;
}
body.blog article.post:hover,
body.blog article.type-post:hover {
    box-shadow: var(--shadow-md);
}
/* Reorder card so image sits above title/date (GP renders title first in DOM) */
body.blog .inside-article {
    display: flex;
    flex-direction: column;
}
/* Featured image — edge-to-edge at top of card */
body.blog .post-image,
body.blog .featured-image {
    order: -1;
    margin: -24px -24px 16px;
    border-radius: var(--radius) var(--radius) 0 0;
    overflow: hidden;
    line-height: 0;
}
body.blog .post-image img,
body.blog .featured-image img {
    width: 100%;
    height: 180px;
    object-fit: cover;
    display: block;
    transition: transform 0.3s ease;
}
body.blog article.post:hover .post-image img,
body.blog article.type-post:hover .featured-image img {
    transform: scale(1.04);
}
/* Hide excerpts only */
body.blog .entry-summary {
    display: none;
}
body.blog .entry-header {
    margin: 0;
}
body.blog .entry-title {
    font-weight: 700; font-size: 18px; line-height: 1.3; font-family: var(--font-heading);
    color: var(--navy);
    margin: 0 0 8px;
}
body.blog .entry-title a {
    color: inherit;
    text-decoration: none;
}
body.blog .entry-title a:hover {
    color: var(--accent);
}
body.blog .entry-meta {
    font-weight: 400; font-size: 13px; line-height: 1; font-family: var(--font-body);
    color: #888;
}
/* Hide all meta except posted-on date */
body.blog .entry-meta .byline,
body.blog .entry-meta .cat-links,
body.blog .entry-meta .tags-links,
body.blog .entry-meta .comments-link,
body.blog .entry-meta .edit-link {
    display: none;
}

/* --- 10.6: 404 Page --- */
body.error404 #page,
body.error404 #content,
body.error404 #primary,
body.error404 #main {
    margin-top: 0;
    padding-top: 0;
}
body.error404 .site-main {
    padding: 0;
}
.denex-404-hero {
    background: var(--navy);
    width: 100vw;
    margin-left: calc(-50vw + 50%);
    min-height: 70vh;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 80px 24px;
}
.denex-404-inner {
    max-width: 600px;
    margin: 0 auto;
}
.denex-404-title {
    font-weight: 900; font-size: 120px; line-height: 1.0; font-family: var(--font-heading);
    color: #fff;
    letter-spacing: -0.04em;
    margin: 0 0 16px;
}
.denex-404-message {
    font-weight: 400; font-size: 20px; line-height: 1.5; font-family: var(--font-body);
    color: rgba(255,255,255,0.75);
    margin: 0 0 32px;
}
.denex-404-cta {
    display: inline-block;
    background: var(--accent);
    color: #fff;
    font-weight: 700; font-size: 14px; line-height: 1; font-family: var(--font-body);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 16px 32px;
    border-radius: 4px;
    text-decoration: none;
    transition: background 0.15s ease;
}
.denex-404-cta:hover {
    background: #a84400;
    color: #fff;
}

/* --- 10.7: Age Gate styling --- */
/* Override plugin CSS vars — no unscoped rules */
.age-restriction {
    --ag-background-color: #0d243d;
    --ag-background-opacity: 1;
    --ag-form-background: #f5f7fa;
    --ag-text-color: #0d243d;
    --ag-form-max-width: 480px;
    --ag-form-radius: 8px;
    --ag-form-shadow: 0 8px 32px rgba(0,0,0,0.3);
    --ag-form-padding: 48px 40px;
    --ag-text-heading-size: 5rem;
    --ag-text-heading-weight: 900;
    --ag-text-heading-margin: 0 0 8px;
    --ag-text-headline-size: 1rem;
    --ag-text-headline-weight: 400;
    --ag-text-headline-margin: 0 0 32px;
    --ag-button-color-background: #cc5500;
    --ag-button-color-text: #fff;
    --ag-button-color-hover: #a84400;
    --ag-button-radius: 4px;
    --ag-button-padding: 14px 28px;
    --ag-button-size: 0.875rem;
    --ag-button-weight: 700;
    --ag-button-gap: 16px;
}
.age-gate__heading-title,
.age-gate-heading-title {
    font-family: var(--font-heading);
    letter-spacing: -0.04em;
}
/* Style the "exit" / No button as understated white text */
button.age-gate__submit--no,
button.age-gate-submit-no {
    background: transparent !important;
    color: rgba(13,36,61,0.50) !important;
    font-size: 0.8rem !important;
    font-weight: 400 !important;
    text-decoration: underline;
    padding: 8px 16px !important;
}
button.age-gate__submit--no:hover,
button.age-gate-submit-no:hover {
    background: transparent !important;
    color: var(--navy) !important;
}

/* --- 10.R: Phase 10 Responsive --- */
@media (max-width: 768px) {
    /* Shared hero mobile rules consolidated into Phase 9.R above */
    body.blog #main {
        grid-template-columns: 1fr;
        padding: 24px 16px 40px;
    }
    .denex-404-title {
        font-size: 72px;
    }
    .age-restriction {
        --ag-form-padding: 32px 24px;
        --ag-text-heading-size: 4rem;
    }
}

/* ============================================
   Announcement Bar — sitewide promo banner
   Injected at generate_before_header by promotions.php.
   Hidden on checkout/cart via PHP + CSS fallback.
   ============================================ */
body .denex-announcement-bar {
    background: var(--denex-navy, #0d1b2e);
    padding: 10px 20px;
    text-align: center;
    border-bottom: 1px solid rgba(255,255,255,0.08);
}
body .denex-announcement-bar a {
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-decoration: none;
}
body .denex-announcement-bar a:hover {
    text-decoration: underline;
}
body.woocommerce-checkout .denex-announcement-bar,
body.woocommerce-cart .denex-announcement-bar {
    display: none !important;
}
@media (max-width: 768px) {
    body .denex-announcement-bar { padding: 8px 16px; }
    body .denex-announcement-bar a { font-size: 12px; }
}
