/* ============================================================================
   NOSTALGIC PAVER SYSTEMS — Brand CSS Stylesheet
   Version: 1.0.0
   Last Updated: 2026-05-26

   Production-ready brand stylesheet for the NPS WordPress website.
   Organized by section. All values use CSS custom properties for easy theming.

   TABLE OF CONTENTS
   -----------------
   0.  Google Fonts Import
   1.  CSS Custom Properties (Design Tokens)
   2.  Reset & Base Styles
   3.  Typography System
   4.  Layout & Grid System
   5.  Navigation
   6.  Hero Section
   7.  Section Layouts (Alternating)
   8.  Buttons & CTAs
   9.  Card Components
   10. Testimonials
   11. Process / How-It-Works
   12. Forms & Inputs
   13. Blog Components
   14. Image Gallery / Grid
   15. Local SEO Page Layout
   16. Footer
   17. Utility Classes
   18. Animations & Transitions
   19. Accessibility
   20. Print Styles
   21. Responsive Breakpoints
   ========================================================================= */


/* ============================================================================
   0. GOOGLE FONTS IMPORT
   ========================================================================= */

@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;0,700;1,400&family=Montserrat:wght@300;400;500;600;700&display=swap');


/* ============================================================================
   1. CSS CUSTOM PROPERTIES (DESIGN TOKENS)
   All design values live here. Change once, update everywhere.
   ========================================================================= */

:root {

  /* ---- Primary Palette (Proposal System) ---- */
  --nps-near-black:           #1F1B16;
  --nps-dark-brown:           #2E2820;
  --nps-medium-brown:         #6B5E48;
  --nps-gold:                 #B8893E;
  --nps-gold-light:           #D4A356;
  --nps-cream:                #FAF6EC;
  --nps-off-white:            #F4EDE0;

  /* ---- Accent Palette (Brand Kit) ---- */
  --nps-forest:               #636D4B;
  --nps-umber:                #866343;
  --nps-sandstone:            #D5B989;
  --nps-ink:                  #2A2820;
  --nps-stone:                #8B8578;

  /* ---- Semantic Color Aliases ---- */
  --color-heading:            var(--nps-near-black);
  --color-body:               var(--nps-dark-brown);
  --color-caption:            var(--nps-medium-brown);
  --color-accent:             var(--nps-gold);
  --color-accent-hover:       var(--nps-gold-light);
  --color-bg-light:           var(--nps-cream);
  --color-bg-dark:            var(--nps-near-black);
  --color-bg-alt:             var(--nps-off-white);
  --color-text-on-dark:       var(--nps-off-white);
  --color-text-on-dark-muted: var(--nps-stone);
  --color-border:             rgba(107, 94, 72, 0.2);
  --color-border-dark:        rgba(244, 237, 224, 0.15);
  --color-overlay:            rgba(31, 27, 22, 0.6);
  --color-overlay-heavy:      rgba(31, 27, 22, 0.75);
  --color-success:            var(--nps-forest);
  --color-error:              #9E3B33;
  --color-focus-ring:         var(--nps-gold);

  /* ---- Typography ---- */
  --font-heading:             'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --font-body:                'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  --fw-light:                 300;
  --fw-regular:               400;
  --fw-medium:                500;
  --fw-semibold:              600;
  --fw-bold:                  700;

  --lh-tight:                 1.15;
  --lh-heading:               1.25;
  --lh-body:                  1.7;
  --lh-loose:                 1.9;

  --ls-tight:                 -0.01em;
  --ls-normal:                0;
  --ls-wide:                  0.04em;
  --ls-wider:                 0.08em;
  --ls-widest:                0.14em;

  /* Responsive type scale using clamp(min, preferred, max) */
  --text-xs:                  clamp(0.6875rem, 0.65rem + 0.15vw, 0.75rem);       /* ~11–12px */
  --text-sm:                  clamp(0.75rem, 0.7rem + 0.2vw, 0.875rem);          /* ~12–14px */
  --text-base:                clamp(0.9375rem, 0.875rem + 0.25vw, 1.0625rem);    /* ~15–17px */
  --text-lg:                  clamp(1.0625rem, 1rem + 0.3vw, 1.1875rem);         /* ~17–19px */
  --text-xl:                  clamp(1.1875rem, 1.05rem + 0.5vw, 1.4375rem);      /* ~19–23px */
  --text-2xl:                 clamp(1.5rem, 1.25rem + 0.8vw, 1.875rem);          /* ~24–30px */
  --text-3xl:                 clamp(1.875rem, 1.5rem + 1.2vw, 2.5rem);           /* ~30–40px */
  --text-4xl:                 clamp(2.25rem, 1.75rem + 1.6vw, 3.25rem);          /* ~36–52px */
  --text-5xl:                 clamp(2.75rem, 2rem + 2.4vw, 4.25rem);             /* ~44–68px */
  --text-6xl:                 clamp(3.25rem, 2.25rem + 3.2vw, 5.5rem);           /* ~52–88px */

  /* ---- Spacing Scale ---- */
  --space-3xs:                clamp(0.25rem, 0.2rem + 0.15vw, 0.375rem);         /* 4–6 */
  --space-2xs:                clamp(0.5rem, 0.45rem + 0.2vw, 0.625rem);          /* 8–10 */
  --space-xs:                 clamp(0.75rem, 0.65rem + 0.3vw, 1rem);             /* 12–16 */
  --space-sm:                 clamp(1rem, 0.85rem + 0.5vw, 1.5rem);              /* 16–24 */
  --space-md:                 clamp(1.5rem, 1.25rem + 0.8vw, 2rem);              /* 24–32 */
  --space-lg:                 clamp(2rem, 1.5rem + 1.5vw, 3rem);                 /* 32–48 */
  --space-xl:                 clamp(3rem, 2.25rem + 2.5vw, 4.5rem);              /* 48–72 */
  --space-2xl:                clamp(4rem, 3rem + 3.2vw, 6rem);                   /* 64–96 */
  --space-3xl:                clamp(5rem, 3.5rem + 4.8vw, 8rem);                 /* 80–128 */

  /* ---- Layout ---- */
  --container-sm:             640px;
  --container-md:             768px;
  --container-lg:             1024px;
  --container-xl:             1280px;
  --container-max:            1440px;
  --content-width:            min(90%, var(--container-xl));
  --content-narrow:           min(90%, 780px);
  --gutter:                   clamp(1rem, 0.5rem + 2vw, 2rem);

  /* ---- Borders & Radii ---- */
  --radius-sm:                3px;
  --radius-md:                6px;
  --radius-lg:                12px;
  --radius-xl:                20px;
  --radius-full:              9999px;
  --border-thin:              1px solid var(--color-border);
  --border-gold:              2px solid var(--nps-gold);

  /* ---- Shadows ---- */
  --shadow-sm:                0 1px 3px rgba(31, 27, 22, 0.06), 0 1px 2px rgba(31, 27, 22, 0.04);
  --shadow-md:                0 4px 12px rgba(31, 27, 22, 0.08), 0 2px 4px rgba(31, 27, 22, 0.04);
  --shadow-lg:                0 12px 32px rgba(31, 27, 22, 0.1), 0 4px 8px rgba(31, 27, 22, 0.05);
  --shadow-xl:                0 20px 48px rgba(31, 27, 22, 0.14), 0 8px 16px rgba(31, 27, 22, 0.06);
  --shadow-gold:              0 4px 16px rgba(184, 137, 62, 0.25);

  /* ---- Transitions ---- */
  --ease-default:             cubic-bezier(0.25, 0.1, 0.25, 1);
  --ease-out:                 cubic-bezier(0.0, 0.0, 0.2, 1);
  --ease-in-out:              cubic-bezier(0.4, 0.0, 0.2, 1);
  --duration-fast:            150ms;
  --duration-base:            250ms;
  --duration-slow:            400ms;
  --duration-slower:          600ms;
  --transition-colors:        color var(--duration-base) var(--ease-default),
                              background-color var(--duration-base) var(--ease-default),
                              border-color var(--duration-base) var(--ease-default);
  --transition-transform:     transform var(--duration-base) var(--ease-out);
  --transition-shadow:        box-shadow var(--duration-base) var(--ease-default);
  --transition-opacity:       opacity var(--duration-base) var(--ease-default);

  /* ---- Z-Index Scale ---- */
  --z-behind:                 -1;
  --z-base:                   1;
  --z-dropdown:               100;
  --z-sticky:                 200;
  --z-nav:                    300;
  --z-overlay:                400;
  --z-modal:                  500;
  --z-toast:                  600;
}


/* ============================================================================
   2. RESET & BASE STYLES
   ========================================================================= */

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  font-size: 100%;
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  hanging-punctuation: first last;
}

body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--fw-regular);
  line-height: var(--lh-body);
  color: var(--color-body);
  background-color: var(--color-bg-light);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}

input,
button,
textarea,
select {
  font: inherit;
  color: inherit;
}

a {
  color: var(--color-accent);
  text-decoration: none;
  transition: var(--transition-colors);
}

a:hover {
  color: var(--color-accent-hover);
}

ul,
ol {
  list-style: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

hr {
  border: none;
  border-top: 1px solid var(--color-border);
  margin: var(--space-lg) 0;
}

::selection {
  background-color: var(--nps-gold);
  color: var(--nps-near-black);
}


/* ============================================================================
   3. TYPOGRAPHY SYSTEM
   ========================================================================= */

/* ---- Headings ---- */

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
  font-family: var(--font-heading);
  color: var(--color-heading);
  font-weight: var(--fw-semibold);
  line-height: var(--lh-heading);
  letter-spacing: var(--ls-tight);
  text-wrap: balance;
}

h1, .h1 {
  font-size: var(--text-5xl);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  margin-bottom: var(--space-md);
}

h2, .h2 {
  font-size: var(--text-4xl);
  margin-bottom: var(--space-sm);
}

h3, .h3 {
  font-size: var(--text-3xl);
  margin-bottom: var(--space-sm);
}

h4, .h4 {
  font-size: var(--text-2xl);
  margin-bottom: var(--space-xs);
}

h5, .h5 {
  font-size: var(--text-xl);
  font-weight: var(--fw-semibold);
  margin-bottom: var(--space-xs);
}

h6, .h6 {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-wider);
  text-transform: uppercase;
  color: var(--color-accent);
  margin-bottom: var(--space-xs);
}

/* Section label / eyebrow — used above H2s */
.eyebrow {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--nps-gold);
  margin-bottom: var(--space-2xs);
  display: block;
}

/* ---- Body Text ---- */

p {
  margin-bottom: var(--space-sm);
  max-width: 72ch;
  text-wrap: pretty;
}

.text-lead {
  font-size: var(--text-lg);
  line-height: var(--lh-loose);
  color: var(--nps-medium-brown);
  max-width: 65ch;
}

.text-caption {
  font-size: var(--text-sm);
  color: var(--color-caption);
  line-height: var(--lh-body);
}

.text-small {
  font-size: var(--text-xs);
  color: var(--color-caption);
}

strong, b {
  font-weight: var(--fw-semibold);
}

em, i {
  font-style: italic;
}

/* ---- Blockquote ---- */

blockquote {
  border-left: 3px solid var(--nps-gold);
  padding: var(--space-sm) var(--space-md);
  margin: var(--space-md) 0;
  background-color: rgba(184, 137, 62, 0.04);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
}

blockquote p {
  font-family: var(--font-heading);
  font-size: var(--text-xl);
  font-style: italic;
  color: var(--nps-medium-brown);
  line-height: var(--lh-heading);
  margin-bottom: var(--space-2xs);
}

blockquote p:last-child {
  margin-bottom: 0;
}

blockquote cite,
blockquote footer {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-style: normal;
  color: var(--color-caption);
  display: block;
  margin-top: var(--space-xs);
}

blockquote cite::before {
  content: '\2014\00A0';
}

/* ---- Lists ---- */

.list,
.wp-block-list,
article ul,
article ol {
  margin-bottom: var(--space-sm);
  padding-left: var(--space-sm);
}

.list li,
.wp-block-list li,
article ul li,
article ol li {
  margin-bottom: var(--space-2xs);
  padding-left: var(--space-2xs);
  line-height: var(--lh-body);
}

article ul li,
.list--bullet li {
  list-style: none;
  position: relative;
  padding-left: var(--space-sm);
}

article ul li::before,
.list--bullet li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.7em;
  width: 6px;
  height: 6px;
  background-color: var(--nps-gold);
  border-radius: var(--radius-full);
}

article ol,
.list--numbered {
  counter-reset: list-counter;
}

article ol li,
.list--numbered li {
  list-style: none;
  counter-increment: list-counter;
  position: relative;
  padding-left: var(--space-md);
}

article ol li::before,
.list--numbered li::before {
  content: counter(list-counter, decimal-leading-zero);
  position: absolute;
  left: 0;
  font-family: var(--font-heading);
  font-weight: var(--fw-semibold);
  color: var(--nps-gold);
  font-size: var(--text-sm);
}

/* ---- Gold Rule / Divider ---- */

.divider {
  width: 60px;
  height: 2px;
  background-color: var(--nps-gold);
  border: none;
  margin: var(--space-md) 0;
}

.divider--center {
  margin-left: auto;
  margin-right: auto;
}


/* ============================================================================
   4. LAYOUT & GRID SYSTEM
   ========================================================================= */

.container {
  width: var(--content-width);
  max-width: var(--container-max);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
}

.container--narrow {
  width: var(--content-narrow);
}

.container--wide {
  width: min(95%, 1600px);
}

.row {
  display: flex;
  flex-wrap: wrap;
  margin-left: calc(var(--gutter) * -0.5);
  margin-right: calc(var(--gutter) * -0.5);
}

.col {
  padding-left: calc(var(--gutter) * 0.5);
  padding-right: calc(var(--gutter) * 0.5);
  flex: 1 1 100%;
}

/* CSS Grid utility */
.grid {
  display: grid;
  gap: var(--gutter);
}

.grid--2 {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
}

.grid--3 {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
}

.grid--4 {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
}


/* ============================================================================
   5. NAVIGATION
   Sticky header: transparent over the hero, solid on scroll.
   Controlled by toggling .nav--scrolled via JS.
   ========================================================================= */

.nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: var(--z-nav);
  padding: var(--space-sm) 0;
  transition: background-color var(--duration-slow) var(--ease-default),
              padding var(--duration-slow) var(--ease-default),
              box-shadow var(--duration-slow) var(--ease-default);
  background-color: transparent;
}

.nav--scrolled {
  background-color: var(--nps-near-black);
  padding: var(--space-2xs) 0;
  box-shadow: 0 2px 20px rgba(31, 27, 22, 0.25);
}

.nav__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: var(--content-width);
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--gutter);
}

/* Logo */
.nav__logo {
  flex-shrink: 0;
}

.nav__logo img {
  height: clamp(36px, 3vw, 52px);
  width: auto;
  transition: height var(--duration-slow) var(--ease-default);
}

.nav--scrolled .nav__logo img {
  height: clamp(30px, 2.5vw, 42px);
}

/* Desktop Menu */
.nav__menu {
  display: flex;
  align-items: center;
  gap: var(--space-md);
}

.nav__link {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--fw-medium);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--nps-off-white);
  text-decoration: none;
  padding: var(--space-3xs) 0;
  position: relative;
  transition: var(--transition-colors);
}

.nav__link::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 2px;
  background-color: var(--nps-gold);
  transition: width var(--duration-base) var(--ease-out);
}

.nav__link:hover,
.nav__link--active {
  color: var(--nps-gold);
}

.nav__link:hover::after,
.nav__link--active::after {
  width: 100%;
}

/* Nav CTA Button */
.nav__cta {
  font-size: var(--text-sm);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--nps-near-black);
  background-color: var(--nps-gold);
  padding: var(--space-2xs) var(--space-sm);
  border-radius: var(--radius-sm);
  text-decoration: none;
  transition: var(--transition-colors), var(--transition-shadow);
}

.nav__cta:hover {
  background-color: var(--nps-gold-light);
  color: var(--nps-near-black);
  box-shadow: var(--shadow-gold);
}

/* Mobile Hamburger */
.nav__toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 32px;
  height: 32px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px;
}

.nav__toggle span {
  display: block;
  width: 100%;
  height: 2px;
  background-color: var(--nps-off-white);
  border-radius: 2px;
  transition: transform var(--duration-base) var(--ease-default),
              opacity var(--duration-fast) var(--ease-default);
}

/* Active hamburger → X */
.nav__toggle--active span:first-child {
  transform: translateY(7px) rotate(45deg);
}

.nav__toggle--active span:nth-child(2) {
  opacity: 0;
}

.nav__toggle--active span:last-child {
  transform: translateY(-7px) rotate(-45deg);
}

/* Mobile menu panel */
.nav__mobile-menu {
  display: none;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(85vw, 360px);
  background-color: var(--nps-near-black);
  padding: var(--space-3xl) var(--space-lg) var(--space-lg);
  flex-direction: column;
  gap: var(--space-xs);
  z-index: var(--z-overlay);
  transform: translateX(100%);
  transition: transform var(--duration-slow) var(--ease-out);
}

.nav__mobile-menu--open {
  display: flex;
  transform: translateX(0);
}

.nav__mobile-menu .nav__link {
  font-size: var(--text-lg);
  padding: var(--space-xs) 0;
  border-bottom: 1px solid var(--color-border-dark);
}

/* Mobile menu overlay */
.nav__overlay {
  display: none;
  position: fixed;
  inset: 0;
  background-color: rgba(31, 27, 22, 0.5);
  z-index: calc(var(--z-overlay) - 1);
}

.nav__overlay--visible {
  display: block;
}


/* ============================================================================
   6. HERO SECTION
   Full-viewport video background with text overlay.
   ========================================================================= */

.hero {
  position: relative;
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background-color: var(--nps-near-black);
}

.hero--short {
  min-height: 60vh;
  min-height: 60dvh;
}

.hero--medium {
  min-height: 75vh;
  min-height: 75dvh;
}

/* Video / Image Background */
.hero__media {
  position: absolute;
  inset: 0;
  z-index: var(--z-behind);
}

.hero__media video,
.hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

/* Dark overlay gradient */
.hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(31, 27, 22, 0.35) 0%,
    rgba(31, 27, 22, 0.2) 40%,
    rgba(31, 27, 22, 0.5) 80%,
    rgba(31, 27, 22, 0.75) 100%
  );
  z-index: var(--z-base);
}

/* Hero Content */
.hero__content {
  position: relative;
  z-index: calc(var(--z-base) + 1);
  text-align: center;
  max-width: 860px;
  padding: var(--space-xl) var(--gutter);
}

.hero__eyebrow {
  font-family: var(--font-body);
  font-size: clamp(0.9375rem, 0.85rem + 0.35vw, 1.0625rem);  /* ~15–17px (+4pt from 11-12) */
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--nps-cream);
  text-align: center;
  margin-bottom: var(--space-sm);
}

.hero__title {
  font-family: var(--font-heading) !important;
  font-size: var(--text-6xl) !important;
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: #FFFFFF !important;
  margin-bottom: var(--space-md);
  text-shadow: 0 2px 30px rgba(31, 27, 22, 0.4);
}

.hero__subtitle {
  font-family: var(--font-body);
  font-size: clamp(1.25rem, 2.5vw, 1.65rem) !important;
  font-weight: var(--fw-semibold) !important;
  line-height: var(--lh-body);
  color: var(--nps-off-white) !important;
  max-width: 650px;
  margin: 0 auto var(--space-lg);
  opacity: 0.95;
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-sm);
}

/* Scroll indicator arrow */
.hero__scroll {
  position: absolute;
  bottom: var(--space-lg);
  left: 50%;
  transform: translateX(-50%);
  z-index: calc(var(--z-base) + 1);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2xs);
  color: var(--nps-off-white);
  opacity: 0.6;
  font-size: var(--text-xs);
  letter-spacing: var(--ls-wider);
  text-transform: uppercase;
  animation: nps-bounce 2s ease-in-out infinite;
}

.hero__scroll svg {
  width: 20px;
  height: 20px;
  stroke: currentColor;
}


/* ============================================================================
   7. SECTION LAYOUTS (Alternating Light/Dark)
   ========================================================================= */

.section {
  padding: var(--space-2xl) 0;
}

/* Light section (default — cream background) */
.section--light {
  background-color: var(--color-bg-light);
  color: var(--color-body);
}

/* Off-white section for subtle alternation */
.section--alt {
  background-color: var(--color-bg-alt);
  color: var(--color-body);
}

/* Dark section */
.section--dark {
  background-color: var(--color-bg-dark);
  color: var(--color-text-on-dark);
}

.section--dark h1,
.section--dark h2,
.section--dark h3,
.section--dark h4,
.section--dark h5 {
  color: #FFFFFF;
}

.section--dark h6,
.section--dark .eyebrow {
  color: var(--nps-gold-light);
}

.section--dark p {
  color: var(--nps-off-white);
  opacity: 0.9;
}

.section--dark .text-lead {
  color: var(--nps-sandstone);
}

.section--dark a {
  color: var(--nps-gold-light);
}

.section--dark a:hover {
  color: var(--nps-sandstone);
}

.section--dark hr,
.section--dark .divider {
  background-color: var(--nps-gold-light);
  opacity: 0.5;
}

/* Section header block */
.section__header {
  text-align: center;
  max-width: 700px;
  margin: 0 auto var(--space-xl);
}

/* Two-column split layout */
.section__split {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-xl);
  align-items: center;
}

/* Image with overlapping accent */
.section__image-wrap {
  position: relative;
}

.section__image-wrap img {
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
}

.section__image-wrap::after {
  content: '';
  position: absolute;
  bottom: calc(var(--space-sm) * -1);
  right: calc(var(--space-sm) * -1);
  width: 40%;
  height: 40%;
  border: 2px solid var(--nps-gold);
  border-radius: var(--radius-md);
  z-index: var(--z-behind);
}


/* ============================================================================
   8. BUTTONS & CTAs
   ========================================================================= */

/* Base button reset */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2xs);
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  text-decoration: none;
  line-height: 1;
  border: 2px solid transparent;
  border-radius: var(--radius-sm);
  cursor: pointer;
  padding: var(--space-xs) var(--space-md);
  transition: var(--transition-colors), var(--transition-shadow), var(--transition-transform);
  white-space: nowrap;
}

/* Strip stray <br> that wpautop can inject into button labels (from line breaks
   in the source HTML). Keeps the label on one line so it stays vertically
   centered — fixes CTA text sitting slightly below center. */
.btn br { display: none; }

.btn:active {
  transform: scale(0.98);
}

/* Primary — solid gold */
.btn--primary {
  background-color: var(--nps-gold);
  color: var(--nps-near-black);
  border-color: var(--nps-gold);
}

.btn--primary:hover {
  background-color: var(--nps-gold-light);
  border-color: var(--nps-gold-light);
  color: var(--nps-near-black);
  box-shadow: var(--shadow-gold);
}

/* Secondary — outline */
.btn--secondary {
  background-color: transparent;
  color: var(--nps-gold);
  border-color: var(--nps-gold);
}

.btn--secondary:hover {
  background-color: var(--nps-gold);
  color: var(--nps-near-black);
}

/* Secondary on dark backgrounds */
.section--dark .btn--secondary,
.hero .btn--secondary {
  color: var(--nps-gold-light);
  border-color: var(--nps-gold-light);
}

.section--dark .btn--secondary:hover,
.hero .btn--secondary:hover {
  background-color: var(--nps-gold-light);
  color: var(--nps-near-black);
}

/* Ghost — minimal text button */
.btn--ghost {
  background-color: transparent;
  border-color: transparent;
  color: var(--nps-gold);
  padding-left: var(--space-2xs);
  padding-right: var(--space-2xs);
}

.btn--ghost:hover {
  color: var(--nps-gold-light);
  background-color: rgba(184, 137, 62, 0.08);
}

/* White button (for dark backgrounds) */
.btn--white {
  background-color: #FFFFFF;
  color: var(--nps-near-black);
  border-color: #FFFFFF;
}

.btn--white:hover {
  background-color: var(--nps-off-white);
  border-color: var(--nps-off-white);
  color: var(--nps-near-black);
}

/* Size variants */
.btn--sm {
  font-size: var(--text-xs);
  padding: var(--space-2xs) var(--space-sm);
}

.btn--lg {
  font-size: var(--text-base);
  padding: var(--space-sm) var(--space-lg);
}

/* Full-width on mobile */
.btn--block {
  width: 100%;
}

/* Button with icon arrow */
.btn__icon {
  width: 16px;
  height: 16px;
  transition: transform var(--duration-fast) var(--ease-out);
}

.btn:hover .btn__icon {
  transform: translateX(3px);
}


/* ============================================================================
   9. CARD COMPONENTS
   Services cards, general content cards.
   ========================================================================= */

.card {
  background-color: #FFFFFF;
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: var(--transition-shadow), var(--transition-transform);
  display: flex;
  flex-direction: column;
  height: 100%;
}

.card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-4px);
}

.card__image {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
}

.card__body {
  padding: var(--space-md);
  flex: 1;
  display: flex;
  flex-direction: column;
}

.card__eyebrow {
  font-size: var(--text-xs);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--nps-gold);
  margin-bottom: var(--space-2xs);
}

.card__title {
  font-family: var(--font-heading);
  font-size: var(--text-2xl);
  font-weight: var(--fw-semibold);
  color: var(--color-heading);
  margin-bottom: var(--space-xs);
  line-height: var(--lh-heading);
}

.card__text {
  font-size: var(--text-sm);
  color: var(--color-caption);
  line-height: var(--lh-body);
  flex: 1;
}

.card__footer {
  padding-top: var(--space-sm);
  margin-top: auto;
}

/* Service card variant — with top gold accent */
.card--service {
  border-top: 3px solid var(--nps-gold);
}

.card--service .card__icon {
  width: 48px;
  height: 48px;
  color: var(--nps-gold);
  margin-bottom: var(--space-sm);
}

/* Card on dark backgrounds */
.section--dark .card {
  background-color: rgba(244, 237, 224, 0.06);
  border: 1px solid rgba(244, 237, 224, 0.1);
}

.section--dark .card:hover {
  background-color: rgba(244, 237, 224, 0.1);
  border-color: rgba(184, 137, 62, 0.3);
}

.section--dark .card__title {
  color: #FFFFFF;
}

.section--dark .card__text {
  color: var(--nps-stone);
}


/* ============================================================================
   10. TESTIMONIALS
   ========================================================================= */

.testimonials {
  position: relative;
}

.testimonial {
  background-color: #FFFFFF;
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  box-shadow: var(--shadow-md);
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
}

/* Gold quote mark */
.testimonial::before {
  content: '\201C';
  font-family: var(--font-heading);
  font-size: 4rem;
  line-height: 1;
  color: var(--nps-gold);
  opacity: 0.25;
  position: absolute;
  top: var(--space-sm);
  left: var(--space-md);
}

.testimonial__quote {
  font-family: var(--font-heading);
  font-size: var(--text-lg);
  font-style: italic;
  line-height: var(--lh-body);
  color: var(--nps-dark-brown);
  margin-bottom: var(--space-md);
  flex: 1;
  padding-top: var(--space-md);
}

.testimonial__author {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  border-top: 1px solid var(--color-border);
  padding-top: var(--space-sm);
}

.testimonial__avatar {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-full);
  object-fit: cover;
  border: 2px solid var(--nps-gold);
}

.testimonial__name {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--fw-semibold);
  color: var(--color-heading);
}

.testimonial__location {
  font-size: var(--text-xs);
  color: var(--color-caption);
}

/* Star rating */
.testimonial__stars {
  display: flex;
  gap: 2px;
  margin-bottom: var(--space-2xs);
}

.testimonial__stars svg {
  width: 16px;
  height: 16px;
  fill: var(--nps-gold);
}

/* On dark background */
.section--dark .testimonial {
  background-color: rgba(244, 237, 224, 0.05);
  border: 1px solid rgba(244, 237, 224, 0.1);
}

.section--dark .testimonial__quote {
  color: var(--nps-off-white);
}

.section--dark .testimonial__name {
  color: #FFFFFF;
}

.section--dark .testimonial__location {
  color: var(--nps-stone);
}

.section--dark .testimonial__author {
  border-top-color: rgba(244, 237, 224, 0.1);
}


/* ============================================================================
   11. PROCESS / HOW-IT-WORKS (Numbered Steps)
   ========================================================================= */

.process {
  counter-reset: process-step;
}

.process__step {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--space-md);
  align-items: start;
  padding: var(--space-md) 0;
  position: relative;
}

.process__step + .process__step {
  border-top: 1px solid var(--color-border);
}

.process__number {
  counter-increment: process-step;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: var(--radius-full);
  border: 2px solid var(--nps-gold);
  font-family: var(--font-heading);
  font-size: var(--text-2xl);
  font-weight: var(--fw-bold);
  color: var(--nps-gold);
  flex-shrink: 0;
}

.process__number::before {
  content: counter(process-step);
}

.process__title {
  font-family: var(--font-heading);
  font-size: var(--text-xl);
  font-weight: var(--fw-semibold);
  color: var(--color-heading);
  margin-bottom: var(--space-2xs);
}

.process__text {
  font-size: var(--text-base);
  color: var(--color-caption);
  line-height: var(--lh-body);
  max-width: 55ch;
}

/* Vertical timeline variant */
.process--timeline .process__step {
  padding-left: var(--space-lg);
  border-top: none;
}

.process--timeline .process__step::before {
  content: '';
  position: absolute;
  left: 27px;
  top: 0;
  bottom: 0;
  width: 2px;
  background-color: var(--color-border);
}

.process--timeline .process__step:first-child::before {
  top: 28px;
}

.process--timeline .process__step:last-child::before {
  bottom: calc(100% - 28px);
}

/* Dark section variant */
.section--dark .process__step + .process__step {
  border-top-color: rgba(244, 237, 224, 0.1);
}

.section--dark .process__number {
  border-color: var(--nps-gold-light);
  color: var(--nps-gold-light);
}

.section--dark .process__title {
  color: #FFFFFF;
}

.section--dark .process__text {
  color: var(--nps-stone);
}


/* ============================================================================
   12. FORMS & INPUTS
   ========================================================================= */

.form {
  max-width: 640px;
}

.form--centered {
  margin-left: auto;
  margin-right: auto;
}

.form__group {
  margin-bottom: var(--space-sm);
}

.form__label {
  display: block;
  font-size: var(--text-sm);
  font-weight: var(--fw-medium);
  color: var(--color-heading);
  margin-bottom: var(--space-3xs);
  letter-spacing: var(--ls-normal);
}

.form__label--required::after {
  content: ' *';
  color: var(--color-error);
}

.form__input,
.form__textarea,
.form__select {
  width: 100%;
  padding: var(--space-xs) var(--space-sm);
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-body);
  background-color: #FFFFFF;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  transition: border-color var(--duration-fast) var(--ease-default),
              box-shadow var(--duration-fast) var(--ease-default);
  appearance: none;
}

.form__input:hover,
.form__textarea:hover,
.form__select:hover {
  border-color: var(--nps-medium-brown);
}

.form__input:focus,
.form__textarea:focus,
.form__select:focus {
  outline: none;
  border-color: var(--nps-gold);
  box-shadow: 0 0 0 3px rgba(184, 137, 62, 0.15);
}

.form__input::placeholder,
.form__textarea::placeholder {
  color: var(--nps-stone);
}

.form__textarea {
  min-height: 140px;
  resize: vertical;
}

.form__select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236B5E48' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--space-sm) center;
  padding-right: var(--space-lg);
}

/* Error state */
.form__input--error,
.form__textarea--error {
  border-color: var(--color-error);
}

.form__error {
  font-size: var(--text-xs);
  color: var(--color-error);
  margin-top: var(--space-3xs);
}

/* Success state */
.form__success {
  font-size: var(--text-sm);
  color: var(--color-success);
  padding: var(--space-sm);
  background-color: rgba(99, 109, 75, 0.08);
  border-radius: var(--radius-md);
  margin-top: var(--space-sm);
}

/* Helper text */
.form__help {
  font-size: var(--text-xs);
  color: var(--color-caption);
  margin-top: var(--space-3xs);
}

/* Checkbox / Radio */
.form__check {
  display: flex;
  align-items: start;
  gap: var(--space-2xs);
  margin-bottom: var(--space-xs);
  cursor: pointer;
}

.form__check input[type="checkbox"],
.form__check input[type="radio"] {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  flex-shrink: 0;
  accent-color: var(--nps-gold);
}

/* Row layout for inline fields */
.form__row {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-sm);
}

/* Booking/embed container */
.booking-embed {
  width: 100%;
  max-width: 700px;
  margin: var(--space-lg) auto;
  padding: var(--space-md);
  background-color: #FFFFFF;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  min-height: 500px;
}

.booking-embed iframe {
  width: 100%;
  min-height: 480px;
  border: none;
  border-radius: var(--radius-md);
}

/* Form on dark section */
.section--dark .form__label {
  color: var(--nps-off-white);
}

.section--dark .form__input,
.section--dark .form__textarea,
.section--dark .form__select {
  background-color: rgba(244, 237, 224, 0.06);
  border-color: rgba(244, 237, 224, 0.15);
  color: var(--nps-off-white);
}

.section--dark .form__input:focus,
.section--dark .form__textarea:focus,
.section--dark .form__select:focus {
  border-color: var(--nps-gold-light);
  box-shadow: 0 0 0 3px rgba(212, 163, 86, 0.2);
}

.section--dark .form__input::placeholder,
.section--dark .form__textarea::placeholder {
  color: var(--nps-stone);
}


/* ============================================================================
   13. BLOG COMPONENTS
   ========================================================================= */

/* ---- Blog Card (archive/grid view) ---- */

.blog-card {
  background-color: #FFFFFF;
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: var(--transition-shadow), var(--transition-transform);
  display: flex;
  flex-direction: column;
  height: 100%;
  text-decoration: none;
  color: inherit;
}

.blog-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-3px);
  color: inherit;
}

.blog-card__image {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  transition: transform var(--duration-slow) var(--ease-out);
}

.blog-card:hover .blog-card__image {
  transform: scale(1.03);
}

.blog-card__image-wrap {
  overflow: hidden;
}

.blog-card__body {
  padding: var(--space-md);
  flex: 1;
  display: flex;
  flex-direction: column;
}

.blog-card__meta {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  margin-bottom: var(--space-xs);
}

.blog-card__category {
  font-size: var(--text-xs);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-wider);
  text-transform: uppercase;
  color: var(--nps-gold);
}

.blog-card__date {
  font-size: var(--text-xs);
  color: var(--color-caption);
}

.blog-card__meta-sep {
  color: var(--color-border);
  font-size: var(--text-xs);
}

.blog-card__title {
  font-family: var(--font-heading);
  font-size: var(--text-xl);
  font-weight: var(--fw-semibold);
  color: var(--color-heading);
  margin-bottom: var(--space-xs);
  line-height: var(--lh-heading);
  transition: var(--transition-colors);
}

.blog-card:hover .blog-card__title {
  color: var(--nps-gold);
}

.blog-card__excerpt {
  font-size: var(--text-sm);
  color: var(--color-caption);
  line-height: var(--lh-body);
  flex: 1;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.blog-card__read-more {
  display: inline-flex;
  align-items: center;
  gap: var(--space-3xs);
  font-size: var(--text-sm);
  font-weight: var(--fw-semibold);
  color: var(--nps-gold);
  margin-top: var(--space-sm);
  transition: var(--transition-colors);
}

/* ---- Blog Single Post ---- */

.post {
  padding-top: calc(80px + var(--space-xl));
}

.post__header {
  text-align: center;
  max-width: 800px;
  margin: 0 auto var(--space-xl);
}

.post__category {
  font-size: var(--text-xs);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--nps-gold);
  margin-bottom: var(--space-xs);
  display: inline-block;
}

.post__title {
  font-family: var(--font-heading);
  font-size: var(--text-4xl);
  font-weight: var(--fw-bold);
  color: var(--color-heading);
  margin-bottom: var(--space-sm);
  line-height: var(--lh-heading);
}

.post__meta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-sm);
  font-size: var(--text-sm);
  color: var(--color-caption);
}

.post__featured-image {
  width: 100%;
  max-width: 960px;
  margin: 0 auto var(--space-xl);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-lg);
}

.post__featured-image img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

/* Post content — scoped typography */
.post__content {
  max-width: 720px;
  margin: 0 auto;
}

.post__content h2 {
  margin-top: var(--space-xl);
  margin-bottom: var(--space-sm);
}

.post__content h3 {
  margin-top: var(--space-lg);
  margin-bottom: var(--space-xs);
}

.post__content p {
  margin-bottom: var(--space-sm);
}

.post__content img {
  border-radius: var(--radius-md);
  margin: var(--space-md) 0;
  box-shadow: var(--shadow-sm);
}

.post__content figure {
  margin: var(--space-lg) 0;
}

.post__content figcaption {
  font-size: var(--text-sm);
  color: var(--color-caption);
  text-align: center;
  margin-top: var(--space-xs);
  font-style: italic;
}

/* Post footer: tags, share, author bio */
.post__footer {
  max-width: 720px;
  margin: var(--space-xl) auto 0;
  padding-top: var(--space-lg);
  border-top: 1px solid var(--color-border);
}

.post__tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2xs);
  margin-bottom: var(--space-md);
}

.post__tag {
  font-size: var(--text-xs);
  font-weight: var(--fw-medium);
  color: var(--color-caption);
  background-color: var(--color-bg-alt);
  padding: var(--space-3xs) var(--space-xs);
  border-radius: var(--radius-full);
  text-decoration: none;
  transition: var(--transition-colors);
}

.post__tag:hover {
  background-color: var(--nps-gold);
  color: var(--nps-near-black);
}

.post__author {
  display: flex;
  gap: var(--space-md);
  align-items: center;
  padding: var(--space-md);
  background-color: var(--color-bg-alt);
  border-radius: var(--radius-md);
}

.post__author-avatar {
  width: 64px;
  height: 64px;
  border-radius: var(--radius-full);
  object-fit: cover;
  flex-shrink: 0;
}

.post__author-name {
  font-family: var(--font-heading);
  font-size: var(--text-lg);
  font-weight: var(--fw-semibold);
  color: var(--color-heading);
  margin-bottom: var(--space-3xs);
}

.post__author-bio {
  font-size: var(--text-sm);
  color: var(--color-caption);
  line-height: var(--lh-body);
}

/* Blog sidebar */
.blog-sidebar__widget {
  margin-bottom: var(--space-lg);
  padding-bottom: var(--space-lg);
  border-bottom: 1px solid var(--color-border);
}

.blog-sidebar__widget:last-child {
  border-bottom: none;
}

.blog-sidebar__title {
  font-family: var(--font-heading);
  font-size: var(--text-xl);
  font-weight: var(--fw-semibold);
  color: var(--color-heading);
  margin-bottom: var(--space-sm);
}

/* Pagination */
.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2xs);
  margin-top: var(--space-xl);
}

.pagination a,
.pagination span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  font-size: var(--text-sm);
  font-weight: var(--fw-medium);
  border-radius: var(--radius-sm);
  padding: 0 var(--space-xs);
  transition: var(--transition-colors);
}

.pagination a {
  color: var(--color-body);
  text-decoration: none;
}

.pagination a:hover {
  background-color: var(--color-bg-alt);
  color: var(--nps-gold);
}

.pagination .current {
  background-color: var(--nps-gold);
  color: var(--nps-near-black);
  font-weight: var(--fw-semibold);
}


/* ============================================================================
   14. IMAGE GALLERY / GRID
   ========================================================================= */

.gallery {
  display: grid;
  gap: var(--space-xs);
}

.gallery--2col {
  grid-template-columns: repeat(2, 1fr);
}

.gallery--3col {
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
}

.gallery--masonry {
  columns: 3;
  column-gap: var(--space-xs);
}

.gallery--masonry .gallery__item {
  break-inside: avoid;
  margin-bottom: var(--space-xs);
}

.gallery__item {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius-md);
  cursor: pointer;
}

.gallery__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--duration-slow) var(--ease-out);
}

.gallery__item:hover img {
  transform: scale(1.05);
}

/* Hover overlay */
.gallery__item::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(31, 27, 22, 0.6) 0%, transparent 50%);
  opacity: 0;
  transition: opacity var(--duration-base) var(--ease-default);
}

.gallery__item:hover::after {
  opacity: 1;
}

.gallery__caption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: var(--space-sm);
  color: #FFFFFF;
  font-size: var(--text-sm);
  font-weight: var(--fw-medium);
  z-index: calc(var(--z-base) + 1);
  opacity: 0;
  transform: translateY(8px);
  transition: opacity var(--duration-base) var(--ease-out),
              transform var(--duration-base) var(--ease-out);
}

.gallery__item:hover .gallery__caption {
  opacity: 1;
  transform: translateY(0);
}

/* Featured / Hero gallery item spanning 2 columns */
.gallery__item--featured {
  grid-column: span 2;
  grid-row: span 2;
}

/* Lightbox overlay (basic structure — JS-powered) */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: var(--z-modal);
  background-color: rgba(31, 27, 22, 0.92);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-lg);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--duration-slow) var(--ease-default);
}

.lightbox--active {
  opacity: 1;
  pointer-events: auto;
}

.lightbox img {
  max-width: 90vw;
  max-height: 85vh;
  object-fit: contain;
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-xl);
}

.lightbox__close {
  position: absolute;
  top: var(--space-md);
  right: var(--space-md);
  width: 40px;
  height: 40px;
  background: rgba(255, 255, 255, 0.1);
  border: none;
  border-radius: var(--radius-full);
  color: #FFFFFF;
  font-size: 1.5rem;
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-default);
}

.lightbox__close:hover {
  background: rgba(255, 255, 255, 0.2);
}


/* ============================================================================
   15. LOCAL SEO PAGE LAYOUT
   ========================================================================= */

.local-seo {
  /* Local SEO pages use the standard section system.
     These are supplemental classes for common patterns. */
}

.local-seo__hero {
  position: relative;
  min-height: 50vh;
  min-height: 50dvh;
  display: flex;
  align-items: flex-end;
  background-color: var(--nps-near-black);
  overflow: hidden;
}

.local-seo__hero-bg {
  position: absolute;
  inset: 0;
  object-fit: cover;
  opacity: 0.4;
}

.local-seo__hero-content {
  position: relative;
  z-index: var(--z-base);
  padding: var(--space-xl) 0;
  width: 100%;
}

.local-seo__hero-title {
  color: #FFFFFF;
  font-size: var(--text-4xl);
  margin-bottom: var(--space-xs);
}

.local-seo__hero-subtitle {
  color: var(--nps-sandstone);
  font-size: var(--text-lg);
  max-width: 60ch;
}

/* Service area map placeholder */
.local-seo__map {
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-md);
  background-color: var(--color-bg-alt);
}

.local-seo__map iframe {
  width: 100%;
  height: 100%;
  border: none;
}

/* Area list (city pages) */
.local-seo__areas {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: var(--space-xs);
}

.local-seo__area-link {
  display: flex;
  align-items: center;
  gap: var(--space-2xs);
  padding: var(--space-xs) var(--space-sm);
  background-color: var(--color-bg-alt);
  border-radius: var(--radius-md);
  color: var(--color-body);
  text-decoration: none;
  font-size: var(--text-sm);
  font-weight: var(--fw-medium);
  transition: var(--transition-colors), var(--transition-shadow);
}

.local-seo__area-link:hover {
  background-color: var(--nps-gold);
  color: var(--nps-near-black);
  box-shadow: var(--shadow-sm);
}

.local-seo__area-link::before {
  content: '';
  width: 8px;
  height: 8px;
  background-color: var(--nps-gold);
  border-radius: var(--radius-full);
  flex-shrink: 0;
  transition: background-color var(--duration-fast) var(--ease-default);
}

.local-seo__area-link:hover::before {
  background-color: var(--nps-near-black);
}

/* Structured data card (business info) */
.local-seo__info-card {
  background-color: #FFFFFF;
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  box-shadow: var(--shadow-md);
  border-top: 3px solid var(--nps-gold);
}

.local-seo__info-item {
  display: flex;
  gap: var(--space-xs);
  padding: var(--space-xs) 0;
  border-bottom: 1px solid var(--color-border);
}

.local-seo__info-item:last-child {
  border-bottom: none;
}

.local-seo__info-label {
  font-size: var(--text-sm);
  font-weight: var(--fw-semibold);
  color: var(--color-heading);
  min-width: 120px;
}

.local-seo__info-value {
  font-size: var(--text-sm);
  color: var(--color-body);
}


/* ============================================================================
   16. FOOTER
   ========================================================================= */

.footer {
  background-color: var(--nps-near-black);
  color: var(--nps-off-white);
  padding: var(--space-2xl) 0 0;
}

.footer__top {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-xl);
  padding-bottom: var(--space-xl);
  border-bottom: 1px solid rgba(244, 237, 224, 0.1);
}

.footer__brand p {
  color: var(--nps-stone);
  font-size: var(--text-sm);
  max-width: 300px;
  line-height: var(--lh-body);
  margin-top: var(--space-sm);
}

.footer__logo img {
  height: 44px;
  width: auto;
}

.footer__col-title {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--nps-gold-light);
  margin-bottom: var(--space-sm);
}

.footer__links {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xs);
}

.footer__link {
  font-size: var(--text-sm);
  color: var(--nps-stone);
  text-decoration: none;
  transition: var(--transition-colors);
}

.footer__link:hover {
  color: var(--nps-gold-light);
}

/* Contact info in footer */
.footer__contact-item {
  display: flex;
  align-items: start;
  gap: var(--space-2xs);
  margin-bottom: var(--space-xs);
  font-size: var(--text-sm);
  color: var(--nps-stone);
}

.footer__contact-item svg {
  width: 16px;
  height: 16px;
  color: var(--nps-gold);
  flex-shrink: 0;
  margin-top: 3px;
}

/* Social icons */
.footer__social {
  display: flex;
  gap: var(--space-xs);
  margin-top: var(--space-sm);
}

.footer__social-link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: var(--radius-full);
  background-color: rgba(244, 237, 224, 0.06);
  color: var(--nps-stone);
  transition: var(--transition-colors);
}

.footer__social-link:hover {
  background-color: var(--nps-gold);
  color: var(--nps-near-black);
}

.footer__social-link svg {
  width: 18px;
  height: 18px;
}

/* Bottom bar */
.footer__bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-sm);
  padding: var(--space-md) 0;
  font-size: var(--text-xs);
  color: var(--nps-stone);
}

.footer__legal-links {
  display: flex;
  gap: var(--space-sm);
}

.footer__legal-links a {
  color: var(--nps-stone);
  text-decoration: none;
  transition: var(--transition-colors);
}

.footer__legal-links a:hover {
  color: var(--nps-gold-light);
}


/* ============================================================================
   17. UTILITY CLASSES
   ========================================================================= */

/* ---- Display ---- */
.u-hidden        { display: none !important; }
.u-block         { display: block !important; }
.u-flex          { display: flex !important; }
.u-grid          { display: grid !important; }
.u-inline-flex   { display: inline-flex !important; }

/* ---- Flexbox Alignment ---- */
.u-flex-center     { align-items: center; justify-content: center; }
.u-flex-between    { justify-content: space-between; }
.u-flex-wrap       { flex-wrap: wrap; }
.u-flex-col        { flex-direction: column; }
.u-items-center    { align-items: center; }
.u-items-start     { align-items: flex-start; }

/* ---- Text Alignment ---- */
.u-text-left   { text-align: left !important; }
.u-text-center { text-align: center !important; }
.u-text-right  { text-align: right !important; }

/* ---- Text Colors ---- */
.u-text-gold     { color: var(--nps-gold) !important; }
.u-text-forest   { color: var(--nps-forest) !important; }
.u-text-white    { color: #FFFFFF !important; }
.u-text-muted    { color: var(--color-caption) !important; }

/* ---- Background Colors ---- */
.u-bg-cream    { background-color: var(--nps-cream) !important; }
.u-bg-offwhite { background-color: var(--nps-off-white) !important; }
.u-bg-dark     { background-color: var(--nps-near-black) !important; }
.u-bg-gold     { background-color: var(--nps-gold) !important; }

/* ---- Spacing Utilities ---- */
/* Margin top */
.u-mt-0    { margin-top: 0 !important; }
.u-mt-xs   { margin-top: var(--space-xs) !important; }
.u-mt-sm   { margin-top: var(--space-sm) !important; }
.u-mt-md   { margin-top: var(--space-md) !important; }
.u-mt-lg   { margin-top: var(--space-lg) !important; }
.u-mt-xl   { margin-top: var(--space-xl) !important; }
.u-mt-2xl  { margin-top: var(--space-2xl) !important; }

/* Margin bottom */
.u-mb-0    { margin-bottom: 0 !important; }
.u-mb-xs   { margin-bottom: var(--space-xs) !important; }
.u-mb-sm   { margin-bottom: var(--space-sm) !important; }
.u-mb-md   { margin-bottom: var(--space-md) !important; }
.u-mb-lg   { margin-bottom: var(--space-lg) !important; }
.u-mb-xl   { margin-bottom: var(--space-xl) !important; }
.u-mb-2xl  { margin-bottom: var(--space-2xl) !important; }

/* Padding top */
.u-pt-0    { padding-top: 0 !important; }
.u-pt-sm   { padding-top: var(--space-sm) !important; }
.u-pt-md   { padding-top: var(--space-md) !important; }
.u-pt-lg   { padding-top: var(--space-lg) !important; }
.u-pt-xl   { padding-top: var(--space-xl) !important; }

/* Padding bottom */
.u-pb-0    { padding-bottom: 0 !important; }
.u-pb-sm   { padding-bottom: var(--space-sm) !important; }
.u-pb-md   { padding-bottom: var(--space-md) !important; }
.u-pb-lg   { padding-bottom: var(--space-lg) !important; }
.u-pb-xl   { padding-bottom: var(--space-xl) !important; }

/* Padding X (horizontal) */
.u-px-sm   { padding-left: var(--space-sm) !important; padding-right: var(--space-sm) !important; }
.u-px-md   { padding-left: var(--space-md) !important; padding-right: var(--space-md) !important; }
.u-px-lg   { padding-left: var(--space-lg) !important; padding-right: var(--space-lg) !important; }

/* ---- Width / Max-Width ---- */
.u-w-full     { width: 100% !important; }
.u-max-w-sm   { max-width: var(--container-sm) !important; }
.u-max-w-md   { max-width: var(--container-md) !important; }
.u-max-w-lg   { max-width: var(--container-lg) !important; }
.u-max-w-xl   { max-width: var(--container-xl) !important; }
.u-mx-auto    { margin-left: auto !important; margin-right: auto !important; }

/* ---- Border / Radius ---- */
.u-rounded     { border-radius: var(--radius-md) !important; }
.u-rounded-lg  { border-radius: var(--radius-lg) !important; }
.u-rounded-full { border-radius: var(--radius-full) !important; }

/* ---- Shadow ---- */
.u-shadow-sm { box-shadow: var(--shadow-sm) !important; }
.u-shadow-md { box-shadow: var(--shadow-md) !important; }
.u-shadow-lg { box-shadow: var(--shadow-lg) !important; }

/* ---- Overflow ---- */
.u-overflow-hidden { overflow: hidden !important; }

/* ---- Position ---- */
.u-relative { position: relative !important; }

/* ---- Visually Hidden (screen readers only) ---- */
.u-sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}


/* ============================================================================
   18. ANIMATIONS & TRANSITIONS
   ========================================================================= */

/* Scroll-triggered reveal (add via JS — IntersectionObserver) */
.nps-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity var(--duration-slower) var(--ease-out),
              transform var(--duration-slower) var(--ease-out);
}

.nps-reveal--visible {
  opacity: 1 !important;
  transform: translateY(0) !important;
}

.nps-reveal--delay-1 { transition-delay: 100ms; }
.nps-reveal--delay-2 { transition-delay: 200ms; }
.nps-reveal--delay-3 { transition-delay: 300ms; }
.nps-reveal--delay-4 { transition-delay: 400ms; }

/* Fade in from left */
.nps-reveal--left {
  opacity: 0;
  transform: translateX(-32px);
}

.nps-reveal--left.nps-reveal--visible {
  opacity: 1;
  transform: translateX(0);
}

/* Fade in from right */
.nps-reveal--right {
  opacity: 0;
  transform: translateX(32px);
}

.nps-reveal--right.nps-reveal--visible {
  opacity: 1;
  transform: translateX(0);
}

/* Scale up */
.nps-reveal--scale {
  opacity: 0;
  transform: scale(0.95);
}

.nps-reveal--scale.nps-reveal--visible {
  opacity: 1;
  transform: scale(1);
}

/* Keyframes */
@keyframes nps-bounce {
  0%, 20%, 50%, 80%, 100% { transform: translateX(-50%) translateY(0); }
  40% { transform: translateX(-50%) translateY(-8px); }
  60% { transform: translateX(-50%) translateY(-4px); }
}

@keyframes nps-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes nps-slide-up {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes nps-gold-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(184, 137, 62, 0.3); }
  50%      { box-shadow: 0 0 0 12px rgba(184, 137, 62, 0); }
}

/* Pulsing CTA attention ring */
.btn--pulse {
  animation: nps-gold-pulse 2.5s ease-in-out infinite;
}


/* ============================================================================
   19. ACCESSIBILITY
   ========================================================================= */

/* Focus visible — keyboard-only focus ring */
:focus-visible {
  outline: 2px solid var(--color-focus-ring);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}

/* Remove outline for mouse clicks */
:focus:not(:focus-visible) {
  outline: none;
}

/* Skip to content link */
.skip-link {
  position: fixed;
  top: -100%;
  left: var(--space-sm);
  z-index: var(--z-toast);
  background-color: var(--nps-gold);
  color: var(--nps-near-black);
  padding: var(--space-xs) var(--space-md);
  border-radius: 0 0 var(--radius-md) var(--radius-md);
  font-weight: var(--fw-semibold);
  font-size: var(--text-sm);
  text-decoration: none;
  transition: top var(--duration-fast) var(--ease-default);
}

.skip-link:focus {
  top: 0;
}

/* Reduced motion — disable animations for users who prefer it */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  .nps-reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  .hero__scroll {
    animation: none;
  }
}

/* High contrast mode adjustments */
@media (prefers-contrast: high) {
  :root {
    --color-border: rgba(107, 94, 72, 0.5);
    --shadow-sm: none;
    --shadow-md: none;
    --shadow-lg: none;
  }

  .card,
  .testimonial,
  .blog-card {
    border: 2px solid var(--color-heading);
  }

  .btn--secondary {
    border-width: 3px;
  }
}

/* Forced colors (Windows High Contrast) */
@media (forced-colors: active) {
  .btn--primary {
    border: 2px solid ButtonText;
  }

  .nav__link::after {
    background-color: LinkText;
  }
}


/* ============================================================================
   20. PRINT STYLES
   ========================================================================= */

@media print {
  *,
  *::before,
  *::after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }

  body {
    font-size: 11pt;
    line-height: 1.5;
  }

  a,
  a:visited {
    text-decoration: underline;
    color: #000 !important;
  }

  /* Show URLs in print */
  a[href]::after {
    content: ' (' attr(href) ')';
    font-size: 0.8em;
    color: #555;
  }

  a[href^="#"]::after,
  a[href^="javascript:"]::after {
    content: '';
  }

  h1, h2, h3, h4, h5, h6 {
    page-break-after: avoid;
    break-after: avoid;
  }

  img {
    max-width: 100% !important;
    page-break-inside: avoid;
    break-inside: avoid;
  }

  p, h2, h3 {
    orphans: 3;
    widows: 3;
  }

  /* Hide nav, footer, hero video, buttons, forms */
  .nav,
  .footer,
  .hero__media video,
  .hero__overlay,
  .hero__scroll,
  .btn,
  .form,
  .booking-embed,
  .lightbox,
  .nav__mobile-menu,
  .nav__overlay {
    display: none !important;
  }

  .hero {
    min-height: auto;
    padding: 2rem 0;
  }

  .hero__title {
    color: #000 !important;
    text-shadow: none !important;
    font-size: 24pt;
  }

  .section {
    padding: 1.5rem 0;
    page-break-inside: avoid;
    break-inside: avoid;
  }

  .container {
    width: 100%;
    max-width: 100%;
    padding: 0;
  }
}


/* ============================================================================
   21. RESPONSIVE BREAKPOINTS
   Mobile-first: base → 768px → 1024px → 1280px
   ========================================================================= */

/* ---- Tablet (768px+) ---- */
@media (min-width: 768px) {

  /* Navigation: show desktop menu */
  .nav__toggle {
    display: none;
  }

  .nav__menu {
    display: flex;
  }

  /* Layout splits */
  .section__split {
    grid-template-columns: 1fr 1fr;
  }

  /* Form rows */
  .form__row {
    grid-template-columns: 1fr 1fr;
  }

  /* Footer grid */
  .footer__top {
    grid-template-columns: 1.5fr 1fr 1fr 1fr;
  }

  /* Gallery */
  .gallery--2col {
    grid-template-columns: repeat(2, 1fr);
  }

  /* Blog grid with sidebar */
  .blog-layout {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: var(--space-xl);
  }

  /* Process steps horizontal variant */
  .process--horizontal {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--space-md);
  }

  .process--horizontal .process__step {
    grid-template-columns: 1fr;
    text-align: center;
    border-top: none;
    border-bottom: none;
  }

  .process--horizontal .process__number {
    margin: 0 auto var(--space-sm);
  }
}

/* ---- Small Mobile: show hamburger ---- */
@media (max-width: 767px) {

  .nav__menu {
    display: none;
  }

  .nav__toggle {
    display: flex;
  }

  /* Stack hero actions */
  .hero__actions {
    flex-direction: column;
    align-items: center;
  }

  .hero__actions .btn {
    width: 100%;
    max-width: 320px;
  }

  /* Gallery fallback */
  .gallery--masonry {
    columns: 2;
  }

  .gallery__item--featured {
    grid-column: span 1;
    grid-row: span 1;
  }

  /* Footer stacks */
  .footer__bottom {
    flex-direction: column;
    text-align: center;
  }

  /* Blog card horizontal → vertical */
  .post__author {
    flex-direction: column;
    text-align: center;
  }
}

/* ---- Desktop (1024px+) ---- */
@media (min-width: 1024px) {

  /* Larger section padding */
  .section {
    padding: var(--space-3xl) 0;
  }

  /* Gallery 3-column masonry */
  .gallery--masonry {
    columns: 3;
  }

  /* Blog sidebar wider */
  .blog-layout {
    grid-template-columns: 1fr 340px;
  }
}

/* ---- Large Desktop (1280px+) ---- */
@media (min-width: 1280px) {

  /* Nav wider spacing */
  .nav__menu {
    gap: var(--space-lg);
  }

  /* Even larger hero text at wide viewports already handled by clamp(),
     but we can increase max section padding. */
  .section--hero-extra {
    padding: var(--space-3xl) 0;
  }

  /* Gallery masonry 4 columns on very wide screens */
  .gallery--masonry-4 {
    columns: 4;
  }
}


/* ============================================================================
   22. KADENCE THEME OVERRIDES & STRUCTURAL FIXES
   Override Kadence's default containers so NPS sections render full-bleed.
   Also fix WordPress wpautop empty <p> tags and hero video structure.
   ========================================================================= */

/* --- Force full-bleed content area (both fullwidth and default templates) --- */
.page-template-page-fullwidth-php .entry-content-wrap,
.page-template-page-fullwidth-php .entry-content,
.page-template-page-fullwidth-php .content-wrap,
.page-template-page-fullwidth-php .site-main,
.page-template-page-fullwidth-php .content-container,
.page-template-page-fullwidth-php .content-area,
.page-template-page-fullwidth-php #inner-wrap,
.nps-page .entry-content-wrap,
.nps-page .entry-content,
.nps-page .content-wrap,
.nps-page .site-main,
.nps-page .content-container,
.nps-page .content-area,
.nps-page #inner-wrap {
  max-width: none !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  width: 100% !important;
}

/* Remove Kadence's default page content padding */
.page-template-page-fullwidth-php .entry.content-bg,
.nps-page .entry.content-bg {
  padding: 0 !important;
  margin: 0 !important;
  max-width: none !important;
}

.page-template-page-fullwidth-php .entry-content,
.nps-page .entry-content {
  margin: 0 !important;
  padding: 0 !important;
}

/* --- Fix hero video (HTML uses .hero__video, CSS expects .hero__media wrapper) --- */
.hero__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  z-index: 0;
}

/* Adjust hero stacking to work with z-index 0 video */
.hero__overlay {
  z-index: 1 !important;
}
.hero__content {
  z-index: 2 !important;
}
/* Hide hero logo overlay and scroll indicator */
.hero__logo {
  display: none !important;
}
.hero__scroll-indicator,
.hero__scroll {
  display: none !important;
}

/* Hero poster fallback if video fails */
.hero {
  background-image: url('/wp-content/uploads/2026/05/hero-poster.jpg');
  background-size: cover;
  background-position: center;
}

/* --- Fix WordPress wpautop empty paragraphs --- */
.entry-content p:empty,
.hero p:empty,
.section p:empty {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* --- Kadence header conflicts --- */
.site-header-wrap {
  position: relative;
  z-index: var(--z-nav);
}

/* --- Kadence Nav Overrides --- */

/* Shift logo left */
.site-header-row .site-header-section-left {
  padding-left: 0 !important;
}
.site-branding {
  margin-left: -8px !important;
}

/* Bold all nav items */
#primary-menu > li > a {
  font-weight: 700 !important;
  letter-spacing: 0.02em !important;
}

/* CTA button styling for "Book a Discovery Call" */
#primary-menu .menu-item-cta > a {
  font-size: var(--text-sm) !important;
  font-weight: var(--fw-semibold) !important;
  letter-spacing: var(--ls-wide) !important;
  text-transform: uppercase !important;
  color: var(--nps-near-black) !important;
  background-color: #C9A96E !important; /* match homepage primary buttons (brighter gold) */
  padding: 10px 22px !important;
  border-radius: var(--radius-sm) !important;
  text-decoration: none !important;
  transition: var(--transition-colors), var(--transition-shadow) !important;
}

#primary-menu .menu-item-cta > a:hover {
  background-color: #b8944f !important; /* match homepage primary button hover */
  color: var(--nps-near-black) !important;
  box-shadow: var(--shadow-gold) !important;
}

/* Active/current page nav item → gold, so the page you're on is always legible
   on any hero image (non-active items stay white). Overrides Kadence's default
   current-menu-item color (var(--global-palette3)), which renders too dark on
   some heroes. Keeps gold on hover/focus of the active item too. (2026-06-05) */
.main-navigation .primary-menu-container > ul > li.menu-item.current-menu-item > a,
.main-navigation .primary-menu-container > ul > li.menu-item.current-menu-ancestor > a,
.main-navigation .primary-menu-container > ul > li.menu-item.current-menu-item > a:hover,
.main-navigation .primary-menu-container > ul > li.menu-item.current-menu-item > a:focus {
  color: var(--nps-gold-light) !important;
}
/* Mobile drawer: current page → gold too, for consistency */
.mobile-navigation ul li.current-menu-item > a,
.mobile-navigation ul li.current-menu-item.menu-item-has-children > .drawer-nav-drop-wrap {
  color: var(--nps-gold-light) !important;
}

/* Make hero account for WP admin bar when logged in */
.admin-bar .hero {
  min-height: calc(100vh - 32px);
  min-height: calc(100dvh - 32px);
}

/* --- Fix Kadence link color overrides --- */
.entry-content a.btn,
.entry-content a.btn--primary,
.entry-content a.btn--secondary,
.entry-content a.btn--ghost,
.entry-content a.btn--white {
  color: inherit;
  text-decoration: none;
}

.entry-content a.btn--primary {
  color: var(--nps-near-black) !important;
  background-color: var(--nps-gold);
}

.entry-content a.btn--primary:hover {
  color: var(--nps-near-black) !important;
  background-color: var(--nps-gold-light);
}

.entry-content a.btn--ghost,
.entry-content a.btn--white {
  color: #FFFFFF !important;
}

/* --- Stats bar structural fix --- */
.stats-bar {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: var(--space-lg);
}

.stat {
  text-align: center;
}

.stat__number {
  font-family: var(--font-heading);
  font-size: var(--text-4xl);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: var(--nps-gold);
}

.stat__label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--fw-medium);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  margin-top: var(--space-2xs);
}

/* --- Ensure sections are full bleed --- */
.section {
  width: 100vw;
  margin-left: calc(50% - 50vw);
  position: relative;
}

/* --- Fix Kadence default body/heading font override --- */
body.page-template-page-fullwidth-php .entry-content,
body.page-template-default .entry-content,
body.page .entry-content {
  font-family: var(--font-body);
  font-size: var(--text-base);
  line-height: var(--lh-body);
  color: var(--color-body);
}

body.page-template-page-fullwidth-php .entry-content h1,
body.page-template-page-fullwidth-php .entry-content h2,
body.page-template-page-fullwidth-php .entry-content h3,
body.page-template-page-fullwidth-php .entry-content h4,
body.page-template-page-fullwidth-php .entry-content h5,
body.page-template-page-fullwidth-php .entry-content h6,
body.page-template-default .entry-content h1,
body.page-template-default .entry-content h2,
body.page-template-default .entry-content h3,
body.page-template-default .entry-content h4,
body.page-template-default .entry-content h5,
body.page-template-default .entry-content h6,
body.page .entry-content h1,
body.page .entry-content h2,
body.page .entry-content h3,
body.page .entry-content h4,
body.page .entry-content h5,
body.page .entry-content h6 {
  font-family: var(--font-heading) !important;
  color: var(--color-heading) !important;
}

/* Override heading color for dark sections, hero, and CTA sections.
   Must be MORE specific than body.page-template... .entry-content h1 (0-2-2) */
body .entry-content .hero h1,
body .entry-content .hero h2,
body .entry-content .hero h3,
body .entry-content .hero__title,
body .entry-content .section--dark h1,
body .entry-content .section--dark h2,
body .entry-content .section--dark h3,
body .entry-content .section--dark h4,
body .entry-content .section--cta-final h1,
body .entry-content .section--cta-final h2,
body .entry-content .cta-final__title {
  color: #FFFFFF !important;
}

body .entry-content .hero__eyebrow,
body .entry-content .section--dark .eyebrow,
body .entry-content .section--dark h6 {
  color: var(--nps-cream) !important;
  text-align: center !important;
}

/* Ensure all hero text is white */
body .entry-content .hero,
body .entry-content .hero p,
body .entry-content .hero span,
body .entry-content .hero .hero__subtitle {
  color: #FFFFFF !important;
}
body .entry-content .hero .hero__subtitle {
  color: var(--nps-off-white) !important;
  font-size: clamp(1.25rem, 2.5vw, 1.65rem) !important;
  font-weight: 600 !important;
}
body .entry-content .hero .btn--primary {
  color: var(--nps-near-black) !important;
}
body .entry-content .hero .hero__eyebrow {
  color: var(--nps-cream) !important;
  text-align: center !important;
}

/* Dark section text overrides */
body .entry-content .section--dark p,
body .entry-content .section--dark span,
body .entry-content .section--dark li {
  color: var(--nps-off-white) !important;
}
body .entry-content .section--dark a {
  color: var(--nps-gold-light) !important;
}

/* ============================================================================
   23. AESTHETIC OVERHAUL — GHL + PROPOSAL BLEND
   Match the GHL site's spacious premium feel with Rissell/Ottmar elegance.
   Warm cream backgrounds, bold dark headings, forest green CTAs,
   generous whitespace, and strong visual hierarchy.
   ========================================================================= */

/* --- Override Kadence body background to warm cream --- */
body,
body.wp-theme-kadence,
body.nps-page,
.site,
.wp-site-blocks {
  background-color: var(--nps-cream) !important;
}

/* --- Stronger heading typography (GHL-style bold, dark) --- */
body .entry-content h2,
body .entry-content .h2,
.section h2 {
  font-weight: var(--fw-bold) !important;
  font-size: var(--text-4xl) !important;
  color: var(--nps-ink) !important;
  line-height: var(--lh-heading);
  letter-spacing: -0.01em;
}

body .entry-content h3,
body .entry-content .h3,
.section h3 {
  font-weight: var(--fw-bold) !important;
  font-size: var(--text-3xl) !important;
  color: var(--nps-ink) !important;
}

/* Section body text — darker and more readable */
.section p,
.section li,
body .entry-content .section p {
  color: var(--nps-dark-brown) !important;
  font-size: var(--text-base);
  line-height: var(--lh-body);
}

/* --- Gold italic accent words in headings (from proposals) --- */
.section h2 em,
.section h3 em,
body .entry-content h2 em,
body .entry-content h3 em {
  font-style: italic;
  color: var(--nps-gold) !important;
  font-weight: var(--fw-bold);
}

/* --- Eyebrow / label text — gold uppercase, more prominent --- */
.eyebrow,
.section .eyebrow {
  color: var(--nps-forest) !important;
  font-weight: var(--fw-bold) !important;
  font-size: var(--text-sm) !important;
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  margin-bottom: var(--space-sm);
}

/* --- Forest green CTA buttons (matching GHL site) --- */
.btn--forest,
.btn--primary-green {
  background-color: var(--nps-forest) !important;
  color: #FFFFFF !important;
  border-color: var(--nps-forest) !important;
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-wide);
  padding: var(--space-sm) var(--space-lg);
  border-radius: var(--radius-md);
  font-size: var(--text-base);
  text-transform: none;
}

.btn--forest:hover,
.btn--primary-green:hover {
  background-color: #556244 !important;
  color: #FFFFFF !important;
  box-shadow: 0 4px 16px rgba(99, 109, 75, 0.3);
  transform: translateY(-1px);
}

/* Make default primary buttons larger and more impactful */
.section .btn--primary,
body .entry-content .btn--primary {
  padding: var(--space-sm) var(--space-lg) !important;
  font-size: var(--text-base) !important;
  border-radius: var(--radius-md) !important;
  letter-spacing: var(--ls-wide);
}

/* --- Generous section spacing (GHL-style whitespace) --- */
.section {
  padding: var(--space-3xl) 0 !important;
}

/* --- Trust/stats bar enhancement --- */
.trust-bar,
.section.trust-bar {
  background-color: #FFFFFF !important;
  border-top: 1px solid rgba(107, 94, 72, 0.1);
  border-bottom: 1px solid rgba(107, 94, 72, 0.1);
  padding: var(--space-xl) 0 !important;
}

.trust-bar .stat__number,
.stats-bar .stat__number {
  font-size: var(--text-5xl) !important;
  color: var(--nps-forest) !important;
  font-weight: var(--fw-bold);
}

.trust-bar .stat__label,
.stats-bar .stat__label {
  color: var(--nps-dark-brown) !important;
  font-weight: var(--fw-semibold);
  font-size: var(--text-sm);
}

/* --- Section split (two-column) layout refinement --- */
.section__split {
  gap: var(--space-2xl) !important;
}

/* Images in sections — larger, more impactful */
.section__image-wrap img,
.section img:not(.hero__logo img):not(.nav__logo img):not(.service-img-card__bg) {
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  width: 100%;
  height: auto;
}

/* --- Card enhancements --- */
.card {
  background-color: #FFFFFF;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  overflow: hidden;
  transition: var(--transition-shadow), var(--transition-transform);
}

.card:hover {
  box-shadow: var(--shadow-xl);
  transform: translateY(-4px);
}

/* --- Icon/SVG elements (like the house icon in pain points) --- */
.section svg,
.section .icon {
  color: var(--nps-forest);
  fill: none;
  stroke: var(--nps-forest);
  width: 48px;
  height: 48px;
  margin-bottom: var(--space-sm);
}

/* --- Testimonial cards — white on cream --- */
.testimonial {
  background-color: #FFFFFF !important;
  border-radius: var(--radius-lg);
  padding: var(--space-lg) !important;
  box-shadow: var(--shadow-md);
  border-left: 4px solid var(--nps-gold);
}

.testimonial__quote,
.testimonial blockquote p {
  font-size: var(--text-lg) !important;
  color: var(--nps-dark-brown) !important;
  font-style: italic;
  line-height: var(--lh-body);
}

.testimonial__author,
.testimonial cite {
  color: var(--nps-forest) !important;
  font-weight: var(--fw-semibold) !important;
}

/* --- Process/How-it-works steps — cleaner look --- */
.process__step {
  background-color: #FFFFFF;
  border-radius: var(--radius-lg);
  padding: var(--space-lg);
  box-shadow: var(--shadow-sm);
}

.process__number {
  color: var(--nps-forest) !important;
  border-color: var(--nps-forest) !important;
  font-weight: var(--fw-bold);
}

.process__title {
  color: var(--nps-ink) !important;
  font-weight: var(--fw-bold);
}

/* --- CTA sections — dark with more visual impact --- */
.section--cta-final,
.section--cta {
  background-color: var(--nps-near-black) !important;
  padding: var(--space-3xl) 0 !important;
}

.section--cta-final .btn--primary,
.section--cta .btn--primary {
  background-color: var(--nps-gold) !important;
  color: var(--nps-near-black) !important;
  padding: var(--space-sm) var(--space-xl) !important;
  font-size: var(--text-lg) !important;
}

/* --- Footer — refined dark section --- */
.footer {
  background-color: var(--nps-near-black) !important;
}

/* --- Ensure proper heading colors on dark sections --- */
body .entry-content .section--dark h2,
body .entry-content .section--dark h3,
body .entry-content .section--cta-final h2,
body .entry-content .section--cta h2 {
  color: #FFFFFF !important;
}

body .entry-content .section--dark p,
body .entry-content .section--cta-final p,
body .entry-content .section--cta p {
  color: var(--nps-off-white) !important;
}

/* --- Pain point items — forest green check icons --- */
.pain-point,
.benefit-item {
  display: flex;
  gap: var(--space-sm);
  align-items: flex-start;
  margin-bottom: var(--space-md);
}

.pain-point svg,
.benefit-item svg,
.pain-point .icon,
.benefit-item .icon {
  color: var(--nps-forest) !important;
  stroke: var(--nps-forest) !important;
  flex-shrink: 0;
  width: 28px;
  height: 28px;
}

/* --- Experience badge overlay (like GHL's "20+ Years") --- */
.experience-badge {
  position: absolute;
  bottom: var(--space-md);
  right: var(--space-md);
  background-color: rgba(31, 27, 22, 0.85);
  color: #FFFFFF;
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-md);
  text-align: center;
  backdrop-filter: blur(8px);
}

.experience-badge__number {
  font-family: var(--font-heading);
  font-size: var(--text-4xl);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: #FFFFFF;
}

.experience-badge__label {
  font-size: var(--text-sm);
  font-weight: var(--fw-medium);
  letter-spacing: var(--ls-wide);
  color: var(--nps-sandstone);
  margin-top: var(--space-3xs);
}

/* --- Section image with badge wrapper --- */
.image-with-badge {
  position: relative;
  display: inline-block;
}

/* --- Gallery grid — polish --- */
.gallery__item img {
  border-radius: var(--radius-lg);
  transition: transform var(--duration-slow) var(--ease-out);
}

.gallery__item:hover img {
  transform: scale(1.03);
}

/* --- Blog cards on cream background --- */
.blog-card {
  background-color: #FFFFFF !important;
  border-radius: var(--radius-lg) !important;
  overflow: hidden;
  box-shadow: var(--shadow-md);
}

.blog-card__title {
  color: var(--nps-ink) !important;
  font-weight: var(--fw-bold) !important;
}

/* --- Form inputs — clean on cream --- */
.form__input,
.form__textarea,
input[type="text"],
input[type="email"],
input[type="tel"],
textarea {
  background-color: #FFFFFF !important;
  border: 1px solid rgba(107, 94, 72, 0.25) !important;
  border-radius: var(--radius-md) !important;
  padding: var(--space-sm) !important;
  font-size: var(--text-base) !important;
  color: var(--nps-dark-brown) !important;
}

.form__input:focus,
.form__textarea:focus,
input:focus,
textarea:focus {
  border-color: var(--nps-gold) !important;
  box-shadow: 0 0 0 3px rgba(184, 137, 62, 0.15) !important;
  outline: none !important;
}

/* ============================================================================
   Section 24 — Critical Rendering Fixes (post-audit)
   Fixes: process cards, link colors, stats, spacing, dark-section contrast
   ========================================================================= */

/* --- CRITICAL: Process step cards inherit cream text from dark parent.
   Force dark text on white cards inside dark sections.
   Must use higher specificity than "body .entry-content .section--dark p" --- */
body .entry-content .section--dark .process__step,
body .entry-content .section--dark .process__step p,
body .entry-content .section--dark .process__step li,
body .entry-content .section--dark .process__step span,
body .entry-content .section--dark .card,
body .entry-content .section--dark .card p,
body .section--dark .process__step,
body .section--dark .process__step p,
body .section--dark .process__step li,
body .section--dark .process__step span {
  color: var(--nps-dark-brown) !important;
}

body .entry-content .section--dark .process__step h3,
body .entry-content .section--dark .process__step .process__title,
body .entry-content .section--dark .card h3,
body .section--dark .process__step h3 {
  color: var(--nps-ink) !important;
}

.section--dark .process__step .process__number {
  color: var(--nps-forest) !important;
  border-color: var(--nps-forest) !important;
}

/* Eyebrow on dark sections should be gold for contrast */
.section--dark .eyebrow {
  color: var(--nps-gold) !important;
}

/* --- All links: forest green, not default blue --- */
.section a:not(.btn):not([class*="btn"]),
.entry-content a:not(.btn):not([class*="btn"]),
body .entry-content .section a:not(.btn):not([class*="btn"]) {
  color: var(--nps-forest) !important;
  text-decoration: none;
  font-weight: var(--fw-semibold);
  transition: color var(--duration-fast) var(--ease-out);
}

.section a:not(.btn):not([class*="btn"]):hover,
.entry-content a:not(.btn):not([class*="btn"]):hover {
  color: var(--nps-gold) !important;
}

/* Dark section links should be gold */
.section--dark a:not(.btn):not([class*="btn"]),
.section--cta-final a:not(.btn):not([class*="btn"]) {
  color: var(--nps-gold) !important;
}

.section--dark a:not(.btn):not([class*="btn"]):hover {
  color: #FFFFFF !important;
}

/* --- Stats / "20+ Years" section — make numbers pop --- */
.stat__number {
  font-family: var(--font-heading) !important;
  font-size: var(--text-5xl) !important;
  font-weight: var(--fw-bold) !important;
  color: var(--nps-forest) !important;
  line-height: 1 !important;
}

.stat__suffix {
  font-family: var(--font-heading) !important;
  font-size: var(--text-3xl) !important;
  color: var(--nps-forest) !important;
}

.stat__label {
  font-size: var(--text-sm) !important;
  font-weight: var(--fw-semibold) !important;
  color: var(--nps-dark-brown) !important;
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
}

/* --- Reduce excessive section gaps --- */
.section + .section {
  margin-top: 0 !important;
}

/* Service cards in "What We Build" — grid layout instead of stacked */
.services-grid,
.section--alt .service-card + .service-card {
  margin-top: var(--space-md);
}

/* --- Button styling for outlined/ghost buttons --- */
.btn--outline,
.btn--secondary,
.btn--ghost {
  background-color: transparent !important;
  border: 2px solid var(--nps-forest) !important;
  color: var(--nps-forest) !important;
  font-weight: var(--fw-semibold);
  padding: var(--space-xs) var(--space-lg);
  border-radius: var(--radius-md);
}

.btn--outline:hover,
.btn--secondary:hover,
.btn--ghost:hover {
  background-color: var(--nps-forest) !important;
  color: #FFFFFF !important;
}

/* Dark section outlined buttons */
.section--dark .btn--outline,
.section--dark .btn--secondary,
.section--dark .btn--ghost {
  border-color: var(--nps-gold) !important;
  color: var(--nps-gold) !important;
}

.section--dark .btn--outline:hover,
.section--dark .btn--secondary:hover {
  background-color: var(--nps-gold) !important;
  color: var(--nps-near-black) !important;
}

/* --- CTA final section text fix --- */
.section--cta-final h2,
.section--cta-final p,
.section--cta h2,
.section--cta p {
  color: #FFFFFF !important;
}

.section--cta-final .eyebrow,
.section--cta .eyebrow {
  color: var(--nps-gold) !important;
}

/* --- Split layout (image + text side-by-side like GHL) better alignment --- */
.split-layout {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: var(--space-2xl) !important;
  align-items: center !important;
}

@media (max-width: 768px) {
  .split-layout {
    grid-template-columns: 1fr !important;
    gap: var(--space-lg) !important;
  }
}

/* --- Service card grid layout --- */
.services-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)) !important;
  gap: var(--space-lg) !important;
}

.service-card {
  background-color: #FFFFFF !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-lg) !important;
  box-shadow: var(--shadow-sm) !important;
  border: 1px solid rgba(107, 94, 72, 0.08);
  transition: var(--transition-shadow), var(--transition-transform);
}

.service-card:hover {
  box-shadow: var(--shadow-lg) !important;
  transform: translateY(-2px);
}

.service-card h3 {
  color: var(--nps-ink) !important;
  font-size: var(--text-xl) !important;
  margin-bottom: var(--space-xs) !important;
}

.service-card p {
  color: var(--nps-dark-brown) !important;
}

/* --- Process steps grid (3-column on desktop) --- */
.process__steps {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)) !important;
  gap: var(--space-lg) !important;
}

.process__step {
  display: block !important;
  grid-template-columns: none !important;
  background-color: #FFFFFF !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-lg) !important;
  box-shadow: var(--shadow-md) !important;
  color: var(--nps-ink) !important;
}

.process__step .process__number {
  margin-bottom: var(--space-sm) !important;
}

.process__step h3,
.process__step .process__title {
  color: var(--nps-ink) !important;
  margin-bottom: var(--space-xs) !important;
  font-size: var(--text-xl) !important;
}

.process__step p,
.process__step .process__text {
  color: var(--nps-dark-brown) !important;
}

/* Remove border between steps when in grid */
.process__steps .process__step + .process__step {
  border-top: none !important;
}

/* --- Testimonials grid --- */
.testimonials-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)) !important;
  gap: var(--space-lg) !important;
}

/* --- Pain points — more visual structure --- */
.pain-points-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)) !important;
  gap: var(--space-lg) !important;
}

.pain-point-item {
  padding: var(--space-md) !important;
}

.pain-point-item h3 {
  font-size: var(--text-xl) !important;
  color: var(--nps-ink) !important;
  margin-bottom: var(--space-xs) !important;
}

/* --- Fix the container width to match GHL's feel --- */
.section__inner,
.section > .container {
  max-width: 1200px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  padding-left: var(--space-lg) !important;
  padding-right: var(--space-lg) !important;
}

/* --- Gallery grid fix (override Kadence .gallery conflict) --- */
section .gallery {
  display: block !important;
  grid-template-columns: none !important;
}

.gallery__grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: var(--space-sm) !important;
  width: 100% !important;
}

.gallery__grid .gallery__item {
  min-height: 250px !important;
  position: relative !important;
  overflow: hidden !important;
  border-radius: var(--radius-md) !important;
}

.gallery__grid .gallery__item--wide {
  grid-column: span 2 !important;
}

.gallery__grid .gallery__item img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  border-radius: var(--radius-md) !important;
}

@media (max-width: 768px) {
  .gallery__grid {
    grid-template-columns: 1fr !important;
  }
  .gallery__grid .gallery__item--wide {
    grid-column: span 1 !important;
  }
}

/* --- Trust bar BEM class fixes (HTML uses trust-bar__ prefix) --- */
.trust-bar__grid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: var(--space-lg) !important;
  align-items: center !important;
  text-align: center !important;
}

.trust-bar__item {
  display: block !important;
  text-align: center !important;
}

.trust-bar__number {
  font-family: var(--font-heading) !important;
  font-size: var(--text-5xl) !important;
  font-weight: var(--fw-bold) !important;
  line-height: 1 !important;
  color: var(--nps-forest) !important;
  display: inline !important;
}

.trust-bar__suffix {
  font-family: var(--font-heading) !important;
  font-size: var(--text-3xl) !important;
  font-weight: var(--fw-bold) !important;
  color: var(--nps-forest) !important;
  display: inline !important;
  margin-left: 2px !important;
}

.trust-bar__label {
  display: block !important;
  font-family: var(--font-body) !important;
  font-size: var(--text-sm) !important;
  font-weight: var(--fw-semibold) !important;
  letter-spacing: var(--ls-wide) !important;
  text-transform: uppercase !important;
  color: var(--nps-dark-brown) !important;
  margin-top: var(--space-xs) !important;
}

.trust-bar__divider {
  display: none !important;
}

@media (max-width: 768px) {
  .trust-bar__grid {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: var(--space-md) !important;
  }
}

@media (max-width: 480px) {
  .trust-bar__grid {
    grid-template-columns: 1fr !important;
  }
}

/* --- Pain points grid fix (HTML uses .grid--pain-points + .pain-point) --- */
.grid.grid--pain-points {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: var(--space-md) !important;
  max-width: 800px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

.pain-point {
  display: grid !important;
  grid-template-columns: 40px 1fr !important;
  grid-template-rows: auto auto !important;
  gap: var(--space-2xs) var(--space-md) !important;
  align-items: start !important;
  padding: var(--space-md) var(--space-lg) !important;
  background: rgba(255,255,255,0.6) !important;
  border-radius: var(--radius-md) !important;
  border-left: 4px solid var(--nps-forest) !important;
}

.pain-point__icon {
  grid-row: 1 / 3 !important;
  grid-column: 1 !important;
  padding-top: 4px !important;
}

.pain-point__title {
  grid-column: 2 !important;
  grid-row: 1 !important;
}

.pain-point__text {
  grid-column: 2 !important;
  grid-row: 2 !important;
}

.pain-point > .pain-point__icon {
  width: 36px !important;
  height: 36px !important;
  min-width: 36px !important;
}

.pain-point__icon svg {
  width: 32px !important;
  height: 32px !important;
  color: var(--nps-forest) !important;
  stroke: var(--nps-forest) !important;
}

.pain-point__title {
  font-family: var(--font-heading) !important;
  font-size: var(--text-xl) !important;
  font-weight: var(--fw-semibold) !important;
  color: var(--nps-ink) !important;
  margin-bottom: var(--space-2xs) !important;
}

.pain-point__text {
  font-size: var(--text-base) !important;
  color: var(--nps-stone) !important;
  line-height: var(--lh-relaxed) !important;
}

@media (max-width: 600px) {
  .pain-point {
    grid-template-columns: 1fr !important;
    text-align: center !important;
    border-left: none !important;
    border-top: 4px solid var(--nps-forest) !important;
  }
  .pain-point__icon {
    grid-row: auto !important;
    grid-column: auto !important;
    margin: 0 auto !important;
  }
  .pain-point__title,
  .pain-point__text {
    grid-column: 1 !important;
  }
}

/* --- Problem Section Redesign (simplified bullets + image) --- */

.section--problem {
  padding-top: var(--space-lg) !important;
  padding-bottom: var(--space-xl) !important;
}

/* Widen container for problem section so title/subtitle can breathe */
.section--problem .container.container--narrow {
  width: min(90%, 1060px) !important;
  max-width: min(90%, 1060px) !important;
}

.section--problem .section-header__eyebrow {
  font-size: var(--text-lg) !important;
  letter-spacing: var(--ls-wider) !important;
}

/* Pain-points section: center the header + CTA. The image/bullets split stays
   asymmetric by design. `.section-cta p` also re-centers the button, which
   wpautop wraps in a max-width <p> that would otherwise sit left. */
.section--problem .section-header { text-align: center !important; }
.section--problem .section-header__subtitle { margin-left: auto !important; margin-right: auto !important; }
.section--problem .section-cta { text-align: center !important; }
.section--problem .section-cta p { margin-left: auto !important; margin-right: auto !important; }

/* Services section eyebrow: center it (its max-width box lacked auto margins). */
#services .eyebrow { margin-left: auto !important; margin-right: auto !important; }

/* Services header: even spacing above/below the title (eyebrow→title was 78px,
   title→subtitle 16px). Equalize both to --space-sm. */
#services .container h2 { margin-top: var(--space-sm) !important; margin-bottom: var(--space-sm) !important; }

/* Services + Testimonials are both cream (same color), so their stacked 128px
   paddings left a large dead zone between the Services CTA and the Testimonials
   eyebrow. Halve the adjacent paddings. */
#services { padding-bottom: calc(var(--space-3xl) / 2) !important; }
#testimonials { padding-top: calc(var(--space-3xl) / 2) !important; }

/* Testimonials eyebrow font is handled by the unified eyebrow rule at the end
   of the stylesheet (kept here intentionally empty so it no longer overrides). */

/* How It Works (expand) section — brighten overlay text on the dark video bg.
   (Overrides the section's inline <style>; IDs/extra specificity needed to win.) */
#nps-expand-title-top, #nps-expand-title-bottom { color: #FFFFFF !important; font-weight: 800 !important; text-shadow: 0 2px 18px rgba(0,0,0,0.55) !important; }
.nps-expand-section .nps-expand-subtitle { color: rgba(255,255,255,0.92) !important; }
#nps-expand-content .nps-expand-step-title { color: #FFFFFF !important; }
#nps-expand-content .nps-expand-step-text { color: rgba(255,255,255,0.9) !important; }
.nps-expand-section .nps-expand-scroll-hint,
.nps-expand-section .nps-expand-scroll-arrow { color: rgba(255,255,255,0.82) !important; }

.problem-split {
  display: grid !important;
  grid-template-columns: 3fr 2fr !important;
  gap: var(--space-xl) !important;
  align-items: center !important;
  margin: var(--space-lg) 0 !important;
}

.problem-split__image img {
  width: 100% !important;
  height: auto !important;
  border-radius: var(--radius-lg) !important;
  object-fit: cover !important;
  box-shadow: var(--shadow-md) !important;
}

.problem-bullets {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: var(--space-sm) !important;
}

.problem-bullets li {
  position: relative !important;
  padding-left: 28px !important;
  font-size: var(--text-base) !important;
  line-height: var(--lh-relaxed) !important;
  color: var(--nps-stone) !important;
}

.problem-bullets li::before {
  content: '' !important;
  position: absolute !important;
  left: 0 !important;
  top: 8px !important;
  width: 12px !important;
  height: 12px !important;
  background-color: var(--nps-forest) !important;
  border-radius: 2px !important;
  opacity: 0.7 !important;
}

.problem-bullets li strong {
  color: var(--nps-ink) !important;
  font-weight: var(--fw-semibold) !important;
}

/* Center the bottom text + CTA in problem section */
.section--problem .section-cta {
  text-align: center !important;
}

@media (max-width: 768px) {
  .problem-split {
    grid-template-columns: 1fr !important;
    gap: var(--space-md) !important;
  }
  .problem-split__image {
    order: -1 !important;
  }
  .section--problem .container.container--narrow {
    width: 90% !important;
    max-width: 90% !important;
  }
}

/* --- Services Section: Image Background Cards --- */

.services-img-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: var(--space-md) !important;
  margin-top: var(--space-lg) !important;
}

.services-img-grid .service-img-card {
  position: relative !important;
  overflow: hidden !important;
  border-radius: var(--radius-lg) !important;
  aspect-ratio: 4 / 3 !important;
  display: flex !important;
  align-items: flex-end !important;
  cursor: pointer !important;
  text-decoration: none !important;
}

.service-img-card__bg {
  display: none !important;
}

.service-img-card {
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
}

.service-img-card__overlay {
  position: absolute !important;
  inset: 0 !important;
  z-index: 2 !important;
  background: linear-gradient(
    to top,
    rgba(42, 40, 32, 0.7) 0%,
    rgba(42, 40, 32, 0.2) 40%,
    rgba(42, 40, 32, 0.0) 100%
  ) !important;
  transition: background 0.4s ease !important;
}

.service-img-card:hover .service-img-card__overlay {
  background: linear-gradient(
    to top,
    rgba(42, 40, 32, 0.75) 0%,
    rgba(42, 40, 32, 0.3) 45%,
    rgba(42, 40, 32, 0.05) 100%
  ) !important;
}

.service-img-card__content {
  position: relative !important;
  z-index: 3 !important;
  padding: var(--space-md) !important;
  width: 100% !important;
}

body .entry-content .service-img-card__title {
  font-family: var(--font-heading) !important;
  font-size: clamp(1.25rem, 2vw, 1.5rem) !important;
  font-weight: var(--fw-semibold) !important;
  color: #FFFFFF !important;
  text-shadow: 0 2px 8px rgba(0,0,0,0.5) !important;
  margin: 0 0 6px 0 !important;
  line-height: 1.2 !important;
}

body .entry-content .service-img-card__desc {
  font-family: var(--font-body) !important;
  font-size: var(--text-sm) !important;
  color: rgba(255, 255, 255, 0.9) !important;
  text-shadow: 0 1px 4px rgba(0,0,0,0.4) !important;
  line-height: var(--lh-body) !important;
  margin: 0 !important;
  max-height: 0 !important;
  overflow: hidden !important;
  opacity: 0 !important;
  transition: max-height 0.4s ease, opacity 0.3s ease !important;
}

body .entry-content .service-img-card:hover .service-img-card__desc {
  max-height: 80px !important;
  opacity: 1 !important;
}

/* Services section CTA — centered */
.services-img-grid--bottom + .section-cta,
.section--alt .services-img-grid--bottom ~ .section-cta {
  text-align: center !important;
  margin-top: var(--space-lg) !important;
}

/* Bottom row: 2 cards centered */
.services-img-grid--bottom {
  display: grid !important;
  grid-template-columns: repeat(2, 1fr) !important;
  gap: var(--space-md) !important;
  margin-top: var(--space-md) !important;
  max-width: 66.666% !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

@media (max-width: 1024px) {
  .services-img-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  .services-img-grid--bottom {
    max-width: 100% !important;
  }
}

@media (max-width: 600px) {
  .services-img-grid,
  .services-img-grid--bottom {
    grid-template-columns: 1fr !important;
  }
  .services-img-grid--bottom {
    max-width: 100% !important;
  }
  .service-img-card__desc {
    max-height: none !important;
    opacity: 1 !important;
  }
}

/* --- Services section: centered header --- */

body .entry-content #services .section-header {
  text-align: center !important;
}

body .entry-content #services .section-header .section-header__eyebrow,
body .entry-content #services .section-header p.section-header__eyebrow {
  text-align: center !important;
}

body .entry-content #services .section-header .section-header__title,
body .entry-content #services .section-header h2 {
  text-align: center !important;
}

body .entry-content #services .section-header .section-header__subtitle,
body .entry-content #services .section-header p.section-header__subtitle {
  text-align: center !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* ============================================
   PARALLAX STICKY CARDS — Recent Projects
   Replaces .gallery grid with sticky scroll cards
   ============================================ */

.parallax-projects {
  /* --gallery-head is measured by JS (nps-animations.js) = pinned-header height.
     Fallback covers a 2–3 line title before JS runs. */
  --gallery-head: 220px;
  --card-inner: 500px;      /* the visible image-card height */
  --card-gap-top: 32px;     /* space between pinned header and the card image */
  --card-gap-bottom: 40px;  /* space below the card image before the next card / CTA */
  background: var(--nps-ink) !important;
  padding-top: 2rem !important;
  padding-bottom: 2.25rem !important;
  overflow: visible !important;
}

/* Section Header — PINNED so the "Recent Projects" context stays in view
   the entire time the cards scroll/change beneath it. */
.parallax-projects__header {
  position: sticky;
  top: 0;
  z-index: 5;
  background: var(--nps-ink);
  text-align: center;
  max-width: 760px;
  margin: 0 auto;
  padding: 0.5rem 1.5rem 1.25rem;
}
body .entry-content .parallax-projects__eyebrow {
  font-family: var(--font-body) !important;
  font-size: clamp(0.6875rem, 0.65rem + 0.15vw, 0.75rem) !important;
  font-weight: 600 !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  color: var(--nps-gold-light) !important;
  margin-bottom: 0.85rem !important;
}
body .entry-content #gallery h2.parallax-projects__title {
  font-family: var(--font-heading) !important;
  font-size: clamp(2.25rem, 1.75rem + 1.6vw, 3.25rem) !important;
  font-weight: 600 !important;
  color: #C9A96E !important;
  line-height: 1.2 !important;
  margin: 0 0 0.85rem !important;
}
body .entry-content .parallax-projects__subtitle {
  font-family: var(--font-body) !important;
  font-size: clamp(1.0625rem, 1rem + 0.3vw, 1.1875rem) !important;
  color: rgba(255, 255, 255, 0.8) !important;
  line-height: 1.6 !important;
  margin: 0 !important;
}

/* Pin wrapper — bounds the sticky header to the card stack so the header
   releases (scrolls away) once the last card is done, instead of following
   you down into the CTA. (Header + stack live inside this; CTA is outside.) */
.parallax-projects__pin {
  position: relative;
}

/* Card Stack Container.
   Pulled up under the pinned header so the card's top padding clears the
   header in BOTH the resting and stuck states (no double gap before the
   first card sticks). */
.parallax-projects__stack {
  position: relative;
  margin-top: calc(-1 * var(--gallery-head));
}

/* Individual Card Wrapper — sticky scroll.
   Each card pins at the top and its image box is pushed below the pinned
   header by --gallery-head, with tight, controlled gaps top and bottom. */
.parallax-card {
  height: calc(var(--gallery-head) + var(--card-inner) + var(--card-gap-top) + var(--card-gap-bottom));
  display: flex;
  align-items: flex-start;
  justify-content: center;
  position: sticky;
  top: 0;
  padding: calc(var(--gallery-head) + var(--card-gap-top)) 1rem 0;
}

/* Inner card (the visible box) */
.parallax-card__inner {
  position: relative;
  width: 100%;
  max-width: 900px;
  height: var(--card-inner);
  overflow: hidden;
  border-radius: 6px;
  box-shadow: 0 25px 60px rgba(0,0,0,0.5);
  margin: 0 auto;
}

/* Background image */
.parallax-card__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s ease;
}
.parallax-card__inner:hover .parallax-card__img {
  transform: scale(1.04);
}

/* Gradient overlay */
.parallax-card__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(42, 40, 32, 0.85) 0%,
    rgba(42, 40, 32, 0.4) 40%,
    rgba(42, 40, 32, 0.1) 100%
  );
  z-index: 1;
}

/* Text content — anchored to bottom */
.parallax-card__content {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 2.5rem;
  z-index: 2;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
}

/* High specificity (#gallery h3.…) so this beats the base heading-color rule;
   white for strong contrast against the project photos. */
body .entry-content #gallery h3.parallax-card__project-name {
  font-family: var(--font-heading) !important;
  font-size: clamp(1.75rem, 4vw, 2.75rem) !important;
  font-weight: 600 !important;
  color: #FFFFFF !important;
  line-height: 1.15 !important;
  margin: 0 !important;
  padding: 0 !important;
  text-shadow: 0 1px 16px rgba(0, 0, 0, 0.45);
}

.parallax-card__location {
  font-family: var(--font-body);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--nps-gold);
  white-space: nowrap;
  flex-shrink: 0;
}

/* Card number badge — top left */
.parallax-card__number {
  position: absolute;
  top: 1.5rem;
  left: 1.5rem;
  z-index: 2;
  font-family: var(--font-heading);
  font-size: 1rem;
  font-weight: 600;
  color: rgba(250, 246, 236, 0.4);
  letter-spacing: 0.05em;
}

/* Tag — top right */
.parallax-card__tag {
  position: absolute;
  top: 1.5rem;
  right: 1.5rem;
  z-index: 2;
  font-family: var(--font-body);
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--nps-cream);
  background: rgba(184, 137, 62, 0.25);
  border: 1px solid rgba(184, 137, 62, 0.4);
  padding: 0.35rem 0.85rem;
  border-radius: 2px;
  backdrop-filter: blur(4px);
}

/* Bottom CTA.
   margin-top compensates for the stack's negative margin-bottom so the CTA
   still sits its normal distance below the final card. */
.parallax-projects__cta {
  text-align: center;
  padding: 1.5rem 1.5rem 0;
  margin-top: calc(var(--card-inner) + var(--card-gap-top) + var(--card-gap-bottom));
}

/* ---- Responsive ---- */
@media (max-width: 768px) {
  .parallax-projects {
    --card-inner: 400px;
    --card-gap-top: 20px;
    --card-gap-bottom: 24px;
  }
  .parallax-card {
    padding-left: 0.75rem;
    padding-right: 0.75rem;
  }
  .parallax-card__inner {
    border-radius: 4px;
  }
  .parallax-card__content {
    flex-direction: column;
    align-items: flex-start;
    padding: 1.5rem;
    gap: 0.5rem;
  }
  body .entry-content #gallery h3.parallax-card__project-name {
    font-size: 1.5rem !important;
  }
}

@media (max-width: 480px) {
  .parallax-projects {
    --card-inner: 350px;
  }
  .parallax-projects__header {
    padding: 0.5rem 1rem 1rem;
  }
}

/* ============================================================
   SERVICE AREA — image now a downtown Boise photo (was the wide
   satellite map, which used width:150% to enlarge it). A real 16:9
   photo should fill its frame normally with rounded corners, like
   the other images. Higher specificity (#service-area) overrides the
   Customizer's 150% rule. */
body .entry-content #service-area .service-area__map-wrapper {
  overflow: hidden !important;
}
body .entry-content #service-area .service-area__map-wrapper img {
  width: 100% !important;
  height: auto !important;
  max-width: 100% !important;
  display: block;
  border-radius: var(--radius-lg) !important;
}

/* ============================================================
   EYEBROWS — uniform treatment across every section.
   One spec for font / size / weight / letter-spacing / uppercase
   everywhere; only the COLOR changes per section (left to each
   section's own rule). Targets all eyebrow variants (hero__eyebrow,
   section-header__eyebrow, .eyebrow, parallax-projects__eyebrow,
   cta-final__eyebrow). Centered in centered-header sections; the
   Service Area eyebrow stays left-aligned to match its left column.
   ============================================================ */
body .entry-content [class*="eyebrow"] {
  font-family: var(--font-body) !important;
  font-size: 0.8125rem !important;      /* 13px */
  font-weight: 600 !important;
  letter-spacing: 0.15em !important;
  text-transform: uppercase !important;
  line-height: 1.4 !important;
  text-align: center !important;
  /* Eyebrows are <p>/headings capped at max-width:72ch; auto margins keep the
     capped box centered (without this they sit left-aligned and look off-center). */
  margin-left: auto !important;
  margin-right: auto !important;
}
/* Exception: the Service Area eyebrow stays LEFT-aligned to match that
   section's left-aligned heading/column. */
body .entry-content #service-area [class*="eyebrow"] {
  text-align: left !important;
  margin-left: 0 !important;
  margin-right: auto !important;
}

/* ============================================================
   ABOUT PAGE HERO — gold heading + larger/bolder subtitle.
   (The page's inline .about-hero__title color was being overridden
   by the theme's base h1 color, so this needs theme-level priority.)
   ============================================================ */
body .entry-content .about-hero h1.about-hero__title {
  color: #C9A96E !important;       /* gold (matches homepage gold headings) */
}
body .entry-content .about-hero__subtitle {
  font-size: 21px !important;      /* +2 from 19px */
  font-weight: 700 !important;     /* bold (was light/300) */
}

/* About craft-band quote attribution ("The Nostalgic Standard") — center it
   under the quote (the <p> is capped at max-width and was left-aligned). */
body .entry-content .craft-band__quote,
body .entry-content .craft-band__attr {
  margin-left: auto !important;
  margin-right: auto !important;
}

/* About bottom CTA (#about-cta-final) — center every element. */
body .entry-content #about-cta-final .cta-final,
body .entry-content #about-cta-final .cta-final__title,
body .entry-content #about-cta-final .cta-final__text,
body .entry-content #about-cta-final .cta-final__actions {
  text-align: center !important;
}

/* ============================================================================
   END OF STYLESHEET
   Nostalgic Paver Systems — Premium Hardscape Design & Installation
   ========================================================================= */


/* ========================================================================
   TESTIMONIAL CAROUSEL (Animated)
   ======================================================================== */

body .entry-content .nps-carousel {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: center;
  max-width: 960px;
  margin: 0 auto;
}

body .entry-content .nps-carousel__images {
  display: flex;
  justify-content: center;
  align-items: center;
}

body .entry-content .nps-carousel__stack {
  position: relative;
  height: 380px;
  width: 100%;
  max-width: 340px;
}

body .entry-content .nps-carousel__img-card {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  border-radius: 16px;
  border: 3px solid #F5F0E8;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
  opacity: 0.5;
  transform: scale(0.9) translateY(20px) rotate(var(--rot, 0deg));
  transform-origin: bottom center;
  transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
  z-index: 1;
}

body .entry-content .nps-carousel__img-card[data-index="0"] { --rot: -4deg; }
body .entry-content .nps-carousel__img-card[data-index="1"] { --rot: 3deg; }
body .entry-content .nps-carousel__img-card[data-index="2"] { --rot: -6deg; }
body .entry-content .nps-carousel__img-card[data-index="3"] { --rot: 5deg; }
body .entry-content .nps-carousel__img-card[data-index="4"] { --rot: -3deg; }

body .entry-content .nps-carousel__img-card--active {
  opacity: 1 !important;
  transform: scale(1) translateY(0) rotate(0deg) !important;
  z-index: 5 !important;
}

body .entry-content .nps-carousel__content {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

body .entry-content .nps-carousel__quote-mark {
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: 72px;
  line-height: 1;
  color: #B8963E;
  opacity: 0.3;
  display: block;
  margin-bottom: -12px;
}

body .entry-content .nps-carousel__quote {
  font-family: "Montserrat", system-ui, sans-serif;
  font-size: 17px;
  line-height: 1.7;
  color: #4A4A4A;
  font-style: italic;
  margin: 0 0 28px 0;
  min-height: 100px;
  transition: opacity 0.3s ease;
}

body .entry-content .nps-carousel__quote.fade-out { opacity: 0; }

body .entry-content .nps-carousel__divider {
  width: 48px;
  height: 2px;
  background: #B8963E;
  margin-bottom: 20px;
}

body .entry-content .nps-carousel__name {
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: 24px;
  font-weight: 600;
  color: #2C2C2C;
  margin: 0 0 4px 0;
  transition: opacity 0.3s ease;
}

body .entry-content .nps-carousel__name.fade-out { opacity: 0; }

body .entry-content .nps-carousel__designation {
  font-family: "Montserrat", system-ui, sans-serif;
  font-size: 14px;
  color: #A39E93;
  margin: 0;
  font-weight: 500;
  transition: opacity 0.3s ease;
}

body .entry-content .nps-carousel__designation.fade-out { opacity: 0; }

body .entry-content .nps-carousel__nav {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 40px;
}

body .entry-content .nps-carousel__nav-btn {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid rgba(163, 158, 147, 0.25);
  background: transparent;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  color: #2C2C2C;
  /* Reset generic button padding/line-height so the icon centers in the circle */
  padding: 0;
  line-height: 0;
  font-size: 0;
}

body .entry-content .nps-carousel__nav-btn:hover {
  background: #B8963E;
  border-color: #B8963E;
  color: #FFFFFF;
}

/* The arrow SVGs were getting squished (wpautop injects a stray <br>, and the
   flex container was collapsing the icon to ~6px). Hide the <br> and lock the
   icon to a normal scale inside the 44px circle. */
body .entry-content .nps-carousel__nav-btn br { display: none; }
body .entry-content .nps-carousel__nav-btn svg {
  width: 20px !important;
  height: 20px !important;
  min-width: 20px;
  flex: 0 0 20px;
  display: block;
  margin: auto;
}

body .entry-content .nps-carousel__dots {
  display: flex;
  gap: 8px;
}

body .entry-content .nps-carousel__dot {
  width: 8px;
  height: 8px;
  border-radius: 4px;
  border: none;
  background: rgba(163, 158, 147, 0.25);
  cursor: pointer;
  padding: 0;
  transition: all 0.3s ease;
}

body .entry-content .nps-carousel__dot--active {
  width: 24px;
  background: #B8963E;
}

@media (max-width: 768px) {
  body .entry-content .nps-carousel {
    grid-template-columns: 1fr;
    gap: 40px;
    text-align: center;
  }
  body .entry-content .nps-carousel__stack {
    height: 300px;
    max-width: 280px;
    margin: 0 auto;
  }
  body .entry-content .nps-carousel__nav {
    justify-content: center;
  }
  body .entry-content .nps-carousel__divider {
    margin-left: auto;
    margin-right: auto;
  }
}

/* =============================================
   SERVICE CARD H3 — Override Kadence heading color
   ============================================= */
body.page .entry-content .service-img-card__content h3,
body .entry-content .service-img-card__content h3,
.section .service-img-card__content h3,
body .entry-content .service-img-card h3,
.service-img-card__content h3 {
  color: #fff !important;
  font-size: clamp(1.25rem, 2vw, 1.5rem) !important;
  font-weight: 600 !important;
  margin: 0 !important;
  text-shadow: 0 2px 8px rgba(0,0,0,0.6) !important;
  font-family: var(--font-heading) !important;
}

/* ============================================================================
   MOBILE OVERFLOW FIXES + button consistency (2026-05-28)
   ========================================================================= */
@media (max-width: 767px) {
  /* Long CTA labels were white-space:nowrap -> wider than the phone screen and
     clipped by body{overflow-x:hidden}. Let them wrap and never exceed width. */
  .btn { white-space: normal !important; max-width: 100%; }
  /* Service-area satellite map <img> had width:756px / max-width:none. */
  #service-area img { max-width: 100% !important; height: auto !important; width: auto; }
}

/* (Gallery CTA consistency is handled by changing its class to btn--primary in
   the page content — see wp-prep/nps-fix-gallery-btn.php — so it inherits the
   exact same styling as every other "Book…" CTA.) */


/* ============================================================================
   EDITORIAL BLOG / JOURNAL  (added 2026-05-29)
   Upscale, refined article + archive styling layered over Kadence's markup.
   Scoped to body.single-post (articles) and body.blog (the Blog index).
   Targets Kadence's real DOM — the unused .post__* classes are not rendered.
   ========================================================================= */

/* ----------------------------------------------------------------------------
   SINGLE ARTICLE — page canvas + cinematic hero
   ------------------------------------------------------------------------- */
body.single-post {
  background-color: var(--nps-off-white);
}

/* Full-bleed hero banner from the featured image (overrides Kadence alignwide) */
body.single-post .post-thumbnail.kadence-thumbnail-position-behind,
body.single-post .article-post-thumbnail {
  position: relative;
  width: 100vw !important;
  max-width: 100vw !important;
  margin-left: calc(50% - 50vw) !important;
  margin-right: calc(50% - 50vw) !important;
  height: clamp(320px, 44vh, 500px);
  min-height: 300px;
  margin-bottom: 0;
  overflow: hidden;
  border-radius: 0;
}
body.single-post .post-thumbnail .post-thumbnail-inner {
  position: static;
  height: 100%;
  width: 100%;
  padding: 0;
}
/* Image fills the hero container absolutely — robust regardless of the
   inner wrapper's collapsed height in Kadence's position-behind mode. */
body.single-post img.post-top-featured,
body.single-post .post-thumbnail img.wp-post-image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 42%;
  display: block;
}
/* Scrim: warm depth + nav legibility up top, richer base where the card meets it */
body.single-post .post-thumbnail.kadence-thumbnail-position-behind::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(
      180deg,
      rgba(31, 27, 22, 0.52) 0%,
      rgba(31, 27, 22, 0.34) 30%,
      rgba(31, 27, 22, 0.34) 60%,
      rgba(31, 27, 22, 0.55) 100%
    ),
    rgba(31, 27, 22, 0.18);
  pointer-events: none;
}

/* The boxed content card rises over the hero (magazine-cover overlap) */
body.single-post article.single-entry,
body.single-post article.content-bg.single-entry {
  position: relative;
  z-index: 2;
  max-width: 820px;
  margin: clamp(-150px, -11vh, -84px) auto 0;
  background: #FFFDF7;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xl);
  overflow: visible;
}
body.single-post .single-entry .entry-content-wrap {
  padding: clamp(2rem, 5vw, 4rem) clamp(1.5rem, 5vw, 4.5rem) clamp(2.25rem, 5vw, 4rem);
}

/* ---- Article header (centered editorial) ---- */
body.single-post .entry-header {
  text-align: center;
  max-width: 700px;
  margin: 0 auto clamp(1.75rem, 4vw, 2.75rem);
}
body.single-post .entry-taxonomies {
  margin-bottom: 0.85rem;
}
body.single-post .entry-taxonomies .category-links,
body.single-post .entry-taxonomies .category-links a {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--nps-gold);
  text-decoration: none;
}
body.single-post .entry-taxonomies .category-links a:hover {
  color: var(--nps-gold-light);
}
body.single-post h1.entry-title {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: clamp(2.05rem, 1.4rem + 2.6vw, 3.35rem);
  line-height: 1.12;
  letter-spacing: -0.01em;
  color: var(--nps-near-black);
  margin: 0.35rem 0 1rem;
}
body.single-post .entry-meta {
  justify-content: center;
  align-items: center;
  font-family: var(--font-body);
  font-size: var(--text-sm);
  letter-spacing: 0.02em;
  color: var(--color-caption);
  text-transform: none;
}
body.single-post .entry-meta a {
  color: var(--color-caption);
  text-decoration: none;
}
body.single-post .entry-meta a:hover { color: var(--nps-gold); }

/* ---- Lead / standfirst: the first paragraph (italic dek) ---- */
body.single-post .entry-content > p:first-child {
  font-family: var(--font-heading);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.3rem, 1.05rem + 0.95vw, 1.65rem);
  line-height: 1.5;
  color: var(--nps-medium-brown);
  text-align: center;
  max-width: 660px;
  margin: 0 auto clamp(1.75rem, 4vw, 2.5rem);
  padding-bottom: clamp(1.5rem, 4vw, 2.25rem);
  border-bottom: 1px solid var(--color-border);
}
body.single-post .entry-content > p:first-child em { font-style: italic; }

/* ---- Body reading column + typography ---- */
body.single-post .entry-content {
  max-width: 680px;
  margin-left: auto;
  margin-right: auto;
  font-family: var(--font-body);
  color: var(--color-body);
}
body.single-post .entry-content p,
body.single-post .entry-content li {
  font-family: var(--font-body);
  font-size: clamp(1.0625rem, 1rem + 0.3vw, 1.1875rem);
  line-height: 1.8;
  color: var(--color-body);
}
body.single-post .entry-content p { margin-bottom: 1.4em; }

/* Refined drop cap on the first body paragraph (after the dek) */
body.single-post .entry-content > p:nth-of-type(2)::first-letter {
  float: left;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 3.4em;
  line-height: 0.82;
  color: var(--nps-gold);
  padding: 0.04em 0.1em 0 0;
  margin-top: 0.04em;
}

/* Content headings — Cormorant, with a small gold tick above H2 */
body.single-post .entry-content h2 {
  font-family: var(--font-heading) !important;
  font-weight: 600 !important;
  font-size: clamp(1.7rem, 1.2rem + 1.5vw, 2.4rem) !important;
  line-height: 1.2 !important;
  letter-spacing: -0.005em;
  color: var(--nps-near-black) !important;
  margin: clamp(2.4rem, 5vw, 3.2rem) 0 0.8rem;
}
body.single-post .entry-content h2::before {
  content: "";
  display: block;
  width: 42px;
  height: 2px;
  background: var(--nps-gold);
  margin-bottom: 1rem;
}
body.single-post .entry-content h3 {
  font-family: var(--font-heading) !important;
  font-weight: 600 !important;
  font-size: clamp(1.35rem, 1rem + 1vw, 1.7rem) !important;
  line-height: 1.25 !important;
  color: var(--nps-near-black) !important;
  margin: 2rem 0 0.5rem;
}
body.single-post .entry-content p strong { color: var(--nps-near-black); font-weight: 600; }

/* Inline links */
body.single-post .entry-content a:not(.btn) {
  color: var(--nps-umber);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  text-decoration-color: rgba(184, 137, 62, 0.45);
  transition: var(--transition-colors);
}
body.single-post .entry-content a:not(.btn):hover {
  color: var(--nps-gold);
  text-decoration-color: var(--nps-gold);
}

/* Lists */
body.single-post .entry-content ul,
body.single-post .entry-content ol {
  margin: 1.4em 0;
  padding-left: 1.45em;
}
body.single-post .entry-content li { margin-bottom: 0.55em; }
body.single-post .entry-content ul li::marker { color: var(--nps-gold); }
body.single-post .entry-content ol li::marker { color: var(--nps-gold); font-weight: 600; }

/* Ornamental section divider */
body.single-post .entry-content hr {
  border: 0;
  width: 64px;
  height: 2px;
  background: var(--nps-gold);
  opacity: 0.55;
  margin: clamp(2.4rem, 5vw, 3.4rem) auto;
}

/* Blockquote (defensive — if any post uses one) */
body.single-post .entry-content blockquote {
  font-family: var(--font-heading);
  font-style: italic;
  font-size: clamp(1.3rem, 1rem + 1vw, 1.6rem);
  line-height: 1.45;
  color: var(--nps-near-black);
  border-left: 3px solid var(--nps-gold);
  padding: 0.25rem 0 0.25rem 1.4rem;
  margin: 2rem 0;
}

/* Inline content images / figures */
body.single-post .entry-content img {
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
  margin: clamp(1.5rem, 4vw, 2.5rem) 0;
}
body.single-post .entry-content figcaption {
  font-size: var(--text-sm);
  color: var(--color-caption);
  text-align: center;
  font-style: italic;
  margin-top: 0.6rem;
}

/* ---- End-of-article CTA (injected via functions.php) ---- */
.nps-article-cta {
  margin-top: clamp(2.75rem, 6vw, 4rem);
  padding: clamp(1.9rem, 4vw, 3rem) clamp(1.5rem, 4vw, 3rem);
  background: var(--nps-near-black);
  border-radius: var(--radius-lg);
  text-align: center;
}
.nps-article-cta__eyebrow {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--nps-gold-light);
  margin: 0 0 0.6rem;
}
.nps-article-cta__title {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.2rem);
  line-height: 1.2;
  color: var(--nps-cream);
  margin: 0 0 0.7rem;
}
.nps-article-cta__text {
  font-family: var(--font-body);
  font-size: var(--text-base);
  line-height: 1.7;
  color: var(--nps-stone);
  max-width: 460px;
  margin: 0 auto 1.5rem;
}
.nps-article-cta .btn { margin: 0 auto; }

/* ---- Post navigation (prev/next) ---- */
body.single-post .post-navigation .nav-links a {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: var(--text-lg);
  line-height: 1.25;
  color: var(--nps-near-black);
  text-decoration: none;
  transition: var(--transition-colors);
}
body.single-post .post-navigation .nav-links a:hover { color: var(--nps-gold); }
body.single-post .post-navigation .post-navigation-sub,
body.single-post .post-navigation .post-navigation-sub small {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--nps-gold);
}

/* ---- "Similar Posts" related section ---- */
body.single-post .entry-related-title {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: clamp(1.7rem, 1.2rem + 1.5vw, 2.3rem);
  line-height: 1.15;
  color: var(--nps-near-black);
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}
body.single-post .entry-related .entry-title {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: clamp(1.15rem, 1rem + 0.5vw, 1.4rem);
  line-height: 1.22;
}
body.single-post .entry-related .entry-title a {
  color: var(--nps-near-black);
  text-decoration: none;
  transition: var(--transition-colors);
}
body.single-post .entry-related .entry-title a:hover { color: var(--nps-gold); }
body.single-post .entry-related .entry-meta,
body.single-post .entry-related .entry-meta a {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-caption);
  text-decoration: none;
}
body.single-post .entry-related .nps-carousel__nav-btn,
body.single-post .entry-related [class*="slick-arrow"],
body.single-post .entry-related .entry-related-carousel-next,
body.single-post .entry-related .entry-related-carousel-prev { color: var(--nps-near-black); }

/* ----------------------------------------------------------------------------
   BLOG INDEX (archive) — masthead + cards
   ------------------------------------------------------------------------- */
body.blog { background-color: var(--nps-off-white); }

/* Editorial masthead (injected via functions.php on kadence_before_main_content) */
.nps-blog-masthead {
  text-align: center;
  padding: clamp(3rem, 8vw, 6rem) var(--gutter) clamp(2rem, 5vw, 3.25rem);
  background: var(--nps-cream);
}
.nps-blog-masthead__eyebrow {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--nps-gold);
  margin: 0 auto 0.9rem;
  max-width: none;
}
.nps-blog-masthead__title {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: clamp(2.4rem, 1.6rem + 3vw, 4rem);
  line-height: 1.08;
  letter-spacing: -0.01em;
  color: var(--nps-near-black);
  margin: 0 auto 1rem;
  max-width: 14ch;
}
.nps-blog-masthead__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  line-height: 1.7;
  color: var(--color-caption);
  max-width: 660px;
  margin: 0 auto;
}
.nps-blog-masthead__rule {
  display: block;
  width: 64px;
  height: 2px;
  background: var(--nps-gold);
  opacity: 0.7;
  margin: clamp(1.5rem, 3vw, 2.25rem) auto 0;
}

/* Grid — take control of columns for a reliable layout + featured first card */
body.blog ul.kadence-posts-list.grid-cols {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  max-width: var(--container-xl);
  margin: 0 auto;
  padding: clamp(2.25rem, 5vw, 4rem) var(--gutter);
  list-style: none;
}
@media (min-width: 600px) {
  body.blog ul.kadence-posts-list.grid-cols { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 900px) {
  body.blog ul.kadence-posts-list.grid-cols { grid-template-columns: repeat(3, 1fr); }
}
body.blog ul.kadence-posts-list .entry-list-item {
  margin: 0;
  padding: 0;
  display: flex;
}

/* Card */
body.blog article.loop-entry {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  padding: 0;
  background: #FFFDF7;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--duration-base) var(--ease-default),
              transform var(--duration-base) var(--ease-out),
              border-color var(--duration-base) var(--ease-default);
}
body.blog article.loop-entry:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-4px);
  border-color: rgba(184, 137, 62, 0.4);
}
body.blog article.loop-entry .post-thumbnail {
  display: block;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  margin: 0;
}
body.blog article.loop-entry .post-thumbnail-inner { height: 100%; }
body.blog article.loop-entry .post-thumbnail img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--duration-slow) var(--ease-out);
}
body.blog article.loop-entry:hover .post-thumbnail img { transform: scale(1.05); }

body.blog article.loop-entry .entry-content-wrap {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: clamp(1.4rem, 2.5vw, 1.9rem);
}
body.blog article.loop-entry .entry-header { margin: 0; text-align: left; }
body.blog article.loop-entry .entry-taxonomies { margin-bottom: 0.6rem; }
body.blog article.loop-entry .category-links,
body.blog article.loop-entry .category-links a {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--nps-gold);
  text-decoration: none;
}
body.blog article.loop-entry h2.entry-title {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: clamp(1.25rem, 1rem + 0.6vw, 1.5rem);
  line-height: 1.2;
  letter-spacing: -0.005em;
  margin: 0.45rem 0 0.6rem;
}
body.blog article.loop-entry h2.entry-title a {
  color: var(--nps-near-black);
  text-decoration: none;
  transition: var(--transition-colors);
}
body.blog article.loop-entry h2.entry-title a:hover { color: var(--nps-gold); }
body.blog article.loop-entry .entry-meta {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-caption);
  letter-spacing: 0.02em;
}
body.blog article.loop-entry .entry-meta a { color: var(--color-caption); text-decoration: none; }
body.blog article.loop-entry .entry-summary { margin-top: 0.7rem; }
body.blog article.loop-entry .entry-summary p {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  line-height: 1.7;
  color: var(--color-caption);
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
/* "Read more" affordance (Kadence's real link) pinned to the card foot */
body.blog article.loop-entry .entry-footer {
  margin: auto 0 0;
  padding: 1.1rem 0 0;
  border: 0;
}
body.blog article.loop-entry .more-link-wrap { margin: 0; }
body.blog article.loop-entry .post-more-link {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--nps-gold);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  transition: var(--transition-colors);
}
body.blog article.loop-entry .post-more-link:hover { color: var(--nps-gold-light); }

/* Featured first card — full-width horizontal hero (desktop) */
@media (min-width: 900px) {
  body.blog ul.kadence-posts-list .entry-list-item:first-child { grid-column: 1 / -1; }
  body.blog ul.kadence-posts-list .entry-list-item:first-child article.loop-entry {
    flex-direction: row;
    align-items: stretch;
  }
  body.blog .entry-list-item:first-child article.loop-entry .post-thumbnail {
    flex: 1 1 56%;
    aspect-ratio: auto;
    min-height: 360px;
  }
  body.blog .entry-list-item:first-child article.loop-entry .entry-content-wrap {
    flex: 1 1 44%;
    justify-content: center;
    padding: clamp(2rem, 4vw, 3.5rem);
  }
  body.blog .entry-list-item:first-child article.loop-entry h2.entry-title {
    font-size: clamp(1.8rem, 1.2rem + 1.6vw, 2.7rem);
  }
  body.blog .entry-list-item:first-child article.loop-entry .entry-summary p {
    -webkit-line-clamp: 4;
    font-size: var(--text-base);
  }
}

/* Pagination (scoped refinements) */
body.blog .navigation.pagination { margin: 0 auto clamp(3rem, 6vw, 5rem); max-width: var(--container-xl); padding: 0 var(--gutter); }
body.blog .pagination .page-numbers {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  border-radius: var(--radius-sm);
}
body.blog .pagination .page-numbers.current {
  background: var(--nps-gold);
  color: var(--nps-near-black);
  border-color: var(--nps-gold);
}


/* ============================================================================
   EDITORIAL BLOG — ROUND 2 REVISIONS (2026-05-29)
   ========================================================================= */

/* (1) Single-post nav legibility is handled by disabling the transparent
   header on posts (Kadence meta). CSS fallback: force dark menu links if a
   post still renders a transparent header over the cream canvas. */
body.single-post.transparent-header .site-header .header-navigation .menu-item:not(.menu-item-cta) > a {
  color: var(--nps-near-black) !important;
}

/* (2) Inline content CTA — now a branded button (converted in functions.php) */
body.single-post .entry-content p .nps-inline-cta.btn {
  display: inline-block;
  margin: 0.75rem 0 0.25rem;
}

/* (3) End-of-article CTA card — readable type on the dark panel
   (overrides the body-paragraph color rule that was winning on specificity) */
body.single-post .entry-content .nps-article-cta__eyebrow { color: var(--nps-gold-light) !important; }
body.single-post .entry-content .nps-article-cta__title   { color: var(--nps-cream) !important; }
body.single-post .entry-content .nps-article-cta__text    { color: var(--nps-sandstone) !important; }

/* (4) "Similar Posts" related section — match the blog-index card system */
body.single-post .entry-related {
  background: var(--nps-off-white);
  padding-block: clamp(2.5rem, 5vw, 4.5rem);
}
body.single-post .entry-related .entry-related-title { text-align: center; }
body.single-post .entry-related article.loop-entry,
body.single-post .entry-related article.entry {
  padding: 0;
  background: #FFFDF7;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--duration-base) var(--ease-default),
              transform var(--duration-base) var(--ease-out),
              border-color var(--duration-base) var(--ease-default);
}
body.single-post .entry-related article.loop-entry:hover,
body.single-post .entry-related article.entry:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-4px);
  border-color: rgba(184, 137, 62, 0.4);
}
body.single-post .entry-related .post-thumbnail {
  display: block;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  margin: 0;
}
body.single-post .entry-related .post-thumbnail-inner { height: 100%; }
body.single-post .entry-related .post-thumbnail img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--duration-slow) var(--ease-out);
}
body.single-post .entry-related article:hover .post-thumbnail img { transform: scale(1.05); }
body.single-post .entry-related .entry-content-wrap { padding: clamp(1.25rem, 2vw, 1.7rem); }
body.single-post .entry-related .entry-header { text-align: left; margin: 0; }
body.single-post .entry-related .category-links,
body.single-post .entry-related .category-links a {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--nps-gold);
  text-decoration: none;
}
body.single-post .entry-related .entry-meta,
body.single-post .entry-related .entry-meta a {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-caption);
  text-decoration: none;
}

/* (5) Footer links — Nostalgic forest green (site-wide) */
#colophon.site-footer a,
#colophon .footer-html a {
  color: var(--nps-forest);
  transition: var(--transition-colors);
}
#colophon.site-footer a:hover,
#colophon .footer-html a:hover {
  color: #4F5740;
  text-decoration: underline;
}

/* (6) Comment "Post Comment" button — forest green */
.comment-form #submit,
.comment-form input[type="submit"],
.comment-respond #submit {
  background-color: var(--nps-forest) !important;
  border-color: var(--nps-forest) !important;
  color: #FFFFFF !important;
  border-radius: var(--radius-sm);
  transition: var(--transition-colors);
}
.comment-form #submit:hover,
.comment-form input[type="submit"]:hover,
.comment-respond #submit:hover {
  background-color: #4F5740 !important;
  border-color: #4F5740 !important;
}


/* ============================================================================
   SERVICES — STICKY STACKING CARDS ("What We Build") — 2026-05-29
   Each card pins below the header and the next scrolls up and stacks over it,
   like layered strata of stone. One primary CTA after the stack.
   ========================================================================= */
.svc-sticky__track {
  position: relative;
  margin-top: clamp(2rem, 4vw, 3.25rem);
}
.svc-sticky__card {
  position: sticky;
  top: clamp(88px, 11vh, 124px);
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: clamp(1.5rem, 4vw, 4rem);
  padding: clamp(1.75rem, 3.5vw, 3.5rem);
  margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
  border-radius: var(--radius-xl);
  border: 1px solid rgba(107, 94, 72, 0.14);
  box-shadow: 0 -12px 44px rgba(31, 27, 22, 0.06),
              0 20px 54px rgba(31, 27, 22, 0.13);
  background: var(--nps-cream);
}
.svc-sticky__card:last-child { margin-bottom: 0; }

/* Warm stone strata — each layer slightly deeper so the stack reads clearly */
.svc-sticky__card:nth-child(1) { background: #FAF6EC; }
.svc-sticky__card:nth-child(2) { background: #F3EAD9; }
.svc-sticky__card:nth-child(3) { background: #ECE0CB; }
.svc-sticky__card:nth-child(4) { background: #E5D6BD; }
.svc-sticky__card:nth-child(5) { background: #DDCBB0; }

/* Alternate image / text sides for rhythm (image right on odd, left on even) */
.svc-sticky__media   { order: 2; }
.svc-sticky__content { order: 1; }
.svc-sticky__card:nth-child(even) .svc-sticky__media   { order: 1; }
.svc-sticky__card:nth-child(even) .svc-sticky__content { order: 2; }

.svc-sticky__img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  display: block;
}
.svc-sticky__num {
  display: block;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: clamp(1.4rem, 1rem + 1.3vw, 2rem);
  line-height: 1;
  color: var(--nps-gold);
  margin-bottom: 0.7rem;
}
.svc-sticky .svc-sticky__title {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: clamp(1.7rem, 1.2rem + 1.6vw, 2.6rem);
  line-height: 1.12;
  letter-spacing: -0.01em;
  color: var(--nps-near-black);
  margin: 0 0 1rem;
}
.svc-sticky__text {
  font-family: var(--font-body);
  font-size: clamp(1rem, 0.95rem + 0.3vw, 1.15rem);
  line-height: 1.75;
  color: var(--nps-dark-brown);
  margin: 0;
}
.svc-sticky__cta {
  text-align: center;
  margin-top: clamp(3rem, 6vw, 5.5rem);
}

@media (max-width: 768px) {
  /* On phones: no stacking — clean vertical cards, image above text */
  .svc-sticky__card {
    position: static;
    grid-template-columns: 1fr;
    gap: 1.25rem;
  }
  .svc-sticky__media   { order: 1 !important; }
  .svc-sticky__content { order: 2 !important; }
}


/* ============================================================================
   DARK-SECTION PRIMARY BUTTON CONTRAST FIX (2026-05-29)
   .section--dark a { color: gold-light } was bleeding into the gold primary
   buttons (gold-on-gold). Force dark text on primary buttons in dark sections.
   ========================================================================= */
.section--dark a.btn--primary,
.section--dark .btn.btn--primary,
.section--dark .btn--primary.btn--lg {
  color: var(--nps-near-black) !important;
}


/* ============================================================================
   SERVICES HERO BACKGROUND — stairway image (2026-05-29)
   The visible hero layer is #hero's CSS background-image (the .hero__media img
   sits at z-index:-1). Override it on the Services page (page-id-15).
   ========================================================================= */
body.page-id-15 #hero {
  background-image: url("/wp-content/uploads/2026/05/nps-services-hero-stairwell.webp") !important;
  background-size: cover;
  background-position: center;
}

/* ============================================================================
   CONTACT + CAREERS HERO BACKGROUNDS (2026-06-05)
   Same pattern as the Services override above: the visible hero is #hero's CSS
   background-image, so the per-page src must be set here (not just on the
   decorative .hero__media img, which sits behind at z-index:-1). Without these,
   both pages fall back to the default .hero { background-image: hero-poster.jpg }
   and show the same image.
   ========================================================================= */
body.page-id-16 #hero {
  background-image: url("/wp-content/uploads/2026/05/nps-contact-hero-paver-entrance-dusk-boise.webp") !important;
  background-size: cover;
  background-position: center;
}
body.page-id-17 #hero {
  background-image: url("/wp-content/uploads/2026/05/nps-careers-hero-crew-installing-pavers-boise.webp") !important;
  background-size: cover;
  background-position: center;
}


/* ============================================================================
   BOOK PAGE — standalone Discovery Call calendar (2026-05-29)
   ========================================================================= */
.book-section .section__sub {
  max-width: 620px;
  margin: 0.75rem auto 0;
  text-align: center;
  font-family: var(--font-body);
  font-size: var(--text-lg);
  line-height: 1.7;
  color: var(--color-caption);
}
.book-section .book-cal {
  max-width: 900px;
  margin: clamp(2rem, 4vw, 3.25rem) auto 0;
  min-height: 760px;
}
.book-section .book-cal iframe { display: block; border-radius: var(--radius-md); }


/* ============================================================================
   CONTACT — GHL Project Discovery Form embed (2026-05-31)
   ========================================================================= */
.ghl-form-embed {
  max-width: 680px;
  margin: 0 auto;
}
.ghl-form-embed iframe {
  width: 100%;
  min-height: 640px;
  border: none;
  border-radius: 8px;
  display: block;
}

/* Booking section reduced to a single calendar (On-Site removed) — render the
   lone Discovery Call calendar as a centered single column instead of a 2-col grid. */
.section__split:has(> div:only-child) {
  display: block;
  max-width: 680px;
  margin: 0 auto;
}

/* ============================================================
   CAREERS PAGE FIXES (2026-05-31)
   ============================================================ */

/* (3) Crew testimonial star rating was rendering empty (looked like a
   0-star review). The SVGs use fill="currentColor"; force a filled,
   on-brand forest green and beat any base `svg { fill:none }` reset. */
#team-voice .testimonial__stars { color: var(--nps-green); }
#team-voice .testimonial__stars svg {
  fill: var(--nps-green) !important;
  stroke: none !important;
}

/* (4) Hardscape Installer application form (#apply) sits inside a
   .section--dark, so any control text not explicitly darkened inherits the
   section's light color and is unreadable on the form's cream card. The
   earlier fix used var(--color-text), which is undefined site-wide, so it
   silently failed (selects + checkbox labels stayed faint). Force standard,
   readable form styling — dark text on white fields — on every control so it
   behaves like a plain default form. (fixed 2026-06-05) */
#apply .form__input,
#apply .form__textarea,
#apply .form__select {
  background: #fff;
  border-color: var(--color-border);
  color: var(--nps-near-black);
}
#apply .form__select option { color: var(--nps-near-black); background: #fff; }
#apply .form__input::placeholder,
#apply .form__textarea::placeholder { color: var(--nps-stone); }
#apply .form__input:focus,
#apply .form__textarea:focus,
#apply .form__select:focus {
  background: #fff;
  border-color: var(--nps-gold);
  box-shadow: 0 0 0 3px rgba(184, 137, 62, 0.15);
}
/* Checkbox/radio rows, their labels, and field labels: dark on the cream card */
#apply .form__check,
#apply .form__check label,
#apply label,
#apply .form__label { color: var(--nps-near-black); }

/* ============================================================
   HOMEPAGE FAQ (#home-faq) — moved to theme so styling survives
   any block-editor re-save of the page (which strips inline <style>). 2026-05-31
   ============================================================ */
#home-faq .home-faq { max-width: 820px; margin: 2.5rem auto 0; }
#home-faq .home-faq__item { border-bottom: 1px solid var(--color-border); }
#home-faq .home-faq__q {
  cursor: pointer; list-style: none; display: block;
  padding: 1.25rem 2.75rem 1.25rem 0; position: relative;
  font-family: var(--font-heading); font-size: 1.2rem; font-weight: 600;
  line-height: 1.4; color: var(--color-heading);
}
#home-faq .home-faq__q::-webkit-details-marker { display: none; }
#home-faq .home-faq__q::after {
  content: "+"; position: absolute; right: 0; top: 1.15rem;
  font-size: 1.6rem; line-height: 1; color: var(--nps-gold); font-weight: 400;
}
#home-faq details[open] .home-faq__q::after { content: "\2212"; }
#home-faq .home-faq__a { padding: 0 2.75rem 1.4rem 0; }
#home-faq .home-faq__a p { margin: 0; color: var(--color-text); line-height: 1.75; }
#home-faq .home-faq__a a { color: var(--nps-gold); font-weight: 600; text-decoration: none; }
#home-faq .home-faq__a a:hover { text-decoration: underline; }
