/*
Theme Name: Kadence Child — Cannabiz Products
Template:   kadence
Version:    2.0.0
Description: Editorial-dark redesign for Cannabiz Products. Built April 2026.
*/

/* ============================================================
   DESIGN TOKENS
   ============================================================ */
:root {
  /* Layered dark palette — five subtle elevations */
  --cbp-ink-0:      #060605;        /* deepest — ticker, footer */
  --cbp-ink-1:      #0B0B0A;        /* base — body, catalog, manifesto, final cta */
  --cbp-ink-2:      #121210;        /* hero, stats, process */
  --cbp-ink-3:      #161614;        /* product cards */
  --cbp-ink-4:      #1C1C19;        /* card image well */

  --cbp-rule:       #2A2A26;        /* hairline rules */
  --cbp-rule-soft:  #1F1F1C;        /* softer dividers */

  --cbp-paper:      #F2EFE6;        /* warm off-white text */
  --cbp-paper-dim:  #97948A;        /* secondary text */
  --cbp-paper-faint:#5A5851;        /* tertiary text, captions */

  --cbp-accent:     #5CBF7A;        /* signature green */
  --cbp-accent-2:   #7FE39A;        /* hover state */
  --cbp-accent-ink: #0B0B0A;        /* text on accent */

  --cbp-serif:  "Fraunces", "Times New Roman", serif;
  --cbp-sans:   "Inter", -apple-system, system-ui, sans-serif;
  --cbp-mono:   "JetBrains Mono", ui-monospace, Menlo, monospace;

  --cbp-gutter: clamp(1.25rem, 4vw, 3rem);
  --cbp-max:    1440px;

  /* Radius scale (styling-consistency, 2026-06-06).
     Two intentional radii: pill = the one button standard; card = content cards.
     Inputs stay sharp (2px) — they are fields, not buttons. */
  --cbp-radius-pill:  999px;       /* buttons / CTAs / nav pills — sitewide button standard */
  --cbp-radius-card:  12px;        /* content cards (feature/audience/info/form wrapper/faq item) */
  --cbp-radius-input: 2px;         /* form fields — consistent with each other + WC forms */
}

/* ============================================================
   GLOBAL BASE
   ============================================================ */
html, body {
  background: var(--cbp-ink-1);
  color: var(--cbp-paper);
  font-family: var(--cbp-sans);
  font-size: 16px;
  line-height: 1.55;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  overflow-x: hidden;
}

/* Site-wide film grain overlay */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
  opacity: .07;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/><feColorMatrix type='matrix' values='0 0 0 0 1   0 0 0 0 1   0 0 0 0 1   0 0 0 0.5 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--cbp-serif);
  font-weight: 400;
  letter-spacing: -0.02em;
  color: var(--cbp-paper);
  line-height: 1.15;
  font-variation-settings: "opsz" 144;
}

a {
  color: inherit;
  text-decoration: none;
  transition: color .25s ease;
}
a:hover { color: var(--cbp-accent); }

img { max-width: 100%; display: block; }

/* ============================================================
   SUPPRESS KADENCE PAGE TITLE ON HOMEPAGE
   ============================================================ */
.home .entry-hero,
.home .entry-header,
.home .page-title,
.home .entry-title,
.home .kadence-breadcrumbs,
.home .site-main > article > .entry-content-wrap > header {
  display: none !important;
}

/* Remove default Kadence content padding on homepage so our sections go full-width */
.home .content-area,
.home .site-main,
.home .entry-content-wrap,
.home .entry-content {
  padding: 0 !important;
  margin: 0 !important;
  max-width: none !important;
}

/* ============================================================
   GLOBAL DARK WRAPPER — all WordPress pages + single posts
   Permanently hides Kadence's entry-hero title bar and strips
   the white content-wrap card so the dark design shows through.
   Every page on this site provides its own title/hero via the
   block editor — the Kadence outer hero is never wanted.
   This replaces the recurring per-.page-id patches that had to
   be added every time a new dark-design page was created.
   WooCommerce pages have their own overrides below and are not
   affected by this block.
   ============================================================ */
body.page .entry-hero,
body.page .entry-header,
body.page .page-title,
body.page .entry-title,
body.page .kadence-breadcrumbs,
body.single-post .entry-hero,
body.single-post .entry-header {
  display: none !important;
}

body.page .entry.single-entry,
body.page .content-wrap,
body.page .entry-content-wrap,
body.single-post .entry.single-entry,
body.single-post .content-wrap,
body.single-post .entry-content-wrap {
  background: transparent !important;
  box-shadow: none !important;
}

/* ============================================================
   HEADER OVERRIDES — sticky, blurred, backdrop
   ============================================================ */
#masthead.site-header,
.site-header-wrap {
  background: rgba(11, 11, 10, 0.82) !important;
  backdrop-filter: blur(16px) saturate(140%);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
  border-bottom: 1px solid var(--cbp-rule-soft) !important;
}

.site-header-main-section {
  background: transparent !important;
}

/* Brand/logo area */
.site-branding .site-title,
.site-branding a {
  font-family: var(--cbp-serif);
  font-size: 1.35rem;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--cbp-paper) !important;
}

/* Primary nav links */
.site-header .header-navigation a,
.main-navigation a {
  font-family: var(--cbp-sans) !important;
  font-size: 14px !important;
  font-weight: 400 !important;
  color: var(--cbp-paper) !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  position: relative;
  padding: 0.4rem 0 !important;
  transition: color .25s ease;
}
.site-header .header-navigation a:hover,
.main-navigation a:hover {
  color: var(--cbp-accent) !important;
}
.site-header .header-navigation a::after,
.main-navigation a::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 1px;
  background: var(--cbp-accent);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .35s ease;
}
.site-header .header-navigation a:hover::after,
.main-navigation a:hover::after {
  transform: scaleX(1);
}

/* Get a Quote nav CTA — uses the .nav-cta class added in functions.php */
.site-header .nav-cta > a,
.main-navigation .nav-cta > a {
  background: var(--cbp-accent) !important;
  color: var(--cbp-accent-ink) !important;
  padding: 0.7rem 1.4rem !important;
  border-radius: 999px !important;
  font-weight: 500 !important;
  font-size: 13px !important;
}
.site-header .nav-cta > a:hover,
.main-navigation .nav-cta > a:hover {
  background: var(--cbp-accent-2) !important;
  color: var(--cbp-accent-ink) !important;
}
.site-header .nav-cta > a::after,
.main-navigation .nav-cta > a::after {
  display: none !important;
}

/* Dropdown menu styling */
.site-header .header-navigation .sub-menu,
.main-navigation .sub-menu {
  background: var(--cbp-ink-2) !important;
  border: 1px solid var(--cbp-rule) !important;
  border-radius: 8px;
  padding: 0.5rem 0;
}
.site-header .header-navigation .sub-menu a,
.main-navigation .sub-menu a {
  padding: 0.6rem 1.25rem !important;
  font-size: 13px !important;
}

/* ============================================================
   HOMEPAGE-SCOPED CSS — everything under .cbp- classes
   ============================================================ */

.cbp-container {
  max-width: var(--cbp-max);
  margin: 0 auto;
  padding: 0 var(--cbp-gutter);
}

.cbp-label {
  font-family: var(--cbp-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cbp-paper-dim);
}
.cbp-label-accent { color: var(--cbp-accent); }

/* ----- TICKER ----- */
.cbp-ticker {
  border-bottom: 1px solid var(--cbp-rule-soft);
  background: var(--cbp-ink-0);
  overflow: hidden;
}
.cbp-ticker-track {
  display: flex;
  gap: 3rem;
  padding: 0.65rem 0;
  white-space: nowrap;
  animation: cbp-scroll 40s linear infinite;
  font-family: var(--cbp-mono);
  font-size: 11px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--cbp-paper-dim);
}
.cbp-ticker-track span {
  display: inline-flex;
  align-items: center;
  gap: 1rem;
}
.cbp-ticker-track span::after {
  content: "";
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--cbp-accent);
  margin-left: 1rem;
}
@keyframes cbp-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* ----- HERO ----- */
.cbp-hero {
  position: relative;
  background: var(--cbp-ink-2);
  border-bottom: 1px solid var(--cbp-rule);
  overflow: hidden;
}
.cbp-hero::before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  width: 65%;
  height: 100%;
  background: radial-gradient(ellipse 60% 70% at 70% 50%,
    rgba(92, 191, 122, 0.08) 0%,
    rgba(92, 191, 122, 0.03) 35%,
    transparent 65%);
  pointer-events: none;
  z-index: 0;
}
.cbp-hero-inner {
  display: grid;
  grid-template-columns: 1.05fr 1fr;
  align-items: center;
  gap: clamp(2rem, 4vw, 4rem);
  min-height: clamp(560px, 82vh, 820px);
  position: relative;
}
.cbp-hero-headline {
  position: relative;
  z-index: 2;
  padding: clamp(2.5rem, 5vw, 4rem) 0;
}
.cbp-hero-eyebrow {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 2.25rem;
}
.cbp-hero-eyebrow .cbp-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--cbp-accent);
  box-shadow: 0 0 12px var(--cbp-accent);
  animation: cbp-pulse 2.4s ease-in-out infinite;
}
@keyframes cbp-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: .55; transform: scale(.85); }
}
.cbp-hero h1 {
  font-family: var(--cbp-serif);
  font-weight: 300;
  font-size: clamp(3rem, 7.5vw, 7rem);
  line-height: 0.92;
  letter-spacing: -0.035em;
  margin: 0 0 1.75rem;
  color: var(--cbp-paper);
  font-variation-settings: "opsz" 144;
}
.cbp-hero h1 .cbp-it {
  font-style: italic;
  font-weight: 400;
  color: var(--cbp-accent);
}
.cbp-hero-sub {
  font-family: var(--cbp-sans);
  font-size: clamp(1rem, 1.15vw, 1.125rem);
  line-height: 1.6;
  color: var(--cbp-paper-dim);
  max-width: 46ch;
  margin: 0 0 2.75rem;
}
.cbp-hero-actions {
  display: flex;
  gap: 1rem;
  align-items: center;
  flex-wrap: wrap;
}

/* Buttons */
.cbp-btn-primary {
  font-family: var(--cbp-sans);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.01em;
  padding: 1rem 1.85rem;
  background: var(--cbp-accent);
  color: var(--cbp-accent-ink);
  border: 1px solid var(--cbp-accent);
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  transition: transform .2s ease, background .2s ease;
  cursor: pointer;
}
.cbp-btn-primary:hover {
  background: var(--cbp-accent-2);
  color: var(--cbp-accent-ink);
  transform: translateY(-1px);
}
.cbp-btn-ghost {
  font-family: var(--cbp-sans);
  font-size: 14px;
  font-weight: 500;
  padding: 1rem 1.75rem;
  background: transparent;
  color: var(--cbp-paper);
  border: 1px solid var(--cbp-rule);
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  transition: border-color .2s ease, color .2s ease;
  cursor: pointer;
}
.cbp-btn-ghost:hover {
  border-color: var(--cbp-accent);
  color: var(--cbp-accent);
}

/* Hero product still life */
.cbp-hero-product {
  position: relative;
  align-self: stretch;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1;
}
.cbp-hero-product .cbp-glow {
  position: absolute;
  inset: -10%;
  background: radial-gradient(circle at 50% 50%,
    rgba(92, 191, 122, 0.32) 0%,
    rgba(92, 191, 122, 0.10) 28%,
    rgba(92, 191, 122, 0) 60%);
  filter: blur(30px);
  z-index: 0;
}
.cbp-hero-product .cbp-product-img {
  position: relative;
  z-index: 2;
  width: clamp(280px, 38vw, 560px);
  filter:
    drop-shadow(0 50px 70px rgba(0, 0, 0, 0.75))
    drop-shadow(0 0 50px rgba(92, 191, 122, 0.18));
  transform: rotate(-4deg);
  animation: cbp-floatY 7s ease-in-out infinite;
}
@keyframes cbp-floatY {
  0%, 100% { transform: rotate(-4deg) translateY(0); }
  50%      { transform: rotate(-4deg) translateY(-12px); }
}
.cbp-hero-product .cbp-ground {
  position: absolute;
  bottom: 8%;
  left: 50%;
  transform: translateX(-50%);
  width: 55%;
  height: 30px;
  background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.75) 0%, rgba(0, 0, 0, 0) 70%);
  filter: blur(10px);
  z-index: 1;
}

/* Crosshair registration marks */
.cbp-crosshair {
  position: absolute;
  width: 14px;
  height: 14px;
  z-index: 3;
}
.cbp-crosshair::before, .cbp-crosshair::after {
  content: "";
  position: absolute;
  background: var(--cbp-accent);
  opacity: 0.7;
}
.cbp-crosshair::before { left: 50%; top: 0; bottom: 0; width: 1px; transform: translateX(-50%); }
.cbp-crosshair::after  { top: 50%; left: 0; right: 0; height: 1px; transform: translateY(-50%); }
.cbp-hero-product .cbp-crosshair.tl { top: 8%;    left: 6%; }
.cbp-hero-product .cbp-crosshair.tr { top: 8%;    right: 6%; }
.cbp-hero-product .cbp-crosshair.bl { bottom: 14%; left: 6%; }
.cbp-hero-product .cbp-crosshair.br { bottom: 14%; right: 6%; }

/* Hero caption strip */
.cbp-hero-caption {
  border-top: 1px solid var(--cbp-rule);
  background: var(--cbp-ink-2);
  position: relative;
  z-index: 2;
}
.cbp-hero-caption-grid {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 2rem 3rem;
  padding: 1.5rem 0;
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cbp-paper-faint);
}
.cbp-hero-caption-grid .cbp-item {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
}
.cbp-hero-caption-grid .cbp-item::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--cbp-accent);
}
.cbp-hero-caption-grid .cbp-plate { color: var(--cbp-accent); }
.cbp-hero-caption-grid .cbp-plate::before { display: none; }
.cbp-hero-caption-grid .cbp-key { color: var(--cbp-paper-faint); }
.cbp-hero-caption-grid .cbp-val { color: var(--cbp-paper); }

/* ----- CATALOG ----- */
.cbp-catalog {
  padding: clamp(4rem, 8vw, 7rem) 0 clamp(3rem, 5vw, 5rem);
  border-bottom: 1px solid var(--cbp-rule);
  position: relative;
  background: var(--cbp-ink-1);
}
.cbp-catalog-head {
  display: grid;
  grid-template-columns: 1fr 1.5fr;
  gap: 3rem;
  margin-bottom: 4rem;
  align-items: end;
}
.cbp-catalog-head .cbp-left {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
.cbp-section-num {
  font-family: var(--cbp-mono);
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--cbp-accent);
  display: flex;
  align-items: center;
  gap: 1rem;
}
.cbp-section-num::before {
  content: "";
  width: 32px;
  height: 1px;
  background: var(--cbp-accent);
}
.cbp-catalog-head h2,
.cbp-process-head h2 {
  font-family: var(--cbp-serif);
  font-weight: 300;
  font-size: clamp(2.25rem, 5.5vw, 5rem);
  line-height: 0.95;
  letter-spacing: -0.03em;
  margin: 0;
  color: var(--cbp-paper);
  font-variation-settings: "opsz" 144;
}
.cbp-catalog-head h2 .cbp-it,
.cbp-process-head h2 .cbp-it {
  font-style: italic;
  font-weight: 400;
  color: var(--cbp-accent);
}
.cbp-catalog-head .cbp-right {
  font-family: var(--cbp-sans);
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--cbp-paper-dim);
  max-width: 48ch;
  padding-bottom: 0.5rem;
}
.cbp-catalog-head .cbp-right strong {
  color: var(--cbp-paper);
  font-weight: 500;
}

/* Product grid — asymmetric 12-col */
.cbp-catalog-grid {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 1.25rem;
}
.cbp-product-card {
  position: relative;
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  overflow: hidden;
  transition: border-color .35s ease, transform .35s ease;
  display: flex;
  flex-direction: column;
}
.cbp-product-card:hover {
  border-color: var(--cbp-accent);
}
.cbp-product-card .cbp-img-wrap {
  position: relative;
  aspect-ratio: 1 / 1;
  background: var(--cbp-ink-4);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.cbp-product-card .cbp-img-wrap::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 60%, rgba(92, 191, 122, 0.10) 0%, transparent 60%);
}
.cbp-product-card img {
  position: relative;
  width: 72%;
  height: 72%;
  object-fit: contain;
  filter: drop-shadow(0 20px 30px rgba(0, 0, 0, 0.6));
  transition: transform .6s cubic-bezier(.2, .6, .2, 1);
}
.cbp-product-card:hover img {
  transform: scale(1.04);
}
.cbp-product-card .cbp-index {
  position: absolute;
  top: 1rem;
  left: 1rem;
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  color: var(--cbp-paper-faint);
  z-index: 1;
}
.cbp-product-card .cbp-corner {
  position: absolute;
  top: 1rem;
  right: 1rem;
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  color: var(--cbp-accent);
  z-index: 1;
}
.cbp-product-card .cbp-body {
  padding: 1.5rem 1.5rem 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  border-top: 1px solid var(--cbp-rule);
}
.cbp-product-card h3 {
  font-family: var(--cbp-serif);
  font-weight: 500;
  font-size: 1.5rem;
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin: 0;
  color: var(--cbp-paper);
  font-variation-settings: "opsz" 144;
}
.cbp-product-card h3 em {
  font-style: italic;
  font-weight: 400;
  color: var(--cbp-accent);
}
.cbp-product-card .cbp-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--cbp-paper-faint);
}
.cbp-product-card .cbp-meta .cbp-arrow {
  color: var(--cbp-paper);
  transition: transform .25s ease, color .25s ease;
  font-size: 14px;
}
.cbp-product-card:hover .cbp-meta .cbp-arrow {
  transform: translateX(4px);
  color: var(--cbp-accent);
}

/* 12-col placements — 3 over 2 asymmetric grid */
/* PATCH v2.1 — symmetric 3x2 grid, all 6 cards equal width */
.cbp-product-card.cbp-c1,
.cbp-product-card.cbp-c2,
.cbp-product-card.cbp-c3,
.cbp-product-card.cbp-c4,
.cbp-product-card.cbp-c5,
.cbp-product-card.cbp-c6 { grid-column: span 4; }

.cbp-catalog-foot {
  margin-top: 3rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 2rem;
  border-top: 1px solid var(--cbp-rule);
}
.cbp-catalog-foot .cbp-left {
  font-family: var(--cbp-mono);
  font-size: 11px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--cbp-paper-dim);
}
.cbp-catalog-foot .cbp-left em {
  color: var(--cbp-accent);
  font-style: normal;
}
.cbp-catalog-foot a {
  font-family: var(--cbp-sans);
  font-size: 14px;
  color: var(--cbp-paper);
  border-bottom: 1px solid var(--cbp-accent);
  padding-bottom: 0.25rem;
}
.cbp-catalog-foot a:hover {
  color: var(--cbp-accent);
}

/* ----- STATS STRIP ----- */
.cbp-stats {
  border-bottom: 1px solid var(--cbp-rule);
  background: var(--cbp-ink-2);
}
.cbp-stats-head {
  padding: 3rem var(--cbp-gutter) 0;
  max-width: var(--cbp-max);
  margin: 0 auto;
}
.cbp-stats-head .cbp-label {
  display: flex;
  align-items: center;
  gap: 1rem;
  color: var(--cbp-accent);
}
.cbp-stats-head .cbp-label::before {
  content: "";
  width: 32px;
  height: 1px;
  background: var(--cbp-accent);
}
.cbp-stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  max-width: var(--cbp-max);
  margin: 0 auto;
  padding: 2rem 0 0;
}
.cbp-stat {
  padding: 2rem var(--cbp-gutter) 3rem;
  border-right: 1px solid var(--cbp-rule);
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}
.cbp-stat:last-child { border-right: none; }
.cbp-stat .cbp-num {
  font-family: var(--cbp-serif);
  font-size: clamp(2.25rem, 4vw, 3.25rem);
  font-weight: 300;
  font-variation-settings: "opsz" 144;
  line-height: 1;
  color: var(--cbp-paper);
  letter-spacing: -0.02em;
}
.cbp-stat .cbp-num em {
  font-style: italic;
  color: var(--cbp-accent);
  font-weight: 400;
}
.cbp-stat .cbp-desc {
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cbp-paper-dim);
}
.cbp-stat .cbp-sub {
  font-family: var(--cbp-sans);
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--cbp-paper-faint);
  margin-top: 0.25rem;
}

/* ----- MANIFESTO ----- */
.cbp-manifesto {
  padding: clamp(5rem, 10vw, 9rem) 0;
  border-bottom: 1px solid var(--cbp-rule);
  background: var(--cbp-ink-1);
  position: relative;
  overflow: hidden;
}
.cbp-manifesto::before {
  content: "01";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-family: var(--cbp-serif);
  font-size: clamp(20rem, 40vw, 40rem);
  font-weight: 300;
  color: var(--cbp-ink-2);
  z-index: 0;
  font-variation-settings: "opsz" 144;
  line-height: 1;
  pointer-events: none;
  user-select: none;
}
.cbp-manifesto-inner {
  position: relative;
  z-index: 2;
  text-align: center;
  max-width: 1100px;
  margin: 0 auto;
}
.cbp-manifesto .cbp-tag {
  font-family: var(--cbp-mono);
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--cbp-accent);
  margin-bottom: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
}
.cbp-manifesto .cbp-tag::before,
.cbp-manifesto .cbp-tag::after {
  content: "";
  width: 32px;
  height: 1px;
  background: var(--cbp-accent);
}
.cbp-manifesto .cbp-statement {
  font-family: var(--cbp-serif);
  font-weight: 300;
  font-size: clamp(2rem, 5vw, 4.5rem);
  line-height: 1.05;
  letter-spacing: -0.025em;
  margin: 0;
  color: var(--cbp-paper);
  font-variation-settings: "opsz" 144;
}
.cbp-manifesto .cbp-statement em {
  font-style: italic;
  color: var(--cbp-accent);
  font-weight: 400;
}
.cbp-manifesto .cbp-statement .cbp-underline {
  position: relative;
  display: inline-block;
}
.cbp-manifesto .cbp-statement .cbp-underline::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0.05em;
  height: 0.08em;
  background: var(--cbp-accent);
}

/* ----- PROCESS ----- */
.cbp-process {
  padding: clamp(4rem, 8vw, 7rem) 0;
  border-bottom: 1px solid var(--cbp-rule);
  background: var(--cbp-ink-2);
}
.cbp-process-head {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  align-items: end;
  margin-bottom: 5rem;
}
.cbp-process-head .cbp-left {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
.cbp-process-head .cbp-right {
  font-family: var(--cbp-sans);
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--cbp-paper-dim);
  max-width: 42ch;
  padding-bottom: 0.5rem;
  justify-self: end;
}
.cbp-steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border-top: 1px solid var(--cbp-rule);
}
.cbp-step {
  padding: 2.5rem 1.75rem 2.75rem 0;
  border-right: 1px solid var(--cbp-rule);
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.cbp-step:last-child {
  border-right: none;
  padding-right: 0;
}
.cbp-step:not(:first-child) {
  padding-left: 1.75rem;
}
.cbp-step .cbp-num {
  font-family: var(--cbp-serif);
  font-size: 4.5rem;
  font-weight: 300;
  font-variation-settings: "opsz" 144;
  line-height: 0.85;
  color: var(--cbp-accent);
  letter-spacing: -0.03em;
}
.cbp-step .cbp-num em {
  font-style: italic;
  font-weight: 400;
}
.cbp-step h4 {
  font-family: var(--cbp-serif);
  font-weight: 500;
  font-size: 1.5rem;
  line-height: 1.15;
  margin: 0;
  color: var(--cbp-paper);
  letter-spacing: -0.015em;
  font-variation-settings: "opsz" 144;
}
.cbp-step p {
  font-family: var(--cbp-sans);
  font-size: 0.9375rem;
  line-height: 1.6;
  color: var(--cbp-paper-dim);
  margin: 0;
}
.cbp-step .cbp-step-tag {
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cbp-paper-faint);
  margin-top: auto;
  padding-top: 1rem;
}

/* ----- FINAL CTA ----- */
.cbp-final-cta {
  padding: clamp(5rem, 10vw, 9rem) 0;
  text-align: center;
  border-bottom: 1px solid var(--cbp-rule);
  background: var(--cbp-ink-1);
  position: relative;
}
.cbp-final-cta .cbp-tag {
  font-family: var(--cbp-mono);
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--cbp-accent);
  margin-bottom: 2rem;
}
.cbp-final-cta h2 {
  font-family: var(--cbp-serif);
  font-weight: 300;
  font-size: clamp(2.5rem, 6.5vw, 6rem);
  line-height: 0.95;
  letter-spacing: -0.03em;
  margin: 0 auto 2rem;
  max-width: 18ch;
  color: var(--cbp-paper);
  font-variation-settings: "opsz" 144;
}
.cbp-final-cta h2 em {
  font-style: italic;
  color: var(--cbp-accent);
  font-weight: 400;
}
.cbp-final-cta p {
  font-family: var(--cbp-sans);
  font-size: 1.0625rem;
  color: var(--cbp-paper-dim);
  max-width: 48ch;
  margin: 0 auto 3rem;
  line-height: 1.6;
}
.cbp-final-cta .cbp-actions {
  display: flex;
  gap: 1rem;
  justify-content: center;
  flex-wrap: wrap;
}

/* ============================================================
   FOOTER OVERRIDES
   ============================================================ */
#colophon.site-footer,
.site-footer-wrap {
  background: var(--cbp-ink-0) !important;
  border-top: 1px solid var(--cbp-rule) !important;
  color: var(--cbp-paper-dim) !important;
}
.site-footer h2,
.site-footer h3,
.site-footer h4,
.site-footer h5,
.site-footer .widget-title {
  font-family: var(--cbp-mono) !important;
  font-size: 10px !important;
  font-weight: 500 !important;
  letter-spacing: 0.2em !important;
  text-transform: uppercase !important;
  color: var(--cbp-accent) !important;
  margin-bottom: 1.5rem !important;
}
.site-footer a {
  color: var(--cbp-paper) !important;
  font-family: var(--cbp-sans);
  font-size: 0.9375rem;
}
.site-footer a:hover {
  color: var(--cbp-accent) !important;
}
.site-footer ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.site-footer ul li {
  margin-bottom: 0.85rem;
}
.site-footer .site-info,
.site-footer-row-container-inner {
  border-top: 1px solid var(--cbp-rule) !important;
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--cbp-paper-faint) !important;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 1024px) {
  .cbp-hero-inner {
    grid-template-columns: 1fr;
    min-height: auto;
    padding-bottom: 3rem;
  }
  .cbp-hero-headline { padding: 3rem 0 1rem; }
  .cbp-hero-product { min-height: 420px; padding-bottom: 2rem; }
  .cbp-hero-product .cbp-product-img { width: min(75vw, 420px); }
  .cbp-hero-caption-grid { gap: 1rem 2rem; padding: 1.25rem 0; }
  .cbp-catalog-head, .cbp-process-head { grid-template-columns: 1fr; gap: 2rem; }
  .cbp-catalog-grid { grid-template-columns: repeat(6, 1fr); }
  .cbp-product-card.cbp-c1,
  .cbp-product-card.cbp-c2,
  .cbp-product-card.cbp-c3,
  .cbp-product-card.cbp-c4,
  .cbp-product-card.cbp-c5,
  .cbp-product-card.cbp-c6 { grid-column: span 3; }
  .cbp-stats-grid { grid-template-columns: repeat(2, 1fr); }
  .cbp-stat { border-bottom: 1px solid var(--cbp-rule); }
  .cbp-stat:nth-child(2) { border-right: none; }
  .cbp-steps { grid-template-columns: repeat(2, 1fr); }
  .cbp-step { border-bottom: 1px solid var(--cbp-rule); }
  .cbp-step:nth-child(2) { border-right: none; }
}
@media (max-width: 640px) {
  .cbp-hero h1 { font-size: clamp(2.75rem, 12vw, 4.5rem); }
  .cbp-stats-grid { grid-template-columns: 1fr; }
  .cbp-stat { border-right: none; }
  .cbp-catalog-grid { grid-template-columns: 1fr; }
  .cbp-product-card.cbp-c1,
  .cbp-product-card.cbp-c2,
  .cbp-product-card.cbp-c3,
  .cbp-product-card.cbp-c4,
  .cbp-product-card.cbp-c5,
  .cbp-product-card.cbp-c6 { grid-column: span 1; }
  .cbp-steps { grid-template-columns: 1fr; }
  .cbp-step { border-right: none; padding-left: 0 !important; padding-right: 0; }
  .cbp-manifesto .cbp-statement { font-size: clamp(1.75rem, 8vw, 2.5rem); }
  .cbp-ticker-track { font-size: 10px; }
}

/* ============================================================
   PATCH v2.1 — HEADER FIX
   Appended April 8, 2026
   ============================================================ */

/* ----- Site title / brand wordmark with green diamond ----- */

/* Force Fraunces on every possible Kadence site title selector */
.site-branding .site-title,
.site-branding .site-title a,
.site-header .site-title,
.site-header .site-title a,
.site-header-item .site-title,
.site-header-item .site-title a,
.site-header-main .site-title,
.site-header-main .site-title a,
header .site-branding *,
.site-title,
.site-title a {
  font-family: var(--cbp-serif) !important;
  font-size: 1.35rem !important;
  font-weight: 600 !important;
  letter-spacing: -0.02em !important;
  color: var(--cbp-paper) !important;
  font-variation-settings: "opsz" 144 !important;
  line-height: 1 !important;
  text-transform: none !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 0.6rem !important;
}

/* Add the green diamond mark via ::before pseudo-element */
.site-branding .site-title a::before,
.site-header .site-title a::before,
.site-title a::before {
  content: "";
  display: inline-block;
  width: 9px;
  height: 9px;
  background: var(--cbp-accent);
  border-radius: 1px;
  transform: rotate(45deg);
  flex-shrink: 0;
  margin-right: 0.2rem;
}

/* Kill the underline on the brand link */
.site-branding .site-title a::after,
.site-header .site-title a::after,
.site-title a::after {
  display: none !important;
}

/* ----- Primary navigation spacing & layout ----- */

/* Ensure nav items have proper spacing (Kadence collapses gaps by default) */
.site-header .header-navigation ul.menu,
.main-navigation ul.menu,
.site-header-item .menu,
nav.main-navigation ul,
.header-navigation-wrap ul {
  display: flex !important;
  align-items: center !important;
  gap: 2.5rem !important;
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Individual nav items — strip Kadence default padding so the gap controls spacing */
.site-header .header-navigation ul.menu > li,
.main-navigation ul.menu > li,
.site-header-item .menu > li,
nav.main-navigation ul > li,
.header-navigation-wrap ul > li {
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}

/* Nav links — proper styling with explicit padding for hover underline alignment */
.site-header .header-navigation ul.menu > li > a,
.main-navigation ul.menu > li > a,
.site-header-item .menu > li > a,
nav.main-navigation ul > li > a {
  font-family: var(--cbp-sans) !important;
  font-size: 14px !important;
  font-weight: 400 !important;
  color: var(--cbp-paper) !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  padding: 0.4rem 0 !important;
  margin: 0 !important;
  background: transparent !important;
  border: none !important;
  display: inline-block !important;
  position: relative !important;
  line-height: 1.4 !important;
}

.site-header .header-navigation ul.menu > li > a:hover,
.main-navigation ul.menu > li > a:hover,
nav.main-navigation ul > li > a:hover {
  color: var(--cbp-accent) !important;
  background: transparent !important;
}

/* Kadence dropdown arrow color for "Products" / "Custom Packaging" parents */
.site-header .header-navigation .menu-item-has-children > a::after,
.main-navigation .menu-item-has-children > a::after {
  color: var(--cbp-paper-dim) !important;
  margin-left: 0.4rem !important;
}

/* "Get a Quote" CTA pill — make sure the pill style wins on Kadence button items */
.site-header .nav-cta > a,
.main-navigation .nav-cta > a,
.site-header li.nav-cta > a,
li.nav-cta > a {
  background: var(--cbp-accent) !important;
  color: var(--cbp-accent-ink) !important;
  padding: 0.7rem 1.4rem !important;
  border-radius: 999px !important;
  font-weight: 500 !important;
  font-size: 13px !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 0.5rem !important;
  text-transform: none !important;
  letter-spacing: 0.02em !important;
  border: 1px solid var(--cbp-accent) !important;
  transition: background .2s ease, transform .2s ease !important;
}
.site-header .nav-cta > a:hover,
.main-navigation .nav-cta > a:hover,
li.nav-cta > a:hover {
  background: var(--cbp-accent-2) !important;
  color: var(--cbp-accent-ink) !important;
  transform: translateY(-1px);
}

/* Kill any default underline on the CTA */
.site-header .nav-cta > a::after,
.main-navigation .nav-cta > a::after,
li.nav-cta > a::after {
  display: none !important;
}

/* ----- Header bar layout — three column ----- */
/* Force the header inner container to use a clean 3-section layout */
.site-header-main-section-left,
.site-header-main-section-center,
.site-header-main-section-right,
.site-header-section {
  display: flex !important;
  align-items: center !important;
}
.site-header-main-section-center {
  justify-content: center !important;
  flex: 1 1 auto !important;
}
.site-header-main-section-right {
  justify-content: flex-end !important;
  gap: 1.25rem !important;
}

/* Hide the WordPress admin bar's effect on sticky header positioning */
body.admin-bar #masthead.site-header,
body.admin-bar .site-header-wrap {
  top: 32px;
}
@media (max-width: 782px) {
  body.admin-bar #masthead.site-header,
  body.admin-bar .site-header-wrap {
    top: 46px;
  }
}

/* ============================================================
   PATCH v2.1 — FOOTER WIDGET AREA OVERRIDES
   ============================================================ */

/* Footer widget area background */
.site-footer .footer-widget-area,
.site-footer-row-container,
.site-footer-wrap {
  background: var(--cbp-ink-0) !important;
}

/* Widget titles in footer */
.site-footer .widget-title,
.site-footer .widgettitle,
.site-footer h2.widget-title,
.site-footer-section-title {
  font-family: var(--cbp-mono) !important;
  font-size: 10px !important;
  font-weight: 500 !important;
  letter-spacing: 0.2em !important;
  text-transform: uppercase !important;
  color: var(--cbp-accent) !important;
  margin: 0 0 1.5rem !important;
  padding: 0 !important;
}

/* Footer menu lists */
.site-footer ul.menu,
.site-footer .menu {
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 0.85rem !important;
}
.site-footer ul.menu li,
.site-footer .menu li {
  margin: 0 !important;
  padding: 0 !important;
}
.site-footer ul.menu a,
.site-footer .menu a {
  font-family: var(--cbp-sans) !important;
  font-size: 0.9375rem !important;
  color: var(--cbp-paper) !important;
  text-decoration: none !important;
}
.site-footer ul.menu a:hover,
.site-footer .menu a:hover {
  color: var(--cbp-accent) !important;
}

/* Bottom credit row */
.site-footer .site-info,
.site-footer-bottom-section,
.site-bottom-wrap {
  background: var(--cbp-ink-0) !important;
  border-top: 1px solid var(--cbp-rule) !important;
  font-family: var(--cbp-mono) !important;
  font-size: 10px !important;
  letter-spacing: 0.15em !important;
  text-transform: uppercase !important;
  color: var(--cbp-paper-faint) !important;
  padding: 1.5rem var(--cbp-gutter) !important;
}
.site-footer .site-info a,
.site-footer-bottom-section a {
  color: var(--cbp-paper-faint) !important;
}
.site-footer .site-info a:hover {
  color: var(--cbp-accent) !important;
}

/* Hide any leftover Kadence theme credit text */
.site-info .powered-by-kadence,
.site-info span.powered-link {
  display: none !important;
}

/* ============================================================
   PATCH v2.1.1 — Restore dropdown collapse behavior
   The earlier header rules used `nav.main-navigation ul` (no class
   qualifier) which matched .sub-menu UL too, forcing dropdowns
   permanently open. Re-hide sub-menus and restore hover reveal.
   ============================================================ */
.site-header .header-navigation .sub-menu,
.main-navigation .sub-menu,
.site-header-item .sub-menu,
nav.main-navigation .sub-menu,
.header-navigation-wrap .sub-menu {
  display: block !important;
  position: absolute !important;
  top: 100% !important;
  left: 0 !important;
  min-width: 220px !important;
  visibility: hidden !important;
  opacity: 0 !important;
  transform: translateY(6px) !important;
  pointer-events: none !important;
  transition: opacity .2s ease, transform .2s ease, visibility .2s ease !important;
  background: var(--cbp-ink-2) !important;
  border: 1px solid var(--cbp-rule) !important;
  border-radius: 8px !important;
  padding: 0.5rem 0 !important;
  margin: 0 !important;
  z-index: 999 !important;
  gap: 0 !important;
  flex-direction: column !important;
}

/* Reveal on hover/focus of the parent menu item */
.site-header .header-navigation li.menu-item-has-children:hover > .sub-menu,
.site-header .header-navigation li.menu-item-has-children:focus-within > .sub-menu,
.main-navigation li.menu-item-has-children:hover > .sub-menu,
.main-navigation li.menu-item-has-children:focus-within > .sub-menu,
nav.main-navigation li.menu-item-has-children:hover > .sub-menu,
nav.main-navigation li.menu-item-has-children:focus-within > .sub-menu,
.header-navigation-wrap li.menu-item-has-children:hover > .sub-menu {
  visibility: visible !important;
  opacity: 1 !important;
  transform: translateY(0) !important;
  pointer-events: auto !important;
}

/* Parent li needs relative positioning so the absolute sub-menu anchors to it */
.site-header .header-navigation li.menu-item-has-children,
.main-navigation li.menu-item-has-children,
nav.main-navigation li.menu-item-has-children {
  position: relative !important;
}

/* Sub-menu items should stack, not flex-row */
.site-header .header-navigation .sub-menu li,
.main-navigation .sub-menu li,
nav.main-navigation .sub-menu li {
  display: block !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}

.site-header .header-navigation .sub-menu a,
.main-navigation .sub-menu a,
nav.main-navigation .sub-menu a {
  display: block !important;
  padding: 0.6rem 1.25rem !important;
  font-size: 13px !important;
  white-space: nowrap !important;
}

/* ============================================================
   WOOCOMMERCE TEMPLATES — added April 8, 2026
   Single product page + Shop/Category archive
   All selectors scoped under .woocommerce or .cbp-* prefixes
   to avoid affecting homepage components
   ============================================================ */

/* ----- Suppress Kadence default WooCommerce page title on
        single product and category pages, since we render
        our own breadcrumb + product/category header inline ----- */
.woocommerce .entry-hero,
.woocommerce .entry-header,
.woocommerce-page .entry-hero,
.woocommerce-page .entry-header,
.single-product .entry-hero,
.single-product .entry-header,
.tax-product_cat .entry-hero,
.tax-product_cat .entry-header,
.post-type-archive-product .entry-hero,
.post-type-archive-product .entry-header {
  display: none !important;
}

/* Strip Kadence default content padding on WooCommerce pages
   so our sections go full-width like the homepage */
.single-product .content-area,
.single-product .site-main,
.single-product .entry-content-wrap,
.single-product .entry-content,
.tax-product_cat .content-area,
.tax-product_cat .site-main,
.tax-product_cat .entry-content-wrap,
.tax-product_cat .entry-content,
.post-type-archive-product .content-area,
.post-type-archive-product .site-main,
.post-type-archive-product .entry-content-wrap,
.post-type-archive-product .entry-content {
  padding: 0 !important;
  margin: 0 !important;
  max-width: none !important;
}

/* Remove default WooCommerce breadcrumb wrapper — we render our own */
.single-product .woocommerce-breadcrumb,
.tax-product_cat .woocommerce-breadcrumb {
  display: none;
}

/* Hide the duplicate "Price range:" screen reader text that leaks visually */
.woocommerce p.price .from,
.woocommerce span.price .from {
  display: none;
}
.woocommerce-Price-currencySymbol + .woocommerce-Price-amount + .from,
.woocommerce-variation-price .price .from {
  display: none !important;
}

/* ============================================================
   BREADCRUMB
   ============================================================ */
.cbp-breadcrumb {
  border-bottom: 1px solid var(--cbp-rule-soft);
  background: var(--cbp-ink-1);
  padding: 1.25rem 0;
}
.cbp-breadcrumb-track {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  flex-wrap: wrap;
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cbp-paper-faint);
}
.cbp-breadcrumb-track a { color: var(--cbp-paper-dim); }
.cbp-breadcrumb-track a:hover { color: var(--cbp-accent); }
.cbp-breadcrumb-track .sep { color: var(--cbp-paper-faint); opacity: 0.5; }
.cbp-breadcrumb-track .current { color: var(--cbp-accent); }

/* ============================================================
   SINGLE PRODUCT — MAIN AREA
   ============================================================ */
.cbp-product-main {
  background: var(--cbp-ink-2);
  border-bottom: 1px solid var(--cbp-rule);
  position: relative;
  overflow: hidden;
}
.cbp-product-main::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 55%;
  height: 100%;
  background: radial-gradient(ellipse 60% 70% at 30% 50%,
    rgba(92,191,122,0.06) 0%,
    rgba(92,191,122,0.02) 35%,
    transparent 65%);
  pointer-events: none;
  z-index: 0;
}
.cbp-product-grid {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  align-items: start;
  gap: clamp(2rem, 5vw, 5rem);
  padding: clamp(2.5rem, 5vw, 4rem) 0 clamp(3rem, 6vw, 5rem);
  position: relative;
  z-index: 1;
  max-width: var(--cbp-max);
  margin: 0 auto;
  padding-left: var(--cbp-gutter);
  padding-right: var(--cbp-gutter);
}

/* ----- GALLERY (left column) ----- */
.cbp-product-grid .woocommerce-product-gallery,
.cbp-gallery {
  position: relative;
  width: 100% !important;
  float: none !important;
  margin: 0 !important;
}

/* Override WooCommerce default gallery image wrapper */
.woocommerce-product-gallery__image {
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  aspect-ratio: 1 / 1;
  display: flex !important;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  position: relative;
}
.woocommerce-product-gallery__image::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 55%,
    rgba(92,191,122,0.18) 0%,
    rgba(92,191,122,0.05) 30%,
    transparent 60%);
  pointer-events: none;
  z-index: 0;
}
.woocommerce-product-gallery__image a,
.woocommerce-product-gallery__image img {
  position: relative;
  z-index: 1;
  width: 88% !important;
  height: 88% !important;
  max-width: 80% !important;
  object-fit: contain;
  margin: 0 auto;
  filter: drop-shadow(0 30px 50px rgba(0,0,0,0.6)) drop-shadow(0 0 40px rgba(92,191,122,0.15));
  background: transparent;
}

/* Gallery thumbnail strip */
.woocommerce-product-gallery .flex-control-thumbs {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 0.75rem !important;
  margin: 1rem 0 0 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
.woocommerce-product-gallery .flex-control-thumbs li {
  width: auto !important;
  margin: 0 !important;
}
.woocommerce-product-gallery .flex-control-thumbs li img {
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  aspect-ratio: 1 / 1;
  width: 100% !important;
  object-fit: contain;
  padding: 12% !important;
  opacity: 0.7;
  transition: border-color 0.25s ease, opacity 0.25s ease;
  cursor: pointer;
}
.woocommerce-product-gallery .flex-control-thumbs li img:hover,
.woocommerce-product-gallery .flex-control-thumbs li img.flex-active {
  border-color: var(--cbp-accent);
  opacity: 1;
}

/* ----- PRODUCT INFO (right column) ----- */
.cbp-product-info,
.cbp-product-grid .summary {
  position: relative;
  display: flex !important;
  flex-direction: column !important;
  gap: 1.75rem !important;
  width: 100% !important;
  float: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

.cbp-product-eyebrow {
  display: flex;
  align-items: center;
  gap: 1rem;
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cbp-accent);
}
.cbp-product-eyebrow::before {
  content: "";
  width: 24px;
  height: 1px;
  background: var(--cbp-accent);
}

.cbp-product-grid .product_title,
.cbp-product-title {
  font-family: var(--cbp-serif) !important;
  font-weight: 300 !important;
  font-size: clamp(2rem, 4.5vw, 3.75rem) !important;
  line-height: 0.98 !important;
  letter-spacing: -0.03em !important;
  margin: 0 !important;
  color: var(--cbp-paper) !important;
  font-variation-settings: "opsz" 144 !important;
}
.cbp-product-grid .product_title em,
.cbp-product-title em {
  font-style: italic;
  font-weight: 400;
  color: var(--cbp-accent);
}

.cbp-product-grid .woocommerce-product-details__short-description,
.cbp-product-tagline {
  font-family: var(--cbp-sans);
  font-size: 1.0625rem;
  line-height: 1.6;
  color: var(--cbp-paper-dim);
  margin: 0 !important;
  max-width: 48ch;
}

/* Hide the default WooCommerce price display — we render our own custom price hero */
.cbp-product-grid .summary > .price,
.cbp-product-grid .price,
.single-product div.product p.price,
.single-product div.product span.price {
  display: none !important;
}

/* ============================================================
   PRICE HERO — live calculator display
   ============================================================ */
.cbp-price-hero {
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  border-left: 3px solid var(--cbp-accent);
  padding: 1.75rem 1.85rem;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  position: relative;
  overflow: hidden;
}
.cbp-price-hero::before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  width: 60%;
  height: 100%;
  background: radial-gradient(ellipse at 100% 50%, rgba(92,191,122,0.08) 0%, transparent 60%);
  pointer-events: none;
}

.cbp-price-unit-block {
  display: flex;
  align-items: flex-end;
  gap: 1rem;
}
.cbp-live-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--cbp-accent);
  box-shadow: 0 0 10px var(--cbp-accent);
  animation: cbp-pulse-price 2s ease-in-out infinite;
  margin-bottom: 0.85rem;
  flex-shrink: 0;
}
@keyframes cbp-pulse-price {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.55; transform: scale(0.85); }
}
.cbp-price-value {
  font-family: var(--cbp-serif);
  font-weight: 400;
  font-size: clamp(2.5rem, 4.5vw, 3.75rem);
  line-height: 0.95;
  color: var(--cbp-accent);
  letter-spacing: -0.025em;
  font-variation-settings: "opsz" 144;
  display: inline-flex;
  align-items: baseline;
}
.cbp-price-value em {
  font-style: italic;
  font-weight: 400;
}
.cbp-price-unit-label {
  font-family: var(--cbp-mono);
  font-size: 11px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--cbp-paper-dim);
  padding-bottom: 0.85rem;
}

.cbp-price-math {
  display: flex;
  align-items: center;
  gap: 1.1rem;
  flex-wrap: wrap;
  padding-top: 1.25rem;
  border-top: 1px solid var(--cbp-rule);
}
.cbp-price-math-item {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.cbp-price-math-key {
  font-family: var(--cbp-mono);
  font-size: 9px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cbp-paper-faint);
}
.cbp-price-math-val {
  font-family: var(--cbp-serif);
  font-size: 1.375rem;
  font-weight: 500;
  color: var(--cbp-paper);
  line-height: 1;
  letter-spacing: -0.01em;
  font-variation-settings: "opsz" 144;
}
.cbp-price-math-op {
  font-family: var(--cbp-serif);
  font-size: 1.85rem;
  font-weight: 500;
  color: var(--cbp-accent);
  align-self: center;
  padding: 0 0.35rem;
  font-variation-settings: "opsz" 144;
  line-height: 1;
}

/* ============================================================
   VARIANT BUTTONS — replaces WooCommerce select dropdowns
   ============================================================ */
.cbp-variants {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  margin-top: 0.5rem;
}

/* Hide the default WooCommerce variations table */
.cbp-product-grid table.variations,
.single-product table.variations {
  display: none !important;
}

.cbp-variant-group {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.cbp-variant-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.cbp-variant-key { color: var(--cbp-paper-dim); }
.cbp-variant-value { color: var(--cbp-accent); }
.cbp-variant-options {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.cbp-variant-btn {
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  color: var(--cbp-paper);
  font-family: var(--cbp-sans);
  font-size: 13px;
  font-weight: 500;
  padding: 0.7rem 1.1rem;
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.2s ease;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  min-height: 44px;
}
.cbp-variant-btn:hover {
  border-color: var(--cbp-paper-dim);
  background: var(--cbp-ink-4);
}
.cbp-variant-btn.selected {
  border-color: var(--cbp-accent);
  background: rgba(92,191,122,0.08);
  color: var(--cbp-accent);
}
.cbp-variant-btn.selected::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--cbp-accent);
}
.cbp-variant-btn.disabled,
.cbp-variant-btn[disabled] {
  opacity: 0.3;
  cursor: not-allowed;
  pointer-events: none;
}
.cbp-variant-btn .qty-suffix {
  font-family: var(--cbp-mono);
  font-size: 10px;
  color: var(--cbp-paper-faint);
  margin-left: 0.25rem;
}
.cbp-variant-btn.selected .qty-suffix { color: var(--cbp-accent); }

/* Color swatches — used when attribute slug contains "color" */
.cbp-variant-swatch {
  width: 44px;
  height: 44px;
  border-radius: 6px;
  border: 1px solid var(--cbp-rule);
  cursor: pointer;
  position: relative;
  transition: all 0.2s ease;
}
.cbp-variant-swatch:hover {
  border-color: var(--cbp-paper-dim);
  transform: scale(1.05);
}
.cbp-variant-swatch.selected {
  border-color: var(--cbp-accent);
  box-shadow: 0 0 0 2px rgba(92,191,122,0.2);
}
.cbp-variant-swatch.selected::after {
  content: "";
  position: absolute;
  inset: -6px;
  border: 1px solid var(--cbp-accent);
  border-radius: 8px;
}

/* ============================================================
   ARTWORK UPLOAD ZONE
   ============================================================ */
.cbp-upload {
  border: 1px dashed var(--cbp-rule);
  background: var(--cbp-ink-3);
  border-radius: 6px;
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  align-items: center;
  text-align: center;
  transition: border-color 0.25s ease, background 0.25s ease;
}
.cbp-upload:hover {
  border-color: var(--cbp-accent);
  background: var(--cbp-ink-4);
}
.cbp-upload-icon {
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--cbp-rule);
  border-radius: 50%;
  color: var(--cbp-accent);
}
.cbp-upload-title {
  font-family: var(--cbp-mono);
  font-size: 11px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--cbp-paper);
  font-weight: 500;
}
.cbp-upload-sub {
  font-family: var(--cbp-sans);
  font-size: 12.5px;
  color: var(--cbp-paper-faint);
  line-height: 1.5;
  max-width: 38ch;
}
.cbp-upload-sub em { color: var(--cbp-accent); font-style: normal; }

/* Restyle file upload plugin inside our wrapper */
.cbp-upload .wcuf_file_upload_wrapper,
.cbp-upload .upload-section,
.cbp-upload form,
.cbp-upload input[type="file"] {
  width: 100%;
  max-width: 100%;
  background: transparent;
  border: none;
}

/* ============================================================
   ADD TO CART CTA
   ============================================================ */
.cbp-add-to-cart,
.cbp-product-grid .single_add_to_cart_button {
  width: 100%;
  background: var(--cbp-accent) !important;
  color: var(--cbp-accent-ink) !important;
  border: 1px solid var(--cbp-accent) !important;
  font-family: var(--cbp-sans) !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em !important;
  padding: 1.25rem 2rem !important;
  border-radius: 999px !important;
  cursor: pointer;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  transition: background 0.2s ease, transform 0.2s ease;
  text-transform: none !important;
  margin: 0 !important;
  height: auto !important;
  line-height: 1.2 !important;
}
.cbp-add-to-cart:hover,
.cbp-product-grid .single_add_to_cart_button:hover {
  background: var(--cbp-accent-2) !important;
  transform: translateY(-1px);
}
.cbp-add-to-cart .arrow { transition: transform 0.25s ease; }
.cbp-add-to-cart:hover .arrow { transform: translateX(3px); }

/* Hide default WooCommerce qty input on single product page */
.single-product div.product form.cart .quantity,
.single-product div.product form.cart input.qty {
  display: none !important;
}

/* Ensure the cart form fills the column */
.single-product div.product form.cart {
  display: flex !important;
  flex-direction: column;
  gap: 0;
  margin: 0 !important;
}

.cbp-secondary-actions {
  display: flex;
  gap: 1.25rem;
  margin-top: 0.75rem;
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  justify-content: center;
}
.cbp-secondary-actions a {
  color: var(--cbp-paper-dim);
  border-bottom: 1px solid var(--cbp-rule);
  padding-bottom: 0.25rem;
}
.cbp-secondary-actions a:hover {
  color: var(--cbp-accent);
  border-bottom-color: var(--cbp-accent);
}

/* ============================================================
   SPEC SHEET STRIP
   ============================================================ */
.cbp-spec {
  background: var(--cbp-ink-2);
  border-top: 1px solid var(--cbp-rule);
  border-bottom: 1px solid var(--cbp-rule);
  padding: 1.75rem 0;
}
.cbp-spec-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 2.5rem 3.5rem;
  align-items: center;
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  max-width: var(--cbp-max);
  margin: 0 auto;
  padding: 0 var(--cbp-gutter);
}
.cbp-spec-item {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}
.cbp-spec-key { color: var(--cbp-paper-faint); }
.cbp-spec-val { color: var(--cbp-paper); font-weight: 500; }
.cbp-spec-val em { color: var(--cbp-accent); font-style: normal; }
.cbp-spec-plate {
  color: var(--cbp-accent);
  align-self: center;
  margin-right: auto;
  display: flex;
  align-items: center;
  gap: 0.6rem;
}
.cbp-spec-plate::before {
  content: "";
  width: 24px;
  height: 1px;
  background: var(--cbp-accent);
}

/* ============================================================
   DESCRIPTION SECTION (no tabs)
   ============================================================ */
.cbp-description {
  padding: clamp(4rem, 7vw, 6rem) 0;
  background: var(--cbp-ink-1);
  border-bottom: 1px solid var(--cbp-rule);
}
.cbp-description-inner {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
  max-width: var(--cbp-max);
  margin: 0 auto;
  padding: 0 var(--cbp-gutter);
}
.cbp-description-aside {
  position: sticky;
  top: 6rem;
}
.cbp-description-aside .cbp-section-num {
  font-family: var(--cbp-mono);
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--cbp-accent);
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1.5rem;
}
.cbp-description-aside .cbp-section-num::before {
  content: "";
  width: 32px;
  height: 1px;
  background: var(--cbp-accent);
}
.cbp-description-aside h2 {
  font-family: var(--cbp-serif);
  font-weight: 300;
  font-size: clamp(2rem, 3.5vw, 3rem);
  line-height: 1;
  letter-spacing: -0.025em;
  margin: 0;
  color: var(--cbp-paper);
  font-variation-settings: "opsz" 144;
}
.cbp-description-aside h2 em {
  font-style: italic;
  font-weight: 400;
  color: var(--cbp-accent);
}
.cbp-description-body h2,
.cbp-description-body h3 {
  font-family: var(--cbp-serif);
  font-weight: 500;
  font-size: 1.5rem;
  letter-spacing: -0.015em;
  margin: 0 0 1rem;
  color: var(--cbp-paper);
  font-variation-settings: "opsz" 144;
}
.cbp-description-body h2:not(:first-child),
.cbp-description-body h3:not(:first-child) { margin-top: 2.5rem; }
.cbp-description-body p {
  font-family: var(--cbp-sans);
  font-size: 1.0625rem;
  line-height: 1.7;
  color: var(--cbp-paper-dim);
  margin: 0 0 1rem;
}
.cbp-description-body ul {
  list-style: none;
  margin: 0 0 1rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}
.cbp-description-body ul li {
  font-family: var(--cbp-sans);
  font-size: 1rem;
  line-height: 1.55;
  color: var(--cbp-paper-dim);
  padding-left: 1.5rem;
  position: relative;
}
.cbp-description-body ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 8px;
  height: 1px;
  background: var(--cbp-accent);
}
.cbp-description-body ul li strong { color: var(--cbp-paper); font-weight: 500; }

/* Hide WooCommerce default tabs UI on single product */
.single-product .woocommerce-tabs {
  display: none !important;
}

/* ============================================================
   RELATED PRODUCTS SECTION
   ============================================================ */
.cbp-related,
.single-product section.related,
.single-product .related.products {
  padding: clamp(4rem, 7vw, 6rem) 0;
  background: var(--cbp-ink-2);
  border-bottom: 1px solid var(--cbp-rule);
  margin: 0 !important;
}
.cbp-related-head,
.single-product section.related > h2,
.single-product .related.products > h2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  align-items: end;
  margin: 0 auto 3rem;
  max-width: var(--cbp-max);
  padding: 0 var(--cbp-gutter);
}

/* If WooCommerce outputs the related title as just <h2>, restyle it */
.single-product section.related > h2,
.single-product .related.products > h2 {
  font-family: var(--cbp-serif) !important;
  font-weight: 300 !important;
  font-size: clamp(1.75rem, 3.5vw, 2.75rem) !important;
  line-height: 1 !important;
  letter-spacing: -0.02em !important;
  color: var(--cbp-paper) !important;
  font-variation-settings: "opsz" 144;
}

/* Related products grid */
.single-product .related.products ul.products,
.single-product section.related ul.products {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 1rem !important;
  max-width: var(--cbp-max);
  margin: 0 auto !important;
  padding: 0 var(--cbp-gutter) !important;
  list-style: none !important;
}

/* ============================================================
   CATEGORY / SHOP PAGE
   ============================================================ */
.cbp-cat-header {
  background: var(--cbp-ink-2);
  border-bottom: 1px solid var(--cbp-rule);
  position: relative;
  overflow: hidden;
  padding: clamp(2rem, 4vw, 3.25rem) 0 clamp(2.5rem, 5vw, 4rem);
}
.cbp-cat-header::before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  width: 55%;
  height: 100%;
  background: radial-gradient(ellipse 60% 70% at 70% 50%,
    rgba(92,191,122,0.06) 0%,
    rgba(92,191,122,0.02) 35%,
    transparent 65%);
  pointer-events: none;
  z-index: 0;
}
.cbp-cat-header-inner {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: clamp(2rem, 5vw, 4rem);
  align-items: end;
  max-width: var(--cbp-max);
  margin: 0 auto;
  padding: 0 var(--cbp-gutter);
}
.cbp-cat-header .left {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}
.cbp-cat-header .cbp-section-num {
  font-family: var(--cbp-mono);
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--cbp-accent);
  display: flex;
  align-items: center;
  gap: 1rem;
}
.cbp-cat-header .cbp-section-num::before {
  content: "";
  width: 32px;
  height: 1px;
  background: var(--cbp-accent);
}
.cbp-cat-header h1 {
  font-family: var(--cbp-serif);
  font-weight: 300;
  font-size: clamp(2.75rem, 6vw, 5.5rem);
  line-height: 0.92;
  letter-spacing: -0.035em;
  margin: 0;
  color: var(--cbp-paper);
  font-variation-settings: "opsz" 144;
}
.cbp-cat-header h1 em {
  font-style: italic;
  font-weight: 400;
  color: var(--cbp-accent);
}
.cbp-cat-header .right {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  padding-bottom: 0.5rem;
}
.cbp-cat-header .right p {
  font-family: var(--cbp-sans);
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--cbp-paper-dim);
  margin: 0;
  max-width: 46ch;
}
.cbp-cat-header .right p a {
  color: var(--cbp-accent);
  border-bottom: 1px solid var(--cbp-accent);
  padding-bottom: 1px;
}

/* Category caption strip */
.cbp-cat-caption {
  background: var(--cbp-ink-2);
  border-bottom: 1px solid var(--cbp-rule);
  padding: 1.5rem 0;
}
.cbp-cat-caption-grid {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0 2.25rem;
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  overflow-x: auto;
  scrollbar-width: none;
  max-width: var(--cbp-max);
  margin: 0 auto;
  padding: 0 var(--cbp-gutter);
}
.cbp-cat-caption-grid::-webkit-scrollbar { display: none; }
.cbp-cat-caption-grid > * { flex-shrink: 0; }
.cbp-cat-caption-grid .plate {
  color: var(--cbp-accent);
  display: flex;
  align-items: center;
  gap: 0.7rem;
}
.cbp-cat-caption-grid .item {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
}
.cbp-cat-caption-grid .item::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--cbp-accent);
}
.cbp-cat-caption-grid .key { color: var(--cbp-paper-faint); }
.cbp-cat-caption-grid .val { color: var(--cbp-paper); }

/* Shop / category toolbar */
.cbp-cat-toolbar,
.woocommerce .woocommerce-notices-wrapper + .woocommerce-result-count,
.tax-product_cat .woocommerce-result-count,
.post-type-archive-product .woocommerce-result-count {
  background: var(--cbp-ink-1);
  border-bottom: 1px solid var(--cbp-rule);
  padding: 1.25rem var(--cbp-gutter);
}

.tax-product_cat .woocommerce-result-count,
.post-type-archive-product .woocommerce-result-count {
  font-family: var(--cbp-mono) !important;
  font-size: 10px !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: var(--cbp-paper-dim) !important;
  margin: 0 !important;
  float: none !important;
  display: inline-block;
}

/* Style the sort dropdown */
.tax-product_cat .woocommerce-ordering,
.post-type-archive-product .woocommerce-ordering {
  float: right !important;
  margin: 0 !important;
}
.tax-product_cat .woocommerce-ordering select,
.post-type-archive-product .woocommerce-ordering select,
.cbp-cat-toolbar .sort-select {
  background: var(--cbp-ink-3) !important;
  border: 1px solid var(--cbp-rule) !important;
  color: var(--cbp-paper) !important;
  font-family: var(--cbp-sans) !important;
  font-size: 13px !important;
  padding: 0.6rem 2.5rem 0.6rem 1rem !important;
  border-radius: 999px !important;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235CBF7A' stroke-width='2'><polyline points='6 9 12 15 18 9'/></svg>") !important;
  background-repeat: no-repeat !important;
  background-position: right 1rem center !important;
}

/* ============================================================
   SHARED PRODUCT CARD
   ============================================================ */

/* Hide default WooCommerce shop loop styling we do not want */
.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product .added_to_cart {
  display: none !important;
}

.woocommerce ul.products,
.cbp-cat-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 1.25rem !important;
  list-style: none !important;
  margin: 0 auto !important;
  padding: 2rem var(--cbp-gutter) clamp(3rem, 5vw, 5rem) !important;
  max-width: var(--cbp-max);
  background: var(--cbp-ink-1);
}

/* The WooCommerce loop product card */
.woocommerce ul.products li.product {
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  display: flex !important;
  flex-direction: column;
  transition: border-color 0.35s ease, transform 0.35s ease;
  width: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  float: none !important;
  position: relative;
}
.woocommerce ul.products li.product:hover {
  border-color: var(--cbp-accent);
}
.woocommerce ul.products li.product > a {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  height: 100%;
}

/* Product image well */
.woocommerce ul.products li.product img,
.woocommerce ul.products li.product a img {
  position: relative;
  background: var(--cbp-ink-4);
  aspect-ratio: 1 / 1;
  width: 100% !important;
  height: auto !important;
  object-fit: contain;
  padding: 14% !important;
  margin: 0 !important;
  border: none !important;
  filter: drop-shadow(0 15px 25px rgba(0,0,0,0.6));
  transition: transform 0.6s cubic-bezier(0.2, 0.6, 0.2, 1);
}
.woocommerce ul.products li.product:hover img {
  transform: scale(1.04);
}

/* Product title */
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product h2,
.woocommerce ul.products li.product h3 {
  font-family: var(--cbp-serif) !important;
  font-weight: 500 !important;
  font-size: 1.25rem !important;
  line-height: 1.15 !important;
  letter-spacing: -0.01em !important;
  margin: 0 !important;
  padding: 1.25rem 1.4rem 0.5rem !important;
  color: var(--cbp-paper) !important;
  font-variation-settings: "opsz" 144;
}

/* Product price — use the per-unit price filter output */
.woocommerce ul.products li.product .price {
  font-family: var(--cbp-serif) !important;
  font-size: 1.0625rem !important;
  font-weight: 500 !important;
  font-variation-settings: "opsz" 144;
  color: var(--cbp-paper) !important;
  letter-spacing: -0.005em !important;
  padding: 0 1.4rem 1.5rem !important;
  margin: 0 !important;
  display: flex !important;
  align-items: baseline !important;
  flex-wrap: wrap !important;
  gap: 0 0.25rem !important;
  border-top: 1px solid var(--cbp-rule);
  padding-top: 0.85rem !important;
  margin-top: 0.85rem !important;
}
.woocommerce ul.products li.product .price del,
.woocommerce ul.products li.product .price ins {
  display: inline;
  text-decoration: none;
}
.woocommerce ul.products li.product .price .cbp-per-unit {
  font-family: var(--cbp-mono);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--cbp-paper-faint);
  margin-left: 0.15rem;
  font-weight: 400;
}


/* ============================================================
   GRID / LIST TOGGLE (category toolbar)
   ============================================================ */
.cbp-view-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0;
  border: 1px solid var(--cbp-rule);
  border-radius: 3px;
  overflow: hidden;
  margin-left: auto;
}
.cbp-view-toggle .cbp-view-btn {
  font-family: var(--cbp-mono) !important;
  font-size: 10px !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: var(--cbp-paper-dim) !important;
  background: transparent !important;
  border: none !important;
  padding: 0.55rem 1rem !important;
  cursor: pointer !important;
  line-height: 1 !important;
  transition: color 0.15s, background 0.15s;
}
.cbp-view-toggle .cbp-view-btn + .cbp-view-btn {
  border-left: 1px solid var(--cbp-rule) !important;
}
.cbp-view-toggle .cbp-view-btn.active,
.cbp-view-toggle .cbp-view-btn:hover {
  color: var(--cbp-accent) !important;
  background: var(--cbp-ink-3) !important;
}

/* toolbar row flex layout - Kadence wraps content in .kadence-shop-top-row */
.cbp-cat-toolbar .kadence-shop-top-row {
  display: flex !important;
  align-items: center !important;
  gap: 1rem !important;
  width: 100% !important;
}
/* Hide the Kadence default grid/list icon toggle */
.cbp-cat-toolbar .kadence-woo-toggle,
.kadence-woo-toggle {
  display: none !important;
}
/* Result count in Kadence wrapper */
.cbp-cat-toolbar .kadence-woo-results-count {
  flex: 0 0 auto;
}
/* Sort dropdown */
.cbp-cat-toolbar .kadence-woo-ordering {
  margin-left: auto !important;
}
/* Our custom GRID/LIST toggle - appended into kadence row via JS */
.cbp-cat-toolbar .kadence-shop-top-row .cbp-view-toggle {
  margin-left: 0.5rem !important;
}

/* LIST view layout */
.woocommerce ul.products.cbp-list-view {
  grid-template-columns: 1fr !important;
}
.woocommerce ul.products.cbp-list-view li.product {
  flex-direction: row !important;
  max-width: 100% !important;
}
.woocommerce ul.products.cbp-list-view li.product a.woocommerce-loop-product__link {
  width: 220px;
  flex: 0 0 220px;
}
.woocommerce ul.products.cbp-list-view li.product .woocommerce-loop-product__title,
.woocommerce ul.products.cbp-list-view li.product h2,
.woocommerce ul.products.cbp-list-view li.product h3 {
  font-size: 1.5rem !important;
}

/* Pagination */
.woocommerce-pagination,
.cbp-pagination {
  margin: 0 auto;
  padding: 2rem var(--cbp-gutter) 4rem;
  border-top: 1px solid var(--cbp-rule);
  display: flex;
  justify-content: center;
  align-items: center;
  max-width: var(--cbp-max);
  background: var(--cbp-ink-1);
}
.woocommerce-pagination ul.page-numbers {
  display: flex !important;
  gap: 0.5rem !important;
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
  border: none !important;
}
.woocommerce-pagination ul.page-numbers li {
  border: none !important;
  margin: 0 !important;
}
.woocommerce-pagination ul.page-numbers li a,
.woocommerce-pagination ul.page-numbers li span {
  width: 38px !important;
  height: 38px !important;
  border: 1px solid var(--cbp-rule) !important;
  border-radius: 50% !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  font-family: var(--cbp-mono) !important;
  font-size: 11px !important;
  color: var(--cbp-paper-dim) !important;
  background: transparent !important;
  padding: 0 !important;
  line-height: 1 !important;
  transition: all 0.2s ease;
}
.woocommerce-pagination ul.page-numbers li a:hover {
  border-color: var(--cbp-accent) !important;
  color: var(--cbp-accent) !important;
}
.woocommerce-pagination ul.page-numbers li span.current {
  background: var(--cbp-accent) !important;
  border-color: var(--cbp-accent) !important;
  color: var(--cbp-accent-ink) !important;
}

/* ============================================================
   RESPONSIVE — WooCommerce templates
   ============================================================ */
@media (max-width: 1024px) {
  .cbp-product-grid { grid-template-columns: 1fr; gap: 2rem; }
  .cbp-description-inner { grid-template-columns: 1fr; gap: 2rem; }
  .cbp-description-aside { position: relative; top: auto; }
  .cbp-cat-header-inner { grid-template-columns: 1fr; gap: 1.5rem; }
  .woocommerce ul.products,
  .cbp-cat-grid { grid-template-columns: repeat(2, 1fr) !important; }
  .single-product .related.products ul.products,
  .single-product section.related ul.products {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}
@media (max-width: 640px) {
  .cbp-spec-grid { gap: 1.25rem 2rem; font-size: 9px; }
  .woocommerce ul.products,
  .cbp-cat-grid { grid-template-columns: 1fr !important; }
  .single-product .related.products ul.products,
  .single-product section.related ul.products {
    grid-template-columns: 1fr !important;
  }
  .cbp-price-math { gap: 0.75rem; }
  .cbp-price-math-op { font-size: 1.5rem; padding: 0 0.15rem; }
}


/* ============================================================
   POLISH PATCH — April 9, 2026
   Fixes Kadence .content-bg white override on product cards
   and adds color swatch mapping
   ============================================================ */

/* Fix 1: Override Kadence's .content-bg white background on product cards.
   Kadence wraps the product title/price in .product-details.content-bg
   which inherits --global-palette9 (#ffffff). Force it dark. */
.woocommerce ul.products li.product .product-details,
.woocommerce ul.products li.product .product-details.content-bg,
.woocommerce ul.products li.product .entry-content-wrap,
.woocommerce ul.products li.product .product-details.content-bg.entry-content-wrap {
  background: var(--cbp-ink-3) !important;
  padding: 0 !important;
}

/* Also handle the Kadence loop-entry wrapper */
.woocommerce ul.products li.product.content-bg,
.woocommerce ul.products li.product.loop-entry {
  background: var(--cbp-ink-3) !important;
}

/* Fix the "Related products" h2 that WooCommerce outputs above the grid —
   it's being rendered outside our custom header wrapper and duplicating the title */
.cbp-related > .related.products > h2,
.cbp-related section.related > h2 {
  display: none !important;
}

/* Fix 2: Color swatch background mapping for known color names.
   Since these products use custom (non-taxonomy) attributes
   without stored color hex values, we map data-label to CSS colors. */
.cbp-variant-swatch[data-label="Black"],
.cbp-variant-swatch[data-value="Black"] {
  background: #1a1a1a;
  border-color: #333;
}
.cbp-variant-swatch[data-label="White"],
.cbp-variant-swatch[data-value="White"] {
  background: #f2efe6;
}
.cbp-variant-swatch[data-label="Yellow"],
.cbp-variant-swatch[data-value="Yellow"] {
  background: #f5d445;
}
.cbp-variant-swatch[data-label="Sky Blue"],
.cbp-variant-swatch[data-value="Sky Blue"] {
  background: #7cc4e6;
}
.cbp-variant-swatch[data-label="Red"],
.cbp-variant-swatch[data-value="Red"] {
  background: #e04040;
}
.cbp-variant-swatch[data-label="Green"],
.cbp-variant-swatch[data-value="Green"] {
  background: #5CBF7A;
}
.cbp-variant-swatch[data-label="Blue"],
.cbp-variant-swatch[data-value="Blue"] {
  background: #4a90d9;
}
.cbp-variant-swatch[data-label="Orange"],
.cbp-variant-swatch[data-value="Orange"] {
  background: #f5a623;
}
.cbp-variant-swatch[data-label="Purple"],
.cbp-variant-swatch[data-value="Purple"] {
  background: #9b59b6;
}
.cbp-variant-swatch[data-label="Pink"],
.cbp-variant-swatch[data-value="Pink"] {
  background: #e88ca5;
}
.cbp-variant-swatch[data-label="Silver"],
.cbp-variant-swatch[data-value="Silver"] {
  background: #c0c0c0;
}
.cbp-variant-swatch[data-label="Gold"],
.cbp-variant-swatch[data-value="Gold"] {
  background: #d4a843;
}

/* Fix 3: Ensure Kadence doesn't add extra wrapper padding
   to the product card image area */
.woocommerce ul.products li.product .loop-image-link,
.woocommerce ul.products li.product .woocommerce-loop-image-link {
  display: block;
  background: var(--cbp-ink-4);
  position: relative;
}

/* Add the green glow radial gradient to product card images
   matching the prototype's .img-wrap::before */
.woocommerce ul.products li.product .loop-image-link::before,
.woocommerce ul.products li.product .woocommerce-loop-image-link::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 60%, rgba(92,191,122,0.08) 0%, transparent 60%);
  pointer-events: none;
  z-index: 1;
}

/* ============================================================
   POLISH PATCH 2 — April 10, 2026
   Fix white sidebars + price math single-row layout
   ============================================================ */

/* Fix 1: Gutenberg .wp-site-blocks wrapper has white bg that
   bleeds through as sidebars on product/shop pages */
.single-product .wp-site-blocks,
.tax-product_cat .wp-site-blocks,
.post-type-archive-product .wp-site-blocks,
.woocommerce-page .wp-site-blocks {
  background: var(--cbp-ink-1) !important;
}

/* Also catch the Kadence page/content wrapper background */
.single-product #primary,
.single-product #content,
.single-product .site-content,
.tax-product_cat #primary,
.tax-product_cat #content,
.post-type-archive-product #primary,
.post-type-archive-product #content {
  background: var(--cbp-ink-1) !important;
}

/* Fix 2: Price math row — force single line, no wrapping.
   Reduce gap slightly and let values shrink to fit. */
.cbp-price-math {
  flex-wrap: nowrap !important;
  gap: 0.75rem !important;
  overflow: hidden;
}
.cbp-price-math-val {
  font-size: 1.1rem !important;
  white-space: nowrap;
}
.cbp-price-math-op {
  font-size: 1.5rem !important;
  padding: 0 0.15rem !important;
  flex-shrink: 0;
}
.cbp-price-math-item {
  flex-shrink: 1;
  min-width: 0;
}

/* ============================================================
   POLISH PATCH 3 — April 9, 2026
   Fix: related section double padding, corner badge,
   upload zone inner styles, spec sheet single-row
   ============================================================ */

/* Fix 1: Related section — remove padding from inner WooCommerce
   .related.products wrapper. The outer .cbp-related already has
   clamp(4rem,7vw,6rem) padding; the inner wrapper was doubling it. */
.cbp-related > .related.products,
.cbp-related section.related.products,
.cbp-related > section.related {
  padding: 0 !important;
  background: transparent !important;
  border: none !important;
}

/* Also tighten header-to-grid margin */
.cbp-related-head {
  margin-bottom: 2rem !important;
}

/* Fix 2: Corner badge on related product card images.
   Positioned inside .woocommerce-loop-image-link which already
   has position: relative from previous patch. */
.cbp-corner-badge {
  position: absolute;
  top: 0.85rem;
  right: 0.85rem;
  font-family: var(--cbp-mono);
  font-size: 9px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cbp-accent);
  z-index: 2;
  pointer-events: none;
}

/* Fix 3: Upload zone — ensure plugin output (#wcuf_file_uploads_container)
   inherits the .cbp-upload container's styles cleanly */
.cbp-upload #wcuf_file_uploads_container {
  width: 100%;
  margin-top: 0.5rem;
}
/* Remove any default borders/backgrounds from the plugin's inner wrappers */
.cbp-upload .wcuf_upload_section,
.cbp-upload #wcuf-files-box,
.cbp-upload .wcuf_file_upload_wrapper {
  background: transparent !important;
  border: none !important;
}
/* Style the plugin's browse/upload button to match our design */
.cbp-upload .wcuf_btn,
.cbp-upload .wcuf_browse_button,
.cbp-upload input[type="file"] {
  font-family: var(--cbp-mono) !important;
  font-size: 11px !important;
  letter-spacing: 0.1em !important;
  color: var(--cbp-accent) !important;
  background: transparent !important;
  border: 1px dashed var(--cbp-accent) !important;
  border-radius: 4px !important;
  padding: 0.5rem 1rem !important;
  cursor: pointer !important;
  width: 100% !important;
  text-transform: uppercase !important;
}

/* Fix 4: Spec sheet — force single row on desktop, no wrapping.
   Items are flex-direction:column (key/val stacked), but the row
   of items shouldn't wrap at typical viewport widths. */
.cbp-spec-grid {
  flex-wrap: nowrap !important;
  overflow-x: auto;
  scrollbar-width: none;
}
.cbp-spec-grid::-webkit-scrollbar {
  display: none;
}
.cbp-spec-item {
  flex-shrink: 0;
}

/* Ensure WooCommerce default product meta (SKU/category output)
   doesn't show on single product pages — we render specs ourselves */
.single-product .product_meta {
  display: none !important;
}

/* ============================================================
   PATCH v2.3 — April 10, 2026
   Gallery chrome: crosshairs (A1), plate badge + frame counter (A2/A3),
   thumbnail numbers (A4); dynamic unit labels (C3/C4)
   ============================================================ */

/* Gallery wrapper: needs relative positioning for overlay elements */
.woocommerce-product-gallery__wrapper {
  position: relative;
}

/* A1: Corner crosshairs — thin hairlines forming a + at each corner */
.cbp-crosshair {
  position: absolute;
  width: 14px;
  height: 14px;
  z-index: 10;
  pointer-events: none;
}
.cbp-crosshair::before,
.cbp-crosshair::after {
  content: '';
  position: absolute;
  background: var(--cbp-accent, #5cbf7a);
  opacity: 0.7;
}
.cbp-crosshair::before { left: 50%; top: 0; bottom: 0; width: 1px; transform: translateX(-50%); }
.cbp-crosshair::after  { top: 50%; left: 0; right: 0; height: 1px; transform: translateY(-50%); }
.cbp-crosshair--tl { top: 1rem; left: 1rem; }
.cbp-crosshair--tr { top: 1rem; right: 1rem; }
.cbp-crosshair--bl { bottom: 1rem; left: 1rem; }
.cbp-crosshair--br { bottom: 1rem; right: 1rem; }

/* A2 + A3: Gallery meta bar — plate badge and frame counter */
.cbp-gallery-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.5rem 1rem;
  background: transparent;
  border-top: 1px solid rgba(92,191,122,0.15);
  margin-top: 0;
}
.cbp-gallery-plate {
  font-family: var(--cbp-mono, 'JetBrains Mono', monospace);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cbp-accent, #5cbf7a);
}
.cbp-gallery-frame {
  font-family: var(--cbp-mono, 'JetBrains Mono', monospace);
  font-size: 10px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--cbp-paper-dim, rgba(245,240,228,0.45));
}

/* A4: Thumbnail number labels */
.flex-control-thumbs {
  position: relative;
}
.flex-control-thumbs li {
  position: relative;
}
.cbp-thumb-num {
  position: absolute;
  top: 4px;
  left: 5px;
  font-family: var(--cbp-mono, 'JetBrains Mono', monospace);
  font-size: 8px;
  letter-spacing: 0.1em;
  color: var(--cbp-accent, #5cbf7a);
  z-index: 5;
  pointer-events: none;
  line-height: 1;
}
/* Active thumb highlight */
.flex-control-thumbs li.cbp-thumb-active img,
.flex-control-thumbs li.flex-active img {
  border-color: var(--cbp-accent, #5cbf7a) !important;
}


/* ============================================================
   PATCH v2.4 — April 10, 2026
   J7: Arrow indicator on related product cards;
   D2: booklets placeholder on select dropdowns (NEW);
   breadcrumb / variant selector polish
   ============================================================ */

/* J7: Arrow → next to the price in related product cards */
.cbp-related .entry-content-wrap .price {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}
.cbp-related .entry-content-wrap .price::after {
  content: '→';
  font-family: var(--cbp-sans, 'Inter', sans-serif);
  font-size: 0.85rem;
  color: var(--cbp-accent, #5cbf7a);
  opacity: 0.55;
  flex-shrink: 0;
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.cbp-related .loop-entry:hover .entry-content-wrap .price::after {
  opacity: 1;
  transform: translateX(3px);
}

/* J6 safeguard: ensure related grid is 4 columns inside .cbp-related */
.cbp-related .products.related {
  columns: unset !important;
}
.cbp-related ul.products {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 1.5rem !important;
}
@media (max-width: 900px) {
  .cbp-related ul.products {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}
@media (max-width: 540px) {
  .cbp-related ul.products {
    grid-template-columns: 1fr !important;
  }
}

/* B4: Suppress Free Shipping from appearing anywhere in breadcrumb links.
   (Already filtered in PHP for the eyebrow/custom breadcrumb; this
   catches any WooCommerce-generated breadcrumb that slips through.) */
.cbp-breadcrumb-track a[href*=free-shipping],
.woocommerce-breadcrumb a[href*=free-shipping],
.woocommerce-breadcrumb .separator + a[href*=free-shipping] {
  display: none !important;
}
/* Also hide the slash before the hidden link */
.cbp-breadcrumb-track a[href*=free-shipping] + .sep,
.cbp-breadcrumb-track a[href*=free-shipping] ~ .sep:first-of-type {
  display: none !important;
}

/* ============================================================
   PATCH v2.5 — April 10, 2026
   Gallery chrome FIX: match mockup exactly
   - Dark bg, aspect-ratio, radial glow on main image area
   - Crosshairs inside gallery with correct class names
   - Gallery-meta absolute-positioned inside main area
   - Square thumbnails with dark bg and border
   - Hide WC magnifying glass / zoom trigger
   - Image sized 80% with drop-shadow
   ============================================================ */

/* Hide WooCommerce zoom trigger (magnifying glass icon) */
.woocommerce-product-gallery__trigger {
  display: none !important;
}

/* Main gallery figure — dark background, square aspect ratio, glow */
.woocommerce-product-gallery {
  position: relative;
}
/* Gallery container: constrain width so gallery is properly sized */
.single-product .woocommerce-product-gallery {
  max-width: 100%;
}
/* flex-viewport: the visible slide area — dark bg, border */
.woocommerce-product-gallery .flex-viewport {
  position: relative;
  background: var(--cbp-ink-3, #1a1f16);
  border: 1px solid var(--cbp-rule, rgba(92,191,122,0.12));
  overflow: hidden;
}
/* Override flexslider inline height — cap viewport to reasonable size.
   Flexslider calculates height from image natural dimensions (800px),
   but our CSS shows images at 80%. Cap height + let images center. */
.woocommerce-product-gallery .flex-viewport {
  max-height: 460px !important;
}


/* Radial gradient glow overlay (matches mockup exactly) */
.woocommerce-product-gallery .flex-viewport::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 55%,
    rgba(92,191,122,.18) 0%,
    rgba(92,191,122,.05) 30%,
    transparent 60%);
  pointer-events: none;
  z-index: 1;
}

/* Product image inside each slide: 80% size, centered, with drop-shadow */
.woocommerce-product-gallery .flex-viewport .woocommerce-product-gallery__image img {
  width: 88% !important;
  height: 88% !important;
  max-width: none !important;
  object-fit: contain !important;
  margin: auto;
  display: block;
  filter: drop-shadow(0 30px 50px rgba(0,0,0,.6)) drop-shadow(0 0 40px rgba(92,191,122,.15));
  position: relative;
  z-index: 1;
  transition: transform .8s cubic-bezier(.2,.6,.2,1);
}
.woocommerce-product-gallery .flex-viewport:hover .woocommerce-product-gallery__image img {
  transform: scale(1.02);
}

/* Each slide: flex-center the image vertically and horizontally.
   Height must match viewport (not natural image height) so centering works. */
.woocommerce-product-gallery .flex-viewport .woocommerce-product-gallery__image {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: var(--cbp-ink-3, #1a1f16);
  max-height: 460px !important;
}

/* A1: Corner crosshairs — positioned inside flex-viewport */
.woocommerce-product-gallery .cbp-crosshair {
  position: absolute;
  width: 14px;
  height: 14px;
  z-index: 10;
  pointer-events: none;
}
.woocommerce-product-gallery .cbp-crosshair::before,
.woocommerce-product-gallery .cbp-crosshair::after {
  content: "";
  position: absolute;
  background: var(--cbp-accent, #5cbf7a);
  opacity: 0.6;
}
.woocommerce-product-gallery .cbp-crosshair::before {
  left: 50%; top: 0; bottom: 0; width: 1px; transform: translateX(-50%);
}
.woocommerce-product-gallery .cbp-crosshair::after {
  top: 50%; left: 0; right: 0; height: 1px; transform: translateY(-50%);
}
.woocommerce-product-gallery .cbp-crosshair.tl { top: 1rem; left: 1rem; }
.woocommerce-product-gallery .cbp-crosshair.tr { top: 1rem; right: 1rem; }
.woocommerce-product-gallery .cbp-crosshair.bl { bottom: 1rem; left: 1rem; }
.woocommerce-product-gallery .cbp-crosshair.br { bottom: 1rem; right: 1rem; }

/* A2+A3: Gallery-meta — absolute bottom inside the viewport */
.cbp-gallery-meta {
  position: absolute !important;
  bottom: 1rem;
  left: 1rem;
  right: 1rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--cbp-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cbp-paper-faint, rgba(245,240,228,0.25));
  z-index: 10;
  pointer-events: none;
  background: transparent;
  border-top: none;
  padding: 0;
  margin-top: 0;
}
.cbp-gallery-plate {
  color: var(--cbp-accent, #5cbf7a);
}

/* A4: Thumbnails — square, dark bg, border (match mockup) */
.woocommerce-product-gallery .flex-control-thumbs {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 0.75rem !important;
  list-style: none !important;
  padding: 0 !important;
  margin-top: 1rem !important;
}
.woocommerce-product-gallery .flex-control-thumbs li {
  position: relative;
  background: var(--cbp-ink-3, #1a1f16);
  border: 1px solid var(--cbp-rule, rgba(92,191,122,0.12));
  aspect-ratio: 1 / 1;
  display: flex !important;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  cursor: pointer;
  transition: border-color 0.25s ease;
  width: auto !important;
  float: none !important;
}
.woocommerce-product-gallery .flex-control-thumbs li img {
  width: 75% !important;
  height: 75% !important;
  object-fit: contain !important;
  opacity: 0.7;
  transition: opacity 0.25s ease;
  padding: 0 !important;
  margin: auto !important;
}
.woocommerce-product-gallery .flex-control-thumbs li:hover {
  border-color: var(--cbp-paper-dim, rgba(245,240,228,0.45));
}
.woocommerce-product-gallery .flex-control-thumbs li:hover img {
  opacity: 1;
}
.woocommerce-product-gallery .flex-control-thumbs li.cbp-thumb-active,
.woocommerce-product-gallery .flex-control-thumbs li.flex-active {
  border-color: var(--cbp-accent, #5cbf7a) !important;
}
.woocommerce-product-gallery .flex-control-thumbs li.cbp-thumb-active img,
.woocommerce-product-gallery .flex-control-thumbs li.flex-active img {
  opacity: 1;
}
/* Thumbnail number labels */
.cbp-thumb-num {
  position: absolute;
  top: 0.5rem;
  left: 0.5rem;
  font-family: var(--cbp-mono, "JetBrains Mono", monospace);
  font-size: 9px;
  letter-spacing: 0.15em;
  color: var(--cbp-paper-faint, rgba(245,240,228,0.25));
  z-index: 5;
  pointer-events: none;
  line-height: 1;
}

/* Disable WooCommerce photoswipe / zoom features via CSS */
.woocommerce-product-gallery--with-images .woocommerce-product-gallery__wrapper {
  cursor: default !important;
}
.pswp, .zoomImg, .zoomContainer {
  display: none !important;
}

/* ============================================================
   PATCH v2.6 — April 10, 2026
   Merge upload sections: style WCUF plugin output to match mockup.
   Hides plugin default styling, applies cbp design system.
   ============================================================ */

/* Container: match cbp-upload mockup styling */
#wcuf_file_uploads_container {
  background: var(--cbp-ink-3, #1a1f16);
  border: 1px solid var(--cbp-rule, rgba(92,191,122,0.12));
  border-radius: 6px;
  padding: 2rem;
  text-align: center;
  margin-bottom: 1.5rem;
}

/* Upload field title: match cbp-upload-title */
#wcuf_file_uploads_container .wcuf_upload_field_title {
  font-family: var(--cbp-serif, "Playfair Display", serif) !important;
  font-size: 1rem !important;
  font-weight: 400 !important;
  color: var(--cbp-paper, #f5f0e4) !important;
  letter-spacing: 0.02em !important;
  text-align: center !important;
  margin: 0 0 0.5rem 0 !important;
}

/* Description text: match cbp-upload-sub */
#wcuf_file_uploads_container .wcuf_field_description {
  font-family: var(--cbp-mono, "JetBrains Mono", monospace) !important;
  font-size: 10px !important;
  letter-spacing: 0.08em !important;
  color: var(--cbp-paper-dim, rgba(245,240,228,0.45)) !important;
  text-align: center !important;
  line-height: 1.6 !important;
  display: block;
  margin-bottom: 1rem !important;
}

/* Upload icon: replace plugin SVG icon styling */
#wcuf_file_uploads_container .wcuf_drag_and_drop_area_icon {
  width: 24px !important;
  height: 24px !important;
  fill: var(--cbp-accent, #5cbf7a) !important;
  opacity: 0.5;
  margin-bottom: 0.5rem;
}

/* Drag & drop zone: match cbp dashed upload style */
#wcuf_file_uploads_container .wcuf_upload_drag_and_drop_area {
  border: 1px dashed var(--cbp-accent, #5cbf7a) !important;
  border-radius: 4px !important;
  background: transparent !important;
  padding: 1.5rem 1rem !important;
  cursor: pointer !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  transition: border-color 0.25s ease, background 0.25s ease !important;
}
#wcuf_file_uploads_container .wcuf_upload_drag_and_drop_area:hover {
  border-color: var(--cbp-paper, #f5f0e4) !important;
  background: rgba(92,191,122,0.04) !important;
}

/* Drag & drop description text */
#wcuf_file_uploads_container .wcuf_drag_and_drop_area_description {
  font-family: var(--cbp-mono, "JetBrains Mono", monospace) !important;
  font-size: 10px !important;
  letter-spacing: 0.1em !important;
  text-transform: uppercase !important;
  color: var(--cbp-accent, #5cbf7a) !important;
}

/* Hide the "Upload selected files" button — upload triggers on drag/click */
#wcuf_file_uploads_container .wcuf_upload_multiple_files_button {
  display: none !important;
}

/* File input: hide the raw input, the drag zone handles it */
#wcuf_file_uploads_container .wcuf_file_input {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  opacity: 0 !important;
  overflow: hidden !important;
}

/* Upload button container */
#wcuf_file_uploads_container .wcuf_upload_button_container {
  width: 100%;
}

/* Status/progress bar styling */
#wcuf_file_uploads_container .wcuf_upload_status_box {
  margin-top: 0.75rem;
}
#wcuf_file_uploads_container .wcuf_bar {
  background: var(--cbp-accent, #5cbf7a) !important;
  height: 3px !important;
  border-radius: 2px !important;
}
#wcuf_file_uploads_container .wcuf_percent {
  font-family: var(--cbp-mono, "JetBrains Mono", monospace) !important;
  font-size: 10px !important;
  color: var(--cbp-accent, #5cbf7a) !important;
}

/* File name display */
#wcuf_file_uploads_container .wcuf_file_name {
  font-family: var(--cbp-mono, "JetBrains Mono", monospace) !important;
  font-size: 11px !important;
  color: var(--cbp-paper-dim, rgba(245,240,228,0.45)) !important;
}

/* Delete / action buttons */
#wcuf_file_uploads_container .wcuf_just_selected_multiple_files_delete_button,
#wcuf_file_uploads_container .wcuf_upload_multiple_files_mirror_button {
  font-family: var(--cbp-mono, "JetBrains Mono", monospace) !important;
  font-size: 10px !important;
  letter-spacing: 0.1em !important;
  text-transform: uppercase !important;
  color: var(--cbp-accent, #5cbf7a) !important;
  background: transparent !important;
  border: 1px solid var(--cbp-rule, rgba(92,191,122,0.12)) !important;
  border-radius: 4px !important;
  padding: 0.4rem 0.8rem !important;
  cursor: pointer !important;
}

/* Max size notice */
#wcuf_file_uploads_container .wcuf_max_size_notice {
  font-family: var(--cbp-mono, "JetBrains Mono", monospace) !important;
  font-size: 9px !important;
  color: var(--cbp-paper-dim, rgba(245,240,228,0.45)) !important;
}

/* Hide the wcuf-files-box placeholder if empty */
#wcuf-files-box:empty {
  display: none;
}

/* Hide the old static cbp-upload section (fallback if any remain) */
.cbp-upload:not(#wcuf_file_uploads_container) {
  display: none !important;
}

/* Remove any default plugin inline styles that conflict */
#wcuf_file_uploads_container .wcuf_single_upload_field_container,
#wcuf_file_uploads_container .wcuf_upload_fields_row_element {
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
}

/* ============================================================
   PATCH 4 -- Card counter + arrow + result count
   ============================================================ */

/* Card position counter -- top-left (mirrors badge top-right) */
.cbp-card-counter {
  position: absolute;
  top: 0.85rem;
  left: 0.85rem;
  font-family: var(--cbp-mono);
  font-size: 9px;
  letter-spacing: 0.12em;
  color: var(--cbp-paper-faint);
  z-index: 2;
  pointer-events: none;
}

/* Card arrow -- bottom-right circle button */
.cbp-card-arrow {
  position: absolute;
  bottom: 1.35rem;
  right: 1.25rem;
  width: 28px;
  height: 28px;
  border: 1px solid var(--cbp-rule);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  color: var(--cbp-paper-dim);
  text-decoration: none;
  transition: color 0.15s, border-color 0.15s;
  z-index: 2;
  line-height: 1;
}
.cbp-card-arrow:hover {
  color: var(--cbp-accent);
  border-color: var(--cbp-accent);
}

/* ============================================================
   CATEGORY LAYOUT FIX — Below-the-grid SEO content
   Added 2026-04-18
   Editorial dark theme — matches .cbp-cat-header typography
   ============================================================ */

.cbp-category-seo-content {
  background: var(--cbp-ink-1);
  color: var(--cbp-paper);
  padding: clamp(3rem, 6vw, 5rem) var(--cbp-gutter);
  border-top: 1px solid var(--cbp-rule);
}

.cbp-category-seo-content-inner {
  max-width: 760px;
  margin: 0 auto;
}

.cbp-category-seo-content h2 {
  font-family: var(--cbp-serif);
  font-weight: 500;
  font-size: clamp(1.5rem, 2.4vw, 2rem);
  line-height: 1.2;
  color: var(--cbp-paper);
  margin: 2.5rem 0 1rem;
  letter-spacing: -0.01em;
}

.cbp-category-seo-content h2:first-child {
  margin-top: 0;
}

/* Long-form body = grey, with green dash markers — match the product
   .cbp-description-body prose treatment. (styling-consistency 2026-06-06) */
.cbp-category-seo-content p {
  font-family: var(--cbp-sans);
  font-size: 1rem;
  line-height: 1.7;
  color: var(--cbp-paper-dim);
  margin: 0 0 1.25rem;
}

.cbp-category-seo-content ul {
  list-style: none;
  margin: 0 0 1.5rem;
  padding: 0;
  color: var(--cbp-paper-dim);
  font-family: var(--cbp-sans);
  line-height: 1.7;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.cbp-category-seo-content ul li {
  margin-bottom: 0;
  padding-left: 1.5rem;
  position: relative;
}

.cbp-category-seo-content ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 8px;
  height: 1px;
  background: var(--cbp-accent);
}

.cbp-category-seo-content a {
  color: var(--cbp-accent);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.15s ease;
}

.cbp-category-seo-content a:hover {
  border-bottom-color: var(--cbp-accent);
}

.cbp-category-seo-content strong {
  color: var(--cbp-paper);
  font-weight: 600;
}

.cbp-category-seo-content blockquote {
  border-left: 2px solid var(--cbp-accent);
  padding: 0.5rem 0 0.5rem 1.25rem;
  margin: 1.5rem 0;
  color: var(--cbp-paper-dim);
}

.cbp-category-seo-cta {
  margin-top: 2.5rem;
  padding-top: 2rem;
  border-top: 1px solid var(--cbp-rule);
}

.cbp-category-seo-cta-link {
  font-family: var(--cbp-mono);
  font-size: 0.875rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--cbp-accent);
  border-bottom: 1px solid var(--cbp-accent) !important;
}

.cbp-category-seo-cta-link:hover {
  color: var(--cbp-accent-2);
  border-bottom-color: var(--cbp-accent-2) !important;
}

@media (max-width: 768px) {
  .cbp-category-seo-content {
    padding: 2.5rem var(--cbp-gutter);
  }
  .cbp-category-seo-content h2 {
    margin-top: 2rem;
  }
}

/* ============================================
   CONTACT PAGE — HERO & LEAD COPY
   ============================================ */
.page-id-75 .cbp-label {
  text-align: center;
  display: block;
  margin-bottom: 0.5rem;
}

/* Eyebrows → green (styling-consistency 2026-06-06).
   About: all 4 section eyebrows green + a leading green dash.
   Contact: hero "CONTACT US" eyebrow green; sidebar .cbp-info-card labels stay grey. */
.page-id-5335 .cbp-label,
.page-id-75 .cbp-label {
  color: var(--cbp-accent);
}
.page-id-75 .cbp-info-card .cbp-label {
  color: var(--cbp-paper-dim);
}
.page-id-5335 .cbp-label::before {
  content: "";
  display: inline-block;
  width: 24px;
  height: 1px;
  background: var(--cbp-accent);
  vertical-align: middle;
  margin-right: 0.7rem;
}

.lead-text {
  font-size: 1.125rem;
  color: var(--cbp-paper-dim);
  line-height: 1.7;
  max-width: 600px;
  margin: 0 auto;
  text-align: center;
}

/* ============================================
   CONTACT FORM — LAYOUT
   ============================================ */
.cbp-contact-form-wrapper {
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  border-radius: 12px;
  padding: 2.5rem;
}

.cbp-form-section-label {
  font-family: var(--cbp-serif);
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--cbp-paper);
  padding-bottom: 0.75rem;
  margin-bottom: 1.25rem;
  border-bottom: 1px solid var(--cbp-rule);
}
.cbp-form-section-label:not(:first-child) {
  margin-top: 2rem;
}

.cbp-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-bottom: 1rem;
}

.cbp-form-field label {
  display: block;
  font-size: 0.8125rem;
  color: var(--cbp-paper-dim);
  margin-bottom: 0.375rem;
}
.cbp-form-field .required {
  color: var(--cbp-accent);
}
.cbp-form-field .optional {
  color: var(--cbp-paper-dim);
  font-weight: 400;
  font-size: 0.75rem;
}

.cbp-form-field input[type="text"],
.cbp-form-field input[type="email"],
.cbp-form-field input[type="tel"],
.cbp-form-field select,
.cbp-form-field textarea {
  width: 100%;
  margin-top: 0.375rem;
  background: var(--cbp-ink-1);
  border: 1px solid var(--cbp-rule);
  border-radius: 8px;
  color: var(--cbp-paper);
  padding: 0.625rem 0.875rem;
  font-family: var(--cbp-sans);
  font-size: 0.9375rem;
  transition: border-color 0.2s ease;
}
.cbp-form-field input[type="text"]:focus,
.cbp-form-field input[type="email"]:focus,
.cbp-form-field input[type="tel"]:focus,
.cbp-form-field select:focus,
.cbp-form-field textarea:focus {
  border-color: var(--cbp-accent);
  outline: none;
}

.cbp-form-field select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2397948A' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.875rem center;
  padding-right: 2.5rem;
}

.cbp-form-field textarea {
  min-height: 120px;
  resize: vertical;
}

.cbp-form-full {
  margin-bottom: 1rem;
}

/* Radio pills for timeline */
.cbp-form-field .wpcf7-radio {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-top: 0.5rem;
}
.cbp-form-field .wpcf7-list-item {
  margin: 0 !important;
}
.cbp-form-field .wpcf7-list-item label {
  display: inline-flex;
  align-items: center;
  padding: 0.5rem 1rem;
  border: 1px solid var(--cbp-rule);
  border-radius: 999px;
  cursor: pointer;
  font-size: 0.8125rem;
  color: var(--cbp-paper);
  margin: 0;
  transition: all 0.2s ease;
}
.cbp-form-field .wpcf7-list-item input[type="radio"] {
  display: none;
}
.cbp-form-field .wpcf7-list-item label:hover {
  border-color: var(--cbp-accent);
  color: var(--cbp-accent);
}
/* :has() for modern browsers */
.cbp-form-field .wpcf7-list-item label:has(input:checked) {
  border-color: var(--cbp-accent);
  background: rgba(92, 191, 122, 0.1);
  color: var(--cbp-accent);
}
/* Fallback for checked state via adjacent sibling */
.cbp-form-field .wpcf7-list-item input[type="radio"]:checked + span {
  color: var(--cbp-accent);
}

/* File upload styling */
.cbp-form-field input[type="file"] {
  width: 100%;
  padding: 1rem;
  background: var(--cbp-ink-1);
  border: 1px dashed var(--cbp-rule);
  border-radius: 8px;
  color: var(--cbp-paper-dim);
  font-size: 0.875rem;
  cursor: pointer;
  transition: border-color 0.2s ease;
}
.cbp-form-field input[type="file"]:hover {
  border-color: var(--cbp-accent);
}

/* Submit row */
.cbp-form-submit-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  margin-top: 1.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--cbp-rule);
  flex-wrap: wrap;
}
.cbp-form-reply-promise {
  font-size: 0.8125rem;
  color: var(--cbp-paper-dim);
}
.cbp-form-submit-row .wpcf7-submit {
  background: var(--cbp-accent);
  color: var(--cbp-accent-ink);
  font-family: var(--cbp-serif);
  font-weight: 600;
  font-size: 0.9375rem;
  padding: 0.875rem 2rem;
  border-radius: 999px;
  border: none;
  cursor: pointer;
  transition: background 0.2s ease, transform 0.15s ease;
}
.cbp-form-submit-row .wpcf7-submit:hover {
  background: var(--cbp-accent-2);
  transform: translateY(-1px);
}

/* Live contact form renders bare .wpcf7 markup (no .cbp-form-submit-row wrapper),
   so the rule above never matches. Style the actual submit as the sitewide
   green pill CTA. !important beats Kadence/Bluehost button defaults. (styling-consistency) */
body.page-id-75 input.wpcf7-submit {
  font-family: var(--cbp-sans) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  letter-spacing: 0.01em;
  padding: 1rem 1.85rem !important;
  background: var(--cbp-accent) !important;
  color: var(--cbp-accent-ink) !important;
  border: 1px solid var(--cbp-accent) !important;
  border-radius: var(--cbp-radius-pill) !important;
  cursor: pointer;
  box-shadow: none !important;
  transition: background .2s ease, transform .15s ease;
}
body.page-id-75 input.wpcf7-submit:hover {
  background: var(--cbp-accent-2) !important;
  transform: translateY(-1px);
}

/* ============================================
   CONTACT PAGE — SIDEBAR INFO CARDS
   ============================================ */
.cbp-info-card {
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  border-radius: 12px;
  padding: 1.75rem;
  margin-bottom: 1rem;
}
.cbp-info-card-muted {
  background: var(--cbp-ink-2);
  border: none;
}
.cbp-info-card .cbp-label {
  margin-bottom: 1rem;
  display: block;
}

.cbp-info-item {
  margin-bottom: 1rem;
}
.cbp-info-item:last-child { margin-bottom: 0; }

.cbp-info-label {
  display: block;
  font-size: 0.75rem;
  color: var(--cbp-paper-dim);
  margin-bottom: 0.25rem;
}
.cbp-info-value {
  display: block;
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--cbp-paper);
  font-family: var(--cbp-serif);
}
a.cbp-info-value:hover {
  color: var(--cbp-accent);
}
.cbp-info-value-small {
  display: block;
  font-size: 0.9375rem;
  color: var(--cbp-paper);
}

.cbp-info-text {
  font-size: 0.9375rem;
  color: var(--cbp-paper-dim);
  line-height: 1.6;
  margin-bottom: 1rem;
}
.cbp-info-link {
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--cbp-accent);
  text-decoration: none;
}
.cbp-info-link:hover {
  color: var(--cbp-accent-2);
}

/* What to expect steps */
.cbp-step-item {
  display: flex;
  gap: 0.875rem;
  margin-bottom: 1rem;
  align-items: flex-start;
}
.cbp-step-item:last-child { margin-bottom: 0; }
.cbp-step-number {
  font-family: var(--cbp-serif);
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--cbp-accent);
  line-height: 1;
  flex-shrink: 0;
  width: 24px;
}
.cbp-step-item strong {
  display: block;
  font-size: 0.9375rem;
  color: var(--cbp-paper);
  font-weight: 600;
  margin-bottom: 0.125rem;
}
.cbp-step-item span {
  display: block;
  font-size: 0.8125rem;
  color: var(--cbp-paper-dim);
  line-height: 1.5;
}

/* ============================================
   CONTACT PAGE — RESPONSIVE
   ============================================ */
@media (max-width: 900px) {
  .cbp-contact-form-wrapper {
    padding: 1.5rem;
  }
  .cbp-form-row {
    grid-template-columns: 1fr;
  }
  .cbp-form-submit-row {
    flex-direction: column;
    align-items: stretch;
  }
  .cbp-form-submit-row .wpcf7-submit {
    width: 100%;
  }
}

/* ============================================
   CONTACT PAGE — KADENCE WRAPPER OVERRIDES
   Hide default page title hero + strip boxed
   white background so dark design shows through
   ============================================ */
.page-id-75 .entry-hero,
.page-id-75 .entry-header,
.page-id-75 .page-title,
.page-id-75 .entry-title {
  display: none !important;
}

.page-id-75 .content-area,
.page-id-75 .site-main,
.page-id-75 .entry-content-wrap,
.page-id-75 .entry-content {
  padding: 0 !important;
  margin: 0 !important;
  max-width: none !important;
}

.page-id-75 .entry.single-entry,
.page-id-75 .content-wrap,
.page-id-75 .entry-content-wrap {
  background: transparent !important;
  box-shadow: none !important;
}

/* COMMON — SECTION HEADERS & LABELS */
.cbp-section-header {
  text-align: center;
  max-width: 720px;
  margin: 0 auto 3rem;
}
.cbp-section-header h2 {
  margin: 0.5rem 0 0.75rem;
}
.cbp-section-subtitle {
  font-size: 1.0625rem;
  color: var(--cbp-paper-dim);
  line-height: 1.7;
  margin: 0;
}
.cbp-cta-subtitle {
  font-size: 1.0625rem;
  color: var(--cbp-paper-dim);
  line-height: 1.7;
  margin: 0.5rem 0 1.5rem;
}

/* ABOUT PAGE — STATS STRIP */
.cbp-stats-strip {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
}
.cbp-stat {
  text-align: center;
  padding: 1rem;
  border-right: 1px solid var(--cbp-rule);
}
.cbp-stat:last-child { border-right: none; }
.cbp-stat-number {
  display: block;
  font-family: var(--cbp-serif);
  font-size: 2.25rem;
  font-weight: 700;
  color: var(--cbp-accent);
  line-height: 1.1;
}
.cbp-stat-label {
  display: block;
  font-size: 0.8125rem;
  color: var(--cbp-paper-dim);
  margin-top: 0.375rem;
}

/* ABOUT PAGE — FEATURE GRID */
.cbp-feature-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.25rem;
  margin-top: 2rem;
}
.cbp-feature-card {
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  border-radius: 12px;
  padding: 2rem 1.75rem;
  transition: border-color 0.2s ease;
}
.cbp-feature-card:hover {
  border-color: var(--cbp-accent);
}
.cbp-feature-icon {
  width: 44px;
  height: 44px;
  background: rgba(92, 191, 122, 0.12);
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--cbp-accent);
  font-size: 1.25rem;
  font-weight: 700;
  margin-bottom: 1.25rem;
}
.cbp-feature-card h3 {
  font-size: 1.25rem;
  margin: 0 0 0.625rem;
}
.cbp-feature-card p {
  font-size: 0.9375rem;
  color: var(--cbp-paper-dim);
  line-height: 1.7;
  margin: 0;
}

/* ABOUT PAGE — AUDIENCE GRID */
.cbp-audience-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1rem;
  margin-top: 2rem;
}
.cbp-audience-card {
  background: var(--cbp-ink-1);
  border: 1px solid var(--cbp-rule);
  border-radius: 12px;
  padding: 1.5rem 1.25rem;
}
.cbp-audience-card strong {
  display: block;
  font-family: var(--cbp-serif);
  font-size: 1.125rem;
  color: var(--cbp-paper);
  margin-bottom: 0.5rem;
}
.cbp-audience-card span {
  display: block;
  font-size: 0.875rem;
  color: var(--cbp-paper-dim);
  line-height: 1.6;
}

/* FAQ PAGE — TOPIC NAV */
.cbp-faq-nav {
  display: flex;
  gap: 0.625rem;
  flex-wrap: wrap;
  justify-content: center;
  margin-bottom: 3rem;
}
.cbp-faq-nav a {
  padding: 0.625rem 1.25rem;
  border: 1px solid var(--cbp-rule);
  border-radius: 999px;
  font-size: 0.8125rem;
  color: var(--cbp-paper);
  text-decoration: none;
  transition: all 0.2s ease;
}
.cbp-faq-nav a:hover {
  border-color: var(--cbp-accent);
  color: var(--cbp-accent);
}

/* FAQ PAGE — CATEGORY HEADERS & ACCORDIONS */
.cbp-faq-category-header {
  font-size: 1.375rem;
  margin: 3rem 0 1.25rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--cbp-rule);
}
.cbp-faq-category-header:first-of-type { margin-top: 0; }

.cbp-faq-item {
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  border-radius: var(--cbp-radius-card); /* was 8px — align to card family (styling-consistency) */
  margin-bottom: 0.625rem;
  overflow: hidden;
}
.cbp-faq-item summary {
  padding: 1rem 1.25rem;
  font-family: var(--cbp-serif); /* serif questions — match every other heading (styling-consistency) */
  font-size: 1rem;
  font-weight: 600;
  color: var(--cbp-paper);
  cursor: pointer;
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
}
.cbp-faq-item summary::-webkit-details-marker { display: none; }
.cbp-faq-item summary::after {
  content: "+";
  color: var(--cbp-accent);
  font-size: 1.25rem;
  line-height: 1;
  flex-shrink: 0;
}
.cbp-faq-item[open] summary::after { content: "\2212"; }
.cbp-faq-item .cbp-faq-a {
  padding: 0 1.25rem 1.25rem;
  font-size: 0.9375rem;
  color: var(--cbp-paper-dim);
  line-height: 1.7;
  border-top: 1px solid var(--cbp-rule);
  padding-top: 1rem;
}
.cbp-faq-item .cbp-faq-a a {
  color: var(--cbp-accent);
}
.cbp-faq-item .cbp-faq-a a:hover {
  color: var(--cbp-accent-2);
}

/* BLOG — HERO & CATEGORY NAV */
.cbp-blog-hero {
  background: var(--cbp-ink-1);
  padding: 6rem 0 3rem;
  text-align: center;
}
.cbp-blog-hero .cbp-label { margin-bottom: 0.75rem; }
.cbp-blog-hero h1 {
  max-width: 720px;
  margin: 0 auto 1rem;
}
.cbp-blog-hero .lead-text {
  max-width: 600px;
  margin: 0 auto;
}

.cbp-blog-categories {
  background: var(--cbp-ink-1);
  padding: 1rem 0 3rem;
  border-bottom: 1px solid var(--cbp-rule);
  margin-bottom: 3rem;
}
.cbp-category-nav {
  display: flex;
  gap: 0.625rem;
  flex-wrap: wrap;
  justify-content: center;
}
.cbp-category-pill {
  padding: 0.625rem 1.25rem;
  border: 1px solid var(--cbp-rule);
  border-radius: 999px;
  font-size: 0.8125rem;
  color: var(--cbp-paper);
  text-decoration: none;
  transition: all 0.2s ease;
}
.cbp-category-pill:hover {
  border-color: var(--cbp-accent);
  color: var(--cbp-accent);
}
.cbp-category-pill.active {
  background: var(--cbp-accent);
  border-color: var(--cbp-accent);
  color: var(--cbp-accent-ink);
}

/* BLOG — FEATURED POST */
.cbp-featured-post {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  border-radius: 12px;
  overflow: hidden;
  margin-bottom: 3rem;
}
.cbp-featured-image {
  display: block;
  overflow: hidden;
  background: var(--cbp-ink-2);
}
.cbp-featured-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  aspect-ratio: 16/10;
  transition: transform 0.3s ease;
}
.cbp-featured-image:hover img { transform: scale(1.03); }
.cbp-featured-content {
  padding: 2.5rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.cbp-post-meta {
  display: flex;
  gap: 0.75rem;
  align-items: center;
  margin-bottom: 0.75rem;
}
.cbp-featured-tag {
  font-family: var(--cbp-serif);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--cbp-accent);
}
.cbp-meta-dot { color: var(--cbp-paper-dim); }
.cbp-post-category {
  font-size: 0.8125rem;
  color: var(--cbp-paper-dim);
}
.cbp-featured-content h2 {
  font-size: 1.75rem;
  margin: 0 0 0.75rem;
  line-height: 1.25;
}
.cbp-featured-content h2 a {
  color: var(--cbp-paper);
  text-decoration: none;
}
.cbp-featured-content h2 a:hover { color: var(--cbp-accent); }
.cbp-featured-content p {
  font-size: 0.9375rem;
  color: var(--cbp-paper-dim);
  line-height: 1.7;
  margin: 0 0 1.25rem;
}
.cbp-post-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.cbp-post-date {
  font-size: 0.8125rem;
  color: var(--cbp-paper-dim);
}
.cbp-read-link {
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--cbp-accent);
  text-decoration: none;
}

/* BLOG — POST GRID */
.cbp-post-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin-bottom: 3rem;
}
.cbp-post-card {
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  border-radius: 12px;
  overflow: hidden;
  transition: border-color 0.2s ease, transform 0.2s ease;
}
.cbp-post-card:hover {
  border-color: var(--cbp-accent);
  transform: translateY(-2px);
}
.cbp-post-card-image {
  display: block;
  overflow: hidden;
  background: var(--cbp-ink-2);
}
.cbp-post-card-image img {
  width: 100%;
  aspect-ratio: 16/10;
  object-fit: cover;
}
.cbp-post-card-content {
  padding: 1.25rem 1.375rem;
}
.cbp-post-card-category {
  display: block;
  font-family: var(--cbp-serif);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--cbp-accent);
  margin-bottom: 0.5rem;
}
.cbp-post-card h3 {
  font-size: 1.0625rem;
  margin: 0 0 0.5rem;
  line-height: 1.35;
}
.cbp-post-card h3 a {
  color: var(--cbp-paper);
  text-decoration: none;
}
.cbp-post-card h3 a:hover { color: var(--cbp-accent); }
.cbp-post-card p {
  font-size: 0.875rem;
  color: var(--cbp-paper-dim);
  line-height: 1.6;
  margin: 0 0 0.75rem;
}
.cbp-post-card-meta {
  font-size: 0.75rem;
  color: var(--cbp-paper-dim);
}

/* BLOG — NEWSLETTER CTA */
.cbp-newsletter-cta {
  background: var(--cbp-ink-1);
  padding: 4rem 0 6rem;
}
.cbp-newsletter-box {
  background: var(--cbp-ink-3);
  border: 1px solid var(--cbp-rule);
  border-radius: 12px;
  padding: 2.5rem 2rem;
  text-align: center;
  max-width: 560px;
  margin: 0 auto;
}
.cbp-newsletter-box h3 {
  font-size: 1.375rem;
  margin: 0 0 0.5rem;
}
.cbp-newsletter-box p {
  font-size: 0.9375rem;
  color: var(--cbp-paper-dim);
  margin: 0 0 1.25rem;
}
.cbp-newsletter-form {
  display: flex;
  gap: 0.5rem;
  max-width: 440px;
  margin: 0 auto;
}
.cbp-newsletter-form input {
  flex: 1;
  background: var(--cbp-ink-1);
  border: 1px solid var(--cbp-rule);
  border-radius: 8px;
  color: var(--cbp-paper);
  padding: 0.625rem 0.875rem;
  font-family: var(--cbp-sans);
  font-size: 0.9375rem;
}
.cbp-newsletter-form input:focus {
  border-color: var(--cbp-accent);
  outline: none;
}
.cbp-newsletter-form button {
  background: var(--cbp-accent);
  color: var(--cbp-accent-ink);
  border: none;
  padding: 0.75rem 1.5rem;
  border-radius: 999px;
  font-family: var(--cbp-serif);
  font-weight: 600;
  font-size: 0.875rem;
  cursor: pointer;
  white-space: nowrap;
}
.cbp-newsletter-form button:hover { background: var(--cbp-accent-2); }

/* BLOG — EMPTY STATE */
.cbp-blog-empty {
  text-align: center;
  padding: 4rem 2rem;
  color: var(--cbp-paper-dim);
  font-size: 1.125rem;
}

/* RESPONSIVE — ANCILLARY PAGES */
@media (max-width: 900px) {
  .cbp-stats-strip,
  .cbp-feature-grid,
  .cbp-audience-grid,
  .cbp-post-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .cbp-featured-post {
    grid-template-columns: 1fr;
  }
  .cbp-featured-content { padding: 1.75rem; }
}
@media (max-width: 560px) {
  .cbp-stats-strip,
  .cbp-feature-grid,
  .cbp-audience-grid,
  .cbp-post-grid {
    grid-template-columns: 1fr;
  }
  .cbp-stat { border-right: none; border-bottom: 1px solid var(--cbp-rule); }
  .cbp-stat:last-child { border-bottom: none; }
  .cbp-newsletter-form { flex-direction: column; }
  .cbp-faq-nav { justify-content: flex-start; }
}

/* KADENCE WRAPPER OVERRIDES — About Us */
.page-id-5335 .entry-hero,
.page-id-5335 .entry-header,
.page-id-5335 .page-title,
.page-id-5335 .entry-title {
  display: none !important;
}
.page-id-5335 .content-area,
.page-id-5335 .site-main,
.page-id-5335 .entry-content-wrap,
.page-id-5335 .entry-content {
  padding: 0 !important;
  margin: 0 !important;
  max-width: none !important;
}
.page-id-5335 .entry.single-entry,
.page-id-5335 .content-wrap,
.page-id-5335 .entry-content-wrap {
  background: transparent !important;
  box-shadow: none !important;
}

/* KADENCE WRAPPER OVERRIDES — FAQ (35207=staging, 35206=prod) */
.page-id-35207 .entry-hero,
.page-id-35206 .entry-hero,
.page-id-35207 .entry-header,
.page-id-35206 .entry-header,
.page-id-35207 .page-title,
.page-id-35206 .page-title,
.page-id-35207 .entry-title,
.page-id-35206 .entry-title {
  display: none !important;
}
.page-id-35207 .content-area,
.page-id-35206 .content-area,
.page-id-35207 .site-main,
.page-id-35206 .site-main,
.page-id-35207 .entry-content-wrap,
.page-id-35206 .entry-content-wrap,
.page-id-35207 .entry-content,
.page-id-35206 .entry-content {
  padding: 0 !important;
  margin: 0 !important;
  max-width: none !important;
}
.page-id-35207 .entry.single-entry,
.page-id-35206 .entry.single-entry,
.page-id-35207 .content-wrap,
.page-id-35206 .content-wrap,
.page-id-35207 .entry-content-wrap,
.page-id-35206 .entry-content-wrap {
  background: transparent !important;
  box-shadow: none !important;
}

/* KADENCE WRAPPER OVERRIDES — Blog (home.php) */
.blog .entry-hero,
.blog .entry-header,
.blog .page-title,
.blog .entry-title {
  display: none !important;
}
.blog .content-area,
.blog .site-main,
.blog .entry-content-wrap,
.blog .entry-content {
  padding: 0 !important;
  margin: 0 !important;
  max-width: none !important;
}
.blog .entry.single-entry,
.blog .content-wrap,
.blog .entry-content-wrap {
  background: transparent !important;
  box-shadow: none !important;
}

/* ============================================
   KADENCE WRAPPER OVERRIDES — How It Works
   ============================================ */
.page-id-35174 .entry-hero,
.page-id-35174 .entry-header,
.page-id-35174 .page-title,
.page-id-35174 .entry-title {
  display: none !important;
}
.page-id-35174 .content-area,
.page-id-35174 .site-main,
.page-id-35174 .entry-content-wrap,
.page-id-35174 .entry-content {
  padding: 0 !important;
  margin: 0 !important;
  max-width: none !important;
}
.page-id-35174 .entry.single-entry,
.page-id-35174 .content-wrap,
.page-id-35174 .entry-content-wrap {
  background: transparent !important;
  box-shadow: none !important;
}

/* ============================================
   HOW IT WORKS — PROSE (styling-consistency 2026-06-06)
   Plain <h2>Step N —</h2>/<p>/<ul> content (no .cbp-steps markup; the
   numbered-step component needs markup -> BACKLOG). Grey body, green inline
   links, green dash list markers. Headings already serif (global h1-h6 rule).
   Buttons excluded via :not(.wp-block-button__link).
   ============================================ */
.page-id-35174 .entry-content p,
.page-id-35174 .entry-content li {
  color: var(--cbp-paper-dim);
}
.page-id-35174 .entry-content h2,
.page-id-35174 .entry-content h3 {
  font-family: var(--cbp-serif);
  color: var(--cbp-paper);
}
.page-id-35174 .entry-content a:not(.wp-block-button__link) {
  color: var(--cbp-accent);
  border-bottom: 1px solid rgba(92, 191, 122, 0.4);
  transition: color .2s ease, border-color .2s ease;
}
.page-id-35174 .entry-content a:not(.wp-block-button__link):hover {
  color: var(--cbp-accent-2);
  border-bottom-color: var(--cbp-accent-2);
}
.page-id-35174 .entry-content ul {
  list-style: none;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.page-id-35174 .entry-content ul li {
  padding-left: 1.5rem;
  position: relative;
}
.page-id-35174 .entry-content ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 8px;
  height: 1px;
  background: var(--cbp-accent);
}

/* ============================================
   BLOG POST (page 35849) — PROSE (styling-consistency 2026-06-06)
   Authored as a Page (body.page; inherits the global dark wrapper). PROD-only —
   404s on staging. Same prose treatment as How It Works. Per-page-id scoping
   covers only this post; a durable hook for the content cluster -> BACKLOG.
   ============================================ */
.page-id-35849 .entry-content p,
.page-id-35849 .entry-content li {
  color: var(--cbp-paper-dim);
}
.page-id-35849 .entry-content h2,
.page-id-35849 .entry-content h3 {
  font-family: var(--cbp-serif);
  color: var(--cbp-paper);
}
.page-id-35849 .entry-content a:not(.wp-block-button__link) {
  color: var(--cbp-accent);
  border-bottom: 1px solid rgba(92, 191, 122, 0.4);
  transition: color .2s ease, border-color .2s ease;
}
.page-id-35849 .entry-content a:not(.wp-block-button__link):hover {
  color: var(--cbp-accent-2);
  border-bottom-color: var(--cbp-accent-2);
}
.page-id-35849 .entry-content ul {
  list-style: none;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.page-id-35849 .entry-content ul li {
  padding-left: 1.5rem;
  position: relative;
}
.page-id-35849 .entry-content ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 8px;
  height: 1px;
  background: var(--cbp-accent);
}

/* ============================================
   ANCILLARY PAGES — BUTTON OVERRIDES
   Match homepage .cbp-btn-primary / .cbp-btn-ghost
   ============================================ */

/* Button group: inline, centered, with gap */
.page-id-5335 .wp-block-buttons,
.page-id-35207 .wp-block-buttons,
.page-id-35206 .wp-block-buttons,
.page-id-35174 .wp-block-buttons {
  display: flex !important;
  flex-wrap: wrap;
  gap: 0.75rem;
  justify-content: center;
  align-items: center;
}

/* Primary button (solid green pill) */
.page-id-5335 .wp-block-button:not(.is-style-outline) .wp-block-button__link,
.page-id-35207 .wp-block-button:not(.is-style-outline) .wp-block-button__link,
.page-id-35206 .wp-block-button:not(.is-style-outline) .wp-block-button__link,
.page-id-35174 .wp-block-button:not(.is-style-outline) .wp-block-button__link {
  font-family: var(--cbp-sans) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  letter-spacing: 0.01em;
  padding: 1rem 1.85rem !important;
  background: var(--cbp-accent) !important;
  color: var(--cbp-accent-ink) !important;
  border: 1px solid var(--cbp-accent) !important;
  border-radius: 999px !important;
  transition: transform .2s ease, background .2s ease;
  box-shadow: none !important;
}
.page-id-5335 .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover,
.page-id-35207 .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover,
.page-id-35206 .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover,
.page-id-35174 .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover {
  background: var(--cbp-accent-2) !important;
  color: var(--cbp-accent-ink) !important;
  transform: translateY(-1px);
}

/* Ghost/outline button (transparent with border) */
.page-id-5335 .wp-block-button.is-style-outline .wp-block-button__link,
.page-id-35207 .wp-block-button.is-style-outline .wp-block-button__link,
.page-id-35206 .wp-block-button.is-style-outline .wp-block-button__link,
.page-id-35174 .wp-block-button.is-style-outline .wp-block-button__link {
  font-family: var(--cbp-sans) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  padding: 1rem 1.75rem !important;
  background: transparent !important;
  color: var(--cbp-paper) !important;
  border: 1px solid var(--cbp-rule) !important;
  border-radius: 999px !important;
  transition: border-color .2s ease, color .2s ease;
  box-shadow: none !important;
}
.page-id-5335 .wp-block-button.is-style-outline .wp-block-button__link:hover,
.page-id-35207 .wp-block-button.is-style-outline .wp-block-button__link:hover,
.page-id-35206 .wp-block-button.is-style-outline .wp-block-button__link:hover,
.page-id-35174 .wp-block-button.is-style-outline .wp-block-button__link:hover {
  border-color: var(--cbp-accent) !important;
  color: var(--cbp-accent) !important;
}

/* ============================================
   ANCILLARY PAGES — BUTTON LAYOUT FIX
   Force wp-block-buttons to display inline,
   centered, on all dark-themed pages
   ============================================ */

/* Button group container: always flex row, centered */
.page-id-5335 .wp-block-buttons,
.page-id-35207 .wp-block-buttons,
.page-id-35206 .wp-block-buttons,
.page-id-35174 .wp-block-buttons,
.page-id-75 .wp-block-buttons {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: wrap;
  gap: 0.75rem !important;
  justify-content: center !important;
  align-items: center !important;
}

/* Each button wrapper: no forced width */
.page-id-5335 .wp-block-button,
.page-id-35207 .wp-block-button,
.page-id-35206 .wp-block-button,
.page-id-35174 .wp-block-button,
.page-id-75 .wp-block-button {
  margin: 0 !important;
  width: auto !important;
}

/* ============================================
   ANCILLARY PAGES — BUTTON STYLE OVERRIDE v2
   Higher specificity to beat Bluehost NFD plugin
   and Kadence default button styles
   ============================================ */

/* Primary (solid green) — all dark-themed pages */
body.page-id-5335 .wp-block-button:not(.is-style-outline) > .wp-block-button__link,
body.page-id-35207 .wp-block-button:not(.is-style-outline) > .wp-block-button__link,
body.page-id-35206 .wp-block-button:not(.is-style-outline) > .wp-block-button__link,
body.page-id-35174 .wp-block-button:not(.is-style-outline) > .wp-block-button__link,
body.page-id-75 .wp-block-button:not(.is-style-outline) > .wp-block-button__link {
  font-family: var(--cbp-sans) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  letter-spacing: 0.01em !important;
  padding: 1rem 1.85rem !important;
  background: var(--cbp-accent) !important;
  background-color: var(--cbp-accent) !important;
  color: var(--cbp-accent-ink) !important;
  border: 1px solid var(--cbp-accent) !important;
  border-radius: 999px !important;
  box-shadow: none !important;
  transition: transform .2s ease, background .2s ease !important;
}
body.page-id-5335 .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover,
body.page-id-35207 .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover,
body.page-id-35206 .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover,
body.page-id-35174 .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover,
body.page-id-75 .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover {
  background: var(--cbp-accent-2) !important;
  background-color: var(--cbp-accent-2) !important;
  color: var(--cbp-accent-ink) !important;
  transform: translateY(-1px) !important;
  filter: none !important;
}

/* Outline (ghost) — all dark-themed pages */
body.page-id-5335 .wp-block-button.is-style-outline > .wp-block-button__link,
body.page-id-35207 .wp-block-button.is-style-outline > .wp-block-button__link,
body.page-id-35206 .wp-block-button.is-style-outline > .wp-block-button__link,
body.page-id-35174 .wp-block-button.is-style-outline > .wp-block-button__link,
body.page-id-75 .wp-block-button.is-style-outline > .wp-block-button__link {
  font-family: var(--cbp-sans) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  padding: 1rem 1.75rem !important;
  background: transparent !important;
  background-color: transparent !important;
  color: var(--cbp-paper) !important;
  border: 1px solid var(--cbp-rule) !important;
  border-radius: 999px !important;
  box-shadow: none !important;
  transition: border-color .2s ease, color .2s ease !important;
}
body.page-id-5335 .wp-block-button.is-style-outline > .wp-block-button__link:hover,
body.page-id-35207 .wp-block-button.is-style-outline > .wp-block-button__link:hover,
body.page-id-35206 .wp-block-button.is-style-outline > .wp-block-button__link:hover,
body.page-id-35174 .wp-block-button.is-style-outline > .wp-block-button__link:hover,
body.page-id-75 .wp-block-button.is-style-outline > .wp-block-button__link:hover {
  border-color: var(--cbp-accent) !important;
  color: var(--cbp-accent) !important;
  background: transparent !important;
  filter: none !important;
}

/* Button group layout — flex row, centered */
body.page-id-5335 .wp-block-buttons,
body.page-id-35207 .wp-block-buttons,
body.page-id-35206 .wp-block-buttons,
body.page-id-35174 .wp-block-buttons,
body.page-id-75 .wp-block-buttons {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: wrap !important;
  gap: 0.75rem !important;
  justify-content: center !important;
  align-items: center !important;
}
body.page-id-5335 .wp-block-buttons > .wp-block-button,
body.page-id-35207 .wp-block-buttons > .wp-block-button,
body.page-id-35206 .wp-block-buttons > .wp-block-button,
body.page-id-35174 .wp-block-buttons > .wp-block-button,
body.page-id-75 .wp-block-buttons > .wp-block-button {
  margin: 0 !important;
  width: auto !important;
}

/* ============================================================
   WooCommerce — Cart / Checkout / My-Account dark theme
   Clears audit: LB-1, H-1, L-2, L-3   (classic shortcode checkout confirmed)
   Tokens: existing --cbp-* palette from :root.
   ============================================================ */

/* ---- Shared field styling (cart, checkout, account, CF7) ---- */
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce .form-row select,
.woocommerce-account input[type="text"],
.woocommerce-account input[type="email"],
.woocommerce-account input[type="password"],
.woocommerce #order_comments,
.select2-container--default .select2-selection--single,
.wpcf7 input[type="text"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"],
.wpcf7 input[type="url"],
.wpcf7 textarea,
.wpcf7 select {
  background: var(--cbp-ink-3) !important;
  color: var(--cbp-paper) !important;
  border: 1px solid var(--cbp-rule) !important;
  border-radius: 2px;
  font-family: var(--cbp-sans);
  padding: 0.75rem 0.9rem;
  -webkit-appearance: none;
  appearance: none;
}
.woocommerce form .form-row input.input-text::placeholder,
.woocommerce form .form-row textarea::placeholder,
.wpcf7 input::placeholder,
.wpcf7 textarea::placeholder {
  color: var(--cbp-paper-faint);
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce .form-row select:focus,
.wpcf7 input:focus,
.wpcf7 textarea:focus,
.wpcf7 select:focus {
  border-color: var(--cbp-accent) !important;
  outline: none;
  box-shadow: 0 0 0 2px rgba(92, 191, 122, 0.25);
}
.woocommerce form .form-row label,
.woocommerce-account label,
.wpcf7 label {
  color: var(--cbp-paper-dim);
  font-family: var(--cbp-sans);
  font-size: 0.85rem;
}
.woocommerce .required { color: var(--cbp-accent); }

/* select2 dropdown popovers (country/state pickers) */
.select2-dropdown {
  background: var(--cbp-ink-3) !important;
  border: 1px solid var(--cbp-rule) !important;
  color: var(--cbp-paper);
}
.select2-results__option--highlighted {
  background: var(--cbp-accent) !important;
  color: var(--cbp-accent-ink) !important;
}

/* ---- Shared buttons ---- */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #place_order,
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,
.woocommerce .payment_methods .button {
  background: var(--cbp-accent) !important;
  color: var(--cbp-accent-ink) !important;
  border: none !important;
  border-radius: 2px;
  font-family: var(--cbp-mono);
  font-size: 0.8rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.9rem 1.6rem;
  transition: background 0.15s ease;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #place_order:hover,
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover,
.woocommerce .payment_methods .button:hover {
  background: var(--cbp-accent-2) !important;
}
/* Secondary buttons (update cart, apply coupon) — outlined, not solid green */
.woocommerce button[name="update_cart"],
.woocommerce .coupon button.button {
  background: transparent !important;
  color: var(--cbp-paper) !important;
  border: 1px solid var(--cbp-rule) !important;
}
.woocommerce button[name="update_cart"]:hover,
.woocommerce .coupon button.button:hover {
  border-color: var(--cbp-accent) !important;
  color: var(--cbp-accent) !important;
}

/* ---- Tables (cart, order review, account orders/addresses) ---- */
.woocommerce table.shop_table,
.woocommerce-checkout-review-order-table,
.woocommerce-MyAccount-content table {
  background: var(--cbp-ink-2);
  border: 1px solid var(--cbp-rule);
  color: var(--cbp-paper);
  border-radius: 2px;
}
.woocommerce table.shop_table thead th,
.woocommerce-checkout-review-order-table thead th {
  background: var(--cbp-ink-1);
  color: var(--cbp-paper-dim);
  font-family: var(--cbp-mono);
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  border-bottom: 1px solid var(--cbp-rule) !important;
}
.woocommerce table.shop_table td,
.woocommerce table.shop_table th,
.woocommerce-checkout-review-order-table td,
.woocommerce-checkout-review-order-table th {
  border-top: 1px solid var(--cbp-rule-soft) !important;
  color: var(--cbp-paper);
}
.woocommerce table.shop_table tfoot th,
.woocommerce-checkout-review-order-table tfoot th {
  color: var(--cbp-paper-dim);
}
.woocommerce table.shop_table .order-total .amount {
  color: var(--cbp-accent);
  font-family: var(--cbp-serif);
}
.woocommerce a.remove { color: var(--cbp-paper-faint) !important; }
.woocommerce a.remove:hover { color: var(--cbp-accent) !important; background: transparent !important; }

/* ---- Cart page specifics ---- */
.woocommerce-cart .cart_totals h2,
.woocommerce-checkout #order_review_heading,
.woocommerce-checkout h3,
.woocommerce-cart h2 {
  color: var(--cbp-paper);
  font-family: var(--cbp-serif);
}
.woocommerce .quantity .qty {
  background: var(--cbp-ink-3) !important;
  color: var(--cbp-paper) !important;
  border: 1px solid var(--cbp-rule) !important;
}

/* L-2 — collapse the empty dead-space container below the cart items. */
.woocommerce .cart-collaterals .cross-sells:empty,
.woocommerce .cross-sells:empty,
.woocommerce-cart .blockUI.blockOverlay:empty { display: none !important; }
.woocommerce .cross-sells > h2 { color: var(--cbp-paper); font-family: var(--cbp-serif); }

/* ---- Checkout layout ---- */
.woocommerce-checkout #customer_details,
.woocommerce-checkout #order_review {
  background: var(--cbp-ink-2);
  border: 1px solid var(--cbp-rule);
  border-radius: 2px;
  padding: clamp(1rem, 3vw, 2rem);
}
.woocommerce-checkout .woocommerce-billing-fields h3,
.woocommerce-checkout .woocommerce-additional-fields h3 { color: var(--cbp-paper); }

/* ============================================================
   LB-1 — PAYMENT BLOCK VISIBILITY (the launch-blocker fix)
   Force explicit background + color on every payment node.
   ============================================================ */
.woocommerce-checkout #payment,
.woocommerce-checkout .woocommerce-checkout-payment {
  background: var(--cbp-ink-3) !important;
  border: 1px solid var(--cbp-rule) !important;
  border-radius: 2px;
}
.woocommerce-checkout #payment ul.payment_methods {
  background: transparent !important;
  border-bottom: 1px solid var(--cbp-rule) !important;
}
.woocommerce-checkout #payment ul.payment_methods li,
.woocommerce-checkout #payment ul.payment_methods label {
  color: var(--cbp-paper) !important;
  font-family: var(--cbp-sans);
}
.woocommerce-checkout #payment input[type="radio"] { accent-color: var(--cbp-accent); }
.woocommerce-checkout #payment div.payment_box {
  background: var(--cbp-ink-4) !important;
  color: var(--cbp-paper) !important;
  border: 1px solid var(--cbp-rule) !important;
  border-radius: 2px;
}
.woocommerce-checkout #payment div.payment_box::before { border-bottom-color: var(--cbp-ink-4) !important; }
.woocommerce-checkout #payment div.payment_box * { color: var(--cbp-paper) !important; }
.woocommerce-checkout #payment div.payment_box a { color: var(--cbp-accent) !important; }
.woocommerce-checkout #payment #place_order,
.woocommerce-checkout #payment .button {
  background: var(--cbp-accent) !important;
  color: var(--cbp-accent-ink) !important;
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
}
.woocommerce-terms-and-conditions-wrapper,
.woocommerce-checkout .woocommerce-privacy-policy-text { color: var(--cbp-paper-dim); }

/* ---- Notices ---- */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.woocommerce-noreviews {
  background: var(--cbp-ink-2) !important;
  color: var(--cbp-paper) !important;
  border-top: 3px solid var(--cbp-accent) !important;
  border-radius: 2px;
}
.woocommerce-error { border-top-color: #d96c6c !important; }
.woocommerce-message a,
.woocommerce-info a { color: var(--cbp-accent) !important; }

/* ---- My Account ---- */
.woocommerce-account .woocommerce-MyAccount-navigation ul {
  border: 1px solid var(--cbp-rule);
  border-radius: 2px;
  background: var(--cbp-ink-2);
}
.woocommerce-account .woocommerce-MyAccount-navigation li { border-bottom: 1px solid var(--cbp-rule-soft); }
.woocommerce-account .woocommerce-MyAccount-navigation li a {
  color: var(--cbp-paper-dim);
  font-family: var(--cbp-mono);
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a,
.woocommerce-account .woocommerce-MyAccount-navigation li a:hover { color: var(--cbp-accent); }
.woocommerce-account .woocommerce-MyAccount-content {
  background: var(--cbp-ink-2);
  border: 1px solid var(--cbp-rule);
  border-radius: 2px;
  padding: clamp(1rem, 3vw, 2rem);
  color: var(--cbp-paper);
}
.woocommerce form.login,
.woocommerce form.register,
.woocommerce form.lost_reset_password {
  background: var(--cbp-ink-2);
  border: 1px solid var(--cbp-rule);
  border-radius: 2px;
  color: var(--cbp-paper);
}

/* ---- Empty cart state ---- */
.woocommerce .cart-empty,
.woocommerce .wc-empty-cart-message {
  color: var(--cbp-paper-dim);
  font-family: var(--cbp-serif);
}

/* ============================================================
   Footer (audit M-1) — custom .cbp-footer replaces Kadence's default
   ============================================================ */
/* Hide Kadence's default footer (replaced by .cbp-footer via wp_footer) */
.site-footer-wrap,
#colophon.site-footer { display: none !important; }

.cbp-footer { background: var(--cbp-ink-0); color: var(--cbp-paper-dim); }
.cbp-footer__inner {
  max-width: var(--cbp-max);
  margin: 0 auto;
  padding: clamp(2.5rem, 6vw, 4.5rem) var(--cbp-gutter) clamp(2rem, 4vw, 3rem);
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1.6fr;
  gap: clamp(2rem, 5vw, 4rem);
}
.cbp-footer__wordmark { display: block; height: auto; max-width: 180px; margin-bottom: 1rem; }
.cbp-footer__tagline {
  font-family: var(--cbp-serif); color: var(--cbp-paper);
  font-size: 1.05rem; line-height: 1.35; margin: 0 0 1.25rem; max-width: 22ch;
}
.cbp-footer__contact { list-style: none; margin: 0; padding: 0; font-size: 0.9rem; line-height: 1.9; }
.cbp-footer__heading {
  font-family: var(--cbp-mono); text-transform: uppercase; letter-spacing: 0.08em;
  font-size: 0.72rem; color: var(--cbp-paper-faint); margin: 0 0 1rem;
}
.cbp-footer__col ul { list-style: none; margin: 0; padding: 0; line-height: 2.1; font-size: 0.92rem; }
.cbp-footer a { color: var(--cbp-paper-dim); text-decoration: none; transition: color 0.15s ease; }
.cbp-footer a:hover { color: var(--cbp-accent); }

/* Newsletter */
.cbp-footer__newsletter p { font-size: 0.9rem; line-height: 1.5; margin: 0 0 1rem; max-width: 32ch; }
.cbp-newsletter-pending { color: var(--cbp-paper-faint); }
.cbp-newsletter-form { display: flex; gap: 0.5rem; flex-wrap: wrap; position: relative; }
.cbp-newsletter-form input[type="email"] {
  flex: 1 1 160px; background: var(--cbp-ink-2); color: var(--cbp-paper);
  border: 1px solid var(--cbp-rule); border-radius: 2px; padding: 0.7rem 0.85rem;
  font-family: var(--cbp-sans);
}
.cbp-newsletter-form input::placeholder { color: var(--cbp-paper-faint); }
.cbp-newsletter-form input[type="email"]:focus {
  outline: none; border-color: var(--cbp-accent); box-shadow: 0 0 0 2px rgba(92,191,122,0.25);
}
.cbp-newsletter-form button {
  background: var(--cbp-accent); color: var(--cbp-accent-ink); border: none; border-radius: 2px;
  font-family: var(--cbp-mono); text-transform: uppercase; letter-spacing: 0.04em;
  font-size: 0.78rem; padding: 0.7rem 1.2rem; cursor: pointer; transition: background 0.15s ease;
}
.cbp-newsletter-form button:hover { background: var(--cbp-accent-2); }

/* Legal bar */
.cbp-footer__bar {
  border-top: 1px solid var(--cbp-rule-soft);
  max-width: var(--cbp-max); margin: 0 auto;
  padding: 1.25rem var(--cbp-gutter);
  display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 0.75rem;
  font-size: 0.8rem;
}
.cbp-footer__copy { margin: 0; color: var(--cbp-paper-faint); }
.cbp-footer__legal { display: flex; gap: 1.25rem; flex-wrap: wrap; }

@media (max-width: 900px) {
  .cbp-footer__inner { grid-template-columns: 1fr 1fr; }
  .cbp-footer__brand, .cbp-footer__newsletter { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
  .cbp-footer__inner { grid-template-columns: 1fr; }
  .cbp-footer__bar { flex-direction: column; align-items: flex-start; }
}

/* ============================================================
   FAQ link block beneath the product configurator (audit M-3)
   ============================================================ */
.cbp-config-faq {
  display: flex; flex-wrap: wrap; gap: 1rem; align-items: center;
  margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid var(--cbp-rule-soft);
  font-size: 0.85rem; color: var(--cbp-paper-dim); font-family: var(--cbp-mono);
}
.cbp-config-faq a { color: var(--cbp-accent); text-decoration: none; }
.cbp-config-faq a:hover { color: var(--cbp-accent-2); }

/* ============================================================
   H-1 fix — WooCommerce pages: remove Kadence's white content card
   (article.entry.content-bg) so the dark site shell shows through.
   The cart/totals/checkout/login panels are dark-themed above; this
   was the leftover white wrapper + its box-shadow making the "white card."
   Scoped to WC body classes so other pages are unaffected.
   ============================================================ */
.woocommerce-cart .entry.content-bg,
.woocommerce-checkout .entry.content-bg,
.woocommerce-account .entry.content-bg,
.woocommerce-cart .content-bg,
.woocommerce-checkout .content-bg,
.woocommerce-account .content-bg {
  background: transparent !important;
  box-shadow: none !important;
  border: none !important;
}

/* L-2 — the WooCommerce Upload Files container (#wcuf_file_uploads_container) renders as
   an empty dark box on the cart when no item needs an artwork upload. Collapse it unless
   it actually holds upload fields. (Supersedes the earlier .cross-sells:empty guess.) */
.woocommerce-cart #wcuf_file_uploads_container:not(:has(#wcuf-files-box *)) {
  display: none !important;
}

/* Checkout order-review (products + totals) was rendering WHITE — a more-specific core/
   Kadence rule beat the earlier non-!important background. Force the whole review table
   + the terms box dark so the order summary is legible. */
.woocommerce-checkout-review-order-table,
.woocommerce-checkout-review-order-table tbody,
.woocommerce-checkout-review-order-table tbody tr,
.woocommerce-checkout-review-order-table tbody td,
.woocommerce-checkout-review-order-table tbody th,
.woocommerce-checkout-review-order-table tfoot tr,
.woocommerce-checkout-review-order-table tfoot td,
.woocommerce-checkout-review-order-table tfoot th {
  background-color: var(--cbp-ink-2) !important;
  color: var(--cbp-paper) !important;
}
.woocommerce-checkout-review-order-table tfoot .order-total .amount {
  color: var(--cbp-accent) !important;
}
.woocommerce-checkout #order_review .woocommerce-terms-and-conditions {
  background: var(--cbp-ink-2) !important;
  color: var(--cbp-paper-dim) !important;
  border: 1px solid var(--cbp-rule) !important;
}

/* ============================================================
   Header cart button (cart icon + count in the primary nav)
   ============================================================ */
.cbp-cart-menu-item { display: flex !important; align-items: center; }
.cbp-cart-link {
  display: inline-flex; align-items: center; gap: 0.4rem;
  color: var(--cbp-paper) !important; position: relative;
}
.cbp-cart-link:hover { color: var(--cbp-accent) !important; }
.cbp-cart-icon { display: block; }
.cbp-cart-count {
  background: var(--cbp-accent); color: var(--cbp-accent-ink);
  font-family: var(--cbp-mono); font-size: 0.62rem; font-weight: 700; line-height: 1;
  min-width: 1.05rem; height: 1.05rem; padding: 0 0.28rem; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
}
.cbp-cart-count[hidden] { display: none; }

/* ============================================================
   Header logo — swap the Kadence text site-title for the brand
   lockup (icon + wordmark). The text stays in the DOM for screen
   readers; we push it offscreen and paint the lockup behind.
   ============================================================ */
.site-branding a.brand {
  display: inline-block !important;
  width: 250px;
  height: 48px;
  max-width: 60vw;
  background: url("assets/brand/lockup-dark.svg") left center / contain no-repeat !important;
}
/* Hide the inner title text (which otherwise covers the lockup) while keeping it
   in the accessibility tree as the link's name (screen-reader-only clip). */
.site-branding a.brand > * {
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
@media (max-width: 768px) {
  .site-branding a.brand { width: 200px; height: 40px; }
}

/* ============================================================
   Dark-theme legibility for single posts, pages, and archives.
   Kadence wraps post/page content in a white ".content-bg" card,
   but the theme's body text is cream — illegible on white. Every
   wrapper above the card is already transparent and the body is
   dark (#0B0B0A), so dropping the card to transparent lets the
   cream text read correctly. (Same root cause as the H-1 fix,
   which only covered the WooCommerce templates.)
   ============================================================ */
body.single-post article.content-bg,
body.page article.content-bg,
body.blog .content-bg,
body.archive .content-bg,
body.search .content-bg {
  background: transparent !important;
  box-shadow: none !important;
}

/* Comparison/spec tables in post + page content render borderless on the dark theme,
   so columns blur together. Give them a grid in the text color (cream) per request. */
body.single-post article table,
body.page article table {
  border-collapse: collapse;
  width: 100%;
  border: 1px solid var(--cbp-paper) !important;
}
body.single-post article th,
body.single-post article td,
body.page article th,
body.page article td {
  border: 1px solid var(--cbp-paper) !important;
  padding: 0.55rem 0.8rem;
  vertical-align: top;
}
