/*
Theme Name:   GeneratePress Child
Theme URI:    https://northstate.xyz
Description:  GeneratePress Child Theme for Northstate Labs
Author:       Northstate Labs
Template:     generatepress
Version:      3.0.0
Text Domain:  generatepress-child
*/

/* ============================================================
   DESIGN SYSTEM
   ============================================================ */
:root {
  --ns-primary:       #4B5BD4;
  --ns-primary-dark:  #3849C0;
  --ns-primary-light: #EEF0FC;
  --ns-accent:        #D6346F;
  --ns-accent-dark:   #B82A5C;
  --ns-accent-light:  #FEF0F5;

  --ns-bg:            #FAFBFF;
  --ns-bg-alt:        #F0F3FB;
  --ns-bg-card:       #FFFFFF;

  --ns-text:          #181A2C;
  --ns-text-muted:    #5C6282;
  --ns-text-light:    #9099BE;

  --ns-border:        #E2E6F5;
  --ns-border-dark:   #C8CEEA;

  --ns-shadow-sm:     0 1px 4px rgba(30, 40, 120, 0.06);
  --ns-shadow:        0 4px 20px rgba(30, 40, 120, 0.08);
  --ns-shadow-hover:  0 8px 32px rgba(30, 40, 120, 0.13);
  --ns-shadow-accent: 0 4px 20px rgba(214, 52, 111, 0.2);

  --ns-radius:    10px;
  --ns-radius-lg: 16px;
  --ns-transition: 0.2s ease;
  --ns-max:       1240px;
}

/* ============================================================
   BASE
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
  background-color: var(--ns-bg) !important;
  color: var(--ns-text) !important;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6 {
  font-family: 'Barlow Condensed', 'Inter', sans-serif !important;
  font-weight: 700 !important;
  line-height: 1.1;
  color: var(--ns-text) !important;
  letter-spacing: -0.015em;
}

a { color: var(--ns-primary); text-decoration: none; transition: color var(--ns-transition); }
a:hover { color: var(--ns-primary-dark); }
p { color: var(--ns-text-muted); margin-top: 0; }
img { max-width: 100%; height: auto; }

.grid-container {
  max-width: var(--ns-max) !important;
  padding-left: 24px !important;
  padding-right: 24px !important;
}

/* ============================================================
   HEADER
   ============================================================ */
.site-header, #masthead, #site-header {
  background: #FFFFFF !important;
  border-bottom: 1px solid var(--ns-border) !important;
  box-shadow: 0 1px 0 var(--ns-border) !important;
  position: sticky !important;
  top: 0 !important;
  z-index: 1000 !important;
}

.header-inner {
  background: transparent !important;
  max-width: var(--ns-max) !important;
  margin: 0 auto !important;
  padding: 0 24px !important;
  min-height: 68px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
}

/* Site title */
.main-title, .site-title {
  margin: 0 !important;
  padding: 0 !important;
  font-size: 0 !important; /* hide tagline separator */
}
.main-title a, .site-title a {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.45rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: var(--ns-text) !important;
  text-decoration: none !important;
}

/* Nav */
.nav-primary, #site-navigation, .site-navigation,
.main-navigation, .main-navigation > div,
.main-navigation ul, .main-navigation li {
  background: transparent !important;
  background-color: transparent !important;
}

.main-navigation a, .nav-primary a {
  font-family: 'Inter', sans-serif !important;
  color: var(--ns-text-muted) !important;
  font-size: 0.83rem !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  padding: 8px 14px !important;
  transition: color var(--ns-transition) !important;
}
.main-navigation a:hover, .nav-primary a:hover,
.current-menu-item > a, .current-page-ancestor > a {
  color: var(--ns-text) !important;
}

/* Dropdowns */
.main-navigation ul ul, .main-navigation .sub-menu {
  background: #FFFFFF !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: var(--ns-radius) !important;
  box-shadow: var(--ns-shadow-hover) !important;
  padding: 8px 0 !important;
  min-width: 200px !important;
}
.main-navigation ul ul a { padding: 9px 18px !important; }
.main-navigation ul ul a:hover { background: var(--ns-bg-alt) !important; }

/* ============================================================
   BUTTONS
   ============================================================ */
.ns-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 12px 24px;
  border-radius: var(--ns-radius);
  font-family: 'Inter', sans-serif;
  font-size: 0.875rem;
  font-weight: 600;
  cursor: pointer;
  transition: all var(--ns-transition);
  border: none;
  text-decoration: none !important;
  line-height: 1;
  white-space: nowrap;
}
.ns-btn-primary {
  background: var(--ns-primary);
  color: #fff !important;
  box-shadow: 0 2px 8px rgba(75, 91, 212, 0.2);
}
.ns-btn-primary:hover {
  background: var(--ns-primary-dark);
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(75, 91, 212, 0.28);
  color: #fff !important;
}
.ns-btn-accent {
  background: var(--ns-accent);
  color: #fff !important;
  box-shadow: var(--ns-shadow-accent);
}
.ns-btn-accent:hover {
  background: var(--ns-accent-dark);
  transform: translateY(-1px);
  color: #fff !important;
}
.ns-btn-outline {
  background: transparent;
  color: var(--ns-text) !important;
  border: 1.5px solid var(--ns-border-dark);
}
.ns-btn-outline:hover {
  border-color: var(--ns-primary);
  background: var(--ns-primary-light);
  color: var(--ns-primary) !important;
}

/* WooCommerce buttons — always consistent */
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button,
.woocommerce a.button.alt, .woocommerce button.button.alt {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border-radius: var(--ns-radius) !important;
  font-family: 'Inter', sans-serif !important;
  font-weight: 600 !important;
  font-size: 0.875rem !important;
  padding: 11px 20px !important;
  border: none !important;
  transition: all var(--ns-transition) !important;
  box-shadow: none !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}
.woocommerce a.button:hover, .woocommerce button.button:hover {
  background: var(--ns-primary-dark) !important;
  color: #fff !important;
}

/* ============================================================
   HOMEPAGE — FULL WIDTH
   ============================================================ */
.home .site-content > .grid-container,
.home .site-content, .home #content {
  max-width: 100% !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin: 0 !important;
}
.home .content-area, .home #primary {
  max-width: 100% !important;
  padding: 0 !important;
  width: 100% !important;
}
.home .entry-content { padding: 0 !important; margin: 0 !important; }

/* ============================================================
   HERO
   ============================================================ */
.ns-hero {
  background: linear-gradient(155deg, #F2F5FF 0%, #FAFBFF 55%, #FDF2F7 100%);
  padding: 80px 0 72px;
  position: relative;
  overflow: hidden;
  border-bottom: 1px solid var(--ns-border);
}
.ns-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, #C5CDEF 1px, transparent 1px);
  background-size: 38px 38px;
  opacity: 0.3;
  pointer-events: none;
}

.ns-hero__inner {
  max-width: var(--ns-max);
  margin: 0 auto;
  padding: 0 24px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: center;
  position: relative;
  z-index: 1;
}

.ns-hero__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ns-primary);
  background: var(--ns-primary-light);
  border: 1px solid var(--ns-border-dark);
  padding: 5px 12px;
  border-radius: 50px;
  margin-bottom: 20px;
}
.ns-hero__eyebrow::before {
  content: '';
  width: 5px; height: 5px;
  background: var(--ns-primary);
  border-radius: 50%;
}

.ns-hero__headline {
  font-size: clamp(2.6rem, 4.2vw, 3.8rem) !important;
  font-weight: 800 !important;
  line-height: 1.06 !important;
  margin-bottom: 20px !important;
  color: var(--ns-text) !important;
  letter-spacing: -0.025em !important;
}
.ns-hero__headline em {
  font-style: normal;
  color: var(--ns-primary) !important;
}

.ns-hero__sub {
  font-size: 1.02rem;
  color: var(--ns-text-muted);
  margin-bottom: 32px;
  line-height: 1.7;
  max-width: 460px;
}
.ns-hero__ctas { display: flex; gap: 12px; flex-wrap: wrap; }

/* Stats grid */
.ns-hero__stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.ns-hero__stat {
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius-lg);
  padding: 24px 22px;
  box-shadow: var(--ns-shadow);
  transition: all var(--ns-transition);
}
.ns-hero__stat:hover {
  box-shadow: var(--ns-shadow-hover);
  border-color: var(--ns-border-dark);
  transform: translateY(-2px);
}
.ns-hero__stat-num {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 2.2rem;
  font-weight: 800;
  color: var(--ns-primary);
  line-height: 1;
  margin-bottom: 5px;
}
.ns-hero__stat-label { font-size: 0.78rem; color: var(--ns-text-muted); line-height: 1.35; }

/* ============================================================
   TRUST BAR
   ============================================================ */
.ns-trust-bar {
  background: #FFFFFF;
  border-bottom: 1px solid var(--ns-border);
  padding: 0;
}
.ns-trust-bar__inner {
  max-width: var(--ns-max);
  margin: 0 auto;
  padding: 0 24px;
  display: flex;
  align-items: stretch;
}
.ns-trust-item {
  display: flex;
  align-items: center;
  gap: 11px;
  flex: 1;
  padding: 20px 0;
}
.ns-trust-item__divider {
  width: 1px;
  background: var(--ns-border);
  margin: 16px 28px;
  flex-shrink: 0;
}
.ns-trust-item__icon {
  width: 36px; height: 36px;
  border-radius: 8px;
  background: var(--ns-primary-light);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ns-primary);
  flex-shrink: 0;
}
.ns-trust-item__text strong {
  display: block;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--ns-text);
  line-height: 1.2;
}
.ns-trust-item__text span { font-size: 0.72rem; color: var(--ns-text-muted); }

/* ============================================================
   SECTION SCAFFOLDING
   ============================================================ */
.ns-section { padding: 80px 0; }
.ns-section-alt { background: var(--ns-bg-alt); }
.ns-section__inner { max-width: var(--ns-max); margin: 0 auto; padding: 0 24px; }

.ns-section-header { text-align: center; margin-bottom: 52px; }
.ns-section__title {
  font-size: clamp(1.8rem, 3vw, 2.6rem) !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin-bottom: 12px !important;
  letter-spacing: -0.02em !important;
}
.ns-section__sub { font-size: 1rem; color: var(--ns-text-muted); max-width: 520px; margin: 0 auto; }

/* ============================================================
   WHY NORTHSTATE
   ============================================================ */
.ns-why-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
.ns-why-card {
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius-lg);
  padding: 32px 28px;
  box-shadow: var(--ns-shadow-sm);
  transition: all var(--ns-transition);
}
.ns-why-card:hover {
  box-shadow: var(--ns-shadow-hover);
  transform: translateY(-3px);
  border-color: var(--ns-border-dark);
}
.ns-why-card__icon {
  width: 48px; height: 48px;
  border-radius: 12px;
  background: var(--ns-primary-light);
  border: 1px solid var(--ns-border-dark);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ns-primary);
  margin-bottom: 18px;
}
.ns-why-card__title {
  font-size: 1.1rem !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
  margin-bottom: 12px !important;
  letter-spacing: -0.01em !important;
}
.ns-why-card__body { font-size: 0.875rem; color: var(--ns-text-muted); line-height: 1.7; margin: 0; }

/* ============================================================
   PRODUCT CATALOGUE EMPTY STATE
   ============================================================ */
.ns-catalog-empty {
  text-align: center;
  padding: 64px 32px;
  background: var(--ns-bg-alt);
  border: 1px dashed var(--ns-border-dark);
  border-radius: var(--ns-radius-lg);
  max-width: 480px;
  margin: 0 auto;
}
.ns-catalog-empty__icon {
  color: var(--ns-text-light);
  margin-bottom: 20px;
  display: flex;
  justify-content: center;
}
.ns-catalog-empty h3 {
  font-size: 1.3rem !important;
  color: var(--ns-text) !important;
  margin-bottom: 10px !important;
}
.ns-catalog-empty p { font-size: 0.9rem; margin-bottom: 24px; }

/* ============================================================
   HOW IT WORKS
   ============================================================ */
.ns-steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-bottom: 48px;
}
.ns-step {
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius-lg);
  padding: 32px 24px 28px;
  box-shadow: var(--ns-shadow-sm);
  transition: all var(--ns-transition);
  position: relative;
}
.ns-step:not(:last-child)::after {
  content: '→';
  position: absolute;
  right: -14px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--ns-border-dark);
  font-size: 1rem;
  z-index: 1;
}
.ns-step:hover { box-shadow: var(--ns-shadow-hover); transform: translateY(-2px); }
.ns-step__num {
  width: 40px; height: 40px;
  border-radius: 10px;
  background: var(--ns-primary-light);
  color: var(--ns-primary);
  border: 1px solid var(--ns-border-dark);
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 1.3rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 16px;
}
.ns-step__title { font-size: 1rem !important; font-weight: 700 !important; color: var(--ns-text) !important; margin-bottom: 8px !important; }
.ns-step__desc { font-size: 0.84rem; color: var(--ns-text-muted); line-height: 1.65; margin: 0; }

.ns-steps-cta {
  display: flex;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
}

/* ============================================================
   GUARANTEE SECTION
   ============================================================ */
.ns-guarantee-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.ns-guarantee-item {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius-lg);
  padding: 24px;
  box-shadow: var(--ns-shadow-sm);
}
.ns-guarantee-item__check {
  color: var(--ns-primary);
  flex-shrink: 0;
  margin-top: 2px;
}
.ns-guarantee-item strong {
  display: block;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--ns-text);
  margin-bottom: 6px;
}
.ns-guarantee-item p { font-size: 0.84rem; color: var(--ns-text-muted); line-height: 1.65; margin: 0; }

/* ============================================================
   LOYALTY CALLOUT
   ============================================================ */
.ns-loyalty-banner {
  background: var(--ns-primary);
  border-radius: var(--ns-radius-lg);
  padding: 48px 48px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  position: relative;
  overflow: hidden;
}
.ns-loyalty-banner::before {
  content: '';
  position: absolute;
  right: -60px; top: -60px;
  width: 280px; height: 280px;
  background: radial-gradient(circle, rgba(255,255,255,0.07) 0%, transparent 70%);
  pointer-events: none;
}
.ns-loyalty-banner__icon {
  color: rgba(255,255,255,0.6);
  flex-shrink: 0;
}
.ns-loyalty-banner h3 {
  font-size: 1.65rem !important;
  font-weight: 800 !important;
  color: #fff !important;
  margin-bottom: 8px !important;
}
.ns-loyalty-banner p { color: rgba(255,255,255,0.7); font-size: 0.92rem; margin: 0; }

/* ============================================================
   WOOCOMMERCE — PRODUCT GRID
   ============================================================ */
.woocommerce, .woocommerce-page { background: transparent !important; }
ul.products { background: transparent !important; }
ul.products li.product {
  background: #FFFFFF !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: var(--ns-radius-lg) !important;
  overflow: hidden !important;
  transition: all var(--ns-transition) !important;
  padding: 0 !important;
  box-shadow: var(--ns-shadow-sm) !important;
}
ul.products li.product:hover {
  box-shadow: var(--ns-shadow-hover) !important;
  transform: translateY(-4px) !important;
  border-color: var(--ns-border-dark) !important;
}
ul.products li.product img {
  width: 100% !important;
  height: 220px !important;
  object-fit: cover !important;
  border-radius: 0 !important;
  border-bottom: 1px solid var(--ns-border) !important;
}
ul.products li.product .woocommerce-loop-product__title {
  font-family: 'Inter', sans-serif !important;
  font-size: 0.95rem !important;
  font-weight: 600 !important;
  color: var(--ns-text) !important;
  padding: 16px 20px 4px !important;
  margin: 0 !important;
  line-height: 1.35 !important;
}
ul.products li.product .price {
  color: var(--ns-primary) !important;
  font-weight: 700 !important;
  font-size: 1rem !important;
  padding: 4px 20px 14px !important;
  display: block !important;
}
ul.products li.product .button {
  margin: 0 20px 20px !important;
  width: calc(100% - 40px) !important;
  display: block !important;
  text-align: center !important;
}

/* ============================================================
   SINGLE PRODUCT PAGE
   ============================================================ */
.single-product div.product {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 56px !important;
  align-items: start !important;
  padding: 48px 0 !important;
}
.single-product div.product .woocommerce-product-gallery { grid-column: 1 !important; }
.single-product div.product .summary { grid-column: 2 !important; }

.single-product .product_title {
  font-size: clamp(1.8rem, 3vw, 2.6rem) !important;
  font-weight: 800 !important;
  font-style: normal !important;
  line-height: 1.1 !important;
  margin-bottom: 10px !important;
  color: var(--ns-text) !important;
  letter-spacing: -0.02em !important;
}
.single-product .price {
  font-size: 1.7rem !important;
  color: var(--ns-text) !important;
  font-weight: 700 !important;
  margin-bottom: 16px !important;
}
.single-product .woocommerce-product-details__short-description {
  color: var(--ns-text-muted) !important;
  font-size: 0.93rem !important;
  line-height: 1.7 !important;
  margin-bottom: 20px !important;
}
.woocommerce-product-gallery__wrapper {
  border: 1px solid var(--ns-border) !important;
  border-radius: var(--ns-radius-lg) !important;
  overflow: hidden !important;
  background: var(--ns-bg-alt) !important;
}

/* Trust badges */
.ns-trust-badges {
  display: flex;
  gap: 7px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.ns-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 11px;
  border-radius: 6px;
  font-size: 0.7rem;
  font-weight: 600;
  white-space: nowrap;
}
.ns-badge-primary { background: var(--ns-primary-light); border: 1px solid var(--ns-border-dark); color: var(--ns-primary); }
.ns-badge-accent  { background: var(--ns-accent-light);  border: 1px solid #F5C8DA;               color: var(--ns-accent); }
.ns-badge-neutral { background: var(--ns-bg-alt);         border: 1px solid var(--ns-border);      color: var(--ns-text-muted); }

/* COA callout */
.ns-coa-callout {
  background: var(--ns-primary-light);
  border: 1px solid var(--ns-border-dark);
  border-left: 3px solid var(--ns-primary);
  border-radius: var(--ns-radius);
  padding: 14px 16px;
  margin: 14px 0;
  display: flex;
  align-items: flex-start;
  gap: 11px;
}
.ns-coa-callout__icon { color: var(--ns-primary); flex-shrink: 0; margin-top: 2px; }
.ns-coa-callout__text strong { display: block; font-size: 0.84rem; font-weight: 700; color: var(--ns-text); margin-bottom: 3px; }
.ns-coa-callout__text span { font-size: 0.78rem; color: var(--ns-text-muted); }

/* Loyalty earn */
.ns-loyalty-earn {
  background: var(--ns-bg-alt);
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius);
  padding: 11px 15px;
  margin: 12px 0;
  font-size: 0.84rem;
  color: var(--ns-text-muted);
  display: flex;
  align-items: center;
  gap: 8px;
}
.ns-loyalty-earn strong { color: var(--ns-accent); }

/* Compliance notice */
.ns-compliance {
  background: #FFFBF0;
  border: 1px solid #E8D5A0;
  border-radius: var(--ns-radius);
  padding: 11px 15px;
  margin-top: 16px;
  font-size: 0.7rem;
  color: #7A6030;
  line-height: 1.6;
  text-align: center;
}
.ns-compliance strong { color: #6A5020; }

/* Add to cart */
.single_add_to_cart_button {
  width: 100% !important;
  padding: 16px 28px !important;
  font-size: 0.95rem !important;
  font-family: 'Inter', sans-serif !important;
  font-weight: 600 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  background: var(--ns-accent) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--ns-radius) !important;
  cursor: pointer !important;
  transition: all var(--ns-transition) !important;
  box-shadow: var(--ns-shadow-accent) !important;
  display: block !important;
  margin-top: 4px !important;
}
.single_add_to_cart_button:hover {
  background: var(--ns-accent-dark) !important;
  transform: translateY(-1px) !important;
  color: #fff !important;
}

/* Sticky bar */
.ns-sticky-cart {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  background: #FFFFFF;
  border-top: 1px solid var(--ns-border);
  box-shadow: 0 -4px 24px rgba(30, 40, 120, 0.1);
  padding: 14px 24px;
  z-index: 9999;
  transform: translateY(100%);
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}
.ns-sticky-cart--visible { transform: translateY(0); }
.ns-sticky-cart__info { flex: 1; min-width: 0; }
.ns-sticky-cart__name { font-size: 0.95rem; font-weight: 600; color: var(--ns-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ns-sticky-cart__price { font-size: 0.85rem; color: var(--ns-primary); font-weight: 600; }
.ns-sticky-cart__btn {
  background: var(--ns-accent) !important;
  color: #fff !important;
  padding: 11px 24px !important;
  border-radius: var(--ns-radius) !important;
  font-size: 0.875rem !important;
  font-weight: 600 !important;
  white-space: nowrap;
  border: none !important;
  cursor: pointer;
  flex-shrink: 0;
}

/* ============================================================
   FAQ
   ============================================================ */
.ns-faqs { display: flex; flex-direction: column; gap: 8px; }
.ns-faq__question {
  width: 100%;
  text-align: left;
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius);
  padding: 15px 20px;
  color: var(--ns-text);
  font-family: 'Inter', sans-serif;
  font-size: 0.93rem;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  transition: all var(--ns-transition);
  box-shadow: var(--ns-shadow-sm);
}
.ns-faq__question:hover, .ns-faq__question.active {
  border-color: var(--ns-primary);
  background: var(--ns-primary-light);
}
.ns-faq__question.active { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.ns-faq__toggle {
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--ns-bg-alt);
  border: 1px solid var(--ns-border);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.1rem;
  transition: transform var(--ns-transition);
  flex-shrink: 0;
  color: var(--ns-primary);
  line-height: 1;
}
.ns-faq__question.active .ns-faq__toggle {
  transform: rotate(45deg);
  background: var(--ns-primary);
  color: #fff;
  border-color: var(--ns-primary);
}
.ns-faq__answer {
  display: none;
  background: var(--ns-primary-light);
  border: 1px solid var(--ns-primary);
  border-top: none;
  border-bottom-left-radius: var(--ns-radius);
  border-bottom-right-radius: var(--ns-radius);
  padding: 16px 20px;
  font-size: 0.88rem;
  color: var(--ns-text-muted);
  line-height: 1.7;
}
.ns-faq__answer.open { display: block; }

/* ============================================================
   PRODUCT TABS
   ============================================================ */
.woocommerce-tabs .tabs {
  border-bottom: 2px solid var(--ns-border) !important;
  margin-bottom: 0 !important;
  padding: 0 !important;
  list-style: none !important;
  display: flex !important;
}
.woocommerce-tabs .tabs li { background: transparent !important; border: none !important; margin: 0 !important; }
.woocommerce-tabs .tabs li a {
  font-family: 'Inter', sans-serif !important;
  font-size: 0.82rem !important;
  font-weight: 600 !important;
  color: var(--ns-text-muted) !important;
  background: transparent !important;
  border: none !important;
  border-bottom: 2px solid transparent !important;
  margin-bottom: -2px !important;
  padding: 12px 18px !important;
  display: block !important;
}
.woocommerce-tabs .tabs li.active a { color: var(--ns-primary) !important; border-bottom-color: var(--ns-primary) !important; }
.woocommerce-tabs .panel {
  background: #FFFFFF !important;
  border: 1px solid var(--ns-border) !important;
  border-top: none !important;
  border-radius: 0 0 var(--ns-radius) var(--ns-radius) !important;
  padding: 28px !important;
  color: var(--ns-text-muted) !important;
}

/* ============================================================
   TIER PRICING TABLE
   ============================================================ */
.wc-tiered-pricing-table-wrapper table, .tier-pricing-table table {
  width: 100% !important;
  border-collapse: collapse !important;
  background: #FFFFFF !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: var(--ns-radius-lg) !important;
  overflow: hidden !important;
}
.wc-tiered-pricing-table-wrapper thead th, .tier-pricing-table thead th {
  background: var(--ns-bg-alt) !important;
  color: var(--ns-text-muted) !important;
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.1em !important;
  text-transform: uppercase !important;
  padding: 12px 16px !important;
  border-bottom: 1px solid var(--ns-border) !important;
  text-align: left !important;
}
.wc-tiered-pricing-table-wrapper tbody td, .tier-pricing-table tbody td {
  padding: 11px 16px !important;
  color: var(--ns-text-muted) !important;
  font-size: 0.9rem !important;
  border-bottom: 1px solid var(--ns-border) !important;
}
.wc-tiered-pricing-table-wrapper tbody tr:hover td, .tier-pricing-table tbody tr:hover td {
  background: var(--ns-bg-alt) !important;
  color: var(--ns-text) !important;
}

/* ============================================================
   FORMS
   ============================================================ */
input[type="text"], input[type="email"], input[type="tel"],
input[type="number"], input[type="password"], select, textarea {
  background: #FFFFFF !important;
  border: 1px solid var(--ns-border-dark) !important;
  border-radius: var(--ns-radius) !important;
  color: var(--ns-text) !important;
  padding: 11px 15px !important;
  font-size: 0.9rem !important;
  transition: border-color var(--ns-transition) !important;
  width: 100%;
}
input:focus, select:focus, textarea:focus {
  outline: none !important;
  border-color: var(--ns-primary) !important;
  box-shadow: 0 0 0 3px rgba(75, 91, 212, 0.1) !important;
}
input::placeholder, textarea::placeholder { color: var(--ns-text-light) !important; }
label { color: var(--ns-text-muted) !important; font-size: 0.875rem !important; }

/* ============================================================
   FOOTER
   ============================================================ */
.site-footer, #colophon {
  background: #181A2C !important;
  border-top: none !important;
  padding-top: 60px !important;
}
.site-footer .site-info, .site-footer .footer-bar { display: none; }

.ns-footer-grid {
  max-width: var(--ns-max);
  margin: 0 auto;
  padding: 0 24px 52px;
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 40px;
}
.ns-footer-brand-name {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 1.4rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #FFFFFF;
  display: block;
  margin-bottom: 14px;
  text-decoration: none;
}
.ns-footer-brand p { font-size: 0.84rem; color: rgba(255,255,255,0.38); line-height: 1.7; margin-bottom: 14px; }
.ns-footer-col h4 {
  font-size: 0.68rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,0.35) !important;
  margin-bottom: 14px !important;
}
.ns-footer-col ul { list-style: none; padding: 0; margin: 0; }
.ns-footer-col li { margin-bottom: 9px; }
.ns-footer-col a { font-size: 0.84rem; color: rgba(255,255,255,0.5); transition: color var(--ns-transition); text-decoration: none; }
.ns-footer-col a:hover { color: #FFFFFF; }
.ns-footer-bottom {
  max-width: var(--ns-max);
  margin: 0 auto;
  padding: 22px 24px;
  border-top: 1px solid rgba(255,255,255,0.07);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
}
.ns-footer-bottom p { font-size: 0.75rem; color: rgba(255,255,255,0.25); margin: 0; }
.ns-footer-bottom a { font-size: 0.75rem; color: rgba(255,255,255,0.25); margin-left: 16px; }
.ns-footer-bottom a:hover { color: rgba(255,255,255,0.6); }

/* ============================================================
   MISC
   ============================================================ */
.content-area, #primary, .site-content, #content, body { background: var(--ns-bg) !important; }
.woocommerce-breadcrumb { font-size: 0.8rem !important; color: var(--ns-text-muted) !important; padding: 16px 0 0 !important; }
.woocommerce-breadcrumb a { color: var(--ns-text-muted) !important; }
.woocommerce-breadcrumb a:hover { color: var(--ns-primary) !important; }
.woocommerce-notices-wrapper .woocommerce-message { background: var(--ns-primary-light) !important; border-color: var(--ns-primary) !important; color: var(--ns-text) !important; }
.woocommerce-notices-wrapper .woocommerce-error { background: var(--ns-accent-light) !important; border-color: var(--ns-accent) !important; color: var(--ns-text) !important; }
.single-product .page-header, .woocommerce-page .page-header { display: none; }
.ns-icon { display: inline-flex; align-items: center; justify-content: center; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 1024px) {
  .ns-why-grid { grid-template-columns: 1fr 1fr; }
  .ns-steps { grid-template-columns: 1fr 1fr; }
  .ns-step:nth-child(2)::after, .ns-step:nth-child(4)::after { display: none; }
  .ns-step:nth-child(odd):not(:nth-last-child(-n+2))::after { display: block; }
}
@media (max-width: 900px) {
  .ns-hero__inner { grid-template-columns: 1fr; }
  .ns-hero__stats { grid-template-columns: 1fr 1fr; }
  .ns-hero__sub { max-width: 100%; }
  .single-product div.product { grid-template-columns: 1fr !important; }
  .single-product div.product .woocommerce-product-gallery,
  .single-product div.product .summary { grid-column: 1 !important; }
  .ns-footer-grid { grid-template-columns: 1fr 1fr; }
  .ns-loyalty-banner { flex-direction: column; text-align: center; padding: 40px 28px; }
  .ns-guarantee-grid { grid-template-columns: 1fr; }
  .ns-trust-bar__inner { flex-wrap: wrap; }
  .ns-trust-item__divider { display: none; }
  .ns-trust-item { flex: 0 0 calc(50% - 8px); padding: 16px 0; }
}
@media (max-width: 700px) {
  .ns-why-grid { grid-template-columns: 1fr; }
  .ns-steps { grid-template-columns: 1fr; }
  .ns-step::after { display: none !important; }
  .ns-section { padding: 56px 0; }
  .ns-hero { padding: 52px 0 48px; }
  .ns-hero__stats { gap: 10px; }
  .ns-hero__stat { padding: 18px 16px; }
  .ns-footer-grid { grid-template-columns: 1fr; }
  .ns-trust-item { flex: 0 0 100%; }
  .ns-trust-item__divider { display: none; }
}

/* ============================================================
   INNER PAGE — FULL WIDTH WRAPPER
   ============================================================ */
.ns-inner-page ~ * .grid-container,
.ns-inner-page .site-content > .grid-container {
  max-width: 100% !important;
  padding: 0 !important;
}
body:not(.home) .content-area,
body:not(.home) #primary {
  max-width: 100% !important;
  padding: 0 !important;
  width: 100% !important;
}
body:not(.home) .entry-content { padding: 0 !important; margin: 0 !important; }

/* ============================================================
   PAGE HERO (shared: about / faq / contact)
   ============================================================ */
.ns-page-hero {
  background: linear-gradient(155deg, #F2F5FF 0%, #FAFBFF 60%, #FDF2F7 100%);
  border-bottom: 1px solid var(--ns-border);
  padding: 64px 24px 60px;
  position: relative;
  overflow: hidden;
  text-align: center;
}
.ns-page-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, #C5CDEF 1px, transparent 1px);
  background-size: 38px 38px;
  opacity: 0.28;
  pointer-events: none;
}
.ns-page-hero__inner { max-width: 680px; margin: 0 auto; position: relative; z-index: 1; }
.ns-page-hero__tag {
  display: inline-block;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ns-primary);
  background: var(--ns-primary-light);
  border: 1px solid var(--ns-border-dark);
  padding: 5px 12px;
  border-radius: 50px;
  margin-bottom: 18px;
}
.ns-page-hero__title {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: clamp(2.2rem, 4vw, 3.2rem) !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin-bottom: 14px !important;
  letter-spacing: -0.02em !important;
  line-height: 1.08 !important;
}
.ns-page-hero__sub { font-size: 1rem; color: var(--ns-text-muted); line-height: 1.7; margin: 0; }

/* ============================================================
   ABOUT PAGE
   ============================================================ */
.ns-about-h2 {
  font-size: 1.9rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin-bottom: 16px !important;
  letter-spacing: -0.02em !important;
}

/* Mission split */
.ns-about-split {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 64px;
  align-items: start;
}
.ns-about-split__text p { font-size: 0.95rem; line-height: 1.75; margin-bottom: 16px; }
.ns-about-split__text p:last-child { margin-bottom: 0; }

.ns-about-split__stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  position: sticky;
  top: 96px;
}
.ns-about-stat {
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius-lg);
  padding: 22px 20px;
  box-shadow: var(--ns-shadow);
}
.ns-about-stat__num {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 2rem;
  font-weight: 800;
  color: var(--ns-primary);
  line-height: 1;
  margin-bottom: 5px;
}
.ns-about-stat__label { font-size: 0.75rem; color: var(--ns-text-muted); line-height: 1.35; }

/* Process steps */
.ns-process-steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  counter-reset: process;
}
.ns-process-step {
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius-lg);
  padding: 28px 24px;
  box-shadow: var(--ns-shadow-sm);
}
.ns-process-step__num {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 2.4rem;
  font-weight: 800;
  color: var(--ns-border-dark);
  line-height: 1;
  margin-bottom: 12px;
  letter-spacing: -0.03em;
}
.ns-process-step__title {
  font-size: 1rem !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
  margin-bottom: 10px !important;
}
.ns-process-step__desc { font-size: 0.84rem; color: var(--ns-text-muted); line-height: 1.65; margin: 0; }

/* Why Thailand split */
.ns-about-why {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: start;
}
.ns-about-why__content p { font-size: 0.95rem; line-height: 1.75; margin-bottom: 14px; }
.ns-about-why__content p:last-child { margin-bottom: 0; }
.ns-about-why__features { display: flex; flex-direction: column; gap: 16px; }
.ns-about-feature {
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius);
  border-left: 3px solid var(--ns-primary);
  padding: 16px 18px;
}
.ns-about-feature__label { font-weight: 700; font-size: 0.88rem; color: var(--ns-text); margin-bottom: 4px; }
.ns-about-feature p { font-size: 0.82rem; color: var(--ns-text-muted); margin: 0; }

/* Standards grid */
.ns-standards-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.ns-standard {
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius-lg);
  padding: 24px;
  box-shadow: var(--ns-shadow-sm);
}
.ns-standard__title {
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--ns-text);
  margin-bottom: 8px;
}
.ns-standard__body { font-size: 0.84rem; color: var(--ns-text-muted); line-height: 1.65; margin: 0; }

/* Compliance block */
.ns-compliance-block {
  background: #FFFBF0;
  border: 1px solid #E8D5A0;
  border-radius: var(--ns-radius-lg);
  padding: 32px 36px;
}
.ns-compliance-block h3 {
  font-size: 1rem !important;
  font-weight: 700 !important;
  color: #7A6030 !important;
  margin-bottom: 14px !important;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.78rem !important;
}
.ns-compliance-block p { font-size: 0.84rem; color: #8A6D3B; line-height: 1.7; margin-bottom: 12px; }
.ns-compliance-block p:last-child { margin-bottom: 0; }

/* ============================================================
   FAQ PAGE
   ============================================================ */
.ns-faq-page-layout {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 48px;
  align-items: start;
}

.ns-faq-nav {
  position: sticky;
  top: 88px;
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius-lg);
  padding: 20px;
  box-shadow: var(--ns-shadow-sm);
}
.ns-faq-nav__label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ns-text-muted);
  margin-bottom: 12px;
}
.ns-faq-nav__link {
  display: block;
  font-size: 0.84rem;
  color: var(--ns-text-muted);
  padding: 8px 10px;
  border-radius: var(--ns-radius);
  text-decoration: none;
  transition: all var(--ns-transition);
  margin-bottom: 2px;
}
.ns-faq-nav__link:hover {
  background: var(--ns-primary-light);
  color: var(--ns-primary);
}

.ns-faq-category { margin-bottom: 56px; }
.ns-faq-category:last-of-type { margin-bottom: 0; }
.ns-faq-category__title {
  font-size: 1.3rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin-bottom: 20px !important;
  padding-bottom: 14px !important;
  border-bottom: 2px solid var(--ns-border) !important;
  letter-spacing: -0.015em !important;
}

.ns-faq-still-need-help {
  background: var(--ns-primary-light);
  border: 1px solid var(--ns-border-dark);
  border-radius: var(--ns-radius-lg);
  padding: 36px;
  text-align: center;
  margin-top: 48px;
}
.ns-faq-still-need-help h3 {
  font-size: 1.3rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin-bottom: 8px !important;
}
.ns-faq-still-need-help p { font-size: 0.9rem; margin-bottom: 20px; }

/* ============================================================
   CONTACT PAGE
   ============================================================ */
.ns-contact-layout {
  display: grid;
  grid-template-columns: 380px 1fr;
  gap: 48px;
  align-items: start;
}

.ns-contact-card {
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius-lg);
  padding: 28px;
  box-shadow: var(--ns-shadow-sm);
  margin-bottom: 20px;
}
.ns-contact-card__title {
  font-size: 1.1rem !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
  margin-bottom: 20px !important;
}
.ns-contact-detail {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  margin-bottom: 18px;
}
.ns-contact-detail:last-child { margin-bottom: 0; }
.ns-contact-detail__icon {
  width: 36px; height: 36px;
  border-radius: 8px;
  background: var(--ns-primary-light);
  border: 1px solid var(--ns-border-dark);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ns-primary);
  flex-shrink: 0;
}
.ns-contact-detail__label { font-size: 0.72rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ns-text-muted); margin-bottom: 2px; }
.ns-contact-detail__value { font-size: 0.9rem; color: var(--ns-text); font-weight: 500; }
.ns-contact-detail__value a { color: var(--ns-primary); }

.ns-contact-topics {
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius-lg);
  padding: 24px 28px;
  box-shadow: var(--ns-shadow-sm);
  margin-bottom: 16px;
}
.ns-contact-topics__title {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ns-text-muted);
  margin-bottom: 16px;
}
.ns-contact-topic { margin-bottom: 14px; }
.ns-contact-topic:last-child { margin-bottom: 0; }
.ns-contact-topic__name { font-size: 0.88rem; font-weight: 600; color: var(--ns-text); margin-bottom: 2px; }
.ns-contact-topic__desc { font-size: 0.78rem; color: var(--ns-text-muted); line-height: 1.4; }

.ns-contact-note {
  background: var(--ns-primary-light);
  border: 1px solid var(--ns-border-dark);
  border-radius: var(--ns-radius);
  padding: 14px 16px;
  font-size: 0.82rem;
  color: var(--ns-text-muted);
  line-height: 1.5;
}
.ns-contact-note strong { color: var(--ns-text); }

/* Form */
.ns-contact-form-wrap {
  background: #FFFFFF;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius-lg);
  padding: 36px;
  box-shadow: var(--ns-shadow);
}
.ns-contact-form { display: flex; flex-direction: column; gap: 18px; }
.ns-form-row { display: grid; gap: 16px; }
.ns-form-row--2 { grid-template-columns: 1fr 1fr; }
.ns-form-group { display: flex; flex-direction: column; gap: 6px; }
.ns-form-group label { font-size: 0.82rem; font-weight: 600; color: var(--ns-text); }
.ns-form-group label span { color: var(--ns-accent); }
.ns-form-footer { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.ns-form-note { font-size: 0.78rem; color: var(--ns-text-muted); margin: 0; line-height: 1.5; flex: 1; }
.ns-contact-submit { padding: 14px 28px !important; }

.ns-form-error {
  background: var(--ns-accent-light);
  border: 1px solid #F5C8DA;
  border-radius: var(--ns-radius);
  padding: 12px 16px;
  font-size: 0.85rem;
  color: var(--ns-accent-dark);
}

.ns-contact-success {
  text-align: center;
  padding: 48px 32px;
}
.ns-contact-success__icon {
  width: 64px; height: 64px;
  border-radius: 50%;
  background: var(--ns-primary-light);
  border: 2px solid var(--ns-primary);
  color: var(--ns-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 20px;
}
.ns-contact-success h3 { font-size: 1.4rem !important; color: var(--ns-text) !important; margin-bottom: 10px !important; }
.ns-contact-success p { font-size: 0.9rem; color: var(--ns-text-muted); }

/* ============================================================
   RESPONSIVE — INNER PAGES
   ============================================================ */
@media (max-width: 1024px) {
  .ns-process-steps { grid-template-columns: 1fr 1fr; }
  .ns-faq-page-layout { grid-template-columns: 180px 1fr; gap: 32px; }
  .ns-contact-layout { grid-template-columns: 1fr; }
}
@media (max-width: 860px) {
  .ns-about-split { grid-template-columns: 1fr; }
  .ns-about-split__stats { position: static; }
  .ns-about-why { grid-template-columns: 1fr; }
  .ns-standards-grid { grid-template-columns: 1fr; }
  .ns-faq-page-layout { grid-template-columns: 1fr; }
  .ns-faq-nav { position: static; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
  .ns-faq-nav__label { display: none; }
  .ns-faq-nav__link { padding: 6px 12px; background: var(--ns-bg-alt); border: 1px solid var(--ns-border); }
}
@media (max-width: 600px) {
  .ns-process-steps { grid-template-columns: 1fr; }
  .ns-about-split__stats { grid-template-columns: 1fr 1fr; }
  .ns-form-row--2 { grid-template-columns: 1fr; }
  .ns-contact-form-wrap { padding: 24px 20px; }
  .ns-page-hero { padding: 48px 24px 44px; }
  .ns-form-footer { flex-direction: column; align-items: stretch; }
}

/* ============================================================
   PRODUCT — SHORT DESCRIPTION BULLETS
   ============================================================ */
.ns-product-bullets {
  list-style: none;
  padding: 0;
  margin: 0 0 4px;
}
.ns-product-bullets li {
  display: flex;
  gap: 10px;
  align-items: baseline;
  font-size: 0.87rem;
  color: var(--ns-text-muted);
  padding: 8px 0;
  border-bottom: 1px solid var(--ns-border);
  line-height: 1.5;
}
.ns-product-bullets li:first-child { padding-top: 2px; }
.ns-product-bullets li:last-child { border-bottom: none; }
.ns-product-bullets li strong {
  color: var(--ns-text);
  font-weight: 600;
  min-width: 100px;
  flex-shrink: 0;
  font-size: 0.82rem;
}

/* ============================================================
   PRODUCT — DESCRIPTION TYPOGRAPHY
   ============================================================ */
.ns-product-description h3 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.15rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin: 28px 0 12px !important;
  letter-spacing: -0.01em !important;
}
.ns-product-description h3:first-of-type { margin-top: 0 !important; }
.ns-product-description p {
  font-size: 0.88rem;
  line-height: 1.8;
  color: var(--ns-text-muted);
  margin-bottom: 12px;
}
.ns-product-description p em { font-style: italic; }
.ns-product-description ul {
  padding: 0;
  margin: 0 0 16px;
  list-style: none;
}
.ns-product-description ul li {
  font-size: 0.87rem;
  color: var(--ns-text-muted);
  line-height: 1.65;
  padding: 7px 0 7px 20px;
  border-bottom: 1px solid var(--ns-border);
  position: relative;
}
.ns-product-description ul li:last-child { border-bottom: none; }
.ns-product-description ul li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 15px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--ns-primary);
}

/* ============================================================
   PRODUCT — SPEC TABLE
   ============================================================ */
.ns-spec-table-wrap {
  background: var(--ns-bg-alt);
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius-lg);
  padding: 24px 28px;
  margin-bottom: 32px;
}
.ns-spec-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.84rem;
}
.ns-spec-table th,
.ns-spec-table td {
  padding: 9px 12px;
  text-align: left;
  border-bottom: 1px solid var(--ns-border);
  vertical-align: top;
  line-height: 1.5;
}
.ns-spec-table th {
  width: 38%;
  font-weight: 600;
  color: var(--ns-text);
  white-space: nowrap;
}
.ns-spec-table td { color: var(--ns-text-muted); }
.ns-spec-table tr:last-child th,
.ns-spec-table tr:last-child td { border-bottom: none; }

/* WooCommerce additional info table — match spec table style */
.woocommerce-product-attributes { width: 100%; }
.woocommerce-product-attributes th,
.woocommerce-product-attributes td {
  padding: 9px 12px !important;
  font-size: 0.84rem !important;
  border-bottom: 1px solid var(--ns-border) !important;
}
.woocommerce-product-attributes th { font-weight: 600 !important; color: var(--ns-text) !important; }
.woocommerce-product-attributes td { color: var(--ns-text-muted) !important; }

/* ============================================================
   PRODUCT — RESPONSIVE
   ============================================================ */
@media (max-width: 600px) {
  .ns-product-bullets li strong { min-width: 80px; }
  .ns-spec-table th { white-space: normal; }
  .ns-spec-table-wrap { padding: 16px 18px; }
}

/* ============================================================
   WOOCOMMERCE — SINGLE PRODUCT LAYOUT (no-sidebar, full control)
   ============================================================ */

/* Neutralise GeneratePress content padding on WC pages */
.woocommerce #primary,
.woocommerce-page #primary {
  width: 100% !important;
  max-width: 100% !important;
  padding: 0 !important;
}
.woocommerce .site-content,
.woocommerce-page .site-content {
  padding-top: 0 !important;
}
.woocommerce div.product,
.woocommerce-page div.product {
  max-width: 1200px;
  margin: 0 auto;
  padding: 40px 32px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: start;
}

/* ── Product Gallery ─────────────────────────────────────────── */
.woocommerce div.product div.woocommerce-product-gallery {
  grid-column: 1;
  grid-row: 1;
  position: sticky;
  top: 80px;
}
.woocommerce-product-gallery__wrapper {
  border-radius: var(--ns-radius-lg);
  overflow: hidden;
  background: #FAFBFF;
  border: 1px solid var(--ns-border);
}
.woocommerce-product-gallery__image img {
  width: 100% !important;
  height: auto !important;
  display: block;
  object-fit: cover;
}
/* Zoom icon */
.woocommerce-product-gallery__trigger {
  top: 12px !important;
  right: 12px !important;
  background: rgba(255,255,255,0.92) !important;
  border-radius: 50% !important;
  width: 36px !important;
  height: 36px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-shadow: var(--ns-shadow-sm) !important;
}

/* ── Product Summary ─────────────────────────────────────────── */
.woocommerce div.product .summary.entry-summary {
  grid-column: 2;
  grid-row: 1;
}

/* Product title */
.woocommerce div.product .product_title {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: clamp(1.8rem, 3vw, 2.6rem) !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  letter-spacing: -0.02em !important;
  line-height: 1.1 !important;
  margin-bottom: 16px !important;
}

/* Price */
.woocommerce div.product p.price,
.woocommerce div.product span.price {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 2rem !important;
  font-weight: 800 !important;
  color: var(--ns-primary) !important;
  margin-bottom: 20px !important;
  line-height: 1 !important;
}

/* Trust badges — horizontal row with wrapping */
.ns-trust-badges {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 6px !important;
  margin-bottom: 16px !important;
}
.ns-badge {
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
  font-size: 0.72rem !important;
  font-weight: 600 !important;
  padding: 5px 10px !important;
  border-radius: 50px !important;
  white-space: nowrap !important;
  letter-spacing: 0.01em !important;
}
.ns-badge-primary {
  background: var(--ns-primary-light) !important;
  color: var(--ns-primary) !important;
  border: 1px solid var(--ns-border-dark) !important;
}
.ns-badge-accent {
  background: var(--ns-accent-light) !important;
  color: var(--ns-accent-dark) !important;
  border: 1px solid #F5C8DA !important;
}
.ns-badge-neutral {
  background: var(--ns-bg-alt) !important;
  color: var(--ns-text-muted) !important;
  border: 1px solid var(--ns-border) !important;
}

/* Short description — list reset */
.woocommerce div.product .woocommerce-product-details__short-description {
  margin-bottom: 16px !important;
}
.woocommerce div.product .woocommerce-product-details__short-description ul {
  margin: 0 !important;
  padding: 0 !important;
}

/* ATC button */
.woocommerce div.product form.cart {
  margin-bottom: 16px !important;
}
.woocommerce div.product form.cart .qty {
  height: 48px !important;
  width: 64px !important;
  border-radius: var(--ns-radius) !important;
  border: 1px solid var(--ns-border-dark) !important;
  font-size: 1rem !important;
  font-weight: 600 !important;
  text-align: center !important;
  margin-right: 10px !important;
}
.woocommerce div.product form.cart .single_add_to_cart_button {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--ns-radius) !important;
  padding: 13px 28px !important;
  font-size: 0.95rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.02em !important;
  cursor: pointer !important;
  transition: background var(--ns-transition) !important;
  height: 48px !important;
}
.woocommerce div.product form.cart .single_add_to_cart_button:hover {
  background: var(--ns-primary-dark, #3a49b8) !important;
}

/* COA callout */
.ns-coa-callout {
  display: flex !important;
  gap: 12px !important;
  align-items: flex-start !important;
  background: var(--ns-primary-light) !important;
  border: 1px solid var(--ns-border-dark) !important;
  border-left: 3px solid var(--ns-primary) !important;
  border-radius: var(--ns-radius) !important;
  padding: 14px 16px !important;
  margin-bottom: 12px !important;
}
.ns-coa-callout__icon {
  color: var(--ns-primary) !important;
  flex-shrink: 0 !important;
  margin-top: 1px !important;
}
.ns-coa-callout__text { display: flex; flex-direction: column; gap: 3px; }
.ns-coa-callout__text strong { font-size: 0.84rem !important; color: var(--ns-text) !important; }
.ns-coa-callout__text span { font-size: 0.78rem !important; color: var(--ns-text-muted) !important; line-height: 1.5 !important; }

/* Loyalty earn */
.ns-loyalty-earn {
  display: flex !important;
  gap: 8px !important;
  align-items: center !important;
  font-size: 0.82rem !important;
  color: var(--ns-text-muted) !important;
  margin-bottom: 14px !important;
}
.ns-loyalty-earn .ns-icon { color: #F59E0B; }

/* Compliance */
.ns-compliance {
  font-size: 0.72rem !important;
  color: var(--ns-text-muted) !important;
  line-height: 1.5 !important;
  padding: 10px 12px !important;
  background: var(--ns-bg-alt) !important;
  border-radius: var(--ns-radius) !important;
  border: 1px solid var(--ns-border) !important;
  margin-top: 10px !important;
}
.ns-compliance strong { color: var(--ns-text) !important; }

/* ── WC Tabs (below the grid) ────────────────────────────────── */
.woocommerce div.product .woocommerce-tabs {
  grid-column: 1 / -1;
  grid-row: 2;
  border-top: 1px solid var(--ns-border);
  padding-top: 40px;
  margin-top: 0;
}
.woocommerce div.product .woocommerce-tabs ul.tabs {
  padding: 0 !important;
  margin-bottom: 0 !important;
  border-bottom: 2px solid var(--ns-border) !important;
  display: flex !important;
  gap: 4px !important;
}
.woocommerce div.product .woocommerce-tabs ul.tabs::before { display: none !important; }
.woocommerce div.product .woocommerce-tabs ul.tabs li {
  background: none !important;
  border: none !important;
  border-radius: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li a {
  font-size: 0.88rem !important;
  font-weight: 600 !important;
  color: var(--ns-text-muted) !important;
  padding: 10px 18px !important;
  display: block !important;
  border-bottom: 2px solid transparent !important;
  margin-bottom: -2px !important;
  text-decoration: none !important;
  transition: all var(--ns-transition) !important;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a,
.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover {
  color: var(--ns-primary) !important;
  border-bottom-color: var(--ns-primary) !important;
}
.woocommerce div.product .woocommerce-tabs .panel {
  margin-top: 28px !important;
  padding: 0 !important;
  border: none !important;
}

/* ── Related products (below tabs) ──────────────────────────── */
.woocommerce div.product .related.products {
  grid-column: 1 / -1;
  grid-row: 3;
}
.woocommerce .related.products h2 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.5rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin-bottom: 20px !important;
}

/* ── Tier pricing table ──────────────────────────────────────── */
.tiered-pricing-table {
  margin-bottom: 16px !important;
  border-radius: var(--ns-radius) !important;
  overflow: hidden !important;
  border: 1px solid var(--ns-border) !important;
  font-size: 0.84rem !important;
}
.tiered-pricing-table thead th {
  background: var(--ns-bg-alt) !important;
  color: var(--ns-text-muted) !important;
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.07em !important;
  text-transform: uppercase !important;
  padding: 8px 14px !important;
}
.tiered-pricing-table tbody td {
  padding: 9px 14px !important;
  border-top: 1px solid var(--ns-border) !important;
  color: var(--ns-text) !important;
}
.tiered-pricing-table .highlighted td {
  background: var(--ns-primary-light) !important;
  font-weight: 600 !important;
  color: var(--ns-primary) !important;
}

/* ── Responsive ──────────────────────────────────────────────── */
@media (max-width: 860px) {
  .woocommerce div.product,
  .woocommerce-page div.product {
    grid-template-columns: 1fr;
    gap: 28px;
    padding: 24px 20px;
  }
  .woocommerce div.product div.woocommerce-product-gallery { position: static; }
  .woocommerce div.product .summary.entry-summary { grid-column: 1; }
  .woocommerce div.product .woocommerce-tabs { grid-column: 1; }
  .woocommerce div.product .related.products { grid-column: 1; }
}
@media (max-width: 600px) {
  .woocommerce div.product,
  .woocommerce-page div.product { padding: 16px; }
  .ns-trust-badges { gap: 5px !important; }
}

/* ============================================================
   SINGLE PRODUCT — BREAK OUT OF GP GRID-CONTAINER & ENTRY-CONTENT
   High-specificity overrides to fix layout
   ============================================================ */

/* Blow out all GP width constraints on single product page */
body.single-product #primary,
body.single-product .site-main,
body.single-product .site-main > .grid-container,
body.single-product .entry-content {
  max-width: 100% !important;
  width: 100% !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* Also kill any inside-article padding on product pages */
body.single-product .inside-article {
  padding: 0 !important;
}

/* ── Product wrapper — flex 2-col ──────────────────────────── */
body.single-product div#product-25,
body.single-product .woocommerce div.product,
body.single-product div.product {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: flex-start !important;
  max-width: 1200px !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding: 40px 32px !important;
  box-sizing: border-box !important;
  gap: 0 !important;
}

/* ── Gallery column — left 45% ─────────────────────────────── */
body.single-product div.product > .woocommerce-product-gallery {
  flex: 0 0 45% !important;
  width: 45% !important;
  max-width: 45% !important;
  float: none !important;
  margin: 0 !important;
  padding-right: 48px !important;
  box-sizing: border-box !important;
  position: sticky !important;
  top: 88px !important;
}

/* ── Summary column — right 55% ────────────────────────────── */
body.single-product div.product > .summary.entry-summary {
  flex: 0 0 55% !important;
  width: 55% !important;
  max-width: 55% !important;
  float: none !important;
  margin: 0 !important;
  padding: 0 !important;
  box-sizing: border-box !important;
}

/* ── Full-width rows below the 2-col ───────────────────────── */
body.single-product div.product > .woocommerce-tabs,
body.single-product div.product > .related,
body.single-product div.product > .upsells,
body.single-product div.product > .woocommerce-notices-wrapper {
  flex: 0 0 100% !important;
  width: 100% !important;
  max-width: 100% !important;
  float: none !important;
  clear: both !important;
}

/* ── Image fills the gallery column ──────────────────────────
   WooCommerce flexslider sets inline width on .flex-viewport
   and slide items — !important beats inline styles          */
body.single-product .woocommerce-product-gallery__wrapper,
body.single-product .woocommerce-product-gallery figure,
body.single-product .woocommerce-product-gallery .flex-viewport,
body.single-product .woocommerce-product-gallery ul.slides,
body.single-product .woocommerce-product-gallery ul.slides li {
  width: 100% !important;
  max-width: 100% !important;
}

body.single-product .woocommerce-product-gallery img,
body.single-product .woocommerce-product-gallery figure img {
  width: 100% !important;
  height: auto !important;
  display: block !important;
  border-radius: 12px !important;
  border: 1px solid var(--ns-border) !important;
}

/* ── Thumbnail strip (below main image) ────────────────────── */
body.single-product .flex-control-thumbs {
  display: none !important; /* hide WC thumbnail strip — single image product */
}

/* ── Zoom trigger ──────────────────────────────────────────── */
body.single-product .woocommerce-product-gallery__trigger {
  position: absolute !important;
  top: 12px !important;
  right: 12px !important;
  z-index: 10 !important;
  background: rgba(255,255,255,0.92) !important;
  border-radius: 50% !important;
  width: 36px !important;
  height: 36px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-shadow: 0 1px 4px rgba(0,0,0,0.12) !important;
  text-decoration: none !important;
}

/* ── Product bullets in summary — align properly ───────────── */
.ns-product-bullets li {
  display: flex !important;
  flex-direction: row !important;
  align-items: baseline !important;
  gap: 8px !important;
}
.ns-product-bullets li strong {
  min-width: 110px !important;
  flex-shrink: 0 !important;
  font-size: 0.8rem !important;
}

/* ── Woo notices wrapper — zero height when empty ──────────── */
.woocommerce-notices-wrapper:empty { display: none !important; }

/* ── Responsive ────────────────────────────────────────────── */
@media (max-width: 900px) {
  body.single-product div.product > .woocommerce-product-gallery {
    flex: 0 0 100% !important;
    width: 100% !important;
    max-width: 100% !important;
    padding-right: 0 !important;
    position: static !important;
    margin-bottom: 28px !important;
  }
  body.single-product div.product > .summary.entry-summary {
    flex: 0 0 100% !important;
    width: 100% !important;
    max-width: 100% !important;
  }
  body.single-product div.product {
    padding: 24px 20px !important;
  }
}

/* ============================================================
   SINGLE PRODUCT — DEFINITIVE LAYOUT FIX v4
   ============================================================ */

/* 1. Suppress GP's duplicate post-thumbnail on product pages
      (WC gallery handles the image — we don't need this)     */
body.single-product .post-thumbnail,
body.single-product .featured-image {
  display: none !important;
}

/* 2. Expand the outer GP site grid-container to full width   */
body.single-product div.site.grid-container,
body.single-product .site-content,
body.single-product #primary,
body.single-product .site-main,
body.single-product .inside-article,
body.single-product .entry-content {
  max-width: 100% !important;
  width: 100% !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* 3. Outer GP article wrapper — reset to block */
body.single-product article.product {
  display: block !important;
  max-width: 100% !important;
  width: 100% !important;
  border: none !important;
  padding: 0 !important;
  margin: 0 !important;
}

/* 4. WooCommerce product div — flex 2-col layout
      Matches: div#product-25, div.product, article.product > div  */
body.single-product div[id^="product-"] {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: flex-start !important;
  max-width: 1200px !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding: 40px 32px !important;
  box-sizing: border-box !important;
  gap: 0 !important;
}

/* 5. Gallery — left 44% */
body.single-product div[id^="product-"] > .woocommerce-product-gallery {
  flex: 0 0 44% !important;
  width: 44% !important;
  max-width: 44% !important;
  float: none !important;
  margin: 0 !important;
  padding-right: 48px !important;
  box-sizing: border-box !important;
  position: sticky !important;
  top: 88px !important;
}

/* 6. Summary — right 56% */
body.single-product div[id^="product-"] > .summary.entry-summary {
  flex: 0 0 56% !important;
  width: 56% !important;
  max-width: 56% !important;
  float: none !important;
  margin: 0 !important;
  padding: 0 !important;
  box-sizing: border-box !important;
}

/* 7. Full-width children */
body.single-product div[id^="product-"] > .woocommerce-tabs,
body.single-product div[id^="product-"] > .related,
body.single-product div[id^="product-"] > .upsells,
body.single-product div[id^="product-"] > .woocommerce-notices-wrapper {
  flex: 0 0 100% !important;
  width: 100% !important;
  max-width: 100% !important;
  float: none !important;
  clear: both !important;
  padding: 0 !important;
}

/* 8. Image fills the gallery column completely —
      !important overrides flexslider inline styles           */
body.single-product .woocommerce-product-gallery {
  position: relative !important;
}
body.single-product .woocommerce-product-gallery__wrapper {
  width: 100% !important;
  max-width: 100% !important;
}
body.single-product .woocommerce-product-gallery figure,
body.single-product .woocommerce-product-gallery .woocommerce-product-gallery__image,
body.single-product .woocommerce-product-gallery .flex-viewport,
body.single-product .woocommerce-product-gallery ul.slides,
body.single-product .woocommerce-product-gallery ul.slides > li {
  width: 100% !important;
  max-width: 100% !important;
}
body.single-product .woocommerce-product-gallery img.wp-post-image,
body.single-product .woocommerce-product-gallery figure img {
  width: 100% !important;
  height: auto !important;
  display: block !important;
  border-radius: 12px !important;
  border: 1px solid var(--ns-border) !important;
  object-fit: cover !important;
}

/* Hide WC thumbnail strip — single-image product */
body.single-product .flex-control-nav,
body.single-product .woocommerce-product-gallery__wrapper ol.flex-control-thumbs {
  display: none !important;
}

/* Zoom icon */
body.single-product .woocommerce-product-gallery__trigger {
  position: absolute !important;
  top: 12px !important;
  right: 12px !important;
  z-index: 20 !important;
  background: rgba(255,255,255,0.93) !important;
  border-radius: 50% !important;
  width: 36px !important;
  height: 36px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-shadow: 0 1px 6px rgba(0,0,0,0.14) !important;
  color: var(--ns-text) !important;
}

/* 9. Responsive — stack on mobile */
@media (max-width: 860px) {
  body.single-product div[id^="product-"] {
    padding: 24px 16px !important;
  }
  body.single-product div[id^="product-"] > .woocommerce-product-gallery {
    flex: 0 0 100% !important;
    width: 100% !important;
    max-width: 100% !important;
    padding-right: 0 !important;
    position: static !important;
    margin-bottom: 24px !important;
  }
  body.single-product div[id^="product-"] > .summary.entry-summary {
    flex: 0 0 100% !important;
    width: 100% !important;
    max-width: 100% !important;
  }
}

/* ============================================================
   PRODUCT PAGE — CRO/UI AUDIT FIXES
   ============================================================ */

/* ── Duplicate GP featured image (belt-and-suspenders) ──────── */
body.single-product .featured-image.page-header-image-single {
  display: none !important;
}

/* ── FAQ section — full-width flex child inside product div ─── */
body.single-product div[id^="product-"] > .ns-product-faq {
  flex: 0 0 100% !important;
  width: 100% !important;
  max-width: 760px !important;
  padding: 48px 0 16px !important;
  margin: 0 auto !important;
  box-sizing: border-box !important;
}
body.single-product .ns-product-faq > h3 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.5rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin-bottom: 20px !important;
  letter-spacing: -0.015em !important;
}

/* ── WC Tabs — also full-width, correct order ────────────────── */
body.single-product div[id^="product-"] > .woocommerce-tabs {
  margin-top: 0 !important;
  padding-top: 24px !important;
  border-top: 1px solid var(--ns-border) !important;
}

/* ── Hide redundant "Description" h2 inside description tab ─── */
.woocommerce-Tabs-panel--description > h2:first-child {
  display: none !important;
}
/* Also hide "Additional information" h2 */
.woocommerce-Tabs-panel--additional_information > h2:first-child {
  display: none !important;
}

/* ── Double footer — hide GP built-in copyright bar ─────────── */
.site-footer .inside-site-info,
footer.site-info {
  display: none !important;
}

/* ── Trust badges — add green variant ───────────────────────── */
.ns-badge-green {
  background: #F0FDF4 !important;
  color: #16A34A !important;
  border: 1px solid #BBF7D0 !important;
}

/* ── Volume pricing (tier) block ────────────────────────────── */
.ns-tier-block {
  margin-bottom: 18px;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius);
  overflow: hidden;
  font-size: 0.84rem;
  background: #fff;
}
.ns-tier-block__head {
  display: flex;
  background: var(--ns-bg-alt);
  color: var(--ns-text-muted);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  padding: 7px 14px;
  border-bottom: 1px solid var(--ns-border);
  gap: 0;
}
.ns-tier-block__head span:first-child  { flex: 0 0 64px; }
.ns-tier-block__head span:nth-child(2) { flex: 1; }
.ns-tier-block__head span:last-child   { flex: 0 0 90px; text-align: right; }
.ns-tier-row {
  display: flex;
  align-items: center;
  padding: 9px 14px;
  border-top: 1px solid var(--ns-border);
}
.ns-tier-row:first-child { border-top: none; }
.ns-tier-qty   { flex: 0 0 64px; color: var(--ns-text); font-weight: 600; font-size: 0.82rem; }
.ns-tier-price { flex: 1; color: var(--ns-text); font-weight: 700; font-size: 0.92rem; }
.ns-tier-save  { flex: 0 0 90px; text-align: right; }
.ns-tier-base  { flex: 0 0 90px; text-align: right; color: var(--ns-text-muted); font-size: 0.72rem; }
.ns-save-pill {
  background: #F0FDF4;
  color: #16A34A;
  border: 1px solid #BBF7D0;
  border-radius: 50px;
  font-size: 0.7rem;
  font-weight: 700;
  padding: 2px 8px;
  white-space: nowrap;
}
.ns-tier-row--discount {
  background: #FAFFFE;
}
.ns-tier-row--discount .ns-tier-price {
  color: var(--ns-primary);
}

/* ── Cart icon in nav ────────────────────────────────────────── */
.ns-nav-cart {
  display: flex !important;
  align-items: center !important;
  padding: 0 !important;
}
.ns-nav-cart-link {
  display: flex !important;
  align-items: center !important;
  position: relative !important;
  padding: 0 12px !important;
  color: var(--ns-text, #181A2C) !important;
  text-decoration: none !important;
  line-height: 1 !important;
}
.ns-nav-cart-link:hover { opacity: 0.7; }
.ns-nav-cart-count {
  position: absolute !important;
  top: -8px !important;
  right: 2px !important;
  background: var(--ns-primary) !important;
  color: #fff !important;
  font-size: 0.6rem !important;
  font-weight: 700 !important;
  min-width: 16px !important;
  height: 16px !important;
  border-radius: 50px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 3px !important;
  line-height: 1 !important;
}

/* ── Compliance notice — now after form, not inside ─────────── */
.ns-compliance {
  margin-top: 12px !important;
}

/* ── ATC button — full width below qty for clarity ───────────── */
.woocommerce div.product form.cart {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  flex-wrap: nowrap !important;
}
.woocommerce div.product form.cart .quantity {
  flex-shrink: 0 !important;
}
.woocommerce div.product form.cart .single_add_to_cart_button {
  flex: 1 !important;
  text-align: center !important;
}

/* ── Price — stronger visual weight ──────────────────────────── */
.woocommerce div.product p.price,
.woocommerce div.product span.price {
  font-size: 2.2rem !important;
  letter-spacing: -0.02em !important;
  display: flex !important;
  align-items: baseline !important;
  gap: 4px !important;
}

/* ── Product title — tighten line-height for long names ──────── */
.woocommerce div.product .product_title {
  line-height: 1.05 !important;
  margin-bottom: 12px !important;
}

/* ── Short description — tighten vertical rhythm ────────────── */
.woocommerce div.product .woocommerce-product-details__short-description {
  margin-bottom: 14px !important;
}
.woocommerce div.product .woocommerce-product-details__short-description ul {
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
.woocommerce div.product .woocommerce-product-details__short-description ul li {
  display: flex !important;
  align-items: baseline !important;
  gap: 8px !important;
  padding: 4px 0 !important;
  font-size: 0.86rem !important;
  color: var(--ns-text-muted) !important;
  border-bottom: 1px solid var(--ns-border) !important;
}
.woocommerce div.product .woocommerce-product-details__short-description ul li:last-child {
  border-bottom: none !important;
}
.woocommerce div.product .woocommerce-product-details__short-description ul li strong {
  flex: 0 0 110px !important;
  font-size: 0.78rem !important;
  font-weight: 600 !important;
  color: var(--ns-text) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.03em !important;
}

/* ── WC Tabs — cleaner tab bar ───────────────────────────────── */
.woocommerce div.product .woocommerce-tabs ul.tabs {
  margin: 0 !important;
  padding: 0 !important;
  border: none !important;
  border-bottom: 2px solid var(--ns-border) !important;
  display: flex !important;
  gap: 0 !important;
  background: none !important;
}
.woocommerce div.product .woocommerce-tabs ul.tabs::before,
.woocommerce div.product .woocommerce-tabs ul.tabs::after { display: none !important; }
.woocommerce div.product .woocommerce-tabs ul.tabs li {
  background: none !important;
  border: none !important;
  border-radius: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  box-shadow: none !important;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li a {
  font-size: 0.85rem !important;
  font-weight: 600 !important;
  color: var(--ns-text-muted) !important;
  padding: 10px 20px !important;
  display: block !important;
  border-bottom: 2px solid transparent !important;
  margin-bottom: -2px !important;
  text-decoration: none !important;
  background: none !important;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a,
.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover {
  color: var(--ns-primary) !important;
  border-bottom-color: var(--ns-primary) !important;
  background: none !important;
}
.woocommerce div.product .woocommerce-tabs .panel {
  margin-top: 32px !important;
  padding: 0 !important;
  border: none !important;
  box-shadow: none !important;
}

/* ── Related products heading ────────────────────────────────── */
.woocommerce .related.products h2 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.5rem !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
}

/* ── Sticky cart — z-index and border polish ─────────────────── */
.ns-sticky-cart {
  z-index: 9999 !important;
  border-top: 2px solid var(--ns-primary) !important;
}

/* ── Gallery — ensure visible after flexslider init ─────────── */
body.single-product .woocommerce-product-gallery.woocommerce-product-gallery--initialized {
  opacity: 1 !important;
}
/* Fallback: fade in via animation if JS doesn't fire */
body.single-product .woocommerce-product-gallery {
  animation: ns-gallery-reveal 0.4s ease 0.5s both;
}
@keyframes ns-gallery-reveal {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ── Woo notices empty state ─────────────────────────────────── */
.woocommerce-notices-wrapper:empty { display: none !important; }

/* ── Reviews tab — minimal comment form ─────────────────────── */
#respond .comment-reply-title {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.2rem !important;
  font-weight: 700 !important;
}
#commentform textarea,
#commentform input[type="text"],
#commentform input[type="email"],
#commentform input[type="url"] {
  width: 100% !important;
  padding: 10px 12px !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: var(--ns-radius) !important;
  font-size: 0.9rem !important;
  color: var(--ns-text) !important;
  background: #fff !important;
  box-sizing: border-box !important;
  margin-bottom: 10px !important;
}
#commentform .form-submit input {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--ns-radius) !important;
  padding: 11px 24px !important;
  font-size: 0.9rem !important;
  font-weight: 700 !important;
  cursor: pointer !important;
}

/* ── Responsive refinements ──────────────────────────────────── */
@media (max-width: 860px) {
  body.single-product div[id^="product-"] > .ns-product-faq {
    max-width: 100% !important;
    padding: 32px 0 0 !important;
  }
  .ns-tier-block { font-size: 0.82rem; }
}

/* ============================================================
   PASS 2 — TARGETED REFINEMENTS
   ============================================================ */

/* Remove inside-article padding on product pages — main source of dead space */
body.single-product .inside-article {
  padding: 0 !important;
}

/* Short desc labels — use auto width + no-wrap, drop uppercase */
body.woocommerce.single-product .woocommerce-product-details__short-description ul,
.woocommerce div.product .woocommerce-product-details__short-description ul {
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
body.woocommerce.single-product .woocommerce-product-details__short-description ul li,
.woocommerce div.product .woocommerce-product-details__short-description ul li {
  display: flex !important;
  align-items: baseline !important;
  gap: 10px !important;
  padding: 5px 0 !important;
  font-size: 0.86rem !important;
  color: var(--ns-text-muted) !important;
  border-bottom: 1px solid var(--ns-border) !important;
}
body.woocommerce.single-product .woocommerce-product-details__short-description ul li:last-child,
.woocommerce div.product .woocommerce-product-details__short-description ul li:last-child {
  border-bottom: none !important;
}
body.woocommerce.single-product .woocommerce-product-details__short-description ul li strong,
.woocommerce div.product .woocommerce-product-details__short-description ul li strong {
  flex: 0 0 auto !important;
  min-width: 0 !important;
  max-width: none !important;
  white-space: nowrap !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
}
/* Also kill any inherited .ns-product-bullets rules that conflict */
.ns-product-bullets li {
  display: flex !important;
  align-items: baseline !important;
  gap: 10px !important;
}
.ns-product-bullets li strong {
  flex: 0 0 auto !important;
  min-width: 0 !important;
  white-space: nowrap !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
}

/* FAQ heading — higher specificity + !important on all props */
body.single-product .ns-product-faq h3,
body.single-product .ns-product-faq > h3 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.55rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin-bottom: 20px !important;
  letter-spacing: -0.015em !important;
  line-height: 1.1 !important;
}

/* Tighten top gap — reduce padding-top on product wrapper */
body.single-product div[id^="product-"] {
  padding-top: 20px !important;
}

/* Gallery sticky top — lower so it doesn't get cut by header */
body.single-product div[id^="product-"] > .woocommerce-product-gallery {
  top: 72px !important;
}

/* Image container — ensure no gap at top */
body.single-product .woocommerce-product-gallery__wrapper {
  border-radius: 12px !important;
  overflow: hidden !important;
  border: 1px solid var(--ns-border) !important;
  background: #f8f9fc !important;
}

/* ATC button — slight refinement */
.woocommerce div.product form.cart .single_add_to_cart_button {
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  font-size: 0.88rem !important;
}

/* Price — keep bdi inline so currency symbol + number are together */
.woocommerce div.product p.price bdi,
.woocommerce div.product span.price bdi {
  display: inline !important;
}

/* Spec table in Description tab — clean up */
.ns-spec-table-wrap {
  margin-bottom: 32px;
}
.ns-spec-table-wrap h3 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.2rem !important;
  font-weight: 700 !important;
  margin-bottom: 12px !important;
}
.ns-product-description h3 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.15rem !important;
  font-weight: 700 !important;
  margin: 28px 0 10px !important;
  color: var(--ns-text) !important;
}
.ns-product-description p,
.ns-product-description li {
  font-size: 0.9rem !important;
  line-height: 1.65 !important;
  color: var(--ns-text-muted) !important;
}

/* FAQ items — better visual separation */
.ns-faq {
  border-bottom: 1px solid var(--ns-border) !important;
}
.ns-faq:first-child {
  border-top: 1px solid var(--ns-border) !important;
}
.ns-faq__question {
  padding: 16px 0 !important;
  font-size: 0.92rem !important;
  font-weight: 600 !important;
}

/* Trust badges — tighter row, no overflow */
.ns-trust-badges {
  row-gap: 6px !important;
  column-gap: 5px !important;
}

/* Fix sticky gallery — stays visible over tabs content */
body.single-product div[id^="product-"] > .woocommerce-product-gallery {
  position: static !important;
  top: auto !important;
}


/* ============================================================
   V3 REFINEMENTS
   ============================================================ */

/* Compliance — slimmer, inline style, less alarming */
p.ns-compliance {
  font-size: 0.72rem !important;
  color: var(--ns-text-muted) !important;
  line-height: 1.5 !important;
  padding: 8px 0 !important;
  background: none !important;
  border: none !important;
  border-radius: 0 !important;
  margin-top: 8px !important;
  border-top: 1px solid var(--ns-border) !important;
}
p.ns-compliance strong { color: var(--ns-text-muted) !important; font-weight: 600 !important; }

/* Trust badges — 4 fit on one row, force single line on desktop */
@media (min-width: 860px) {
  .ns-trust-badges {
    flex-wrap: nowrap !important;
  }
}

/* Short desc — 3 clean bullets, no border lines needed */
.woocommerce div.product .woocommerce-product-details__short-description ul li {
  border-bottom: none !important;
  padding: 3px 0 !important;
  color: var(--ns-text) !important;
  font-size: 0.88rem !important;
}
.woocommerce div.product .woocommerce-product-details__short-description ul li strong {
  font-weight: 700 !important;
  color: var(--ns-text) !important;
}

/* FAQ — now below tabs, needs max-width and padding */
body.single-product .ns-product-faq {
  max-width: 800px !important;
  margin: 0 auto !important;
  padding: 48px 32px 32px !important;
}
@media (max-width: 860px) {
  body.single-product .ns-product-faq {
    padding: 32px 16px 24px !important;
  }
}

/* ============================================================
   UNDER-IMAGE INFO BLOCK (left gallery column, single product)
   ============================================================ */
.ns-under-image {
  margin-top: 14px;
  border: 1px solid var(--ns-border);
  border-radius: var(--ns-radius);
  overflow: hidden;
  background: #fff;
}
.ns-under-image__row {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  padding: 8px 14px;
  font-size: 0.78rem;
  color: var(--ns-text-muted);
  line-height: 1.45;
  border-bottom: 1px solid var(--ns-border);
}
.ns-under-image__row:last-child {
  border-bottom: none;
}
.ns-uic {
  font-size: 0.82rem;
  font-weight: 700;
  flex-shrink: 0;
  margin-top: 1px;
  color: #16A34A;
}
.ns-uic--muted {
  color: var(--ns-text-muted);
}
/* On mobile the gallery is full-width, under-image still fits */
@media (max-width: 860px) {
  .ns-under-image { margin-top: 12px; }
}

/* ============================================================
   FAQ ACCORDION — SITEWIDE FIXES
   ============================================================ */

/* 1. Hover/active text color — pink, not GP's default white */
.ns-faq__question:hover {
  color: var(--ns-accent, #D6346F) !important;
  background: var(--ns-primary-light, #F0F2FF) !important;
}
.ns-faq__question.active {
  color: var(--ns-primary, #4B5BD4) !important;
}

/* 2. Spacing inside question button: left indent + right clearance */
.ns-faq__question {
  padding-left: 14px !important;
  padding-right: 10px !important;
}

/* 3. Toggle icon — keep inside the button border, small pull-left */
.ns-faq__toggle {
  flex-shrink: 0 !important;
  margin-right: 0 !important;
  /* pull left relative to any padding it might have picked up */
  position: relative !important;
  right: 2px !important;
}

/* 4. FAQ accordion width — match surrounding content box */
.ns-faqs {
  width: 100% !important;
  box-sizing: border-box !important;
}
.ns-product-faq .ns-faqs,
.ns-faq-category .ns-faqs {
  width: 100% !important;
}

/* Answer text — consistent left indent to match question */
.ns-faq__answer {
  padding-left: 14px !important;
  padding-right: 10px !important;
}

/* ============================================================
   PRODUCT PAGE — FAQ SECTION WIDTH (matches tabs/spec table)
   ============================================================ */
body.single-product .ns-product-faq {
  max-width: none !important;
  padding: 48px 0 32px !important;
  margin: 0 !important;
  width: 100% !important;
}
body.single-product .ns-product-faq h3 {
  padding: 0 0 20px 0 !important;
  border-bottom: 2px solid var(--ns-border) !important;
  margin-bottom: 0 !important;
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.4rem !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  color: var(--ns-text) !important;
}
body.single-product .ns-product-faq .ns-faqs {
  margin-top: 0 !important;
  gap: 0 !important;
}
/* Flat style — match the Description tab aesthetic */
body.single-product .ns-product-faq .ns-faq {
  border-bottom: 1px solid var(--ns-border) !important;
  border-top: none !important;
}
body.single-product .ns-product-faq .ns-faq:first-child {
  border-top: none !important;
}
body.single-product .ns-product-faq .ns-faq__question {
  background: none !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 16px 10px 16px 14px !important;
  font-size: 0.9rem !important;
}
body.single-product .ns-product-faq .ns-faq__question:hover {
  background: var(--ns-bg-alt, #F5F6FF) !important;
  color: var(--ns-accent, #D6346F) !important;
}
body.single-product .ns-product-faq .ns-faq__question.active {
  background: var(--ns-bg-alt, #F5F6FF) !important;
  color: var(--ns-primary, #4B5BD4) !important;
}
body.single-product .ns-product-faq .ns-faq__answer {
  border: none !important;
  border-radius: 0 !important;
  background: var(--ns-bg-alt, #F5F6FF) !important;
  padding: 0 10px 16px 14px !important;
  border-bottom: 1px solid var(--ns-border) !important;
  margin-bottom: -1px !important;
}
@media (max-width: 860px) {
  body.single-product .ns-product-faq {
    padding: 32px 0 16px !important;
  }
}

/* ============================================================
   MY ACCOUNT — LOGIN / REGISTER PAGE (logged-out state)
   ============================================================ */

/* Content area — wider for two-column login+register layout */
body.woocommerce-account:not(.logged-in) .inside-article,
body.woocommerce-account:not(.logged-in) .entry-content {
  max-width: 900px !important;
  margin: 48px auto !important;
  padding: 0 !important;
}

/* Card shell wrapping login + register columns */
body.woocommerce-account:not(.logged-in) .woocommerce {
  background: #fff !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 14px !important;
  padding: 40px 48px !important;
  box-shadow: 0 4px 32px rgba(75, 91, 212, 0.08) !important;
}

/* Two-column grid: login left, register right */
.woocommerce .col2-set {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 48px !important;
  align-items: start !important;
}
.woocommerce .col2-set .col-1,
.woocommerce .col2-set .col-2 {
  width: 100% !important;
  float: none !important;
}

/* Column divider */
.woocommerce .col2-set .col-1 {
  padding-right: 24px !important;
  border-right: 1px solid var(--ns-border) !important;
}

/* Section headings */
body.woocommerce-account .woocommerce h2,
body.woocommerce-account .col2-set h2 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.5rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin: 0 0 20px 0 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.1 !important;
}

/* Form rows */
.woocommerce-form-row {
  margin-bottom: 14px !important;
}
.woocommerce-form-row label:not(.woocommerce-form__label-for-checkbox) {
  display: block !important;
  font-size: 0.75rem !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  margin-bottom: 6px !important;
}
.woocommerce-form-row .required {
  color: var(--ns-accent) !important;
  margin-left: 1px !important;
}

/* Inputs */
.woocommerce-Input--text,
.woocommerce-account .woocommerce input[type="text"],
.woocommerce-account .woocommerce input[type="email"],
.woocommerce-account .woocommerce input[type="password"] {
  width: 100% !important;
  height: 40px !important;
  padding: 0 12px !important;
  font-size: 0.875rem !important;
  font-family: 'Inter', sans-serif !important;
  color: var(--ns-text) !important;
  background: #FAFBFF !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 6px !important;
  box-shadow: none !important;
  transition: border-color 0.15s, box-shadow 0.15s !important;
  box-sizing: border-box !important;
}
.woocommerce-Input--text:focus,
.woocommerce-account .woocommerce input[type="text"]:focus,
.woocommerce-account .woocommerce input[type="email"]:focus,
.woocommerce-account .woocommerce input[type="password"]:focus {
  outline: none !important;
  border-color: var(--ns-primary) !important;
  background: #fff !important;
  box-shadow: 0 0 0 3px rgba(75, 91, 212, 0.12) !important;
}

/* Remember me row */
.woocommerce-form-login__rememberme {
  display: inline-flex !important;
  align-items: center !important;
  gap: 7px !important;
  font-size: 0.82rem !important;
  color: var(--ns-text-muted) !important;
}
.woocommerce-form__input-checkbox {
  width: 15px !important;
  height: 15px !important;
  accent-color: var(--ns-primary) !important;
  cursor: pointer !important;
}

/* Row containing "remember me" + submit button */
.woocommerce-form-login p.form-row,
.woocommerce-form-register p.form-row:last-of-type {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
  margin-top: 20px !important;
}

/* Submit buttons */
.woocommerce-form-login__submit,
.woocommerce-form-register__submit,
.woocommerce-account .woocommerce button[type="submit"],
.woocommerce-account .woocommerce input[type="submit"] {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 10px 22px !important;
  font-size: 0.84rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.05em !important;
  text-transform: uppercase !important;
  cursor: pointer !important;
  transition: background 0.15s !important;
  white-space: nowrap !important;
}
.woocommerce-form-login__submit:hover,
.woocommerce-form-register__submit:hover,
.woocommerce-account .woocommerce button[type="submit"]:hover,
.woocommerce-account .woocommerce input[type="submit"]:hover {
  background: var(--ns-accent) !important;
  color: #fff !important;
}

/* Lost password */
.woocommerce-LostPassword {
  margin-top: 14px !important;
}
.woocommerce-LostPassword a {
  font-size: 0.8rem !important;
  color: var(--ns-primary) !important;
}
.woocommerce-LostPassword a:hover {
  color: var(--ns-accent) !important;
}

/* WC notices on account page */
.woocommerce-notices-wrapper .woocommerce-message {
  background: #F0FDF4 !important;
  border: 1px solid #BBF7D0 !important;
  border-top: 3px solid #16A34A !important;
  color: #16A34A !important;
  border-radius: 6px !important;
  padding: 12px 16px !important;
  margin-bottom: 20px !important;
}
.woocommerce-notices-wrapper .woocommerce-error {
  background: #FEF2F2 !important;
  border: 1px solid #FECACA !important;
  border-top: 3px solid #DC2626 !important;
  color: #DC2626 !important;
  border-radius: 6px !important;
  padding: 12px 16px !important;
  margin-bottom: 20px !important;
}

/* Privacy policy note under registration */
.woocommerce-privacy-policy-text {
  font-size: 0.75rem !important;
  color: var(--ns-text-muted) !important;
  margin-top: 10px !important;
  line-height: 1.5 !important;
}
.woocommerce-privacy-policy-text a {
  color: var(--ns-primary) !important;
}

/* ============================================================
   MY ACCOUNT — LOGGED IN DASHBOARD
   ============================================================ */

body.woocommerce-account.logged-in .inside-article {
  max-width: 1000px !important;
  margin: 40px auto !important;
  padding: 0 !important;
}

/* Side nav + content flex layout */
body.woocommerce-account.logged-in .woocommerce {
  display: flex !important;
  gap: 32px !important;
  align-items: flex-start !important;
}
.woocommerce-MyAccount-navigation {
  flex: 0 0 200px !important;
  width: 200px !important;
  float: none !important;
}
.woocommerce-MyAccount-content {
  flex: 1 !important;
  width: auto !important;
  float: none !important;
  min-width: 0 !important;
}

/* Nav list */
.woocommerce-MyAccount-navigation ul {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 8px !important;
  overflow: hidden !important;
}
.woocommerce-MyAccount-navigation ul li {
  border-bottom: 1px solid var(--ns-border) !important;
}
.woocommerce-MyAccount-navigation ul li:last-child {
  border-bottom: none !important;
}
.woocommerce-MyAccount-navigation ul li a {
  display: block !important;
  padding: 10px 14px !important;
  font-size: 0.82rem !important;
  font-weight: 600 !important;
  color: var(--ns-text-muted) !important;
  text-decoration: none !important;
  transition: all 0.12s !important;
}
.woocommerce-MyAccount-navigation ul li a:hover {
  color: var(--ns-accent) !important;
  background: var(--ns-bg-alt, #F5F6FF) !important;
}
.woocommerce-MyAccount-navigation ul li.is-active a,
.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard a {
  color: var(--ns-primary) !important;
  background: var(--ns-bg-alt, #F5F6FF) !important;
  font-weight: 700 !important;
}

/* Content headings */
.woocommerce-MyAccount-content h2,
.woocommerce-MyAccount-content h3 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  letter-spacing: -0.01em !important;
}

/* Orders / downloads tables */
.woocommerce-account table.shop_table {
  width: 100% !important;
  border-collapse: collapse !important;
  font-size: 0.84rem !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 8px !important;
  overflow: hidden !important;
}
.woocommerce-account table.shop_table thead th {
  background: var(--ns-bg-alt, #F5F6FF) !important;
  color: var(--ns-text) !important;
  font-size: 0.7rem !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  padding: 10px 14px !important;
  border-bottom: 2px solid var(--ns-border) !important;
}
.woocommerce-account table.shop_table tbody td {
  padding: 10px 14px !important;
  border-bottom: 1px solid var(--ns-border) !important;
  color: var(--ns-text-muted) !important;
}
.woocommerce-account table.shop_table tbody tr:last-child td {
  border-bottom: none !important;
}

/* Account links */
.woocommerce-MyAccount-content a {
  color: var(--ns-primary) !important;
}
.woocommerce-MyAccount-content a:hover {
  color: var(--ns-accent) !important;
}

/* ============================================================
   AFFILIATES — REMOVE SIDEBAR, FULL-WIDTH CONTENT
   ============================================================ */

body.page-id-18 .widget-area,
body.page-id-18 .sidebar-primary,
body.page-id-18 aside {
  display: none !important;
}
body.page-id-18 .content-area,
body.page-id-18 .site-main {
  width: 100% !important;
  max-width: 100% !important;
  float: none !important;
}

/* ============================================================
   SLICEWP — AFFILIATE AREA (dashboard, registration, stats)
   ============================================================ */

.slicewp-wrap {
  font-family: 'Inter', sans-serif !important;
  color: var(--ns-text) !important;
  max-width: 1000px !important;
  margin: 0 auto !important;
}

/* Headings */
.slicewp-wrap h2,
.slicewp-wrap h3 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  letter-spacing: -0.01em !important;
  line-height: 1.1 !important;
}
.slicewp-wrap h2 { font-size: 1.6rem !important; margin-bottom: 24px !important; }
.slicewp-wrap h3 { font-size: 1.2rem !important; margin-bottom: 16px !important; }

/* Navigation tabs */
.slicewp-wrap .slicewp-nav,
.slicewp-wrap nav {
  display: flex !important;
  border-bottom: 2px solid var(--ns-border) !important;
  margin-bottom: 32px !important;
  gap: 0 !important;
  flex-wrap: wrap !important;
  list-style: none !important;
  padding: 0 !important;
}
.slicewp-wrap .slicewp-nav a,
.slicewp-wrap nav a {
  display: inline-block !important;
  padding: 10px 18px !important;
  font-size: 0.8rem !important;
  font-weight: 700 !important;
  color: var(--ns-text-muted) !important;
  text-decoration: none !important;
  border-bottom: 2px solid transparent !important;
  margin-bottom: -2px !important;
  transition: all 0.12s !important;
  text-transform: uppercase !important;
  letter-spacing: 0.04em !important;
}
.slicewp-wrap .slicewp-nav a:hover,
.slicewp-wrap nav a:hover {
  color: var(--ns-accent) !important;
  border-bottom-color: var(--ns-accent) !important;
}
.slicewp-wrap .slicewp-nav a.slicewp-active,
.slicewp-wrap .slicewp-nav li.slicewp-current a,
.slicewp-wrap nav a.slicewp-active,
.slicewp-wrap nav li.slicewp-current a {
  color: var(--ns-primary) !important;
  border-bottom-color: var(--ns-primary) !important;
}

/* Stats cards grid */
.slicewp-affiliate-dashboard-stats,
.slicewp-affiliate-area-stats,
.slicewp-cards-row {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)) !important;
  gap: 14px !important;
  margin-bottom: 32px !important;
}

/* Individual stat card */
.slicewp-card,
.slicewp-affiliate-stat-box {
  background: #fff !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 10px !important;
  padding: 18px 16px !important;
  box-shadow: 0 2px 8px rgba(75, 91, 212, 0.05) !important;
}
.slicewp-card-title,
.slicewp-affiliate-stat-box-label,
.slicewp-stat-label {
  font-size: 0.68rem !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.06em !important;
  color: var(--ns-text-muted) !important;
  margin-bottom: 6px !important;
  display: block !important;
}
.slicewp-card-value,
.slicewp-affiliate-stat-box-value,
.slicewp-stat-value {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 2rem !important;
  font-weight: 800 !important;
  color: var(--ns-primary) !important;
  line-height: 1 !important;
  display: block !important;
}

/* Referral URL box */
.slicewp-affiliate-url-wrap,
.slicewp-referral-url-section {
  background: var(--ns-bg-alt, #F5F6FF) !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 8px !important;
  padding: 16px 20px !important;
  margin-bottom: 28px !important;
}
.slicewp-affiliate-url-wrap label,
.slicewp-referral-url-section label {
  display: block !important;
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  color: var(--ns-text-muted) !important;
  margin-bottom: 8px !important;
}
.slicewp-affiliate-url-wrap-inner {
  display: flex !important;
  gap: 10px !important;
  align-items: center !important;
}
.slicewp-affiliate-url-wrap input[type="text"],
.slicewp-affiliate-url-wrap-inner input {
  flex: 1 !important;
  background: #fff !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 6px !important;
  padding: 8px 12px !important;
  font-size: 0.8rem !important;
  font-family: monospace !important;
  color: var(--ns-text) !important;
  min-width: 0 !important;
}
.slicewp-copy-affiliate-url,
button.slicewp-copy-affiliate-url {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 9px 16px !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  cursor: pointer !important;
  white-space: nowrap !important;
  transition: background 0.15s !important;
  flex-shrink: 0 !important;
}
.slicewp-copy-affiliate-url:hover {
  background: var(--ns-accent) !important;
  color: #fff !important;
}

/* Tables */
.slicewp-table-wrapper { overflow-x: auto !important; margin-bottom: 24px !important; }
.slicewp-table {
  width: 100% !important;
  border-collapse: collapse !important;
  font-size: 0.83rem !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 8px !important;
  overflow: hidden !important;
}
.slicewp-table thead tr th {
  background: var(--ns-bg-alt, #F5F6FF) !important;
  color: var(--ns-text) !important;
  font-size: 0.69rem !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  padding: 10px 14px !important;
  border-bottom: 2px solid var(--ns-border) !important;
  text-align: left !important;
  white-space: nowrap !important;
}
.slicewp-table tbody tr td {
  padding: 10px 14px !important;
  border-bottom: 1px solid var(--ns-border) !important;
  color: var(--ns-text-muted) !important;
  vertical-align: middle !important;
}
.slicewp-table tbody tr:last-child td { border-bottom: none !important; }
.slicewp-table tbody tr:hover td { background: var(--ns-bg-alt, #F5F6FF) !important; }

/* Commission status badges */
.slicewp-commission-status {
  display: inline-block !important;
  padding: 2px 9px !important;
  border-radius: 50px !important;
  font-size: 0.67rem !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.04em !important;
}
.slicewp-commission-status-approved {
  background: #F0FDF4 !important;
  color: #16A34A !important;
  border: 1px solid #BBF7D0 !important;
}
.slicewp-commission-status-pending {
  background: #FFFBEB !important;
  color: #D97706 !important;
  border: 1px solid #FDE68A !important;
}
.slicewp-commission-status-rejected,
.slicewp-commission-status-refunded {
  background: #FEF2F2 !important;
  color: #DC2626 !important;
  border: 1px solid #FECACA !important;
}
.slicewp-commission-status-unpaid {
  background: #F5F3FF !important;
  color: #7C3AED !important;
  border: 1px solid #DDD6FE !important;
}

/* Affiliate registration form */
.slicewp-affiliate-registration-form-wrap,
.slicewp-form-wrap {
  background: #fff !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 12px !important;
  padding: 36px 40px !important;
  max-width: 540px !important;
  margin: 0 auto !important;
  box-shadow: 0 4px 24px rgba(75, 91, 212, 0.07) !important;
}

/* SliceWP form fields */
.slicewp-field-wrap,
.slicewp-form-field {
  margin-bottom: 16px !important;
}
.slicewp-field-wrap label,
.slicewp-form label,
.slicewp-wrap label {
  display: block !important;
  font-size: 0.75rem !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  margin-bottom: 6px !important;
}
.slicewp-field-wrap input[type="text"],
.slicewp-field-wrap input[type="email"],
.slicewp-field-wrap input[type="password"],
.slicewp-field-wrap input[type="url"],
.slicewp-field-wrap input[type="number"],
.slicewp-field-wrap textarea,
.slicewp-field-wrap select {
  width: 100% !important;
  padding: 9px 12px !important;
  font-size: 0.875rem !important;
  font-family: 'Inter', sans-serif !important;
  color: var(--ns-text) !important;
  background: #FAFBFF !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 6px !important;
  box-sizing: border-box !important;
  transition: border-color 0.15s, box-shadow 0.15s !important;
}
.slicewp-field-wrap input:focus,
.slicewp-field-wrap textarea:focus,
.slicewp-field-wrap select:focus {
  outline: none !important;
  border-color: var(--ns-primary) !important;
  background: #fff !important;
  box-shadow: 0 0 0 3px rgba(75, 91, 212, 0.12) !important;
}
.slicewp-field-wrap textarea {
  min-height: 90px !important;
  resize: vertical !important;
}
.slicewp-field-description {
  font-size: 0.75rem !important;
  color: var(--ns-text-muted) !important;
  margin-top: 5px !important;
}

/* Submit + action buttons */
.slicewp-button,
.slicewp-submit,
.slicewp-form-wrap input[type="submit"],
.slicewp-form-wrap button[type="submit"],
.slicewp-wrap input[type="submit"],
.slicewp-wrap button[type="submit"] {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 11px 26px !important;
  font-size: 0.86rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.05em !important;
  text-transform: uppercase !important;
  cursor: pointer !important;
  transition: background 0.15s !important;
  display: inline-block !important;
}
.slicewp-button:hover,
.slicewp-submit:hover,
.slicewp-form-wrap input[type="submit"]:hover,
.slicewp-form-wrap button[type="submit"]:hover,
.slicewp-wrap input[type="submit"]:hover,
.slicewp-wrap button[type="submit"]:hover {
  background: var(--ns-accent) !important;
  color: #fff !important;
}

/* Notices */
.slicewp-notice,
.slicewp-message,
.slicewp-wrap .slicewp-alert {
  padding: 12px 16px !important;
  border-radius: 6px !important;
  font-size: 0.83rem !important;
  margin-bottom: 20px !important;
  line-height: 1.5 !important;
}
.slicewp-notice-success,
.slicewp-alert-success {
  background: #F0FDF4 !important;
  color: #16A34A !important;
  border: 1px solid #BBF7D0 !important;
}
.slicewp-notice-error,
.slicewp-alert-error {
  background: #FEF2F2 !important;
  color: #DC2626 !important;
  border: 1px solid #FECACA !important;
}
.slicewp-notice-info,
.slicewp-alert-info {
  background: var(--ns-bg-alt, #F5F6FF) !important;
  color: var(--ns-primary) !important;
  border: 1px solid rgba(75, 91, 212, 0.2) !important;
}

/* Creatives (banners/text ads) */
.slicewp-creative-wrap {
  border: 1px solid var(--ns-border) !important;
  border-radius: 8px !important;
  overflow: hidden !important;
  margin-bottom: 16px !important;
}
.slicewp-creative-wrap img { display: block; width: 100%; }
.slicewp-creative-code {
  padding: 12px 14px !important;
  background: var(--ns-bg-alt, #F5F6FF) !important;
}
.slicewp-creative-code textarea {
  width: 100% !important;
  font-size: 0.72rem !important;
  font-family: monospace !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 4px !important;
  padding: 8px !important;
  background: #fff !important;
  color: var(--ns-text-muted) !important;
  resize: none !important;
}

/* Pagination */
.slicewp-pagination {
  display: flex !important;
  gap: 5px !important;
  margin-top: 16px !important;
  align-items: center !important;
}
.slicewp-pagination a,
.slicewp-pagination span {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 30px !important;
  height: 30px !important;
  padding: 0 8px !important;
  border-radius: 5px !important;
  border: 1px solid var(--ns-border) !important;
  font-size: 0.78rem !important;
  font-weight: 600 !important;
  color: var(--ns-text-muted) !important;
  text-decoration: none !important;
  transition: all 0.12s !important;
}
.slicewp-pagination a:hover {
  color: var(--ns-accent) !important;
  border-color: var(--ns-accent) !important;
}
.slicewp-pagination .slicewp-page-current {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border-color: var(--ns-primary) !important;
}

/* "Not yet an affiliate" / login prompt */
.slicewp-affiliate-area-login-prompt,
.slicewp-not-affiliate-notice {
  background: #fff !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 12px !important;
  padding: 40px !important;
  text-align: center !important;
  max-width: 480px !important;
  margin: 0 auto !important;
  box-shadow: 0 4px 24px rgba(75, 91, 212, 0.07) !important;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 760px) {
  body.woocommerce-account:not(.logged-in) .woocommerce {
    padding: 24px 20px !important;
  }
  .woocommerce .col2-set {
    grid-template-columns: 1fr !important;
    gap: 32px !important;
  }
  .woocommerce .col2-set .col-1 {
    padding-right: 0 !important;
    border-right: none !important;
    border-bottom: 1px solid var(--ns-border) !important;
    padding-bottom: 32px !important;
  }
  body.woocommerce-account.logged-in .woocommerce {
    flex-direction: column !important;
  }
  .woocommerce-MyAccount-navigation {
    flex: none !important;
    width: 100% !important;
  }
  .slicewp-affiliate-registration-form-wrap,
  .slicewp-form-wrap {
    padding: 24px 20px !important;
  }
  .slicewp-affiliate-dashboard-stats,
  .slicewp-cards-row {
    grid-template-columns: 1fr 1fr !important;
  }
  .slicewp-affiliate-url-wrap-inner {
    flex-direction: column !important;
    align-items: stretch !important;
  }
}
@media (max-width: 480px) {
  .slicewp-affiliate-dashboard-stats,
  .slicewp-cards-row {
    grid-template-columns: 1fr !important;
  }
}

/* ============================================================
   AFFILIATE PAGE — PROGRAMME INTRO BLOCK
   ============================================================ */
.ns-affiliate-intro {
  text-align: center;
  padding: 48px 0 36px;
  margin-bottom: 8px;
}
.ns-affiliate-intro__title {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 2.4rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  letter-spacing: -0.02em !important;
  margin: 0 0 10px !important;
  line-height: 1 !important;
}
.ns-affiliate-intro__sub {
  font-size: 1rem !important;
  color: var(--ns-text-muted) !important;
  max-width: 480px !important;
  margin: 0 auto 28px !important;
  line-height: 1.55 !important;
}
.ns-affiliate-intro__pills {
  display: flex;
  justify-content: center;
  gap: 10px;
  flex-wrap: wrap;
}
.ns-aff-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: var(--ns-bg-alt, #F5F6FF);
  border: 1px solid var(--ns-border);
  border-radius: 50px;
  padding: 6px 16px;
  font-size: 0.82rem;
  color: var(--ns-text-muted);
}
.ns-aff-pill strong {
  color: var(--ns-primary);
  font-weight: 700;
}
@media (max-width: 600px) {
  .ns-affiliate-intro { padding: 32px 0 24px; }
  .ns-affiliate-intro__title { font-size: 1.8rem !important; }
}

/* ============================================================
   SLICEWP — CORRECTED CLASS TARGETS (actual rendered classes)
   ============================================================ */

/* Form shell */
.slicewp-form {
  font-family: 'Inter', sans-serif !important;
}

/* Field wrapper */
.slicewp-field-wrapper {
  margin-bottom: 16px !important;
}

/* Label row */
.slicewp-field-label-wrapper {
  margin-bottom: 6px !important;
}
.slicewp-field-label-wrapper label {
  display: block !important;
  font-size: 0.75rem !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  margin-bottom: 0 !important;
}
.slicewp-field-required-marker {
  color: var(--ns-accent) !important;
  margin-left: 2px !important;
}

/* Input inner — make full-width */
.slicewp-field-inner {
  width: 100% !important;
}
.slicewp-field-inner input[type="text"],
.slicewp-field-inner input[type="email"],
.slicewp-field-inner input[type="password"],
.slicewp-field-inner input[type="url"],
.slicewp-field-inner input[type="number"],
.slicewp-field-inner textarea,
.slicewp-field-inner select {
  width: 100% !important;
  padding: 9px 12px !important;
  font-size: 0.875rem !important;
  font-family: 'Inter', sans-serif !important;
  color: var(--ns-text) !important;
  background: #FAFBFF !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 6px !important;
  box-sizing: border-box !important;
  transition: border-color 0.15s, box-shadow 0.15s !important;
}
.slicewp-field-inner input:focus,
.slicewp-field-inner textarea:focus,
.slicewp-field-inner select:focus {
  outline: none !important;
  border-color: var(--ns-primary) !important;
  background: #fff !important;
  box-shadow: 0 0 0 3px rgba(75, 91, 212, 0.12) !important;
}

/* Password show/hide wrapper */
.slicewp-field-input-password {
  position: relative !important;
  display: flex !important;
  align-items: center !important;
}
.slicewp-field-input-password input {
  flex: 1 !important;
  padding-right: 40px !important;
}
.slicewp-show-hide-password {
  position: absolute !important;
  right: 10px !important;
  color: var(--ns-text-muted) !important;
  display: flex !important;
  align-items: center !important;
}
.slicewp-show-hide-password svg {
  width: 18px !important;
  height: 18px !important;
}

/* Primary action button */
.slicewp-button-primary {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 11px 26px !important;
  font-size: 0.86rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.05em !important;
  text-transform: uppercase !important;
  cursor: pointer !important;
  transition: background 0.15s !important;
  display: inline-block !important;
  margin-top: 8px !important;
  font-family: 'Inter', sans-serif !important;
}
.slicewp-button-primary:hover {
  background: var(--ns-accent) !important;
  color: #fff !important;
}

/* Login form card (unauthenticated affiliate area) */
#slicewp-affiliate-login-form {
  background: #fff !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 12px !important;
  padding: 36px 40px !important;
  max-width: 460px !important;
  margin: 0 auto !important;
  box-shadow: 0 4px 24px rgba(75, 91, 212, 0.07) !important;
}

/* Registration form card */
#slicewp-affiliate-registration-form {
  background: #fff !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 12px !important;
  padding: 36px 40px !important;
  max-width: 520px !important;
  margin: 0 auto !important;
  box-shadow: 0 4px 24px rgba(75, 91, 212, 0.07) !important;
}

@media (max-width: 600px) {
  #slicewp-affiliate-login-form,
  #slicewp-affiliate-registration-form {
    padding: 24px 20px !important;
  }
}

/* ============================================================
   AFFILIATE REGISTRATION PAGE — TERMS + FORM LAYOUT
   ============================================================ */

/* Page wrapper — limit width */
body.page-id-30 .inside-article,
body.page-id-30 .entry-content {
  max-width: 740px !important;
  margin: 0 auto !important;
  padding: 0 !important;
}

/* Header block */
.ns-aff-reg-header {
  text-align: center;
  padding: 48px 0 36px;
}
.ns-aff-reg-title {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 2.2rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  letter-spacing: -0.02em !important;
  margin: 0 0 10px !important;
  line-height: 1.05 !important;
}
.ns-aff-reg-sub {
  font-size: 0.95rem !important;
  color: var(--ns-text-muted) !important;
  max-width: 500px !important;
  margin: 0 auto 24px !important;
  line-height: 1.55 !important;
}
.ns-aff-reg-pills {
  display: flex;
  justify-content: center;
  gap: 8px;
  flex-wrap: wrap;
}

/* Terms block */
.ns-terms-wrap {
  background: #fff;
  border: 1px solid var(--ns-border);
  border-radius: 12px;
  padding: 32px 36px;
  margin-bottom: 32px;
}
.ns-terms-heading {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.25rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin: 0 0 6px !important;
  letter-spacing: -0.01em !important;
}
.ns-terms-intro-line {
  font-size: 0.82rem !important;
  color: var(--ns-text-muted) !important;
  margin: 0 0 24px !important;
  padding-bottom: 20px !important;
  border-bottom: 1px solid var(--ns-border) !important;
}

/* Scrollable terms body */
.ns-terms-body {
  max-height: 360px;
  overflow-y: auto;
  padding-right: 8px;
  scrollbar-width: thin;
  scrollbar-color: var(--ns-border) transparent;
}
.ns-terms-body::-webkit-scrollbar { width: 5px; }
.ns-terms-body::-webkit-scrollbar-track { background: transparent; }
.ns-terms-body::-webkit-scrollbar-thumb { background: var(--ns-border); border-radius: 3px; }

.ns-terms-section {
  margin-bottom: 20px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--ns-border);
}
.ns-terms-section:last-child {
  border-bottom: none;
  margin-bottom: 0;
  padding-bottom: 0;
}
.ns-terms-section h4 {
  font-size: 0.8rem !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.04em !important;
  color: var(--ns-text) !important;
  margin: 0 0 8px !important;
}
.ns-terms-section p,
.ns-terms-section li {
  font-size: 0.83rem !important;
  color: var(--ns-text-muted) !important;
  line-height: 1.6 !important;
  margin: 0 0 6px !important;
}
.ns-terms-section ul {
  margin: 6px 0 0 0 !important;
  padding-left: 18px !important;
}
.ns-terms-section li { margin: 4px 0 !important; }
.ns-terms-section strong { color: var(--ns-text) !important; font-weight: 700 !important; }

/* Registration form wrap */
.ns-reg-form-wrap {
  background: #fff;
  border: 1px solid var(--ns-border);
  border-radius: 12px;
  padding: 32px 36px;
  box-shadow: 0 4px 24px rgba(75, 91, 212, 0.07);
}
.ns-reg-agree-note {
  font-size: 0.8rem !important;
  color: var(--ns-text-muted) !important;
  background: var(--ns-bg-alt, #F5F6FF) !important;
  border-left: 3px solid var(--ns-primary) !important;
  padding: 10px 14px !important;
  border-radius: 0 6px 6px 0 !important;
  margin: 0 0 24px !important;
  line-height: 1.5 !important;
}

/* Override SliceWP card/form inside the page wrap — no double card */
.ns-reg-form-wrap #slicewp-affiliate-register-form {
  background: none !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  max-width: none !important;
  box-shadow: none !important;
}

/* Register CTA on affiliates login page */
.ns-aff-register-cta {
  text-align: center;
  margin-top: 28px;
  padding-top: 24px;
  border-top: 1px solid var(--ns-border);
}
.ns-aff-register-cta p {
  font-size: 0.88rem !important;
  color: var(--ns-text-muted) !important;
  margin: 0 !important;
}
.ns-aff-register-link {
  color: var(--ns-primary) !important;
  font-weight: 700 !important;
  text-decoration: none !important;
}
.ns-aff-register-link:hover {
  color: var(--ns-accent) !important;
}

/* Remove sidebar from registration page too */
body.page-id-30 .widget-area,
body.page-id-30 .sidebar-primary,
body.page-id-30 aside {
  display: none !important;
}
body.page-id-30 .content-area,
body.page-id-30 .site-main {
  width: 100% !important;
  max-width: 100% !important;
  float: none !important;
}

@media (max-width: 640px) {
  .ns-aff-reg-header { padding: 32px 0 24px; }
  .ns-aff-reg-title { font-size: 1.7rem !important; }
  .ns-terms-wrap, .ns-reg-form-wrap { padding: 24px 20px; }
  .ns-terms-body { max-height: 280px; }
}

/* ============================================================
   SITE LOGO
   ============================================================ */
.custom-logo-link img.custom-logo,
.site-logo img {
  height: 36px !important;
  width: auto !important;
  display: block !important;
}
@media (max-width: 768px) {
  .custom-logo-link img.custom-logo,
  .site-logo img {
    height: 30px !important;
  }
}

/* Hide site title text — logo image is used instead */
.site-branding .main-title,
.site-branding .site-description {
  display: none !important;
}

/* ============================================================
   FUNNELKIT CHECKOUT — FLOATING LABEL FIXES
   ============================================================ */

/* Force label to float top for SELECT fields (always have a value) */
#wfacp-e-form p.wfacp-form-control-wrapper.wfacp-anim-wrap:has(select) label.wfacp-form-control-label:not(.radio):not(.checkbox) {
  top: 6px !important;
  font-size: 11px !important;
  background: transparent !important;
  bottom: auto !important;
  margin-top: 0 !important;
  line-height: 1.3 !important;
}

/* Ensure select value text has enough top padding so it doesn't overlap the label */
#wfacp-e-form p.wfacp-form-control-wrapper.wfacp-anim-wrap select.wfacp-form-control {
  padding-top: 18px !important;
  height: auto !important;
  min-height: 52px !important;
}

/* General input padding so filled text clears the floating label */
#wfacp-e-form p.wfacp-form-control-wrapper.wfacp-anim-wrap input.wfacp-form-control {
  padding-top: 16px !important;
}

/* ============================================================
   CHECKOUT — REMOVE EMPTY SPACE UNDER SUBTOTAL / TOTAL
   ============================================================ */

/* Hide empty fee rows and zero-value rows in checkout totals */
#wfacp-e-form .wfacp_order_summary table tfoot tr:empty,
#wfacp-e-form .shop_table tfoot .cart-discount:empty,
#wfacp-e-form .shop_table tfoot tr td:empty + th:empty {
  display: none !important;
}

/* Suppress WPLoyalty empty redeem points row if no points available */
#wfacp-e-form .wfacp_order_summary .woocommerce-order-subtotals:empty {
  display: none !important;
}

/* Hide empty coupon row in checkout order summary */
#wfacp-e-form .wfacp-coupon-section:empty {
  display: none !important;
}

/* Remove extra gap below the order summary totals table */
#wfacp-e-form .wfacp_order_summary table.shop_table tfoot {
  border-top: 1px solid var(--ns-border) !important;
}

/* ============================================================
   CART — UNIT LABEL + HIDE SHORT DESCRIPTION
   ============================================================ */

/* Hide the short description text that bleeds into cart item display */
.fkcart-attr-wrap .fkcart-attr-key[data-attr-key="variation-Mechanism"],
.fkcart-attr-wrap .fkcart-attr-key[data-attr-key="variation-Format"],
.fkcart-attr-wrap .fkcart-attr-key[data-attr-key="variation-Included"] {
  display: none !important;
}
.fkcart-attr-wrap:has(.fkcart-attr-key[data-attr-key="variation-Mechanism"]) {
  display: none !important;
}

/* WC item meta in order summary — hide if it contains the bullet content */
.wfacp_order_summary_item_name ~ dl.variation dt.variation-Mechanism,
.wfacp_order_summary_item_name ~ dl.variation dd.variation-Mechanism,
.wfacp_order_summary_item_name ~ dl.variation dt.variation-Format,
.wfacp_order_summary_item_name ~ dl.variation dd.variation-Format,
.wfacp_order_summary_item_name ~ dl.variation dt.variation-Included,
.wfacp_order_summary_item_name ~ dl.variation dd.variation-Included {
  display: none !important;
}

/* Unit label display in cart/checkout */
.ns-cart-unit-label {
  display: block;
  font-size: 0.8rem;
  color: var(--ns-text-muted);
  margin-top: 4px;
}

/* WC item meta clean styling */
.wc-item-meta {
  font-size: 0.8rem !important;
  color: var(--ns-text-muted) !important;
  margin-top: 4px !important;
  list-style: none !important;
  padding: 0 !important;
}
.wc-item-meta .wc-item-meta-label {
  font-weight: 700 !important;
  color: var(--ns-text) !important;
}

/* ============================================================
   CHECKOUT FORM — GENERAL SPACING FIXES
   ============================================================ */

/* Reduce excess top margin on checkout sections */
#wfacp-e-form .wfacp-comm-wrapper .wfacp-inside .wfacp-section-heading {
  margin-top: 20px !important;
  margin-bottom: 12px !important;
}

/* Tighten gap between form rows */
#wfacp-e-form .wfacp_main_form.woocommerce p.form-row {
  margin-bottom: 10px !important;
}

/* Remove ghost padding at bottom of order summary */
#wfacp-e-form .wfacp_order_summary .wfacp_order_summary_container {
  padding-bottom: 0 !important;
}

/* ============================================================
   CART PAGE — SPACING
   ============================================================ */

/* WC default cart table spacing */
.woocommerce-cart table.cart td,
.woocommerce-cart table.cart th {
  padding: 12px 16px !important;
  vertical-align: middle !important;
}

/* ============================================================
   FUNNELKIT CHECKOUT — LABELS ABOVE FIELDS (clean, no overlap)
   ============================================================ */

/* Make labels static — sit above the field, not floating inside */
#wfacp-e-form label.wfacp-form-control-label:not(.radio):not(.checkbox):not(.wfacp-terms-conditions) {
  position: static !important;
  display: block !important;
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  margin: 0 0 5px 0 !important;
  background: transparent !important;
  transform: none !important;
  transition: none !important;
  pointer-events: auto !important;
  overflow: visible !important;
  white-space: normal !important;
  text-overflow: clip !important;
  z-index: auto !important;
  line-height: 1.2 !important;
  top: auto !important;
  bottom: auto !important;
  left: auto !important;
  right: auto !important;
  width: auto !important;
}

/* Field wrappers — stack label above input using flex */
#wfacp-e-form p.wfacp-form-control-wrapper.wfacp-anim-wrap {
  display: flex !important;
  flex-direction: column !important;
  justify-content: flex-start !important;
  padding-top: 0 !important;
}

/* Remove extra top padding from inputs since label is now above */
#wfacp-e-form p.wfacp-form-control-wrapper.wfacp-anim-wrap input.wfacp-form-control,
#wfacp-e-form p.wfacp-form-control-wrapper.wfacp-anim-wrap select.wfacp-form-control,
#wfacp-e-form p.wfacp-form-control-wrapper.wfacp-anim-wrap textarea.wfacp-form-control {
  padding-top: 10px !important;
  padding-bottom: 10px !important;
  height: 44px !important;
  margin-top: 0 !important;
}

/* Required asterisk */
#wfacp-e-form label.wfacp-form-control-label abbr.required {
  color: var(--ns-accent) !important;
  margin-left: 2px !important;
}

/* Inputs — NS brand styling */
#wfacp-e-form .wfacp_main_form input[type="text"],
#wfacp-e-form .wfacp_main_form input[type="email"],
#wfacp-e-form .wfacp_main_form input[type="tel"],
#wfacp-e-form .wfacp_main_form input[type="number"],
#wfacp-e-form .wfacp_main_form input[type="password"],
#wfacp-e-form .wfacp_main_form select,
#wfacp-e-form .wfacp_main_form textarea {
  border: 1px solid var(--ns-border) !important;
  border-radius: 6px !important;
  font-size: 0.88rem !important;
  color: var(--ns-text) !important;
  background: #FAFBFF !important;
  box-shadow: none !important;
  transition: border-color 0.15s !important;
}
#wfacp-e-form .wfacp_main_form input:focus,
#wfacp-e-form .wfacp_main_form select:focus,
#wfacp-e-form .wfacp_main_form textarea:focus {
  border-color: var(--ns-primary) !important;
  background: #fff !important;
  box-shadow: 0 0 0 3px rgba(75, 91, 212, 0.10) !important;
  outline: none !important;
}

/* Section headings */
#wfacp-e-form .wfacp-section-heading h3 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-weight: 800 !important;
  font-size: 1.25rem !important;
  color: var(--ns-text) !important;
  letter-spacing: -0.01em !important;
}

/* ============================================================
   BUTTONS — NS BRAND BLUE
   ============================================================ */

/* Proceed to checkout (WC cart page + FunnelKit sliding cart) */
.wc-proceed-to-checkout .checkout-button,
a.checkout-button,
#fkcart-checkout-button,
.fkcart-checkout-info a {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  font-size: 0.88rem !important;
  transition: background 0.15s !important;
}
.wc-proceed-to-checkout .checkout-button:hover,
a.checkout-button:hover,
#fkcart-checkout-button:hover,
.fkcart-checkout-info a:hover {
  background: var(--ns-accent) !important;
  color: #fff !important;
}

/* Place Order button */
body .wfacp_main_form .button#place_order,
body .wfacp_main_form button#place_order,
#wfacp-e-form .wfacp-btn-wrap .wfacp-btn-for-order,
#wfacp-e-form .wfacp_main_form input[type="submit"]#place_order,
#wfacp-e-form .wfacp_main_form button[type="submit"] {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  font-weight: 700 !important;
  letter-spacing: 0.05em !important;
  text-transform: uppercase !important;
  font-size: 0.9rem !important;
  transition: background 0.15s !important;
  width: 100% !important;
}
body .wfacp_main_form .button#place_order:hover,
body .wfacp_main_form button#place_order:hover,
#wfacp-e-form .wfacp-btn-wrap .wfacp-btn-for-order:hover,
#wfacp-e-form .wfacp_main_form button[type="submit"]:hover {
  background: var(--ns-accent) !important;
  color: #fff !important;
}

/* Coupon apply button */
body button.button.wfacp-coupon-btn,
body button.wfacp-coupon-btn,
body button.button.wfacp-coupon-field-btn,
#wfacp-e-form .wfacp_coupon_btn_wrap button {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  font-size: 0.82rem !important;
  transition: background 0.15s !important;
  padding: 10px 18px !important;
}
body button.button.wfacp-coupon-btn:hover,
body button.wfacp-coupon-btn:hover,
#wfacp-e-form .wfacp_coupon_btn_wrap button:hover {
  background: var(--ns-accent) !important;
  color: #fff !important;
}

/* ============================================================
   ORDER SUMMARY — HIDE MECHANISM/FORMAT DESCRIPTION TEXT
   ============================================================ */

/* Hide the description shown via wc-item-meta in order summary.
   We keep the Package line — identified by NS class added via PHP */
#wfacp-e-form .wfacp_order_summary .wc-item-meta,
#wfacp-e-form .wfacp_order_summary dl.variation,
.wfacp_order_summary .wc-item-meta,
.wfacp_order_summary dl.variation {
  display: none !important;
}

/* Show only our ns-cart-unit-label */
.ns-cart-unit-label {
  display: block !important;
  font-size: 0.8rem !important;
  color: var(--ns-text-muted) !important;
  margin-top: 4px !important;
}

/* FunnelKit sliding cart — hide description meta */
.fkcart-attr-wrap {
  display: none !important;
}

/* ============================================================
   WC BLOCKS CHECKOUT — CORRECT SELECTORS (replaces FunnelKit CSS)
   ============================================================ */

/* ----------------------------------------------------------
   SELECT FIELDS (Country/Region etc) — label always floated
   Select fields don't get .is-active so we force float always
   ---------------------------------------------------------- */
.wc-block-components-select .wc-block-components-select__label {
  position: absolute !important;
  top: 6px !important;
  transform: scale(0.82) !important;
  transform-origin: top left !important;
  font-size: 1rem !important;
  line-height: 1 !important;
  color: var(--ns-text-muted) !important;
  pointer-events: none !important;
}

/* Give select element top padding so value text clears the label */
.wc-block-components-select select.wc-block-components-select-input {
  padding-top: 24px !important;
  padding-bottom: 8px !important;
  height: auto !important;
  min-height: 52px !important;
}

/* Text inputs — ensure filled/active label is also cleared */
.wc-block-components-text-input.is-active label {
  top: 6px !important;
  transform: scale(0.82) !important;
  transform-origin: top left !important;
  color: var(--ns-text-muted) !important;
}
.wc-block-components-text-input.is-active input {
  padding-top: 24px !important;
  padding-bottom: 8px !important;
}

/* NS brand border/focus on all WC Blocks inputs + selects */
.wc-block-components-text-input input,
.wc-block-components-select select {
  border: 1px solid var(--ns-border) !important;
  border-radius: 6px !important;
  font-size: 0.88rem !important;
  color: var(--ns-text) !important;
  background: #FAFBFF !important;
  box-shadow: none !important;
  transition: border-color 0.15s !important;
}
.wc-block-components-text-input input:focus,
.wc-block-components-select select:focus {
  border-color: var(--ns-primary) !important;
  background: #fff !important;
  box-shadow: 0 0 0 3px rgba(75, 91, 212, 0.10) !important;
  outline: none !important;
}

/* ----------------------------------------------------------
   BUTTONS — NS BRAND BLUE
   ---------------------------------------------------------- */

/* Cart page — Proceed to Checkout */
.wc-block-cart__submit-button,
.wc-block-cart__submit-container .wc-block-cart__submit-button {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  font-size: 0.88rem !important;
  transition: background 0.15s !important;
}
.wc-block-cart__submit-button:hover {
  background: var(--ns-accent) !important;
  color: #fff !important;
}

/* FunnelKit sliding cart checkout button */
#fkcart-checkout-button,
.fkcart-checkout-info a {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  font-size: 0.88rem !important;
  transition: background 0.15s !important;
}
#fkcart-checkout-button:hover,
.fkcart-checkout-info a:hover {
  background: var(--ns-accent) !important;
  color: #fff !important;
}

/* Checkout — Place Order button */
.wc-block-components-checkout-place-order-button,
.wp-block-woocommerce-checkout-order-summary-totals-block .wc-block-components-checkout-place-order-button {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  font-weight: 700 !important;
  letter-spacing: 0.05em !important;
  text-transform: uppercase !important;
  font-size: 0.9rem !important;
  transition: background 0.15s !important;
  width: 100% !important;
}
.wc-block-components-checkout-place-order-button:hover {
  background: var(--ns-accent) !important;
  color: #fff !important;
}

/* Coupon apply button */
.wc-block-components-totals-coupon__button,
.wc-block-components-totals-coupon .wc-block-components-button {
  background: var(--ns-primary) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  font-size: 0.82rem !important;
  transition: background 0.15s !important;
}
.wc-block-components-totals-coupon__button:hover,
.wc-block-components-totals-coupon .wc-block-components-button:hover {
  background: var(--ns-accent) !important;
  color: #fff !important;
}

/* ----------------------------------------------------------
   ORDER SUMMARY — HIDE MECHANISM/FORMAT DESCRIPTION
   ---------------------------------------------------------- */

/* WC Blocks cart item — hide item meta dl (variation attributes) */
.wc-block-cart-item__product .wc-block-cart-item__product-details dl,
.wc-block-cart-item__product .wc-block-cart-item__variation,
.wc-block-cart-item__product dl.variation,
.wc-block-components-product-metadata {
  display: none !important;
}

/* Checkout order summary — hide item meta */
.wc-block-components-order-summary-item__description,
.wc-block-components-order-summary-item .wc-block-components-product-metadata,
.wc-block-components-order-summary-item dl,
.wc-block-components-order-summary-item dl.variation {
  display: none !important;
}

/* FunnelKit sliding cart attr wrap — still relevant */
.fkcart-attr-wrap {
  display: none !important;
}

/* Unit label in cart/checkout */
.ns-cart-unit-label {
  display: block;
  font-size: 0.8rem;
  color: var(--ns-text-muted);
  margin-top: 4px;
}

/* ----------------------------------------------------------
   TOTALS — REMOVE GHOST SPACE UNDER SUBTOTAL / TOTAL
   ---------------------------------------------------------- */

/* WC Blocks totals — hide empty fee rows */
.wc-block-components-totals-fees:empty,
.wc-block-components-totals-discount:empty {
  display: none !important;
}

/* WPLoyalty / empty redeem row */
.wc-block-components-totals-item:empty {
  display: none !important;
}

/* Tighten totals table spacing */
.wc-block-components-totals-wrapper {
  padding-bottom: 0 !important;
}

/* ============================================================
   WC BLOCKS CHECKOUT — PATCH 2  (spacing / labels / terms)
   ============================================================ */

/* ----------------------------------------------------------
   FIX: order summary item name was hidden by earlier rule
   (we were hiding the entire __description wrapper)
   ---------------------------------------------------------- */
.wc-block-components-order-summary-item__description {
  display: block !important;
}
.wc-block-components-order-summary-item__description .wc-block-components-product-metadata,
.wc-block-components-order-summary-item__description dl.variation,
.wc-block-components-order-summary-item__description dl {
  display: none !important;
}

/* ----------------------------------------------------------
   SELECT LABEL / VALUE — push value below label
   ---------------------------------------------------------- */
.wc-block-components-select {
  position: relative !important;
}
.wc-block-components-select .wc-block-components-label {
  position: absolute !important;
  top: 8px !important;
  left: 10px !important;
  font-size: 11px !important;
  line-height: 1 !important;
  transform: none !important;
  color: var(--ns-text-muted) !important;
  pointer-events: none !important;
  z-index: 1 !important;
}
.wc-block-components-select select.wc-block-components-select-input {
  padding-top: 26px !important;
  padding-bottom: 8px !important;
  min-height: 54px !important;
  height: auto !important;
}

/* ----------------------------------------------------------
   FORM FIELD SPACING — add breathing room between rows
   ---------------------------------------------------------- */
.wc-block-components-address-form .wc-block-components-form__row,
.wc-block-checkout__contact-fields .wc-block-components-form__row,
.wc-block-checkout__billing-fields .wc-block-components-form__row {
  margin-bottom: 14px !important;
}

/* ----------------------------------------------------------
   ADD COUPONS TOGGLE ROW — vertically center text + chevron
   ---------------------------------------------------------- */
.wc-block-components-totals-coupon > button,
.wc-block-components-totals-coupon__button {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  width: 100% !important;
  padding-top: 14px !important;
  padding-bottom: 14px !important;
  line-height: 1 !important;
}
.wc-block-components-totals-coupon > button svg {
  flex-shrink: 0 !important;
  align-self: center !important;
}

/* ----------------------------------------------------------
   COUPON INPUT ROW — even height, aligned
   ---------------------------------------------------------- */
.wc-block-components-totals-coupon__form {
  display: flex !important;
  align-items: stretch !important;
  gap: 8px !important;
  padding: 8px 0 14px !important;
}
.wc-block-components-totals-coupon__form .wc-block-components-text-input {
  flex: 1 !important;
  margin: 0 !important;
}
.wc-block-components-totals-coupon__form .wc-block-components-text-input input {
  height: 44px !important;
  padding-top: 12px !important;
  padding-bottom: 12px !important;
}
.wc-block-components-totals-coupon__form .wc-block-components-button,
.wc-block-components-totals-coupon__form button {
  flex-shrink: 0 !important;
  align-self: stretch !important;
  min-height: 44px !important;
}

/* ----------------------------------------------------------
   GHOST SPACE — hide empty rows between Subtotal and Total
   ---------------------------------------------------------- */
/* Shipping section when no shipping cost is shown */
.wc-block-components-totals-shipping {
  display: none !important;
}
/* WPLoyalty / fees empty rows */
.wc-block-components-totals-fees:empty,
.wc-block-components-totals-item:empty {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* ----------------------------------------------------------
   RETURN TO CART — fix arrow/text wrapping
   ---------------------------------------------------------- */
.wc-block-components-checkout-return-to-cart-button,
a.wc-block-components-checkout-return-to-cart-button {
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
  white-space: nowrap !important;
  font-size: 0.82rem !important;
  line-height: 1 !important;
  text-decoration: none !important;
  color: var(--ns-text-muted) !important;
}
.wc-block-components-checkout-return-to-cart-button svg {
  flex-shrink: 0 !important;
  vertical-align: middle !important;
}
/* Actions row — keep items on one line */
.wc-block-checkout__actions_row {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  flex-wrap: nowrap !important;
}
.wc-block-checkout__actions_row .wc-block-components-checkout-place-order-button {
  flex: 1 !important;
}

/* ----------------------------------------------------------
   TERMS CHECKBOX — styling
   ---------------------------------------------------------- */
.wc-block-checkout__terms {
  margin: 12px 0 !important;
}
.wc-block-checkout__terms p,
.wc-block-checkout__terms .wc-block-components-checkout-policies__text {
  font-size: 0.82rem !important;
  color: var(--ns-text-muted) !important;
  line-height: 1.4 !important;
}
.wc-block-components-checkbox .wc-block-components-checkbox__input {
  accent-color: var(--ns-primary) !important;
  width: 18px !important;
  height: 18px !important;
  cursor: pointer !important;
  flex-shrink: 0 !important;
}
.wc-block-components-checkbox {
  display: flex !important;
  align-items: flex-start !important;
  gap: 8px !important;
}
.wc-block-components-checkbox .wc-block-components-checkbox__label {
  font-size: 0.85rem !important;
  color: var(--ns-text-muted) !important;
  line-height: 1.4 !important;
  cursor: pointer !important;
}

/* ============================================================
   WC BLOCKS CHECKOUT — PATCH 3 (correct selectors, all fixes)
   ============================================================ */

/* ----------------------------------------------------------
   COUNTRY / STATE SELECT — correct component: wc-blocks (plural)
   Label is already at top:6px; just push SELECT value below it
   ---------------------------------------------------------- */
.wc-blocks-components-select .wc-blocks-components-select__select {
  padding-top: 26px !important;
  height: 56px !important;
}

/* ----------------------------------------------------------
   TEXT INPUTS — padding when label is floated (.is-active)
   (this was correct before; repeat with higher specificity)
   ---------------------------------------------------------- */
.wc-block-components-text-input.is-active input,
.wc-block-components-text-input.has-error input,
.wc-block-components-text-input input:not(:placeholder-shown) {
  padding-top: 24px !important;
  padding-bottom: 8px !important;
}

/* ----------------------------------------------------------
   ADD COUPONS PANEL BUTTON — vertical center
   Correct selector: .wc-block-components-panel__button
   ---------------------------------------------------------- */
.wc-block-components-totals-coupon .wc-block-components-panel__button {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  padding: 14px 0 !important;
  margin: 0 !important;
  width: 100% !important;
  background: none !important;
  border: none !important;
  cursor: pointer !important;
  font-size: inherit !important;
}
.wc-block-components-totals-coupon .wc-block-components-panel__button svg,
.wc-block-components-totals-coupon .wc-block-components-panel__button-icon {
  flex-shrink: 0 !important;
  margin-left: auto !important;
  align-self: center !important;
}

/* ----------------------------------------------------------
   EMPTY ROWS IN ORDER SUMMARY — hide shipping, taxes, fees
   when they have no real content
   ---------------------------------------------------------- */
/* Shipping block: hide entirely (no shipping configured) */
.wp-block-woocommerce-checkout-order-summary-shipping-block,
.wc-block-checkout__order-summary-shipping {
  display: none !important;
}

/* Taxes block: hide when empty */
.wp-block-woocommerce-checkout-order-summary-taxes-block:empty,
.wp-block-woocommerce-checkout-order-summary-taxes-block:not(:has(.wc-block-components-totals-taxes__label:not(:empty))) {
  display: none !important;
}

/* Fee/discount blocks: hide if empty */
.wp-block-woocommerce-checkout-order-summary-fee-block:empty,
.wp-block-woocommerce-checkout-order-summary-discount-block:empty {
  display: none !important;
}

/* Any totals-item that has nothing inside it */
.wc-block-components-totals-item:not(:has(*)) {
  display: none !important;
}

/* Reduce extra space in order summary wrapper */
.wp-block-woocommerce-checkout-order-summary-block .checkout-order-summary-block-fill {
  padding-bottom: 0 !important;
}

/* ----------------------------------------------------------
   ORDER SUMMARY — product row padding
   ---------------------------------------------------------- */
.wc-block-components-order-summary-item {
  padding-bottom: 16px !important;
  padding-top: 12px !important;
}

/* Ensure product name shows */
.wc-block-components-order-summary-item__description {
  display: block !important;
}
.wc-block-components-order-summary-item__description .wc-block-components-product-metadata,
.wc-block-components-order-summary-item__description dl {
  display: none !important;
}

/* ----------------------------------------------------------
   RETURN TO CART — hide from actions row (moved to breadcrumb)
   ---------------------------------------------------------- */
.wc-block-components-checkout-return-to-cart-button,
.wc-block-checkout__actions_row .wc-block-components-checkout-return-to-cart-button {
  display: none !important;
}

/* ----------------------------------------------------------
   RETURN TO CART BREADCRUMB — PHP injects .ns-return-breadcrumb
   ---------------------------------------------------------- */
.ns-return-breadcrumb {
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--ns-border);
}
.ns-return-breadcrumb a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.82rem;
  color: var(--ns-text-muted);
  text-decoration: none;
  font-weight: 500;
}
.ns-return-breadcrumb a:hover {
  color: var(--ns-primary);
}
.ns-return-breadcrumb svg {
  flex-shrink: 0;
}

/* ----------------------------------------------------------
   TERMS CHECKBOX — space above place order
   ---------------------------------------------------------- */
.wc-block-checkout__terms {
  margin-bottom: 20px !important;
  margin-top: 8px !important;
}

/* Checkbox accent color */
.wc-block-components-checkbox .wc-block-components-checkbox__input {
  accent-color: var(--ns-primary) !important;
  width: 18px !important;
  height: 18px !important;
  flex-shrink: 0 !important;
  cursor: pointer !important;
}
.wc-block-components-checkbox {
  display: flex !important;
  align-items: flex-start !important;
  gap: 8px !important;
}
.wc-block-components-checkbox .wc-block-components-checkbox__label {
  font-size: 0.84rem !important;
  line-height: 1.5 !important;
  cursor: pointer !important;
}

/* Space between terms and place order button */
.wc-block-checkout__actions_row {
  margin-top: 20px !important;
  padding-top: 20px !important;
  border-top: 1px solid var(--ns-border) !important;
}

/* Place order fills full width (return to cart is now hidden) */
.wc-block-components-checkout-place-order-button {
  width: 100% !important;
}

/* ============================================================
   WC BLOCKS CHECKOUT — PATCH 4 (targeted DOM-verified fixes)
   ============================================================ */

/* ----------------------------------------------------------
   SELECT LABEL — move up 3px so descenders clear value text
   Label was at top:6px, bottom at 25.6px, value starts at 26px
   ---------------------------------------------------------- */
.wc-blocks-components-select .wc-blocks-components-select__label {
  top: 3px !important;
}

/* ----------------------------------------------------------
   ORDER SUMMARY GAP — hide the slot-wrapper between Subtotal/Total
   DOM confirmed: wp-block-...-totals-block > .wc-block-components-totals-wrapper
   is the empty slot (h:32px) causing the gap
   ---------------------------------------------------------- */
.wp-block-woocommerce-checkout-order-summary-totals-block > .wc-block-components-totals-wrapper {
  display: none !important;
}

/* Remove the 16px bottom padding on the totals block */
.wp-block-woocommerce-checkout-order-summary-totals-block {
  padding-bottom: 0 !important;
}

/* Reduce the Total row top padding from 16px to 0 (border separates it) */
.wc-block-components-checkout-order-summary__content > .wc-block-components-totals-wrapper:not(.slot-wrapper) {
  padding-top: 0 !important;
}

/* ----------------------------------------------------------
   EMPTY BOX BELOW TOTAL — hide the slot-wrapper after Total row
   DOM confirmed: .wc-block-components-order-meta inside a slot-wrapper
   ---------------------------------------------------------- */
.wc-block-components-checkout-order-summary__content > .wc-block-components-totals-wrapper.slot-wrapper {
  display: none !important;
}

/* Also hide by the order-meta class directly */
.wc-block-components-order-meta:empty,
.wc-block-components-order-meta {
  display: none !important;
}

/* ----------------------------------------------------------
   COUPON FORM — force side-by-side layout (no wrapping)
   ---------------------------------------------------------- */
.wc-block-components-totals-coupon__form {
  flex-wrap: nowrap !important;
}

/* ----------------------------------------------------------
   COUPON BLOCK — reduce dead space above panel button (16px → 8px)
   ---------------------------------------------------------- */
.wp-block-woocommerce-checkout-order-summary-coupon-form-block {
  padding-top: 8px !important;
}

/* ============================================================
   WC BLOCKS CHECKOUT — PATCH 5 (fix subtotal hidden by Patch 4)
   ============================================================ */

/* Undo the overbroad rule from Patch 4 that hid the Subtotal block
   (the subtotal element also has wc-block-components-totals-wrapper class) */
.wp-block-woocommerce-checkout-order-summary-totals-block > .wc-block-components-totals-wrapper {
  display: revert !important;
}

/* Re-hide ONLY the slot-wrapper (the actual empty gap element, has .slot-wrapper class) */
.wp-block-woocommerce-checkout-order-summary-totals-block > .wc-block-components-totals-wrapper.slot-wrapper {
  display: none !important;
}

/* ============================================================
   WC BLOCKS CHECKOUT — PATCH 6 (coupon form flex fix)
   ============================================================ */

/* Input takes all available space; button sized to its content */
.wc-block-components-totals-coupon__form .wc-block-components-text-input {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  width: auto !important;
}

.wc-block-components-totals-coupon__form .wc-block-components-button {
  flex: 0 0 auto !important;
  width: auto !important;
  min-width: 80px !important;
  padding-left: 16px !important;
  padding-right: 16px !important;
}

/* ============================================================
   WC BLOCKS CHECKOUT — PATCH 7
   ============================================================ */

/* ----------------------------------------------------------
   SELECT DROPDOWN LABEL — smaller font, more clearance
   Measured: label bottom 23px, value at 26px → 3px gap clips descenders
   Fix: 12px font at top:5px → bottom ~19px, 7px clear of value
   ---------------------------------------------------------- */
.wc-blocks-components-select .wc-blocks-components-select__label {
  top: 5px !important;
  font-size: 12px !important;
  line-height: 1.2 !important;
}

/* ----------------------------------------------------------
   ORDER SUMMARY — equal vertical padding on all rows
   Coupon row has 14px top+bottom (set in Patch 3).
   Subtotal had 16px top, 0px bottom. Total had 0px both.
   ---------------------------------------------------------- */
.wp-block-woocommerce-checkout-order-summary-subtotal-block {
  padding-top: 14px !important;
  padding-bottom: 14px !important;
}

/* Total row — override Patch 4's padding-top:0 */
.wc-block-components-checkout-order-summary__content > .wc-block-components-totals-wrapper:not(.slot-wrapper) {
  padding-top: 14px !important;
  padding-bottom: 14px !important;
}

/* ============================================================
   Patch 8: Category pages + Shipping page
   ============================================================ */

/* --- Section headings ---------------------------------------- */
.ns-section-head { margin-bottom: 40px; }
.ns-section-head__title {
  font-size: clamp(1.4rem, 2.5vw, 1.9rem);
  font-weight: 700;
  color: var(--ns-text);
  margin: 0 0 10px;
  letter-spacing: -0.02em;
}
.ns-section-head__sub {
  font-size: 0.96rem;
  color: var(--ns-text-muted);
  margin: 0;
  max-width: 640px;
  line-height: 1.6;
}

/* --- Category hero ------------------------------------------- */
.ns-cat-hero { background: linear-gradient(135deg, #0d0f1e 0%, #181A2C 60%, #1e1b38 100%); }

/* --- Products section ---------------------------------------- */
.ns-cat-products-section { background: #fff; }

.ns-cat-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
@media (max-width: 900px) { .ns-cat-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .ns-cat-grid { grid-template-columns: 1fr; } }

.ns-cat-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--ns-border, #e5e7eb);
  border-radius: 12px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: box-shadow 0.18s, transform 0.18s, border-color 0.18s;
}
.ns-cat-card:hover {
  box-shadow: 0 8px 32px rgba(75,91,212,0.13);
  transform: translateY(-3px);
  border-color: var(--ns-primary);
  text-decoration: none;
  color: inherit;
}

.ns-cat-card__img {
  position: relative;
  background: #f6f7fb;
  aspect-ratio: 4/3;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ns-cat-card__img-el { width: 100%; height: 100%; object-fit: cover; }
.ns-cat-card__img-placeholder {
  width: 100%;
  height: 100%;
  background: linear-gradient(135deg, #f0f1f8, #e8eaf4);
}

.ns-cat-card__badge {
  position: absolute;
  top: 10px;
  right: 10px;
  background: var(--ns-accent, #D6346F);
  color: #fff;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 3px 8px;
  border-radius: 4px;
}

.ns-cat-card__body {
  padding: 18px 20px 20px;
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 8px;
}
.ns-cat-card__name {
  font-size: 1rem;
  font-weight: 700;
  color: var(--ns-text);
  margin: 0;
  line-height: 1.3;
}
.ns-cat-card__price {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--ns-primary);
}
.ns-cat-card__price .woocommerce-Price-currencySymbol { font-size: 0.85em; }
.ns-cat-card__cta {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 0.83rem;
  font-weight: 600;
  color: var(--ns-primary);
  margin-top: auto;
  padding-top: 8px;
  border-top: 1px solid var(--ns-border, #e5e7eb);
}

/* --- Stacks section ------------------------------------------ */
.ns-stacks-section { background: #f7f8fc; }

.ns-stack-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
@media (max-width: 1000px) { .ns-stack-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 660px)  { .ns-stack-grid { grid-template-columns: 1fr; } }

.ns-stack-card {
  background: #fff;
  border: 1px solid var(--ns-border, #e5e7eb);
  border-radius: 12px;
  padding: 22px;
  display: flex;
  flex-direction: column;
  gap: 18px;
  transition: box-shadow 0.18s;
}
.ns-stack-card:hover { box-shadow: 0 6px 24px rgba(75,91,212,0.10); }

.ns-stack-card__goal-tag {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ns-accent);
  margin-bottom: 6px;
}
.ns-stack-card__name {
  font-size: 1rem;
  font-weight: 700;
  color: var(--ns-text);
  margin: 0 0 6px;
}
.ns-stack-card__desc {
  font-size: 0.85rem;
  color: var(--ns-text-muted);
  line-height: 1.55;
  margin: 0;
}

.ns-stack-card__products {
  display: flex;
  align-items: stretch;
  gap: 10px;
  background: #f7f8fc;
  border-radius: 8px;
  padding: 12px;
}
.ns-stack-plus {
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ns-text-muted);
  flex-shrink: 0;
}

.ns-stack-mini {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  text-decoration: none;
  flex: 1;
  min-width: 0;
  text-align: center;
  transition: opacity 0.15s;
}
.ns-stack-mini:hover { opacity: 0.75; text-decoration: none; }
.ns-stack-mini__thumb {
  width: 52px;
  height: 52px;
  border-radius: 8px;
  overflow: hidden;
  background: #fff;
  border: 1px solid var(--ns-border, #e5e7eb);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.ns-stack-mini__img { width: 100%; height: 100%; object-fit: cover; }
.ns-stack-mini__info { display: flex; flex-direction: column; gap: 2px; }
.ns-stack-mini__name {
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--ns-text);
  line-height: 1.2;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 90px;
}
.ns-stack-mini__price {
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--ns-primary);
}

.ns-stack-card__footer {
  border-top: 1px solid var(--ns-border, #e5e7eb);
  padding-top: 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ns-stack-card__total {
  font-size: 0.88rem;
  color: var(--ns-text);
}
.ns-stack-card__total strong { color: var(--ns-primary); }
.ns-stack-card__discount-hint {
  font-size: 0.76rem;
  color: var(--ns-accent);
  font-weight: 600;
}
.ns-stack-card__links { display: flex; flex-wrap: wrap; gap: 8px; }
.ns-stack-card__link {
  font-size: 0.78rem;
  color: var(--ns-primary);
  text-decoration: none;
  font-weight: 600;
}
.ns-stack-card__link:hover { text-decoration: underline; }

/* --- Research focus ------------------------------------------ */
.ns-focus-section { background: #fff; }

.ns-focus-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px 32px;
}
@media (max-width: 640px) { .ns-focus-grid { grid-template-columns: 1fr; } }

.ns-focus-item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 0.9rem;
  color: var(--ns-text);
  line-height: 1.5;
}
.ns-focus-item__icon {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--ns-primary);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 1px;
}

/* --- CTA trust band ------------------------------------------ */
.ns-cat-cta-band {
  background: #181A2C;
  padding-top: 40px !important;
  padding-bottom: 40px !important;
}
.ns-cat-cta-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 28px;
}
@media (max-width: 960px) { .ns-cat-cta-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 540px) { .ns-cat-cta-grid { grid-template-columns: 1fr; } }

.ns-cat-cta-item {
  display: flex;
  align-items: flex-start;
  gap: 14px;
}
.ns-cat-cta-item__icon {
  color: var(--ns-accent);
  flex-shrink: 0;
  margin-top: 2px;
}
.ns-cat-cta-item strong {
  display: block;
  font-size: 0.88rem;
  font-weight: 700;
  color: #fff;
  margin-bottom: 4px;
}
.ns-cat-cta-item span {
  font-size: 0.82rem;
  color: rgba(255,255,255,0.55);
  line-height: 1.5;
}

/* ============================================================
   Shipping policy page
   ============================================================ */

/* Key facts row */
.ns-ship-facts-section { background: #f7f8fc; }
.ns-ship-facts {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
}
@media (max-width: 960px) { .ns-ship-facts { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 540px) { .ns-ship-facts { grid-template-columns: 1fr; } }

.ns-ship-fact {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  background: #fff;
  border: 1px solid var(--ns-border, #e5e7eb);
  border-radius: 10px;
  padding: 18px;
}
.ns-ship-fact__icon {
  color: var(--ns-primary);
  flex-shrink: 0;
  margin-top: 2px;
}
.ns-ship-fact__text { display: flex; flex-direction: column; gap: 4px; }
.ns-ship-fact__text strong {
  display: block;
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--ns-text);
}
.ns-ship-fact__text span {
  font-size: 0.82rem;
  color: var(--ns-text-muted);
  line-height: 1.5;
}
.ns-ship-fact__text a { color: var(--ns-primary); }

/* Rates table */
.ns-ship-table-wrap {
  overflow-x: auto;
  border-radius: 10px;
  border: 1px solid var(--ns-border, #e5e7eb);
  margin-bottom: 16px;
}
.ns-ship-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9rem;
}
.ns-ship-table thead tr {
  background: #181A2C;
  color: #fff;
}
.ns-ship-table th {
  padding: 13px 18px;
  text-align: left;
  font-weight: 700;
  font-size: 0.82rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.ns-ship-table td {
  padding: 14px 18px;
  border-bottom: 1px solid var(--ns-border, #e5e7eb);
  color: var(--ns-text);
  vertical-align: middle;
}
.ns-ship-table tbody tr:last-child td { border-bottom: none; }
.ns-ship-table tbody tr:nth-child(even) { background: #f9fafb; }
.ns-ship-table__note {
  display: block;
  font-size: 0.78rem;
  color: var(--ns-text-muted);
  margin-top: 3px;
}
.ns-ship-price {
  font-weight: 700;
  color: var(--ns-primary);
  font-size: 0.95rem;
}
.ns-ship-table__no-ship td {
  background: #fdf2f5;
  color: var(--ns-text-muted);
}
.ns-ship-table__no-ship strong { color: var(--ns-text); }
.ns-ship-table-note {
  font-size: 0.82rem;
  color: var(--ns-text-muted);
  line-height: 1.6;
  margin: 0;
}

/* Policy cards grid */
.ns-ship-policies-section { background: #f7f8fc; }
.ns-ship-policy-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
@media (max-width: 960px) { .ns-ship-policy-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .ns-ship-policy-grid { grid-template-columns: 1fr; } }

.ns-ship-policy-card {
  background: #fff;
  border: 1px solid var(--ns-border, #e5e7eb);
  border-radius: 10px;
  padding: 22px;
}
.ns-ship-policy-card__icon {
  color: var(--ns-primary);
  margin-bottom: 12px;
}
.ns-ship-policy-card h3 {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--ns-text);
  margin: 0 0 10px;
}
.ns-ship-policy-card p {
  font-size: 0.86rem;
  color: var(--ns-text-muted);
  line-height: 1.65;
  margin: 0;
}

/* FAQ */
.ns-ship-faq-section { background: #fff; }
.ns-faq-list { display: flex; flex-direction: column; gap: 0; max-width: 780px; }

.ns-faq-item {
  border-bottom: 1px solid var(--ns-border, #e5e7eb);
}
.ns-faq-item:first-child { border-top: 1px solid var(--ns-border, #e5e7eb); }

.ns-faq-q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 4px;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--ns-text);
  cursor: pointer;
  list-style: none;
  gap: 16px;
  user-select: none;
}
.ns-faq-q::-webkit-details-marker { display: none; }
.ns-faq-q::after {
  content: '+';
  font-size: 1.3rem;
  font-weight: 300;
  color: var(--ns-primary);
  flex-shrink: 0;
  transition: transform 0.2s;
}
details[open] .ns-faq-q::after { content: '−'; }

.ns-faq-a {
  padding: 0 4px 18px;
}
.ns-faq-a p {
  font-size: 0.88rem;
  color: var(--ns-text-muted);
  line-height: 1.7;
  margin: 0;
}

/* Contact band */
.ns-ship-contact-band { background: #f7f8fc; }
.ns-ship-contact-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}
.ns-ship-contact-inner h3 {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--ns-text);
  margin: 0 0 6px;
}
.ns-ship-contact-inner p {
  font-size: 0.87rem;
  color: var(--ns-text-muted);
  margin: 0;
}
.ns-ship-contact-actions { display: flex; gap: 12px; flex-wrap: wrap; }

/* ============================================================
   Patch 9: Shop archive + category page CSS fixes
   ============================================================ */

/* --- Shop hero -------------------------------------------- */
.ns-shop-hero { background: linear-gradient(135deg, #0d0f1e 0%, #181A2C 60%, #1e1b38 100%); }

/* --- Shop category grid ------------------------------------ */
.ns-shop-cats-section { background: #f7f8fc; }

.ns-shop-cat-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
@media (max-width: 960px) { .ns-shop-cat-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .ns-shop-cat-grid { grid-template-columns: 1fr; } }

.ns-shop-cat-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--ns-border, #e5e7eb);
  border-radius: 14px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: box-shadow 0.18s, transform 0.18s, border-color 0.18s;
}
.ns-shop-cat-card:hover {
  box-shadow: 0 10px 36px rgba(75,91,212,0.14);
  transform: translateY(-4px);
  border-color: var(--ns-primary);
  text-decoration: none;
  color: inherit;
}

.ns-shop-cat-card__img-wrap {
  position: relative;
  aspect-ratio: 3/2;
  overflow: hidden;
  background: #f0f1f8;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ns-shop-cat-card__img-el { width: 100%; height: 100%; object-fit: cover; }
.ns-shop-cat-card__img-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ns-shop-cat-card__icon { display: flex; }
.ns-shop-cat-card__icon svg { width: 48px; height: 48px; }

.ns-shop-cat-card__count {
  position: absolute;
  top: 10px;
  right: 10px;
  background: rgba(24,26,44,0.75);
  color: #fff;
  font-size: 0.72rem;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 20px;
  letter-spacing: 0.02em;
}

.ns-shop-cat-card__body {
  padding: 20px 22px 22px;
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 8px;
}
.ns-shop-cat-card__name {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--ns-text);
  margin: 0;
  line-height: 1.25;
}
.ns-shop-cat-card__blurb {
  font-size: 0.85rem;
  color: var(--ns-text-muted);
  line-height: 1.6;
  margin: 0;
  flex: 1;
}
.ns-shop-cat-card__cta {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 0.83rem;
  font-weight: 600;
  color: var(--ns-primary);
  margin-top: 8px;
  padding-top: 10px;
  border-top: 1px solid var(--ns-border, #e5e7eb);
}

/* --- Trust strip ------------------------------------------ */
.ns-shop-trust-strip {
  background: #181A2C;
  padding-top: 36px !important;
  padding-bottom: 36px !important;
}

.ns-shop-trust-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 28px;
}
@media (max-width: 960px) { .ns-shop-trust-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 540px) { .ns-shop-trust-grid { grid-template-columns: 1fr; } }

.ns-shop-trust-item {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  color: rgba(255,255,255,0.85);
}
.ns-shop-trust-item svg { flex-shrink: 0; margin-top: 2px; color: var(--ns-accent); }
.ns-shop-trust-item strong {
  display: block;
  font-size: 0.88rem;
  font-weight: 700;
  color: #fff;
  margin-bottom: 3px;
}
.ns-shop-trust-item span {
  font-size: 0.81rem;
  color: rgba(255,255,255,0.5);
  line-height: 1.5;
}

/* --- Shop products section --------------------------------- */
.ns-shop-products-section { background: #fff; }

/* WooCommerce default loop overrides inside our container */
.ns-shop-products-section .products.columns-4 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  list-style: none;
  margin: 0;
  padding: 0;
}
@media (max-width: 900px) {
  .ns-shop-products-section .products.columns-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .ns-shop-products-section .products.columns-4 { grid-template-columns: 1fr; }
}

/* ============================================================
   Category page fixes
   ============================================================ */

/* Ensure category sections have correct background and padding */
.ns-cat-products-section.ns-section,
.ns-stacks-section.ns-section,
.ns-focus-section.ns-section {
  padding-top: 56px;
  padding-bottom: 56px;
}

/* Stack card: ensure proper min-height on product row */
.ns-stack-card__products {
  min-height: 80px;
  flex-wrap: wrap;
}

/* Fix: stack grid on small category pages (1 product) */
.ns-cat-grid.ns-cat-grid--single {
  grid-template-columns: repeat(2, 1fr);
  max-width: 640px;
}

/* Fix: CTA band padding */
.ns-cat-cta-band.ns-section {
  padding-top: 48px !important;
  padding-bottom: 48px !important;
}

/* Section base (used across pages) */
.ns-section {
  padding-top: 56px;
  padding-bottom: 56px;
}

/* ============================================================
   Patch 9b: Fix WC product grid in shop Full Catalog
   ============================================================ */

/* Reset WC float layout inside our grid container */
.ns-shop-products-section ul.products.columns-4 {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 24px !important;
  float: none !important;
  width: 100% !important;
}
@media (max-width: 900px) {
  .ns-shop-products-section ul.products.columns-4 {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}
@media (max-width: 560px) {
  .ns-shop-products-section ul.products.columns-4 {
    grid-template-columns: 1fr !important;
  }
}

/* Reset li.product so it fills the grid cell */
.ns-shop-products-section ul.products.columns-4 li.product {
  width: auto !important;
  float: none !important;
  margin: 0 !important;
  clear: none !important;
}

/* Tidy up the WC sorting/count bar inside our section */
.ns-shop-products-section .woocommerce-ordering,
.ns-shop-products-section .woocommerce-result-count {
  margin-bottom: 20px;
}

/* ============================================================
   Patch 10: Shop page redesign + nav dropdown
   ============================================================ */

/* --- Shop hero override ------------------------------------ */
.ns-shop-hero {
  background: linear-gradient(155deg, #0b0d1f 0%, #151729 55%, #1a1033 100%) !important;
  padding: 88px 24px 80px !important;
  text-align: center;
  border-bottom: 1px solid rgba(255,255,255,0.07) !important;
}
.ns-shop-hero::before {
  background-image: radial-gradient(circle, rgba(75,91,212,0.25) 1px, transparent 1px) !important;
  opacity: 0.5 !important;
}
.ns-shop-hero__inner { max-width: 720px !important; }

.ns-shop-hero .ns-page-hero__tag {
  color: #8fa4ff;
  background: rgba(75,91,212,0.15);
  border-color: rgba(75,91,212,0.3);
}
.ns-shop-hero .ns-page-hero__title {
  color: #fff !important;
  font-size: clamp(2.4rem, 5vw, 3.8rem) !important;
  margin-bottom: 18px !important;
}
.ns-shop-hero .ns-page-hero__sub {
  color: rgba(255,255,255,0.62) !important;
  font-size: 1.05rem;
  max-width: 560px;
  margin: 0 auto 32px !important;
}

.ns-shop-hero__actions {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  margin-bottom: 32px;
}

/* Dark ghost button for dark bg */
.ns-btn--ghost-dark {
  background: transparent;
  border: 1.5px solid rgba(255,255,255,0.25);
  color: rgba(255,255,255,0.8);
  padding: 11px 24px;
  border-radius: 6px;
  font-size: 0.9rem;
  font-weight: 600;
  text-decoration: none;
  transition: border-color 0.18s, color 0.18s, background 0.18s;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.ns-btn--ghost-dark:hover {
  border-color: rgba(255,255,255,0.5);
  color: #fff;
  background: rgba(255,255,255,0.06);
  text-decoration: none;
}

.ns-shop-hero__badges {
  display: flex;
  gap: 20px;
  justify-content: center;
  flex-wrap: wrap;
}
.ns-shop-hero__badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.78rem;
  font-weight: 500;
  color: rgba(255,255,255,0.45);
  letter-spacing: 0.01em;
}
.ns-shop-hero__badge svg { color: #6ee7b7; flex-shrink: 0; }

/* --- Category grid ---------------------------------------- */
.ns-shop-cats-section { background: #f7f8fc; }
.ns-section-head--center { text-align: center; max-width: 540px; margin-left: auto; margin-right: auto; margin-bottom: 40px; }
.ns-section-head--center .ns-section-head__sub { margin: 0 auto; }

.ns-shop-cat-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
@media (max-width: 960px) { .ns-shop-cat-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .ns-shop-cat-grid { grid-template-columns: 1fr; } }

/* Center orphan last row when 5 items in 3-col grid */
.ns-shop-cat-grid .ns-scat-card:nth-child(4) { grid-column: 1; }
@media (max-width: 960px) { .ns-shop-cat-grid .ns-scat-card:nth-child(4) { grid-column: auto; } }

/* --- Category card (ns-scat-card) ------------------------- */
.ns-scat-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1.5px solid var(--ns-border, #e5e7eb);
  border-radius: 14px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: box-shadow 0.2s, transform 0.2s, border-color 0.2s;
}
.ns-scat-card:hover {
  box-shadow: 0 12px 40px rgba(0,0,0,0.10);
  transform: translateY(-4px);
  border-color: var(--cat-color, var(--ns-primary));
  text-decoration: none;
  color: inherit;
}

/* Colored top strip + icon + meta row */
.ns-scat-card__head {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 20px 22px 16px;
  border-bottom: 1px solid var(--ns-border, #e5e7eb);
  position: relative;
}
.ns-scat-card__head::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: var(--cat-color, #4B5BD4);
  border-radius: 14px 14px 0 0;
}

.ns-scat-card__icon-wrap {
  width: 52px;
  height: 52px;
  border-radius: 12px;
  background: color-mix(in srgb, var(--cat-color, #4B5BD4) 12%, #fff);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: var(--cat-color, #4B5BD4);
}
.ns-scat-card__icon-wrap svg { width: 26px; height: 26px; }

.ns-scat-card__meta {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.ns-scat-card__tag {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--cat-color, #4B5BD4);
  line-height: 1;
}
.ns-scat-card__count {
  font-size: 0.78rem;
  color: var(--ns-text-muted);
  font-weight: 500;
}

.ns-scat-card__body {
  padding: 18px 22px 16px;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ns-scat-card__name {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--ns-text, #181A2C);
  margin: 0;
  line-height: 1.25;
}
.ns-scat-card__blurb {
  font-size: 0.845rem;
  color: var(--ns-text-muted, #6B7280);
  line-height: 1.6;
  margin: 0;
}

.ns-scat-card__foot {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 12px 22px 16px;
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--cat-color, var(--ns-primary));
  border-top: 1px solid var(--ns-border, #e5e7eb);
  transition: gap 0.18s;
}
.ns-scat-card:hover .ns-scat-card__foot { gap: 10px; }

/* Fallback for browsers without color-mix */
@supports not (color: color-mix(in srgb, red 10%, blue)) {
  .ns-scat-card__icon-wrap { background: #eef0fc; }
}

/* --- Trust strip ------------------------------------------ */
.ns-shop-trust-strip {
  background: #181A2C;
  padding: 36px 0;
}
.ns-shop-trust-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 32px;
}
@media (max-width: 960px) { .ns-shop-trust-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 540px) { .ns-shop-trust-grid { grid-template-columns: 1fr; } }

.ns-shop-trust-item {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  color: rgba(255,255,255,0.85);
}
.ns-shop-trust-item svg { flex-shrink: 0; margin-top: 2px; color: var(--ns-accent); }
.ns-shop-trust-item strong { display: block; font-size: 0.87rem; font-weight: 700; color: #fff; margin-bottom: 3px; }
.ns-shop-trust-item span  { font-size: 0.8rem; color: rgba(255,255,255,0.45); line-height: 1.5; }

/* --- All Products section ---------------------------------- */
.ns-shop-products-section { background: #fff; }

/* Reset WooCommerce float grid inside our layout */
.ns-shop-products-section ul.products {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 24px !important;
  float: none !important;
  width: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
  list-style: none !important;
}
@media (max-width: 900px) {
  .ns-shop-products-section ul.products { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 560px) {
  .ns-shop-products-section ul.products { grid-template-columns: 1fr !important; }
}
.ns-shop-products-section ul.products li.product {
  width: auto !important;
  float: none !important;
  margin: 0 !important;
  clear: none !important;
}

/* Sort bar */
.ns-shop-products-section .woocommerce-ordering,
.ns-shop-products-section .woocommerce-result-count { margin-bottom: 20px; }

/* ============================================================
   Nav dropdown — Shop → Categories
   ============================================================ */

/* Show submenu on hover */
.main-navigation ul li.menu-item-has-children:hover > ul.sub-menu,
.main-navigation ul li.menu-item-has-children:focus-within > ul.sub-menu {
  visibility: visible;
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

/* Style the Shop sub-menu */
.main-navigation ul li.ns-shop-parent > ul.sub-menu {
  display: block !important;
  visibility: hidden;
  opacity: 0;
  transform: translateY(-8px);
  transition: opacity 0.18s, transform 0.18s, visibility 0.18s;
  pointer-events: none;
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 220px;
  background: #fff;
  border: 1px solid var(--ns-border, #e5e7eb);
  border-radius: 10px;
  box-shadow: 0 12px 40px rgba(0,0,0,0.13);
  padding: 6px 0;
  z-index: 9999;
  list-style: none;
  margin: 0;
}
.main-navigation ul li.ns-shop-parent > ul.sub-menu li a {
  display: block;
  padding: 9px 18px;
  font-size: 0.875rem;
  color: var(--ns-text, #181A2C);
  font-weight: 500;
  text-decoration: none;
  transition: background 0.12s, color 0.12s;
  white-space: nowrap;
}
.main-navigation ul li.ns-shop-parent > ul.sub-menu li a:hover {
  background: #f7f8fc;
  color: var(--ns-primary);
}
.main-navigation ul li.ns-shop-parent { position: relative; }

/* Dropdown indicator arrow on "Shop" */
.main-navigation ul li.ns-shop-parent > a::after {
  content: '';
  display: inline-block;
  width: 0; height: 0;
  margin-left: 5px;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 4px solid currentColor;
  vertical-align: middle;
  opacity: 0.6;
}

/* ============================================================
   Patch 10b: Non-float sort bar + grid col-1 fix
   ============================================================ */

/* Clean flexbox sort bar, no floats */
.ns-shop-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--ns-border, #e5e7eb);
  flex-wrap: wrap;
}
.ns-shop-bar__count {
  font-size: 0.87rem;
  color: var(--ns-text-muted);
}
.ns-shop-bar__count strong { color: var(--ns-text); }
.ns-shop-bar__sort select {
  font-size: 0.85rem;
  padding: 7px 12px;
  border: 1px solid var(--ns-border, #e5e7eb);
  border-radius: 6px;
  background: #fff;
  color: var(--ns-text);
  cursor: pointer;
  outline: none;
}
.ns-shop-bar__sort select:focus { border-color: var(--ns-primary); }

/* Kill the default WooCommerce float sort bar (just in case it still renders) */
.ns-shop-products-section .woocommerce-ordering { display: none !important; }
.ns-shop-products-section .woocommerce-result-count { display: none !important; }
.ns-shop-products-section .woocommerce-notices-wrapper { display: none; }

/* Ensure grid starts from col 1 on first product */
.ns-shop-products-section ul.products li.product:first-child {
  grid-column-start: 1 !important;
}

/* ============================================================
   PATCH 11 — Full UI/UX Audit
   Pixel-perfect pass: spacing, color, typography, consistency
   ============================================================ */

/* ----------------------------------------------------------
   1. CATEGORY HERO — CRITICAL TEXT VISIBILITY FIX
   ---------------------------------------------------------- */

/* Title invisible on dark gradient — make white */
.ns-cat-hero .ns-page-hero__title {
  color: #fff !important;
  text-shadow: 0 1px 3px rgba(0,0,0,0.25);
}

/* Sub text muted gray → readable on dark */
.ns-cat-hero .ns-page-hero__sub {
  color: rgba(255,255,255,0.65) !important;
  font-size: 1.02rem;
}

/* Tag pill → dark-bg variant */
.ns-cat-hero .ns-page-hero__tag {
  color: #a0affe !important;
  background: rgba(75,91,212,0.18) !important;
  border-color: rgba(75,91,212,0.32) !important;
}

/* Dot grid → subtle white dots on dark bg */
.ns-cat-hero::before {
  background-image: radial-gradient(circle, rgba(255,255,255,0.07) 1px, transparent 1px) !important;
  background-size: 38px 38px !important;
  opacity: 1 !important;
}

/* More vertical breathing room for the hero */
.ns-cat-hero {
  padding-top: 84px !important;
  padding-bottom: 84px !important;
}

/* Slightly wider inner for longer category titles */
.ns-cat-hero .ns-page-hero__inner {
  max-width: 760px !important;
}

/* ----------------------------------------------------------
   2. DARK HERO CONSISTENCY (shop hero + cat hero)
   ---------------------------------------------------------- */

/* Both dark heroes share the same border-bottom */
.ns-cat-hero,
.ns-shop-hero {
  border-bottom: none !important;
}

/* Subtle gradient fade into page below */
.ns-cat-hero::after,
.ns-shop-hero::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.08) 50%, transparent 100%);
  pointer-events: none;
}

/* ----------------------------------------------------------
   3. SECTION SPACING — NORMALIZE ACROSS ALL SECTION TYPES
   ---------------------------------------------------------- */

/* Consistent section padding */
.ns-section {
  padding-top: 64px !important;
  padding-bottom: 64px !important;
}

/* Reduce vertical rhythm for stacks which have taller content */
.ns-stacks-section.ns-section {
  padding-top: 60px !important;
  padding-bottom: 60px !important;
}

/* Focus section stays white, slightly less padding */
.ns-focus-section.ns-section {
  padding-top: 56px !important;
  padding-bottom: 56px !important;
}

/* CTA band consistent */
.ns-cat-cta-band.ns-section {
  padding-top: 52px !important;
  padding-bottom: 52px !important;
}

/* Remove double-margin between the hero and first section */
.ns-cat-products-section { margin-top: 0 !important; }

/* ----------------------------------------------------------
   4. SECTION HEAD — CONSISTENT ACROSS ALL PAGES
   ---------------------------------------------------------- */

.ns-section-head {
  margin-bottom: 44px;
}
.ns-section-head__title {
  font-size: clamp(1.45rem, 2.4vw, 1.95rem) !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin: 0 0 10px !important;
  letter-spacing: -0.025em !important;
  line-height: 1.15 !important;
  font-family: 'Barlow Condensed', 'Inter', sans-serif !important;
}
.ns-section-head__sub {
  font-size: 0.94rem !important;
  color: var(--ns-text-muted) !important;
  margin: 0 !important;
  max-width: 560px !important;
  line-height: 1.65 !important;
}

/* Centered variant (shop page) */
.ns-section-head--center {
  text-align: center !important;
  max-width: 560px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  margin-bottom: 44px !important;
}
.ns-section-head--center .ns-section-head__sub {
  margin: 0 auto !important;
}

/* ----------------------------------------------------------
   5. CATEGORY PRODUCT CARDS (ns-cat-card) — POLISH
   ---------------------------------------------------------- */

.ns-cat-card {
  border-radius: 14px !important;
  border: 1.5px solid var(--ns-border) !important;
  transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease !important;
}
.ns-cat-card:hover {
  box-shadow: 0 12px 40px rgba(75,91,212,0.12) !important;
  transform: translateY(-4px) !important;
  border-color: var(--ns-primary) !important;
}

/* Fixed aspect ratio for product images */
.ns-cat-card__img {
  aspect-ratio: 4/3 !important;
  height: auto !important;
  background: #f4f5fb !important;
}
.ns-cat-card__img-el {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}

/* Badge */
.ns-cat-card__badge {
  background: var(--ns-accent) !important;
  font-size: 0.68rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  padding: 4px 9px !important;
  border-radius: 5px !important;
}

/* Card body */
.ns-cat-card__body {
  padding: 18px 20px 20px !important;
  gap: 6px !important;
}
.ns-cat-card__name {
  font-size: 0.98rem !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
  line-height: 1.3 !important;
  margin: 0 !important;
}
.ns-cat-card__price {
  font-size: 1.05rem !important;
  font-weight: 700 !important;
  color: var(--ns-primary) !important;
}
.ns-cat-card__cta {
  font-size: 0.82rem !important;
  font-weight: 600 !important;
  color: var(--ns-primary) !important;
  border-top: 1px solid var(--ns-border) !important;
  padding-top: 10px !important;
  margin-top: auto !important;
  gap: 6px !important;
  transition: gap 0.18s !important;
}
.ns-cat-card:hover .ns-cat-card__cta { gap: 10px !important; }

/* ----------------------------------------------------------
   6. STACK CARDS — VISUAL POLISH
   ---------------------------------------------------------- */

.ns-stacks-section { background: #f4f6fb !important; }

.ns-stack-card {
  border-radius: 14px !important;
  border: 1.5px solid var(--ns-border) !important;
  padding: 24px !important;
  transition: box-shadow 0.2s, border-color 0.2s !important;
}
.ns-stack-card:hover {
  box-shadow: 0 8px 28px rgba(75,91,212,0.10) !important;
  border-color: var(--ns-border-dark) !important;
}

/* Goal tag */
.ns-stack-card__goal-tag {
  font-size: 0.66rem !important;
  letter-spacing: 0.09em !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  color: var(--ns-accent) !important;
  margin-bottom: 8px !important;
  display: block !important;
}

/* Stack name */
.ns-stack-card__name {
  font-size: 1rem !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
  margin: 0 0 7px !important;
  line-height: 1.3 !important;
}

/* Stack description */
.ns-stack-card__desc {
  font-size: 0.84rem !important;
  color: var(--ns-text-muted) !important;
  line-height: 1.6 !important;
  margin: 0 !important;
}

/* Products mini-row */
.ns-stack-card__products {
  background: #eef0f8 !important;
  border-radius: 10px !important;
  padding: 14px !important;
  gap: 12px !important;
  min-height: 88px !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
}

/* Mini product thumbnails */
.ns-stack-mini__thumb {
  width: 54px !important;
  height: 54px !important;
  border-radius: 8px !important;
  border: 1.5px solid var(--ns-border) !important;
  background: #fff !important;
}
.ns-stack-mini__img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}
.ns-stack-mini__name {
  font-size: 0.7rem !important;
  font-weight: 600 !important;
  color: var(--ns-text) !important;
  max-width: 80px !important;
}
.ns-stack-mini__price {
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  color: var(--ns-primary) !important;
}

/* Plus sign */
.ns-stack-plus { color: var(--ns-text-light) !important; }

/* Footer */
.ns-stack-card__footer {
  border-top: 1px solid var(--ns-border) !important;
  padding-top: 14px !important;
  gap: 8px !important;
}
.ns-stack-card__total {
  font-size: 0.87rem !important;
  color: var(--ns-text) !important;
  font-weight: 500 !important;
}
.ns-stack-card__total strong { color: var(--ns-primary) !important; font-weight: 700 !important; }
.ns-stack-card__discount-hint {
  font-size: 0.76rem !important;
  color: var(--ns-accent) !important;
  font-weight: 600 !important;
}
.ns-stack-card__link {
  font-size: 0.78rem !important;
  font-weight: 600 !important;
  color: var(--ns-primary) !important;
}
.ns-stack-card__link:hover { text-decoration: underline !important; }

/* ----------------------------------------------------------
   7. RESEARCH FOCUS SECTION
   ---------------------------------------------------------- */

.ns-focus-section { background: #fff !important; }

.ns-focus-grid {
  display: grid !important;
  grid-template-columns: repeat(2, 1fr) !important;
  gap: 14px 40px !important;
}
@media (max-width: 640px) { .ns-focus-grid { grid-template-columns: 1fr !important; } }

.ns-focus-item {
  display: flex !important;
  align-items: flex-start !important;
  gap: 12px !important;
  font-size: 0.9rem !important;
  color: var(--ns-text) !important;
  line-height: 1.55 !important;
  padding: 10px 0 !important;
  border-bottom: 1px solid var(--ns-border) !important;
}
.ns-focus-grid .ns-focus-item:nth-last-child(-n+2) { border-bottom: none !important; }
@media (max-width: 640px) { .ns-focus-item:last-child { border-bottom: none !important; } }

.ns-focus-item__icon {
  width: 24px !important;
  height: 24px !important;
  border-radius: 50% !important;
  background: var(--ns-primary) !important;
  color: #fff !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-shrink: 0 !important;
  margin-top: 1px !important;
}

/* ----------------------------------------------------------
   8. CATEGORY CTA BAND — TRUST ITEMS
   ---------------------------------------------------------- */

.ns-cat-cta-band { background: #181A2C !important; }

.ns-cat-cta-item {
  display: flex !important;
  align-items: flex-start !important;
  gap: 14px !important;
}
.ns-cat-cta-item__icon { color: var(--ns-accent) !important; flex-shrink: 0 !important; margin-top: 2px !important; }
.ns-cat-cta-item strong {
  display: block !important;
  font-size: 0.87rem !important;
  font-weight: 700 !important;
  color: #fff !important;
  margin-bottom: 4px !important;
}
.ns-cat-cta-item span {
  font-size: 0.81rem !important;
  color: rgba(255,255,255,0.48) !important;
  line-height: 1.55 !important;
}

/* Responsive: 2-col on tablet */
@media (max-width: 960px) { .ns-cat-cta-grid { grid-template-columns: repeat(2, 1fr) !important; } }
@media (max-width: 520px) { .ns-cat-cta-grid { grid-template-columns: 1fr !important; } }

/* ----------------------------------------------------------
   9. SHOP PAGE CATEGORY CARDS — CENTER ORPHAN ROW
   ---------------------------------------------------------- */

/* 5 cards in 3-col: last 2 center themselves */
@media (min-width: 961px) {
  .ns-shop-cat-grid {
    justify-items: stretch;
  }
  /* Push the 4th item to start at col 2 so the pair is visually centered */
  .ns-shop-cat-grid .ns-scat-card:nth-child(4) {
    grid-column-start: 1 !important;
  }
  .ns-shop-cat-grid .ns-scat-card:nth-last-child(-n+2):first-child ~ .ns-scat-card:nth-last-child(-n+2) {
    grid-column-start: auto !important;
  }
}

/* ----------------------------------------------------------
   10. SHOP PRODUCT CARDS (WooCommerce default) — REFINEMENTS
   ---------------------------------------------------------- */

ul.products li.product {
  border-radius: 14px !important;
  border: 1.5px solid var(--ns-border) !important;
}
ul.products li.product img {
  height: auto !important;
  aspect-ratio: 4/3 !important;
  object-fit: cover !important;
  border-bottom: 1px solid var(--ns-border) !important;
}
ul.products li.product .woocommerce-loop-product__title {
  font-size: 0.93rem !important;
  font-weight: 700 !important;
  padding: 16px 18px 4px !important;
}
ul.products li.product .price {
  padding: 4px 18px 12px !important;
  font-size: 1rem !important;
}
ul.products li.product .button {
  margin: 0 18px 18px !important;
  width: calc(100% - 36px) !important;
}

/* ----------------------------------------------------------
   11. SINGLE PRODUCT PAGE — CONSISTENCY
   ---------------------------------------------------------- */

/* Ensure the product page uses full ns-max width */
body.single-product .ns-section__inner,
body.woocommerce-page .ns-section__inner {
  max-width: var(--ns-max) !important;
}

/* Related products heading */
.woocommerce .related.products > h2 {
  font-size: 1.5rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin-bottom: 28px !important;
  font-family: 'Barlow Condensed', 'Inter', sans-serif !important;
  letter-spacing: -0.02em !important;
}

/* Related products grid — same style as shop grid */
.woocommerce .related.products ul.products {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 20px !important;
  float: none !important;
  width: 100% !important;
}
@media (max-width: 900px) {
  .woocommerce .related.products ul.products { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 560px) {
  .woocommerce .related.products ul.products { grid-template-columns: 1fr !important; }
}
.woocommerce .related.products ul.products li.product {
  width: auto !important;
  float: none !important;
  margin: 0 !important;
}

/* Tabs */
.woocommerce div.product .woocommerce-tabs {
  border-top: 1px solid var(--ns-border);
  margin-top: 40px;
}
.woocommerce div.product .woocommerce-tabs ul.tabs {
  display: flex !important;
  gap: 0 !important;
  background: transparent !important;
  border-bottom: 1px solid var(--ns-border) !important;
  padding: 0 !important;
  margin: 0 !important;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li {
  border: none !important;
  background: transparent !important;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li a {
  display: block !important;
  padding: 12px 20px !important;
  font-size: 0.9rem !important;
  font-weight: 600 !important;
  color: var(--ns-text-muted) !important;
  border-bottom: 2px solid transparent !important;
  transition: color 0.15s, border-color 0.15s !important;
  white-space: nowrap !important;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a,
.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover {
  color: var(--ns-primary) !important;
  border-bottom-color: var(--ns-primary) !important;
}
.woocommerce div.product .woocommerce-tabs .panel {
  padding: 28px 0 !important;
  font-size: 0.92rem !important;
  color: var(--ns-text) !important;
  line-height: 1.75 !important;
}

/* ----------------------------------------------------------
   12. SHIPPING PAGE — CONSISTENCY
   ---------------------------------------------------------- */

/* Shipping hero uses light bg — make it slightly more distinct */
.page-template-page-templates-shipping .ns-page-hero {
  background: linear-gradient(155deg, #EEF1FF 0%, #F8F9FF 60%, #FEF2F8 100%) !important;
  padding-top: 72px !important;
  padding-bottom: 68px !important;
}

/* Key facts cards */
.ns-ship-fact {
  border-radius: 12px !important;
  border: 1.5px solid var(--ns-border) !important;
  padding: 20px !important;
  transition: box-shadow 0.18s !important;
}
.ns-ship-fact:hover { box-shadow: 0 6px 20px rgba(75,91,212,0.08) !important; }
.ns-ship-fact__icon { color: var(--ns-primary) !important; }
.ns-ship-fact__text strong { font-size: 0.88rem !important; font-weight: 700 !important; }
.ns-ship-fact__text span { font-size: 0.82rem !important; color: var(--ns-text-muted) !important; }

/* Policy cards */
.ns-ship-policy-card {
  border-radius: 12px !important;
  border: 1.5px solid var(--ns-border) !important;
  transition: box-shadow 0.18s, border-color 0.18s !important;
}
.ns-ship-policy-card:hover {
  box-shadow: 0 6px 20px rgba(75,91,212,0.08) !important;
  border-color: var(--ns-border-dark) !important;
}
.ns-ship-policy-card h3 { font-weight: 700 !important; color: var(--ns-text) !important; }
.ns-ship-policy-card p { color: var(--ns-text-muted) !important; line-height: 1.65 !important; }

/* FAQ */
.ns-faq-q {
  font-size: 0.93rem !important;
  font-weight: 600 !important;
  color: var(--ns-text) !important;
}
.ns-faq-a p { color: var(--ns-text-muted) !important; }

/* ----------------------------------------------------------
   13. NAVIGATION — CONSISTENT ACTIVE STATE + DROPDOWN POLISH
   ---------------------------------------------------------- */

/* Dropdown submenu padding */
.main-navigation ul li.ns-shop-parent > ul.sub-menu {
  min-width: 230px !important;
  border-radius: 12px !important;
  box-shadow: 0 16px 48px rgba(0,0,0,0.14), 0 0 0 1px rgba(0,0,0,0.05) !important;
  border: none !important;
  overflow: hidden !important;
  padding: 8px 0 !important;
}
.main-navigation ul li.ns-shop-parent > ul.sub-menu li a {
  padding: 10px 18px !important;
  font-size: 0.87rem !important;
  font-weight: 500 !important;
  border-left: 3px solid transparent !important;
  transition: background 0.12s, color 0.12s, border-color 0.12s !important;
}
.main-navigation ul li.ns-shop-parent > ul.sub-menu li a:hover {
  background: var(--ns-primary-light) !important;
  color: var(--ns-primary) !important;
  border-left-color: var(--ns-primary) !important;
}

/* ----------------------------------------------------------
   14. FOOTER — CONSISTENT LINK COLORS AND SPACING
   ---------------------------------------------------------- */

.ns-footer-col h4 {
  font-size: 0.75rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.1em !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,0.35) !important;
  margin-bottom: 14px !important;
}
.ns-footer-col a {
  font-size: 0.87rem !important;
  color: rgba(255,255,255,0.62) !important;
  line-height: 1 !important;
  transition: color 0.15s !important;
}
.ns-footer-col a:hover { color: #fff !important; }
.ns-footer-col li { margin-bottom: 10px !important; list-style: none !important; }
.ns-footer-col ul { margin: 0 !important; padding: 0 !important; }

/* ----------------------------------------------------------
   15. GLOBAL MICRO-POLISH
   ---------------------------------------------------------- */

/* Consistent border-radius for cards and containers */
:root {
  --ns-radius:    6px;
  --ns-radius-lg: 12px;
  --ns-radius-xl: 16px;
}

/* Smooth scroll for anchor links (Browse Categories, All Products) */
html { scroll-behavior: smooth; }

/* Ensure all section backgrounds are opaque (prevent bleed) */
.ns-cat-products-section { background: #fff !important; }
.ns-stacks-section       { background: #f4f6fb !important; }
.ns-focus-section        { background: #fff !important; }

/* Remove any ghost margin from GP's .site-content */
.ns-inner-page + .site-content { margin-top: 0 !important; }

/* Ensure images within custom cards load at correct size */
.ns-cat-card img,
.ns-scat-card img,
.ns-stack-mini__img {
  display: block !important;
}

/* Placeholder backgrounds should match light theme */
.ns-cat-card__img-placeholder {
  background: linear-gradient(135deg, #f0f2fb 0%, #e8eaf6 100%) !important;
  width: 100% !important;
  height: 100% !important;
}

/* Ensure WC notices don't break layout */
.woocommerce-notices-wrapper:empty { display: none !important; }

/* Consistent link underline behavior across text content */
.ns-faq-a a,
.ns-ship-policy-card a,
.ns-stack-card__link { text-decoration: none !important; }
.ns-faq-a a:hover,
.ns-ship-policy-card a:hover { text-decoration: underline !important; }

/* Ensure the shop page sort bar is clean */
.ns-shop-bar select:focus-visible { outline: 2px solid var(--ns-primary); outline-offset: 2px; }

/* Hero action buttons — consistent sizing */
.ns-shop-hero__actions .ns-btn--primary,
.ns-shop-hero__actions .ns-btn--ghost-dark {
  padding: 12px 26px !important;
  font-size: 0.9rem !important;
}

/* Active nav item highlight */
.main-navigation .current-menu-item > a,
.main-navigation .current-page-ancestor > a {
  color: var(--ns-primary) !important;
  font-weight: 600 !important;
}

/* Mobile: collapse dropdown properly */
@media (max-width: 768px) {
  .main-navigation ul li.ns-shop-parent > ul.sub-menu {
    position: static !important;
    visibility: visible !important;
    opacity: 1 !important;
    transform: none !important;
    box-shadow: none !important;
    border: none !important;
    background: transparent !important;
    padding: 0 0 0 16px !important;
  }
  .main-navigation ul li.ns-shop-parent > ul.sub-menu li a {
    border-left: none !important;
    color: var(--ns-text-muted) !important;
    font-size: 0.85rem !important;
    padding: 6px 0 !important;
  }
}

/* ----------------------------------------------------------
   16. RESPONSIVE CONSISTENCY
   ---------------------------------------------------------- */

@media (max-width: 768px) {
  .ns-section { padding-top: 48px !important; padding-bottom: 48px !important; }
  .ns-cat-hero { padding-top: 56px !important; padding-bottom: 56px !important; }
  .ns-section-head { margin-bottom: 32px !important; }
  .ns-cat-grid { grid-template-columns: repeat(2, 1fr) !important; gap: 16px !important; }
  .ns-stack-grid { grid-template-columns: 1fr !important; }
  .ns-shop-cat-grid { grid-template-columns: 1fr 1fr !important; gap: 16px !important; }
}

@media (max-width: 520px) {
  .ns-cat-grid { grid-template-columns: 1fr !important; }
  .ns-shop-cat-grid { grid-template-columns: 1fr !important; }
  .ns-focus-grid { grid-template-columns: 1fr !important; }
}

/* ============================================================
   PATCH 12 — Remaining audit fixes
   ============================================================ */

/* ----------------------------------------------------------
   1. SHOP CATEGORY GRID — CENTER ORPHAN LAST ROW
   5 cards in a 3-col grid: use a 6-col base so the last 2
   sit at columns 2–3 and 4–5 (visually centered).
   ---------------------------------------------------------- */
@media (min-width: 961px) {
  .ns-shop-cat-grid {
    grid-template-columns: repeat(6, 1fr) !important;
  }
  .ns-scat-card {
    grid-column: span 2 !important;
  }
  /* Center the 4th card at col 2 → cards 4+5 land at 2–3 and 4–5 */
  .ns-shop-cat-grid .ns-scat-card:nth-child(4) {
    grid-column: 2 / span 2 !important;
  }
  .ns-shop-cat-grid .ns-scat-card:nth-child(5) {
    grid-column: 4 / span 2 !important;
  }
}

@media (max-width: 960px) and (min-width: 561px) {
  .ns-shop-cat-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  .ns-scat-card { grid-column: span 1 !important; }
  .ns-shop-cat-grid .ns-scat-card:nth-child(4),
  .ns-shop-cat-grid .ns-scat-card:nth-child(5) {
    grid-column: auto !important;
  }
}

@media (max-width: 560px) {
  .ns-shop-cat-grid {
    grid-template-columns: 1fr !important;
  }
  .ns-scat-card { grid-column: span 1 !important; }
  .ns-shop-cat-grid .ns-scat-card:nth-child(4),
  .ns-shop-cat-grid .ns-scat-card:nth-child(5) {
    grid-column: auto !important;
  }
}

/* ----------------------------------------------------------
   2. RELATED PRODUCTS — Fix float-offset col-1 start bug
   ---------------------------------------------------------- */
.woocommerce .related.products ul.products li.product:first-child {
  grid-column-start: 1 !important;
}

/* Also clear any float-induced offset on related products wrapper */
.woocommerce .related.products {
  clear: both !important;
  overflow: hidden !important;
}

/* ----------------------------------------------------------
   3. NAV DROPDOWN — Wider to prevent text wrap
   ---------------------------------------------------------- */
.main-navigation ul li.ns-shop-parent > ul.sub-menu {
  min-width: 250px !important;
}
.main-navigation ul li.ns-shop-parent > ul.sub-menu li a {
  white-space: nowrap !important;
}

/* ----------------------------------------------------------
   4. STACK GOAL TAGS — Prevent awkward wrap
   ---------------------------------------------------------- */
.ns-stack-card__goal-tag {
  font-size: 0.62rem !important;
  letter-spacing: 0.07em !important;
  line-height: 1.4 !important;
  max-width: 100% !important;
  display: block !important;
}

/* ----------------------------------------------------------
   5. PRODUCT DETAIL — Section padding + related heading
   ---------------------------------------------------------- */

/* Add clear spacing above the tabs area */
.woocommerce div.product .woocommerce-tabs {
  margin-top: 48px !important;
  padding-top: 0 !important;
}

/* Tab panel readable typography */
.woocommerce div.product .woocommerce-tabs .panel h2 {
  font-size: 1.25rem !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
  margin-bottom: 16px !important;
}
.woocommerce div.product .woocommerce-tabs .panel p,
.woocommerce div.product .woocommerce-tabs .panel li {
  font-size: 0.91rem !important;
  color: var(--ns-text-muted) !important;
  line-height: 1.75 !important;
}

/* Related products heading consistent with section heads */
.woocommerce .related.products > h2 {
  font-family: 'Barlow Condensed', 'Inter', sans-serif !important;
  font-size: 1.7rem !important;
  font-weight: 800 !important;
  letter-spacing: -0.02em !important;
  color: var(--ns-text) !important;
  margin-bottom: 28px !important;
}

/* Related products section top spacing */
.woocommerce .related.products {
  margin-top: 56px !important;
  padding-top: 40px !important;
  border-top: 1px solid var(--ns-border) !important;
}

/* ----------------------------------------------------------
   6. WC PRODUCT CARDS — Ensure aspect ratio even when no img
   ---------------------------------------------------------- */

/* When image is lazy-loaded blank, preserve height via aspect ratio */
ul.products li.product a.woocommerce-LoopProduct-link img,
.woocommerce .related.products ul.products li.product img {
  aspect-ratio: 4/3 !important;
  width: 100% !important;
  height: auto !important;
  object-fit: cover !important;
  display: block !important;
  background: #f0f2fb !important;
}

/* ----------------------------------------------------------
   7. SHOP PRODUCTS SECTION — Remove result count duplication
   ---------------------------------------------------------- */
.ns-shop-products-section .woocommerce-notices-wrapper { display: none !important; }

/* ----------------------------------------------------------
   8. CATEGORY PAGES — Focus section bottom border cleanup
   ---------------------------------------------------------- */

/* Last two items in focus grid get no bottom border */
@media (min-width: 641px) {
  .ns-focus-grid .ns-focus-item:nth-last-child(-n+2) {
    border-bottom: none !important;
  }
}
@media (max-width: 640px) {
  .ns-focus-grid .ns-focus-item:last-child {
    border-bottom: none !important;
  }
}

/* ----------------------------------------------------------
   9. SECTION BACKGROUNDS — Ensure no bleed between sections
   ---------------------------------------------------------- */

.ns-cat-products-section { background: #ffffff !important; }
.ns-stacks-section       { background: #f4f6fb !important; }
.ns-focus-section        { background: #ffffff !important; }

/* Ensure the stacks section divider is clean */
.ns-stacks-section {
  border-top: 1px solid var(--ns-border) !important;
  border-bottom: 1px solid var(--ns-border) !important;
}

/* ----------------------------------------------------------
   10. SHIPPING PAGE SECTION BACKGROUNDS
   ---------------------------------------------------------- */
.ns-ship-facts-section  { background: #f4f6fb !important; }
.ns-ship-rates-section  { background: #ffffff !important; }
.ns-ship-policies-section { background: #f4f6fb !important; }
.ns-ship-faq-section    { background: #ffffff !important; }
.ns-ship-contact-band   { background: #f4f6fb !important; }

/* ----------------------------------------------------------
   11. GLOBAL — Smooth hover on all interactive cards
   ---------------------------------------------------------- */

/* All card hover effects use the same easing and shadow */
.ns-cat-card,
.ns-stack-card,
.ns-scat-card,
.ns-ship-fact,
.ns-ship-policy-card {
  will-change: transform, box-shadow !important;
}

/* ----------------------------------------------------------
   12. HOME PAGE — ensure featured section product grid clean
   ---------------------------------------------------------- */

/* On home page, WC product loop should start at col 1 */
.ns-home-products ul.products li.product:first-child,
.woocommerce ul.products.columns-4 li.product:first-child,
.woocommerce ul.products.columns-3 li.product:first-child {
  grid-column-start: 1 !important;
}

/* ============================================================
   PATCH 13 — Nav dropdown + final polish
   ============================================================ */

/* ----------------------------------------------------------
   1. NAV DROPDOWN — Broader selector (ns-shop-parent class
      was serialized incorrectly in DB; now fixed, but keep
      a general rule as belt-and-suspenders)
   ---------------------------------------------------------- */
.main-navigation ul ul.sub-menu {
  min-width: 240px !important;
}
.main-navigation ul ul.sub-menu li a {
  white-space: nowrap !important;
  padding-left: 20px !important;
  padding-right: 20px !important;
}

/* ns-shop-parent now correctly applied — also style the Shop nav item */
.main-navigation li.ns-shop-parent > a {
  font-weight: 600 !important;
}

/* ============================================================
   PATCH 14 — Unify hero style: shop + category → light
   Match the clean light hero used on shipping / about pages
   ============================================================ */

/* ----------------------------------------------------------
   SHOP HERO — replace dark navy with light gradient
   ---------------------------------------------------------- */
.ns-shop-hero {
  background: linear-gradient(155deg, #F2F5FF 0%, #FAFBFF 60%, #FDF2F7 100%) !important;
  border-bottom: 1px solid var(--ns-border) !important;
  padding: 72px 24px 64px !important;
}

/* Light dot pattern (matching base .ns-page-hero) */
.ns-shop-hero::before {
  background-image: radial-gradient(circle, #C5CDEF 1px, transparent 1px) !important;
  background-size: 38px 38px !important;
  opacity: 0.28 !important;
}

/* Kill the gradient fade line */
.ns-shop-hero::after { display: none !important; }

/* Tag pill → brand colors on light bg */
.ns-shop-hero .ns-page-hero__tag {
  color: var(--ns-primary) !important;
  background: var(--ns-primary-light) !important;
  border-color: var(--ns-border-dark) !important;
}

/* Title → dark */
.ns-shop-hero .ns-page-hero__title {
  color: var(--ns-text) !important;
  font-size: clamp(2.2rem, 4vw, 3.4rem) !important;
}

/* Subtitle → muted dark */
.ns-shop-hero .ns-page-hero__sub {
  color: var(--ns-text-muted) !important;
  margin: 0 auto 28px !important;
}

/* Badges → dark text + brand-color checkmark icons */
.ns-shop-hero__badge {
  color: var(--ns-text-muted) !important;
}
.ns-shop-hero__badge svg {
  color: var(--ns-primary) !important;
}

/* Ghost button → light bg variant */
.ns-btn--ghost-dark {
  background: transparent !important;
  border-color: var(--ns-border-dark) !important;
  color: var(--ns-text-muted) !important;
}
.ns-btn--ghost-dark:hover {
  border-color: var(--ns-primary) !important;
  color: var(--ns-primary) !important;
  background: var(--ns-primary-light) !important;
}

/* ----------------------------------------------------------
   CATEGORY HERO — replace dark navy with light gradient
   ---------------------------------------------------------- */
.ns-cat-hero {
  background: linear-gradient(155deg, #F2F5FF 0%, #FAFBFF 60%, #FDF2F7 100%) !important;
  border-bottom: 1px solid var(--ns-border) !important;
  padding-top: 72px !important;
  padding-bottom: 64px !important;
}

/* Kill the gradient fade line */
.ns-cat-hero::after { display: none !important; }

/* Light dot pattern */
.ns-cat-hero::before {
  background-image: radial-gradient(circle, #C5CDEF 1px, transparent 1px) !important;
  background-size: 38px 38px !important;
  opacity: 0.28 !important;
}

/* Title → dark */
.ns-cat-hero .ns-page-hero__title {
  color: var(--ns-text) !important;
  text-shadow: none !important;
}

/* Subtitle → muted dark */
.ns-cat-hero .ns-page-hero__sub {
  color: var(--ns-text-muted) !important;
}

/* Tag pill → brand colors on light bg */
.ns-cat-hero .ns-page-hero__tag {
  color: var(--ns-primary) !important;
  background: var(--ns-primary-light) !important;
  border-color: var(--ns-border-dark) !important;
}

/* Also unset the legacy dark bg set earlier in the file */
.ns-cat-hero,
.ns-shop-hero {
  background: linear-gradient(155deg, #F2F5FF 0%, #FAFBFF 60%, #FDF2F7 100%) !important;
  border-bottom: 1px solid var(--ns-border) !important;
}

/* ----------------------------------------------------------
   SHOP TRUST STRIP — dark strip now on light page needs flip
   ---------------------------------------------------------- */
.ns-shop-trust {
  background: #fff !important;
  border-top: 1px solid var(--ns-border) !important;
  border-bottom: 1px solid var(--ns-border) !important;
}
.ns-trust-item {
  color: var(--ns-text-muted) !important;
}
.ns-trust-item svg,
.ns-trust-item__icon {
  color: var(--ns-primary) !important;
}

/* ============================================================
   PATCH 15 — Shop page comprehensive redesign
   Fix: section contrast, trust strip light, card cleanup,
   product image placeholders
   ============================================================ */

/* ----------------------------------------------------------
   1. SECTION CONTRAST
   Hero: light gradient (existing)
   Categories: WHITE — clear break from hero
   Trust strip: #f4f6fb light blue-gray
   Products: WHITE
   ---------------------------------------------------------- */
.ns-shop-cats-section {
  background: #ffffff !important;
  padding-top: 64px !important;
  padding-bottom: 64px !important;
  border-bottom: 1px solid var(--ns-border) !important;
}

.ns-shop-trust-strip {
  background: #f4f6fb !important;
  border-top: none !important;
  border-bottom: 1px solid var(--ns-border) !important;
  padding: 48px 0 !important;
}

.ns-shop-products-section {
  background: #ffffff !important;
  padding-top: 56px !important;
  padding-bottom: 80px !important;
}

/* Hero bottom border for clean edge into white */
.ns-shop-hero {
  border-bottom: 1px solid var(--ns-border) !important;
}

/* ----------------------------------------------------------
   2. TRUST STRIP — Light style text/icons
   ---------------------------------------------------------- */
.ns-shop-trust-item {
  color: var(--ns-text) !important;
}
.ns-shop-trust-item svg {
  color: var(--ns-primary) !important;
  width: 28px !important;
  height: 28px !important;
  flex-shrink: 0 !important;
}
.ns-shop-trust-item strong {
  color: var(--ns-text) !important;
  font-size: 0.9rem !important;
  margin-bottom: 2px !important;
}
.ns-shop-trust-item span {
  color: var(--ns-text-muted) !important;
  font-size: 0.8rem !important;
  line-height: 1.5 !important;
}

/* ----------------------------------------------------------
   3. CATEGORY CARDS — Remove divider lines, unify zones
   ---------------------------------------------------------- */
.ns-scat-card {
  border-radius: 12px !important;
  border: 1.5px solid var(--ns-border) !important;
  box-shadow: 0 1px 4px rgba(0,0,0,0.05) !important;
}
.ns-scat-card:hover {
  box-shadow: 0 8px 32px rgba(75,91,212,0.12) !important;
  transform: translateY(-3px) !important;
  border-color: var(--cat-color, var(--ns-primary)) !important;
}

/* Head — remove divider border, tighten */
.ns-scat-card__head {
  border-bottom: none !important;
  padding: 24px 22px 10px !important;
}
.ns-scat-card__head::before {
  height: 4px !important;
  border-radius: 12px 12px 0 0 !important;
}

/* Icon */
.ns-scat-card__icon-wrap {
  width: 44px !important;
  height: 44px !important;
  border-radius: 10px !important;
}
.ns-scat-card__icon-wrap svg {
  width: 22px !important;
  height: 22px !important;
}

/* Body — tighten top gap since no border separating it */
.ns-scat-card__body {
  padding: 6px 22px 12px !important;
  gap: 6px !important;
}
.ns-scat-card__name {
  font-size: 1.01rem !important;
  font-weight: 700 !important;
  margin: 0 !important;
  line-height: 1.2 !important;
}
.ns-scat-card__blurb {
  font-size: 0.82rem !important;
  line-height: 1.55 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 3 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
}

/* Foot — remove border-top, just a link row */
.ns-scat-card__foot {
  border-top: none !important;
  padding: 0 22px 20px !important;
  font-size: 0.8rem !important;
  font-weight: 700 !important;
}

/* ----------------------------------------------------------
   4. HERO BUTTONS — Ghost on light bg
   ---------------------------------------------------------- */
.ns-shop-hero__actions .ns-btn--ghost-dark {
  border: 1.5px solid rgba(24,26,44,0.2) !important;
  color: var(--ns-text-muted) !important;
  background: transparent !important;
}
.ns-shop-hero__actions .ns-btn--ghost-dark:hover {
  border-color: var(--ns-primary) !important;
  color: var(--ns-primary) !important;
  background: var(--ns-primary-light) !important;
}

/* ----------------------------------------------------------
   5. PRODUCT CARDS — Constrain image height, clean card UI
   ---------------------------------------------------------- */
ul.products li.product .woocommerce-LoopProduct-link img,
.woocommerce ul.products li.product img {
  aspect-ratio: 4 / 3 !important;
  max-height: 210px !important;
  width: 100% !important;
  object-fit: cover !important;
  object-position: center !important;
  display: block !important;
  background: linear-gradient(145deg, #eef0fb 0%, #e4e8f5 100%) !important;
}

ul.products li.product {
  border-radius: 12px !important;
  border: 1.5px solid var(--ns-border) !important;
  background: #fff !important;
  overflow: hidden !important;
  transition: box-shadow 0.2s, transform 0.2s, border-color 0.2s !important;
  display: flex !important;
  flex-direction: column !important;
  box-shadow: 0 1px 4px rgba(0,0,0,0.04) !important;
}
ul.products li.product:hover {
  box-shadow: 0 8px 28px rgba(75,91,212,0.10) !important;
  transform: translateY(-2px) !important;
  border-color: var(--ns-primary) !important;
}

ul.products li.product .woocommerce-loop-product__title,
ul.products li.product h2 {
  font-size: 0.9rem !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
  padding: 14px 16px 4px !important;
  margin: 0 !important;
  line-height: 1.3 !important;
}

ul.products li.product .price {
  padding: 0 16px 12px !important;
  margin: 0 !important;
  display: block !important;
  font-weight: 700 !important;
  font-size: 0.94rem !important;
}
ul.products li.product .price .amount {
  color: var(--ns-primary) !important;
}

ul.products li.product .button,
ul.products li.product .add_to_cart_button {
  margin: auto 16px 16px !important;
  width: calc(100% - 32px) !important;
  display: block !important;
  box-sizing: border-box !important;
  text-align: center !important;
}

/* Sort bar cleanup */
.ns-shop-bar {
  background: #fff !important;
  border: 1.5px solid var(--ns-border) !important;
  border-radius: 8px !important;
  padding: 10px 16px !important;
  margin-bottom: 28px !important;
}

/* ============================================================
   PATCH 16 — Stack card pricing redesign
   Real-anchor strikethrough + Save ฿X + Protocol CTA button
   + Updated tier language
   ============================================================ */

/* ----------------------------------------------------------
   STACK CARD FOOTER — new pricing layout
   ---------------------------------------------------------- */
.ns-stack-card__footer {
  border-top: 1px solid var(--ns-border) !important;
  padding: 20px 24px 20px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 16px !important;
}

/* Pricing block */
.ns-stack-card__pricing {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* Individual total row — strikethrough anchor */
.ns-stack-card__anchor-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.ns-stack-card__anchor-label {
  font-size: 0.75rem;
  color: var(--ns-text-muted);
  font-weight: 500;
}
.ns-stack-card__anchor-price {
  font-size: 0.88rem;
  color: var(--ns-text-muted);
  text-decoration: line-through;
  text-decoration-color: var(--ns-accent);
  text-decoration-thickness: 2px;
}

/* Bundle price row */
.ns-stack-card__bundle-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.ns-stack-card__bundle-label {
  font-size: 0.75rem;
  color: var(--ns-text-muted);
  font-weight: 500;
}
.ns-stack-card__bundle-price {
  font-size: 1.25rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  line-height: 1 !important;
}
.ns-stack-card__bundle-price .woocommerce-Price-currencySymbol {
  font-size: 0.85em;
}

/* Save badge — green highlight */
.ns-stack-card__save-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.78rem;
  font-weight: 700;
  color: #047857;
  background: #d1fae5;
  border: 1px solid #6ee7b7;
  border-radius: 50px;
  padding: 4px 12px;
  width: fit-content;
  letter-spacing: 0.01em;
}

/* CTA button — full width, prominent */
.ns-stack-card__cta {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  width: 100% !important;
  padding: 13px 20px !important;
  font-size: 0.9rem !important;
  font-weight: 700 !important;
  border-radius: 8px !important;
  text-decoration: none !important;
  background: var(--ns-primary) !important;
  color: #fff !important;
  transition: background 0.18s, transform 0.15s !important;
  box-sizing: border-box !important;
}
.ns-stack-card__cta:hover {
  background: #3a4bc0 !important;
  transform: translateY(-1px) !important;
  color: #fff !important;
  text-decoration: none !important;
}

/* Individual product links — secondary, smaller */
.ns-stack-card__links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding-top: 4px;
}
.ns-stack-card__link {
  font-size: 0.75rem !important;
  color: var(--ns-text-muted) !important;
  text-decoration: none !important;
  border-bottom: 1px solid var(--ns-border) !important;
  padding-bottom: 1px !important;
  transition: color 0.15s !important;
}
.ns-stack-card__link:hover {
  color: var(--ns-primary) !important;
  border-color: var(--ns-primary) !important;
}

/* ----------------------------------------------------------
   REMOVE old discount hint (hide if any still renders)
   ---------------------------------------------------------- */
.ns-stack-card__discount-hint {
  display: none !important;
}

/* ----------------------------------------------------------
   TIER LABEL — update "Bulk discounts" badge on cat cards
   ---------------------------------------------------------- */
.ns-cat-card__badge {
  font-size: 0.68rem !important;
}

/* ----------------------------------------------------------
   WC TIER PRICING TABLE — relabel visual presentation
   The plugin renders its own table; style it to match
   ---------------------------------------------------------- */
.tier-pricing-table table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.85rem;
}
.tier-pricing-table th {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ns-text-muted);
  padding: 8px 12px;
  border-bottom: 2px solid var(--ns-border);
  text-align: left;
}
.tier-pricing-table td {
  padding: 9px 12px;
  border-bottom: 1px solid var(--ns-border);
  color: var(--ns-text);
}
.tier-pricing-table tr:last-child td {
  border-bottom: none;
}
/* Highlight ×3 as "Lab Recommended" */
.tier-pricing-table tr:nth-child(3) td {
  font-weight: 700;
  color: var(--ns-primary);
  background: var(--ns-primary-light);
}

/* ============================================================
   PATCH 17 — Product page stack cross-sell widget
   ============================================================ */

.ns-stack-crosssell {
  margin-top: 28px;
  border: 1.5px solid var(--ns-border);
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
}

.ns-stack-crosssell__header {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 13px 18px;
  background: var(--ns-primary-light);
  border-bottom: 1.5px solid var(--ns-border);
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--ns-primary);
  letter-spacing: 0.01em;
}
.ns-stack-crosssell__header svg {
  flex-shrink: 0;
  color: var(--ns-primary);
}

.ns-stack-crosssell__list {
  display: flex;
  flex-direction: column;
}

.ns-stack-crosssell__item {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: 16px;
  padding: 16px 18px;
  border-bottom: 1px solid var(--ns-border);
  transition: background 0.15s;
}
.ns-stack-crosssell__item:last-child {
  border-bottom: none;
}
.ns-stack-crosssell__item:hover {
  background: #fafbff;
}

/* Stack name + components */
.ns-stack-crosssell__info {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}
.ns-stack-crosssell__name {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--ns-text);
  line-height: 1.2;
}
.ns-stack-crosssell__with {
  font-size: 0.75rem;
  color: var(--ns-text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Pricing column */
.ns-stack-crosssell__pricing {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
  flex-shrink: 0;
}
.ns-stack-crosssell__anchor {
  font-size: 0.75rem;
  color: var(--ns-text-muted);
  text-decoration: line-through;
  text-decoration-color: var(--ns-accent);
  text-decoration-thickness: 1.5px;
}
.ns-stack-crosssell__price {
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--ns-text);
  line-height: 1;
}
.ns-stack-crosssell__save {
  font-size: 0.7rem;
  font-weight: 700;
  color: #047857;
  background: #d1fae5;
  border-radius: 50px;
  padding: 2px 8px;
  white-space: nowrap;
}

/* CTA button */
.ns-stack-crosssell__btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  background: var(--ns-primary);
  color: #fff !important;
  font-size: 0.78rem;
  font-weight: 700;
  padding: 9px 14px;
  border-radius: 7px;
  text-decoration: none !important;
  white-space: nowrap;
  transition: background 0.15s, transform 0.15s;
}
.ns-stack-crosssell__btn:hover {
  background: #3a4bc0;
  transform: translateY(-1px);
  color: #fff !important;
}

/* Responsive: stack vertically on narrow screens */
@media (max-width: 640px) {
  .ns-stack-crosssell__item {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .ns-stack-crosssell__pricing {
    align-items: flex-start;
    flex-direction: row;
    gap: 10px;
    align-items: center;
  }
  .ns-stack-crosssell__btn {
    width: 100%;
    justify-content: center;
  }
}

/* ============================================================
   PATCH 18 — Currency switcher toggle
   ============================================================ */

.ns-currency-switch {
  display: inline-flex;
  align-items: center;
  background: var(--ns-primary-light, #eef0fc);
  border: 1.5px solid var(--ns-border, #E2E6F5);
  border-radius: 50px;
  padding: 3px;
  gap: 2px;
  margin-right: 8px;
  flex-shrink: 0;
}

.ns-currency-btn {
  background: transparent;
  border: none;
  border-radius: 50px;
  padding: 4px 11px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--ns-text-muted, #5C6282);
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
  line-height: 1;
  white-space: nowrap;
}

.ns-currency-btn:hover {
  color: var(--ns-primary, #4B5BD4);
}

.ns-currency-btn--active {
  background: var(--ns-primary, #4B5BD4);
  color: #fff !important;
  box-shadow: 0 1px 4px rgba(75,91,212,0.25);
}

/* Tuck it into the nav bar neatly */
.main-navigation .menu-bar-items .ns-currency-switch {
  align-self: center;
}

/* Mobile — slightly smaller */
@media (max-width: 768px) {
  .ns-currency-btn {
    padding: 3px 9px;
    font-size: 0.68rem;
  }
}

/* ============================================================
   PATCH 19 — Hide duplicate plugin tier table on product page
   ============================================================ */

/* Our custom NS tier table handles display — hide the plugin's native render */
.single-product .tpt__tiered-pricing {
  display: none !important;
}


/* ============================================================
   PATCH 20 — Currency switcher: smaller size, more cart gap,
               toggle cursor on whole pill
   ============================================================ */

.ns-currency-switch {
  padding: 2px !important;
  gap: 1px !important;
  margin-right: 22px !important;
  cursor: pointer;
}

.ns-currency-btn {
  padding: 3px 8px !important;
  font-size: 0.62rem !important;
  letter-spacing: 0.03em !important;
}

@media (max-width: 768px) {
  .ns-currency-btn {
    padding: 2px 6px !important;
    font-size: 0.59rem !important;
  }
}

/* ============================================================
   PATCH 21 — Cart + Checkout page redesign
   northstate.xyz — GeneratePress child theme
   Brand vars: --ns-primary:#4B5BD4  --ns-accent:#D6346F
               --ns-text:#181A2C     --ns-text-muted:#5C6282
               --ns-border:#E2E6F5  --ns-primary-light:#eef0fc
   ============================================================ */

/* ============================================================
   SHARED CARD MIXIN (applied via repeated declarations)
   ============================================================ */

/* ============================================================
   PAGE 1 — CART (classic WooCommerce shortcode)
   ============================================================ */

/* ── Outer wrapper ───────────────────────────────────────── */
.woocommerce-cart .woocommerce {
  max-width: 1140px;
  margin: 0 auto;
  padding: 0 16px;
}

/* ── Cart form card ──────────────────────────────────────── */
.woocommerce-cart-form {
  background: #ffffff;
  border: 1px solid var(--ns-border);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 2px 12px rgba(75, 91, 212, 0.06);
  margin-bottom: 32px;
}

/* ── Table reset ─────────────────────────────────────────── */
table.woocommerce-cart-form__contents {
  width: 100%;
  border-collapse: collapse;
  margin: 0;
}

/* ── Table headers ───────────────────────────────────────── */
table.woocommerce-cart-form__contents thead tr {
  background: var(--ns-primary-light, #eef0fc);
}

table.woocommerce-cart-form__contents thead tr th {
  padding: 12px 16px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ns-primary);
  border: none;
  border-bottom: 1px solid var(--ns-border);
  white-space: nowrap;
}

table.woocommerce-cart-form__contents thead tr th.product-remove {
  width: 40px;
}

table.woocommerce-cart-form__contents thead tr th.product-thumbnail {
  width: 88px;
}

/* ── Body rows ───────────────────────────────────────────── */
table.woocommerce-cart-form__contents tbody tr.cart_item {
  border-bottom: 1px solid var(--ns-border);
  transition: background 0.15s ease;
}

table.woocommerce-cart-form__contents tbody tr.cart_item:last-child {
  border-bottom: none;
}

table.woocommerce-cart-form__contents tbody tr.cart_item:hover {
  background: #fafbff;
}

table.woocommerce-cart-form__contents tbody tr.cart_item td {
  padding: 16px;
  vertical-align: middle;
  border: none;
  color: var(--ns-text);
  font-size: 14px;
}

/* ── Remove button ───────────────────────────────────────── */
.woocommerce-cart-form__contents .product-remove a.remove {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: transparent;
  color: var(--ns-text-muted) !important;
  font-size: 18px;
  line-height: 1;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
  border: 1px solid var(--ns-border);
}

.woocommerce-cart-form__contents .product-remove a.remove:hover {
  background: #fde8f0;
  color: var(--ns-accent) !important;
  border-color: var(--ns-accent);
}

/* ── Product thumbnail ───────────────────────────────────── */
.woocommerce-cart-form__contents .product-thumbnail img {
  width: 72px !important;
  height: 72px !important;
  object-fit: cover;
  border-radius: 10px;
  border: 1px solid var(--ns-border);
  display: block;
}

/* ── Product name link ───────────────────────────────────── */
.woocommerce-cart-form__contents .product-name a {
  color: var(--ns-text);
  font-weight: 600;
  font-size: 15px;
  text-decoration: none;
  transition: color 0.15s ease;
  line-height: 1.35;
}

.woocommerce-cart-form__contents .product-name a:hover {
  color: var(--ns-primary);
}

/* ── Price cells ─────────────────────────────────────────── */
.woocommerce-cart-form__contents .product-price,
.woocommerce-cart-form__contents .product-subtotal {
  font-size: 15px;
  font-weight: 600;
  color: var(--ns-text);
  white-space: nowrap;
}

.woocommerce-cart-form__contents .product-subtotal {
  color: var(--ns-primary);
}

/* ── Quantity input ──────────────────────────────────────── */
.woocommerce-cart-form__contents .quantity .qty {
  width: 68px;
  height: 40px;
  padding: 0 10px;
  font-size: 14px;
  font-weight: 600;
  color: var(--ns-text);
  background: #ffffff;
  border: 1.5px solid var(--ns-border);
  border-radius: 8px;
  text-align: center;
  outline: none;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  -moz-appearance: textfield;
}

.woocommerce-cart-form__contents .quantity .qty:focus {
  border-color: var(--ns-primary);
  box-shadow: 0 0 0 3px rgba(75, 91, 212, 0.12);
}

.woocommerce-cart-form__contents .quantity .qty::-webkit-inner-spin-button,
.woocommerce-cart-form__contents .quantity .qty::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* ── Actions row ─────────────────────────────────────────── */
table.woocommerce-cart-form__contents .actions {
  background: #fafbff;
  padding: 16px;
  border-top: 1px solid var(--ns-border);
}

table.woocommerce-cart-form__contents .actions td {
  padding: 16px !important;
}

/* ── Coupon wrapper ──────────────────────────────────────── */
table.woocommerce-cart-form__contents .actions .coupon {
  display: flex;
  align-items: center;
  gap: 10px;
  float: left;
}

/* ── Coupon input ────────────────────────────────────────── */
table.woocommerce-cart-form__contents .actions .coupon input#coupon_code {
  height: 42px;
  padding: 0 14px;
  font-size: 14px;
  color: var(--ns-text);
  background: #ffffff;
  border: 1.5px solid var(--ns-border);
  border-radius: 8px;
  outline: none;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  min-width: 180px;
}

table.woocommerce-cart-form__contents .actions .coupon input#coupon_code:focus {
  border-color: var(--ns-primary);
  box-shadow: 0 0 0 3px rgba(75, 91, 212, 0.12);
}

table.woocommerce-cart-form__contents .actions .coupon input#coupon_code::placeholder {
  color: var(--ns-text-muted);
  opacity: 0.7;
}

/* ── Coupon apply button ─────────────────────────────────── */
table.woocommerce-cart-form__contents .actions .coupon .button {
  height: 42px;
  padding: 0 18px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--ns-primary);
  background: transparent;
  border: 1.5px solid var(--ns-primary);
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease;
  white-space: nowrap;
}

table.woocommerce-cart-form__contents .actions .coupon .button:hover {
  background: var(--ns-primary);
  color: #ffffff;
}

/* ── Update cart button ──────────────────────────────────── */
button[name="update_cart"] {
  height: 42px;
  padding: 0 18px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ns-text-muted);
  background: transparent;
  border: 1.5px solid var(--ns-border);
  border-radius: 8px;
  cursor: pointer;
  float: right;
  transition: border-color 0.2s ease, color 0.2s ease;
}

button[name="update_cart"]:hover {
  border-color: var(--ns-text-muted);
  color: var(--ns-text);
}

button[name="update_cart"]:disabled,
button[name="update_cart"][disabled] {
  opacity: 0.4;
  cursor: not-allowed;
}

/* ── Cart totals card ────────────────────────────────────── */
.cart_totals {
  float: right;
  width: 380px;
  background: #ffffff;
  border: 1px solid var(--ns-border);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 2px 12px rgba(75, 91, 212, 0.06);
}

.cart_totals h2 {
  margin: 0;
  padding: 16px 20px;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ns-primary);
  background: var(--ns-primary-light, #eef0fc);
  border-bottom: 1px solid var(--ns-border);
}

.cart_totals table {
  width: 100%;
  border-collapse: collapse;
  margin: 0;
}

.cart_totals table th,
.cart_totals table td {
  padding: 14px 20px;
  font-size: 14px;
  color: var(--ns-text);
  border-bottom: 1px solid var(--ns-border);
  vertical-align: middle;
}

.cart_totals table th {
  font-weight: 600;
  color: var(--ns-text-muted);
  width: 40%;
  background: transparent;
}

.cart_totals table td {
  text-align: right;
}

/* ── Order total row ─────────────────────────────────────── */
.cart_totals .order-total th,
.cart_totals .order-total td {
  font-size: 16px;
  font-weight: 700;
  color: var(--ns-text);
  background: var(--ns-primary-light, #eef0fc);
  border-bottom: none;
}

.cart_totals .order-total td {
  color: var(--ns-primary);
}

/* ── Proceed to checkout wrapper ─────────────────────────── */
.wc-proceed-to-checkout {
  padding: 16px 20px;
  background: #ffffff;
}

/* ── Checkout CTA button ─────────────────────────────────── */
.wc-proceed-to-checkout .checkout-button {
  display: block;
  width: 100%;
  padding: 15px 24px;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0.03em;
  color: #ffffff !important;
  background: var(--ns-primary);
  border: none;
  border-radius: 10px;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
  box-shadow: 0 4px 14px rgba(75, 91, 212, 0.28);
}

.wc-proceed-to-checkout .checkout-button:hover {
  background: #3a4abf;
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(75, 91, 212, 0.38);
}

.wc-proceed-to-checkout .checkout-button:active {
  transform: translateY(0);
  box-shadow: 0 3px 10px rgba(75, 91, 212, 0.25);
}

/* ── WooCommerce success notice ──────────────────────────── */
.woocommerce-message {
  background: #f0fdf4;
  border-left: 4px solid #22c55e;
  border-radius: 8px;
  padding: 12px 16px;
  margin-bottom: 20px;
  color: #166534;
  font-size: 14px;
  font-weight: 500;
}

.woocommerce-message a.button {
  background: #22c55e;
  color: #ffffff;
  border-radius: 6px;
  padding: 6px 14px;
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  margin-right: 10px;
  transition: background 0.15s ease;
}

.woocommerce-message a.button:hover {
  background: #16a34a;
}

/* ── Trust strip ─────────────────────────────────────────── */
.ns-cart-trust {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 20px;
  padding: 12px 20px;
  border-top: 1px solid var(--ns-border);
  background: #fafbff;
}

.ns-cart-trust__item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 500;
  color: var(--ns-text-muted);
  white-space: nowrap;
}

.ns-cart-trust__item svg,
.ns-cart-trust__item .ns-icon {
  width: 15px;
  height: 15px;
  flex-shrink: 0;
  opacity: 0.7;
}

/* ── Volume nudge strip (default — blue/primary-light) ───── */
.ns-cart-nudge {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 20px;
  background: var(--ns-primary-light, #eef0fc);
  border: 1px solid rgba(75, 91, 212, 0.18);
  border-radius: 8px;
  margin: 12px 20px 4px;
  font-size: 13px;
  color: var(--ns-primary);
  font-weight: 500;
}

.ns-cart-nudge .ns-nudge-icon {
  font-size: 16px;
  flex-shrink: 0;
}

.ns-cart-nudge strong {
  font-weight: 700;
}

/* ── BAC water nudge (green variant) ─────────────────────── */
.ns-cart-nudge--bac {
  background: #f0fdf4;
  border-color: rgba(34, 197, 94, 0.22);
  color: #166534;
}

.ns-cart-nudge--bac strong {
  color: #15803d;
}

/* ── Clearfix for cart layout ────────────────────────────── */
.woocommerce-cart .woocommerce::after {
  content: "";
  display: table;
  clear: both;
}

/* ── Cart responsive ─────────────────────────────────────── */
@media (max-width: 768px) {
  .cart_totals {
    float: none;
    width: 100%;
    margin-top: 24px;
  }

  table.woocommerce-cart-form__contents thead {
    display: none;
  }

  table.woocommerce-cart-form__contents tbody tr.cart_item {
    display: flex;
    flex-wrap: wrap;
    padding: 14px 0;
  }

  table.woocommerce-cart-form__contents tbody tr.cart_item td {
    padding: 8px 12px;
  }

  table.woocommerce-cart-form__contents .actions .coupon {
    flex-wrap: wrap;
    float: none;
    margin-bottom: 10px;
  }

  button[name="update_cart"] {
    float: none;
    width: 100%;
    margin-top: 8px;
  }

  .ns-cart-trust {
    flex-wrap: wrap;
    gap: 10px;
  }

  .ns-cart-nudge {
    margin: 12px 0 4px;
  }
}


/* ============================================================
   PAGE 2 — CHECKOUT (WooCommerce Blocks / React)
   !important used throughout — React manages inline styles
   ============================================================ */

/* ── Main layout ─────────────────────────────────────────── */
.wc-block-checkout.wc-block-components-sidebar-layout {
  max-width: 1140px !important;
  margin: 0 auto !important;
  padding: 0 16px !important;
  gap: 32px !important;
  align-items: flex-start !important;
}

/* ── Step cards ──────────────────────────────────────────── */
.wc-block-components-checkout-step {
  background: #ffffff !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 14px !important;
  overflow: hidden !important;
  box-shadow: 0 2px 12px rgba(75, 91, 212, 0.06) !important;
  margin-bottom: 20px !important;
  padding: 0 !important;
}

/* ── Step card header ────────────────────────────────────── */
.wc-block-components-checkout-step__heading-container {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 14px 20px !important;
  background: var(--ns-primary-light, #eef0fc) !important;
  border-bottom: 1px solid var(--ns-border) !important;
  margin: 0 !important;
}

/* ── Step number badge ───────────────────────────────────── */
.wc-block-components-checkout-step__heading-container .wc-block-components-checkout-step__step-number {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 26px !important;
  height: 26px !important;
  border-radius: 50% !important;
  background: var(--ns-primary) !important;
  color: #ffffff !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  flex-shrink: 0 !important;
}

/* ── Step title ──────────────────────────────────────────── */
.wc-block-components-checkout-step__title {
  font-size: 13px !important;
  font-weight: 700 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  color: var(--ns-primary) !important;
  margin: 0 !important;
}

/* ── Step card body ──────────────────────────────────────── */
.wc-block-components-checkout-step__content {
  padding: 20px !important;
}

/* ── Form text inputs ────────────────────────────────────── */
.wc-block-components-text-input input {
  height: 46px !important;
  padding: 20px 14px 6px !important;
  font-size: 15px !important;
  color: var(--ns-text) !important;
  background: #ffffff !important;
  border: 1.5px solid var(--ns-border) !important;
  border-radius: 8px !important;
  outline: none !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

.wc-block-components-text-input input:focus {
  border-color: var(--ns-primary) !important;
  box-shadow: 0 0 0 3px rgba(75, 91, 212, 0.12) !important;
}

/* ── Combo / combobox inputs ─────────────────────────────── */
.wc-block-components-combobox input {
  height: 46px !important;
  padding: 20px 14px 6px !important;
  font-size: 15px !important;
  color: var(--ns-text) !important;
  background: #ffffff !important;
  border: 1.5px solid var(--ns-border) !important;
  border-radius: 8px !important;
  outline: none !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

.wc-block-components-combobox input:focus {
  border-color: var(--ns-primary) !important;
  box-shadow: 0 0 0 3px rgba(75, 91, 212, 0.12) !important;
}

/* ── Country/State select (plural "blocks") ──────────────── */
.wc-blocks-components-select select,
.wc-block-components-select select {
  height: 46px !important;
  padding: 0 14px !important;
  font-size: 15px !important;
  color: var(--ns-text) !important;
  background: #ffffff !important;
  border: 1.5px solid var(--ns-border) !important;
  border-radius: 8px !important;
  outline: none !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease !important;
  width: 100% !important;
  box-sizing: border-box !important;
  appearance: auto !important;
}

.wc-blocks-components-select select:focus,
.wc-block-components-select select:focus {
  border-color: var(--ns-primary) !important;
  box-shadow: 0 0 0 3px rgba(75, 91, 212, 0.12) !important;
}

/* ── Select label floated above ──────────────────────────── */
.wc-blocks-components-select__label,
.wc-block-components-select__label {
  font-size: 11px !important;
  font-weight: 600 !important;
  color: var(--ns-text-muted) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  top: 3px !important;
}

/* ── Payment radio cards ─────────────────────────────────── */
.wc-block-components-radio-control-accordion-option {
  background: #ffffff !important;
  border: 1.5px solid var(--ns-border) !important;
  border-radius: 10px !important;
  margin-bottom: 10px !important;
  padding: 14px 16px !important;
  transition: border-color 0.2s ease, background 0.2s ease !important;
  cursor: pointer !important;
}

.wc-block-components-radio-control-accordion-option:hover {
  border-color: var(--ns-primary) !important;
}

/* ── Selected payment method ─────────────────────────────── */
.wc-block-components-radio-control-accordion-option--checked {
  border-color: var(--ns-primary) !important;
  background: var(--ns-primary-light, #eef0fc) !important;
}

/* ── Payment method label ────────────────────────────────── */
.wc-block-components-radio-control__label {
  font-size: 14px !important;
  font-weight: 600 !important;
  color: var(--ns-text) !important;
}

/* ── Payment method description ──────────────────────────── */
.wc-block-components-radio-control-accordion-content {
  font-size: 13px !important;
  color: var(--ns-text-muted) !important;
  padding: 10px 0 2px !important;
  line-height: 1.5 !important;
}

/* ── Order summary sidebar card ──────────────────────────── */
.wc-block-checkout__sidebar,
.wc-block-checkout__sidebar .wp-block-woocommerce-checkout-order-summary-block {
  background: #ffffff !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 14px !important;
  overflow: hidden !important;
  box-shadow: 0 2px 12px rgba(75, 91, 212, 0.06) !important;
  position: sticky !important;
  top: 20px !important;
}

/* Sidebar heading area */
.wc-block-checkout__sidebar .wp-block-woocommerce-checkout-order-summary-block > h2,
.wc-block-checkout__sidebar .wc-block-components-checkout-order-summary__heading {
  padding: 14px 20px !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  color: var(--ns-primary) !important;
  background: var(--ns-primary-light, #eef0fc) !important;
  border-bottom: 1px solid var(--ns-border) !important;
  margin: 0 !important;
}

/* Order summary content padding */
.wc-block-components-checkout-order-summary__content {
  padding: 16px 20px !important;
}

/* ── Order summary items ─────────────────────────────────── */
.wc-block-components-order-summary-item__description {
  font-size: 14px !important;
  font-weight: 600 !important;
  color: var(--ns-text) !important;
}

.wc-block-components-order-summary-item__individual-prices,
.wc-block-components-order-summary-item__individual-price {
  font-size: 13px !important;
  color: var(--ns-text-muted) !important;
}

/* ── Totals rows ─────────────────────────────────────────── */
.wc-block-components-totals-item {
  display: flex !important;
  justify-content: space-between !important;
  align-items: center !important;
  padding: 10px 0 !important;
  border-bottom: 1px solid var(--ns-border) !important;
}

.wc-block-components-totals-item:last-child {
  border-bottom: none !important;
}

.wc-block-components-totals-item__label {
  font-size: 14px !important;
  color: var(--ns-text-muted) !important;
  font-weight: 500 !important;
}

.wc-block-components-totals-item__value {
  font-size: 14px !important;
  font-weight: 600 !important;
  color: var(--ns-text) !important;
}

/* ── Footer total row ────────────────────────────────────── */
.wc-block-components-totals-footer-item {
  background: var(--ns-primary-light, #eef0fc) !important;
  border-radius: 8px !important;
  padding: 12px 14px !important;
  margin: 8px 0 4px !important;
  border: none !important;
}

.wc-block-components-totals-footer-item .wc-block-components-totals-item__label {
  font-size: 15px !important;
  font-weight: 700 !important;
  color: var(--ns-text) !important;
}

.wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
  font-size: 17px !important;
  font-weight: 800 !important;
  color: var(--ns-primary) !important;
}

/* ── Coupon section ──────────────────────────────────────── */
.wc-block-components-totals-coupon__form {
  display: flex !important;
  gap: 8px !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  margin-top: 10px !important;
}

.wc-block-components-totals-coupon input {
  flex: 1 !important;
  height: 40px !important;
  padding: 0 12px !important;
  font-size: 14px !important;
  color: var(--ns-text) !important;
  background: #ffffff !important;
  border: 1.5px solid var(--ns-border) !important;
  border-radius: 8px !important;
  outline: none !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease !important;
  min-width: 0 !important;
}

.wc-block-components-totals-coupon input:focus {
  border-color: var(--ns-primary) !important;
  box-shadow: 0 0 0 3px rgba(75, 91, 212, 0.12) !important;
}

.wc-block-components-totals-coupon__button {
  height: 40px !important;
  padding: 0 16px !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  color: var(--ns-primary) !important;
  background: transparent !important;
  border: 1.5px solid var(--ns-primary) !important;
  border-radius: 8px !important;
  cursor: pointer !important;
  white-space: nowrap !important;
  transition: background 0.2s ease, color 0.2s ease !important;
  flex-shrink: 0 !important;
}

.wc-block-components-totals-coupon__button:hover {
  background: var(--ns-primary) !important;
  color: #ffffff !important;
}

/* Coupon panel toggle button */
.wc-block-components-totals-coupon .wc-block-components-panel__button {
  font-size: 13px !important;
  color: var(--ns-primary) !important;
  font-weight: 600 !important;
  background: none !important;
  border: none !important;
  padding: 10px 0 !important;
  cursor: pointer !important;
  text-decoration: underline !important;
  text-decoration-color: rgba(75, 91, 212, 0.35) !important;
}

.wc-block-components-totals-coupon .wc-block-components-panel__button:hover {
  text-decoration-color: var(--ns-primary) !important;
}

/* ── Checkout actions wrapper ────────────────────────────── */
.wc-block-checkout__actions {
  margin-top: 20px !important;
  position: relative !important;
}

/* ── Place Order button ──────────────────────────────────── */
.wc-block-components-checkout-place-order-button {
  display: block !important;
  width: 100% !important;
  padding: 15px 24px !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  letter-spacing: 0.03em !important;
  color: #ffffff !important;
  background: var(--ns-primary) !important;
  border: none !important;
  border-radius: 10px !important;
  cursor: pointer !important;
  text-align: center !important;
  transition: background 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease !important;
  box-shadow: 0 4px 14px rgba(75, 91, 212, 0.28) !important;
}

.wc-block-components-checkout-place-order-button:hover {
  background: #3a4abf !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 6px 20px rgba(75, 91, 212, 0.38) !important;
}

.wc-block-components-checkout-place-order-button:active {
  transform: translateY(0) !important;
  box-shadow: 0 3px 10px rgba(75, 91, 212, 0.25) !important;
}

/* ── After Place Order — inline trust line ───────────────── */
.wc-block-checkout__actions::after {
  content: "\1F512  Secure SSL  ·  Discreet packaging  ·  Ships in 24h" !important;
  display: block !important;
  text-align: center !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  color: var(--ns-text-muted) !important;
  margin-top: 10px !important;
  letter-spacing: 0.02em !important;
}

/* ── Return to cart link ─────────────────────────────────── */
.wc-block-checkout__return-to-cart-link,
.wc-block-components-checkout-return-to-cart-button {
  display: inline-block !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  color: var(--ns-text-muted) !important;
  text-decoration: none !important;
  margin-top: 12px !important;
  transition: color 0.15s ease !important;
}

.wc-block-checkout__return-to-cart-link::before,
.wc-block-components-checkout-return-to-cart-button::before {
  content: "\2190\00a0" !important;
}

.wc-block-checkout__return-to-cart-link:hover,
.wc-block-components-checkout-return-to-cart-button:hover {
  color: var(--ns-text) !important;
}

/* ── Terms checkbox area ─────────────────────────────────── */
.wc-block-checkout__terms {
  font-size: 12px !important;
  color: var(--ns-text-muted) !important;
  line-height: 1.5 !important;
  margin-bottom: 14px !important;
}

.wc-block-checkout__terms a {
  color: var(--ns-primary) !important;
  text-decoration: underline !important;
}

/* ── Checkout responsive ─────────────────────────────────── */
@media (max-width: 768px) {
  .wc-block-checkout.wc-block-components-sidebar-layout {
    flex-direction: column !important;
    gap: 20px !important;
  }

  .wc-block-checkout__sidebar,
  .wc-block-checkout__sidebar .wp-block-woocommerce-checkout-order-summary-block {
    position: static !important;
    width: 100% !important;
  }

  .wc-block-components-checkout-step__content {
    padding: 16px !important;
  }
}

/* ============================================================
   PATCH 22 — Checkout 2-column layout fix
   ============================================================ */

/* Force the flex container into a stable 2-column row */
.wc-block-components-sidebar-layout.wc-block-checkout {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: flex-start !important;
  gap: 32px !important;
  max-width: 1140px !important;
  margin: 0 auto !important;
  padding: 0 16px !important;
  box-sizing: border-box !important;
}

/* Main column — grows to fill remaining space */
.wc-block-components-main.wc-block-checkout__main {
  flex: 1 1 0% !important;
  min-width: 0 !important;
  max-width: none !important;
  width: auto !important;
}

/* Sidebar — fixed width, does NOT grow or shrink */
.wc-block-components-sidebar.wc-block-checkout__sidebar {
  flex: 0 0 360px !important;
  width: 360px !important;
  min-width: 360px !important;
  /* Sticky on the wrapper, NOT the inner block */
  position: sticky !important;
  top: 20px !important;
  align-self: flex-start !important;
}

/* Inner order summary block — remove sticky (wrapper handles it) */
.wc-block-checkout__sidebar .wp-block-woocommerce-checkout-order-summary-block {
  position: static !important;
  background: #ffffff !important;
  border: 1px solid var(--ns-border) !important;
  border-radius: 14px !important;
  overflow: hidden !important;
  box-shadow: 0 2px 12px rgba(75, 91, 212, 0.06) !important;
}

@media (max-width: 768px) {
  .wc-block-components-sidebar-layout.wc-block-checkout {
    flex-direction: column !important;
  }
  .wc-block-components-sidebar.wc-block-checkout__sidebar {
    flex: none !important;
    width: 100% !important;
    min-width: 0 !important;
    position: static !important;
  }
}


/* ============================================================
   PATCH 23 — Nav: kill duplicate dropdown arrow,
               menu label already renamed via WP menu
   ============================================================ */

/* Our custom ::after triangle conflicts with GP's built-in dropdown symbol */
.main-navigation ul li.ns-shop-parent > a::after {
  display: none !important;
  content: none !important;
}

/* Catch any menu-item-has-children ::after we might have added elsewhere */
.main-navigation ul li.menu-item-has-children > a::after {
  display: none !important;
  content: none !important;
}


/* ============================================================
   PATCH 24 — PDP CRO: protocol hint, CoA badge, citation
   callout, payment line, sticky mobile ATC bar
   ============================================================ */

/* Protocol volume hint */
.ns-protocol-hint {
  font-size: 0.78rem;
  color: var(--ns-text-muted, #5C6282);
  margin: 0 0 10px;
  line-height: 1.5;
  padding: 8px 12px;
  background: var(--ns-primary-light, #eef0fc);
  border-radius: 6px;
  border-left: 3px solid var(--ns-primary, #4B5BD4);
}
.ns-protocol-hint strong {
  color: var(--ns-primary, #4B5BD4);
}

/* CoA badge link */
.ns-coa-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--ns-primary, #4B5BD4);
  background: var(--ns-primary-light, #eef0fc);
  border: 1px solid var(--ns-border, #E2E6F5);
  border-radius: 6px;
  padding: 6px 12px;
  text-decoration: none !important;
  margin-bottom: 12px;
  transition: background 0.15s;
}
.ns-coa-badge:hover {
  background: #e0e4f8;
  color: var(--ns-primary, #4B5BD4) !important;
}
.ns-coa-badge svg {
  flex-shrink: 0;
}

/* Citation callout */
.ns-citation-callout {
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: var(--ns-primary-light, #eef0fc);
  border: 1.5px solid var(--ns-border, #E2E6F5);
  border-left: 3px solid var(--ns-primary, #4B5BD4);
  border-radius: 8px;
  padding: 12px 14px;
  margin: 6px 0 14px;
}
.ns-citation-callout__icon {
  color: var(--ns-primary, #4B5BD4);
  display: block;
  margin-bottom: 2px;
}
.ns-citation-callout__text {
  font-size: 0.8rem;
  color: var(--ns-text, #181A2C);
  line-height: 1.6;
}
.ns-citation-callout__ref {
  font-size: 0.7rem;
  color: var(--ns-primary, #4B5BD4);
  font-weight: 600;
  text-decoration: none;
  align-self: flex-start;
  margin-top: 2px;
}
.ns-citation-callout__ref:hover {
  text-decoration: underline;
}

/* Payment methods line */
.ns-payment-line {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  font-size: 0.7rem;
  color: var(--ns-text-muted, #5C6282);
  margin: 8px 0 0;
  text-align: center;
  letter-spacing: 0.01em;
}
.ns-payment-line svg {
  flex-shrink: 0;
  opacity: 0.7;
}

/* ---- Sticky mobile ATC bar -------------------------------- */
.ns-sticky-atc {
  display: none;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 99999;
  background: #fff;
  border-top: 1.5px solid var(--ns-border, #E2E6F5);
  box-shadow: 0 -4px 24px rgba(0,0,0,0.12);
  padding: 10px 16px;
  padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
  transform: translateY(100%);
  transition: transform 0.22s cubic-bezier(0.4,0,0.2,1);
  will-change: transform;
}
.ns-sticky-atc.ns-sticky-atc--visible {
  transform: translateY(0);
}
.ns-sticky-atc__inner {
  display: flex;
  align-items: center;
  gap: 14px;
  max-width: 580px;
  margin: 0 auto;
}
.ns-sticky-atc__info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ns-sticky-atc__name {
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--ns-text, #181A2C);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ns-sticky-atc__price {
  font-size: 0.92rem;
  font-weight: 800;
  color: var(--ns-primary, #4B5BD4);
  line-height: 1;
}
.ns-sticky-atc__price .woocommerce-Price-amount {
  font-size: inherit;
  font-weight: inherit;
  color: inherit;
}
.ns-sticky-atc__btn {
  flex-shrink: 0;
  background: var(--ns-primary, #4B5BD4);
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 11px 20px;
  font-size: 0.85rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s;
  white-space: nowrap;
  letter-spacing: 0.01em;
}
.ns-sticky-atc__btn:hover,
.ns-sticky-atc__btn:active {
  background: #3a4bc0;
}

@media (max-width: 768px) {
  .ns-sticky-atc {
    display: block;
  }
  /* Constrain gallery height on mobile to push content up */
  .woocommerce-product-gallery {
    max-height: 310px;
    overflow: hidden;
  }
  .woocommerce-product-gallery .woocommerce-product-gallery__image img {
    max-height: 300px;
    width: auto;
    margin: 0 auto;
    display: block;
    object-fit: contain;
  }
}

/* ============================================================
   PATCH 24b — Hide WC Sale badge (counter to research brand),
   sale price label cleanup
   ============================================================ */

/* Hide default "Sale!" flash badge */
span.onsale {
  display: none !important;
}

/* Make the sale strikethrough (del) subtler — muted, not red */
.woocommerce-Price-amount del,
.price del,
.price del .woocommerce-Price-amount {
  color: var(--ns-text-muted, #5C6282) !important;
  opacity: 0.65;
  font-size: 0.85em;
}

/* Price ins (active sale price) — keep prominent */
.price ins {
  text-decoration: none !important;
  font-weight: 800;
}

/* Label the sale context for research audience */
.price del::before {
  content: "RRP ";
  font-size: 0.7em;
  letter-spacing: 0.05em;
  font-weight: 600;
  text-transform: uppercase;
}

/* ============================================================
   PATCH 25 — Price cleanup, gallery sticky, spacing polish
   ============================================================ */

/* ---- Remove strikethrough from all product prices --------- */
.price del,
.summary .price del,
.woocommerce-Price-amount del {
  display: none !important;
}
/* Cancel the "RRP " prefix we added in 24b */
.price del::before {
  content: none !important;
  display: none !important;
}
/* Sale price (ins) — show cleanly as the only price */
.summary .price ins {
  text-decoration: none !important;
  font-weight: 800;
  font-size: 1.9rem !important;
  color: var(--ns-text, #181A2C) !important;
  background: none !important;
}
/* When there's no sale, the price span should look the same */
.summary .price > .woocommerce-Price-amount {
  font-weight: 800;
  font-size: 1.9rem !important;
  color: var(--ns-text, #181A2C) !important;
}

/* ---- Volume savings badge --------------------------------- */
.ns-volume-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 0.71rem;
  font-weight: 700;
  color: #065f46;
  background: #d1fae5;
  border: 1px solid #6ee7b7;
  border-radius: 50px;
  padding: 3px 11px;
  margin: 2px 0 10px;
  letter-spacing: 0.01em;
  white-space: nowrap;
}
.ns-volume-badge svg {
  flex-shrink: 0;
}

/* ---- Sticky image column (eliminates dead space) ---------- */
@media (min-width: 769px) {
  .woocommerce div.product div.images.woocommerce-product-gallery,
  .woocommerce-page div.product div.images.woocommerce-product-gallery {
    position: sticky !important;
    top: 80px !important;
    align-self: flex-start !important;
  }
}

/* ---- Summary column spacing tightening -------------------- */
.summary .ns-trust-badges {
  margin-bottom: 10px !important;
  margin-top: 6px !important;
}
.summary .price {
  margin-bottom: 2px !important;
}
.summary .woocommerce-product-details__short-description {
  margin-top: 8px !important;
  margin-bottom: 8px !important;
}
.summary .ns-coa-badge {
  margin-bottom: 6px !important;
  margin-top: 4px !important;
}
/* Suppress excessive padding from WPLoyalty bar */
.wpl-rewads-wrap,
.wpl-rewards-wrap,
[class*="wpl-"] {
  margin-top: 6px !important;
  margin-bottom: 6px !important;
  padding-top: 8px !important;
  padding-bottom: 8px !important;
}
.summary .ns-citation-callout {
  margin-top: 4px !important;
  margin-bottom: 8px !important;
}
/* NS tier table in summary */
.summary .ns-tier-table,
.summary .woocommerce-variation-price + *,
.summary form.cart {
  margin-top: 6px !important;
}
/* Tighten the gap above the protocol hint */
.ns-protocol-hint {
  margin-top: 0 !important;
  margin-bottom: 8px !important;
}
/* Tighten payment line */
.ns-payment-line {
  margin-top: 5px !important;
}
/* Tighten compliance notice */
.ns-compliance-notice,
.ns-compliance {
  margin-top: 6px !important;
  margin-bottom: 4px !important;
}

/* ---- Under-image checklist: remove bottom dead space ------ */
.ns-under-image {
  margin-top: 12px !important;
}

/* ---- Stack cross-sell: tighten top margin ----------------- */
.ns-stack-crosssell {
  margin-top: 16px !important;
}

/* ---- Mobile: revert gallery max-height to allow natural height */
@media (max-width: 768px) {
  .woocommerce div.product div.images.woocommerce-product-gallery {
    position: relative !important;
    top: auto !important;
  }
}

/* ============================================================
   PATCH 26 — PDP layout overhaul
   ============================================================ */

/* ---- Remove sticky from gallery (broke click + scroll) ---- */
.woocommerce div.product div.images.woocommerce-product-gallery,
.woocommerce-page div.product div.images.woocommerce-product-gallery {
  position: relative !important;
  top: auto !important;
  align-self: auto !important;
}

/* ---- Gallery image: fill the column better on desktop ----- */
@media (min-width: 769px) {
  .woocommerce-product-gallery__wrapper {
    margin: 0 !important;
  }
  .woocommerce-product-gallery .woocommerce-product-gallery__image {
    border-radius: 10px;
    overflow: hidden;
  }
  .woocommerce-product-gallery .woocommerce-product-gallery__image img {
    width: 100% !important;
    height: auto !important;
    max-height: none !important;
    border-radius: 10px;
    display: block;
  }
  /* Move magnifying glass to a less intrusive position */
  .woocommerce-product-gallery .woocommerce-product-gallery__trigger {
    top: auto !important;
    bottom: 12px !important;
    right: 12px !important;
    background: rgba(255,255,255,0.85) !important;
    border-radius: 6px !important;
    padding: 5px !important;
  }
}

/* ---- Quick Reference spec card ---------------------------- */
.ns-spec-card {
  margin-top: 14px;
  border: 1.5px solid var(--ns-border, #E2E6F5);
  border-radius: 10px;
  overflow: hidden;
  background: #fff;
}
.ns-spec-card__label {
  padding: 8px 14px;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--ns-text-muted, #5C6282);
  background: var(--ns-primary-light, #eef0fc);
  border-bottom: 1.5px solid var(--ns-border, #E2E6F5);
}
.ns-spec-card__table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.76rem;
}
.ns-spec-card__table tr {
  border-bottom: 1px solid var(--ns-border, #E2E6F5);
}
.ns-spec-card__table tr:last-child {
  border-bottom: none;
}
.ns-spec-card__table th {
  padding: 7px 14px;
  font-weight: 600;
  color: var(--ns-text-muted, #5C6282);
  text-align: left;
  white-space: nowrap;
  width: 38%;
  background: #fafbff;
}
.ns-spec-card__table td {
  padding: 7px 14px;
  color: var(--ns-text, #181A2C);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}

/* ---- Suppress NorthPoints in default product summary position */
.woocommerce-product-details__short-description ~ .wpl-rewads-wrap,
.woocommerce-product-details__short-description ~ [class*="wpl-"],
.summary [class*="wpl-rewads"],
.summary .wpl-rewads-wrap,
.ns-coa-badge ~ [class*="wpl-"] {
  display: none !important;
}

/* ---- NorthPoints inline below ATC ------------------------- */
.ns-loyalty-inline {
  font-size: 0.74rem;
  color: var(--ns-text-muted, #5C6282);
  margin: 6px 0 2px;
  text-align: center;
}
.ns-loyalty-inline [class*="wpl-"] {
  display: inline !important;
  font-size: inherit !important;
  color: inherit !important;
  background: none !important;
  border: none !important;
  padding: 0 !important;
  margin: 0 !important;
}

/* ---- Citation callout: compact variant -------------------- */
.ns-citation-callout {
  padding: 10px 13px !important;
  gap: 4px !important;
}
.ns-citation-callout__icon {
  display: none !important;
}
.ns-citation-callout__text {
  font-size: 0.77rem !important;
  line-height: 1.5 !important;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
/* Show full text on hover/focus */
.ns-citation-callout:hover .ns-citation-callout__text,
.ns-citation-callout:focus-within .ns-citation-callout__text {
  display: block;
  overflow: visible;
  -webkit-line-clamp: unset;
}

/* ---- Protocol hint: subtle, not a card -------------------- */
.ns-protocol-hint {
  background: transparent !important;
  border-left: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  font-size: 0.74rem !important;
  color: var(--ns-text-muted, #5C6282) !important;
  margin: 0 0 8px !important;
}
.ns-protocol-hint strong {
  color: var(--ns-primary, #4B5BD4) !important;
}

/* ---- Remove the magnifying glass cursor default on img ---- */
.woocommerce-product-gallery .woocommerce-product-gallery__image {
  cursor: zoom-in;
}

/* ---- Tighten summary column overall ----------------------- */
.summary > * {
  margin-top: 0 !important;
}
.summary .price {
  margin-top: 6px !important;
  margin-bottom: 2px !important;
}
.summary .ns-trust-badges {
  margin-bottom: 8px !important;
}
.summary .woocommerce-product-details__short-description {
  margin-bottom: 6px !important;
  margin-top: 6px !important;
}
.ns-citation-callout {
  margin-bottom: 6px !important;
  margin-top: 4px !important;
}

/* ---- Mobile: restore gallery to natural height ------------ */
@media (max-width: 768px) {
  .woocommerce-product-gallery .woocommerce-product-gallery__image img {
    max-height: 300px !important;
    width: auto !important;
    margin: 0 auto;
    object-fit: contain;
  }
  .ns-spec-card {
    display: none; /* hidden on mobile — too much space */
  }
  .ns-citation-callout__text {
    -webkit-line-clamp: 4;
  }
}

/* ============================================================
   PATCH 26b — NorthPoints: hide default position, show below ATC
   ============================================================ */

/* Hide WPLoyalty points message in default product summary position */
.summary .wlr-message-info.wlr_points_rewards_earn_points,
.summary .wlr-product-message {
  display: none !important;
}

/* Re-rendered inline version below ATC */
.ns-loyalty-inline {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  font-size: 0.73rem;
  color: var(--ns-text-muted, #5C6282);
  margin: 4px 0 0;
  text-align: center;
}
.ns-loyalty-inline .wlr-message-info {
  display: inline !important;
  background: none !important;
  border: none !important;
  padding: 0 !important;
  margin: 0 !important;
  font-size: 0.73rem !important;
  color: var(--ns-text-muted, #5C6282) !important;
  box-shadow: none !important;
}

/* PATCH 26c — hide WPLoyalty points on product pages */
.single-product .wlr-message-info.wlr_points_rewards_earn_points,
.single-product .wlr_points_rewards_earn_points,
.single-product [class*="wlr_points_rewards"] {
  display: none !important;
}

/* ============================================================
   PATCH 27 — Fix dead space: restore sticky gallery + move crosssell
   ============================================================ */

/* Restore sticky gallery (overrides Patch 26 relative reset) */
@media (min-width: 769px) {
  .woocommerce div.product div.images.woocommerce-product-gallery,
  .woocommerce-page div.product div.images.woocommerce-product-gallery {
    position: sticky !important;
    top: 80px !important;
    align-self: flex-start !important;
  }
  /* Ensure clicks register — overflow:hidden from P26 can interfere */
  .woocommerce-product-gallery .woocommerce-product-gallery__image {
    overflow: visible !important;
  }
  /* Keep border-radius on the img itself only */
  .woocommerce-product-gallery .woocommerce-product-gallery__image a,
  .woocommerce-product-gallery .woocommerce-product-gallery__image img {
    border-radius: 10px;
  }
}

/* Stack cross-sell moved below fold — full width */
.ns-stack-crosssell {
  margin-top: 0 !important;
  max-width: 100%;
}


/* ============================================================
   PATCH 28 — Left col: short desc + citation; Right col: bundles; No sticky
   ============================================================ */

/* Kill sticky gallery (Patch 27 restored it, user wants no sticky) */
.woocommerce div.product div.images.woocommerce-product-gallery,
.woocommerce-page div.product div.images.woocommerce-product-gallery {
  position: relative !important;
  top: auto !important;
  align-self: auto !important;
}

/* Short description in gallery/left column */
.woocommerce-product-gallery .woocommerce-product-details__short-description {
  margin-top: 12px;
  font-size: 0.84rem;
  line-height: 1.65;
  color: var(--ns-text, #181A2C);
}
.woocommerce-product-gallery .woocommerce-product-details__short-description p {
  margin-bottom: 4px;
}

/* Citation callout in gallery/left column */
.woocommerce-product-gallery .ns-citation-callout {
  margin-top: 10px;
  margin-bottom: 0;
}

/* Stack crosssell in right column — natural width of summary */
.ns-stack-crosssell {
  margin-top: 14px !important;
  margin-bottom: 0 !important;
}


/* PATCH 28b — Fix WP emoji img inflating citation link in gallery column */
.ns-citation-callout__ref img,
.ns-citation-callout__ref img.emoji {
  width: 13px !important;
  height: 13px !important;
  display: inline-block !important;
  vertical-align: middle !important;
  max-width: 13px !important;
}

/* ============================================================
   PATCH 29 — Badge colors, inline volume badge, spacing cleanup
   ============================================================ */

/* All trust badges: unified light blue */
.ns-badge-accent,
.ns-badge-green,
.ns-badge-neutral {
  background: var(--ns-primary-light, #eef0fc) !important;
  border: 1px solid var(--ns-border, #E2E6F5) !important;
  color: var(--ns-primary, #4B5BD4) !important;
}

/* Volume badge inline with price (right side of same row) */
.summary .price {
  display: inline-flex !important;
  align-items: center !important;
  gap: 0 !important;
}
.summary .ns-volume-badge {
  display: inline-flex !important;
  margin: 0 0 0 12px !important;
  vertical-align: middle;
  font-size: 0.68rem !important;
  padding: 3px 10px !important;
}
/* Ensure the price row wraps cleanly if viewport narrows */
.summary .price,
.summary .ns-volume-badge {
  white-space: nowrap;
}

/* Post-ATC spacing: equal 10px between each element */
.ns-compliance-notice,
.ns-compliance {
  margin-top: 10px !important;
  margin-bottom: 0 !important;
  padding-top: 0 !important;
}
.ns-loyalty-earn {
  margin-top: 10px !important;
  margin-bottom: 0 !important;
  padding: 8px 12px !important;
}
.ns-payment-line {
  margin-top: 10px !important;
  margin-bottom: 0 !important;
}
.ns-stack-crosssell {
  margin-top: 14px !important;
  padding-top: 14px !important;
  border-top: 1px solid var(--ns-border, #E2E6F5) !important;
}


/* PATCH 29b — Price flex row with inline volume badge */
.summary .price {
  display: flex !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  gap: 10px !important;
  margin-bottom: 4px !important;
}
.summary .price .ns-volume-badge {
  margin: 0 !important;
  font-size: 0.67rem !important;
  padding: 3px 10px !important;
  white-space: nowrap;
}

/* PATCH 29c — Price row flex wrapper */
.ns-price-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 4px;
}
.ns-price-row .price {
  display: inline !important;
  margin: 0 !important;
}
.ns-price-row .ns-volume-badge {
  margin: 0 !important;
  font-size: 0.67rem !important;
  padding: 3px 10px !important;
  white-space: nowrap;
}

/* ============================================================
   NS Calculator — Northstate Labs Peptide Calculator
   Uses existing --ns-* CSS variables from the theme.
   ============================================================ */

.ns-calc { font-family: inherit; color: var(--ns-text, #181A2C); }

/* Tabs */
.ns-calc__tabs {
  display: flex;
  gap: 6px;
  margin-bottom: 20px;
  overflow-x: auto;
  padding-bottom: 2px;
}
.ns-calc__tab-btn {
  padding: 8px 16px;
  border-radius: 10px;
  border: 1.5px solid var(--ns-border, #E2E6F5);
  background: #fff;
  color: var(--ns-text-muted, #5C6282);
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.15s;
}
.ns-calc__tab-btn:hover { border-color: var(--ns-primary, #4B5BD4); color: var(--ns-primary, #4B5BD4); }
.ns-calc__tab-btn.active {
  background: var(--ns-primary, #4B5BD4);
  border-color: var(--ns-primary, #4B5BD4);
  color: #fff;
}

/* Cards */
.ns-calc__card {
  background: #fff;
  border: 1.5px solid var(--ns-border, #E2E6F5);
  border-radius: 12px;
  padding: 20px;
  margin-bottom: 16px;
}

/* Fields */
.ns-calc__field { margin-bottom: 18px; }
.ns-calc__field:last-child { margin-bottom: 0; }
.ns-calc__label {
  display: block;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--ns-text-muted, #5C6282);
  margin-bottom: 8px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* Presets row */
.ns-calc__presets {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.ns-calc__preset {
  padding: 6px 12px;
  border-radius: 8px;
  border: 1.5px solid var(--ns-border, #E2E6F5);
  background: #fff;
  color: var(--ns-text-muted, #5C6282);
  font-size: 0.8rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
}
.ns-calc__preset:hover { border-color: var(--ns-primary, #4B5BD4); color: var(--ns-primary, #4B5BD4); }
.ns-calc__preset.active {
  border-color: var(--ns-primary, #4B5BD4);
  background: var(--ns-primary-light, #eef0fc);
  color: var(--ns-primary, #4B5BD4);
}

/* Number input */
.ns-calc__input {
  padding: 6px 10px;
  border-radius: 8px;
  border: 1.5px solid #d1d5db;
  background: #f9fafb;
  font-size: 0.82rem;
  color: var(--ns-text, #181A2C);
  width: 80px;
  outline: none;
  transition: border-color 0.15s;
}
.ns-calc__input:focus { border-color: var(--ns-primary, #4B5BD4); background: #fff; }
.ns-calc__unit-label { font-size: 0.8rem; color: var(--ns-text-muted, #5C6282); padding-left: 2px; }

/* Alerts */
.ns-calc__alert {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 10px 14px;
  border-radius: 10px;
  font-size: 0.8rem;
  margin-bottom: 14px;
}
.ns-calc__alert.error { background: #fef2f2; border: 1px solid #fecaca; color: #dc2626; }
.ns-calc__alert.warn  { background: #fffbeb; border: 1px solid #fde68a; color: #d97706; }

/* Results grid */
.ns-calc__results {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 14px;
  margin-bottom: 4px;
}
@media (max-width: 600px) { .ns-calc__results { grid-template-columns: 1fr; } }

.ns-calc__syringe-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: #fff;
  border: 1.5px solid var(--ns-border, #E2E6F5);
  border-radius: 12px;
  padding: 16px 10px 10px;
}
.ns-calc__syringe-svg { width: 72px; height: auto; display: block; margin: 0 auto; }
.ns-calc__syringe-fill { transition: all 0.4s ease; }
.ns-calc__syringe-label { font-size: 0.7rem; color: var(--ns-text-muted, #5C6282); text-align: center; margin-top: 8px; }

/* Stat cards */
.ns-calc__stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.ns-calc__stats.four { grid-template-columns: repeat(4, 1fr); margin-bottom: 16px; }
@media (max-width: 600px) {
  .ns-calc__stats.four { grid-template-columns: 1fr 1fr; }
}
.ns-calc__stat {
  background: #fff;
  border: 1.5px solid var(--ns-border, #E2E6F5);
  border-radius: 12px;
  padding: 14px;
}
.ns-calc__stat.primary { border-color: var(--ns-primary, #4B5BD4); background: var(--ns-primary-light, #eef0fc); }
.ns-calc__stat-label {
  font-size: 0.67rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ns-text-muted, #5C6282);
  margin-bottom: 4px;
}
.ns-calc__stat-value { font-size: 1.1rem; font-weight: 800; color: var(--ns-text, #181A2C); }
.ns-calc__stat.primary .ns-calc__stat-value { color: var(--ns-primary, #4B5BD4); }
.ns-calc__stat-sub { font-size: 0.72rem; color: var(--ns-text-muted, #5C6282); margin-top: 2px; }

/* Peptide reference table */
.ns-calc__ref-header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px;
  margin-bottom: 12px;
  font-size: 0.84rem;
}
.ns-calc__ref-header span { font-size: 0.74rem; color: var(--ns-text-muted, #5C6282); }
.ns-calc__table-wrap { overflow-x: auto; }
.ns-calc__table { width: 100%; border-collapse: collapse; font-size: 0.8rem; }
.ns-calc__th {
  padding: 7px 14px;
  text-align: left;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--ns-text-muted, #5C6282);
  background: #fafbff;
  border-bottom: 1.5px solid var(--ns-border, #E2E6F5);
}
.ns-calc__td {
  padding: 8px 14px;
  border-bottom: 1px solid var(--ns-border, #E2E6F5);
  color: var(--ns-text, #181A2C);
  vertical-align: middle;
}
.ns-calc__table tr:last-child .ns-calc__td { border-bottom: none; }
.ns-calc__tag {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 20px;
  background: var(--ns-primary-light, #eef0fc);
  color: var(--ns-primary, #4B5BD4);
  font-size: 0.7rem;
  font-weight: 700;
}

/* Unit Converter */
.ns-calc__conv-title {
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--ns-text-muted, #5C6282);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 12px;
}
.ns-calc__conv-row { display: flex; flex-wrap: wrap; gap: 12px; }
.ns-calc__conv-field { display: flex; flex-direction: column; gap: 4px; min-width: 110px; flex: 1; }
.ns-calc__conv-field .ns-calc__input { width: 100%; box-sizing: border-box; }

/* Disclaimer */
.ns-calc__disclaimer {
  font-size: 0.72rem;
  color: var(--ns-text-muted, #5C6282);
  text-align: center;
  margin-top: 20px;
  line-height: 1.5;
  padding: 0 8px;
}

/* Standalone page header (above shortcode) */
.ns-calc-page-header {
  text-align: center;
  margin-bottom: 32px;
}
.ns-calc-page-header h1 { font-size: 2rem; font-weight: 800; color: var(--ns-text, #181A2C); margin-bottom: 8px; }
.ns-calc-page-header p { font-size: 0.95rem; color: var(--ns-text-muted, #5C6282); max-width: 520px; margin: 0 auto; }

/* ============================================================
   PATCH 31 — Announcement bar
   ============================================================ */

.ns-shipping-bar {
  background: #181A2C;
  color: #fff;
  text-align: center;
  padding: 10px 48px;
  font-size: 0.8rem;
  letter-spacing: 0.01em;
  position: relative;
  z-index: 99999;
  line-height: 1.4;
}
.ns-shipping-bar strong { color: #fff; font-weight: 700; }
.ns-shipping-bar__close {
  position: absolute;
  right: 14px;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  color: rgba(255,255,255,0.45);
  font-size: 1.3rem;
  line-height: 1;
  cursor: pointer;
  padding: 4px 8px;
  transition: color 0.15s;
}
.ns-shipping-bar__close:hover { color: #fff; }
@media (max-width: 600px) {
  .ns-shipping-bar { padding: 9px 36px; font-size: 0.72rem; }
}

/* ============================================================
   PATCH 32 — Homepage: Starter Kits + Supplies sections
   ============================================================ */

/* Section eyebrow */
.ns-section__eyebrow {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ns-accent, #D6346F);
  margin-bottom: 8px;
}

/* ---- Kit grid ---- */
.ns-section-kits { background: #f8f9ff; }

.ns-kit-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-top: 8px;
}
@media (max-width: 900px) { .ns-kit-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .ns-kit-grid { grid-template-columns: 1fr; } }

.ns-kit-card {
  background: #fff;
  border: 1.5px solid var(--ns-border, #E2E6F5);
  border-radius: 16px;
  overflow: hidden;
  position: relative;
  display: flex;
  flex-direction: column;
  transition: box-shadow 0.18s, border-color 0.18s;
}
.ns-kit-card:hover {
  box-shadow: 0 8px 32px rgba(75,91,212,0.10);
  border-color: var(--ns-primary, #4B5BD4);
}

.ns-kit-card__badge {
  position: absolute;
  top: 12px;
  right: 12px;
  background: var(--ns-accent, #D6346F);
  color: #fff;
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  padding: 4px 10px;
  border-radius: 20px;
  z-index: 2;
  white-space: nowrap;
}

.ns-kit-card__img-wrap {
  display: block;
  background: #f8f9ff;
  padding: 28px 20px 20px;
  text-align: center;
}
.ns-kit-card__img-wrap img {
  width: 100%;
  max-width: 260px;
  height: 180px;
  object-fit: contain;
  display: block;
  margin: 0 auto;
}
.ns-kit-card__img-placeholder {
  height: 180px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ns-primary, #4B5BD4);
  opacity: 0.3;
}

.ns-kit-card__body {
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1;
}
.ns-kit-card__title {
  font-size: 1rem;
  font-weight: 800;
  margin: 0;
  line-height: 1.25;
}
.ns-kit-card__title a { color: var(--ns-text, #181A2C); text-decoration: none; }
.ns-kit-card__title a:hover { color: var(--ns-primary, #4B5BD4); }

.ns-kit-card__includes {
  font-size: 0.75rem;
  color: var(--ns-text-muted, #5C6282);
  line-height: 1.4;
}

.ns-kit-card__price-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-top: 4px;
}
.ns-kit-card__regular {
  font-size: 0.82rem;
  color: var(--ns-text-muted, #5C6282);
  text-decoration: line-through;
}
.ns-kit-card__current {
  font-size: 1.3rem;
  font-weight: 800;
  color: var(--ns-text, #181A2C);
}

.ns-kit-card__cta {
  margin-top: auto;
  display: block;
  text-align: center;
  padding: 11px 20px !important;
  font-size: 0.85rem !important;
}

/* ---- Supplies strip ---- */
.ns-section-supplies {
  background: #fff;
  border-top: 1.5px solid var(--ns-border, #E2E6F5);
  padding-top: 40px !important;
  padding-bottom: 40px !important;
}

.ns-supplies-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 20px;
}
.ns-supplies-header__title {
  font-size: 1rem;
  font-weight: 800;
  color: var(--ns-text, #181A2C);
  margin: 0 0 3px;
}
.ns-supplies-header__sub {
  font-size: 0.8rem;
  color: var(--ns-text-muted, #5C6282);
  margin: 0;
}
.ns-supplies-header__link { flex-shrink: 0; }

.ns-supplies-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
@media (max-width: 600px) { .ns-supplies-grid { grid-template-columns: 1fr; } }

.ns-supply-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  border: 1.5px solid var(--ns-border, #E2E6F5);
  border-radius: 12px;
  text-decoration: none;
  color: var(--ns-text, #181A2C);
  background: #fafbff;
  transition: border-color 0.15s, background 0.15s;
}
.ns-supply-card:hover {
  border-color: var(--ns-primary, #4B5BD4);
  background: #fff;
}
.ns-supply-card__img {
  width: 48px;
  height: 48px;
  object-fit: contain;
  flex-shrink: 0;
  border-radius: 8px;
}
.ns-supply-card__info { flex: 1; min-width: 0; }
.ns-supply-card__name {
  font-size: 0.82rem;
  font-weight: 700;
  line-height: 1.3;
}
.ns-supply-card__price {
  font-size: 0.78rem;
  color: var(--ns-text-muted, #5C6282);
  margin-top: 2px;
}
.ns-supply-card__arrow {
  font-size: 1rem;
  color: var(--ns-text-muted, #5C6282);
  flex-shrink: 0;
  transition: color 0.15s, transform 0.15s;
}
.ns-supply-card:hover .ns-supply-card__arrow {
  color: var(--ns-primary, #4B5BD4);
  transform: translateX(3px);
}

/* ============================================================
   PATCH 33 — Global polish: button hovers, magnifying glass,
   cart/checkout typography, calculator no-sidebar
   ============================================================ */

/* ---- Blue buttons → pink on hover ---- */
.ns-btn-primary:hover,
.ns-btn-primary:focus {
  background: var(--ns-accent, #D6346F) !important;
  border-color: var(--ns-accent, #D6346F) !important;
  box-shadow: 0 6px 20px rgba(214,52,111,0.28) !important;
  transform: translateY(-1px);
  color: #fff !important;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover {
  background: var(--ns-accent, #D6346F) !important;
  color: #fff !important;
  border-color: var(--ns-accent, #D6346F) !important;
}
.ns-sticky-atc__btn:hover,
.ns-kit-card__cta:hover {
  background: var(--ns-accent, #D6346F) !important;
  border-color: var(--ns-accent, #D6346F) !important;
}
.single_add_to_cart_button:hover,
button[name="add-to-cart"]:hover {
  background: var(--ns-accent, #D6346F) !important;
  border-color: var(--ns-accent, #D6346F) !important;
}

/* ---- Remove magnifying glass from product images ---- */
.woocommerce-product-gallery .woocommerce-product-gallery__trigger,
.woocommerce-product-gallery__trigger {
  display: none !important;
}
.woocommerce-product-gallery figure a {
  pointer-events: none !important;
  cursor: default !important;
}
.woocommerce-product-gallery figure img {
  cursor: default !important;
}

/* ---- Calculator page — no sidebar, full width ---- */
.page-id-80 .content-area,
.page-id-80 #primary {
  max-width: 860px !important;
  margin: 0 auto !important;
  float: none !important;
  width: 100% !important;
}
.page-id-80 #secondary,
.page-id-80 .widget-area {
  display: none !important;
}
.page-id-80 .site-main {
  margin: 0 !important;
}

/* ---- Cart page — table header typography ---- */
.woocommerce-cart .shop_table thead th,
.woocommerce table.shop_table th {
  font-size: 0.68rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: var(--ns-text-muted, #5C6282) !important;
  padding: 10px 16px !important;
  border-bottom: 1.5px solid var(--ns-border, #E2E6F5) !important;
}
.woocommerce table.shop_table td {
  padding: 14px 16px !important;
  vertical-align: middle !important;
  font-size: 0.88rem !important;
  border-bottom: 1px solid var(--ns-border, #E2E6F5) !important;
  color: var(--ns-text, #181A2C) !important;
}
.woocommerce table.shop_table .product-name a {
  font-weight: 600 !important;
  color: var(--ns-text, #181A2C) !important;
  font-size: 0.9rem !important;
}
.woocommerce table.shop_table .product-price,
.woocommerce table.shop_table .product-subtotal {
  font-weight: 700 !important;
  color: var(--ns-text, #181A2C) !important;
}
.woocommerce table.shop_table .product-quantity input {
  border: 1.5px solid var(--ns-border, #E2E6F5) !important;
  border-radius: 8px !important;
  padding: 6px 10px !important;
  font-size: 0.88rem !important;
  width: 64px !important;
}
/* Cart totals */
.woocommerce-cart .cart-collaterals .cart_totals h2 {
  font-size: 1rem !important;
  font-weight: 800 !important;
  margin-bottom: 16px !important;
  color: var(--ns-text, #181A2C) !important;
}
.woocommerce .cart_totals table th,
.woocommerce .cart_totals table td {
  font-size: 0.85rem !important;
  padding: 10px 0 !important;
  border-bottom: 1px solid var(--ns-border, #E2E6F5) !important;
}
.woocommerce .cart_totals .order-total th,
.woocommerce .cart_totals .order-total td {
  font-weight: 800 !important;
  font-size: 1rem !important;
  border-bottom: none !important;
  padding-top: 14px !important;
}

/* ---- Checkout page — typography + dead space ---- */
.woocommerce-checkout .woocommerce-billing-fields h3,
.woocommerce-checkout .woocommerce-shipping-fields h3,
.woocommerce-checkout #order_review_heading {
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.1em !important;
  text-transform: uppercase !important;
  color: var(--ns-text-muted, #5C6282) !important;
  margin-bottom: 16px !important;
}
.woocommerce-checkout label,
.woocommerce-checkout .woocommerce-form__label {
  font-size: 0.75rem !important;
  font-weight: 600 !important;
  color: var(--ns-text-muted, #5C6282) !important;
  letter-spacing: 0.03em !important;
  text-transform: uppercase !important;
  margin-bottom: 5px !important;
}
.woocommerce-checkout input[type="text"],
.woocommerce-checkout input[type="email"],
.woocommerce-checkout input[type="tel"],
.woocommerce-checkout textarea,
.woocommerce-checkout select {
  border: 1.5px solid var(--ns-border, #E2E6F5) !important;
  border-radius: 8px !important;
  padding: 10px 14px !important;
  font-size: 0.88rem !important;
  color: var(--ns-text, #181A2C) !important;
  background: #fff !important;
  transition: border-color 0.15s !important;
}
.woocommerce-checkout input:focus,
.woocommerce-checkout select:focus,
.woocommerce-checkout textarea:focus {
  border-color: var(--ns-primary, #4B5BD4) !important;
  outline: none !important;
  box-shadow: 0 0 0 3px rgba(75,91,212,0.08) !important;
}
/* Remove dead space above checkout */
.woocommerce-checkout .woocommerce-notices-wrapper:empty,
.woocommerce-checkout .woocommerce > .woocommerce-notices-wrapper { margin: 0 !important; }
.woocommerce-checkout nav.woocommerce-breadcrumb {
  display: none !important;
}
/* Checkout order review */
.woocommerce-checkout #order_review .shop_table th {
  font-size: 0.68rem !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: var(--ns-text-muted, #5C6282) !important;
}

/* ---- Supplies as top-level nav item ---- */
/* Keep nav consistent, no extra styling needed */

/* ---- Trustband → footer connection ---- */
.ns-cta-band + footer,
.ns-cta-band + .site-footer,
section.ns-cta-band {
  margin-bottom: 0 !important;
}

/* ---- Shop page: compact category grid ---- */
.ns-shop-cat-grid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 12px !important;
}
@media (max-width: 900px) { .ns-shop-cat-grid { grid-template-columns: repeat(2, 1fr) !important; } }
@media (max-width: 560px) { .ns-shop-cat-grid { grid-template-columns: 1fr 1fr !important; } }
.ns-scat-card {
  border-radius: 10px !important;
  padding: 0 !important;
}
.ns-scat-card__head {
  padding: 14px 16px 10px !important;
}
.ns-scat-card__body {
  padding: 0 16px 14px !important;
}
.ns-scat-card__name {
  font-size: 0.88rem !important;
  margin-bottom: 4px !important;
}
.ns-scat-card__blurb {
  font-size: 0.74rem !important;
  line-height: 1.45 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
}
.ns-scat-card__foot {
  padding: 10px 16px !important;
  font-size: 0.75rem !important;
}
.ns-section-head--center p {
  max-width: 480px !important;
}

/* ============================================================
   PATCH 34 — Shop category pills, no pagination, misc
   ============================================================ */

/* ---- Category pills (replaces card grid) ---- */
.ns-shop-cats-section {
  padding: 28px 0 24px !important;
  border-bottom: 1px solid var(--ns-border, #E2E6F5);
}
.ns-cat-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.ns-cat-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 14px 8px 10px;
  border-radius: 100px;
  border: 1.5px solid color-mix(in srgb, var(--pill-color) 30%, transparent);
  background: color-mix(in srgb, var(--pill-color) 8%, #fff);
  text-decoration: none;
  transition: all 0.15s;
  color: var(--ns-text, #181A2C);
}
.ns-cat-pill:hover {
  background: color-mix(in srgb, var(--pill-color) 15%, #fff);
  border-color: var(--pill-color);
  transform: translateY(-1px);
}
.ns-cat-pill__dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--pill-color);
  flex-shrink: 0;
}
.ns-cat-pill__name {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--ns-text, #181A2C);
}
.ns-cat-pill__count {
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--pill-color);
  background: color-mix(in srgb, var(--pill-color) 12%, #fff);
  border-radius: 20px;
  padding: 1px 7px;
}

/* ---- Remove WooCommerce pagination on shop ---- */
.woocommerce-pagination,
.woocommerce nav.woocommerce-pagination {
  display: none !important;
}

/* ---- Shop hero: tighten up ---- */
.ns-shop-hero { padding: 48px 0 36px !important; }
.ns-shop-hero__inner { gap: 20px !important; }
.ns-page-hero__title { font-size: 2.2rem !important; }

/* ---- Full catalog section ---- */
.ns-shop-products-section { padding-top: 36px !important; }
.ns-section-head__title { letter-spacing: -0.01em; }

/* ---- Section head subtitle — less AI-sounding handled via PHP ---- */

/* ---- Trustband connects to footer ---- */
.ns-cta-band {
  margin-bottom: 0 !important;
}
.site-footer,
#colophon {
  margin-top: 0 !important;
}
/* Thin separator between cta-band and footer */
.ns-cta-band + .site-footer,
.ns-cta-band + footer,
.ns-cta-band + #colophon {
  border-top: 1px solid rgba(255,255,255,0.12) !important;
}

/* ============================================================
   PATCH 35 — Calculator page SEO/CRO content styles
   ============================================================ */

/* ---- Intro block ---- */
.ns-calc-intro {
  text-align: center;
  padding: 48px 0 36px;
}
.ns-calc-intro__title {
  font-size: 1.7rem;
  font-weight: 800;
  color: var(--ns-text, #181A2C);
  margin-bottom: 12px;
  letter-spacing: -0.02em;
}
.ns-calc-intro__sub {
  font-size: 0.95rem;
  color: var(--ns-text-muted, #5C6282);
  max-width: 560px;
  margin: 0 auto 20px;
  line-height: 1.65;
}
.ns-calc-intro__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
}
.ns-calc-intro__tag {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--ns-primary, #4B5BD4);
  background: rgba(75,91,212,0.08);
  border-radius: 20px;
  padding: 4px 12px;
}

/* ---- How-to steps ---- */
.ns-calc-how {
  max-width: 720px;
  margin: 48px auto;
  padding: 0 16px;
}
.ns-calc-how__title {
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--ns-text, #181A2C);
  margin-bottom: 24px;
  letter-spacing: -0.01em;
}
.ns-calc-how__steps {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.ns-calc-how__step {
  display: flex;
  gap: 16px;
  align-items: flex-start;
}
.ns-calc-how__step-num {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--ns-primary, #4B5BD4);
  color: #fff;
  font-size: 0.78rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 2px;
}
.ns-calc-how__step strong {
  display: block;
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--ns-text, #181A2C);
  margin-bottom: 4px;
}
.ns-calc-how__step p {
  font-size: 0.85rem;
  color: var(--ns-text-muted, #5C6282);
  line-height: 1.6;
  margin: 0;
}

/* ---- FAQ ---- */
.ns-calc-faq {
  max-width: 720px;
  margin: 0 auto 48px;
  padding: 0 16px;
}
.ns-calc-faq__title {
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--ns-text, #181A2C);
  margin-bottom: 20px;
  letter-spacing: -0.01em;
}
.ns-calc-faq__list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.ns-calc-faq__item {
  border: 1px solid var(--ns-border, #E2E6F5);
  border-radius: 10px;
  overflow: hidden;
}
.ns-calc-faq__q {
  list-style: none;
  padding: 14px 18px;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--ns-text, #181A2C);
  cursor: pointer;
  user-select: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.ns-calc-faq__q::after {
  content: '+';
  font-size: 1.1rem;
  color: var(--ns-text-muted, #5C6282);
  flex-shrink: 0;
}
.ns-calc-faq__item[open] .ns-calc-faq__q::after {
  content: '−';
}
.ns-calc-faq__item[open] {
  background: rgba(75,91,212,0.02);
}
.ns-calc-faq__a {
  padding: 0 18px 16px;
}
.ns-calc-faq__a p {
  font-size: 0.85rem;
  color: var(--ns-text-muted, #5C6282);
  line-height: 1.65;
  margin: 0;
}

/* ---- Supplies strip ---- */
.ns-calc-supplies {
  background: var(--ns-bg-subtle, #F4F5FC);
  border-radius: 16px;
  padding: 36px 32px;
  margin: 48px 0;
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}
.ns-calc-supplies__title {
  font-size: 1rem;
  font-weight: 800;
  color: var(--ns-text, #181A2C);
  margin-bottom: 6px;
}
.ns-calc-supplies__sub {
  font-size: 0.82rem;
  color: var(--ns-text-muted, #5C6282);
  margin-bottom: 20px;
}
.ns-calc-supplies__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
@media (max-width: 600px) {
  .ns-calc-supplies__grid { grid-template-columns: 1fr; }
}
.ns-calc-supply-card {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 14px 16px;
  background: #fff;
  border-radius: 10px;
  border: 1px solid var(--ns-border, #E2E6F5);
  text-decoration: none;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.ns-calc-supply-card:hover {
  border-color: var(--ns-primary, #4B5BD4);
  box-shadow: 0 2px 12px rgba(75,91,212,0.1);
}
.ns-calc-supply-card strong {
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--ns-text, #181A2C);
}
.ns-calc-supply-card span {
  font-size: 0.72rem;
  color: var(--ns-text-muted, #5C6282);
  line-height: 1.5;
}
.ns-calc-supply-card__price {
  font-size: 0.85rem !important;
  font-weight: 800 !important;
  color: var(--ns-primary, #4B5BD4) !important;
  margin-top: 6px;
}

/* ============================================================
   PATCH 36 — Contact page live-chat callout
   ============================================================ */

.ns-contact-live-chat {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-top: 16px;
  padding: 16px 18px;
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-radius: 10px;
}
.ns-contact-live-chat__icon {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #dcfce7;
  color: #16a34a;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ns-contact-live-chat strong {
  display: block;
  font-size: 0.82rem;
  font-weight: 700;
  color: #15803d;
  margin-bottom: 3px;
}
.ns-contact-live-chat span {
  font-size: 0.8rem;
  color: #166534;
  line-height: 1.5;
}

/* ============================================================
   PATCH 37 — COA page styles
   ============================================================ */

.ns-coa-intro {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin-bottom: 48px;
}
@media (max-width: 700px) { .ns-coa-intro { grid-template-columns: 1fr; } }

.ns-coa-intro__item {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 18px;
  background: var(--ns-bg-subtle, #F4F5FC);
  border-radius: 10px;
}
.ns-coa-intro__item svg {
  flex-shrink: 0;
  color: var(--ns-primary, #4B5BD4);
  margin-top: 2px;
}
.ns-coa-intro__item strong {
  display: block;
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--ns-text, #181A2C);
  margin-bottom: 4px;
}
.ns-coa-intro__item span {
  font-size: 0.78rem;
  color: var(--ns-text-muted, #5C6282);
  line-height: 1.5;
}

.ns-coa-list {
  display: flex;
  flex-direction: column;
  gap: 40px;
}

.ns-coa-entry {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  align-items: start;
  padding: 36px;
  border: 1px solid var(--ns-border, #E2E6F5);
  border-radius: 16px;
  background: #fff;
}
@media (max-width: 800px) {
  .ns-coa-entry { grid-template-columns: 1fr; }
  .ns-coa-entry__doc { order: -1; }
}

.ns-coa-entry__header {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}
.ns-coa-entry__product {
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--ns-text, #181A2C);
  margin: 0;
}
.ns-coa-entry__purity-badge {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: #16a34a;
  background: #dcfce7;
  border-radius: 20px;
  padding: 3px 10px;
}

.ns-coa-entry__details {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 8px 20px;
  margin: 0 0 20px;
}
.ns-coa-entry__details dt {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--ns-text-muted, #5C6282);
}
.ns-coa-entry__details dd {
  font-size: 0.82rem;
  color: var(--ns-text, #181A2C);
  margin: 0;
}

.ns-coa-entry__verify,
.ns-coa-entry__download {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--ns-primary, #4B5BD4);
  text-decoration: none;
  margin-right: 16px;
}
.ns-coa-entry__verify:hover,
.ns-coa-entry__download:hover { text-decoration: underline; }

.ns-coa-entry__doc a {
  display: block;
  border: 1px solid var(--ns-border, #E2E6F5);
  border-radius: 10px;
  overflow: hidden;
  transition: box-shadow 0.15s;
}
.ns-coa-entry__doc a:hover {
  box-shadow: 0 4px 20px rgba(0,0,0,0.1);
}
.ns-coa-entry__img {
  display: block;
  width: 100%;
  height: auto;
}

.ns-coa-footer-note {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 36px;
  padding: 16px 20px;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 10px;
  font-size: 0.82rem;
  color: #92400e;
  line-height: 1.6;
}
.ns-coa-footer-note svg { flex-shrink: 0; color: #d97706; margin-top: 2px; }
.ns-coa-footer-note a { color: #92400e; font-weight: 600; }

/* ============================================================
   PATCH 38 — Custom 404 page styles
   ============================================================ */

.ns-404-section {
  padding: 80px 0 60px;
}
.ns-404-hero {
  text-align: center;
  max-width: 540px;
  margin: 0 auto 56px;
}
.ns-404-hero__code {
  font-size: 7rem;
  font-weight: 900;
  line-height: 1;
  color: var(--ns-primary, #4B5BD4);
  opacity: 0.12;
  letter-spacing: -0.04em;
  margin-bottom: 8px;
}
.ns-404-hero__title {
  font-size: 1.8rem;
  font-weight: 800;
  color: var(--ns-text, #181A2C);
  letter-spacing: -0.02em;
  margin-bottom: 12px;
}
.ns-404-hero__sub {
  font-size: 0.95rem;
  color: var(--ns-text-muted, #5C6282);
  line-height: 1.65;
  margin-bottom: 28px;
}
.ns-404-hero__actions {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
}

.ns-404-suggest__label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ns-text-muted, #5C6282);
  text-align: center;
  margin-bottom: 20px;
}
.ns-404-suggest__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
}
@media (max-width: 800px) { .ns-404-suggest__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .ns-404-suggest__grid { grid-template-columns: 1fr 1fr; } }

.ns-404-suggest__card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 16px;
  border: 1px solid var(--ns-border, #E2E6F5);
  border-radius: 12px;
  text-decoration: none;
  transition: border-color 0.15s, box-shadow 0.15s;
  text-align: center;
}
.ns-404-suggest__card:hover {
  border-color: var(--ns-primary, #4B5BD4);
  box-shadow: 0 2px 14px rgba(75,91,212,0.1);
}
.ns-404-suggest__img {
  width: 80px !important;
  height: 80px !important;
  object-fit: cover !important;
  border-radius: 8px;
}
.ns-404-suggest__name {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--ns-text, #181A2C);
  line-height: 1.3;
}
.ns-404-suggest__price {
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--ns-primary, #4B5BD4);
}

/* ============================================================
   PATCH 39 — Starter Kits page styles
   ============================================================ */

.ns-kits-hero { padding-bottom: 40px !important; }
.ns-kits-hero__badges {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  margin-top: 20px;
}

/* Kit cards grid */
.ns-kits-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
@media (max-width: 900px) { .ns-kits-grid { grid-template-columns: 1fr; max-width: 520px; margin: 0 auto; } }

.ns-kit-card {
  position: relative;
  border: 1.5px solid var(--ns-border, #E2E6F5);
  border-radius: 16px;
  overflow: hidden;
  background: #fff;
  display: flex;
  flex-direction: column;
  transition: box-shadow 0.15s, border-color 0.15s;
}
.ns-kit-card:hover {
  border-color: var(--ns-primary, #4B5BD4);
  box-shadow: 0 6px 28px rgba(75,91,212,0.12);
}
.ns-kit-card--featured {
  border-color: var(--ns-accent, #D6346F);
}
.ns-kit-card--featured:hover {
  border-color: var(--ns-accent, #D6346F);
  box-shadow: 0 6px 28px rgba(214,52,111,0.15);
}

.ns-kit-card__badge {
  position: absolute;
  top: 14px;
  right: 14px;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  color: #fff;
  padding: 4px 10px;
  border-radius: 20px;
  z-index: 2;
}

.ns-kit-card__img-wrap {
  background: #f8f9ff;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  min-height: 200px;
}
.ns-kit-card__img-el,
.ns-kit-card__img-wrap img {
  width: 100%;
  max-width: 220px;
  height: auto;
  object-fit: contain;
  display: block;
  margin: 0 auto;
}

.ns-kit-card__body {
  padding: 20px 22px 22px;
  display: flex;
  flex-direction: column;
  flex: 1;
}
.ns-kit-card__tag {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ns-text-muted, #5C6282);
  margin-bottom: 6px;
}
.ns-kit-card__title {
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--ns-text, #181A2C);
  letter-spacing: -0.01em;
  margin-bottom: 10px;
}
.ns-kit-card__sub {
  font-size: 0.82rem;
  color: var(--ns-text-muted, #5C6282);
  line-height: 1.6;
  margin-bottom: 16px;
}
.ns-kit-card__includes {
  list-style: none;
  padding: 0;
  margin: 0 0 18px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.ns-kit-card__includes li {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.8rem;
  color: var(--ns-text, #181A2C);
}
.ns-kit-card__includes li svg {
  flex-shrink: 0;
  color: #16a34a;
}

.ns-kit-card__pricing {
  margin-bottom: 16px;
}
.ns-kit-card__price-row {
  display: flex;
  align-items: baseline;
  gap: 10px;
}
.ns-kit-card__reg-price {
  font-size: 0.82rem;
  color: var(--ns-text-muted, #5C6282);
  text-decoration: line-through;
}
.ns-kit-card__sale-price {
  font-size: 1.35rem;
  font-weight: 800;
  color: var(--ns-text, #181A2C);
}
.ns-kit-card__save {
  font-size: 0.75rem;
  font-weight: 600;
  color: #16a34a;
  margin-top: 3px;
}

.ns-kit-card__cta {
  display: flex !important;
  align-items: center;
  justify-content: center;
  width: 100%;
  text-align: center;
  margin-bottom: 10px;
}
.ns-kit-card__browse-link {
  font-size: 0.78rem;
  color: var(--ns-text-muted, #5C6282);
  text-decoration: none;
  text-align: center;
  display: block;
}
.ns-kit-card__browse-link:hover { color: var(--ns-primary, #4B5BD4); }

/* Why a kit section */
.ns-kits-why { background: var(--ns-bg-subtle, #F4F5FC); }
.ns-kits-why-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  margin-top: 36px;
}
@media (max-width: 800px) { .ns-kits-why-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .ns-kits-why-grid { grid-template-columns: 1fr; } }

.ns-kits-why-item {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ns-kits-why-item svg { color: var(--ns-primary, #4B5BD4); }
.ns-kits-why-item strong {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--ns-text, #181A2C);
}
.ns-kits-why-item span {
  font-size: 0.8rem;
  color: var(--ns-text-muted, #5C6282);
  line-height: 1.6;
}

/* Calculator band */
.ns-kits-calc-band { padding: 36px 0 !important; }
.ns-kits-calc-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
  padding: 28px 32px;
  background: var(--ns-primary, #4B5BD4);
  border-radius: 16px;
  color: #fff;
}
.ns-kits-calc-inner strong {
  display: block;
  font-size: 1rem;
  font-weight: 700;
  margin-bottom: 4px;
}
.ns-kits-calc-inner span {
  font-size: 0.85rem;
  opacity: 0.8;
}
.ns-kits-calc-inner .ns-btn--primary {
  background: #fff !important;
  color: var(--ns-primary, #4B5BD4) !important;
  border-color: #fff !important;
  white-space: nowrap;
  flex-shrink: 0;
}
.ns-kits-calc-inner .ns-btn--primary:hover {
  background: rgba(255,255,255,0.9) !important;
}

/* ============================================================
   PATCH 40 — Footer trust band (inside footer element)
   ============================================================ */

.ns-footer-trust-band {
  padding: 20px 0;
  background: transparent;
}
.ns-footer-trust-band__inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 24px;
  display: flex;
  flex-wrap: wrap;
  gap: 16px 32px;
  align-items: center;
  justify-content: center;
}
.ns-footer-trust-item {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.78rem;
  color: rgba(255,255,255,0.7);
  white-space: nowrap;
}
.ns-footer-trust-item svg {
  flex-shrink: 0;
  opacity: 0.6;
}
.ns-footer-trust-sep {
  border: none;
  border-top: 1px solid rgba(255,255,255,0.1);
  margin: 0 24px;
}

/* ============================================================
   PATCH 41 — Page-specific overrides
   ============================================================ */

/* Calculator page (ID 80): hide duplicate WordPress H1 title
   The calculator embed renders its own styled title inside the content */
.page-id-80 .entry-header { display: none; }

/* Starter kits page (ID 105): hide default entry-header too */
.page-id-105 .entry-header { display: none; }

/* COA page (ID 104): hide default entry-header */
.page-id-104 .entry-header { display: none; }

/* ============================================================
   PATCH 42 — Footer trust band + calculator layout
   ============================================================ */

/* Footer: trust band — 4 items locked to one row */
.ns-footer-trust-band { padding: 28px 0; }
.ns-footer-trust-band__inner {
  display: grid;
  grid-template-columns: repeat(4, auto);
  gap: 0 36px;
  justify-content: center;
  align-items: center;
  padding: 0 32px;
}
.ns-footer-trust-item { font-size: 0.84rem; gap: 9px; color: rgba(255,255,255,0.72); white-space: nowrap; }
.ns-footer-trust-item svg { width: 18px; height: 18px; opacity: 0.65; }

/* Footer: even padding above and below horizontal rule */
.ns-footer-trust-sep { margin: 28px 32px; }

/* Footer grid: slightly more breathing room */
.ns-footer-grid { padding-bottom: 60px; }

/* Calculator: two-column info grid (FAQ left, How-to right) */
.ns-calc-info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  max-width: 1100px;
  margin: 48px auto;
  padding: 0 16px;
  align-items: start;
}
.ns-calc-info-grid .ns-calc-faq,
.ns-calc-info-grid .ns-calc-how {
  max-width: none;
  margin: 0;
  padding: 0;
}
@media (max-width: 780px) {
  .ns-calc-info-grid { grid-template-columns: 1fr; gap: 32px; }
}

/* Calculator: supply card name + subtitle wrapper */
.ns-calc-supply-card__name-wrap { display: flex; flex-direction: column; gap: 1px; margin-bottom: 4px; }
.ns-calc-supply-card__sub { font-size: 0.68rem; color: var(--ns-primary, #4B5BD4); font-weight: 600; letter-spacing: 0.02em; }

/* ============================================================
   PATCH 43 — Mobile shop card image rendering (defensive)
   ============================================================ */
@media (max-width: 600px) {
  ul.products li.product .wp-post-image,
  ul.products li.product .attachment-woocommerce_thumbnail {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    object-fit: contain !important;
  }
  ul.products li.product a.woocommerce-LoopProduct-link {
    display: block !important;
  }
}

/* ============================================================
   PATCH 44 — Mobile homepage length reduction
   ============================================================ */
@media (max-width: 600px) {
  .ns-section { padding: 40px 0 !important; }
  .ns-hero { padding: 32px 0 24px !important; }
  .ns-hero__stats { grid-template-columns: 1fr 1fr; gap: 8px !important; }
  .ns-hero__stat { padding: 14px 12px !important; }
  .ns-why-grid { grid-template-columns: 1fr 1fr !important; gap: 12px !important; }
  .ns-why-card { padding: 18px 14px !important; }
  .ns-steps { grid-template-columns: 1fr 1fr !important; gap: 12px !important; }
  .ns-step { padding: 16px 12px !important; }
  .ns-commitment-grid { grid-template-columns: 1fr !important; gap: 16px !important; }
  .home ul.products { grid-template-columns: 1fr 1fr !important; gap: 12px !important; }
  .home ul.products li.product { padding: 12px !important; }
}

/* ============================================================
   PATCH 45 — Footer accessibility (WCAG AA contrast)
   ============================================================ */
.ns-footer-col h3,
.ns-footer-col h4 {
  color: rgba(255, 255, 255, 0.65) !important;
}
.ns-footer-brand p {
  color: rgba(255, 255, 255, 0.55) !important;
}
.ns-footer-bottom p,
.ns-footer-bottom a {
  color: rgba(255, 255, 255, 0.55) !important;
}
.ns-footer-bottom a:hover {
  color: #fff !important;
}
.ns-footer-legal-line,
.ns-footer-legal-line a {
  color: rgba(255, 255, 255, 0.35) !important;
  font-size: 0.72rem !important;
  line-height: 1.6 !important;
}
.ns-save-pill {
  background: #15803d !important;
  color: #fff !important;
}

/* ============================================================
   PATCH 46 — Print stylesheet
   ============================================================ */
@media print {
  header, footer, .ns-announce-bar, .ns-sticky-cart, .ns-sticky-atc,
  .fkcart-modal, .fkcart-modal-overlay,
  .menu-toggle, .ns-header-search-trigger,
  .ns-search-modal, .crisp-client { display: none !important; }
  body { background: #fff !important; color: #000 !important; }
  a { color: #000 !important; text-decoration: underline !important; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 0.7em; color: #555; }
  .ns-section { padding: 12px 0 !important; }
  table { page-break-inside: avoid; }
  h1, h2, h3 { page-break-after: avoid; }
}

/* ============================================================
   PATCH 47 — Design System Tokens (forward-only adoption)
   ============================================================ */
:root {
  --space-3xs: 4px;  --space-2xs: 8px;   --space-xs:  12px;
  --space-sm:  16px; --space-md:  24px;  --space-lg:  32px;
  --space-xl:  48px; --space-2xl: 64px;  --space-3xl: 96px;

  --radius-sm: 6px;  --radius-md: 12px;  --radius-lg: 16px;  --radius-pill: 999px;

  --shadow-sm:  0 1px 3px rgba(30, 40, 120, 0.06);
  --shadow-md:  0 4px 12px rgba(30, 40, 120, 0.08);
  --shadow-lg:  0 8px 24px rgba(30, 40, 120, 0.10);
  --shadow-cta: 0 4px 14px rgba(75, 91, 212, 0.30);

  --font-display: clamp(40px, 6vw, 60px);
  --font-h1: clamp(32px, 4vw, 44px);
  --font-h2: clamp(24px, 3vw, 32px);
  --font-h3: 20px;  --font-h4: 16px;
  --font-body: 16px; --font-sm: 14px;  --font-xs: 12px;

  --lh-tight: 1.1;  --lh-snug: 1.3;  --lh-normal: 1.5;  --lh-relaxed: 1.7;

  --transition-fast: 120ms ease;
  --transition-base: 180ms ease;
  --transition-slow: 240ms cubic-bezier(0.32, 0.72, 0, 1);

  --color-success: #16a34a;
  --color-warning: #f59e0b;
  --color-danger:  #dc2626;
}

*:focus-visible {
  outline: 2px solid var(--ns-primary, #4B5BD4);
  outline-offset: 2px;
  border-radius: 4px;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

/* ============================================================
   PATCH 48 — Brand CTA interaction states
   ============================================================ */
.ns-btn,
.ns-btn-primary,
.ns-btn-outline,
.single_add_to_cart_button,
.products .button.add_to_cart_button,
.products a.button {
  transition: transform var(--transition-fast),
              background-color var(--transition-base),
              box-shadow var(--transition-base);
  will-change: transform;
}
.ns-btn:hover,
.ns-btn-primary:hover,
.single_add_to_cart_button:hover,
.products .button.add_to_cart_button:hover,
.products a.button:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-cta, 0 4px 14px rgba(75,91,212,0.30));
}
.ns-btn:active,
.ns-btn-primary:active,
.single_add_to_cart_button:active,
.products .button.add_to_cart_button:active,
.products a.button:active {
  transform: translateY(0);
  box-shadow: 0 1px 2px rgba(75, 91, 212, 0.4);
}
.single_add_to_cart_button.is-loading {
  pointer-events: none;
  position: relative;
  color: transparent !important;
}
.single_add_to_cart_button.is-loading::after {
  content: '';
  position: absolute; inset: 0; margin: auto;
  width: 18px; height: 18px;
  border: 2px solid rgba(255,255,255,0.4);
  border-top-color: #fff;
  border-radius: 50%;
  animation: ns-spin 0.7s linear infinite;
}
@keyframes ns-spin { to { transform: rotate(360deg); } }

/* ============================================================
   PATCH 49 — Calculator tab animated underline
   ============================================================ */
.ns-calc__tab-btn {
  position: relative;
  transition: color var(--transition-base);
}
.ns-calc__tab-btn::after {
  content: '';
  position: absolute;
  bottom: -1px; left: 50%;
  width: 0; height: 3px;
  background: var(--ns-primary, #4B5BD4);
  border-radius: 3px 3px 0 0;
  transition: width var(--transition-slow), left var(--transition-slow);
}
.ns-calc__tab-btn.active::after {
  width: 100%;
  left: 0;
}

/* ============================================================
   PATCH 50 — Mobile category pills → horizontal scroll
   ============================================================ */
@media (max-width: 700px) {
  .ns-shop-cats-section .ns-cat-pills {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    overflow-x: auto;
    gap: 8px;
    padding: 4px 16px;
    margin: 0 -16px;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .ns-shop-cats-section .ns-cat-pills::-webkit-scrollbar { display: none; }
  .ns-shop-cats-section .ns-cat-pill {
    flex: 0 0 auto !important;
    scroll-snap-align: start;
    white-space: nowrap !important;
  }
}

/* ============================================================
   PATCH 51 — Mobile hero stats horizontal layout
   ============================================================ */
@media (max-width: 600px) {
  .ns-hero__stats {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    gap: 0 !important;
    padding: 12px 16px !important;
    margin: 0 -16px !important;
    scrollbar-width: none;
  }
  .ns-hero__stats::-webkit-scrollbar { display: none; }
  .ns-hero__stat {
    flex: 0 0 auto !important;
    scroll-snap-align: start;
    padding: 12px 18px !important;
    min-width: 150px !important;
    height: auto !important;
    background: transparent !important;
    box-shadow: none !important;
    border-right: 1px solid var(--ns-border, rgba(0,0,0,0.06)) !important;
    border-radius: 0 !important;
  }
  .ns-hero__stat:last-child { border-right: 0 !important; }
}

/* ============================================================
   PATCH 52 — Branded empty states (cart + search)
   ============================================================ */
.ns-empty-state {
  max-width: 720px;
  margin: var(--space-3xl, 80px) auto;
  padding: 0 var(--space-md, 24px);
  text-align: center;
}
.ns-empty-state__icon {
  color: var(--ns-text-muted, #9CA3AF);
  margin-bottom: var(--space-md, 24px);
  display: inline-flex;
}
.ns-empty-state h2 {
  font-size: 32px;
  margin: 0 0 var(--space-xs, 12px);
}
.ns-empty-state p {
  font-size: 16px;
  color: var(--ns-text-muted, #6B7280);
  margin-bottom: var(--space-lg, 32px);
}
.ns-empty-state__actions {
  display: flex;
  gap: var(--space-sm, 16px);
  justify-content: center;
  margin-bottom: var(--space-3xl, 80px);
  flex-wrap: wrap;
}
.ns-empty-state__popular h3 {
  font-size: 14px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--ns-text-muted);
  margin-bottom: var(--space-md, 24px);
}

/* ============================================================
   PATCH 53 — Mobile menu transitions
   ============================================================ */
.menu-toggle { transition: background-color var(--transition-base); }

/* ============================================================
   PATCH 54 — Mobile PDP description accordions
   ============================================================ */
.ns-pdp-accordion { padding: 14px 0; }
.ns-pdp-accordion > summary {
  cursor: pointer;
  font-weight: 700; font-size: 16px;
  padding: 6px 0;
  list-style: none;
  display: flex; justify-content: space-between; align-items: center;
}
.ns-pdp-accordion > summary::-webkit-details-marker { display: none; }
.ns-pdp-accordion > summary::after {
  content: '+'; font-size: 22px; color: var(--ns-text-muted, #9CA3AF);
  transition: transform var(--transition-base);
  flex-shrink: 0;
}
.ns-pdp-accordion[open] > summary::after { content: '\2212'; }
@media (max-width: 700px) {
  .ns-pdp-accordion {
    border-bottom: 1px solid var(--ns-border, #E2E6F5);
  }
}
@media (min-width: 701px) {
  .ns-pdp-accordion { display: block; }
  .ns-pdp-accordion > summary { pointer-events: none; }
  .ns-pdp-accordion > summary::after { display: none; }
}

/* ============================================================
   PATCH 55 — Breadcrumb styling (3.4)
   ============================================================ */
.woocommerce-breadcrumb {
  font-size: 0.8rem !important;
  color: var(--ns-text-muted, #6B7280) !important;
  padding: 16px 0 0 !important;
}
.woocommerce-breadcrumb a { color: var(--ns-text-muted, #6B7280) !important; }
.woocommerce-breadcrumb a:hover { color: var(--ns-primary, #4B5BD4) !important; }

/* ============================================================
   PATCH 56 — Skip-to-content link (3.6)
   ============================================================ */
.skip-link { position: absolute; left: -9999px; top: 0; }
.skip-link:focus {
  position: fixed; left: 8px; top: 8px;
  background: #fff; color: #181A2C;
  padding: 8px 14px;
  border: 2px solid #4B5BD4;
  z-index: 99999;
  border-radius: 4px;
  text-decoration: none;
}

/* ============================================================
   PATCH 57 — Checkout payment radio styling (3.8)
   ============================================================ */
.wp-block-woocommerce-checkout-payment-block label.wc-block-components-radio-control__option {
  padding: 16px !important;
  border: 1px solid var(--ns-border, #E2E6F5) !important;
  border-radius: 10px !important;
  margin-bottom: 8px !important;
}
.wp-block-woocommerce-checkout-payment-block label.wc-block-components-radio-control__option--checked {
  border-color: var(--ns-primary, #4B5BD4) !important;
  background: rgba(75, 91, 212, 0.05) !important;
}

/* ============================================================
   PATCH 58 — Boost footer contrast ratios (WCAG AA)
   ============================================================ */
.ns-footer-legal-line,
.ns-footer-legal-line a {
  color: rgba(255, 255, 255, 0.55) !important;
}
.ns-footer-bottom p,
.ns-footer-bottom a {
  color: rgba(255, 255, 255, 0.6) !important;
}



/* ============================================================
   PATCH 59 — Partner Program Landing Page (Rewrite v2)
   Every rule scoped to body.partner-lander.
   Class prefix: .pl-  (partner lander)
   ============================================================ */

/* ── Tokens (CSS vars only resolve inside .partner-lander) ─────────── */
body.partner-lander {
  --pl-blue: #4B5BD4;
  --pl-blue-2: #5e6ee6;
  --pl-pink: #D6346F;
  --pl-dark: #0E1020;
  --pl-navy: #181A2C;
  --pl-light: #F4F5FC;
  --pl-white: #ffffff;
  --pl-text-light: #E8EAF0;
  --pl-text-muted: rgba(232, 234, 240, 0.55);
  --pl-border-dark: rgba(255, 255, 255, 0.08);
  --pl-border-light: #E2E4F0;
  --pl-text-dark: #14162A;
  --pl-text-dark-muted: #5a5f78;

  background: var(--pl-dark);
  color: var(--pl-text-light);
}

/* ── Reset GeneratePress layout chrome ──────────────────────────────── */
body.partner-lander .site-content,
body.partner-lander .content-area,
body.partner-lander .site-main,
body.partner-lander .entry-content,
body.partner-lander .inside-article {
  max-width: none !important;
  width: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
}
body.partner-lander .entry-header,
body.partner-lander .entry-meta,
body.partner-lander .entry-footer,
body.partner-lander .page-header,
body.partner-lander article > .entry-title,
body.partner-lander .post-navigation { display: none !important; }
body.partner-lander article { background: transparent !important; padding: 0 !important; border: 0 !important; }

/* ── Main wrapper + section primitives ──────────────────────────────── */
body.partner-lander .pl-main { display: block; }

body.partner-lander .pl-section {
  position: relative;
  padding: clamp(72px, 9vw, 120px) 24px;
  background: var(--pl-dark);
  color: var(--pl-text-light);
}
body.partner-lander .pl-section--light {
  background: var(--pl-light);
  color: var(--pl-text-dark);
}

body.partner-lander .pl-wrap {
  max-width: 1120px;
  margin: 0 auto;
}
body.partner-lander .pl-wrap--narrow {
  max-width: 820px;
  margin: 0 auto;
}

body.partner-lander .pl-section__title {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: clamp(34px, 4.4vw, 52px);
  line-height: 1.02;
  letter-spacing: -0.01em;
  margin: 0 0 18px;
  color: inherit;
}
body.partner-lander .pl-section--light .pl-section__title { color: var(--pl-text-dark); }
body.partner-lander .pl-section__title--center { text-align: center; }

body.partner-lander .pl-section__lede {
  font-size: 16px;
  line-height: 1.55;
  margin: 0 0 48px;
  color: var(--pl-text-dark-muted);
  max-width: 620px;
}
body.partner-lander .pl-section--light .pl-section__lede { color: var(--pl-text-dark-muted); }
body.partner-lander .pl-section__lede--center { margin-left: auto; margin-right: auto; text-align: center; }

/* ── Buttons ────────────────────────────────────────────────────────── */
body.partner-lander .pl-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 700;
  font-size: 16px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 14px 32px;
  border-radius: 4px;
  border: 1px solid transparent;
  text-decoration: none;
  line-height: 1;
  cursor: pointer;
  transition: background 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease;
}
body.partner-lander .pl-btn--primary {
  background: var(--pl-blue);
  color: var(--pl-white);
  border-color: var(--pl-blue);
}
body.partner-lander .pl-btn--primary:hover { background: var(--pl-blue-2); border-color: var(--pl-blue-2); }
body.partner-lander .pl-btn--outline {
  background: transparent;
  color: var(--pl-white);
  border-color: rgba(255, 255, 255, 0.35);
}
body.partner-lander .pl-btn--outline:hover { border-color: var(--pl-white); }
body.partner-lander .pl-btn--ghost {
  background: transparent;
  color: var(--pl-blue);
  border-color: var(--pl-blue);
}
body.partner-lander .pl-btn--ghost:hover { background: rgba(75, 91, 212, 0.08); }
body.partner-lander .pl-btn--block { width: 100%; }

/* ============================================================
   SECTION 1 — HERO
   ============================================================ */
body.partner-lander .pl-hero {
  min-height: 72vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--pl-dark);
  padding-top: clamp(96px, 12vw, 140px);
  padding-bottom: clamp(96px, 12vw, 140px);
}
body.partner-lander .pl-hero__inner {
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
}
body.partner-lander .pl-hero__eyebrow {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--pl-blue);
  margin: 0 0 24px;
  font-weight: 600;
}
body.partner-lander .pl-hero__headline {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: clamp(44px, 7vw, 80px);
  line-height: 1.0;
  letter-spacing: -0.015em;
  color: var(--pl-white);
  margin: 0 0 20px;
}
body.partner-lander .pl-hero__sub {
  font-family: system-ui, -apple-system, sans-serif;
  font-size: clamp(17px, 1.4vw, 19px);
  line-height: 1.55;
  color: var(--pl-text-muted);
  max-width: 620px;
  margin: 0 auto 44px;
}
body.partner-lander .pl-hero__ctas {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  flex-wrap: wrap;
}
body.partner-lander .pl-trust {
  list-style: none;
  padding: 0;
  margin: 52px auto 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  max-width: 720px;
}
body.partner-lander .pl-trust__pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 100px;
  padding: 8px 16px;
  font-size: 12px;
  line-height: 1;
  color: var(--pl-text-light);
}
body.partner-lander .pl-trust__dot { color: var(--pl-blue); font-size: 14px; line-height: 1; }

/* ============================================================
   SECTION 2 — HOW IT WORKS
   ============================================================ */
body.partner-lander .pl-how__list {
  list-style: none;
  padding: 0;
  margin: 24px 0 64px;
  counter-reset: pl-how;
}
body.partner-lander .pl-how__row {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 32px;
  align-items: start;
  padding: 32px 0;
  border-bottom: 1px solid var(--pl-border-light);
}
body.partner-lander .pl-how__row:first-child { padding-top: 16px; }
body.partner-lander .pl-how__row:last-child { border-bottom: 0; }
body.partner-lander .pl-how__num {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 64px;
  line-height: 1;
  color: var(--pl-blue);
  opacity: 0.15;
  display: block;
}
body.partner-lander .pl-how__title {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 26px;
  line-height: 1.1;
  letter-spacing: -0.005em;
  color: var(--pl-text-dark);
  margin: 6px 0 10px;
}
body.partner-lander .pl-how__body p {
  font-size: 15px;
  line-height: 1.6;
  color: var(--pl-text-dark-muted);
  margin: 0;
}

/* Attribution decision tree */
body.partner-lander .pl-tree { margin-top: 8px; }
body.partner-lander .pl-tree__toggle {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  background: var(--pl-white);
  border: 1px solid var(--pl-border-light);
  padding: 16px 24px;
  border-radius: 6px;
  cursor: pointer;
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 700;
  font-size: 15px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--pl-text-dark);
  transition: border-color 160ms ease;
}
body.partner-lander .pl-tree__toggle:hover { border-color: var(--pl-blue); }
body.partner-lander .pl-tree__chev { transition: transform 260ms ease; color: var(--pl-blue); }
body.partner-lander .pl-tree__toggle.is-open .pl-tree__chev { transform: rotate(180deg); }
body.partner-lander .pl-tree__body { overflow: hidden; }
body.partner-lander .pl-tree__inner {
  margin-top: 12px;
  background: #F9FAFF;
  border-left: 3px solid var(--pl-blue);
  padding: 24px 28px;
  border-radius: 4px;
}
body.partner-lander .pl-tree__list {
  margin: 0;
  padding-left: 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  color: var(--pl-text-dark-muted);
  font-size: 14px;
  line-height: 1.6;
}
body.partner-lander .pl-tree__list strong { color: var(--pl-text-dark); }
body.partner-lander .pl-tree__tiebreak {
  margin: 18px 0 0;
  font-size: 13px;
  line-height: 1.6;
  color: var(--pl-text-dark-muted);
  padding-top: 14px;
  border-top: 1px solid var(--pl-border-light);
}
body.partner-lander .pl-tree__tiebreak strong { color: var(--pl-text-dark); }

/* ============================================================
   SECTION 3 — CALCULATOR
   ============================================================ */
body.partner-lander .pl-calc { background: var(--pl-navy); }
body.partner-lander .pl-calc__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 64px;
  align-items: start;
}
body.partner-lander .pl-calc__inputs { max-width: 460px; }
body.partner-lander .pl-calc__title {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 32px;
  line-height: 1.05;
  color: var(--pl-white);
  margin: 0 0 8px;
}
body.partner-lander .pl-calc__sub {
  font-size: 14px;
  color: var(--pl-text-muted);
  margin: 0 0 32px;
}

body.partner-lander .pl-field {
  display: block;
  margin-bottom: 26px;
}
body.partner-lander .pl-field__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 10px;
}
body.partner-lander .pl-field__label {
  font-size: 13px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--pl-text-muted);
  font-weight: 600;
  display: inline-flex;
  align-items: baseline;
  gap: 10px;
}
body.partner-lander .pl-field__value {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 700;
  font-size: 28px;
  color: var(--pl-white);
  line-height: 1;
}
body.partner-lander .pl-field__flag {
  font-size: 11px;
  letter-spacing: 0.02em;
  text-transform: none;
  color: var(--pl-pink);
  font-weight: 500;
}
body.partner-lander .pl-field__scale {
  display: flex;
  justify-content: space-between;
  font-size: 11px;
  color: var(--pl-text-muted);
  margin-top: 6px;
  letter-spacing: 0.04em;
}

/* Range slider (blue thumb / track fill) */
body.partner-lander .pl-range {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 4px;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 2px;
  outline: none;
  margin: 8px 0 4px;
}
body.partner-lander .pl-range::-webkit-slider-runnable-track {
  height: 4px;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 2px;
}
body.partner-lander .pl-range::-moz-range-track {
  height: 4px;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 2px;
}
body.partner-lander .pl-range::-moz-range-progress {
  height: 4px;
  background: var(--pl-blue);
  border-radius: 2px;
}
body.partner-lander .pl-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--pl-blue);
  border: 3px solid var(--pl-navy);
  box-shadow: 0 0 0 1px var(--pl-blue);
  margin-top: -8px;
  cursor: pointer;
  transition: transform 120ms ease;
}
body.partner-lander .pl-range::-moz-range-thumb {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--pl-blue);
  border: 3px solid var(--pl-navy);
  box-shadow: 0 0 0 1px var(--pl-blue);
  cursor: pointer;
}
body.partner-lander .pl-range:focus::-webkit-slider-thumb { transform: scale(1.1); }

/* Select + number input — dark theme */
body.partner-lander .pl-select-wrap {
  position: relative;
}
body.partner-lander .pl-select-wrap::after {
  content: '';
  position: absolute;
  right: 16px;
  top: 50%;
  width: 8px;
  height: 8px;
  border-right: 1.5px solid var(--pl-text-muted);
  border-bottom: 1.5px solid var(--pl-text-muted);
  transform: translateY(-70%) rotate(45deg);
  pointer-events: none;
}
body.partner-lander .pl-select,
body.partner-lander .pl-num {
  width: 100%;
  background: rgba(255, 255, 255, 0.04);
  color: var(--pl-white);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 6px;
  padding: 12px 16px;
  font-family: system-ui, -apple-system, sans-serif;
  font-size: 15px;
  line-height: 1.2;
  appearance: none;
  -webkit-appearance: none;
  outline: none;
  transition: border-color 160ms ease, background 160ms ease;
}
body.partner-lander .pl-select { padding-right: 40px; }
body.partner-lander .pl-select:focus,
body.partner-lander .pl-num:focus {
  border-color: var(--pl-blue);
  background: rgba(75, 91, 212, 0.06);
}
body.partner-lander .pl-select option {
  background: var(--pl-navy);
  color: var(--pl-white);
}

body.partner-lander .pl-reset {
  background: none;
  border: 0;
  padding: 4px 0;
  margin-top: 4px;
  color: var(--pl-blue);
  font-size: 13px;
  cursor: pointer;
  font-family: system-ui, sans-serif;
}
body.partner-lander .pl-reset:hover { color: var(--pl-blue-2); text-decoration: underline; }

/* Outputs */
body.partner-lander .pl-calc__outputs {
  display: flex;
  flex-direction: column;
  gap: 16px;
  position: sticky;
  top: 24px;
}
body.partner-lander .pl-out {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 12px;
  padding: 24px 28px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
body.partner-lander .pl-out--hero {
  border-color: var(--pl-blue);
  box-shadow: 0 0 0 1px rgba(75, 91, 212, 0.3);
}
body.partner-lander .pl-out__label {
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pl-text-muted);
}
body.partner-lander .pl-out__value {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: clamp(32px, 4vw, 48px);
  line-height: 1.05;
  color: var(--pl-white);
}
body.partner-lander .pl-out--hero .pl-out__value { color: var(--pl-white); }
body.partner-lander .pl-out__sub {
  font-size: 12px;
  color: var(--pl-text-muted);
}

body.partner-lander .pl-calc__assume {
  margin: 48px 0 0;
  font-size: 12px;
  font-style: italic;
  color: var(--pl-text-muted);
  line-height: 1.6;
  max-width: 980px;
}

/* ============================================================
   SECTION 4 — TIERS
   ============================================================ */
body.partner-lander .pl-tier-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 20px;
  margin: 56px 0 48px;
}
body.partner-lander .pl-tier {
  background: var(--pl-white);
  border: 1px solid var(--pl-border-light);
  border-radius: 12px;
  padding: 28px 24px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
body.partner-lander .pl-tier--feature {
  border-color: var(--pl-blue);
  box-shadow: 0 4px 24px rgba(75, 91, 212, 0.12);
}
body.partner-lander .pl-tier__name {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 22px;
  color: var(--pl-text-dark);
  margin: 0;
  letter-spacing: -0.005em;
}
body.partner-lander .pl-tier__qual {
  font-size: 12px;
  color: var(--pl-text-dark-muted);
  margin: 4px 0 16px;
  line-height: 1.4;
}
body.partner-lander .pl-tier__rate {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 40px;
  line-height: 1;
  color: var(--pl-blue);
  margin: 0;
  letter-spacing: -0.01em;
}
body.partner-lander .pl-tier__rate--muted { color: var(--pl-text-dark-muted); }
body.partner-lander .pl-tier__ratelbl {
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--pl-text-dark-muted);
  margin: 2px 0 14px;
}
body.partner-lander .pl-tier__pill {
  align-self: flex-start;
  display: inline-block;
  font-size: 11px;
  letter-spacing: 0.04em;
  background: rgba(75, 91, 212, 0.08);
  color: var(--pl-blue);
  border: 1px solid rgba(75, 91, 212, 0.2);
  border-radius: 100px;
  padding: 5px 12px;
  margin: 0 0 16px;
  text-transform: uppercase;
  font-weight: 600;
}
body.partner-lander .pl-tier__perks {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
body.partner-lander .pl-tier__perks li {
  position: relative;
  padding-left: 20px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--pl-text-dark);
}
body.partner-lander .pl-tier__perks li::before {
  content: '';
  position: absolute;
  left: 2px;
  top: 7px;
  width: 8px;
  height: 4px;
  border-left: 1.5px solid var(--pl-blue);
  border-bottom: 1.5px solid var(--pl-blue);
  transform: rotate(-45deg);
}

body.partner-lander .pl-tier-notes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  max-width: 860px;
  margin: 0 auto;
  padding-top: 32px;
  border-top: 1px solid var(--pl-border-light);
}
body.partner-lander .pl-tier-notes__h {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--pl-blue);
  margin: 0 0 8px;
}
body.partner-lander .pl-tier-notes p {
  font-size: 13px;
  line-height: 1.6;
  color: var(--pl-text-dark-muted);
  margin: 0;
}

/* ============================================================
   SECTION 5 — WHO THIS IS FOR
   ============================================================ */
body.partner-lander .pl-who { background: var(--pl-navy); }
body.partner-lander .pl-who__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  margin-top: 48px;
}
body.partner-lander .pl-who__h {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--pl-text-muted);
  margin: 0 0 20px;
}
body.partner-lander .pl-who__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
body.partner-lander .pl-who__list li {
  position: relative;
  padding-left: 24px;
  font-size: 15px;
  line-height: 1.55;
  color: var(--pl-text-light);
}
body.partner-lander .pl-who__list--in li::before {
  content: '›';
  position: absolute;
  left: 0;
  top: -2px;
  color: var(--pl-blue);
  font-size: 18px;
  font-weight: 600;
  line-height: 1.4;
}
body.partner-lander .pl-who__list--out li {
  opacity: 0.65;
}
body.partner-lander .pl-who__list--out li::before {
  content: '—';
  position: absolute;
  left: 0;
  top: 0;
  color: rgba(255, 255, 255, 0.3);
  font-weight: 400;
}

/* ============================================================
   SECTION 6 — PROGRAM TERMS
   ============================================================ */
body.partner-lander .pl-terms__grid {
  max-width: 860px;
  margin: 56px auto 0;
  display: block;
}
body.partner-lander .pl-terms__row {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 32px;
  padding: 18px 0;
  border-bottom: 1px solid var(--pl-border-light);
  align-items: baseline;
}
body.partner-lander .pl-terms__row:last-child { border-bottom: 0; }
body.partner-lander .pl-terms__row dt {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--pl-blue);
  margin: 0;
}
body.partner-lander .pl-terms__row dd {
  font-family: system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.55;
  color: var(--pl-text-dark);
  margin: 0;
}

/* ============================================================
   SECTION 7 — FAQ
   ============================================================ */
body.partner-lander .pl-faq { background: var(--pl-navy); }
body.partner-lander .pl-faq__list {
  list-style: none;
  padding: 0;
  margin: 40px 0 0;
}
body.partner-lander .pl-faq__item {
  border-bottom: 1px solid var(--pl-border-dark);
}
body.partner-lander .pl-faq__q {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  text-align: left;
  background: none;
  border: 0;
  padding: 20px 0;
  cursor: pointer;
  color: var(--pl-white);
  font-family: system-ui, -apple-system, sans-serif;
  font-weight: 600;
  font-size: 15px;
  line-height: 1.45;
  transition: color 160ms ease;
}
body.partner-lander .pl-faq__item.is-open .pl-faq__q { color: var(--pl-blue); }
body.partner-lander .pl-faq__qtxt { flex: 1; }
body.partner-lander .pl-faq__chev {
  flex-shrink: 0;
  color: currentColor;
  transition: transform 260ms ease;
}
body.partner-lander .pl-faq__item.is-open .pl-faq__chev { transform: rotate(180deg); }
body.partner-lander .pl-faq__a { overflow: hidden; }
body.partner-lander .pl-faq__ainner { padding: 0 0 20px; padding-right: 42px; }
body.partner-lander .pl-faq__a p {
  font-size: 14px;
  line-height: 1.65;
  color: var(--pl-text-muted);
  margin: 0;
}

/* ============================================================
   SECTION 8 — APPLY
   ============================================================ */
body.partner-lander .pl-apply { background: var(--pl-dark); }
body.partner-lander .pl-apply .pl-wrap { max-width: 960px; }
body.partner-lander .pl-apply__head { margin-bottom: 56px; }
body.partner-lander .pl-apply__grid {
  display: grid;
  grid-template-columns: 1fr 1px 1fr;
  gap: 48px;
  align-items: stretch;
}
body.partner-lander .pl-apply__rule {
  background: var(--pl-border-dark);
  width: 1px;
  height: 100%;
  justify-self: center;
}
body.partner-lander .pl-apply__card {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 12px;
  padding: 32px 32px 36px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
body.partner-lander .pl-apply__badge {
  align-self: flex-start;
  display: inline-block;
  padding: 5px 12px;
  border-radius: 100px;
  font-size: 10px;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--pl-white);
}
body.partner-lander .pl-apply__badge--instant { background: var(--pl-pink); }
body.partner-lander .pl-apply__badge--full { background: rgba(255, 255, 255, 0.10); }
body.partner-lander .pl-apply__title {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 26px;
  line-height: 1.1;
  color: var(--pl-white);
  margin: 4px 0 0;
}
body.partner-lander .pl-apply__desc {
  font-size: 14px;
  color: var(--pl-text-muted);
  line-height: 1.55;
  margin: 0;
}
body.partner-lander .pl-apply__list,
body.partner-lander .pl-apply__steps {
  list-style: none;
  padding: 0;
  margin: 8px 0 12px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  flex: 1;
}
body.partner-lander .pl-apply__list li {
  position: relative;
  padding-left: 22px;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--pl-text-light);
}
body.partner-lander .pl-apply__list li::before {
  content: '○';
  position: absolute;
  left: 0;
  top: 0;
  color: var(--pl-blue);
  font-size: 12px;
}
body.partner-lander .pl-apply__steps li {
  display: flex;
  align-items: baseline;
  gap: 12px;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--pl-text-light);
}
body.partner-lander .pl-apply__steps li span {
  flex-shrink: 0;
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  color: var(--pl-blue);
  width: 18px;
}
body.partner-lander .pl-apply__card .pl-btn { margin-top: auto; }

/* ============================================================
   SECTION 9 — ASSET LIBRARY (callout)
   ============================================================ */
body.partner-lander .pl-assets__card {
  background: var(--pl-white);
  border: 1px solid var(--pl-border-light);
  border-radius: 12px;
  padding: 40px 48px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  align-items: start;
}
body.partner-lander .pl-assets__title {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 28px;
  margin: 0 0 10px;
  color: var(--pl-text-dark);
}
body.partner-lander .pl-assets__sub {
  font-size: 14px;
  color: var(--pl-text-dark-muted);
  line-height: 1.55;
  margin: 0 0 12px;
}
body.partner-lander .pl-assets__note {
  font-size: 12px;
  color: var(--pl-blue);
  font-weight: 600;
  margin: 0;
}
body.partner-lander .pl-assets__grid {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 24px;
}
body.partner-lander .pl-assets__grid li {
  position: relative;
  padding-left: 18px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--pl-text-dark);
}
body.partner-lander .pl-assets__grid li::before {
  content: '·';
  position: absolute;
  left: 4px;
  top: -2px;
  color: var(--pl-blue);
  font-size: 18px;
  font-weight: 700;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 960px) {
  body.partner-lander .pl-calc__grid { grid-template-columns: 1fr; gap: 40px; }
  body.partner-lander .pl-calc__outputs { position: static; }
  body.partner-lander .pl-tier-grid { grid-template-columns: 1fr 1fr; }
  body.partner-lander .pl-apply__grid { grid-template-columns: 1fr; gap: 24px; }
  body.partner-lander .pl-apply__rule { display: none; }
  body.partner-lander .pl-assets__card { grid-template-columns: 1fr; gap: 32px; padding: 32px; }
}
@media (max-width: 720px) {
  body.partner-lander .pl-section { padding-left: 20px; padding-right: 20px; }
  body.partner-lander .pl-hero__ctas { flex-direction: column; align-items: stretch; }
  body.partner-lander .pl-hero__ctas .pl-btn { width: 100%; }
  body.partner-lander .pl-how__row { grid-template-columns: 1fr; gap: 8px; padding: 24px 0; }
  body.partner-lander .pl-how__num { font-size: 48px; }
  body.partner-lander .pl-tier-grid { grid-template-columns: 1fr; }
  body.partner-lander .pl-tier-notes { grid-template-columns: 1fr; gap: 24px; }
  body.partner-lander .pl-who__grid { grid-template-columns: 1fr; gap: 40px; }
  body.partner-lander .pl-terms__row { grid-template-columns: 1fr; gap: 4px; padding: 16px 0; }
  body.partner-lander .pl-assets__grid { grid-template-columns: 1fr; }
  body.partner-lander .pl-faq__ainner { padding-right: 0; }
}

/* ── END PATCH 59 ────────────────────────────────────────────────────── */

/* PATCH 59-FIX — heading color overrides + select styling
   GP theme overrides heading color with higher specificity; !important needed here only */
body.partner-lander .pl-hero__headline,
body.partner-lander .pl-hero h1 {
  color: #ffffff !important;
}
body.partner-lander .pl-section.pl-who .pl-section__title,
body.partner-lander .pl-section.pl-faq .pl-section__title,
body.partner-lander .pl-section.pl-apply .pl-section__title,
body.partner-lander .pl-section.pl-calc .pl-calc__title {
  color: #E8EAF0 !important;
}
body.partner-lander .pl-apply__title,
body.partner-lander .pl-faq h2 {
  color: #E8EAF0 !important;
}
/* Select dropdowns on dark sections */
body.partner-lander .pl-select {
  background-color: rgba(255,255,255,0.07) !important;
  color: #E8EAF0 !important;
  border: 1px solid rgba(255,255,255,0.18) !important;
}
body.partner-lander .pl-select option {
  background-color: #181A2C;
  color: #E8EAF0;
}
body.partner-lander .pl-num {
  background-color: rgba(255,255,255,0.07) !important;
  color: #E8EAF0 !important;
  border: 1px solid rgba(255,255,255,0.18) !important;
}
body.partner-lander .pl-num:focus,
body.partner-lander .pl-select:focus {
  border-color: #4B5BD4 !important;
  outline: none;
}

/* PATCH 59-CALC — simplified calculator card layout */
body.partner-lander .pl-calc__card {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 16px;
  padding: 40px 48px;
  margin: 0 0 20px;
}
body.partner-lander .pl-calc__sliders {
  display: flex;
  flex-direction: column;
  gap: 32px;
  margin-bottom: 40px;
}
body.partner-lander .pl-calc__output {
  border-top: 1px solid rgba(255,255,255,0.1);
  padding-top: 32px;
  text-align: center;
}
body.partner-lander .pl-calc__out-label {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(232,234,240,0.55);
  margin: 0 0 12px;
}
body.partner-lander .pl-calc__out-value {
  font-family: Barlow Condensed, system-ui, sans-serif;
  font-weight: 800;
  font-size: clamp(52px, 8vw, 88px);
  line-height: 1;
  color: #4B5BD4;
  margin: 0 0 12px;
  letter-spacing: -0.02em;
}
body.partner-lander .pl-calc__out-sub {
  font-size: 13px;
  color: rgba(232,234,240,0.45);
  margin: 0;
}
@media (max-width: 600px) {
  body.partner-lander .pl-calc__card { padding: 28px 24px; }
  body.partner-lander .pl-calc__out-value { font-size: 56px; }
}

/* PATCH 59-TIERS — 3-column tier grid + CTA buttons */
body.partner-lander .pl-tier-grid--3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-top: 48px;
}
body.partner-lander .pl-tier__cta {
  display: block;
  margin-top: 24px;
  padding: 12px 20px;
  text-align: center;
  border-radius: 6px;
  font-family: Barlow Condensed, system-ui, sans-serif;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  text-decoration: none;
  background: #4B5BD4;
  color: #fff;
  border: 2px solid #4B5BD4;
  transition: background 0.18s, color 0.18s;
}
body.partner-lander .pl-tier__cta:hover {
  background: #3a49c2;
  border-color: #3a49c2;
  color: #fff;
  text-decoration: none;
}
body.partner-lander .pl-tier__cta--ghost {
  background: transparent;
  color: #4B5BD4;
}
body.partner-lander .pl-tier__cta--ghost:hover {
  background: #4B5BD4;
  color: #fff;
}
@media (max-width: 900px) {
  body.partner-lander .pl-tier-grid--3 {
    grid-template-columns: 1fr;
    max-width: 480px;
    margin-left: auto;
    margin-right: auto;
  }
}

/* PATCH 59-TIER-CARDS — card borders + consistent rate sizing */
body.partner-lander .pl-tier {
  background: #ffffff;
  border: 1px solid #E2E4F0;
  border-radius: 12px;
  padding: 32px 28px;
  display: flex;
  flex-direction: column;
}
body.partner-lander .pl-tier--feature {
  border-color: #4B5BD4;
  box-shadow: 0 4px 24px rgba(75,91,212,0.10);
}
body.partner-lander .pl-tier__rate {
  font-family: Barlow Condensed, system-ui, sans-serif;
  font-weight: 800;
  font-size: 52px;
  line-height: 1;
  color: #4B5BD4;
  margin: 16px 0 4px;
}
body.partner-lander .pl-tier__rate--muted {
  color: #6B7280;
  font-size: 40px;
}
body.partner-lander .pl-tier__perks {
  flex: 1;
  margin: 16px 0 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
body.partner-lander .pl-tier__cta {
  margin-top: 24px;
}

/* PATCH 59-VARS — missing CSS variable definitions (border-light, text-dark, text-dark-muted) */
body.partner-lander {
  --pl-border-light: #E2E4F0;
  --pl-text-dark: #181A2C;
  --pl-text-dark-muted: #6B7280;
}

/* PATCH 59-RATE-SIZE — Affiliate rate larger to match visual weight of longer strings */
body.partner-lander .pl-tier--feature .pl-tier__rate {
  font-size: 56px;
}

/* ════════════════════════════════════════════════════════════════════════
   PATCH 60 — Partner Lander v8.2
   Hero two-column, Why Partner 6-card grid, How It Works 4-step row,
   Terms dark variant, FAQ light variant, Final CTA band.
   All rules scoped to body.partner-lander
   ════════════════════════════════════════════════════════════════════════ */

/* ── PATCH 60: Hero two-column layout ───────────────────────────────── */
body.partner-lander .pl-hero {
  background: #0E1020;
  padding: 80px 24px 100px;
}
body.partner-lander .pl-hero__inner--two-col {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 60px;
  align-items: center;
  max-width: 1200px;
  margin: 0 auto;
}
body.partner-lander .pl-hero__copy {
  display: flex;
  flex-direction: column;
}
body.partner-lander .pl-hero__eyebrow {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--pl-blue);
  margin: 0 0 18px;
}
body.partner-lander .pl-hero__headline {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: clamp(40px, 5.5vw, 64px);
  line-height: 1.05;
  color: #ffffff;
  margin: 0 0 20px;
}
body.partner-lander .pl-hero__sub {
  font-size: clamp(17px, 2vw, 19px);
  color: var(--pl-text-muted);
  max-width: 540px;
  line-height: 1.6;
  margin: 0 0 32px;
}
body.partner-lander .pl-hero__ctas {
  display: flex;
  flex-direction: row;
  gap: 14px;
  flex-wrap: wrap;
}

/* ── PATCH 60: Hero calculator card ────────────────────────────────── */
body.partner-lander .pl-hero__calc {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 16px;
  padding: 32px;
}
body.partner-lander .pl-hero__calc-title {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 22px;
  color: #ffffff;
  margin: 0 0 6px;
}
body.partner-lander .pl-hero__calc-sub {
  font-size: 12px;
  color: var(--pl-text-muted);
  margin: 0 0 24px;
}
body.partner-lander .pl-hero__calc .pl-field {
  margin-bottom: 24px;
}
body.partner-lander .pl-hero__calc .pl-field:last-of-type {
  margin-bottom: 0;
}
body.partner-lander .pl-hero__comm-chip {
  font-size: 12px;
  color: var(--pl-text-muted);
  margin: 20px 0 0;
  padding: 10px 14px;
  background: rgba(75,91,212,0.07);
  border-radius: 6px;
  border: 1px solid rgba(75,91,212,0.15);
}
body.partner-lander .pl-hero__comm-rate {
  color: var(--pl-blue);
  font-weight: 700;
}
body.partner-lander .pl-hero__output {
  padding-top: 20px;
  border-top: 1px solid rgba(255,255,255,0.08);
  margin-top: 20px;
}
body.partner-lander .pl-hero__out-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--pl-text-muted);
  margin: 0 0 6px;
}
body.partner-lander .pl-hero__out-value {
  display: block;
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: clamp(40px, 5vw, 56px);
  line-height: 1;
  color: var(--pl-blue);
  margin-bottom: 6px;
}
body.partner-lander .pl-hero__out-value--ltv {
  display: block;
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 28px;
  line-height: 1;
  color: #ffffff;
  margin-bottom: 6px;
}
body.partner-lander .pl-hero__out-caption {
  font-size: 11px;
  color: var(--pl-text-muted);
  margin: 0;
}

/* ── PATCH 60: Why Partner section ─────────────────────────────────── */
body.partner-lander .pl-why {
  padding-top: 80px;
  padding-bottom: 80px;
}
body.partner-lander .pl-why__title {
  color: var(--pl-text-dark) !important;
  margin-bottom: 16px;
}
body.partner-lander .pl-why__lede {
  max-width: 580px;
  margin: 0 auto 48px;
  color: var(--pl-text-dark-muted);
}
body.partner-lander .pl-why__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
body.partner-lander .pl-why__card {
  background: #ffffff;
  border: 1px solid var(--pl-border-light);
  border-radius: 12px;
  padding: 32px 28px;
  display: flex;
  flex-direction: column;
}
body.partner-lander .pl-why__icon {
  flex-shrink: 0;
}
body.partner-lander .pl-why__card-title {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 20px;
  color: var(--pl-text-dark);
  margin: 16px 0 8px;
}
body.partner-lander .pl-why__card-body {
  font-size: 14px;
  color: var(--pl-text-dark);
  line-height: 1.55;
  margin: 0;
}

/* ── PATCH 60: How It Works section ────────────────────────────────── */
body.partner-lander .pl-how {
  padding-top: 80px;
  padding-bottom: 80px;
}
body.partner-lander .pl-how__title {
  color: #ffffff !important;
  margin-bottom: 48px;
}
body.partner-lander .pl-how__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 32px;
}
body.partner-lander .pl-how__step {
  display: flex;
  flex-direction: column;
}
body.partner-lander .pl-how__num {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 64px;
  line-height: 1;
  color: rgba(75,91,212,0.15);
  margin-bottom: 12px;
}
body.partner-lander .pl-how__step-title {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 18px;
  color: #ffffff;
  margin: 0 0 8px;
}
body.partner-lander .pl-how__step-body {
  font-size: 14px;
  color: var(--pl-text-muted);
  line-height: 1.55;
  margin: 0;
}

/* ── PATCH 60: Wholesale pill on Distributor tier ───────────────────── */
body.partner-lander .pl-tier__wholesale {
  display: inline-block;
  background: rgba(75,91,212,0.08);
  color: var(--pl-blue);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 3px 8px;
  border-radius: 100px;
  margin-left: 8px;
  vertical-align: middle;
  line-height: 1;
}

/* ── PATCH 60: Payouts & Terms — dark variant ───────────────────────── */
body.partner-lander .pl-section--dark.pl-terms {
  background: #181A2C;
  padding-top: 80px;
  padding-bottom: 80px;
}
body.partner-lander .pl-terms__title {
  color: #ffffff !important;
  margin-bottom: 48px;
}
body.partner-lander .pl-terms__grid--dark {
  max-width: 760px;
  margin: 0 auto;
}
body.partner-lander .pl-terms__grid--dark .pl-terms__row {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 24px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
  padding: 16px 0;
  align-items: baseline;
}
body.partner-lander .pl-terms__grid--dark .pl-terms__row:last-child {
  border-bottom: none;
}
body.partner-lander .pl-terms__grid--dark .pl-terms__term {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 700;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--pl-blue);
}
body.partner-lander .pl-terms__grid--dark .pl-terms__val {
  font-size: 14px;
  color: var(--pl-text-light);
  line-height: 1.5;
}

/* ── PATCH 60: FAQ — light variant overrides ────────────────────────── */
body.partner-lander .pl-faq--light {
  background: var(--pl-light);
}
body.partner-lander .pl-faq--light .pl-faq__title {
  color: var(--pl-text-dark) !important;
  margin-bottom: 40px;
}
body.partner-lander .pl-faq--light .pl-faq__q {
  color: var(--pl-text-dark);
  border-bottom-color: var(--pl-border-light);
}
body.partner-lander .pl-faq--light .pl-faq__q:hover {
  color: var(--pl-blue);
}
body.partner-lander .pl-faq--light .pl-faq__item {
  border-bottom-color: var(--pl-border-light);
}
body.partner-lander .pl-faq--light .pl-faq__qtxt {
  color: var(--pl-text-dark);
}
body.partner-lander .pl-faq--light .pl-faq__chev {
  color: var(--pl-text-dark-muted);
}
body.partner-lander .pl-faq--light .pl-faq__ainner p {
  color: var(--pl-text-dark-muted);
}

/* ── PATCH 60: Final CTA band ───────────────────────────────────────── */
body.partner-lander .pl-cta-band {
  background: #0E1020;
  padding: 80px 24px;
  text-align: center;
}
body.partner-lander .pl-cta-band__inner {
  max-width: 640px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
}
body.partner-lander .pl-cta-band__headline {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: clamp(32px, 4.5vw, 48px);
  line-height: 1.05;
  color: #ffffff;
  margin: 0 0 16px;
}
body.partner-lander .pl-cta-band__sub {
  font-size: 16px;
  color: var(--pl-text-muted);
  margin: 0 0 32px;
}

/* ── PATCH 60: Responsive — tablet (≤1024px) ────────────────────────── */
@media (max-width: 1024px) {
  body.partner-lander .pl-hero {
    padding: 60px 20px 80px;
  }
  body.partner-lander .pl-hero__inner--two-col {
    grid-template-columns: 1fr;
    gap: 48px;
  }
  body.partner-lander .pl-why__grid {
    grid-template-columns: repeat(2, 1fr);
  }
  body.partner-lander .pl-how__grid {
    grid-template-columns: repeat(2, 1fr);
  }
  body.partner-lander .pl-terms__grid--dark .pl-terms__row {
    grid-template-columns: 160px 1fr;
    gap: 16px;
  }
}

/* ── PATCH 60: Responsive — mobile (≤768px) ─────────────────────────── */
@media (max-width: 768px) {
  body.partner-lander .pl-hero__ctas {
    flex-direction: column;
    align-items: stretch;
  }
  body.partner-lander .pl-hero__ctas .pl-btn {
    width: 100%;
    text-align: center;
  }
  body.partner-lander .pl-why__grid {
    grid-template-columns: 1fr;
  }
  body.partner-lander .pl-how__grid {
    grid-template-columns: 1fr;
  }
  body.partner-lander .pl-how__num {
    font-size: 48px;
  }
  body.partner-lander .pl-terms__grid--dark .pl-terms__row {
    grid-template-columns: 1fr;
    gap: 4px;
  }
  body.partner-lander .pl-cta-band {
    padding: 60px 20px;
  }
}

/* ── END PATCH 60 ────────────────────────────────────────────────────── */

/* ════════════════════════════════════════════════════════════════════════
   PATCH 61 — Partner Lander v8.3 visual audit fixes
   FIX 1: How It Works step numbers opacity + title color
   FIX 2: Final CTA band headline color
   FIX 3: Tier rate size hierarchy (Affiliate louder, KOL/Distributor smaller)
   FIX 4: Calculator card contrast (border, shadow, slider)
   FIX 5: Why Partner cards hover (already styled in P60, adding hover polish)
   FIX 6: Terms highlights 3-card row (new HTML added to template)
   FIX 7: Hero proof strip (new HTML added to template)
   FIX 8: Hero headline max-width orphan fix
   FIX 9: Hero inner column alignment
   ════════════════════════════════════════════════════════════════════════ */

/* ── FIX 1 — How It Works: step numbers visible, titles white ─────────── */
body.partner-lander .pl-how__num {
  color: rgba(75, 91, 212, 0.55) !important;
  font-weight: 800;
}
body.partner-lander .pl-how__step-title {
  color: #ffffff !important;
  font-weight: 800;
}

/* ── FIX 2 — Final CTA band: headline white ───────────────────────────── */
body.partner-lander .pl-cta-band h2,
body.partner-lander .pl-cta-band__headline {
  color: #ffffff !important;
}

/* ── FIX 3 — Tier rate size hierarchy ────────────────────────────────── */
body.partner-lander .pl-tier__rate {
  font-size: 36px !important;
  line-height: 1;
}
body.partner-lander .pl-tier--feature .pl-tier__rate {
  font-size: 72px !important;
  line-height: 1;
}

/* ── FIX 4 — Calculator card contrast ────────────────────────────────── */
body.partner-lander .pl-hero__calc {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(75, 91, 212, 0.35) !important;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.35), 0 0 0 1px rgba(75, 91, 212, 0.08) inset !important;
  backdrop-filter: blur(8px);
}
body.partner-lander .pl-hero__calc input[type="range"],
body.partner-lander .pl-range {
  background: rgba(255, 255, 255, 0.12) !important;
  height: 4px;
  border-radius: 100px;
}
body.partner-lander .pl-hero__comm-chip {
  background: rgba(75, 91, 212, 0.18) !important;
  border: 1px solid rgba(75, 91, 212, 0.4) !important;
  color: rgba(232, 234, 240, 0.85) !important;
}

/* ── FIX 5 — Why Partner cards hover ─────────────────────────────────── */
body.partner-lander .pl-why__card:hover {
  border-color: rgba(75, 91, 212, 0.35) !important;
  box-shadow: 0 4px 16px rgba(75, 91, 212, 0.08) !important;
}
body.partner-lander .pl-why__card {
  transition: border-color 0.18s, box-shadow 0.18s;
}
body.partner-lander .pl-why__icon svg {
  stroke: var(--pl-blue);
  stroke-width: 1.8;
}

/* ── FIX 6 — Terms highlights 3-card row ─────────────────────────────── */
body.partner-lander .pl-terms__highlights {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin: 0 auto 48px;
  max-width: 760px;
}
body.partner-lander .pl-terms__highlight {
  background: rgba(75, 91, 212, 0.08);
  border: 1px solid rgba(75, 91, 212, 0.25);
  border-radius: 12px;
  padding: 24px 20px;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
body.partner-lander .pl-terms__highlight-label {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--pl-blue);
}
body.partner-lander .pl-terms__highlight-value {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-size: 44px;
  font-weight: 800;
  line-height: 1;
  color: #ffffff;
}
body.partner-lander .pl-terms__highlight-sub {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.55);
}

/* ── FIX 7 — Hero proof strip ─────────────────────────────────────────── */
body.partner-lander .pl-hero__proof {
  list-style: none;
  padding: 0;
  margin: 40px 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: 32px;
}
body.partner-lander .pl-hero__proof li {
  font-size: 13px;
  color: rgba(232, 234, 240, 0.65);
  display: flex;
  align-items: baseline;
  gap: 8px;
}
body.partner-lander .pl-hero__proof-num {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-size: 22px;
  font-weight: 800;
  color: var(--pl-blue);
}

/* ── FIX 8 — Hero headline orphan wrap ───────────────────────────────── */
body.partner-lander .pl-hero__headline {
  max-width: 520px;
}

/* ── FIX 9 — Hero inner column alignment ─────────────────────────────── */
body.partner-lander .pl-hero__inner {
  align-items: flex-start !important;
}
body.partner-lander .pl-hero__copy {
  padding-top: 40px;
}

/* ── PATCH 61 responsive ─────────────────────────────────────────────── */
@media (max-width: 720px) {
  body.partner-lander .pl-terms__highlights {
    grid-template-columns: 1fr;
    max-width: 320px;
  }
}
@media (max-width: 640px) {
  body.partner-lander .pl-hero__proof {
    gap: 20px;
  }
}

/* ── END PATCH 61 ────────────────────────────────────────────────────── */

/* PATCH 62 — bump why-partner card contrast (PATCH 61 was technically applied but too subtle) */
body.partner-lander .pl-why__card {
  background: #ffffff !important;
  border: 1px solid #D8DBEB !important;
  box-shadow: 0 1px 2px rgba(20, 24, 48, 0.04), 0 6px 16px rgba(20, 24, 48, 0.05) !important;
}
body.partner-lander .pl-why__card:hover {
  border-color: rgba(75, 91, 212, 0.4) !important;
  box-shadow: 0 4px 12px rgba(75, 91, 212, 0.08), 0 12px 24px rgba(75, 91, 212, 0.06) !important;
  transform: translateY(-1px);
}
body.partner-lander .pl-why__icon {
  width: 44px;
  height: 44px;
  background: rgba(75, 91, 212, 0.08);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 4px;
}
body.partner-lander .pl-why__icon svg {
  width: 24px !important;
  height: 24px !important;
}

/* ══════════════════════════════════════════════════════════════════════════
   PATCH 63 — Partner Lander v9.2 design pass
   Moves: A (tier shells), B (how-it-works connector), C (terms rewrite),
          E (CTA checklist), Polish (section padding reduction)
   Scoped: body.partner-lander
   ══════════════════════════════════════════════════════════════════════════ */

/* ── Move A: tier card shells (force visible card treatment on all 3) ───── */
body.partner-lander .pl-tier {
  background: #ffffff !important;
  border: 1px solid #D8DBEB !important;
  border-radius: 12px !important;
  box-shadow: 0 1px 2px rgba(20, 24, 48, 0.04), 0 6px 16px rgba(20, 24, 48, 0.05) !important;
  display: flex !important;
  flex-direction: column !important;
  height: 100% !important;
}
body.partner-lander .pl-tier--feature {
  border-color: var(--pl-blue) !important;
  box-shadow: 0 4px 24px rgba(75, 91, 212, 0.12) !important;
}
body.partner-lander .pl-tier-grid--3 {
  align-items: stretch !important;
}
body.partner-lander .pl-tier__rate { min-height: 80px; }
body.partner-lander .pl-tier__perks {
  flex-grow: 1 !important;
  margin: 16px 0 0 !important;
}
body.partner-lander .pl-tier__cta {
  margin-top: auto !important;
}

/* ── Move B: How It Works connector (desktop ≥1024px only) ─────────────── */
/* NOTE: Template uses .pl-how__grid (not .pl-how__list) and .pl-how__step */
@media (min-width: 1024px) {
  body.partner-lander .pl-how__grid {
    position: relative;
  }
  body.partner-lander .pl-how__step {
    position: relative;
  }
  /* Connector line drawn from each step's right edge to the next */
  body.partner-lander .pl-how__step:not(:last-child)::after {
    content: '';
    position: absolute;
    top: 32px;
    left: calc(100% - 8px);
    width: calc(var(--pl-how-gap, 32px) + 16px);
    height: 1px;
    background: rgba(75, 91, 212, 0.3);
    z-index: 0;
  }
  /* Numbers punch through the line */
  body.partner-lander .pl-how__num {
    position: relative;
    z-index: 1;
    background: var(--pl-navy);
    padding-right: 16px;
    display: inline-block;
  }
}

/* ── Move C: terms restructure ──────────────────────────────────────────── */
body.partner-lander .pl-terms .pl-wrap {
  max-width: 880px;
}
body.partner-lander .pl-terms__cat {
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 16px;
  padding: 32px 36px;
  margin-bottom: 24px;
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 40px;
  align-items: start;
}
body.partner-lander .pl-terms__cat-head {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
body.partner-lander .pl-terms__cat-eyebrow {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--pl-blue);
}
body.partner-lander .pl-terms__cat-headline {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-size: 52px;
  font-weight: 800;
  line-height: 1;
  color: #ffffff;
  margin: 4px 0 0;
}
body.partner-lander .pl-terms__cat-sub {
  font-size: 13px;
  color: rgba(232, 234, 240, 0.6);
  margin-top: 4px;
}
body.partner-lander .pl-terms__detail {
  margin: 0;
  display: flex;
  flex-direction: column;
}
body.partner-lander .pl-terms__detail-row {
  display: grid;
  grid-template-columns: 170px 1fr;
  gap: 24px;
  padding: 12px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
body.partner-lander .pl-terms__detail-row:last-child {
  border-bottom: none;
}
body.partner-lander .pl-terms__detail-row dt {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pl-blue);
  margin: 0;
}
body.partner-lander .pl-terms__detail-row dd {
  font-size: 14px;
  color: var(--pl-text-light);
  line-height: 1.5;
  margin: 0;
}
body.partner-lander .pl-terms__foot {
  margin-top: 32px;
  padding-top: 24px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}
body.partner-lander .pl-terms__foot p {
  font-size: 13px;
  color: rgba(232, 234, 240, 0.6);
  margin: 0;
  line-height: 1.55;
}
body.partner-lander .pl-terms__foot strong {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pl-blue);
  margin-right: 8px;
}

/* Mobile/tablet: stack category header above detail list */
@media (max-width: 900px) {
  body.partner-lander .pl-terms__cat {
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 28px 24px;
  }
  body.partner-lander .pl-terms__cat-headline {
    font-size: 42px;
  }
  body.partner-lander .pl-terms__detail-row {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}

/* ── Move E: final CTA checklist ────────────────────────────────────────── */
body.partner-lander .pl-cta-band__list {
  list-style: none;
  padding: 0;
  margin: 24px auto 32px;
  max-width: 420px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  text-align: left;
}
body.partner-lander .pl-cta-band__list li {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 14px;
  color: var(--pl-text-light);
}
body.partner-lander .pl-cta-band__check {
  flex-shrink: 0;
}

/* ── Polish: tightened section padding on content sections ──────────────── */
body.partner-lander .pl-section.pl-why,
body.partner-lander .pl-section.pl-how,
body.partner-lander .pl-section.pl-tiers,
body.partner-lander .pl-section.pl-terms,
body.partner-lander .pl-section.pl-faq {
  padding-top: 64px !important;
  padding-bottom: 64px !important;
}
@media (max-width: 768px) {
  body.partner-lander .pl-section.pl-why,
  body.partner-lander .pl-section.pl-how,
  body.partner-lander .pl-section.pl-tiers,
  body.partner-lander .pl-section.pl-terms,
  body.partner-lander .pl-section.pl-faq {
    padding-top: 48px !important;
    padding-bottom: 48px !important;
  }
}

/* ── END PATCH 63 ────────────────────────────────────────────────────────── */

/* ============================================================
   PATCH 64 — design pass refinement
   - hero atmosphere (radial glow + dot grid)
   - how-it-works number opacity + connector centering
   - why-partner card title hierarchy
   - tier card typography uniformity + padding
   ============================================================ */

/* ── Hero atmosphere: radial blue glow + subtle dot grid bg ─────── */
body.partner-lander .pl-hero {
  position: relative;
  overflow: hidden;
}
body.partner-lander .pl-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 78% 42%, rgba(75, 91, 212, 0.18) 0%, rgba(75, 91, 212, 0) 45%),
    radial-gradient(circle at 18% 78%, rgba(214, 52, 111, 0.06) 0%, rgba(214, 52, 111, 0) 40%);
  pointer-events: none;
  z-index: 0;
}
body.partner-lander .pl-hero::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
  background-size: 32px 32px;
  background-position: 0 0;
  opacity: 0.6;
  pointer-events: none;
  z-index: 0;
  mask-image: linear-gradient(180deg, rgba(0,0,0,0.5) 0%, rgba(0,0,0,1) 30%, rgba(0,0,0,1) 70%, rgba(0,0,0,0.3) 100%);
  -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,0.5) 0%, rgba(0,0,0,1) 30%, rgba(0,0,0,1) 70%, rgba(0,0,0,0.3) 100%);
}
body.partner-lander .pl-hero > * {
  position: relative;
  z-index: 1;
}

/* Stronger calc card border + soft inner highlight */
body.partner-lander .pl-hero__calc {
  background: rgba(20, 24, 48, 0.55) !important;
  border: 1px solid rgba(75, 91, 212, 0.32) !important;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.02) inset,
    0 16px 48px rgba(0, 0, 0, 0.5),
    0 0 80px rgba(75, 91, 212, 0.08) !important;
  backdrop-filter: blur(10px);
}

/* ── How It Works — bump number opacity, fix connector center ──── */
body.partner-lander .pl-how__num {
  color: rgba(75, 91, 212, 0.42) !important;
  opacity: 1 !important;
}
@media (min-width: 1024px) {
  body.partner-lander .pl-how__step:not(:last-child)::after,
  body.partner-lander .pl-how__row:not(:last-child)::after {
    top: 56px !important;
  }
}

/* ── Why Partner — title hierarchy + breathing room ────────────── */
body.partner-lander .pl-why__card {
  padding: 36px 32px !important;
}
body.partner-lander .pl-why__card-title {
  font-family: 'Barlow Condensed', system-ui, sans-serif !important;
  font-size: 22px !important;
  font-weight: 800 !important;
  line-height: 1.15 !important;
  margin: 16px 0 12px !important;
  color: var(--pl-text-dark) !important;
}
body.partner-lander .pl-why__card-body {
  font-size: 14px !important;
  line-height: 1.6 !important;
  color: var(--pl-text-dark-muted) !important;
}
body.partner-lander .pl-why__icon {
  width: 48px !important;
  height: 48px !important;
}

/* ── Tier cards — typography uniformity + padding ──────────────── */
body.partner-lander .pl-tier {
  padding: 36px 32px !important;
}
body.partner-lander .pl-tier__name {
  font-family: 'Barlow Condensed', system-ui, sans-serif !important;
  font-size: 28px !important;
  font-weight: 800 !important;
  letter-spacing: -0.005em !important;
  margin: 0 !important;
}
body.partner-lander .pl-tier__qual {
  font-size: 13px !important;
  color: var(--pl-text-dark-muted) !important;
  margin: 6px 0 24px !important;
  line-height: 1.45 !important;
}
body.partner-lander .pl-tier__rate {
  font-size: 40px !important;
  line-height: 1 !important;
  margin: 0 0 6px !important;
}
body.partner-lander .pl-tier--feature .pl-tier__rate {
  font-size: 60px !important;
}
body.partner-lander .pl-tier__ratelbl {
  font-size: 11px !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: var(--pl-text-dark-muted) !important;
  margin: 0 0 20px !important;
  line-height: 1.4 !important;
}
body.partner-lander .pl-tier__pill {
  margin: 0 0 24px !important;
}
body.partner-lander .pl-tier__perks {
  margin: 0 0 0 !important;
}
body.partner-lander .pl-tier__perks li {
  font-size: 14px !important;
  line-height: 1.5 !important;
  padding: 6px 0 !important;
}
body.partner-lander .pl-tier__cta {
  margin-top: 28px !important;
  padding: 14px 24px !important;
  font-size: 13px !important;
  letter-spacing: 0.08em !important;
}

/* ── Wholesale pill — keep contained, prevent header wrap on mid widths ── */
body.partner-lander .pl-tier__wholesale {
  font-size: 10px !important;
  padding: 3px 8px !important;
  margin-left: 8px !important;
  vertical-align: middle;
}

/* PATCH 65 — restore left padding for tier perks checkmarks (PATCH 64 regression) */
body.partner-lander .pl-tier__perks li {
  padding: 6px 0 6px 22px !important;
}
body.partner-lander .pl-tier__perks li::before {
  top: 13px !important;
  width: 9px !important;
  height: 5px !important;
  left: 2px !important;
}

/* ============================================================
   PATCH 66 — final cleanups
   - tier rates uniform across all 3 cards
   - FAQ title dark on light bg (override stale PATCH 59-FIX)
   - drop how-it-works connector line + rectangle bg on numbers
   ============================================================ */

/* 1. Tier rate uniformity — all rates same size, drop featured override */
body.partner-lander .pl-tier__rate,
body.partner-lander .pl-tier--feature .pl-tier__rate {
  font-size: 52px !important;
}

/* 2. FAQ title — override stale dark-bg color rule from PATCH 59-FIX */
body.partner-lander .pl-section.pl-faq .pl-section__title {
  color: #181A2C !important;
}

/* 3. How It Works — drop connector line entirely, remove rectangular bg on numbers */
body.partner-lander .pl-how__num {
  background: transparent !important;
  padding-right: 0 !important;
}
@media (min-width: 1024px) {
  body.partner-lander .pl-how__step:not(:last-child)::after,
  body.partner-lander .pl-how__row:not(:last-child)::after {
    display: none !important;
  }
}

/* PATCH 67 — terms section title white on dark (was rendering dark-on-dark, invisible) */
body.partner-lander .pl-section.pl-terms .pl-section__title {
  color: #ffffff !important;
}

/* PATCH 68 — how-it-works section title size match other sections */
body.partner-lander .pl-section.pl-how .pl-how__title,
body.partner-lander .pl-section.pl-how .pl-section__title {
  font-size: clamp(32px, 4vw, 44px) !important;
  line-height: 1.05 !important;
  margin-bottom: 56px !important;
  color: #ffffff !important;
}

/* ============================================================
   PATCH 69 — hero CRO pass
   - calc card height tightened (~100px reduction)
   - subhead split into claim + proof line
   - "Login to Dashboard" demoted to text link
   - proof row weight bumped to value-prop level
   - calc subtitle promotes 20% as core feature
   - slider rail/thumb contrast
   ============================================================ */

/* Calc card — tighter internal spacing, shave ~100px height */
body.partner-lander .pl-hero__calc {
  padding: 28px 28px !important;
}
body.partner-lander .pl-hero__calc-title {
  margin: 0 0 4px !important;
  font-size: 20px !important;
}
body.partner-lander .pl-hero__calc-sub {
  margin: 0 0 20px !important;
  font-size: 13px !important;
  color: rgba(232, 234, 240, 0.65) !important;
}
body.partner-lander .pl-hero__calc-sub strong {
  color: var(--pl-blue) !important;
  font-weight: 800 !important;
  font-family: 'Barlow Condensed', system-ui, sans-serif !important;
  font-size: 15px !important;
  letter-spacing: 0.02em !important;
}
body.partner-lander .pl-hero__calc .pl-field {
  margin-bottom: 18px !important;
}
body.partner-lander .pl-hero__output {
  padding: 16px 0 !important;
}
body.partner-lander .pl-hero__output--primary {
  padding-top: 20px !important;
  padding-bottom: 14px !important;
}
body.partner-lander .pl-hero__output--secondary {
  padding-top: 14px !important;
}
body.partner-lander .pl-hero__out-label {
  font-size: 10px !important;
  letter-spacing: 0.12em !important;
  margin: 0 0 4px !important;
}
body.partner-lander .pl-hero__out-value {
  font-size: 44px !important;
  line-height: 1 !important;
}
body.partner-lander .pl-hero__out-value--ltv {
  font-size: 28px !important;
  line-height: 1 !important;
}
body.partner-lander .pl-hero__out-caption {
  font-size: 11px !important;
  margin: 6px 0 0 !important;
}

/* Sliders — visible rail + thumb prominence */
body.partner-lander .pl-hero__calc input[type="range"],
body.partner-lander .pl-hero__calc .pl-range {
  -webkit-appearance: none;
  appearance: none;
  background: rgba(255, 255, 255, 0.14) !important;
  height: 5px !important;
  border-radius: 100px;
  outline: none;
}
body.partner-lander .pl-hero__calc input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #4B5BD4;
  border: 3px solid #ffffff;
  box-shadow: 0 0 0 1px rgba(75, 91, 212, 0.4), 0 2px 8px rgba(0, 0, 0, 0.4);
  cursor: pointer;
}
body.partner-lander .pl-hero__calc input[type="range"]::-moz-range-thumb {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #4B5BD4;
  border: 3px solid #ffffff;
  box-shadow: 0 0 0 1px rgba(75, 91, 212, 0.4), 0 2px 8px rgba(0, 0, 0, 0.4);
  cursor: pointer;
}
body.partner-lander .pl-field__label,
body.partner-lander .pl-field__value {
  color: #E8EAF0 !important;
}

/* Subhead split — claim line gets contrast, proof line stays muted */
body.partner-lander .pl-hero__sub {
  color: #E8EAF0 !important;
  font-size: clamp(16px, 1.5vw, 18px) !important;
  line-height: 1.5 !important;
  margin: 0 0 12px !important;
  max-width: 540px;
}
body.partner-lander .pl-hero__sub--proof {
  color: rgba(232, 234, 240, 0.55) !important;
  font-size: 13px !important;
  letter-spacing: 0.01em !important;
  margin: 0 0 32px !important;
}

/* "Already a partner? Log in →" — text link, not button */
body.partner-lander .pl-hero__login {
  display: inline-flex;
  align-items: center;
  font-size: 13px;
  color: rgba(232, 234, 240, 0.55);
  text-decoration: none;
  margin-left: 4px;
  padding: 14px 8px;
  transition: color 0.18s;
  font-family: system-ui, -apple-system, sans-serif;
}
body.partner-lander .pl-hero__login:hover {
  color: #ffffff;
  text-decoration: none;
}

/* Proof row — promote from metadata to value-prop strip */
body.partner-lander .pl-hero__proof {
  margin: 36px 0 0 !important;
  gap: 36px !important;
  padding-top: 28px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}
body.partner-lander .pl-hero__proof li {
  font-size: 13px !important;
  color: rgba(232, 234, 240, 0.75) !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 4px !important;
  line-height: 1.3 !important;
}
body.partner-lander .pl-hero__proof-num {
  font-size: 28px !important;
  color: #ffffff !important;
  font-weight: 800 !important;
  line-height: 1 !important;
}

/* Mobile adjustments */
@media (max-width: 768px) {
  body.partner-lander .pl-hero__proof {
    flex-direction: row !important;
    gap: 24px !important;
    flex-wrap: wrap !important;
  }
  body.partner-lander .pl-hero__proof-num {
    font-size: 22px !important;
  }
  body.partner-lander .pl-hero__login {
    display: block;
    margin: 8px 0 0;
  }
}

/* ============================================================
   PATCH 70 — hero polish (post v9.4)
   - bump proof line contrast (was disabled-looking)
   - tighten CTA-to-proof spacing
   - give login link enough contrast to feel intentional
   - calc subtitle now single-purpose (rate cue only) — give 20% badge weight
   - scale-tick legibility bump
   ============================================================ */

/* 1. Muted proof line — raise from 0.55 to 0.78 */
body.partner-lander .pl-hero__sub--proof {
  color: rgba(232, 234, 240, 0.78) !important;
  margin-bottom: 28px !important;
}

/* 2. Tighten CTA-to-proof gap (was 36px + 28px = 64px total) */
body.partner-lander .pl-hero__proof {
  margin-top: 24px !important;
  padding-top: 24px !important;
}

/* 3. Login link — bump from 0.55 to 0.75 + subtle weight */
body.partner-lander .pl-hero__login {
  color: rgba(232, 234, 240, 0.78) !important;
  font-weight: 500;
}
body.partner-lander .pl-hero__login:hover {
  color: #ffffff !important;
}

/* 4. Calc subtitle now single-purpose; promote 20% to badge weight */
body.partner-lander .pl-hero__calc-sub {
  color: rgba(232, 234, 240, 0.75) !important;
  font-size: 13px !important;
  letter-spacing: 0.01em !important;
}
body.partner-lander .pl-hero__calc-sub strong {
  display: inline-block;
  background: rgba(75, 91, 212, 0.18);
  color: #ffffff !important;
  border: 1px solid rgba(75, 91, 212, 0.5);
  border-radius: 4px;
  padding: 1px 7px;
  margin: 0 2px;
  font-family: 'Barlow Condensed', system-ui, sans-serif !important;
  font-size: 13px !important;
  font-weight: 800 !important;
  letter-spacing: 0.02em !important;
  line-height: 1.3 !important;
}

/* 6. Scale-tick legibility */
body.partner-lander .pl-hero__calc .pl-field__scale {
  color: rgba(232, 234, 240, 0.6) !important;
  font-size: 11px !important;
  margin-top: 6px;
}
body.partner-lander .pl-hero__calc .pl-field__scale span {
  color: rgba(232, 234, 240, 0.6) !important;
}

/* ============================================================
   PATCH 71 — auditor follow-ups
   - cookie banner less obtrusive (site-wide UX)
   - how-it-works chevron flow indicators between steps
   - mobile terms density: alternating rows + tighter spacing
   ============================================================ */

/* ── 1. Cookie banner — compact, corner-positioned, not full-width ────── */
.cmplz-cookiebanner.cmplz-categories,
.cmplz-cookiebanner.cmplz-bottom,
.cmplz-cookiebanner {
  max-width: 440px !important;
  width: calc(100% - 32px) !important;
  left: auto !important;
  right: 16px !important;
  bottom: 16px !important;
  border-radius: 12px !important;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.3) !important;
}
@media (max-width: 640px) {
  .cmplz-cookiebanner.cmplz-categories,
  .cmplz-cookiebanner.cmplz-bottom,
  .cmplz-cookiebanner {
    max-width: none !important;
    width: calc(100% - 16px) !important;
    right: 8px !important;
    bottom: 8px !important;
    border-radius: 10px !important;
  }
  .cmplz-cookiebanner .cmplz-message,
  .cmplz-cookiebanner .cmplz-body {
    font-size: 13px !important;
  }
}

/* ── 2. How It Works — chevron flow between numbers (desktop only) ────── */
@media (min-width: 1024px) {
  body.partner-lander .pl-how__step {
    position: relative;
  }
  body.partner-lander .pl-how__step:not(:last-child)::before {
    content: '›';
    position: absolute;
    top: 18px;
    right: -28px;
    font-family: 'Barlow Condensed', system-ui, sans-serif;
    font-size: 56px;
    font-weight: 800;
    color: rgba(75, 91, 212, 0.35);
    line-height: 1;
    pointer-events: none;
  }
}

/* ── 3. Mobile terms density: alternating rows + tighter spacing ─────── */
@media (max-width: 900px) {
  body.partner-lander .pl-terms__cat {
    padding: 24px 20px !important;
    margin-bottom: 16px !important;
  }
  body.partner-lander .pl-terms__detail {
    margin: 0 -20px !important;
  }
  body.partner-lander .pl-terms__detail-row {
    padding: 14px 20px !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
  }
  body.partner-lander .pl-terms__detail-row:nth-child(even) {
    background: rgba(255, 255, 255, 0.025) !important;
  }
  body.partner-lander .pl-terms__detail-row dt {
    font-size: 11px !important;
    margin-bottom: 6px !important;
    color: var(--pl-blue) !important;
  }
  body.partner-lander .pl-terms__detail-row dd {
    font-size: 14px !important;
    line-height: 1.55 !important;
  }
}

/* PATCH 72 — fix cookie banner mobile positioning (PATCH 71 mobile was off-screen) */
.cmplz-cookiebanner {
  position: fixed !important;
  top: auto !important;
  left: auto !important;
  right: 16px !important;
  bottom: 16px !important;
  max-width: 400px !important;
  width: 400px !important;
  margin: 0 !important;
  transform: none !important;
  border-radius: 12px !important;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.3) !important;
}
@media (max-width: 640px) {
  .cmplz-cookiebanner {
    left: 8px !important;
    right: 8px !important;
    bottom: 8px !important;
    max-width: none !important;
    width: auto !important;
  }
}

/* PATCH 73 — replace broken '›' glyph with CSS-drawn chevron (Barlow Condensed renders ‹›  as commas) */
@media (min-width: 1024px) {
  body.partner-lander .pl-how__step:not(:last-child)::before {
    content: '' !important;
    position: absolute;
    top: 28px;
    right: -22px;
    width: 14px;
    height: 14px;
    border-top: 3px solid rgba(75, 91, 212, 0.45);
    border-right: 3px solid rgba(75, 91, 212, 0.45);
    transform: rotate(45deg);
    font-family: inherit;
    font-size: 0;
    color: transparent;
  }
}

/* ============================================================
   PATCH 74 — Sitewide mobile overflow fix (2026-06-06)
   Root cause: body scrollWidth ~740px on 390px viewport.
   - .ns-footer-trust-band__inner uses repeat(4, auto) with no
     mobile breakpoint, so 4 items in one row overflow past the left
     edge of the viewport on every page.
   - .ns-hero__stats (PATCH 51) and .ns-cat-pills (PATCH 50) use
     margin: 0 -16px to break out of containers, which bleeds into
     body width when ancestor doesn't clip.
   This was causing the auditor's 'left-constrained / right gutter'
   mobile rendering across home, shop, PDP, calculator.
   ============================================================ */

/* 1. Global horizontal overflow guard (sledgehammer) */
html, body { overflow-x: hidden; }

/* 2. Footer trust band: collapse to 2x2 on tablet/mobile, 1-col below 480 */
@media (max-width: 700px) {
  .ns-footer-trust-band__inner {
    grid-template-columns: 1fr 1fr !important;
    gap: 18px 16px !important;
    padding: 0 16px !important;
    justify-content: center;
  }
  .ns-footer-trust-item {
    white-space: normal !important;
    justify-content: center;
    text-align: center;
  }
  .ns-footer-trust-sep { margin: 20px 16px !important; }
}
@media (max-width: 480px) {
  .ns-footer-trust-band__inner {
    grid-template-columns: 1fr !important;
    gap: 14px !important;
    justify-items: center;
  }
}

/* 3. Contain the horizontal-scroll modules so they do not expand body */
@media (max-width: 700px) {
  .ns-shop-cats-section { overflow-x: clip; max-width: 100%; }
}
@media (max-width: 600px) {
  .ns-hero, .ns-hero__inner { overflow-x: clip; max-width: 100%; }
}

/* ============================================================
   PATCH 75 — Cookie banner mobile compression (2026-06-06)
   Banner was taking ~40% of mobile viewport. Compressing so it
   reads as a footer-anchored consent strip, not a takeover.
   ============================================================ */
@media (max-width: 640px) {
  .cmplz-cookiebanner { padding: 14px 14px 12px !important; }
  .cmplz-cookiebanner .cmplz-header { padding: 0 0 6px !important; min-height: 0 !important; }
  .cmplz-cookiebanner .cmplz-title { font-size: 14px !important; line-height: 1.2 !important; }
  .cmplz-cookiebanner .cmplz-divider-header { display: none !important; }
  .cmplz-cookiebanner .cmplz-body { padding: 0 !important; }
  .cmplz-cookiebanner .cmplz-message {
    font-size: 12.5px !important;
    line-height: 1.45 !important;
    margin: 0 0 10px !important;
  }
  .cmplz-cookiebanner .cmplz-categories { display: none !important; }
  .cmplz-cookiebanner .cmplz-links.cmplz-information { display: none !important; }
  .cmplz-cookiebanner .cmplz-divider.cmplz-footer { display: none !important; }
  .cmplz-cookiebanner .cmplz-buttons {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
    padding: 0 !important;
    margin: 0 0 8px !important;
  }
  .cmplz-cookiebanner .cmplz-btn {
    padding: 10px 12px !important;
    font-size: 13px !important;
    min-height: 0 !important;
    height: auto !important;
    line-height: 1.2 !important;
    border-radius: 8px !important;
  }
  /* Accept + Deny side-by-side; View preferences spans + understated */
  .cmplz-cookiebanner .cmplz-btn.cmplz-accept { grid-column: 1; }
  .cmplz-cookiebanner .cmplz-btn.cmplz-deny { grid-column: 2; }
  .cmplz-cookiebanner .cmplz-btn.cmplz-view-preferences {
    grid-column: 1 / -1;
    background: transparent !important;
    border: 1px solid rgba(0,0,0,0.08) !important;
    color: #6B7280 !important;
    font-size: 12px !important;
    padding: 8px 12px !important;
  }
  .cmplz-cookiebanner .cmplz-btn.cmplz-save-preferences,
  .cmplz-cookiebanner .cmplz-buttons .cmplz-btn.cmplz-manage-options { display: none !important; }
  .cmplz-cookiebanner .cmplz-documents { padding: 0 !important; margin: 0 !important; }
  .cmplz-cookiebanner .cmplz-documents ul { margin: 0 !important; padding: 0 !important; }
  .cmplz-cookiebanner .cmplz-documents a {
    font-size: 11px !important;
    color: #6B7280 !important;
    text-decoration: underline !important;
  }
  .cmplz-cookiebanner .cmplz-close { top: 10px !important; right: 10px !important; }
  .cmplz-cookiebanner .cmplz-close svg { width: 14px !important; height: 14px !important; }
}

/* ============================================================
   PATCH 76 — PDP description visual hierarchy (2026-06-06)
   Auditor: too much empty space below buy box, sections feel
   underfilled, mobile loses momentum after main CTA.
   Fix: stronger H3 treatment + checkmark bullets + tighter
   section spacing so the description reads as a feature block
   rather than a wall of muted text.
   ============================================================ */
.ns-product-description {
  display: flex !important;
  flex-direction: column !important;
  gap: 22px !important;
}
.ns-product-description > h3 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 1.5rem !important;
  font-weight: 800 !important;
  color: var(--ns-text) !important;
  margin: 0 !important;
  padding: 6px 0 6px 16px !important;
  border-left: 4px solid var(--ns-primary) !important;
  letter-spacing: -0.01em !important;
  line-height: 1.15 !important;
}
.ns-product-description > h3:first-of-type { margin-top: 0 !important; }
.ns-product-description > h3 + p,
.ns-product-description > h3 + ul {
  margin-top: -14px !important;
}

/* Bullets as checkmarks — reads as 'benefits' rather than neutral list */
.ns-product-description ul {
  margin: 0 !important;
  padding: 0 !important;
}
.ns-product-description ul li {
  padding: 9px 0 9px 28px !important;
  border-bottom: 1px solid var(--ns-border) !important;
  font-size: 0.92rem !important;
  line-height: 1.55 !important;
  color: var(--ns-text) !important;
  position: relative !important;
}
.ns-product-description ul li:last-child { border-bottom: none !important; }
.ns-product-description ul li::before {
  content: '\2713' !important;
  position: absolute !important;
  left: 4px !important;
  top: 9px !important;
  width: auto !important;
  height: auto !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: var(--ns-primary) !important;
  font-weight: 800 !important;
  font-size: 14px !important;
  line-height: 1.55 !important;
}

/* Tighten the empty space below buy box: reduce description tab top padding */
.woocommerce-Tabs-panel--description {
  padding-top: 28px !important;
  margin-top: 0 !important;
}

/* Mobile: keep treatment but reduce padding so it doesn't feel cramped */
@media (max-width: 700px) {
  .ns-product-description { gap: 18px !important; }
  .ns-product-description > h3 {
    font-size: 1.3rem !important;
    padding-left: 12px !important;
    border-left-width: 3px !important;
  }
  .ns-product-description ul li {
    font-size: 0.9rem !important;
    padding: 8px 0 8px 24px !important;
  }
}

/* ============================================================
   PATCH 77 — PDP orphan tabs nav + mid-page polish (2026-06-06)
   With only one tab (Description), the WC tab UL is a small lonely
   link that breaks page rhythm between bundle upsell and content.
   The H2 inside the tab is already hidden; hide the nav too.
   ============================================================ */
.woocommerce-tabs .tabs.wc-tabs {
  display: none !important;
}
.woocommerce-tabs {
  margin-top: 32px !important;
}
.woocommerce-Tabs-panel--description {
  padding-top: 0 !important;
  border-top: 1px solid var(--ns-border) !important;
  padding-top: 32px !important;
}
@media (max-width: 700px) {
  .woocommerce-tabs { margin-top: 24px !important; }
  .woocommerce-Tabs-panel--description { padding-top: 24px !important; }
}

/* PATCH 77b — hide orphan tabs nav (override line 1819 specificity) */
body.single-product .woocommerce div.product .woocommerce-tabs ul.tabs,
body.single-product .woocommerce div.product .woocommerce-tabs ul.wc-tabs {
  display: none !important;
}

/* PATCH 77c — correct selector. body itself has .woocommerce, no descendant. */
body.single-product div.product div.woocommerce-tabs ul.tabs,
body.single-product div.product div.woocommerce-tabs ul.wc-tabs {
  display: none !important;
}

/* ============================================================
   PATCH 78 — Catalog mobile card presence (2026-06-06)
   Auditor: mobile catalog cards too stripped-down, long list of
   pale boxes, not enough product presence.
   Fix:
   - Switch mobile from 1-col (<560px) to 2-col so cards feel like
     real product cards, not table rows
   - Stronger card border/shadow on mobile so they have presence
   - Branded gradient fallback when a product has no image (uses
     :has() — graceful fallback otherwise)
   - Tighter typography/padding so 2-col fits without cramming
   ============================================================ */

/* Mobile: 2-col grid instead of 1-col */
@media (max-width: 560px) {
  .ns-shop-products-section ul.products,
  .ns-shop-products-section ul.products.columns-4 {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 12px !important;
  }
  ul.products li.product {
    border-color: var(--ns-border-dark, #D8DBEB) !important;
    box-shadow: 0 2px 8px rgba(30, 40, 120, 0.06) !important;
  }
  ul.products li.product img {
    height: 150px !important;
  }
  ul.products li.product .woocommerce-loop-product__title {
    font-size: 0.82rem !important;
    padding: 10px 12px 2px !important;
    line-height: 1.3 !important;
  }
  ul.products li.product .price {
    font-size: 0.88rem !important;
    padding: 2px 12px 10px !important;
  }
  ul.products li.product .button {
    margin: 0 12px 12px !important;
    width: calc(100% - 24px) !important;
    padding: 9px 6px !important;
    font-size: 0.78rem !important;
    letter-spacing: 0 !important;
  }
}

/* Branded fallback gradient when a card has no product image
   (some supplies lack uploaded photos — auditor flagged the
   resulting pale empty card) */
ul.products li.product .woocommerce-LoopProduct-link {
  display: block;
}
ul.products li.product:not(:has(img.attachment-woocommerce_thumbnail)) .woocommerce-LoopProduct-link {
  background: linear-gradient(135deg, #181A2C 0%, #2D2F4A 50%, #4B5BD4 100%);
  background-size: 200% 200%;
  min-height: 220px;
  position: relative;
}
ul.products li.product:not(:has(img.attachment-woocommerce_thumbnail)) .woocommerce-LoopProduct-link::after {
  content: 'NORTHSTATE';
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 800;
  font-size: 1.4rem;
  letter-spacing: 0.08em;
  color: rgba(255, 255, 255, 0.18);
}
@media (max-width: 560px) {
  ul.products li.product:not(:has(img.attachment-woocommerce_thumbnail)) .woocommerce-LoopProduct-link {
    min-height: 150px;
  }
  ul.products li.product:not(:has(img.attachment-woocommerce_thumbnail)) .woocommerce-LoopProduct-link::after {
    font-size: 0.95rem;
  }
}

/* ============================================================
   PATCH 79 — Homepage section pacing (2026-06-06)
   Auditor: Why Researchers / How It Works / Commitment all use
   pale-card layouts on light bg — page flattens mid-scroll.
   Fix: make How It Works DARK to break visual rhythm; drop the
   pale tint behind the loyalty banner so the banner reads cleanly
   instead of as a dark block on a pale block; tighten section
   padding on home so scroll moves faster.
   ============================================================ */

/* How It Works: dark section to chunk the mid-page */
.ns-section.ns-section-alt:has(.ns-steps) {
  background: linear-gradient(135deg, #0E1020 0%, #181A2C 55%, #1a1033 100%) !important;
}
.ns-section.ns-section-alt:has(.ns-steps) .ns-section-header__title,
.ns-section.ns-section-alt:has(.ns-steps) h2 {
  color: #ffffff !important;
}
.ns-section.ns-section-alt:has(.ns-steps) .ns-section-header__sub,
.ns-section.ns-section-alt:has(.ns-steps) .ns-section-header__lead,
.ns-section.ns-section-alt:has(.ns-steps) .ns-section-header p {
  color: rgba(255,255,255,0.65) !important;
}
.ns-section.ns-section-alt:has(.ns-steps) .ns-step {
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 12px !important;
  padding: 28px 22px !important;
  box-shadow: none !important;
}
.ns-section.ns-section-alt:has(.ns-steps) .ns-step__title {
  color: #ffffff !important;
}
.ns-section.ns-section-alt:has(.ns-steps) .ns-step__desc {
  color: rgba(255,255,255,0.72) !important;
}
.ns-section.ns-section-alt:has(.ns-steps) .ns-step__num {
  color: var(--ns-primary, #4B5BD4) !important;
  opacity: 1 !important;
}
.ns-section.ns-section-alt:has(.ns-steps) .ns-step::after {
  background: rgba(75, 91, 212, 0.4) !important;
}

/* Loyalty banner section: kill outer tint so inner dark banner pops */
.ns-section.ns-section-alt:has(.ns-loyalty-banner) {
  background: #ffffff !important;
}

/* Tighten section padding on home for pacing */
@media (min-width: 700px) {
  body.home .ns-section { padding: 56px 0 !important; }
  body.home .ns-section-supplies { padding: 40px 0 !important; }
}
@media (max-width: 700px) {
  body.home .ns-section { padding: 40px 0 !important; }
  body.home .ns-section-supplies { padding: 28px 0 !important; }
}

/* ============================================================
   PATCH 80 — Calculator polish (2026-06-06)
   Auditor: instructional side too quiet on desktop relative to
   the tool; mobile calculator is usable but cramped.
   ============================================================ */

/* Desktop: How to use section gets a tinted card treatment so it
   stops reading as secondary text next to the active tool */
@media (min-width: 781px) {
  .ns-calc-info-grid .ns-calc-how {
    background: linear-gradient(135deg, #F8F9FF 0%, #EEF1FB 100%) !important;
    border: 1px solid var(--ns-border, #E2E4F0) !important;
    border-radius: 14px !important;
    padding: 32px 28px !important;
    margin: 0 !important;
  }
  .ns-calc-how__title {
    font-size: 1.3rem !important;
    margin-bottom: 22px !important;
  }
  .ns-calc-how__step-num {
    width: 34px !important;
    height: 34px !important;
    font-size: 0.95rem !important;
  }
  .ns-calc-how__step strong {
    font-size: 0.95rem !important;
    margin-bottom: 6px !important;
  }
  .ns-calc-how__step p {
    font-size: 0.9rem !important;
    line-height: 1.65 !important;
  }
}

/* Mobile: breathing room around form fields + result cards */
@media (max-width: 600px) {
  .ns-calc__card {
    padding: 22px 16px !important;
    border-radius: 12px !important;
  }
  .ns-calc__field { margin-bottom: 22px !important; }
  .ns-calc__label {
    font-size: 0.78rem !important;
    margin-bottom: 10px !important;
  }
  .ns-calc__presets { gap: 6px !important; }
  .ns-calc__preset {
    padding: 8px 10px !important;
    font-size: 0.82rem !important;
  }
  .ns-calc__results {
    gap: 12px !important;
    margin-top: 8px !important;
  }
  /* Section spacing inside calc page */
  .ns-calc-info-grid { margin: 32px auto !important; gap: 28px !important; }
  .ns-calc-how__step { gap: 14px !important; }
  .ns-calc-how__step-num { width: 30px !important; height: 30px !important; }
}

/* ============================================================
   PATCH 81 — Cookie banner desktop reposition + compress (2026-06-06)
   PATCH 72 placed banner at bottom-right corner. But buy boxes
   on PDP / calculators / hero CTAs typically live on the right
   side, so the banner collides with them. Move to bottom-LEFT
   and compress like mobile.
   ============================================================ */
@media (min-width: 641px) {
  .cmplz-cookiebanner {
    position: fixed !important;
    top: auto !important;
    right: auto !important;
    left: 16px !important;
    bottom: 16px !important;
    max-width: 400px !important;
    width: 400px !important;
    transform: none !important;
    border-radius: 12px !important;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.18) !important;
    padding: 16px 18px 14px !important;
  }
  .cmplz-cookiebanner .cmplz-header { padding: 0 0 8px !important; min-height: 0 !important; }
  .cmplz-cookiebanner .cmplz-title { font-size: 15px !important; line-height: 1.2 !important; }
  .cmplz-cookiebanner .cmplz-divider-header { display: none !important; }
  .cmplz-cookiebanner .cmplz-body { padding: 0 !important; }
  .cmplz-cookiebanner .cmplz-message {
    font-size: 13px !important;
    line-height: 1.5 !important;
    margin: 0 0 12px !important;
  }
  .cmplz-cookiebanner .cmplz-categories,
  .cmplz-cookiebanner .cmplz-links.cmplz-information,
  .cmplz-cookiebanner .cmplz-divider.cmplz-footer { display: none !important; }
  .cmplz-cookiebanner .cmplz-buttons {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
    padding: 0 !important;
    margin: 0 0 8px !important;
  }
  .cmplz-cookiebanner .cmplz-btn {
    padding: 10px 12px !important;
    font-size: 13px !important;
    min-height: 0 !important;
    height: auto !important;
    line-height: 1.2 !important;
    border-radius: 8px !important;
  }
  .cmplz-cookiebanner .cmplz-btn.cmplz-accept { grid-column: 1; }
  .cmplz-cookiebanner .cmplz-btn.cmplz-deny { grid-column: 2; }
  .cmplz-cookiebanner .cmplz-btn.cmplz-view-preferences {
    grid-column: 1 / -1;
    background: transparent !important;
    border: 1px solid rgba(0,0,0,0.08) !important;
    color: #6B7280 !important;
    font-size: 12px !important;
    padding: 8px 12px !important;
  }
  .cmplz-cookiebanner .cmplz-btn.cmplz-save-preferences,
  .cmplz-cookiebanner .cmplz-buttons .cmplz-btn.cmplz-manage-options { display: none !important; }
  .cmplz-cookiebanner .cmplz-documents { padding: 0 !important; margin: 0 !important; }
  .cmplz-cookiebanner .cmplz-documents ul { margin: 0 !important; padding: 0 !important; }
  .cmplz-cookiebanner .cmplz-documents a {
    font-size: 11px !important;
    color: #6B7280 !important;
    text-decoration: underline !important;
  }
  .cmplz-cookiebanner .cmplz-close { top: 12px !important; right: 12px !important; }
  .cmplz-cookiebanner .cmplz-close svg { width: 14px !important; height: 14px !important; }
}

/* PATCH 81b — match Complianz selector specificity (.cmplz-bottom chained) */
.cmplz-cookiebanner.cmplz-bottom,
.cmplz-cookiebanner.cmplz-bottom.cmplz-categories-type-view-preferences {
  position: fixed !important;
  top: auto !important;
  right: auto !important;
  bottom: 16px !important;
  transform: none !important;
}
@media (min-width: 641px) {
  .cmplz-cookiebanner.cmplz-bottom,
  .cmplz-cookiebanner.cmplz-bottom.cmplz-categories-type-view-preferences {
    left: 16px !important;
    right: auto !important;
    max-width: 400px !important;
    width: 400px !important;
  }
}
@media (max-width: 640px) {
  .cmplz-cookiebanner.cmplz-bottom,
  .cmplz-cookiebanner.cmplz-bottom.cmplz-categories-type-view-preferences {
    left: 8px !important;
    right: 8px !important;
    bottom: 8px !important;
    max-width: none !important;
    width: auto !important;
  }
}

/* ============================================================
   PATCH 82 — Cookie banner desktop: full-width bottom strip
   (2026-06-06). Neither bottom-left (homepage CTA) nor bottom-
   right (PDP buy box) is safe as a corner card. Use a thin
   horizontal strip across the bottom — minimal vertical footprint.
   ============================================================ */
@media (min-width: 641px) {
  .cmplz-cookiebanner.cmplz-bottom,
  .cmplz-cookiebanner.cmplz-bottom.cmplz-categories-type-view-preferences {
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    border-radius: 0 !important;
    box-shadow: 0 -4px 16px rgba(0,0,0,0.12) !important;
    padding: 12px 24px 12px !important;
    display: grid !important;
    grid-template-columns: 1fr auto !important;
    grid-template-rows: auto auto !important;
    grid-template-areas: 'header header' 'body buttons' !important;
    column-gap: 24px !important;
    row-gap: 0 !important;
    align-items: center !important;
  }
  .cmplz-cookiebanner.cmplz-bottom .cmplz-header { grid-area: header !important; display: none !important; }
  .cmplz-cookiebanner.cmplz-bottom .cmplz-body { grid-area: body !important; padding: 0 !important; }
  .cmplz-cookiebanner.cmplz-bottom .cmplz-message {
    margin: 0 !important;
    font-size: 13px !important;
    line-height: 1.4 !important;
    max-width: 720px !important;
  }
  .cmplz-cookiebanner.cmplz-bottom .cmplz-categories,
  .cmplz-cookiebanner.cmplz-bottom .cmplz-links.cmplz-information,
  .cmplz-cookiebanner.cmplz-bottom .cmplz-divider,
  .cmplz-cookiebanner.cmplz-bottom .cmplz-documents { display: none !important; }
  .cmplz-cookiebanner.cmplz-bottom .cmplz-buttons {
    grid-area: buttons !important;
    display: flex !important;
    flex-direction: row !important;
    gap: 8px !important;
    padding: 0 !important;
    margin: 0 !important;
    align-items: center !important;
    flex-wrap: nowrap !important;
  }
  .cmplz-cookiebanner.cmplz-bottom .cmplz-btn {
    padding: 9px 18px !important;
    font-size: 13px !important;
    min-height: 0 !important;
    height: auto !important;
    line-height: 1.2 !important;
    border-radius: 8px !important;
    white-space: nowrap !important;
  }
  .cmplz-cookiebanner.cmplz-bottom .cmplz-btn.cmplz-view-preferences {
    background: transparent !important;
    border: 1px solid rgba(0,0,0,0.08) !important;
    color: #6B7280 !important;
    font-size: 12px !important;
    padding: 8px 14px !important;
  }
  .cmplz-cookiebanner.cmplz-bottom .cmplz-btn.cmplz-save-preferences,
  .cmplz-cookiebanner.cmplz-bottom .cmplz-buttons .cmplz-btn.cmplz-manage-options { display: none !important; }
  .cmplz-cookiebanner.cmplz-bottom .cmplz-close {
    top: 8px !important;
    right: 12px !important;
    position: absolute !important;
  }
  .cmplz-cookiebanner.cmplz-bottom .cmplz-close svg { width: 12px !important; height: 12px !important; }
}

/* ============================================================
   PATCH 83 — PDP gallery instant-reveal (2026-06-06)
   Earlier reveal animation (animation: ns-gallery-reveal 0.4s
   ease 0.5s both) was creating a ~900ms blank window after page
   load while the gallery faded in. Auditors capturing during
   that window saw an empty image area at the top of the PDP.
   Kill the animation; let the gallery be visible immediately.
   ============================================================ */
body.single-product .woocommerce-product-gallery,
body.single-product .woocommerce-product-gallery.woocommerce-product-gallery--initialized,
body.single-product .woocommerce-product-gallery:not(.woocommerce-product-gallery--initialized) {
  opacity: 1 !important;
  animation: none !important;
}

/* ============================================================
   PATCH 84a — Nav chevron spacing (2026-06-06)
   Items with submenus have a .dropdown-menu-toggle span INSIDE
   the link, adding ~14px to its rendered width. With equal
   padding around all links, this makes submenu items sit
   visually further from the next item. Pull the chevron into
   the right padding so the perceived gap equalises.
   ============================================================ */
.main-navigation .menu > li.menu-item-has-children > a {
  padding-right: 6px !important;
  position: relative;
}
.main-navigation .menu > li.menu-item-has-children > a .dropdown-menu-toggle {
  margin-left: 4px !important;
  margin-right: -2px !important;
  display: inline-flex !important;
  align-items: center !important;
  padding: 0 !important;
}
.main-navigation .menu > li.menu-item-has-children > a .dropdown-menu-toggle .gp-icon {
  display: inline-flex !important;
  font-size: 0.7em !important;
  opacity: 0.65 !important;
}

/* ============================================================
   PATCH 84b — Footer redesign (2026-06-06)
   Hero CTA strip + visual brand block + condensed link grid +
   payment pills bottom row. Trust band kept but refined.
   ============================================================ */

/* Trust band — slightly bolder */
.ns-footer-trust-band {
  background: linear-gradient(180deg, #0E1020 0%, #181A2C 100%);
  padding: 32px 0 !important;
  border-bottom: 1px solid rgba(255,255,255,0.04);
}
.ns-footer-trust-band__inner {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 28px !important;
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 32px !important;
  justify-content: center;
  align-items: center;
}
.ns-footer-trust-item {
  display: flex !important;
  align-items: center;
  gap: 12px !important;
  font-size: 0.86rem !important;
  color: rgba(255,255,255,0.78) !important;
  white-space: normal !important;
  letter-spacing: 0.005em;
}
.ns-footer-trust-item svg {
  width: 20px !important;
  height: 20px !important;
  color: var(--ns-primary, #4B5BD4) !important;
  opacity: 0.95 !important;
  flex-shrink: 0;
}
.ns-footer-trust-sep { display: none !important; }

/* Hero CTA strip */
.ns-footer-hero {
  background:
    radial-gradient(circle at 18% 30%, rgba(75,91,212,0.22) 0%, transparent 45%),
    radial-gradient(circle at 88% 78%, rgba(214,52,111,0.16) 0%, transparent 50%),
    linear-gradient(180deg, #0E1020 0%, #14162a 100%);
  border-top: 1px solid rgba(255,255,255,0.05);
  border-bottom: 1px solid rgba(255,255,255,0.05);
  padding: 64px 0 !important;
  position: relative;
}
.ns-footer-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, rgba(75,91,212,0.06) 1px, transparent 1px);
  background-size: 28px 28px;
  opacity: 0.4;
  pointer-events: none;
}
.ns-footer-hero__inner {
  position: relative;
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 32px;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 56px;
  align-items: center;
}
.ns-footer-hero__title {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-weight: 800 !important;
  font-size: clamp(2.2rem, 4.5vw, 3.6rem) !important;
  line-height: 0.98 !important;
  color: #fff !important;
  margin: 0 0 18px !important;
  letter-spacing: -0.015em !important;
}
.ns-footer-hero__title span {
  color: var(--ns-primary, #4B5BD4);
  display: inline-block;
  border-bottom: 4px solid var(--ns-accent, #D6346F);
  padding-bottom: 2px;
}
.ns-footer-hero__sub {
  color: rgba(255,255,255,0.7) !important;
  font-size: 1rem !important;
  line-height: 1.55 !important;
  margin: 0 !important;
  max-width: 460px;
}
.ns-footer-hero__cta {
  display: flex;
  flex-direction: column;
  gap: 28px;
  align-items: flex-start;
}
.ns-footer-hero__btn {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  background: var(--ns-primary, #4B5BD4) !important;
  color: #fff !important;
  font-family: 'Barlow Condensed', sans-serif !important;
  font-weight: 700 !important;
  font-size: 1.05rem !important;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 16px 28px !important;
  border-radius: 10px !important;
  text-decoration: none !important;
  transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
  box-shadow: 0 8px 24px rgba(75,91,212,0.35);
}
.ns-footer-hero__btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 32px rgba(75,91,212,0.45);
  background: #5C6CE0 !important;
}
.ns-footer-hero__btn span { font-size: 1.3em; line-height: 1; }
.ns-footer-hero__stats {
  display: flex;
  gap: 32px;
  flex-wrap: wrap;
}
.ns-footer-hero__stats > div {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-left: 14px;
  border-left: 2px solid rgba(75,91,212,0.5);
}
.ns-footer-hero__stats strong {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 800;
  font-size: 1.7rem;
  color: #fff;
  line-height: 1;
}
.ns-footer-hero__stats span {
  font-size: 0.72rem;
  color: rgba(255,255,255,0.55);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

/* Main grid */
.ns-footer-grid {
  background: #0E1020 !important;
  padding: 72px 32px 56px !important;
  max-width: none !important;
  display: grid !important;
  grid-template-columns: 1.2fr 2.8fr !important;
  gap: 64px !important;
  margin: 0 auto !important;
}
.ns-footer-grid > * { max-width: none; }
.ns-footer-grid {
  max-width: 1280px !important;
  margin: 0 auto !important;
}

/* Brand block */
.ns-footer-brand {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 14px !important;
}
.ns-footer-brand__mark {
  width: 56px;
  height: 56px;
  filter: drop-shadow(0 6px 18px rgba(75,91,212,0.35));
}
.ns-footer-brand__name {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-weight: 800 !important;
  font-size: 1.95rem !important;
  line-height: 0.92 !important;
  letter-spacing: 0.01em !important;
  color: #fff !important;
  text-decoration: none !important;
  margin: 4px 0 0 !important;
}
.ns-footer-brand__name em {
  font-style: normal;
  color: var(--ns-primary, #4B5BD4);
  font-weight: 800;
}
.ns-footer-brand__tag {
  color: rgba(255,255,255,0.7) !important;
  font-size: 0.85rem !important;
  line-height: 1.55 !important;
  margin: 4px 0 0 !important;
  max-width: 280px;
}
.ns-footer-brand__contact a {
  color: var(--ns-primary, #4B5BD4) !important;
  font-size: 0.86rem !important;
  font-weight: 600 !important;
  text-decoration: none !important;
}
.ns-footer-brand__contact a:hover { text-decoration: underline !important; }
.ns-footer-brand__legal {
  color: rgba(255,255,255,0.28) !important;
  font-size: 0.7rem !important;
  margin: 8px 0 0 !important;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

/* Link columns */
.ns-footer-cols {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 48px !important;
}
.ns-footer-col h3 {
  font-family: 'Barlow Condensed', sans-serif !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,0.45) !important;
  margin: 0 0 18px !important;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(255,255,255,0.07);
}
.ns-footer-col ul {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  display: flex;
  flex-direction: column;
  gap: 11px;
}
.ns-footer-col ul li a {
  color: rgba(255,255,255,0.78) !important;
  text-decoration: none !important;
  font-size: 0.88rem !important;
  font-weight: 400 !important;
  transition: color 0.15s, padding-left 0.15s;
  display: inline-block;
  position: relative;
}
.ns-footer-col ul li a:hover {
  color: var(--ns-primary, #4B5BD4) !important;
  padding-left: 8px !important;
}
.ns-footer-col ul li a::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  width: 0;
  height: 1px;
  background: var(--ns-primary, #4B5BD4);
  transition: width 0.15s;
  transform: translateY(-50%);
}
.ns-footer-col ul li a:hover::before { width: 5px; }

/* Bottom strip */
.ns-footer-bottom {
  background: #07081a !important;
  border-top: 1px solid rgba(255,255,255,0.05) !important;
  padding: 0 !important;
}
.ns-footer-bottom__inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 22px 32px;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 24px;
  align-items: center;
}
.ns-footer-bottom__copy {
  margin: 0 !important;
  font-size: 0.78rem !important;
  color: rgba(255,255,255,0.45) !important;
  justify-self: start;
}
.ns-footer-bottom__pay {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: center;
}
.ns-footer-pay-pill {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  color: rgba(255,255,255,0.65);
  background: rgba(75,91,212,0.12);
  border: 1px solid rgba(75,91,212,0.25);
  padding: 4px 9px;
  border-radius: 5px;
  text-transform: uppercase;
}
.ns-footer-pay-pill--alt {
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.1);
  color: rgba(255,255,255,0.55);
}
.ns-footer-bottom__nav {
  display: flex;
  gap: 18px;
  justify-self: end;
}
.ns-footer-bottom__nav a {
  font-size: 0.78rem !important;
  color: rgba(255,255,255,0.5) !important;
  text-decoration: none !important;
}
.ns-footer-bottom__nav a:hover { color: var(--ns-primary, #4B5BD4) !important; }

/* Hide GP built-in footer remnants */
.site-info, footer.site-info, .footer-widgets { display: none !important; }

/* Tablet */
@media (max-width: 980px) {
  .ns-footer-hero__inner { grid-template-columns: 1fr; gap: 32px; }
  .ns-footer-hero__cta { align-items: stretch; }
  .ns-footer-grid { grid-template-columns: 1fr !important; gap: 40px !important; padding: 56px 24px 40px !important; }
  .ns-footer-cols { gap: 32px !important; }
  .ns-footer-trust-band__inner { grid-template-columns: repeat(2, 1fr) !important; gap: 20px 28px !important; padding: 0 24px !important; }
}
@media (max-width: 700px) {
  .ns-footer-trust-band { padding: 24px 0 !important; }
  .ns-footer-trust-band__inner { grid-template-columns: 1fr !important; gap: 14px !important; }
  .ns-footer-trust-item { font-size: 0.82rem !important; }
  .ns-footer-hero { padding: 48px 0 !important; }
  .ns-footer-hero__inner { padding: 0 20px; }
  .ns-footer-hero__btn { font-size: 0.95rem !important; padding: 14px 22px !important; }
  .ns-footer-hero__stats { gap: 20px; }
  .ns-footer-hero__stats strong { font-size: 1.4rem; }
  .ns-footer-grid { padding: 48px 20px 32px !important; gap: 36px !important; }
  .ns-footer-cols { grid-template-columns: 1fr 1fr !important; gap: 28px !important; }
  .ns-footer-bottom__inner { grid-template-columns: 1fr; gap: 14px; text-align: center; padding: 20px; }
  .ns-footer-bottom__copy, .ns-footer-bottom__nav { justify-self: center; }
  .ns-footer-bottom__pay { justify-content: center; }
}

/* ============================================================
   PATCH 85 — Full-bleed dark sections (2026-06-06)
   Issue: .ns-footer-grid is max-width:1280 with a dark bg, so on
   wider viewports the dark colour doesn't reach the screen edge
   and shows lighter wings. Same problem on partner lander —
   .pl-main is a constrained 1168px parent, so .pl-section dark
   bg also leaves wings.
   Fix: paint the bg outside the box via box-shadow + clip-path,
   the standard 'full-bleed inside a constrained container' trick.
   ============================================================ */

/* Footer grid: full-width dark bleed */
.ns-footer-grid {
  box-shadow: 0 0 0 100vmax #0E1020;
  clip-path: inset(0 -100vmax);
}

/* Partner lander sections: full-width bleed (dark by default) */
body.partner-lander .pl-section {
  box-shadow: 0 0 0 100vmax var(--pl-dark, #0E1020);
  clip-path: inset(0 -100vmax);
}
body.partner-lander .pl-section.pl-section--light {
  box-shadow: 0 0 0 100vmax var(--pl-light, #F4F5FC);
}
body.partner-lander .pl-cta-band {
  box-shadow: 0 0 0 100vmax #0E1020;
  clip-path: inset(0 -100vmax);
}

/* PATCH 85b — switch to pseudo-element bleed (PATCH 85 box-shadow was
   clipped by PATCH 74 html/body overflow-x:hidden) */

/* Reset the failed PATCH 85 approach */
.ns-footer-grid,
body.partner-lander .pl-section,
body.partner-lander .pl-cta-band {
  box-shadow: none !important;
  clip-path: none !important;
}

/* Footer grid: absolute pseudo-element behind, escaping parent constraints */
.ns-footer-grid {
  position: relative !important;
  isolation: isolate;
}
.ns-footer-grid::before {
  content: '';
  position: absolute;
  inset: 0;
  left: calc(50% - 50vw);
  width: 100vw;
  background: #0E1020;
  z-index: -1;
}

/* Partner lander sections — same trick */
body.partner-lander .pl-section {
  position: relative;
  isolation: isolate;
}
body.partner-lander .pl-section::before {
  content: '';
  position: absolute;
  inset: 0;
  left: calc(50% - 50vw);
  width: 100vw;
  background: var(--pl-dark, #0E1020);
  z-index: -1;
}
body.partner-lander .pl-section.pl-section--light::before {
  background: var(--pl-light, #F4F5FC);
}
body.partner-lander .pl-cta-band::before {
  background: #0E1020;
}

/* ============================================================
   PATCH 86 — Sitewide full-bleed for tinted/dark sections
   (2026-06-06). PATCH 85 fixed footer + partner; this extends
   the same ::before pseudo bleed pattern to every coloured
   section across home, shop, category, shipping, about, COA,
   contact, and inner pages.
   White sections are left alone — they read identical against
   the white page bg, so the wings aren't visible.
   ============================================================ */
.ns-section.ns-section-alt,
.ns-section.ns-section-kits,
.ns-section.ns-stacks-section,
.ns-section.ns-cat-cta-band,
.ns-shop-trust-strip,
.ns-ship-facts-section,
.ns-ship-policies-section,
.ns-ship-contact-band,
.content-area.ns-inner-page {
  position: relative;
  isolation: isolate;
}
.ns-section.ns-section-alt::before,
.ns-section.ns-section-kits::before,
.ns-section.ns-stacks-section::before,
.ns-section.ns-cat-cta-band::before,
.ns-shop-trust-strip::before,
.ns-ship-facts-section::before,
.ns-ship-policies-section::before,
.ns-ship-contact-band::before,
.content-area.ns-inner-page::before {
  content: '';
  position: absolute;
  inset: 0;
  left: calc(50% - 50vw);
  width: 100vw;
  z-index: -1;
}

/* Per-section bg colours match the inner element's existing bg */
.ns-section.ns-section-alt::before              { background: #F0F3FB; }
.ns-section.ns-section-kits::before             { background: #F8F9FF; }
.ns-section.ns-stacks-section::before           { background: #F4F6FB; }
.ns-shop-trust-strip::before                    { background: #F4F6FB; }
.ns-ship-facts-section::before                  { background: #F4F6FB; }
.ns-ship-policies-section::before               { background: #F4F6FB; }
.ns-ship-contact-band::before                   { background: #F4F6FB; }
.content-area.ns-inner-page::before             { background: #FAFBFF; }
.ns-section.ns-cat-cta-band::before             { background: #181A2C; }

/* Dark How It Works on home (PATCH 79) — match its gradient */
.ns-section.ns-section-alt:has(.ns-steps)::before {
  background: linear-gradient(135deg, #0E1020 0%, #181A2C 55%, #1a1033 100%);
}

/* ============================================================
   PATCH 87 — Homepage hero CRO package (2026-06-06)
   - Tertiary text link replacing Why Northstate button
   - Inline 3-point proof strip directly under CTAs (replaces
     the deleted standalone .ns-trust-bar band)
   - Right column: >99% purity card spans top row (dominant),
     other 3 cards equal in row below
   ============================================================ */

/* Tertiary 'Why Northstate' link */
body.home .ns-hero__why-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 14px;
  font-size: 0.86rem;
  font-weight: 500;
  color: var(--ns-primary, #4B5BD4);
  text-decoration: none;
  letter-spacing: 0.01em;
}
body.home .ns-hero__why-link:hover { color: var(--ns-accent, #D6346F); }
body.home .ns-hero__why-link span { font-size: 1em; line-height: 1; }

/* Proof strip directly under the CTA cluster */
body.home .ns-hero__proof {
  list-style: none !important;
  padding: 0 !important;
  margin: 22px 0 0 !important;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 22px;
}
body.home .ns-hero__proof li {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 0.82rem;
  color: var(--ns-text-muted, #5C6282);
  line-height: 1.35;
  padding: 0 !important;
  border: none !important;
}
body.home .ns-hero__proof li::before { display: none !important; content: none !important; }
body.home .ns-hero__proof svg {
  color: var(--ns-primary, #4B5BD4);
  flex-shrink: 0;
}

/* Right column: dominant + 3 support */
body.home .ns-hero__stats--reweighted {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  grid-template-rows: auto auto !important;
  gap: 14px !important;
}
body.home .ns-hero__stat--lead {
  grid-column: 1 / -1;
  background: linear-gradient(135deg, #FFFFFF 0%, #F8F9FF 100%) !important;
  border: 1px solid var(--ns-primary, #4B5BD4) !important;
  box-shadow: 0 8px 28px rgba(75, 91, 212, 0.18) !important;
  padding: 28px 26px !important;
  position: relative;
}
body.home .ns-hero__stat--lead::after {
  content: 'DOMINANT PROOF';
  position: absolute;
  top: 14px;
  right: 18px;
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  color: var(--ns-primary, #4B5BD4);
  opacity: 0.55;
}
body.home .ns-hero__stat--lead .ns-hero__stat-num {
  font-size: 3.2rem !important;
  background: linear-gradient(135deg, var(--ns-primary, #4B5BD4) 0%, var(--ns-accent, #D6346F) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: var(--ns-primary, #4B5BD4) !important;
}
body.home .ns-hero__stat--lead .ns-hero__stat-label {
  font-size: 0.92rem !important;
  line-height: 1.5 !important;
  max-width: 86%;
  color: var(--ns-text, #181A2C) !important;
}

/* Tablet */
@media (max-width: 900px) {
  body.home .ns-hero__stats--reweighted {
    grid-template-columns: 1fr 1fr !important;
  }
  body.home .ns-hero__stat--lead {
    padding: 22px 20px !important;
  }
  body.home .ns-hero__stat--lead .ns-hero__stat-num {
    font-size: 2.6rem !important;
  }
}

/* Mobile: dominant on its own row, others in horizontal scroll keeps PATCH 51 */
@media (max-width: 600px) {
  body.home .ns-hero__stats--reweighted {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    padding: 12px 16px !important;
    margin: 0 -16px !important;
    gap: 0 !important;
    scrollbar-width: none;
  }
  body.home .ns-hero__stat--lead {
    grid-column: auto !important;
    flex: 0 0 78% !important;
    background: linear-gradient(135deg, #FFFFFF 0%, #F8F9FF 100%) !important;
    border: 1px solid var(--ns-primary, #4B5BD4) !important;
    border-radius: var(--ns-radius-lg, 14px) !important;
    box-shadow: 0 6px 18px rgba(75, 91, 212, 0.15) !important;
    margin-right: 10px !important;
    padding: 18px 16px !important;
    scroll-snap-align: start;
  }
  body.home .ns-hero__stat--lead::after { display: none; }
  body.home .ns-hero__stat--lead .ns-hero__stat-num { font-size: 2rem !important; }
  body.home .ns-hero__stat--lead .ns-hero__stat-label { max-width: none; }
  body.home .ns-hero__proof { gap: 8px 14px; font-size: 0.78rem; }
}

/* PATCH 87b — kill the DOMINANT PROOF dev-speak label */
body.home .ns-hero__stat--lead::after { display: none !important; content: none !important; }

/* ============================================================
   PATCH 88 — Homepage hero v2: product showcase replaces proof grid
   (2026-06-06). Auditor: hero hid the product behind abstract proof
   cards — ecommerce homepages need product presence in the first
   viewport. Replace stats grid with a 2×2 product showcase that
   pulls live WC product data (image, name, price).
   ============================================================ */

/* Kill PATCH 87 reweighted-stat treatment (no longer rendered) */
body.home .ns-hero__stats--reweighted,
body.home .ns-hero__stat--lead { /* no-op shells */ }

/* Showcase grid: 2x2 product cards */
body.home .ns-hero__showcase {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  align-content: start;
}
body.home .ns-hero__product {
  display: flex;
  flex-direction: column;
  background: #FFFFFF;
  border: 1px solid var(--ns-border, #E2E4F0);
  border-radius: var(--ns-radius-lg, 14px);
  overflow: hidden;
  text-decoration: none !important;
  color: var(--ns-text, #181A2C);
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
  box-shadow: 0 2px 10px rgba(30, 40, 120, 0.05);
}
body.home .ns-hero__product:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 28px rgba(75, 91, 212, 0.18);
  border-color: var(--ns-primary, #4B5BD4);
}
body.home .ns-hero__product-img {
  aspect-ratio: 4/3;
  background: linear-gradient(135deg, #F4F5FC 0%, #FFFFFF 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
body.home .ns-hero__product-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
body.home .ns-hero__product-meta {
  padding: 14px 16px 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
body.home .ns-hero__product-name {
  font-size: 0.92rem;
  font-weight: 600;
  color: var(--ns-text, #181A2C);
  line-height: 1.3;
  letter-spacing: -0.005em;
}
body.home .ns-hero__product-price {
  font-size: 0.88rem;
  color: var(--ns-primary, #4B5BD4);
  font-weight: 700;
}
body.home .ns-hero__product-price del { opacity: 0.5; margin-right: 4px; font-weight: 400; }
body.home .ns-hero__product-price ins { text-decoration: none; }

/* Tighten hero vertical so the section below peeks into view */
body.home .ns-hero { padding-top: 56px !important; padding-bottom: 56px !important; }

/* Tablet */
@media (max-width: 900px) {
  body.home .ns-hero__showcase { gap: 10px; }
  body.home .ns-hero__product-name { font-size: 0.85rem; }
  body.home .ns-hero__product-price { font-size: 0.82rem; }
}

/* Mobile */
@media (max-width: 600px) {
  body.home .ns-hero__showcase {
    grid-template-columns: 1fr 1fr !important;
    gap: 10px !important;
    margin-top: 8px;
  }
  body.home .ns-hero__product-meta { padding: 10px 12px 12px; }
  body.home .ns-hero__product-name { font-size: 0.82rem; }
  body.home .ns-hero__product-price { font-size: 0.8rem; }
  body.home .ns-hero { padding-top: 32px !important; padding-bottom: 32px !important; }
}

/* ============================================================
   PATCH 89 — Hero v2 mobile sequencing + card affordance
   (2026-06-06). Auditor: mobile product imagery arrives too late;
   product cards lack click affordance; secondary CTA competes
   too hard with primary on mobile.
   ============================================================ */

/* Product card affordance — always-visible arrow chevron, brand-blue */
body.home .ns-hero__product-meta {
  display: grid !important;
  grid-template-columns: 1fr auto !important;
  grid-template-rows: auto auto !important;
  grid-template-areas: 'name arrow' 'price arrow' !important;
  column-gap: 10px !important;
  align-items: center;
}
body.home .ns-hero__product-name { grid-area: name; }
body.home .ns-hero__product-price { grid-area: price; }
body.home .ns-hero__product::after {
  content: '\2192';
  grid-area: arrow;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--ns-primary, #4B5BD4);
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(75, 91, 212, 0.08);
  transition: transform 0.2s ease, background 0.2s ease, color 0.2s ease;
  align-self: center;
  margin: 14px 16px 14px 0;
}
body.home .ns-hero__product:hover::after {
  background: var(--ns-primary, #4B5BD4);
  color: #fff;
  transform: translateX(3px);
}

/* Mobile (≤700px): reorder so product grid appears right after the
   paragraph and before the CTAs. Use flexbox order on the inner
   wrapper. The DOM stays the same; mobile rearranges visually. */
@media (max-width: 700px) {
  body.home .ns-hero__inner {
    display: flex !important;
    flex-direction: column !important;
    gap: 0 !important;
  }
  body.home .ns-hero__content {
    display: contents !important;
  }
  body.home .ns-hero__eyebrow   { order: 1; }
  body.home .ns-hero__headline  { order: 2; }
  body.home .ns-hero__sub       { order: 3; }
  body.home .ns-hero__showcase  { order: 4; margin: 18px 0 4px !important; }
  body.home .ns-hero__ctas      { order: 5; margin-top: 6px; }
  body.home .ns-hero__why-link  { order: 6; }
  body.home .ns-hero__proof     { order: 7; }

  /* Subordinate secondary CTA on mobile so it doesn't compete */
  body.home .ns-hero__ctas { flex-direction: column !important; gap: 8px !important; align-items: stretch; }
  body.home .ns-hero__ctas .ns-btn-accent {
    width: 100%;
    padding: 14px 18px !important;
    font-size: 1rem !important;
  }
  body.home .ns-hero__ctas .ns-btn-outline {
    background: transparent !important;
    border: none !important;
    color: var(--ns-primary, #4B5BD4) !important;
    padding: 6px 0 !important;
    font-size: 0.92rem !important;
    font-weight: 600 !important;
    text-decoration: underline;
    text-underline-offset: 4px;
    text-decoration-thickness: 1px;
  }

  /* Showcase: 2x2 with smaller cards so all 4 fit nicely above CTAs */
  body.home .ns-hero__showcase {
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
  }
  body.home .ns-hero__product-img { aspect-ratio: 1/1; }
  body.home .ns-hero__product-meta {
    padding: 8px 10px 10px !important;
    column-gap: 6px !important;
  }
  body.home .ns-hero__product-name { font-size: 0.78rem !important; }
  body.home .ns-hero__product-price { font-size: 0.78rem !important; }
  body.home .ns-hero__product::after {
    width: 22px;
    height: 22px;
    font-size: 0.9rem;
    margin: 8px 10px 8px 0;
  }
}

/* ============================================================
   PATCH 90 — Homepage hero full-bleed + zero gap to next section
   (2026-06-06). Hero was constrained at ~1192px (wings on wider
   viewports) and had a 20px margin-bottom creating dead space
   before Why Researchers Choose Northstate.
   ============================================================ */
body.home .ns-hero {
  position: relative;
  isolation: isolate;
  margin-bottom: 0 !important;
}
body.home .ns-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  left: calc(50% - 50vw);
  width: 100vw;
  background: linear-gradient(155deg, #F2F5FF 0%, #FAFBFF 55%, #FDF3F8 100%);
  z-index: -1;
}

/* ============================================================
   PATCH 91 — Homepage hero true full-width + kill header gap
   (2026-06-07). PATCH 90 bled the bg but the CONTENT stayed in
   a 1192px centered box (main.site-main constrained). Also a
   20px margin-top on main.site-main left dead space between
   the header and the hero. Both fixed for homepage only.
   ============================================================ */
body.home main.site-main {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  max-width: 100% !important;
  width: 100% !important;
  padding: 0 !important;
}
body.home .ns-hero__inner {
  max-width: 100% !important;
  width: 100% !important;
  padding-left: 64px !important;
  padding-right: 64px !important;
  box-sizing: border-box;
}

/* Outer .grid-container wrapping main on home — also full width */
body.home .site-content > .grid-container,
body.home #page .grid-container.hfeed {
  max-width: 100% !important;
  padding: 0 !important;
}

/* Responsive padding */
@media (max-width: 1200px) {
  body.home .ns-hero__inner { padding-left: 40px !important; padding-right: 40px !important; }
}
@media (max-width: 900px) {
  body.home .ns-hero__inner { padding-left: 28px !important; padding-right: 28px !important; }
}
@media (max-width: 600px) {
  body.home .ns-hero__inner { padding-left: 20px !important; padding-right: 20px !important; }
}

/* PATCH 91b — Override GeneratePress .site.grid-container max-width on home */
body.home .site.grid-container,
body.home div.site.grid-container.container.hfeed {
  max-width: 100% !important;
  padding: 0 !important;
}
body.home .site-content,
body.home .content-area {
  max-width: 100% !important;
  width: 100% !important;
  padding: 0 !important;
}

/* ============================================================
   PATCH 92 — Walk back PATCH 91 content stretch (2026-06-07).
   PATCH 91 made the hero CONTENT use the full viewport width, not
   just the bg. On 2000px viewports the columns blew up: text on
   the left, giant cards on the right, dead space in between.
   Keep the bg full-bleed and the zero header gap; cap the inner
   content at 1440px centered.
   ============================================================ */
body.home .ns-hero__inner {
  max-width: 1440px !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding-left: 64px !important;
  padding-right: 64px !important;
  box-sizing: border-box;
}

/* Sections below the hero should also re-center now that the GP
   grid-container was overridden to 100% for all sections on home */
body.home .ns-section__inner {
  max-width: 1280px;
  margin: 0 auto;
  padding-left: 24px;
  padding-right: 24px;
  box-sizing: border-box;
}

@media (max-width: 1200px) {
  body.home .ns-hero__inner { padding-left: 40px !important; padding-right: 40px !important; }
}
@media (max-width: 900px) {
  body.home .ns-hero__inner { padding-left: 28px !important; padding-right: 28px !important; }
}
@media (max-width: 600px) {
  body.home .ns-hero__inner { padding-left: 20px !important; padding-right: 20px !important; }
}

/* PATCH 93 — canonical trust strip pink icons */
.ns-footer-trust-band .ns-footer-trust-item svg,
.ns-cat-cta-band svg { color: var(--ns-accent, #D6346F) !important; }

/* PATCH 94 — full-bleed hero on commerce/marketing templates (2026-06-07)
   Shop archive, category archive, partner lander, calculator intro.
   Uses margin-left + width: 100vw to break out of GP container.
   Inner content stays centered via __inner max-width constraints.
   PDP excluded per spec. */

/* Shop archive hero */
.ns-shop-hero {
  margin-left: calc(50% - 50vw) !important;
  width: 100vw !important;
}

/* Category archive hero */
.ns-cat-hero {
  margin-left: calc(50% - 50vw) !important;
  width: 100vw !important;
}

/* Partner lander hero */
body.partner-lander .pl-hero {
  margin-left: calc(50% - 50vw) !important;
  width: 100vw !important;
}

/* Calculator intro — add background + full-bleed */
.ns-calc-intro {
  background: linear-gradient(155deg, #F2F5FF 0%, #FAFBFF 60%, #FDF2F7 100%) !important;
  border-bottom: 1px solid var(--ns-border) !important;
  padding: 56px 24px 48px !important;
  text-align: center !important;
  margin-left: calc(50% - 50vw) !important;
  width: 100vw !important;
  margin-bottom: 0 !important;
}

/* ============================================================
   PATCH 95 — Cookie banner mobile content offset (2026-06-07)
   When Complianz banner is visible (.cmplz-show), shift page
   content up by banner height on mobile so it doesn't overlap
   CTAs, sticky elements, form inputs.
   ============================================================ */
@media (max-width: 640px) {
  body:has(.cmplz-cookiebanner.cmplz-show) {
    padding-bottom: 280px !important;
  }
  /* Sticky cart needs to sit above the banner zone too */
  body:has(.cmplz-cookiebanner.cmplz-show) .ns-sticky-cart {
    bottom: 280px !important;
  }
}

/* ============================================================
   PATCH 96 — Cookie banner overlap fixes (2026-06-07)
   Desktop: add body padding so bottom content is scrollable
   above the 60px fixed banner.
   Mobile: broaden selector from .cmplz-show to just
   .cmplz-cookiebanner so it fires regardless of show-class
   timing; also raise sticky cart bottom.
   ============================================================ */

/* Desktop: 70px body padding to keep bottom content above 60px banner */
@media (min-width: 641px) {
  body:has(.cmplz-cookiebanner) {
    padding-bottom: 70px !important;
    scroll-padding-bottom: 70px !important;
  }
  body:has(.cmplz-cookiebanner) .ns-sticky-cart {
    bottom: 70px !important;
  }
}

/* Mobile: broaden to any banner presence (not just .cmplz-show) */
@media (max-width: 640px) {
  body:has(.cmplz-cookiebanner) {
    padding-bottom: 280px !important;
    scroll-padding-bottom: 280px !important;
  }
  body:has(.cmplz-cookiebanner) .ns-sticky-cart {
    bottom: 280px !important;
  }
}

/* ============================================================
   PATCH 97 — Syringe visibility + cookie footer breathing room
   (2026-06-09).
   1) Syringe SVG was 72px wide — too small to read. Bump to 110px
      desktop, 90px mobile. Add overflow:visible on the SVG so
      nothing inside the viewBox gets clipped.
   2) Cookie footer: bump body padding-bottom so the last row of
      footer column links isn't covered by the banner at any scroll
      state. Mobile banner compressed harder (icon + 1-line message
      + 2 inline buttons in a flexrow instead of grid).
   ============================================================ */

/* ── 1. Syringe visibility ────────────────────────────────── */
.ns-calc__syringe-svg {
  width: 110px !important;
  height: auto !important;
  overflow: visible !important;
}
.ns-calc__syringe-wrap {
  padding: 22px 14px 14px !important;
}
@media (max-width: 700px) {
  .ns-calc__syringe-svg { width: 90px !important; }
}

/* ── 2. Cookie footer clearance ───────────────────────────── */
/* Desktop banner is 60px tall — bump padding from 70 to 110 so the
   footer's last link row sits clearly above the banner zone */
@media (min-width: 641px) {
  body:has(.cmplz-cookiebanner) {
    padding-bottom: 110px !important;
  }
  body:has(.cmplz-cookiebanner) .ns-sticky-cart {
    bottom: 110px !important;
  }
}

/* Mobile banner compression: shrink from 258px to ~140px
   - tighter padding
   - hide title (it just says Manage Consent, redundant with the message)
   - inline 2-column button row (was 3-row grid) */
@media (max-width: 640px) {
  .cmplz-cookiebanner.cmplz-bottom {
    padding: 12px 14px 10px !important;
  }
  .cmplz-cookiebanner .cmplz-header {
    display: none !important;
  }
  .cmplz-cookiebanner .cmplz-message {
    font-size: 12px !important;
    line-height: 1.4 !important;
    margin: 0 0 8px !important;
    max-height: 3em;
    overflow: hidden;
  }
  .cmplz-cookiebanner .cmplz-buttons {
    grid-template-columns: 1fr 1fr !important;
    grid-template-rows: auto !important;
    gap: 6px !important;
    margin: 0 !important;
  }
  .cmplz-cookiebanner .cmplz-btn {
    padding: 8px 10px !important;
    font-size: 12px !important;
  }
  /* Hide view-preferences and documents on mobile to save vertical
     space — users can still tap a 1-pixel link via the dot policy */
  .cmplz-cookiebanner .cmplz-btn.cmplz-view-preferences,
  .cmplz-cookiebanner .cmplz-documents { display: none !important; }
  /* Re-anchor body padding to match new compressed mobile height */
  body:has(.cmplz-cookiebanner) {
    padding-bottom: 140px !important;
  }
  body:has(.cmplz-cookiebanner) .ns-sticky-cart {
    bottom: 140px !important;
  }
}

/* PATCH 97b — match PATCH 95 :has() chained-class specificity */
@media (max-width: 640px) {
  body:has(.cmplz-cookiebanner.cmplz-show),
  body.ns-banner-visible {
    padding-bottom: 140px !important;
  }
  body:has(.cmplz-cookiebanner.cmplz-show) .ns-sticky-cart,
  body.ns-banner-visible .ns-sticky-cart {
    bottom: 140px !important;
  }
}

/* ============================================================
   PATCH 98 — Allow cookie banner to actually be dismissed
   (2026-06-09).
   PATCH 82 set display:grid !important on .cmplz-cookiebanner.cmplz-bottom.
   When user clicks Accept/Deny, Complianz removes the .cmplz-show class
   from the banner and tries to set display:none — but our !important
   kept it visible. Banner cookies were set correctly but visually the
   banner never disappeared.
   Fix: only force display:grid WHEN .cmplz-show is present. Without
   .cmplz-show, Complianz's default display:none takes over.
   ============================================================ */
.cmplz-cookiebanner.cmplz-bottom:not(.cmplz-show) {
  display: none !important;
}

/* PATCH 98b — release body padding when banner is dismissed.
   :has(.cmplz-cookiebanner) was matching even when banner had
   display:none after dismiss, leaving 110/140px of dead space at
   page bottom. Tighten the selector to match only when banner is
   actually visible (has .cmplz-show class). */
@media (min-width: 641px) {
  body:not(:has(.cmplz-cookiebanner.cmplz-show)) {
    padding-bottom: 0 !important;
  }
  body:not(:has(.cmplz-cookiebanner.cmplz-show)) .ns-sticky-cart {
    bottom: 0 !important;
  }
}
@media (max-width: 640px) {
  body:not(.ns-banner-visible):not(:has(.cmplz-cookiebanner.cmplz-show)) {
    padding-bottom: 0 !important;
  }
  body:not(.ns-banner-visible):not(:has(.cmplz-cookiebanner.cmplz-show)) .ns-sticky-cart {
    bottom: 0 !important;
  }
}

/* ============================================================
   PATCH 99 — Calc page dead space + tab button artifact
   (2026-06-09).
   1) .inside-article had GP-default padding-top:40px. With the
      page entry-header hidden on calc (page-id-80), this leaves
      empty white space between header bottom and the calc intro.
   2) PATCH 49 added a 3px brand-blue underline pseudo at
      bottom:-1px on every tab. On the ACTIVE tab \(which already
      has solid brand-blue bg + 10px border-radius\), the underline
      becomes a flat rectangular tail under the rounded corners
      that reads as a visual glitch. Hide the underline on active.
   ============================================================ */
body.page-id-80 .inside-article {
  padding-top: 0 !important;
}
.ns-calc__tab-btn.active::after {
  display: none !important;
  width: 0 !important;
}

/* ============================================================
   PATCH 100 — Breathing room between calc hero and tab buttons
   (2026-06-09). Hero bottom and tabs top were at the exact same
   y coordinate. Reconstitution button sat flush against the
   hero gradient's bottom edge. Add top margin so the tabs sit
   clearly below the hero with visual separation.
   ============================================================ */
.ns-calc {
  padding-top: 40px !important;
}
@media (max-width: 700px) {
  .ns-calc { padding-top: 28px !important; }
}

/* PATCH 100b — equal spacing above and below the calc tab row */
.ns-calc__tabs {
  margin-bottom: 40px !important;
}
@media (max-width: 700px) {
  .ns-calc__tabs { margin-bottom: 28px !important; }
}

/* ============================================================
   PATCH 101 — Partner-lander: dark header to match hero
   (2026-06-10). Partner page is dark-on-dark top to bottom: dark
   announce bar -> dark hero. The white header in between was
   visually breaking that flow. Make the header bg + nav text
   match the dark theme on partner-lander only.
   ============================================================ */
body.partner-lander header.site-header,
body.partner-lander .site-header {
  background: #0E1020 !important;
  border-bottom-color: rgba(255,255,255,0.06) !important;
}
body.partner-lander .site-header,
body.partner-lander .site-header a,
body.partner-lander .site-header .main-navigation a,
body.partner-lander .main-navigation .menu > li > a {
  color: rgba(255,255,255,0.92) !important;
}
body.partner-lander .main-navigation .menu > li > a:hover,
body.partner-lander .main-navigation .menu > li.current-menu-item > a {
  color: #fff !important;
}
/* Logo: invert dark logo on dark bg, or use white version */
body.partner-lander .site-logo img,
body.partner-lander .header-image {
  filter: invert(1) brightness(2);
}
/* Cart icon + currency switcher tweaks */
body.partner-lander .ns-mini-cart svg,
body.partner-lander .ns-currency-switcher {
  color: rgba(255,255,255,0.85) !important;
}

/* PATCH 101 REVERT — undo partner-lander dark header. The bg override
   was beaten by GP rules, leaving white text on white bg. */
body.partner-lander header.site-header,
body.partner-lander .site-header,
body.partner-lander .site-header a,
body.partner-lander .site-header .main-navigation a,
body.partner-lander .main-navigation .menu > li > a {
  background: initial !important;
  color: initial !important;
}
body.partner-lander .site-logo img,
body.partner-lander .header-image { filter: none !important; }

/* ============================================================
   PATCH 102 — Partner-lander right shift fix (2026-06-10)
   pl-main was rendering 24px narrower than its parent .site-content,
   pinned to the left edge so content appeared shifted with empty
   space on the right. Force pl-main + .site-content to fill width
   on partner pages so .pl-hero__inner can center properly.
   ============================================================ */
body.partner-lander .site-content,
body.partner-lander .content-area,
body.partner-lander main.pl-main {
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  float: none !important;
}

/* ============================================================
   PATCH 103 — Kill 20px header gap sitewide (2026-06-10)
   GeneratePress applies margin-top:20px to main.site-main by
   default. I had previously zeroed it per-template \(home, calc,
   partners\). Every other template still had the 20px white strip
   between header bottom and first content section.
   Universal: zero on all pages. Inner content pages \(terms,
   privacy, returns\) keep their .inside-article padding-top:40px
   for breathing room around the entry-header title.
   ============================================================ */
main.site-main {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* ============================================================
   PATCH 104 — Full-width container sitewide (2026-06-10)
   GeneratePress caps .site.grid-container at max-width:1240px and
   .site-content/.content-area follow it at 1192px. I previously
   killed this on body.home and body.partner-lander; shop, cat,
   calc, contact, all support pages still inherited the constraint
   so their hero/section bgs were bled full-bleed via PATCH 86's
   ::before pseudos but the actual page wrapper was 1240px.
   Make the page wrapper FULL width sitewide. Each section keeps
   its own .ns-section__inner / .ns-hero__inner max-width for
   inner content centering, so reading widths don't blow up.
   ============================================================ */
.site.grid-container,
div.site.grid-container.container.hfeed {
  max-width: 100% !important;
  padding: 0 !important;
}
.site-content,
.content-area {
  max-width: 100% !important;
  width: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
}
main.site-main,
main.pl-main {
  max-width: 100% !important;
  width: 100% !important;
}

/* ============================================================
   PATCH 105 — Partner hero polish (2026-06-12)
   - Calculator card: white bg, dark text, brand-blue accents
     (was glass-on-dark)
   - CTA microcopy under primary button
   - Social proof line
   - Janoshik + Finnrick credentials line
   - Calculator transparency fineprint
   - Visual treatment for the 20% / 60d / $100 stat row
   ============================================================ */

/* ── Calculator card: light theme ─────────────────────────── */
body.partner-lander .pl-hero__calc {
  background: #ffffff !important;
  border: 1px solid rgba(75,91,212,0.18) !important;
  box-shadow: 0 14px 40px rgba(75,91,212,0.18), 0 2px 8px rgba(14,16,32,0.06) !important;
}
body.partner-lander .pl-hero__calc-title {
  color: var(--pl-text-dark, #181A2C) !important;
}
body.partner-lander .pl-hero__calc-sub {
  color: var(--pl-text-dark-muted, #5C6282) !important;
}
body.partner-lander .pl-hero__calc-sub strong { color: var(--pl-blue, #4B5BD4) !important; }
body.partner-lander .pl-hero__calc .pl-field__label {
  color: var(--pl-text-dark, #181A2C) !important;
}
body.partner-lander .pl-hero__calc .pl-field__value {
  color: var(--pl-text-dark, #181A2C) !important;
  font-weight: 800 !important;
}
body.partner-lander .pl-hero__calc .pl-field__scale {
  color: var(--pl-text-dark-muted, #8B92B5) !important;
}
body.partner-lander .pl-hero__calc .pl-range::-webkit-slider-runnable-track {
  background: linear-gradient(to right, var(--pl-blue, #4B5BD4) 0%, var(--pl-blue, #4B5BD4) var(--fill, 50%), #E2E6F5 var(--fill, 50%), #E2E6F5 100%) !important;
}
body.partner-lander .pl-hero__calc .pl-range::-moz-range-track {
  background: #E2E6F5 !important;
}
body.partner-lander .pl-hero__calc .pl-range::-moz-range-progress {
  background: var(--pl-blue, #4B5BD4) !important;
}
body.partner-lander .pl-hero__calc .pl-hero__output {
  border-top: 1px solid rgba(75,91,212,0.10) !important;
}
body.partner-lander .pl-hero__calc .pl-hero__out-label {
  color: var(--pl-text-dark-muted, #5C6282) !important;
}
body.partner-lander .pl-hero__calc .pl-hero__out-value {
  color: var(--pl-blue, #4B5BD4) !important;
}
body.partner-lander .pl-hero__calc .pl-hero__out-value--ltv {
  color: var(--pl-text-dark, #181A2C) !important;
}
body.partner-lander .pl-hero__calc .pl-hero__out-caption {
  color: var(--pl-text-dark-muted, #5C6282) !important;
}
body.partner-lander .pl-hero__calc .pl-hero__comm-chip {
  background: rgba(75,91,212,0.06) !important;
  border-color: rgba(75,91,212,0.18) !important;
  color: var(--pl-text-dark-muted, #5C6282) !important;
}

/* Calculator transparency fineprint */
body.partner-lander .pl-hero__calc-fineprint {
  font-size: 11px;
  line-height: 1.5;
  font-style: italic;
  color: var(--pl-text-dark-muted, #5C6282);
  margin: 10px 0 0;
  padding-top: 10px;
  border-top: 1px dashed rgba(75,91,212,0.15);
  opacity: 0.85;
}

/* ── CTA microcopy ────────────────────────────────────────── */
body.partner-lander .pl-hero__cta-micro {
  margin: 12px 0 0;
  font-size: 12px;
  color: rgba(255,255,255,0.55);
  letter-spacing: 0.01em;
}

/* ── Janoshik + Finnrick credentials line ─────────────────── */
body.partner-lander .pl-hero__credentials {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 4px 0 18px;
  padding: 7px 14px 7px 10px;
  font-size: 12px;
  color: rgba(255,255,255,0.78);
  background: rgba(75,91,212,0.10);
  border: 1px solid rgba(75,91,212,0.28);
  border-radius: 999px;
}
body.partner-lander .pl-hero__credentials a {
  color: #fff;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-color: rgba(255,255,255,0.3);
  text-underline-offset: 2px;
}
body.partner-lander .pl-hero__credentials a:hover {
  text-decoration-color: rgba(255,255,255,0.8);
}
body.partner-lander .pl-hero__cred-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--pl-blue, #4B5BD4);
  color: #fff;
  flex-shrink: 0;
}

/* ── Social proof line ────────────────────────────────────── */
body.partner-lander .pl-hero__social {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
  margin: 18px 0 0;
  font-size: 12.5px;
  color: rgba(255,255,255,0.7);
  line-height: 1.5;
}
body.partner-lander .pl-hero__social strong {
  color: #fff;
  font-weight: 700;
}
body.partner-lander .pl-hero__social em {
  font-style: normal;
  color: rgba(255,255,255,0.88);
  font-weight: 600;
}
body.partner-lander .pl-hero__social-stars {
  color: #F4B73B;
  font-size: 13px;
  letter-spacing: 1px;
  flex-shrink: 0;
}

/* ── Stat row (20% / 60d / $100) visual treatment ────────── */
body.partner-lander .pl-hero__proof {
  display: flex !important;
  flex-direction: row !important;
  gap: 0 !important;
  list-style: none;
  padding: 0;
  margin: 28px 0 0 !important;
  flex-wrap: wrap;
}
body.partner-lander .pl-hero__proof li {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 4px 22px;
  font-size: 12px;
  color: rgba(255,255,255,0.6);
  letter-spacing: 0.02em;
  border-left: 1px solid rgba(255,255,255,0.12);
}
body.partner-lander .pl-hero__proof li:first-child {
  padding-left: 0;
  border-left: 0;
}
body.partner-lander .pl-hero__proof-num {
  display: block;
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 22px;
  line-height: 1;
  color: #fff;
  margin-bottom: 2px;
}

/* Mobile tweaks */
@media (max-width: 700px) {
  body.partner-lander .pl-hero__credentials { font-size: 11.5px; padding: 6px 12px 6px 8px; }
  body.partner-lander .pl-hero__cta-micro { font-size: 11px; }
  body.partner-lander .pl-hero__social { font-size: 11.5px; }
  body.partner-lander .pl-hero__proof li { padding: 4px 14px; }
  body.partner-lander .pl-hero__proof-num { font-size: 18px; }
}

/* ============================================================
   PATCH 106 — Partner hero polish round 2 (2026-06-12)
   - Side-by-side outputs on desktop with subtle divider
   - Slider polish: 6px track, gradient, larger thumb + shadow
   - Calc card padding 40px + consistent inner gaps
   - Button hover state
   - Subhead line-height tighten
   - Disclaimer text smaller / lower contrast
   - Social proof two-line typographic redesign with stars + rating
   - Killed pl-hero__credentials styles \(block removed from markup\)
   ============================================================ */

/* ── Calc card breathing room + sizing ────────────────────── */
body.partner-lander .pl-hero__calc {
  padding: 40px !important;
}
body.partner-lander .pl-hero__calc-title { margin-bottom: 8px !important; }
body.partner-lander .pl-hero__calc-sub   { margin-bottom: 32px !important; }
body.partner-lander .pl-hero__calc .pl-field { margin-bottom: 28px !important; }
body.partner-lander .pl-hero__calc .pl-field:last-of-type { margin-bottom: 0 !important; }

/* ── Side-by-side outputs on desktop ──────────────────────── */
body.partner-lander .pl-hero__outputs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  margin-top: 36px;
  padding-top: 28px;
  border-top: 1px solid rgba(75,91,212,0.10);
  position: relative;
}
body.partner-lander .pl-hero__outputs::before {
  content: '';
  position: absolute;
  top: 36px;
  bottom: 0;
  left: 50%;
  width: 1px;
  background: rgba(75,91,212,0.12);
}
body.partner-lander .pl-hero__outputs .pl-hero__output {
  padding-top: 0 !important;
  border-top: 0 !important;
  margin-top: 0 !important;
}
body.partner-lander .pl-hero__outputs .pl-hero__output--primary  { padding-right: 14px; }
body.partner-lander .pl-hero__outputs .pl-hero__output--secondary { padding-left: 14px; }

/* Monthly stays larger; LTV smaller + lighter to signal speculative status */
body.partner-lander .pl-hero__calc .pl-hero__out-value {
  font-size: clamp(38px, 4.2vw, 48px) !important;
}
body.partner-lander .pl-hero__calc .pl-hero__out-value--ltv {
  font-size: clamp(28px, 3vw, 36px) !important;
  font-weight: 700 !important;
  color: var(--pl-text-dark, #181A2C) !important;
}

/* Calc fineprint: smaller + lower contrast, sits below the outputs grid */
body.partner-lander .pl-hero__calc-fineprint {
  font-size: 11px !important;
  line-height: 1.55 !important;
  font-style: italic;
  color: var(--pl-text-dark-muted, #5C6282) !important;
  margin: 16px 0 0 !important;
  padding-top: 0 !important;
  border-top: 0 !important;
  opacity: 0.65 !important;
}

/* Mobile: stack outputs, hide divider */
@media (max-width: 1023px) {
  body.partner-lander .pl-hero__outputs {
    grid-template-columns: 1fr;
    gap: 22px;
  }
  body.partner-lander .pl-hero__outputs::before { display: none; }
  body.partner-lander .pl-hero__outputs .pl-hero__output--primary,
  body.partner-lander .pl-hero__outputs .pl-hero__output--secondary {
    padding-left: 0;
    padding-right: 0;
  }
  body.partner-lander .pl-hero__outputs .pl-hero__output--secondary {
    border-top: 1px solid rgba(75,91,212,0.10) !important;
    padding-top: 22px !important;
  }
}

/* ── Slider polish ─────────────────────────────────────────── */
body.partner-lander .pl-hero__calc .pl-range {
  height: 24px;
}
body.partner-lander .pl-hero__calc .pl-range::-webkit-slider-runnable-track {
  height: 6px !important;
  border-radius: 6px !important;
  background: linear-gradient(to right,
    #5C6CE0 0%,
    #4B5BD4 var(--fill, 50%),
    #E5E7EB var(--fill, 50%),
    #E5E7EB 100%) !important;
}
body.partner-lander .pl-hero__calc .pl-range::-moz-range-track {
  height: 6px !important;
  border-radius: 6px !important;
  background: #E5E7EB !important;
}
body.partner-lander .pl-hero__calc .pl-range::-moz-range-progress {
  height: 6px !important;
  border-radius: 6px !important;
  background: linear-gradient(to right, #5C6CE0, #4B5BD4) !important;
}
body.partner-lander .pl-hero__calc .pl-range::-webkit-slider-thumb {
  width: 20px !important;
  height: 20px !important;
  margin-top: -7px !important;
  background: #ffffff !important;
  border: 2px solid var(--pl-blue, #4B5BD4) !important;
  box-shadow: 0 2px 6px rgba(75,91,212,0.30), 0 0 0 4px rgba(75,91,212,0.08) !important;
  border-radius: 50% !important;
  cursor: pointer !important;
}
body.partner-lander .pl-hero__calc .pl-range::-moz-range-thumb {
  width: 20px !important;
  height: 20px !important;
  background: #ffffff !important;
  border: 2px solid var(--pl-blue, #4B5BD4) !important;
  box-shadow: 0 2px 6px rgba(75,91,212,0.30), 0 0 0 4px rgba(75,91,212,0.08) !important;
}
body.partner-lander .pl-hero__calc .pl-range:hover::-webkit-slider-thumb,
body.partner-lander .pl-hero__calc .pl-range:focus::-webkit-slider-thumb {
  transform: scale(1.1);
  box-shadow: 0 4px 10px rgba(75,91,212,0.40), 0 0 0 6px rgba(75,91,212,0.12) !important;
}

/* Field labels: uppercase tracking */
body.partner-lander .pl-hero__calc .pl-field__label {
  font-size: 11.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: var(--pl-text-dark-muted, #5C6282) !important;
}

/* ── Primary button hover state ──────────────────────────── */
body.partner-lander .pl-btn--primary {
  transition: background 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease !important;
  box-shadow: 0 4px 12px rgba(75,91,212,0.28);
}
body.partner-lander .pl-btn--primary:hover {
  background: #3D4DC5 !important;
  border-color: #3D4DC5 !important;
  transform: translateY(-1px);
  box-shadow: 0 8px 20px rgba(75,91,212,0.42) !important;
}
body.partner-lander .pl-btn--primary:active {
  transform: translateY(0);
}

/* ── Subhead line-height tighten ──────────────────────────── */
body.partner-lander .pl-hero__sub {
  line-height: 1.45 !important;
  max-width: 520px;
}
body.partner-lander .pl-hero__sub--proof {
  font-size: 12.5px !important;
  line-height: 1.55 !important;
  max-width: 540px;
  color: rgba(255,255,255,0.6) !important;
}

/* ── Social proof: two-line typographic block with stars + rating ─ */
body.partner-lander .pl-hero__social {
  margin: 22px 0 0 !important;
  padding: 16px 18px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
body.partner-lander .pl-hero__social-line {
  margin: 0 !important;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 10px;
  line-height: 1.4;
}
body.partner-lander .pl-hero__social-line--primary {
  font-size: 13.5px;
  color: rgba(255,255,255,0.92);
}
body.partner-lander .pl-hero__social-line--secondary {
  font-size: 12px;
  color: rgba(255,255,255,0.55);
}
body.partner-lander .pl-hero__social-stars {
  color: #F4B73B;
  font-size: 14px;
  letter-spacing: 1.5px;
  flex-shrink: 0;
}
body.partner-lander .pl-hero__social-rating {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800;
  font-size: 17px;
  color: #fff;
  letter-spacing: -0.01em;
}
body.partner-lander .pl-hero__social-meta strong {
  color: #fff;
  font-weight: 700;
}
body.partner-lander .pl-hero__social-line--secondary em {
  font-style: normal;
  color: rgba(255,255,255,0.82);
  font-weight: 600;
}

/* ── Already-a-partner link spacing nit ───────────────────── */
body.partner-lander .pl-hero__login {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

/* ============================================================
   PATCH 107 — Cart totals row padding (2026-06-12)
   Subtotal / Shipment / Total cell padding was 0, so labels
   butted the left container edge and values butted the right.
   Match the H2's existing 20px horizontal padding so the rows
   align with the rest of the totals card.
   ============================================================ */
.cart_totals .shop_table th,
.cart_totals .shop_table td {
  padding: 14px 20px !important;
}
/* Heading vertical rhythm matches the modal-to-modal gap */
.cart_totals > h2 {
  margin-top: 18px !important;
  margin-bottom: 0 !important;
}

/* PATCH 107b — beat the .woocommerce .cart_totals table th rule at line 10121
   that had padding: 10px 0 !important (more specific than PATCH 107) */
.woocommerce .cart_totals table th,
.woocommerce .cart_totals table td {
  padding: 14px 20px !important;
}
.woocommerce .cart_totals .order-total th,
.woocommerce .cart_totals .order-total td {
  padding: 16px 20px !important;
}

/* ============================================================
   PATCH 108 — Cart container closes at TOTAL row (2026-06-12)
   Wrap nudges + h2 + totals table in .ns-totals-card via the
   cart-totals.php override. .cart_totals becomes a transparent
   shell; the visible card styling moves to .ns-totals-card so
   the container closes after the TOTAL row. The proceed-to-
   checkout button and ns-cart-trust strip sit on the page bg
   below it, no visible container.
   ============================================================ */
.woocommerce .cart_totals,
.cart-collaterals .cart_totals {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
}
.cart_totals .ns-totals-card {
  background: #ffffff;
  border: 1px solid var(--ns-border, #E2E6F5);
  border-radius: 14px;
  box-shadow: 0 2px 12px rgba(75, 91, 212, 0.06);
  overflow: hidden;
}
/* Order-total row sits at the visual close of the card; keep its
   pale-blue fill but smooth its bottom into the card edge */
.cart_totals .ns-totals-card .shop_table {
  margin-bottom: 0 !important;
}
.cart_totals .ns-totals-card .shop_table .order-total th,
.cart_totals .ns-totals-card .shop_table .order-total td {
  border-bottom: 0 !important;
}

/* Proceed-to-checkout: same size button, NO container around it */
.cart_totals .wc-proceed-to-checkout {
  margin-top: 18px !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}
.cart_totals .wc-proceed-to-checkout .checkout-button,
.cart_totals .wc-proceed-to-checkout a.checkout-button {
  display: block !important;
  width: 100% !important;
}

/* Trust strip: stays, no visible container */
.cart_totals .ns-cart-trust {
  margin-top: 14px !important;
  padding: 14px 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

/* ============================================================
   PATCH 109; /calculator/ page width constraint
   PATCH 104 forced .content-area to 100% width sitewide. The
   calculator page (ID 80, default template) renders raw HTML
   blocks with no inner wrapper so it sprawled to viewport edge.
   Constrain the three structural sections to a centered column.
   ============================================================ */
.page-id-80 .ns-calc-intro,
.page-id-80 .ns-calc,
.page-id-80 .ns-calc-info-grid {
  max-width: 1100px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  padding-left: 20px !important;
  padding-right: 20px !important;
  box-sizing: border-box;
}
@media (max-width: 768px) {
  .page-id-80 .ns-calc-intro,
  .page-id-80 .ns-calc,
  .page-id-80 .ns-calc-info-grid {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
}

/* ============================================================
   PATCH 110; Shop category cards (replaces .ns-cat-pills)
   3-col card grid with icon + tag + name + blurb + count + arrow.
   Each card tinted by --cat-color; hover lift + colored border accent.
   ============================================================ */
.ns-shop-cats-section .ns-section-head--centered {
  text-align: center;
  max-width: 720px;
  margin: 0 auto 36px;
}
.ns-shop-cats-section .ns-section-head--centered .ns-section-head__title {
  margin-bottom: 8px;
}
.ns-shop-cats-section .ns-section-head--centered .ns-section-head__sub {
  margin: 0;
  color: var(--ns-text-muted, #6B7280);
}

.ns-cat-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}
@media (max-width: 1024px) {
  .ns-cat-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .ns-cat-cards { grid-template-columns: 1fr; gap: 14px; }
}

.ns-cat-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: #ffffff;
  border: 1px solid #E2E6F5;
  border-radius: 16px;
  padding: 26px 24px 22px;
  text-decoration: none;
  color: inherit;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
  overflow: hidden;
}
.ns-cat-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: var(--cat-color, #4B5BD4);
  opacity: .9;
}
.ns-cat-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 26px rgba(20, 25, 60, .08);
  border-color: var(--cat-color, #4B5BD4);
}

.ns-cat-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 14px;
  background: color-mix(in srgb, var(--cat-color, #4B5BD4) 10%, transparent);
  color: var(--cat-color, #4B5BD4);
  margin-bottom: 18px;
}
.ns-cat-card__icon svg { width: 32px; height: 32px; }

.ns-cat-card__tag {
  display: inline-block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--cat-color, #4B5BD4);
  background: color-mix(in srgb, var(--cat-color, #4B5BD4) 8%, transparent);
  padding: 4px 9px;
  border-radius: 999px;
  margin-bottom: 10px;
  align-self: flex-start;
}

.ns-cat-card__name {
  font-size: 19px;
  font-weight: 700;
  line-height: 1.25;
  margin: 0 0 8px;
  color: #0F172A;
}

.ns-cat-card__blurb {
  font-size: 14px;
  line-height: 1.55;
  color: #4B5563;
  margin: 0 0 22px;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.ns-cat-card__foot {
  margin-top: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 14px;
  border-top: 1px solid #EEF1FA;
}
.ns-cat-card__count {
  font-size: 13px;
  font-weight: 600;
  color: #6B7280;
}
.ns-cat-card__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--cat-color, #4B5BD4) 10%, transparent);
  color: var(--cat-color, #4B5BD4);
  transition: transform .18s ease, background .18s ease, color .18s ease;
}
.ns-cat-card:hover .ns-cat-card__arrow {
  background: var(--cat-color, #4B5BD4);
  color: #ffffff;
  transform: translateX(3px);
}

/* Section-level breathing room */
.ns-shop-cats-section {
  padding: 56px 0 64px;
  background: #F8FAFD;
}
@media (max-width: 640px) {
  .ns-shop-cats-section { padding: 40px 0 44px; }
}

/* ============================================================
   PATCH 111 (modahawk): show site title as text brand
   No logo image uploaded; override the .site-branding hide rule
   so MODAHAWK text renders in the header.
   ============================================================ */
.site-branding .main-title {
  display: block !important;
}
.site-branding .main-title a {
  font-size: 1.65rem !important;
  color: #0F172A !important;
}

/* ============================================================
   PATCH 112; modahawk affiliate stats + PDP highlight label
   ============================================================ */
.ns-aff-stats {
  display: flex;
  gap: 32px;
  justify-content: center;
  flex-wrap: wrap;
  list-style: none;
  margin: 36px 0 0;
  padding: 0;
}
.ns-aff-stats li {
  text-align: center;
  min-width: 120px;
}
.ns-aff-stats strong {
  display: block;
  font-size: 1.35rem;
  color: var(--ns-primary, #4B5BD4);
}
.ns-aff-stats span {
  display: block;
  font-size: 13px;
  color: #6B7280;
  margin-top: 4px;
}
.ns-pdp-benefits__label {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: #6B7280;
  margin: 0 0 10px;
}
.ns-aff-hero {
  padding-top: 48px;
}

/* ============================================================
   PATCH 113; homepage UX polish (grid, hero mobile, footer, bar)
   ============================================================ */

/* --- Announcement bar vs hero eyebrow (homepage only) --- */
body.home .ns-hero__eyebrow {
	display: none;
}
body.home .ns-shipping-bar {
	background: #f4f6fb;
	color: #4b5563;
	border-bottom: 1px solid #e5e7ef;
	font-size: 0.72rem;
	font-weight: 500;
	letter-spacing: 0.01em;
}
body.home .ns-shipping-bar strong {
	color: #1a1a2e;
}
body.home .ns-shipping-bar__close {
	color: #9ca3af;
}

/* --- Homepage section rhythm --- */
body.home .ns-home-categories {
	padding: 40px 0 32px;
}
body.home .ns-home-featured {
	padding: 44px 0 48px;
}
body.home .ns-home-categories__inner,
body.home .ns-home-featured__inner {
	max-width: 1120px;
	margin: 0 auto;
}
body.home .ns-home-cat-pills {
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
	justify-content: center;
	margin-top: 8px;
}
body.home .ns-home-featured__cta {
	text-align: center;
	margin-top: 32px;
}

/* --- Curated homepage product grid --- */
body.home .ns-home-products {
	display: grid !important;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 20px;
	list-style: none;
	margin: 28px 0 0;
	padding: 0;
}
body.home .ns-home-products::before,
body.home .ns-home-products::after {
	display: none !important;
}
body.home .ns-home-product {
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid #e8ebf2;
	border-radius: 14px;
	overflow: hidden;
	margin: 0 !important;
	padding: 0 !important;
	width: auto !important;
	float: none !important;
	box-shadow: 0 2px 10px rgba(15, 15, 35, 0.04);
	transition: box-shadow 0.2s ease, transform 0.2s ease;
}
body.home .ns-home-product:hover {
	box-shadow: 0 8px 24px rgba(75, 91, 212, 0.1);
	transform: translateY(-2px);
}
body.home .ns-home-product .woocommerce-LoopProduct-link {
	display: block;
	padding: 0;
	text-decoration: none;
	flex: 1;
}
body.home .ns-home-product__media {
	aspect-ratio: 1 / 1;
	background: #f7f8fc;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
body.home .ns-home-product__media img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	padding: 14px;
}
body.home .ns-home-product__fallback {
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	background: linear-gradient(145deg, #eef1fb 0%, #f8f9ff 55%, #eef0f8 100%);
	color: #4b5bd4;
}
body.home .ns-home-product__fallback-icon {
	opacity: 0.45;
}
body.home .ns-home-product .woocommerce-loop-product__title {
	font-size: 0.92rem;
	line-height: 1.35;
	padding: 14px 14px 6px;
	margin: 0;
	color: #1a1a2e;
}
body.home .ns-home-product .price {
	display: block;
	padding: 0 14px 12px;
	font-size: 0.95rem;
	font-weight: 700;
	color: #4b5bd4;
}
body.home .ns-home-product .button {
	display: block;
	margin: 0 14px 14px;
	width: calc(100% - 28px);
	text-align: center;
	border-radius: 8px;
	font-size: 0.78rem;
	padding: 10px 12px;
}

/* --- Hero mobile rebalance --- */
@media (max-width: 900px) {
	body.home .ns-hero {
		padding: 28px 0 24px;
	}
	body.home .ns-hero__inner {
		gap: 20px;
	}
	body.home .ns-hero__headline {
		font-size: clamp(1.65rem, 7vw, 2.1rem);
		line-height: 1.15;
	}
	body.home .ns-hero__sub {
		font-size: 0.92rem;
		margin-bottom: 16px;
	}
	body.home .ns-hero__ctas {
		gap: 10px;
	}
	body.home .ns-hero__ctas .ns-btn {
		flex: 1 1 calc(50% - 6px);
		min-width: 0;
		justify-content: center;
		padding: 11px 14px;
		font-size: 0.82rem;
	}
	body.home .ns-hero__proof {
		display: grid;
		grid-template-columns: 1fr;
		gap: 6px;
		margin-top: 14px;
		font-size: 0.78rem;
	}
	body.home .ns-hero__proof li {
		justify-content: flex-start;
	}
	body.home .ns-hero__showcase {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 10px;
		max-width: 420px;
		margin: 0 auto;
	}
	body.home .ns-hero__product:nth-child(n+3) {
		display: none;
	}
	body.home .ns-hero__product-img {
		min-height: 88px;
	}
	body.home .ns-hero__product-meta {
		padding: 8px 10px 10px;
	}
}

@media (max-width: 900px) {
	body.home .ns-home-categories {
		padding: 28px 0 20px;
	}
	body.home .ns-home-featured {
		padding: 28px 0 32px;
	}
	body.home .ns-home-products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 12px;
		margin-top: 18px;
	}
	body.home .ns-home-product .woocommerce-loop-product__title {
		font-size: 0.82rem;
		padding: 10px 10px 4px;
	}
	body.home .ns-home-product .price {
		font-size: 0.86rem;
		padding: 0 10px 8px;
	}
	body.home .ns-home-product .button {
		margin: 0 10px 10px;
		width: calc(100% - 20px);
		padding: 8px 10px;
		font-size: 0.72rem;
	}
	body.home #how-it-works {
		padding-top: 32px !important;
	}
	body.home .ns-section:has(.ns-faqs) {
		padding-top: 32px !important;
		padding-bottom: 36px !important;
	}
}

@media (min-width: 901px) and (max-width: 1100px) {
	body.home .ns-home-products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* --- Footer stack: lighter, less repetitive --- */
body.home .ns-footer-trust-band {
	padding: 18px 0;
	background: #1e2235;
	border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
body.home .ns-footer-trust-band__inner {
	gap: 16px 24px;
}
body.home .ns-footer-trust-item {
	font-size: 0.8rem;
	color: rgba(255, 255, 255, 0.62);
}
body.home .ns-footer-trust-item strong {
	font-weight: 600;
	color: rgba(255, 255, 255, 0.88);
}
body.home .ns-footer-hero {
	padding: 36px 0 32px;
	background: linear-gradient(180deg, #1a1d2e 0%, #171a28 100%);
}
body.home .ns-footer-hero::before {
	opacity: 0.35;
}
body.home .ns-footer-hero__title {
	font-size: clamp(1.35rem, 2.4vw, 1.85rem);
	line-height: 1.2;
	margin-bottom: 8px;
}
body.home .ns-footer-hero__sub {
	font-size: 0.88rem;
	opacity: 0.78;
	max-width: 36ch;
}
body.home .ns-footer-hero__btn {
	padding: 11px 18px;
	font-size: 0.82rem;
}
body.home .ns-footer-hero__stats {
	gap: 12px 18px;
	margin-top: 4px;
}
body.home .ns-footer-hero__stats > div {
	padding: 10px 12px;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.06);
	border-radius: 10px;
}
body.home .ns-footer-hero__stats strong {
	font-size: 1rem;
}
body.home .ns-footer-hero__stats span {
	font-size: 0.72rem;
	opacity: 0.7;
}
body.home .ns-footer-grid {
	padding: 32px 0 28px;
	background: #141724;
}
body.home .ns-footer-bottom {
	padding: 16px 0;
	background: #10131d;
	border-top: 1px solid rgba(255, 255, 255, 0.05);
}

@media (max-width: 768px) {
	body.home .ns-footer-trust-band {
		padding: 14px 0;
	}
	body.home .ns-footer-trust-band__inner {
		gap: 10px !important;
	}
	body.home .ns-footer-hero {
		padding: 24px 0 20px;
	}
	body.home .ns-footer-hero__inner {
		gap: 18px !important;
	}
	body.home .ns-footer-hero__stats {
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 8px;
		width: 100%;
	}
	body.home .ns-footer-hero__stats > div {
		padding: 8px 6px;
		text-align: center;
	}
	body.home .ns-footer-hero__stats strong {
		font-size: 0.92rem;
	}
	body.home .ns-footer-hero__stats span {
		font-size: 0.65rem;
		line-height: 1.25;
	}
	body.home .ns-footer-grid {
		padding: 24px 0 20px;
	}
	body.home .ns-footer-bottom {
		padding: 12px 0 14px;
	}
}
/* ============================================================
   PATCH 114 (modahawk); Partner page hero dark treatment
   Modahawk's partner-lander.php uses .ns-aff-hero (centered, single-col).
   Give it the visual weight of northstate's .pl-hero: dark navy bg, white
   text, larger h1, stronger spacing. Keep the simplified structure.
   ============================================================ */
.ns-aff-hero {
  background: linear-gradient(180deg, #0E1020 0%, #14172a 100%) !important;
  color: #ffffff;
  padding: 90px 0 100px !important;
  position: relative;
  overflow: hidden;
  min-height: 520px;
  display: flex;
  align-items: center;
}
.ns-aff-hero .ns-section__inner {
  position: relative;
  z-index: 2;
}
.ns-aff-hero .ns-hero__eyebrow {
  color: #b6bee0;
  letter-spacing: 0.08em;
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  margin-bottom: 14px;
  display: inline-block;
}
.ns-aff-hero .ns-section__title {
  color: #ffffff !important;
  font-size: clamp(2.4rem, 5vw, 4rem) !important;
  line-height: 1.05 !important;
  letter-spacing: -0.96px !important;
  font-weight: 700 !important;
  margin: 0 0 18px !important;
}
.ns-aff-hero .ns-section__sub {
  color: rgba(255,255,255,0.78) !important;
  font-size: 1.05rem;
  line-height: 1.55;
  max-width: 620px;
  margin: 0 auto 32px !important;
}
.ns-aff-hero .ns-hero__ctas {
  margin-bottom: 32px;
}
.ns-aff-hero .ns-aff-stats {
  margin-top: 44px !important;
  border-top: 1px solid rgba(255,255,255,0.08);
  padding-top: 32px;
}
.ns-aff-hero .ns-aff-stats strong {
  color: #ffffff !important;
  font-size: 1.6rem !important;
  font-weight: 700;
}
.ns-aff-hero .ns-aff-stats span {
  color: rgba(255,255,255,0.55) !important;
  font-size: 12px !important;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-top: 6px;
}
.ns-aff-hero .ns-btn-outline {
  border: 1px solid rgba(255,255,255,0.25) !important;
  color: #ffffff !important;
  background: transparent !important;
}
.ns-aff-hero .ns-btn-outline:hover {
  background: rgba(255,255,255,0.08) !important;
  border-color: rgba(255,255,255,0.4) !important;
}
.ns-aff-hero .ns-btn-accent {
  background: #4B5BD4 !important;
  color: #ffffff !important;
  border: 0 !important;
}
.ns-aff-hero .ns-btn-accent:hover {
  background: #5B6BE4 !important;
}
@media (max-width: 768px) {
  .ns-aff-hero {
    padding: 56px 0 64px !important;
    min-height: 0;
  }
  .ns-aff-hero .ns-aff-stats {
    gap: 18px !important;
    padding-top: 24px;
  }
  .ns-aff-hero .ns-aff-stats strong {
    font-size: 1.25rem !important;
  }
}

/* ============================================================
   PATCH 115 (modahawk); Typography pass — h1/h2 sizing + tracking
   Match northstate's scale: h1 64px, h2 52px, h1 letter-spacing -0.96px
   ============================================================ */
.ns-page-hero .ns-page-hero__title,
.ns-page-hero__title {
  font-size: clamp(2.4rem, 5vw, 4rem) !important;
  line-height: 1.05 !important;
  letter-spacing: -0.96px !important;
}
.ns-section-head__title,
.ns-section .ns-section__title,
section h2.ns-section__title {
  font-size: clamp(1.8rem, 3.6vw, 3.25rem) !important;
  letter-spacing: -0.52px !important;
  line-height: 1.05 !important;
  font-weight: 700 !important;
}
/* PATCH 114 partner hero already overrides .ns-aff-hero .ns-section__title — that wins */

/* ============================================================
   PATCH 116 (modahawk); Uniform product card heights
   First row of shop loop renders shorter than later rows because short
   titles don't push card height. Force flex stretch + min-height for
   the price/button block to keep heights aligned.
   ============================================================ */
.woocommerce ul.products,
.products.columns-3,
.products.columns-4 {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  align-items: stretch !important;
}
@media (max-width: 900px) {
  .woocommerce ul.products,
  .products.columns-3,
  .products.columns-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
  }
}
.woocommerce ul.products li.product,
.products li.product {
  display: flex !important;
  flex-direction: column;
  width: auto !important;
  margin: 0 !important;
  float: none !important;
}
.woocommerce ul.products li.product .woocommerce-LoopProduct-link,
.products li.product .woocommerce-LoopProduct-link {
  flex: 1;
  display: flex;
  flex-direction: column;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.products li.product .woocommerce-loop-product__title {
  min-height: 2.6em;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.woocommerce ul.products li.product .price,
.products li.product .price {
  margin-top: auto;
}

/* ============================================================
   PATCH 117 (modahawk); Footer hero stats — bigger numbers
   Values are correct in functions.php; styling is too small.
   Mirror northstate's prominent stat treatment.
   ============================================================ */
.ns-footer-hero__stats {
  display: flex !important;
  gap: 28px !important;
  flex-wrap: wrap;
  margin-top: 12px !important;
}
.ns-footer-hero__stats > div {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  padding: 0 !important;
  text-align: left;
}
.ns-footer-hero__stats > div strong {
  display: block;
  font-size: 2rem !important;
  font-weight: 700;
  color: #ffffff;
  line-height: 1;
  margin-bottom: 6px;
}
.ns-footer-hero__stats > div span {
  display: block;
  font-size: 11px !important;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: rgba(255,255,255,0.55);
  line-height: 1.3;
}
@media (max-width: 768px) {
  .ns-footer-hero__stats {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px !important;
  }
  .ns-footer-hero__stats > div {
    text-align: center;
  }
  .ns-footer-hero__stats > div strong {
    font-size: 1.35rem !important;
  }
  .ns-footer-hero__stats > div span {
    font-size: 10px !important;
  }
}

/* ============================================================
   PATCH 118 (modahawk); Shop category section polish
   When few categories exist, center the cards and give the section
   intentional empty-space rather than looking under-filled.
   ============================================================ */
.ns-shop-cats-section .ns-cat-cards {
  justify-content: center;
}
.ns-cat-cards:has(.ns-cat-card:nth-child(-n+2):last-child),
.ns-cat-cards:has(.ns-cat-card:nth-child(1):last-child),
.ns-cat-cards:has(.ns-cat-card:nth-child(2):last-child) {
  grid-template-columns: repeat(2, minmax(280px, 360px)) !important;
  justify-content: center !important;
}

/* ============================================================
   PATCH 119 (modahawk); Trust band consistent dark treatment
   The home page (PATCH 113) styles .ns-footer-trust-band with a navy bg.
   Apply the same treatment site-wide so non-home pages match.
   ============================================================ */
.ns-footer-trust-band {
  background: #1e2235 !important;
  padding: 18px 0 !important;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.ns-footer-trust-band__inner {
  gap: 16px 24px;
}
.ns-footer-trust-item {
  font-size: 0.82rem;
  color: rgba(255,255,255,0.62);
}
.ns-footer-trust-item strong {
  font-weight: 600;
  color: rgba(255,255,255,0.88);
}

/* ============================================================
   PATCH 120 (modahawk); HOMEPAGE Best Sellers — Add to Cart
   PATCH 113 styled .ns-home-product .button layout but didn't
   set background — default WC grey was winning. Match the
   brand blue used by shop-page product cards.
   ============================================================ */
body.home .ns-home-product .button,
body.home .ns-home-product .button.add_to_cart_button,
body.home .ns-home-product a.button {
  background: #4B5BD4 !important;
  background-image: linear-gradient(180deg, #5B6BE4 0%, #4B5BD4 100%) !important;
  color: #ffffff !important;
  border: 0 !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em;
  box-shadow: 0 1px 0 rgba(255,255,255,0.15) inset, 0 1px 2px rgba(15,15,35,0.12);
  transition: background-image .15s ease, transform .12s ease, box-shadow .15s ease !important;
}
body.home .ns-home-product .button:hover,
body.home .ns-home-product a.button:hover {
  background-image: linear-gradient(180deg, #6373EC 0%, #5564DC 100%) !important;
  box-shadow: 0 1px 0 rgba(255,255,255,0.18) inset, 0 4px 10px rgba(75,91,212,0.25);
  transform: translateY(-1px);
}
body.home .ns-home-product .button:active,
body.home .ns-home-product a.button:active {
  transform: translateY(0);
  box-shadow: 0 1px 0 rgba(255,255,255,0.12) inset, 0 1px 2px rgba(15,15,35,0.18);
}

/* ============================================================
   PATCH 121 (modahawk); Comprehensive button + alignment sweep
   Catches: cart upsells (wp-block-button), pink accent button bg,
   home category pills (visual weight), about entry-content width,
   global Add to Cart unification.
   ============================================================ */

/* --- 121.A: GLOBAL Add to Cart — every variant of WC button ---
   Includes wp-block-button (cart upsells), wc-block-grid (cart upsells),
   .button.product_type_simple/variable (loops), .single_add_to_cart_button (PDP). */
.wp-block-button__link.add_to_cart_button,
.wc-block-grid__product-add-to-cart .wp-block-button__link,
.wc-block-grid__product-add-to-cart a.wp-block-button__link,
ul.products li.product .button,
.products li.product a.button,
.products li.product .button.add_to_cart_button,
a.button.add_to_cart_button,
button.single_add_to_cart_button,
.single_add_to_cart_button {
  background: #4B5BD4 !important;
  background-image: linear-gradient(180deg, #5B6BE4 0%, #4B5BD4 100%) !important;
  color: #ffffff !important;
  border: 0 !important;
  border-radius: 8px !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em;
  padding: 10px 16px !important;
  box-shadow: 0 1px 0 rgba(255,255,255,0.15) inset, 0 1px 2px rgba(15,15,35,0.12);
  transition: background-image .15s ease, transform .12s ease, box-shadow .15s ease !important;
}
.wp-block-button__link.add_to_cart_button:hover,
.wc-block-grid__product-add-to-cart a.wp-block-button__link:hover,
ul.products li.product .button:hover,
a.button.add_to_cart_button:hover,
.single_add_to_cart_button:hover {
  background-image: linear-gradient(180deg, #6373EC 0%, #5564DC 100%) !important;
  box-shadow: 0 1px 0 rgba(255,255,255,0.18) inset, 0 4px 10px rgba(75,91,212,0.25);
  transform: translateY(-1px);
}

/* --- 121.B: .ns-btn-accent — northstate's pink; on modahawk make it
   a distinct darker blue so it still pops vs primary but stays on brand --- */
.ns-btn-accent,
a.ns-btn-accent,
button.ns-btn-accent {
  background: #2E3A9E !important;
  background-image: linear-gradient(180deg, #3E4AAE 0%, #2E3A9E 100%) !important;
  color: #ffffff !important;
  border: 0 !important;
}
.ns-btn-accent:hover,
a.ns-btn-accent:hover {
  background-image: linear-gradient(180deg, #4452BE 0%, #3441AE 100%) !important;
}

/* --- 121.C: Home "Shop by category" pills — give them visual weight --- */
body.home .ns-home-cat-pills {
  display: flex !important;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 28px !important;
}
body.home .ns-home-cat-pills .ns-btn,
body.home .ns-home-cat-pills a.ns-btn {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-width: 200px;
  padding: 18px 28px !important;
  border-radius: 12px !important;
  font-size: 1rem !important;
  font-weight: 600 !important;
  background: #ffffff !important;
  border: 1px solid #E2E6F5 !important;
  color: #1a1a2e !important;
  box-shadow: 0 1px 2px rgba(15,15,35,0.04);
  transition: border-color .15s ease, box-shadow .15s ease, transform .12s ease !important;
}
body.home .ns-home-cat-pills .ns-btn:hover {
  border-color: #4B5BD4 !important;
  color: #4B5BD4 !important;
  box-shadow: 0 6px 18px rgba(75,91,212,0.12);
  transform: translateY(-1px);
}
@media (max-width: 640px) {
  body.home .ns-home-cat-pills .ns-btn {
    min-width: 140px;
    padding: 14px 20px !important;
    font-size: 0.9rem !important;
  }
}

/* --- 121.D: Home featured product titles — bump from 14.4px --- */
body.home .ns-home-product .woocommerce-loop-product__title,
body.home .ns-home-product h2.woocommerce-loop-product__title,
body.home .ns-home-product h3.woocommerce-loop-product__title {
  font-size: 1rem !important;
  font-weight: 600 !important;
  line-height: 1.3 !important;
  padding: 14px 14px 6px !important;
  color: #1a1a2e !important;
}

/* --- 121.E: Cart upsell ("New in store") product titles — readable --- */
.wc-block-grid__product .wc-block-grid__product-title,
.wc-block-grid__product-title {
  font-size: 0.95rem !important;
  font-weight: 600 !important;
  margin: 12px 0 6px !important;
  color: #1a1a2e !important;
}
.wc-block-grid__product-price,
.wc-block-grid__product .wc-block-grid__product-price {
  font-size: 0.95rem !important;
  color: #4B5BD4 !important;
  font-weight: 700 !important;
  display: block;
  margin-bottom: 10px;
}

/* --- 121.F: About entry-content width constraint --- */
.page-template-default .entry-content,
.page-id-16 .entry-content,
body.page .ns-section__inner .entry-content {
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}

/* --- 121.G: Home Best Sellers — slight card polish (consistency w/ shop) --- */
body.home .ns-home-product {
  border-radius: 14px;
  overflow: hidden;
}
body.home .ns-home-product .price {
  font-size: 1rem !important;
  padding: 0 14px 14px !important;
}

/* ============================================================
   PATCH 122 (modahawk); Disable northstate "branded fallback"
   gradient on placeholder-image product cards
   Theme rule at line 14228 applied a dark navy gradient + faint
   "NORTHSTATE" text overlay to cards lacking attachment-woocommerce_thumbnail
   class. Modahawk placeholder uses .woocommerce-placeholder which matches
   the negative selector — causing dark navy bars + brand leak.
   ============================================================ */
ul.products li.product:not(:has(img.attachment-woocommerce_thumbnail)) .woocommerce-LoopProduct-link {
  background: transparent !important;
  background-image: none !important;
  min-height: 0 !important;
}
ul.products li.product:not(:has(img.attachment-woocommerce_thumbnail)) .woocommerce-LoopProduct-link::after {
  content: none !important;
  display: none !important;
}
/* Also for placeholder image itself — make it visible & on-brand */
img.woocommerce-placeholder,
img.wp-post-image.woocommerce-placeholder {
  background: #F7F8FC;
  opacity: 0.85;
}

/* ============================================================
   PATCH 123 (modahawk); HOMEPAGE Best Sellers — card redesign
   Goal: match the clean centered ModaMike layout. Centers all
   card content, insets the product image in a soft rounded tile,
   adds a category eyebrow, formats the price as "From $XX", and
   turns the Add to Cart button into a centered brand pill.
   Supersedes the left-aligned styling in the original block +
   PATCH 121.D / 121.G.
   ============================================================ */

/* --- 123.A: card shell — center everything, even spacing --- */
body.home .ns-home-product {
  text-align: center !important;
  padding: 0 0 18px !important;
  border: 1px solid #ECEFF7 !important;
  border-radius: 16px !important;
}
body.home .ns-home-product .woocommerce-LoopProduct-link {
  display: flex !important;
  flex-direction: column;
  align-items: center;
}

/* --- 123.B: image tile — inset, soft lavender, contained --- */
body.home .ns-home-product__media {
  width: calc(100% - 32px) !important;
  margin: 16px 16px 0 !important;
  aspect-ratio: 1 / 1;
  background: #F4F6FC !important;
  border-radius: 14px !important;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
body.home .ns-home-product__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 20px !important;
  mix-blend-mode: multiply; /* drops the white photo backdrop into the tile */
}

/* --- 123.C: info block — centered stack with breathing room --- */
body.home .ns-home-product__info {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 16px 16px 4px !important;
  width: 100%;
}

/* --- 123.D: category eyebrow --- */
body.home .ns-home-product__eyebrow {
  font-size: 0.68rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #9aa1b8 !important;
  line-height: 1;
}

/* --- 123.E: title — centered, bold navy, 2-line clamp for even heights --- */
body.home .ns-home-product .woocommerce-loop-product__title,
body.home .ns-home-product h2.woocommerce-loop-product__title,
body.home .ns-home-product h3.woocommerce-loop-product__title {
  font-size: 1.02rem !important;
  font-weight: 700 !important;
  line-height: 1.3 !important;
  letter-spacing: -0.01em;
  padding: 0 !important;
  margin: 0 !important;
  color: #16203A !important;
  min-height: 2.6em; /* reserve 2 lines so prices/buttons align across cards */
  display: flex;
  align-items: center;
  justify-content: center;
}

/* --- 123.F: price — "From" muted, amount bold navy --- */
body.home .ns-home-product .price {
  display: flex !important;
  align-items: baseline;
  justify-content: center;
  gap: 6px;
  padding: 4px 0 0 !important;
  margin: 0 !important;
  color: #16203A !important;
}
body.home .ns-home-product__from {
  font-size: 0.82rem;
  font-weight: 500;
  color: #6B7187;
}
body.home .ns-home-product__amount,
body.home .ns-home-product__amount .amount,
body.home .ns-home-product .price .amount {
  font-size: 1.18rem !important;
  font-weight: 800 !important;
  color: #1E2A77 !important;
}

/* --- 123.G: Add to Cart — centered brand pill --- */
body.home .ns-home-product .button,
body.home .ns-home-product .button.add_to_cart_button,
body.home .ns-home-product a.button {
  margin: 16px 18px 0 !important;
  width: calc(100% - 36px) !important;
  border-radius: 999px !important;
  font-size: 0.86rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.01em;
  padding: 12px 16px !important;
}

/* --- 123.H: responsive — keep the same shape on tablet/mobile --- */
@media (max-width: 900px) {
  body.home .ns-home-product__media {
    width: calc(100% - 24px) !important;
    margin: 12px 12px 0 !important;
  }
  body.home .ns-home-product__info {
    padding: 12px 12px 4px !important;
  }
  body.home .ns-home-product .woocommerce-loop-product__title {
    font-size: 0.92rem !important;
    min-height: 2.5em;
  }
  body.home .ns-home-product__amount,
  body.home .ns-home-product .price .amount {
    font-size: 1.05rem !important;
  }
  body.home .ns-home-product .button {
    margin: 12px 12px 0 !important;
    width: calc(100% - 24px) !important;
    font-size: 0.8rem !important;
    padding: 11px 14px !important;
  }
}

/* --- 123.I (follow-up): keep Add to Cart on one line in narrow mobile cards --- */
body.home .ns-home-product .button,
body.home .ns-home-product a.button {
  white-space: nowrap;
}
@media (max-width: 480px) {
  body.home .ns-home-product .button {
    margin: 12px 8px 0 !important;
    width: calc(100% - 16px) !important;
    padding: 11px 8px !important;
    font-size: 0.76rem !important;
    letter-spacing: 0 !important;
  }
}

/* ============================================================
   PATCH 124 (modahawk); SITEWIDE product-card unification
   Rolls the homepage Best Sellers card design out to every
   product loop (shop, category, search, related, cross-sells)
   and the homepage hero showcase, so all product cards match.
   Also REVERTS the Best Sellers Add to Cart button from the
   PATCH 123 pill back to the original 8px brand rectangle, and
   guarantees padding below every card button.
   Companion PHP: functions.php "3.1b" (eyebrow + From price +
   .ns-loop-media wrapper) and homepage hero markup.
   ============================================================ */

/* ---------- 124.A: revert Best Sellers button to original ---------- */
body.home .ns-home-product .button,
body.home .ns-home-product .button.add_to_cart_button,
body.home .ns-home-product a.button {
  border-radius: 8px !important;          /* was 999px pill in 123.G */
  white-space: normal !important;          /* was nowrap in 123.I */
  letter-spacing: 0.02em !important;
  font-size: 0.84rem !important;
  padding: 11px 16px !important;
  margin: 16px 16px 0 !important;
  width: calc(100% - 32px) !important;
}
/* keep clear padding beneath the button */
body.home .ns-home-product {
  padding-bottom: 18px !important;
}

/* ---------- 124.B: shared price tokens (shop + hero) ---------- */
.ns-price-from {
  font-size: 0.82rem;
  font-weight: 500;
  color: #6B7187;
}
.ns-price-amount,
.ns-price-amount .amount {
  font-weight: 800;
  color: #1E2A77;
}

/* ---------- 124.C: shop / category / related / cross-sell cards ---------- */
ul.products li.product {
  text-align: center !important;
  background: #ffffff !important;
  border: 1px solid #ECEFF7 !important;
  border-radius: 16px !important;
  padding: 0 0 18px !important;          /* padding below the button */
  overflow: hidden;
  box-shadow: 0 2px 10px rgba(15, 15, 35, 0.04);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}
ul.products li.product:hover {
  box-shadow: 0 8px 24px rgba(75, 91, 212, 0.10);
  transform: translateY(-2px);
}
ul.products li.product > a.woocommerce-LoopProduct-link {
  display: block !important;
  text-decoration: none;
}

/* inset image tile (mirrors .ns-home-product__media) */
ul.products li.product .ns-loop-media {
  position: relative;
  width: calc(100% - 32px);
  margin: 16px 16px 0;
  aspect-ratio: 1 / 1;
  background: #F4F6FC;
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
ul.products li.product .ns-loop-media img {
  width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
  object-fit: contain !important;
  padding: 18px;
  mix-blend-mode: multiply;   /* drops white photo backdrops into the tile */
}
ul.products li.product .ns-loop-media .onsale {
  position: absolute;
  top: 8px;
  left: 8px;
  margin: 0;
  z-index: 2;
}

/* category eyebrow */
ul.products li.product .ns-loop-eyebrow {
  display: block;
  margin: 14px 14px 0;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #9aa1b8;
  line-height: 1;
}

/* title */
ul.products li.product .woocommerce-loop-product__title {
  font-size: 1.02rem !important;
  font-weight: 700 !important;
  line-height: 1.3 !important;
  letter-spacing: -0.01em;
  color: #16203A !important;
  padding: 6px 14px 0 !important;
  margin: 0 !important;
  min-height: 2.6em;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* price */
ul.products li.product .price {
  display: flex !important;
  align-items: baseline;
  justify-content: center;
  gap: 6px;
  padding: 4px 14px 0 !important;
  margin: 0 !important;
  color: #16203A !important;
  font-size: inherit !important;
}
ul.products li.product .price .ns-price-amount,
ul.products li.product .price .ns-price-amount .amount,
ul.products li.product .price > .amount {
  font-size: 1.18rem !important;
}
/* del/ins for on-sale simple products stay tidy */
ul.products li.product .price del { opacity: 0.5; font-weight: 500; margin-right: 4px; }
ul.products li.product .price ins { text-decoration: none; }

/* Add to Cart — original brand rectangle, centered, with space below */
ul.products li.product .button,
ul.products li.product a.button,
ul.products li.product .button.add_to_cart_button {
  display: block !important;
  float: none !important;
  margin: 16px 16px 0 !important;
  width: calc(100% - 32px) !important;
  text-align: center;
  border-radius: 8px !important;
  font-size: 0.84rem !important;
  font-weight: 600 !important;
  padding: 11px 16px !important;
}

/* loading / added states keep the pill from looking broken */
ul.products li.product .added_to_cart {
  display: block;
  margin: 8px 16px 0;
  font-size: 0.78rem;
  text-align: center;
  color: #4B5BD4;
}

/* ---------- 124.D: homepage hero showcase — match the language ---------- */
body.home .ns-hero__product-img img {
  object-fit: contain !important;
  padding: 12px;
  mix-blend-mode: multiply;
}
body.home .ns-hero__product-meta {
  grid-template-areas: 'eyebrow arrow' 'name arrow' 'price arrow' !important;
}
body.home .ns-hero__product-eyebrow {
  grid-area: eyebrow;
  font-size: 0.6rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #9aa1b8;
  line-height: 1;
  margin-bottom: 3px;
}
body.home .ns-hero__product-price .ns-price-amount,
body.home .ns-hero__product-price .ns-price-amount .amount {
  font-size: 0.9rem !important;
}
body.home .ns-hero__product-price .ns-price-from {
  font-size: 0.74rem;
}

/* ---------- 124.E: responsive ---------- */
@media (max-width: 900px) {
  ul.products li.product .ns-loop-media {
    width: calc(100% - 24px);
    margin: 12px 12px 0;
  }
  ul.products li.product .ns-loop-eyebrow {
    margin: 12px 12px 0;
  }
  ul.products li.product .woocommerce-loop-product__title {
    font-size: 0.92rem !important;
    min-height: 2.5em;
    padding: 6px 12px 0 !important;
  }
  ul.products li.product .price .ns-price-amount,
  ul.products li.product .price > .amount {
    font-size: 1.05rem !important;
  }
  ul.products li.product .button {
    margin: 12px 12px 0 !important;
    width: calc(100% - 24px) !important;
    font-size: 0.8rem !important;
    padding: 10px 12px !important;
  }
}

/* ---------- 124.F: category archive cards — match sitewide card DNA ----------
   The category template (taxonomy-product_cat.php) uses bespoke .ns-cat-card
   teasers ("View product" CTA). Harmonize their visuals with the shop/Best
   Sellers card: centered, inset contained image tile, eyebrow, From price. */
.ns-cat-card__img {
  aspect-ratio: 1 / 1 !important;
  width: calc(100% - 32px) !important;
  margin: 16px 16px 0 !important;
  border-radius: 14px !important;
  background: #F4F6FC !important;
  overflow: hidden !important;
}
.ns-cat-card__img-el {
  object-fit: contain !important;
  padding: 18px !important;
  mix-blend-mode: multiply;
}
.ns-cat-card__body {
  text-align: center !important;
  align-items: center !important;
}
.ns-cat-card__eyebrow {
  display: block;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #9aa1b8;
  line-height: 1;
  margin-bottom: 2px;
}
.ns-cat-card__name {
  letter-spacing: -0.01em;
  color: #16203A !important;
}
.ns-cat-card__price {
  display: flex !important;
  align-items: baseline;
  justify-content: center;
  gap: 6px;
}
.ns-cat-card__price .ns-price-amount,
.ns-cat-card__price .ns-price-amount .amount {
  font-size: 1.18rem !important;
  font-weight: 800 !important;
  color: #1E2A77 !important;
}
.ns-cat-card__price .ns-price-from {
  color: #6B7187 !important;
}
.ns-cat-card__cta {
  justify-content: center !important;
}
.ns-cat-card__badge {
  position: absolute;
  top: 8px;
  left: 8px;
  z-index: 2;
}

/* ---------- 124.G: home Best Sellers mobile button — keep on one line ----------
   124.A set the reverted rectangle button to 0.84rem at all widths; in the
   2-col mobile grid that wraps "Add to Cart". Match the shop card sizing. */
@media (max-width: 560px) {
  body.home .ns-home-product .button,
  body.home .ns-home-product a.button {
    margin: 14px 12px 0 !important;
    width: calc(100% - 24px) !important;
    font-size: 0.74rem !important;
    letter-spacing: 0 !important;
    padding: 10px 8px !important;
  }
}

/* ---------- 124.H: outrank 124.E for the home Best Sellers mobile button ----------
   124.E (ul.products li.product .button) is more specific than 124.G and was
   forcing 0.8rem, still wrapping "Add to Cart" in the 2-col mobile grid.
   Higher-specificity selector + nowrap guarantees a single line. */
@media (max-width: 560px) {
  body.home ul.products li.ns-home-product .button,
  body.home ul.products li.ns-home-product a.button {
    font-size: 0.72rem !important;
    letter-spacing: 0 !important;
    padding: 10px 8px !important;
    margin: 14px 12px 0 !important;
    width: calc(100% - 24px) !important;
    white-space: nowrap !important;
  }
}

/* ============================================================
   PATCH 125 (modahawk); product-card vertical rhythm
   Two fixes requested on the card layout, applied sitewide
   (homepage Best Sellers, hero, shop/category/related):
     1. Tighten the gap between the eyebrow and the title.
     2. Vertically center the price in the space between the
        title and the Add-to-Cart / View-product button.
   Drops the 2-line title reserve + flex centering box from
   PATCH 123/124 (it created the big eyebrow->title gap) and
   uses auto margins on .price to center it; the clickable
   area now flex-grows so the button stays bottom-anchored.
   ============================================================ */

/* --- clickable area fills the card so price centers + button sits at bottom --- */
ul.products li.product > a.woocommerce-LoopProduct-link {
  display: flex !important;
  flex-direction: column;
  align-items: center;
  flex: 1 1 auto !important;
  width: 100%;
}
ul.products li.product .ns-loop-media,
body.home .ns-home-product__media {
  flex: 0 0 auto !important;
}

/* home cards have an extra info wrapper that must grow to host the centered price */
body.home .ns-home-product__info {
  display: flex !important;
  flex-direction: column;
  align-items: center;
  flex: 1 1 auto !important;
  width: 100%;
  gap: 0 !important;
  padding: 14px 16px 0 !important;
}

/* --- 1. tight eyebrow -> title --- */
ul.products li.product .ns-loop-eyebrow {
  margin: 14px 14px 5px !important;
}
body.home .ns-home-product__eyebrow {
  margin: 0 0 5px !important;
}

/* --- title: no 2-line reserve, no centering box (so it hugs the eyebrow) --- */
ul.products li.product .woocommerce-loop-product__title,
body.home ul.products li.ns-home-product .woocommerce-loop-product__title {
  min-height: 0 !important;
  display: block !important;
  align-items: initial !important;
  margin: 0 !important;
  padding: 0 14px !important;
}

/* --- 2. price centered between title and button --- */
ul.products li.product .price,
body.home .ns-home-product__info .price {
  margin: auto 0 !important;
  padding: 14px 14px !important;
}

/* --- category cards: same rhythm (price centered, CTA stays at the bottom) --- */
.ns-cat-card {
  display: flex !important;
  flex-direction: column;
}
.ns-cat-card__img {
  flex: 0 0 auto !important;
}
.ns-cat-card__body {
  display: flex !important;
  flex-direction: column;
  align-items: center;
  flex: 1 1 auto !important;
  gap: 0 !important;
}
.ns-cat-card__eyebrow {
  margin: 0 0 5px !important;
}
.ns-cat-card__name {
  margin: 0 !important;
}
.ns-cat-card__price {
  margin: auto 0 !important;
  padding: 14px 0 !important;
}
.ns-cat-card__cta {
  margin-top: 0 !important;
}

/* ---------- 125.B: price spacing — explicit & symmetric ----------
   The square media tile fills the card, leaving no vertical slack, so the
   auto-margin centering from 125 collapsed (price jammed under the title).
   Use equal padding above/below the price and zero the button's top margin
   so title->price and price->button gaps match (price visually centered). */
ul.products li.product .price,
body.home .ns-home-product__info .price {
  margin: 0 !important;
  padding: 16px 14px !important;
}
ul.products li.product .button,
ul.products li.product a.button,
body.home .ns-home-product .button,
body.home .ns-home-product a.button {
  margin-top: 0 !important;
}
.ns-cat-card__price {
  margin: 0 !important;
  padding: 16px 0 !important;
}
.ns-cat-card__cta {
  margin-top: 0 !important;
}

/* ---------- 125.C: price centering — auto margins + small symmetric base ----------
   Cards do carry a little vertical slack; auto top/bottom margins split it
   evenly and the small symmetric padding guarantees a minimum gap, so
   title->price and price->button stay equal whether slack is 0 or not. */
ul.products li.product .price,
body.home .ns-home-product__info .price,
.ns-cat-card__price {
  margin: auto 0 !important;
  padding: 8px 14px !important;
}

/* ---------- 125.D: home + shop price centering (category already balances) ----------
   On home/shop the Add-to-Cart button lives OUTSIDE the flex container, so
   auto-margins can't balance against it and slack pooled below the price.
   Size these grids to content (no stretch slack) and use fixed symmetric
   padding so title->price and price->button match. Category (125.C) keeps its
   auto-balance because its CTA sits inside the card flex flow. */
body.home .ns-home-products,
#ns-all-products .products {
  align-items: start !important;
}
body.home .ns-home-products li.ns-home-product .price,
#ns-all-products li.product .price {
  margin: 0 !important;
  padding: 16px 14px !important;
}

/* ---------- 125.E: the actual fix ----------
   The price asymmetry was NOT slack — it was the button's margin-top:16px
   (PATCH 124.C `ul.products li.product .button`, higher specificity than
   125.B's override). Zero it so the button hugs the flex-container bottom,
   then let the price auto-center with a small symmetric base padding. This
   balances title->price and price->button whether the card has slack or not,
   so it holds for uniform (home) and mixed-title (shop) rows alike. */
ul.products li.product .button,
ul.products li.product a.button {
  margin-top: 0 !important;
}
body.home .ns-home-products li.ns-home-product .price,
#ns-all-products li.product .price,
ul.products li.product .price,
body.home .ns-home-product__info .price {
  margin: auto 0 !important;
  padding: 10px 14px !important;
}
body.home .ns-home-products,
#ns-all-products .products {
  align-items: stretch !important;
}

/* ---------- 125.F: zero the button top-margin with winning specificity ----------
   124.A/124.C set `margin:16px 16px 0 !important` via a `.button.add_to_cart_button`
   selector (0,4,x) that outranked 125.E's (0,3,2). Match/exceed it so the button
   actually hugs the flex-container bottom and the auto-centered price balances. */
body.home .ns-home-products li.ns-home-product .button,
body.home .ns-home-products li.ns-home-product a.button,
#ns-all-products .products li.product .button,
#ns-all-products .products li.product a.button,
ul.products li.product .button.add_to_cart_button,
ul.products li.product a.button.add_to_cart_button {
  margin-top: 0 !important;
}

/* ============================================================
   PATCH 126 (modahawk); hero uniformity
   Two requests:
   A) Footer-hero band text alignment -> match the rest of the
      site (shop/about page heroes are centered single-column);
      the footer-hero was a 2-col text|CTA split. Center it.
   B) Homepage hero showcase product cards -> adopt the same
      card formatting used sitewide (centered meta, square inset
      image tile, navy bold title, From-price treatment).
   Footer-hero stat COPY is changed in functions.php (was the
   pointless 17 brands / 2 families / 1 payment counts).
   ============================================================ */

/* ---------- 126.A: footer-hero centered, single column ---------- */
.ns-footer-hero__inner,
body.home .ns-footer-hero__inner {
  grid-template-columns: 1fr !important;
  justify-items: center !important;
  text-align: center !important;
  gap: 22px !important;
  max-width: 760px;
}
.ns-footer-hero__text,
body.home .ns-footer-hero__text {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.ns-footer-hero__title span {
  /* keep the accent underline tidy when centered */
  margin: 2px auto 0;
}
.ns-footer-hero__sub,
body.home .ns-footer-hero__sub {
  max-width: 52ch !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
.ns-footer-hero__cta,
body.home .ns-footer-hero__cta {
  align-items: center !important;
  gap: 22px !important;
}
/* stats: centered row, even dividers between (not a left rail) */
.ns-footer-hero__stats,
body.home .ns-footer-hero__stats {
  justify-content: center !important;
  gap: 0 !important;
  margin-top: 2px !important;
}
.ns-footer-hero__stats > div,
body.home .ns-footer-hero__stats > div {
  text-align: center !important;
  padding: 2px 26px !important;
  border-left: 1px solid rgba(255,255,255,0.12) !important;
  border-right: 0 !important;
  background: transparent !important;
}
.ns-footer-hero__stats > div:first-child,
body.home .ns-footer-hero__stats > div:first-child {
  border-left: 0 !important;
}
.ns-footer-hero__stats > div strong,
body.home .ns-footer-hero__stats > div strong {
  font-size: 1.9rem !important;
}

/* ---------- 126.B: hero showcase cards match the sitewide card ---------- */
body.home .ns-hero__product {
  text-align: center !important;
  padding-bottom: 4px;
}
/* square inset image tile (mirrors .ns-loop-media / Best Sellers media) */
body.home .ns-hero__product-img {
  aspect-ratio: 1 / 1 !important;
  width: calc(100% - 24px) !important;
  margin: 12px 12px 0 !important;
  border-radius: 12px !important;
  background: #F4F6FC !important;
  overflow: hidden;
}
body.home .ns-hero__product-img img {
  object-fit: contain !important;
  padding: 14px !important;
  mix-blend-mode: multiply;
}
/* drop the PATCH 89 side-arrow grid; stack meta centered */
body.home .ns-hero__product-meta {
  display: flex !important;
  flex-direction: column;
  align-items: center;
  grid-template-areas: none !important;
  grid-template-columns: none !important;
  column-gap: 0 !important;
  gap: 3px !important;
  padding: 12px 12px 6px !important;
}
body.home .ns-hero__product-eyebrow {
  grid-area: auto !important;
  font-size: 0.62rem;
  margin-bottom: 1px;
}
body.home .ns-hero__product-name {
  grid-area: auto !important;
  font-size: 0.95rem !important;
  font-weight: 700 !important;
  color: #16203A !important;
  letter-spacing: -0.01em;
  line-height: 1.3;
}
body.home .ns-hero__product-price {
  grid-area: auto !important;
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 5px;
}
body.home .ns-hero__product-price .ns-price-from {
  font-size: 0.76rem;
  color: #6B7187;
  font-weight: 500;
}
body.home .ns-hero__product-price .ns-price-amount,
body.home .ns-hero__product-price .ns-price-amount .amount {
  font-size: 1.05rem !important;
  font-weight: 800 !important;
  color: #1E2A77 !important;
}
/* recenter the arrow affordance at the bottom of the card */
body.home .ns-hero__product::after {
  grid-area: auto !important;
  margin: 4px auto 12px !important;
  align-self: center !important;
}

/* ============================================================
   PATCH 128 (modahawk); price-color uniformity + denser index grids
   A) Product-card price NUMBER -> navy #1E2A77 on every surface.
      (The inner .woocommerce-Price-amount rendered brand-blue on
      shop/home/related but navy on category — inconsistent. Navy
      matches the modamike reference + the PATCH 124 intent.)
   B) Shop + category archives: 5-up grid (was 3-up "huge"), with
      slightly denser card internals. Responsive 5/4/3/2.
   ============================================================ */

/* ---------- 128.A: uniform navy price number ---------- */
body.home .ns-home-product .price .woocommerce-Price-amount,
body.home .ns-home-product .ns-home-product__amount .woocommerce-Price-amount,
ul.products li.product .price .woocommerce-Price-amount,
.ns-cat-card__price .woocommerce-Price-amount,
.related.products li.product .price .woocommerce-Price-amount {
  color: #1E2A77 !important;
}

/* ---------- 128.B: denser index grids (shop + category) ----------
   NB: use `ul.products.columns-4` (specificity 0,3,1) to outrank the
   existing `.ns-shop-products-section ul.products.columns-4` repeat(3)
   !important rule; a plain `.products.columns-4` (0,3,0) loses to it. */
.ns-shop-products-section ul.products.columns-4,
.ns-cat-grid {
  grid-template-columns: repeat(5, 1fr) !important;
  gap: 18px !important;
}
@media (max-width: 1279px) {
  .ns-shop-products-section ul.products.columns-4,
  .ns-cat-grid { grid-template-columns: repeat(4, 1fr) !important; }
}
@media (max-width: 1023px) {
  .ns-shop-products-section ul.products.columns-4,
  .ns-cat-grid { grid-template-columns: repeat(3, 1fr) !important; gap: 16px !important; }
}
@media (max-width: 767px) {
  .ns-shop-products-section ul.products.columns-4,
  .ns-cat-grid { grid-template-columns: repeat(2, 1fr) !important; gap: 12px !important; }
}

/* denser card internals so 5-up doesn't look oversized */
.ns-shop-products-section .products.columns-4 li.product .woocommerce-loop-product__title,
.ns-cat-card__name {
  font-size: 0.94rem !important;
}
.ns-shop-products-section .products.columns-4 li.product .ns-loop-media,
.ns-cat-card__img {
  margin: 12px 12px 0 !important;
  width: calc(100% - 24px) !important;
}
.ns-shop-products-section .products.columns-4 li.product .ns-loop-media img,
.ns-cat-card__img-el {
  padding: 14px !important;
}
.ns-shop-products-section .products.columns-4 li.product .price .woocommerce-Price-amount,
.ns-cat-card__price .ns-price-amount,
.ns-cat-card__price .woocommerce-Price-amount {
  font-size: 1.05rem !important;
}
.ns-shop-products-section .products.columns-4 li.product .button {
  font-size: 0.8rem !important;
  padding: 10px 12px !important;
}

/* ============================================================
   PATCH 129 (modahawk); product image uniformity enforcement
   Outranks legacy PATCH 11/15 cover+crop rules that were
   beating PATCH 124's .ns-loop-media contain tiles.
   ============================================================ */

/* Loop tiles: higher specificity than PATCH 15 selectors */
ul.products li.product .woocommerce-LoopProduct-link .ns-loop-media img,
ul.products li.product .ns-loop-media img,
.woocommerce ul.products li.product .ns-loop-media img,
.woocommerce .related.products ul.products li.product .ns-loop-media img,
.ns-shop-products-section ul.products li.product .ns-loop-media img,
.ns-cat-products-section ul.products li.product .ns-loop-media img {
	aspect-ratio: unset !important;
	max-height: none !important;
	min-height: 0 !important;
	width: 100% !important;
	height: 100% !important;
	margin: 0 !important;
	object-fit: contain !important;
	object-position: center center !important;
	padding: 18px !important;
	box-sizing: border-box !important;
	background: transparent !important;
	border: 0 !important;
	border-bottom: 0 !important;
	mix-blend-mode: multiply;
}

/* Neutralize legacy direct-img rules on loop links */
ul.products li.product .woocommerce-LoopProduct-link > img,
.woocommerce ul.products li.product > a > img {
	display: none !important;
}

/* Homepage Best Sellers + hero showcase */
body.home .ns-home-product__media img,
body.home .ns-hero__product-img img {
	object-fit: contain !important;
	object-position: center center !important;
	mix-blend-mode: multiply;
}

body.home .ns-home-product__media,
body.home .ns-hero__product-img,
ul.products li.product .ns-loop-media {
	aspect-ratio: 1 / 1 !important;
	background: #F4F6FC !important;
}

/* PDP main image: contained square frame */
body.single-product .woocommerce-product-gallery__wrapper,
body.single-product .woocommerce-product-gallery .flex-viewport,
body.single-product .woocommerce-product-gallery .woocommerce-product-gallery__image {
	aspect-ratio: 1 / 1 !important;
	background: #F4F6FC !important;
}

body.single-product .woocommerce-product-gallery figure,
body.single-product .woocommerce-product-gallery .woocommerce-product-gallery__image {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	height: 100% !important;
}

body.single-product .woocommerce-product-gallery img.wp-post-image,
body.single-product .woocommerce-product-gallery figure img {
	width: 100% !important;
	height: 100% !important;
	max-height: 100% !important;
	object-fit: contain !important;
	object-position: center center !important;
	padding: 24px !important;
	box-sizing: border-box !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	mix-blend-mode: multiply;
}

@media (max-width: 640px) {
	ul.products li.product .ns-loop-media img,
	body.home .ns-home-product__media img,
	body.home .ns-hero__product-img img {
		padding: 14px !important;
	}
	body.single-product .woocommerce-product-gallery img.wp-post-image,
	body.single-product .woocommerce-product-gallery figure img {
		padding: 18px !important;
	}
}
/* PATCH 129.I (modahawk); homepage Best Sellers img — beat PATCH 15 loop cover */
body.home ul.products li.ns-home-product .woocommerce-LoopProduct-link img,
body.home ul.products li.ns-home-product .ns-home-product__media img {
	aspect-ratio: unset !important;
	max-height: none !important;
	width: 100% !important;
	height: 100% !important;
	object-fit: contain !important;
	object-position: center center !important;
	padding: 20px !important;
	box-sizing: border-box !important;
	background: transparent !important;
	border: 0 !important;
	mix-blend-mode: multiply;
}


/* ============================================================
   PATCH 130 (modahawk); uniform product-image inset padding
   PATCH 128 densified shop/category to 14px; PATCH 129.I set
   Best Sellers to 20px. Standardize all loop surfaces to 18px
   desktop / 14px mobile so tiles read identically everywhere.
   ============================================================ */

ul.products li.product .ns-loop-media img,
.ns-cat-card__img-el,
body.home .ns-hero__product-img img,
body.home .ns-home-product__media img,
body.home ul.products li.ns-home-product .woocommerce-LoopProduct-link img,
body.home ul.products li.ns-home-product .ns-home-product__media img,
.related.products ul.products li.product .ns-loop-media img,
.cross-sells ul.products li.product .ns-loop-media img {
	padding: 18px !important;
	box-sizing: border-box !important;
}

@media (max-width: 640px) {
	ul.products li.product .ns-loop-media img,
	.ns-cat-card__img-el,
	body.home .ns-hero__product-img img,
	body.home .ns-home-product__media img,
	body.home ul.products li.ns-home-product .woocommerce-LoopProduct-link img,
	body.home ul.products li.ns-home-product .ns-home-product__media img,
	.related.products ul.products li.product .ns-loop-media img,
	.cross-sells ul.products li.product .ns-loop-media img {
		padding: 14px !important;
	}
}

/* ============================================================
   PATCH 130.B (modahawk); shop grid image padding override
   PATCH 128.B used a higher-specificity shop selector (14px).
   Match the sitewide 18px / 14px mobile standard.
   ============================================================ */

.ns-shop-products-section .products.columns-4 li.product .ns-loop-media img {
	padding: 18px !important;
	box-sizing: border-box !important;
}

@media (max-width: 640px) {
	.ns-shop-products-section .products.columns-4 li.product .ns-loop-media img {
		padding: 14px !important;
	}
}
/* ============================================================
   PATCH 131 (modahawk); utility/default-page alignment
   Default-template pages (cart, checkout, my-account, affiliate
   registration/login, plain content pages) had .entry-content
   hugging the LEFT edge (margin:0 from the body:not(.home)
   .entry-content rule at ~line 1077) with dead space on the
   right. Center them all uniformly; widen cart/checkout/dashboard;
   tidy the affiliate forms into centered columns.
   (Supersedes an aborted attempt mis-numbered 129 — 129/130 taken.)
   ============================================================ */

/* 131.A: center default-template page content (specificity beats line 1077 !important) */
body.page-template-default:not(.home) .entry-content {
  max-width: 760px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  padding-left: 24px !important;
  padding-right: 24px !important;
  padding-top: 8px !important;
  box-sizing: border-box;
}

/* 131.B: center the page title/header to match the content column */
body.page-template-default:not(.home) .entry-header,
body.page-template-default:not(.home) .page-header,
body.page-template-default:not(.home) header.entry-header {
  text-align: center !important;
  max-width: 760px;
  margin-left: auto !important;
  margin-right: auto !important;
  padding-left: 24px;
  padding-right: 24px;
  box-sizing: border-box;
}

/* 131.C: wide pages — cart, checkout, account dashboard, affiliate login/dashboard */
body.woocommerce-cart .entry-content,
body.woocommerce-checkout .entry-content,
body.woocommerce-account .entry-content,
body.page-id-261 .entry-content {
  max-width: 1180px !important;
}
/* neutralize the block cart/checkout negative-margin breakout (was margin-left:-40px) */
body.woocommerce-cart .wp-block-woocommerce-cart,
body.woocommerce-checkout .wp-block-woocommerce-checkout,
body.woocommerce-cart .wc-block-cart,
body.woocommerce-checkout .wc-block-checkout {
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* 131.D: affiliate + WC forms — tidy centered columns (not stretched wide) */
.ns-aff-reg-header,
.slicewp-form-register,
form.slicewp-form-register {
  max-width: 620px;
  margin-left: auto !important;
  margin-right: auto !important;
}
.slicewp-form-login,
form.slicewp-form-login,
.woocommerce form.login,
.woocommerce form.lost_reset_password {
  max-width: 460px;
  margin-left: auto !important;
  margin-right: auto !important;
  float: none !important;
}

/* 131.E: keep the SliceWP logged-in dashboard full width of its centered container */
.slicewp-affiliate-area,
.slicewp-affiliate-account-area {
  max-width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* 131.F: widen the genuinely two-column pages (cart/checkout/account/dashboard).
   Double body-class selectors (0,4,2) outrank 131.A (0,3,2) so these beat the
   760px base while everything else stays the tidy centered 760 column. */
body.woocommerce-cart.page-template-default:not(.home) .entry-content,
body.woocommerce-checkout.page-template-default:not(.home) .entry-content,
body.woocommerce-account.page-template-default:not(.home) .entry-content,
body.page-id-261.page-template-default:not(.home) .entry-content {
  max-width: 1100px !important;
}


/* ============================================================
   PATCH 131 (modahawk); ship-ready UX remediation styles
   ============================================================ */

.ns-page-title {
	font-size: 1.75rem;
	font-weight: 800;
	color: #16203A;
	margin: 0 0 12px;
	letter-spacing: -0.02em;
}

.ns-cart-crypto-note {
	font-size: 0.92rem;
	color: #4B5563;
	margin: 0 0 20px;
	line-height: 1.5;
}

.ns-cart-crypto-note a {
	color: #4B5BD4;
	font-weight: 600;
}

.ns-search-suggest {
	margin-top: 12px;
	font-size: 0.95rem;
	color: #4B5563;
}

.ns-search-suggest a {
	color: #4B5BD4;
	font-weight: 600;
}

.ns-nav-search .ns-nav-search-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 6px 8px;
}

/* Hide GeneratePress theme credit if filter misses */
.site-info .copyright a[href*="generatepress"] {
	display: none !important;
}

.site-info .copyright {
	font-size: 0;
}
.site-info .copyright::after {
	content: "";
}

/* ============================================================
   PATCH 132 (modahawk); PDP pack pills + ATC row layout fix
   Pack pills were inside .woocommerce-variation-add-to-cart flex
   row, crushing the Add to Cart button to vertical letters.
   ============================================================ */

.single_variation_wrap .ns-size-pills {
	width: 100% !important;
	margin: 0 0 14px !important;
	flex-wrap: wrap !important;
}

.woocommerce-variation-add-to-cart {
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: stretch !important;
	gap: 12px !important;
	width: 100% !important;
}

.woocommerce-variation-add-to-cart .quantity {
	flex: 0 0 76px !important;
	width: 76px !important;
	margin: 0 !important;
}

.woocommerce-variation-add-to-cart .quantity .qty {
	width: 100% !important;
	min-height: 48px !important;
}

body.single-product .woocommerce-variation-add-to-cart .single_add_to_cart_button,
body.single-product button.single_add_to_cart_button {
	flex: 1 1 200px !important;
	min-width: 200px !important;
	width: auto !important;
	max-width: none !important;
	white-space: nowrap !important;
	min-height: 48px !important;
	padding: 12px 24px !important;
}

.ns-size-pill {
	padding: 9px 18px !important;
	border: 2px solid #C8D0F0 !important;
	background: #fff !important;
	color: #16203A !important;
	font-size: 13px !important;
	font-weight: 600 !important;
}

.ns-size-pill.active,
.ns-size-pill:hover {
	border-color: #4B5BD4 !important;
}

.ns-size-pill.active {
	background: #4B5BD4 !important;
	color: #fff !important;
}