/* ==========================================================================
   Villegas Digital — Design System
   Source: "Villegas Digital Design System" (Claude Design, 2026-08-02)
   Mode:   DARK HERO / LIGHT BODY
           Document default is the light theme (warm paper). Dark ink sections
           are opt-in via .vd-dark — used for the hero, CTA bands, header and
           footer. Both theme token sets ship in the design system; this file
           only chooses which one is the document default.
   Safety: This file is additive. Disabling the vd-design-system mu-plugin
           removes every rule here and returns the site to its prior styling.
   ========================================================================== */

@import url("https://fonts.googleapis.com/css2?family=Archivo:ital,wght@0,400..800;1,400..700&family=Oswald:wght@400..600&family=Source+Serif+4:ital,opsz,wght@0,8..60,400..600;1,8..60,400&family=IBM+Plex+Mono:wght@400;500&display=swap");

/* --------------------------------------------------------------------------
   1. PRIMITIVE TOKENS  (verbatim from tokens/*.css — do not invent values)
   -------------------------------------------------------------------------- */
:root {
  /* Ink — the dark-green field the brand lives on (sampled from the badge) */
  --vd-ink-950:#050B06; --vd-ink-900:#0A130C; --vd-ink-850:#0E1A11;
  --vd-ink-800:#142317; --vd-ink-700:#1C2F20; --vd-ink-600:#26402C; --vd-ink-500:#33553A;

  /* Olive — the badge ring + wordmark */
  --vd-olive-700:#4A4E24; --vd-olive-600:#5C6130; --vd-olive-500:#787838;
  --vd-olive-400:#8E9048; --vd-olive-300:#A8AB68; --vd-olive-200:#C6C89A; --vd-olive-100:#E2E3CC;

  /* Sunrise — the sky behind the Coronado bridge */
  --vd-sun-800:#A8431A; --vd-sun-700:#C85820; --vd-sun-600:#E06820; --vd-sun-500:#F8811E;
  --vd-sun-400:#FF9A2E; --vd-sun-300:#FFB44A; --vd-sun-200:#FFD878; --vd-sun-100:#FFEBBD;

  /* Paper + cream — warm, never blue-white */
  --vd-paper:#FBF8F1; --vd-paper-2:#F4EFE3; --vd-paper-3:#E8E1D0;
  --vd-cream:#F4EFE3; --vd-cream-dim:#CFC8B6;

  /* Warm neutrals for body copy on light */
  --vd-stone-900:#1A1B16; --vd-stone-700:#3E4038; --vd-stone-500:#6B6D62;
  --vd-stone-400:#8C8E82; --vd-stone-300:#B6B7AB;

  /* Status */
  --vd-success:#7FB069; --vd-warning:#FFB44A; --vd-danger:#D6462F;

  /* Alphas */
  --vd-alpha-cream-08:rgba(244,239,227,.08); --vd-alpha-cream-14:rgba(244,239,227,.14);
  --vd-alpha-cream-60:rgba(244,239,227,.6);
  --vd-alpha-ink-08:rgba(10,19,12,.08); --vd-alpha-ink-14:rgba(10,19,12,.14);
  --vd-alpha-sun-16:rgba(248,129,30,.16); --vd-alpha-sun-32:rgba(248,129,30,.32);

  /* Signature gradients — exactly three, all from the badge sky */
  --vd-grad-sunrise:linear-gradient(96deg,var(--vd-sun-700) 0%,var(--vd-sun-500) 48%,var(--vd-sun-300) 100%);
  --vd-grad-horizon:linear-gradient(180deg,rgba(5,11,6,0) 0%,rgba(5,11,6,.55) 55%,var(--vd-ink-950) 100%);
  --vd-grad-canopy:radial-gradient(120% 90% at 50% 0%,#122016 0%,var(--vd-ink-950) 70%);

  /* Type */
  --vd-font-display:"Archivo","Helvetica Neue",Arial,sans-serif;
  --vd-font-ui:"Archivo","Helvetica Neue",Arial,sans-serif;
  --vd-font-condensed:"Oswald","Archivo Narrow",Impact,sans-serif;
  --vd-font-serif:"Source Serif 4",Georgia,serif;
  --vd-font-mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  --vd-text-display-1:clamp(48px,6.2vw,88px); --vd-text-display-2:clamp(38px,4.6vw,64px);
  --vd-text-h1:clamp(34px,3.6vw,52px); --vd-text-h2:clamp(28px,2.6vw,38px);
  --vd-text-h3:24px; --vd-text-h4:20px;
  --vd-text-lead:19px; --vd-text-body:17px; --vd-text-sm:15px; --vd-text-xs:13px; --vd-text-eyebrow:12px;
  --vd-leading-tight:1.04; --vd-leading-snug:1.16; --vd-leading-normal:1.35; --vd-leading-relaxed:1.62;
  --vd-tracking-display:-0.024em; --vd-tracking-tight:-0.014em; --vd-tracking-normal:0em;
  --vd-tracking-eyebrow:0.18em; --vd-tracking-caps:0.06em;
  --vd-weight-regular:400; --vd-weight-medium:500; --vd-weight-semibold:600;
  --vd-weight-bold:700; --vd-weight-black:800;
  --vd-measure:64ch; --vd-measure-narrow:46ch;

  /* Spacing + layout */
  --vd-space-0:0px; --vd-space-1:4px; --vd-space-2:8px; --vd-space-3:12px; --vd-space-4:16px;
  --vd-space-5:20px; --vd-space-6:24px; --vd-space-8:32px; --vd-space-10:40px; --vd-space-12:48px;
  --vd-space-16:64px; --vd-space-20:80px; --vd-space-24:96px; --vd-space-32:128px;
  --vd-section-y:clamp(72px,9vw,128px);
  --vd-container:1200px; --vd-container-narrow:820px; --vd-gutter:clamp(20px,4vw,48px);
  --vd-grid-gap:24px;

  /* Radius — buttons are always pill; that is a brand signature */
  --vd-radius-xs:4px; --vd-radius-sm:8px; --vd-radius-md:12px; --vd-radius-lg:18px;
  --vd-radius-xl:26px; --vd-radius-pill:999px; --vd-radius-badge:50%;
  --vd-border-hairline:1px; --vd-border-strong:2px;

  /* Elevation — warm ink shadows plus two orange glows */
  --vd-shadow-none:none;
  --vd-shadow-1:0 1px 2px rgba(5,11,6,.28);
  --vd-shadow-2:0 6px 18px -6px rgba(5,11,6,.45);
  --vd-shadow-3:0 18px 40px -14px rgba(5,11,6,.62);
  --vd-shadow-4:0 34px 70px -22px rgba(5,11,6,.72);
  --vd-shadow-inset-top:inset 0 1px 0 var(--vd-alpha-cream-08);
  --vd-glow-sun:0 10px 30px -10px rgba(248,129,30,.45);
  --vd-glow-sun-strong:0 14px 44px -12px rgba(248,129,30,.62);
  --vd-ring-focus:0 0 0 3px rgba(248,129,30,.42);
  --vd-blur-glass:saturate(140%) blur(14px);

  /* Motion — fast, short, confident. No bounce, no spring, no parallax. */
  --vd-ease-out:cubic-bezier(.22,.61,.36,1);
  --vd-ease-in-out:cubic-bezier(.65,.05,.36,1);
  --vd-ease-entrance:cubic-bezier(.16,1,.3,1);
  --vd-dur-instant:90ms; --vd-dur-fast:160ms; --vd-dur-base:240ms;
  --vd-dur-slow:420ms; --vd-dur-reveal:640ms;
  --vd-transition-ui:color var(--vd-dur-fast) var(--vd-ease-out),
                     background-color var(--vd-dur-fast) var(--vd-ease-out),
                     border-color var(--vd-dur-fast) var(--vd-ease-out),
                     box-shadow var(--vd-dur-base) var(--vd-ease-out),
                     transform var(--vd-dur-fast) var(--vd-ease-out);
  --vd-press-scale:0.985; --vd-hover-lift:-2px;
}

/* --------------------------------------------------------------------------
   2. SEMANTIC LAYER
   Document default = LIGHT (dark hero / light body decision).
   -------------------------------------------------------------------------- */
:root {
  --vd-surface-page:var(--vd-ink-950);
  --vd-surface-section:var(--vd-ink-900);
  --vd-surface-card:var(--vd-ink-850);
  --vd-surface-raised:var(--vd-ink-800);
  --vd-surface-inset:var(--vd-ink-900);
  --vd-surface-glass:rgba(10,19,12,.72);
  --vd-border-subtle:var(--vd-alpha-cream-08);
  --vd-border-default:var(--vd-alpha-cream-14);
  --vd-border-strong-c:var(--vd-olive-600);
  --vd-text-heading:var(--vd-paper);
  --vd-text-body-c:var(--vd-cream-dim);
  --vd-text-muted:var(--vd-stone-400);
  --vd-text-inverse:var(--vd-ink-950);
  --vd-text-accent:var(--vd-sun-400);
  --vd-eyebrow-color:var(--vd-olive-300);
  --vd-accent:var(--vd-sun-500);
  --vd-accent-hover:var(--vd-sun-400);
  --vd-accent-press:var(--vd-sun-600);
  --vd-accent-on:var(--vd-ink-950);
  --vd-link:var(--vd-sun-400);
  --vd-link-hover:var(--vd-sun-200);
  --vd-focus-ring:var(--vd-ring-focus);
  --vd-hover-wash:var(--vd-alpha-cream-08);
}

/* Dark ink scope — hero, CTA bands, header, footer, and any opt-in section.
   The site header and footer are permanently dark under the dark-hero /
   light-body direction, so they carry the scope by selector. */

/* Light scope — full-dark flip 2026-08-02: dark is now the document default; apply .vd-light to opt a section back into the light theme. */
.vd-light {
  --vd-surface-page:var(--vd-paper);
  --vd-surface-section:var(--vd-paper-2);
  --vd-surface-card:#FFFFFF;
  --vd-surface-raised:#FFFFFF;
  --vd-surface-inset:var(--vd-paper-2);
  --vd-surface-glass:rgba(251,248,241,.78);
  --vd-border-subtle:var(--vd-alpha-ink-08);
  --vd-border-default:var(--vd-alpha-ink-14);
  --vd-border-strong-c:var(--vd-olive-400);
  --vd-text-heading:var(--vd-ink-900);
  --vd-text-body-c:var(--vd-stone-700);
  --vd-text-muted:var(--vd-stone-500);
  --vd-text-inverse:var(--vd-paper);
  --vd-text-accent:var(--vd-sun-700);
  --vd-eyebrow-color:var(--vd-olive-600);
  --vd-accent:var(--vd-sun-600);
  --vd-accent-hover:var(--vd-sun-500);
  --vd-accent-press:var(--vd-sun-700);
  --vd-accent-on:#FFFFFF;
  --vd-link:var(--vd-sun-700);
  --vd-link-hover:var(--vd-sun-800);
  --vd-focus-ring:var(--vd-ring-focus);
  --vd-hover-wash:var(--vd-alpha-ink-08);
  background-color:var(--vd-surface-page);
  color:var(--vd-text-body-c);
}

.vd-dark,
[data-theme="dark"],
header.xpro-theme-builder-header,
footer#xpro-theme-builder-footer {
  --vd-surface-page:var(--vd-ink-950);
  --vd-surface-section:var(--vd-ink-900);
  --vd-surface-card:var(--vd-ink-850);
  --vd-surface-raised:var(--vd-ink-800);
  --vd-surface-inset:var(--vd-ink-900);
  --vd-surface-glass:rgba(10,19,12,.72);
  --vd-border-subtle:var(--vd-alpha-cream-08);
  --vd-border-default:var(--vd-alpha-cream-14);
  --vd-border-strong-c:var(--vd-olive-600);
  --vd-text-heading:var(--vd-paper);
  --vd-text-body-c:var(--vd-cream-dim);
  --vd-text-muted:var(--vd-stone-400);
  --vd-text-inverse:var(--vd-ink-950);
  --vd-text-accent:var(--vd-sun-400);
  --vd-eyebrow-color:var(--vd-olive-300);
  --vd-accent:var(--vd-sun-500);
  --vd-accent-hover:var(--vd-sun-400);
  --vd-accent-press:var(--vd-sun-600);
  --vd-accent-on:var(--vd-ink-950);
  --vd-link:var(--vd-sun-400);
  --vd-link-hover:var(--vd-sun-200);
  --vd-hover-wash:var(--vd-alpha-cream-08);
  background-color:var(--vd-surface-page);
  color:var(--vd-text-body-c);
}

/* --------------------------------------------------------------------------
   3. BASE — scoped to the front end only, never wp-admin
   -------------------------------------------------------------------------- */
body:not(.wp-admin) {
  background:var(--vd-surface-page);
  color:var(--vd-text-body-c);
  font-family:var(--vd-font-ui);
  font-size:var(--vd-text-body);
  line-height:var(--vd-leading-relaxed);
  -webkit-font-smoothing:antialiased;
  text-wrap:pretty;
}
body:not(.wp-admin) h1, body:not(.wp-admin) h2,
body:not(.wp-admin) h3, body:not(.wp-admin) h4 {
  font-family:var(--vd-font-display);
  color:var(--vd-text-heading);
  letter-spacing:var(--vd-tracking-tight);
  line-height:var(--vd-leading-snug);
  font-weight:var(--vd-weight-bold);
  text-wrap:balance;
}
body:not(.wp-admin) h1 {
  font-size:var(--vd-text-h1);
  letter-spacing:var(--vd-tracking-display);
  line-height:var(--vd-leading-tight);
  font-weight:var(--vd-weight-black);
}
body:not(.wp-admin) h2 { font-size:var(--vd-text-h2); font-weight:var(--vd-weight-bold); }
body:not(.wp-admin) h3 { font-size:var(--vd-text-h3); }
body:not(.wp-admin) h4 { font-size:var(--vd-text-h4); font-weight:var(--vd-weight-semibold); }
body:not(.wp-admin) strong { color:var(--vd-text-heading); font-weight:var(--vd-weight-semibold); }
body:not(.wp-admin) ::selection { background:var(--vd-alpha-sun-32); color:var(--vd-ink-950); }
body:not(.wp-admin) a { color:var(--vd-link); text-underline-offset:3px; transition:var(--vd-transition-ui); }
body:not(.wp-admin) a:hover { color:var(--vd-link-hover); }
body:not(.wp-admin) :focus-visible { outline:none; box-shadow:var(--vd-focus-ring); border-radius:var(--vd-radius-sm); }
body:not(.wp-admin) code, body:not(.wp-admin) pre { font-family:var(--vd-font-mono); }

@media (prefers-reduced-motion:reduce) {
  body:not(.wp-admin) *,
  body:not(.wp-admin) *::before,
  body:not(.wp-admin) *::after { animation-duration:.01ms!important; transition-duration:.01ms!important; }
}

/* --------------------------------------------------------------------------
   4. LAYOUT PRIMITIVES
   -------------------------------------------------------------------------- */
.vd-container { max-width:var(--vd-container); margin-inline:auto; padding-inline:var(--vd-gutter); }
.vd-container--narrow { max-width:var(--vd-container-narrow); }
.vd-section { padding-block:var(--vd-section-y); background:var(--vd-surface-page); }
.vd-section--alt { background:var(--vd-surface-section); }
.vd-section--canopy { background:var(--vd-grad-canopy); }
.vd-stack > * + * { margin-top:var(--vd-space-4); }
.vd-grid { display:grid; gap:var(--vd-grid-gap); }
.vd-grid--3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.vd-grid--2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
@media (max-width:1024px){ .vd-grid--3 { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:768px){
  .vd-grid--3, .vd-grid--2 { grid-template-columns:minmax(0,1fr); }
}

/* --------------------------------------------------------------------------
   5. COMPONENTS
   -------------------------------------------------------------------------- */

/* --- Eyebrow: Oswald, 12px, 0.18em tracking, uppercase, with a 28px rule --- */
.vd-eyebrow {
  display:inline-flex; align-items:center; gap:12px;
  font-family:var(--vd-font-condensed); font-size:var(--vd-text-eyebrow);
  font-weight:500; letter-spacing:var(--vd-tracking-eyebrow);
  text-transform:uppercase; color:var(--vd-eyebrow-color);
}
.vd-eyebrow::before { content:""; width:28px; height:1px; background:currentColor; opacity:.6; }
.vd-eyebrow--accent { color:var(--vd-text-accent); }
.vd-eyebrow--norule::before { display:none; }

/* --- Section heading --- */
.vd-section-heading { display:flex; flex-direction:column; gap:var(--vd-space-4); align-items:flex-start; }
.vd-section-heading > h2, .vd-section-heading > h3 { margin:0; max-width:20ch; }
.vd-section-heading > p { margin:0; font-size:var(--vd-text-lead); color:var(--vd-text-body-c); max-width:var(--vd-measure); }
.vd-section-heading--center { align-items:center; text-align:center; max-width:var(--vd-container-narrow); margin-inline:auto; }

/* --- Buttons: always fully round --- */
.vd-btn {
  display:inline-flex; align-items:center; justify-content:center; gap:9px;
  height:46px; padding:12px 22px;
  font-family:var(--vd-font-ui); font-size:15px; font-weight:var(--vd-weight-semibold);
  letter-spacing:var(--vd-tracking-caps); line-height:1;
  border-radius:var(--vd-radius-pill); border:1px solid transparent;
  background-clip:padding-box; -webkit-background-clip:padding-box;
  cursor:pointer; text-decoration:none; white-space:nowrap;
  transition:var(--vd-transition-ui);
}
.vd-btn--sm { height:36px; padding:8px 16px; font-size:14px; gap:7px; }
.vd-btn--lg { height:56px; padding:16px 30px; font-size:17px; gap:10px; }
.vd-btn--block { width:100%; }
.vd-btn:hover { transform:translateY(var(--vd-hover-lift)); text-decoration:none; }
.vd-btn:active { transform:scale(var(--vd-press-scale)); }

.vd-btn--primary { background:var(--vd-grad-sunrise); color:var(--vd-ink-950); box-shadow:var(--vd-glow-sun); background-clip:padding-box; -webkit-background-clip:padding-box; }
.vd-btn--primary:hover { box-shadow:var(--vd-glow-sun-strong); color:var(--vd-ink-950); }
.vd-btn--secondary { background:transparent; color:var(--vd-text-heading); border-color:var(--vd-border-strong-c); }
.vd-btn--secondary:hover { background:var(--vd-hover-wash); border-color:var(--vd-olive-400); color:var(--vd-text-heading); }
.vd-btn--ghost { background:transparent; color:var(--vd-text-body-c); }
.vd-btn--ghost:hover { background:var(--vd-hover-wash); color:var(--vd-text-heading); }
.vd-btn--ember { background:transparent; color:var(--vd-text-accent); border-color:var(--vd-alpha-sun-32); }
.vd-btn--ember:hover { background:var(--vd-alpha-sun-16); }
.vd-btn--olive { background:var(--vd-olive-600); color:var(--vd-paper); border-color:var(--vd-olive-500); box-shadow:var(--vd-shadow-2); background-clip:padding-box; -webkit-background-clip:padding-box; }
.vd-btn--olive:hover { background:var(--vd-olive-500); color:var(--vd-paper); }
.vd-btn[disabled], .vd-btn--disabled { opacity:.42; cursor:not-allowed; transform:none; }

/* --- Badge / Tag --- */
.vd-badge {
  display:inline-flex; align-items:center; gap:6px; padding:5px 12px;
  border-radius:var(--vd-radius-pill); font-family:var(--vd-font-condensed);
  font-size:var(--vd-text-eyebrow); font-weight:500;
  letter-spacing:var(--vd-tracking-caps); text-transform:uppercase; line-height:1.5;
  background:var(--vd-alpha-sun-16); color:var(--vd-text-accent); border:1px solid var(--vd-alpha-sun-32);
}
.vd-badge--solid { background:var(--vd-grad-sunrise); color:var(--vd-ink-950); border-color:transparent; background-clip:padding-box; -webkit-background-clip:padding-box; }
.vd-badge--olive { background:rgba(120,120,56,.18); color:var(--vd-olive-600); border-color:rgba(120,120,56,.4); }
.vd-dark .vd-badge--olive { color:var(--vd-olive-300); }
.vd-badge--neutral { background:var(--vd-alpha-ink-08); color:var(--vd-text-body-c); border-color:var(--vd-border-default); }
.vd-dark .vd-badge--neutral { background:var(--vd-alpha-cream-08); }
.vd-tag {
  display:inline-flex; align-items:center; padding:4px 10px; border-radius:var(--vd-radius-sm);
  font-size:var(--vd-text-xs); font-weight:500; letter-spacing:var(--vd-tracking-caps);
  background:var(--vd-surface-inset); color:var(--vd-text-body-c); border:1px solid var(--vd-border-subtle);
}

/* --- Card: 18px radius, hairline border, warm shadow, top accent rule --- */
.vd-card {
  position:relative; border-radius:var(--vd-radius-lg); padding:var(--vd-space-8);
  overflow:hidden; transition:var(--vd-transition-ui);
  background:var(--vd-surface-card); border:1px solid var(--vd-border-subtle);
  box-shadow:var(--vd-shadow-2);
}
.vd-card--raised { background:var(--vd-surface-raised); border-color:var(--vd-border-default); box-shadow:var(--vd-shadow-3); }
.vd-card--outline { background:transparent; box-shadow:none; border-color:var(--vd-border-default); }
.vd-card--glass {
  background:var(--vd-surface-glass); border-color:var(--vd-border-default);
  box-shadow:var(--vd-shadow-3); backdrop-filter:var(--vd-blur-glass); -webkit-backdrop-filter:var(--vd-blur-glass);
}
.vd-card--feature { background:var(--vd-surface-raised); border-color:var(--vd-alpha-sun-32); box-shadow:var(--vd-shadow-4); }
.vd-card--interactive { cursor:pointer; }
.vd-card--interactive:hover { transform:translateY(-3px); border-color:var(--vd-alpha-sun-32); box-shadow:var(--vd-shadow-4); }
.vd-card--accent-top::before {
  content:""; position:absolute; inset-inline:0; top:0; height:3px; background:var(--vd-grad-sunrise);
}

/* --- Service card --- */
.vd-service-card { display:flex; flex-direction:column; gap:var(--vd-space-4); }
.vd-service-card__icon {
  display:inline-flex; align-items:center; justify-content:center; width:46px; height:46px;
  border-radius:var(--vd-radius-md); background:var(--vd-alpha-sun-16); color:var(--vd-text-accent);
  transition:var(--vd-transition-ui);
}
.vd-service-card:hover .vd-service-card__icon { background:var(--vd-grad-sunrise); color:var(--vd-ink-950); }
.vd-service-card h3 { margin:0; font-size:var(--vd-text-h4); font-weight:700; }
.vd-service-card p { margin:0; font-size:var(--vd-text-sm); color:var(--vd-text-body-c); flex:1; }
.vd-service-card__link {
  font-family:var(--vd-font-condensed); font-size:var(--vd-text-xs);
  letter-spacing:var(--vd-tracking-caps); text-transform:uppercase;
  color:var(--vd-text-accent); text-decoration:none;
}

/* --- Pricing card --- */
.vd-pricing-card { display:flex; flex-direction:column; gap:var(--vd-space-5); }
.vd-pricing-card__head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.vd-pricing-card__head h3 { margin:0; font-size:var(--vd-text-h4); font-weight:700; }
.vd-pricing-card__price { display:flex; align-items:baseline; gap:4px; }
.vd-pricing-card__amount {
  font-family:var(--vd-font-condensed); font-size:44px; font-weight:600; line-height:1;
  color:var(--vd-text-heading);
}
.vd-card--feature .vd-pricing-card__amount { color:var(--vd-text-accent); }
.vd-pricing-card__cadence { font-size:var(--vd-text-sm); color:var(--vd-text-muted); }
.vd-pricing-card__features { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:11px; flex:1; }
.vd-pricing-card__features li { display:flex; gap:10px; font-size:var(--vd-text-sm); color:var(--vd-text-body-c); line-height:1.45; }
.vd-pricing-card__features li::before { content:"\2713"; color:var(--vd-text-accent); font-weight:700; line-height:1.4; }

/* --- Process step --- */
.vd-process-step { display:flex; gap:var(--vd-space-5); }
.vd-process-step__rail { display:flex; flex-direction:column; align-items:center; flex-shrink:0; }
.vd-process-step__index {
  font-family:var(--vd-font-condensed); font-size:var(--vd-text-eyebrow); font-weight:600;
  letter-spacing:var(--vd-tracking-caps); color:var(--vd-ink-950); background:var(--vd-grad-sunrise);
  width:34px; height:34px; border-radius:var(--vd-radius-pill);
  display:inline-flex; align-items:center; justify-content:center;
}
.vd-process-step__line { width:1px; flex:1; min-height:24px; margin-top:8px; background:linear-gradient(180deg,var(--vd-alpha-sun-32),transparent); }
.vd-process-step__body { padding-bottom:var(--vd-space-8); }
.vd-process-step:last-child .vd-process-step__body { padding-bottom:0; }
.vd-process-step h4 { margin:4px 0 6px; font-size:var(--vd-text-h4); font-weight:600; }
.vd-process-step p { margin:0; font-size:var(--vd-text-sm); color:var(--vd-text-body-c); }

/* --- Stat block: Oswald numerals in the sunrise gradient --- */
.vd-stat { display:flex; flex-direction:column; gap:6px; }
.vd-stat__value {
  font-family:var(--vd-font-condensed); font-size:clamp(38px,4vw,54px); font-weight:600;
  line-height:1; letter-spacing:-0.01em;
  background:var(--vd-grad-sunrise); -webkit-background-clip:text; background-clip:text; color:transparent;
}
.vd-stat__label {
  font-family:var(--vd-font-condensed); font-size:var(--vd-text-eyebrow); font-weight:500;
  letter-spacing:var(--vd-tracking-eyebrow); text-transform:uppercase; color:var(--vd-eyebrow-color);
}
.vd-stat__note { font-size:var(--vd-text-xs); color:var(--vd-text-muted); }

/* --- Testimonial: the one place Source Serif italic appears --- */
.vd-testimonial { margin:0; }
.vd-testimonial::before {
  content:"\201C"; display:block; font-family:var(--vd-font-serif); font-size:52px;
  line-height:.6; color:var(--vd-alpha-sun-32); margin-bottom:12px;
}
.vd-testimonial blockquote {
  margin:0; font-family:var(--vd-font-serif); font-style:italic; font-size:var(--vd-text-h3);
  line-height:1.44; color:var(--vd-text-heading); max-width:var(--vd-measure);
}
.vd-testimonial figcaption {
  margin-top:var(--vd-space-5); font-family:var(--vd-font-condensed); font-size:var(--vd-text-xs);
  letter-spacing:var(--vd-tracking-caps); text-transform:uppercase; color:var(--vd-eyebrow-color);
}
.vd-testimonial figcaption span { color:var(--vd-text-muted); }
.vd-testimonial--card {
  padding:var(--vd-space-8); border-radius:var(--vd-radius-lg);
  background:var(--vd-surface-card); border:1px solid var(--vd-border-subtle);
}
.vd-testimonial--card blockquote { font-size:var(--vd-text-lead); }

/* --- FAQ --- */
.vd-faq__item { border-bottom:1px solid var(--vd-border-subtle); }
.vd-faq__q {
  display:flex; width:100%; align-items:center; justify-content:space-between; gap:16px;
  padding:20px 0; cursor:pointer; background:none; border:none; text-align:left;
  font-family:var(--vd-font-display); font-size:var(--vd-text-h4); font-weight:600;
  color:var(--vd-text-heading); transition:var(--vd-transition-ui);
}
.vd-faq__item[open] .vd-faq__q, .vd-faq__q[aria-expanded="true"] { color:var(--vd-text-accent); }
.vd-faq__q::after { content:"+"; color:var(--vd-text-accent); font-size:22px; line-height:1; transition:transform var(--vd-dur-base) var(--vd-ease-out); }
.vd-faq__item[open] .vd-faq__q::after { transform:rotate(45deg); }
.vd-faq__a { margin:0; padding-bottom:20px; font-size:var(--vd-text-sm); color:var(--vd-text-body-c); max-width:var(--vd-measure); }

/* --- CTA band --- */
.vd-cta-band {
  position:relative; overflow:hidden; border-radius:var(--vd-radius-xl);
  padding:clamp(40px,6vw,72px); background:var(--vd-grad-canopy);
  border:1px solid var(--vd-alpha-cream-14);
}
.vd-cta-band__media { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.vd-cta-band__scrim { position:absolute; inset:0; background:linear-gradient(96deg,rgba(5,11,6,.94) 0%,rgba(5,11,6,.72) 55%,rgba(5,11,6,.35) 100%); }
.vd-cta-band__body { position:relative; display:flex; flex-direction:column; gap:var(--vd-space-4); max-width:var(--vd-container-narrow); }
.vd-cta-band h2 { margin:0; font-size:var(--vd-text-h1); font-weight:800; letter-spacing:var(--vd-tracking-display); line-height:var(--vd-leading-tight); color:var(--vd-paper); max-width:16ch; }
.vd-cta-band p { margin:0; font-size:var(--vd-text-lead); color:var(--vd-cream-dim); }
.vd-cta-band__actions { display:flex; flex-wrap:wrap; gap:var(--vd-space-3); margin-top:var(--vd-space-4); }

/* --- Hero: full-bleed photography under a left-weighted ink scrim --- */
.vd-hero { position:relative; overflow:hidden; border-bottom:1px solid var(--vd-alpha-cream-08); }
.vd-hero__media { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.vd-hero__scrim { position:absolute; inset:0; background:linear-gradient(96deg,rgba(5,11,6,.96) 0%,rgba(5,11,6,.82) 46%,rgba(5,11,6,.32) 100%); }
.vd-hero__horizon { position:absolute; inset-inline:0; bottom:0; height:180px; background:var(--vd-grad-horizon); }
.vd-hero__body { position:relative; max-width:var(--vd-container); margin-inline:auto; padding:clamp(72px,10vw,132px) var(--vd-gutter); }
.vd-hero h1 { font-size:var(--vd-text-display-2); letter-spacing:var(--vd-tracking-display); line-height:var(--vd-leading-tight); margin:var(--vd-space-5) 0 var(--vd-space-6); max-width:21ch; }
.vd-hero__lead { font-size:var(--vd-text-lead); max-width:58ch; color:var(--vd-cream-dim); }
.vd-hero__actions { display:flex; flex-wrap:wrap; gap:var(--vd-space-3); margin-top:var(--vd-space-8); }
.vd-hero__stats { display:flex; flex-wrap:wrap; gap:var(--vd-space-12); margin-top:var(--vd-space-16); }
@media (max-width:768px){ .vd-hero__stats { gap:var(--vd-space-8); } }

/* --- Page header (interior pages) --- */
.vd-page-header { background:var(--vd-grad-canopy); border-bottom:1px solid var(--vd-alpha-cream-08); padding:56px 0 var(--vd-space-20); }
.vd-page-header__body { max-width:var(--vd-container); margin-inline:auto; padding-inline:var(--vd-gutter); display:flex; flex-direction:column; gap:var(--vd-space-6); }
.vd-page-header h1 { margin:0; max-width:18ch; }
.vd-page-header p { margin:0; font-size:var(--vd-text-lead); max-width:62ch; }
.vd-breadcrumb { display:flex; flex-wrap:wrap; gap:8px; font-size:var(--vd-text-xs); color:var(--vd-text-muted); }
.vd-breadcrumb a { color:var(--vd-text-muted); text-decoration:none; }
.vd-breadcrumb a:hover { color:var(--vd-text-accent); }

/* --- Forms --- */
.vd-field { display:flex; flex-direction:column; gap:7px; }
.vd-field > label {
  font-family:var(--vd-font-condensed); font-size:var(--vd-text-eyebrow); font-weight:500;
  letter-spacing:var(--vd-tracking-caps); text-transform:uppercase; color:var(--vd-text-muted);
}
.vd-field > label .vd-required { color:var(--vd-text-accent); margin-left:4px; }
.vd-input, .vd-textarea, .vd-select {
  width:100%; font-family:var(--vd-font-ui); font-size:var(--vd-text-body);
  color:var(--vd-text-heading); background:var(--vd-surface-inset);
  border:1px solid var(--vd-border-default); border-radius:var(--vd-radius-md);
  padding:13px 16px; outline:none; transition:var(--vd-transition-ui);
}
.vd-input:focus, .vd-textarea:focus, .vd-select:focus {
  border-color:var(--vd-accent); box-shadow:var(--vd-ring-focus);
}
.vd-hint { font-size:var(--vd-text-xs); color:var(--vd-text-muted); }
.vd-error { font-size:var(--vd-text-xs); color:var(--vd-danger); }

/* --------------------------------------------------------------------------
   6. PLATFORM BRIDGES — Astra, Elementor, WPForms, EDD output
   These map existing markup onto the tokens so untouched pages inherit the
   rebrand without being rebuilt.
   -------------------------------------------------------------------------- */

/* Astra */
body:not(.wp-admin) .site-content { background:var(--vd-surface-page); }
body:not(.wp-admin) .entry-title, body:not(.wp-admin) .entry-content h2,
body:not(.wp-admin) .entry-content h3 { font-family:var(--vd-font-display); color:var(--vd-text-heading); }
body:not(.wp-admin) .entry-content { color:var(--vd-text-body-c); font-size:var(--vd-text-body); line-height:var(--vd-leading-relaxed); }
body:not(.wp-admin) .entry-content a { color:var(--vd-link); }
body:not(.wp-admin) blockquote {
  border-left:none; padding-left:0;
  font-family:var(--vd-font-serif); font-style:italic; color:var(--vd-text-heading);
}

/* Elementor buttons inherit the pill + gradient signature */
body:not(.wp-admin) .elementor-button,
body:not(.wp-admin) .elementor-button-link {
  border-radius:var(--vd-radius-pill);
  font-family:var(--vd-font-ui); font-weight:var(--vd-weight-semibold);
  letter-spacing:var(--vd-tracking-caps);
  transition:var(--vd-transition-ui);
}
body:not(.wp-admin) .elementor-button:hover { transform:translateY(var(--vd-hover-lift)); }
body:not(.wp-admin) .elementor-button:active { transform:scale(var(--vd-press-scale)); }

/* Elementor accordion / toggle -> FAQ look */
body:not(.wp-admin) .elementor-accordion .elementor-tab-title,
body:not(.wp-admin) .elementor-toggle .elementor-tab-title {
  font-family:var(--vd-font-display); font-size:var(--vd-text-h4); font-weight:600;
  color:var(--vd-text-heading); border-bottom:1px solid var(--vd-border-subtle);
}
body:not(.wp-admin) .elementor-accordion .elementor-tab-title.elementor-active,
body:not(.wp-admin) .elementor-toggle .elementor-tab-title.elementor-active { color:var(--vd-text-accent); }
body:not(.wp-admin) .elementor-accordion .elementor-tab-content,
body:not(.wp-admin) .elementor-toggle .elementor-tab-content {
  font-size:var(--vd-text-sm); color:var(--vd-text-body-c); border:none;
}

/* Elementor icon boxes -> the 46px sunrise tile */
body:not(.wp-admin) .elementor-icon-box-wrapper .elementor-icon {
  border-radius:var(--vd-radius-md); transition:var(--vd-transition-ui);
}

/* WPForms -> design-system fields */
body:not(.wp-admin) .wpforms-container .wpforms-field-label {
  font-family:var(--vd-font-condensed); font-size:var(--vd-text-eyebrow); font-weight:500;
  letter-spacing:var(--vd-tracking-caps); text-transform:uppercase; color:var(--vd-text-muted);
}
body:not(.wp-admin) .wpforms-container input[type=text],
body:not(.wp-admin) .wpforms-container input[type=email],
body:not(.wp-admin) .wpforms-container input[type=tel],
body:not(.wp-admin) .wpforms-container input[type=url],
body:not(.wp-admin) .wpforms-container select,
body:not(.wp-admin) .wpforms-container textarea {
  font-family:var(--vd-font-ui); font-size:var(--vd-text-body);
  color:var(--vd-text-heading); background:var(--vd-surface-inset);
  border:1px solid var(--vd-border-default); border-radius:var(--vd-radius-md);
  padding:13px 16px; box-shadow:none; transition:var(--vd-transition-ui);
}
body:not(.wp-admin) .wpforms-container input:focus,
body:not(.wp-admin) .wpforms-container select:focus,
body:not(.wp-admin) .wpforms-container textarea:focus {
  border-color:var(--vd-accent); box-shadow:var(--vd-ring-focus); outline:none;
}
body:not(.wp-admin) .wpforms-container button[type=submit],
body:not(.wp-admin) .wpforms-container .wpforms-submit {
  background:var(--vd-grad-sunrise); color:var(--vd-ink-950); border:1px solid transparent;
  border-radius:var(--vd-radius-pill); box-shadow:var(--vd-glow-sun);
  background-clip:padding-box; -webkit-background-clip:padding-box;
  font-family:var(--vd-font-ui); font-size:15px; font-weight:var(--vd-weight-semibold);
  letter-spacing:var(--vd-tracking-caps); height:46px; padding:12px 22px;
  transition:var(--vd-transition-ui);
}
body:not(.wp-admin) .wpforms-container button[type=submit]:hover {
  transform:translateY(var(--vd-hover-lift)); box-shadow:var(--vd-glow-sun-strong);
  background:var(--vd-grad-sunrise); color:var(--vd-ink-950);
}
body:not(.wp-admin) .wpforms-confirmation-container-full {
  background:var(--vd-surface-card); border:1px solid var(--vd-alpha-sun-32);
  border-radius:var(--vd-radius-lg); color:var(--vd-text-body-c);
}

/* Easy Digital Downloads — ebook funnel buttons stay on-brand but structurally
   untouched, so checkout keeps working. */
body:not(.wp-admin) .edd-submit.button,
body:not(.wp-admin) .edd_purchase_submit_wrapper .button {
  background:var(--vd-grad-sunrise); color:var(--vd-ink-950);
  border:1px solid transparent; border-radius:var(--vd-radius-pill);
  background-clip:padding-box; -webkit-background-clip:padding-box;
  font-family:var(--vd-font-ui); font-weight:var(--vd-weight-semibold);
  letter-spacing:var(--vd-tracking-caps); box-shadow:var(--vd-glow-sun);
  transition:var(--vd-transition-ui);
}
body:not(.wp-admin) .edd-submit.button:hover { transform:translateY(var(--vd-hover-lift)); box-shadow:var(--vd-glow-sun-strong); }

/* --------------------------------------------------------------------------
   7. RESPONSIVE
   -------------------------------------------------------------------------- */
@media (max-width:900px){
  .vd-hero__body { padding-block:clamp(56px,12vw,96px); }
  .vd-cta-band { padding:clamp(32px,7vw,48px); }
  .vd-testimonial blockquote { font-size:var(--vd-text-lead); }
}
@media (max-width:600px){
  .vd-hero h1 { font-size:clamp(32px,9vw,44px); }
  .vd-btn--lg { height:52px; padding:14px 24px; font-size:16px; }
  .vd-hero__actions .vd-btn { width:100%; }
}

/* --------------------------------------------------------------------------
   8. PHOTOGRAPHY SCRIM
   Design-system rule: type never sits on raw photography — it sits on a
   96° left-weighted ink protection gradient. Applied to the full-bleed photo
   sections that currently run white text straight over a bright sky.
   -------------------------------------------------------------------------- */
/* Add .vd-photo-section to any full-bleed photo container to get the scrim.
   Listed IDs are the existing full-bleed photo sections on this site. */
.vd-photo-section,
.elementor-element-4486322 { position:relative; isolation:isolate; }
.vd-photo-section::before,
.elementor-element-4486322::before {
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background:linear-gradient(96deg,rgba(5,11,6,.92) 0%,rgba(5,11,6,.74) 46%,rgba(5,11,6,.30) 100%);
}
.vd-photo-section > *,
.elementor-element-4486322 > * { position:relative; z-index:1; }

/* Astra native templates (archives, single posts, 404, comments) — full-dark bridge 2026-08-02 */
body.ast-separate-container:not(.wp-admin) .ast-article-post,
body.ast-separate-container:not(.wp-admin) .ast-article-single:not(.ast-related-post),
body.ast-separate-container:not(.wp-admin) .ast-article-inner,
body.ast-separate-container:not(.wp-admin) .comments-area,
body.ast-separate-container:not(.wp-admin) .error-404,
body.ast-separate-container:not(.wp-admin) .no-results {
  background-color:var(--vd-surface-card) !important;
  border:1px solid var(--vd-border-subtle) !important;
}
body:not(.wp-admin) .ast-article-post .entry-title a,
body:not(.wp-admin) .page-title,
body:not(.wp-admin) .ast-archive-description .ast-archive-title {
  color:var(--vd-text-heading) !important;
}

/* ==========================================================================
   VD-CHROME  — appended to vd-design-system.css
   1. Flips the document default to FULL DARK (the design system's native mode)
   2. Site header / nav / footer components
   ========================================================================== */

/* --------------------------------------------------------------------------
   MODE: FULL DARK. Later in the cascade than section 2, so this wins.
   -------------------------------------------------------------------------- */
:root {
  --vd-surface-page:var(--vd-ink-950);
  --vd-surface-section:var(--vd-ink-900);
  --vd-surface-card:var(--vd-ink-850);
  --vd-surface-raised:var(--vd-ink-800);
  --vd-surface-inset:var(--vd-ink-900);
  --vd-surface-glass:rgba(10,19,12,.72);
  --vd-border-subtle:var(--vd-alpha-cream-08);
  --vd-border-default:var(--vd-alpha-cream-14);
  --vd-border-strong-c:var(--vd-olive-600);
  --vd-text-heading:var(--vd-paper);
  --vd-text-body-c:var(--vd-cream-dim);
  --vd-text-muted:var(--vd-stone-400);
  --vd-text-inverse:var(--vd-ink-950);
  --vd-text-accent:var(--vd-sun-400);
  --vd-eyebrow-color:var(--vd-olive-300);
  --vd-accent:var(--vd-sun-500);
  --vd-accent-hover:var(--vd-sun-400);
  --vd-accent-press:var(--vd-sun-600);
  --vd-accent-on:var(--vd-ink-950);
  --vd-link:var(--vd-sun-400);
  --vd-link-hover:var(--vd-sun-200);
  --vd-hover-wash:var(--vd-alpha-cream-08);
}
.vd-light, [data-theme="light"] {
  --vd-surface-page:var(--vd-paper);
  --vd-surface-section:var(--vd-paper-2);
  --vd-surface-card:#FFFFFF;
  --vd-surface-raised:#FFFFFF;
  --vd-surface-inset:var(--vd-paper-2);
  --vd-surface-glass:rgba(251,248,241,.78);
  --vd-border-subtle:var(--vd-alpha-ink-08);
  --vd-border-default:var(--vd-alpha-ink-14);
  --vd-border-strong-c:var(--vd-olive-400);
  --vd-text-heading:var(--vd-ink-900);
  --vd-text-body-c:var(--vd-stone-700);
  --vd-text-muted:var(--vd-stone-500);
  --vd-text-accent:var(--vd-sun-700);
  --vd-eyebrow-color:var(--vd-olive-600);
  --vd-accent:var(--vd-sun-600);
  --vd-link:var(--vd-sun-700);
  --vd-link-hover:var(--vd-sun-800);
  --vd-hover-wash:var(--vd-alpha-ink-08);
  background:var(--vd-surface-page);
  color:var(--vd-text-body-c);
}
html { background:var(--vd-ink-950); }

/* --------------------------------------------------------------------------
   SITE HEADER
   -------------------------------------------------------------------------- */
.vd-site-header {
  position:sticky; top:0; z-index:200;
  background:var(--vd-surface-glass);
  backdrop-filter:var(--vd-blur-glass); -webkit-backdrop-filter:var(--vd-blur-glass);
  border-bottom:1px solid var(--vd-border-subtle);
}
.admin-bar .vd-site-header { top:32px; }
.vd-site-header__inner {
  max-width:var(--vd-container); margin-inline:auto;
  padding:14px var(--vd-gutter);
  display:flex; align-items:center; gap:var(--vd-space-8);
}
.vd-brand { display:inline-flex; align-items:center; gap:14px; text-decoration:none; flex:0 0 auto; }
.vd-brand__badge { width:52px; height:52px; border-radius:50%; display:block; object-fit:contain; }
.vd-brand__text { display:flex; flex-direction:column; gap:3px; }
.vd-brand__name {
  font-family:var(--vd-font-display); font-weight:700; font-size:19px;
  letter-spacing:var(--vd-tracking-tight); color:var(--vd-paper); line-height:1;
}
.vd-brand__tag {
  font-family:var(--vd-font-condensed); font-size:11px; font-weight:400;
  letter-spacing:var(--vd-tracking-eyebrow); text-transform:uppercase;
  color:var(--vd-olive-300); line-height:1;
}
.vd-site-nav { display:flex; align-items:center; gap:var(--vd-space-8); margin-left:auto; }
.vd-site-nav > a:not(.vd-btn) {
  font-size:var(--vd-text-sm); font-weight:500; letter-spacing:.01em;
  color:var(--vd-text-body-c); text-decoration:none; transition:var(--vd-transition-ui);
  white-space:nowrap;
}
.vd-site-nav > a:not(.vd-btn):hover,
.vd-site-nav > a[aria-current="page"] { color:var(--vd-sun-300); }

/* Mobile nav — CSS only, no JS dependency */
.vd-nav-toggle { position:absolute; opacity:0; pointer-events:none; }
.vd-nav-burger { display:none; margin-left:auto; width:44px; height:44px; cursor:pointer;
  align-items:center; justify-content:center; border-radius:var(--vd-radius-md);
  border:1px solid var(--vd-border-default); }
.vd-nav-burger span, .vd-nav-burger span::before, .vd-nav-burger span::after {
  content:""; display:block; width:20px; height:2px; background:var(--vd-paper); border-radius:2px;
  transition:transform var(--vd-dur-base) var(--vd-ease-out), opacity var(--vd-dur-fast);
}
.vd-nav-burger span { position:relative; }
.vd-nav-burger span::before { position:absolute; top:-6px; }
.vd-nav-burger span::after { position:absolute; top:6px; }
.vd-nav-toggle:checked ~ .vd-nav-burger span { background:transparent; }
.vd-nav-toggle:checked ~ .vd-nav-burger span::before { transform:translateY(6px) rotate(45deg); }
.vd-nav-toggle:checked ~ .vd-nav-burger span::after { transform:translateY(-6px) rotate(-45deg); }

@media (max-width:1024px) {
  .vd-nav-burger { display:inline-flex; }
  .vd-site-nav {
    position:absolute; left:auto; right:0; top:100%;
    width:320px; max-width:88vw;
    flex-direction:column; align-items:stretch; gap:0;
    background:var(--vd-ink-950); border-bottom:1px solid var(--vd-border-default);
    border-left:1px solid var(--vd-border-default);
    box-shadow:-10px 0 30px rgba(5,11,6,.4);
    padding:var(--vd-space-2) var(--vd-gutter) var(--vd-space-6);
    max-height:0; overflow:hidden; opacity:0; visibility:hidden;
    transition:max-height var(--vd-dur-base) var(--vd-ease-out), opacity var(--vd-dur-fast), visibility var(--vd-dur-base);
  }
  .vd-nav-toggle:checked ~ .vd-site-nav { max-height:70vh; opacity:1; visibility:visible; overflow-y:auto; }
  .vd-site-nav > a:not(.vd-btn) { padding:14px 0; border-bottom:1px solid var(--vd-border-subtle); font-size:var(--vd-text-body); }
  .vd-site-nav > .vd-btn { margin-top:var(--vd-space-5); }
  .vd-brand__badge { width:44px; height:44px; }
  .vd-brand__name { font-size:17px; }
}

/* --------------------------------------------------------------------------
   SITE FOOTER
   -------------------------------------------------------------------------- */
.vd-site-footer { background:var(--vd-ink-900); border-top:1px solid var(--vd-border-subtle); }
.vd-site-footer__grid {
  max-width:var(--vd-container); margin-inline:auto;
  padding:var(--vd-space-20) var(--vd-gutter) var(--vd-space-8);
  display:grid; grid-template-columns:1.6fr repeat(3,1fr); gap:var(--vd-space-12);
}
.vd-site-footer__blurb { margin:var(--vd-space-5) 0 0; font-size:var(--vd-text-sm); color:var(--vd-text-muted); max-width:34ch; }
.vd-site-footer h3 {
  font-family:var(--vd-font-condensed); font-size:var(--vd-text-eyebrow); font-weight:500;
  letter-spacing:var(--vd-tracking-eyebrow); text-transform:uppercase;
  color:var(--vd-olive-300); margin:0 0 14px;
}
.vd-site-footer a:not(.vd-btn) {
  display:block; font-size:var(--vd-text-sm); color:var(--vd-text-body-c);
  text-decoration:none; padding:5px 0; transition:var(--vd-transition-ui);
}
.vd-site-footer a:not(.vd-btn):hover { color:var(--vd-sun-300); }
.vd-site-footer__addr { display:block; font-size:var(--vd-text-sm); color:var(--vd-text-muted); padding:5px 0; }
.vd-site-footer__bar {
  max-width:var(--vd-container); margin-inline:auto;
  padding:var(--vd-space-5) var(--vd-gutter) var(--vd-space-10);
  border-top:1px solid var(--vd-border-subtle);
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px;
  font-size:var(--vd-text-xs); color:var(--vd-text-muted);
}
.vd-site-footer__region { font-family:var(--vd-font-condensed); letter-spacing:var(--vd-tracking-caps); text-transform:uppercase; }
@media (max-width:900px) { .vd-site-footer__grid { grid-template-columns:1fr 1fr; gap:var(--vd-space-10); } }
@media (max-width:560px) { .vd-site-footer__grid { grid-template-columns:1fr; } }

/* --------------------------------------------------------------------------
   FAQ as native <details> — no JS
   -------------------------------------------------------------------------- */
details.vd-faq__item > summary.vd-faq__q { list-style:none; }
details.vd-faq__item > summary.vd-faq__q::-webkit-details-marker { display:none; }
details.vd-faq__item > summary.vd-faq__q::marker { content:""; }
details.vd-faq__item[open] > summary.vd-faq__q { color:var(--vd-text-accent); }

/* --------------------------------------------------------------------------
   HOME PAGE
   -------------------------------------------------------------------------- */
.vd-home { display:block; }
.vd-split {
  display:grid; grid-template-columns:1fr 1.05fr; gap:var(--vd-space-24); align-items:start;
}
@media (max-width:900px) { .vd-split { grid-template-columns:1fr; gap:var(--vd-space-12); } }
.vd-pricing-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--vd-grid-gap); align-items:stretch; margin-top:var(--vd-space-12); }
@media (max-width:960px) { .vd-pricing-grid { grid-template-columns:1fr; max-width:440px; margin-inline:auto; } }
.vd-services-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--vd-grid-gap); margin-top:var(--vd-space-12); }
@media (max-width:900px) { .vd-services-grid { grid-template-columns:1fr; } }
.vd-founding {
  margin-top:var(--vd-space-12); display:grid; grid-template-columns:1.4fr .8fr;
  gap:var(--vd-space-12); align-items:center;
}
@media (max-width:900px) { .vd-founding { grid-template-columns:1fr; gap:var(--vd-space-6); } }
.vd-faq-wrap { max-width:var(--vd-container-narrow); margin:var(--vd-space-10) auto 0; }

/* Elementor wrappers must not fight full-bleed sections */
.vd-ds .elementor-widget-html, .vd-ds .elementor-widget-html > .elementor-widget-container { width:100%; }
.vd-ds .vd-home .vd-section:first-child { padding-top:0; }

/* ==========================================================================
   VD-FIXES — specificity repairs against Astra/Elementor base rules.
   Kept last in the cascade.
   ========================================================================== */

/* The global link colour (body:not(.wp-admin) a) has higher specificity than
   .vd-btn--*, which was repainting every button's label sunrise-orange.
   Buttons carry their own label colour. */
body:not(.wp-admin) a.vd-btn { text-decoration:none; }
body:not(.wp-admin) a.vd-btn--primary,
body:not(.wp-admin) a.vd-btn--primary:hover,
body:not(.wp-admin) a.vd-btn--primary:focus,
body:not(.wp-admin) a.vd-btn--primary:visited { color:var(--vd-ink-950); }
body:not(.wp-admin) a.vd-btn--secondary,
body:not(.wp-admin) a.vd-btn--secondary:hover,
body:not(.wp-admin) a.vd-btn--secondary:visited { color:var(--vd-text-heading); }
body:not(.wp-admin) a.vd-btn--ghost,
body:not(.wp-admin) a.vd-btn--ghost:visited { color:var(--vd-text-body-c); }
body:not(.wp-admin) a.vd-btn--olive,
body:not(.wp-admin) a.vd-btn--olive:visited { color:var(--vd-paper); }
body:not(.wp-admin) a.vd-btn--ember,
body:not(.wp-admin) a.vd-btn--ember:visited { color:var(--vd-text-accent); }

/* Chrome + card links own their colour too */
body:not(.wp-admin) .vd-site-nav > a:not(.vd-btn),
body:not(.wp-admin) .vd-site-nav > a:not(.vd-btn):visited { color:var(--vd-text-body-c); }
body:not(.wp-admin) .vd-site-nav > a:not(.vd-btn):hover { color:var(--vd-sun-300); }
body:not(.wp-admin) .vd-site-footer a:not(.vd-btn),
body:not(.wp-admin) .vd-site-footer a:not(.vd-btn):visited { color:var(--vd-text-body-c); }
body:not(.wp-admin) .vd-site-footer a:not(.vd-btn):hover { color:var(--vd-sun-300); }
body:not(.wp-admin) a.vd-brand, body:not(.wp-admin) a.vd-brand:visited { color:var(--vd-paper); }
body:not(.wp-admin) a.vd-service-card,
body:not(.wp-admin) a.vd-service-card:visited { color:inherit; text-decoration:none; }
body:not(.wp-admin) a.vd-service-card h3 { color:var(--vd-text-heading); }

/* Astra sets `img { height:auto }`; full-bleed media must fill its section. */
.vd-hero__media, .vd-cta-band__media {
  height:100% !important; width:100% !important; max-width:none !important;
  object-fit:cover; display:block;
}
.vd-brand__badge { height:52px !important; width:52px !important; max-width:none !important; }
@media (max-width:1024px){ .vd-brand__badge { height:44px !important; width:44px !important; } }

/* Astra/Elementor add list bullets and margins the design system doesn't want */
.vd-pricing-card__features { list-style:none !important; margin:0 !important; padding:0 !important; }
.vd-pricing-card__features li { margin:0 !important; }
.vd-site-footer a, .vd-site-nav a { text-decoration:none !important; }

/* The rebuilt pages provide their own vertical rhythm */
.vd-ds .entry-content > .elementor > .e-con { padding:0 !important; }
.vd-ds .vd-home > .vd-hero:first-child { margin-top:0; }

/* Headings inside design-system sections must not inherit Elementor widget margins */
.vd-home h1, .vd-home h2, .vd-home h3, .vd-home h4 { margin-block:0; }
.vd-section-heading > h2 { margin:0; }
.vd-service-card h3, .vd-pricing-card__head h3 { margin:0; }
.vd-process-step h4 { margin:4px 0 6px; }
.vd-hero h1 { margin:var(--vd-space-5) 0 var(--vd-space-6); }
.vd-cta-band h2 { margin:0; }

/* Sticky header inside the Xpro wrapper */
header.xpro-theme-builder-header .elementor-widget-html,
header.xpro-theme-builder-header .elementor-widget-container,
header.xpro-theme-builder-header .e-con,
header.xpro-theme-builder-header .e-con-inner { overflow:visible !important; }
.vd-site-header__inner { position:relative; }

/* ==========================================================================
   VD-FIXES-2 — footer chrome specificity
   ========================================================================== */

/* `body:not(.wp-admin) h3` was repainting the footer column headings as
   24px Archivo. They are Oswald eyebrows. */
body:not(.wp-admin) .vd-site-footer h3 {
  font-family:var(--vd-font-condensed) !important;
  font-size:var(--vd-text-eyebrow);
  font-weight:500;
  letter-spacing:var(--vd-tracking-eyebrow);
  text-transform:uppercase;
  color:var(--vd-olive-300);
  line-height:1.4;
  margin:0 0 14px;
}

/* `.vd-site-footer a:not(.vd-btn){display:block}` was breaking the brand lockup
   onto two lines. The lockup is a row. */
body:not(.wp-admin) .vd-site-footer a.vd-brand {
  display:inline-flex; align-items:center; gap:14px; padding:0;
}
body:not(.wp-admin) .vd-site-footer a.vd-brand .vd-brand__name {
  display:inline-block; font-size:19px; line-height:1;
}

/* Keep the bottom rule aligned with the column content, not the gutter edge */
.vd-site-footer__bar { border-top:none; position:relative; }
.vd-site-footer__bar::before {
  content:""; position:absolute; top:0;
  left:var(--vd-gutter); right:var(--vd-gutter);
  height:1px; background:var(--vd-border-subtle);
}

/* Mobile: the 96deg left-weighted scrim leaves type over bright sky on a narrow
   viewport. Design-system rule stands — switch to a vertical protection gradient. */
@media (max-width:768px){
  .vd-hero__scrim { background:linear-gradient(180deg,rgba(5,11,6,.90) 0%,rgba(5,11,6,.84) 45%,rgba(5,11,6,.93) 100%); }
  .vd-cta-band__scrim { background:linear-gradient(180deg,rgba(5,11,6,.90) 0%,rgba(5,11,6,.82) 50%,rgba(5,11,6,.92) 100%); }
  .vd-hero__stats { gap:var(--vd-space-6) var(--vd-space-10); }
}

/* ==========================================================================
   VD-PAGES — interior page layouts (Pricing, Contact, Service detail)
   ========================================================================== */

.vd-split-wide { display:grid; grid-template-columns:1.15fr .85fr; gap:var(--vd-space-24); align-items:start; }
@media (max-width:960px){ .vd-split-wide { grid-template-columns:1fr; gap:var(--vd-space-12); } }

.vd-duo { display:grid; grid-template-columns:1fr 1fr; gap:var(--vd-grid-gap); }
@media (max-width:760px){ .vd-duo { grid-template-columns:1fr; } }

.vd-rail { position:sticky; top:104px; }
@media (max-width:960px){ .vd-rail { position:static; } }

.vd-tile-icon {
  display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px;
  border-radius:var(--vd-radius-md); background:var(--vd-alpha-sun-16);
  color:var(--vd-text-accent); margin-bottom:14px;
}
.vd-tagrow { display:flex; flex-wrap:wrap; gap:8px; margin-top:var(--vd-space-8); }

.vd-rail__stats {
  display:flex; flex-direction:column; gap:var(--vd-space-5);
  padding:var(--vd-space-5) 0;
  border-top:1px solid var(--vd-border-subtle);
  border-bottom:1px solid var(--vd-border-subtle);
  margin-bottom:var(--vd-space-6);
}
.vd-rail__stats .vd-stat__value { font-size:clamp(30px,3vw,40px); }

.vd-contactlist { display:flex; flex-direction:column; gap:var(--vd-space-4); margin-top:var(--vd-space-5); }
.vd-contactlist a, .vd-contactlist span.vd-contactlist__row {
  display:flex; align-items:center; gap:12px;
  font-size:var(--vd-text-sm); color:var(--vd-text-body-c); text-decoration:none;
}
body:not(.wp-admin) .vd-contactlist a, body:not(.wp-admin) .vd-contactlist a:visited { color:var(--vd-text-body-c); }
body:not(.wp-admin) .vd-contactlist a:hover { color:var(--vd-sun-300); }
.vd-contactlist svg { color:var(--vd-text-accent); flex:0 0 auto; }

.vd-sidecol { display:flex; flex-direction:column; gap:var(--vd-space-8); }

/* WPForms sitting inside a design-system card.
   NOTE: WPForms nests every field inside .wpforms-field-container, so the grid
   must go on THAT element — putting it on .wpforms-form makes the container a
   single grid item and collapses the fields (the Phone input rendered 1px wide). */
.vd-formcard .wpforms-container { margin:0; }
.vd-formcard .wpforms-form { display:block; }
.vd-formcard .wpforms-field-container {
  display:grid; grid-template-columns:1fr 1fr; gap:var(--vd-space-5) var(--vd-space-5);
}
.vd-formcard .wpforms-field { padding:0 !important; margin:0 !important; }
/* Phone is the only plain text field on form 24; give it and the message a full row. */
.vd-formcard .wpforms-field-text,
.vd-formcard .wpforms-field-textarea,
.vd-formcard .wpforms-field-select { grid-column:1 / -1; }
.vd-formcard .wpforms-field input,
.vd-formcard .wpforms-field textarea,
.vd-formcard .wpforms-field select { width:100% !important; max-width:none !important; }
.vd-formcard .wpforms-field textarea { min-height:150px; }
.vd-formcard .wpforms-submit-container { margin-top:var(--vd-space-8); }
.vd-formcard .wpforms-submit-container button { width:100%; height:56px; font-size:17px; }
.vd-formcard .wpforms-field-label { display:block; margin-bottom:7px; }
@media (max-width:640px){ .vd-formcard .wpforms-field-container { grid-template-columns:1fr; } }

/* Page header sits directly under the sticky glass header */
.vd-page-header { background:var(--vd-grad-canopy); }
.vd-page-header .vd-breadcrumb a, .vd-page-header .vd-breadcrumb span { font-size:var(--vd-text-xs); }
body:not(.wp-admin) .vd-breadcrumb a, body:not(.wp-admin) .vd-breadcrumb a:visited { color:var(--vd-text-muted); }
body:not(.wp-admin) .vd-breadcrumb a:hover { color:var(--vd-text-accent); }

.vd-outline-duo { display:grid; grid-template-columns:1fr 1fr; gap:var(--vd-grid-gap); margin-top:var(--vd-space-12); }
@media (max-width:760px){ .vd-outline-duo { grid-template-columns:1fr; } }

/* Router service-page template uses a bare .btn class, which loses to
   `body:not(.wp-admin) a` (0,1,2). This file loads after the template's inline
   <style>, so matching specificity here wins. */
body:not(.wp-admin) a.btn,
body:not(.wp-admin) a.btn:visited,
body:not(.wp-admin) a.btn:hover { color:#050B06; }
body:not(.wp-admin) a.btn.ghost,
body:not(.wp-admin) a.btn.ghost:visited,
body:not(.wp-admin) a.btn.ghost:hover { color:var(--vd-paper); }

/* ==========================================================================
   VD-ICONBOX — geo / service landing pages
   Those pages are still authored with Elementor icon-box widgets. Rather than
   rebuild seven pages of distinct SEO copy, bring the widget itself in line
   with the design system:
     - card headings are paper, not sunrise (the accent is rationed to CTAs,
       links and accent numerals — six orange headings per page dilutes it)
     - left-aligned, like every other card in the system
     - the icon sits in a 46px rounded sunrise tile instead of a large glyph
   ========================================================================== */

.vd-ds .elementor-widget-icon-box .elementor-icon-box-title,
.vd-ds .elementor-widget-icon-box .elementor-icon-box-title a,
.vd-ds .elementor-widget-icon-box .elementor-icon-box-title span {
  color: var(--vd-text-heading) !important;
  font-family: var(--vd-font-display) !important;
  font-size: var(--vd-text-h4) !important;
  font-weight: 700 !important;
  letter-spacing: var(--vd-tracking-tight);
}
.vd-ds .elementor-widget-icon-box .elementor-icon-box-description {
  color: var(--vd-text-body-c) !important;
  font-size: var(--vd-text-sm);
}
.vd-ds .elementor-widget-icon-box .elementor-icon-box-wrapper,
.vd-ds .elementor-widget-icon-box .elementor-icon-box-content { text-align: left; }

.vd-ds .elementor-widget-icon-box .elementor-icon-box-icon { margin-bottom: var(--vd-space-4); }
.vd-ds .elementor-widget-icon-box .elementor-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 46px; height: 46px;
  background: var(--vd-alpha-sun-16);
  border-radius: var(--vd-radius-md);
  color: var(--vd-text-accent) !important;
  font-size: 20px !important;
  transition: var(--vd-transition-ui);
}
.vd-ds .elementor-widget-icon-box .elementor-icon svg { width: 20px; height: 20px; fill: currentColor; }

/* Inline "Learn more →" that trails the description reads as a link, not body copy */
.vd-ds .elementor-widget-icon-box .elementor-icon-box-description a {
  display: inline-block;
  margin-top: var(--vd-space-2);
  font-family: var(--vd-font-condensed);
  font-size: var(--vd-text-xs);
  letter-spacing: var(--vd-tracking-caps);
  text-transform: uppercase;
  color: var(--vd-text-accent);
}


/* ---- Header dropdown (Services menu) ---- */
.vd-svc-nav { position:relative; }
.vd-svc-nav > .vd-svc-nav__link { display:inline-flex; align-items:center; gap:5px; }
.vd-nav-caret { width:7px; height:7px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:rotate(45deg); transition:transform var(--vd-dur-fast) var(--vd-ease-out); }
.vd-svc-nav:hover .vd-nav-caret, .vd-svc-nav:focus-within .vd-nav-caret { transform:rotate(225deg); }
.vd-nav-dropdown {
  list-style:none; margin:0; padding:8px;
  position:absolute; top:100%; left:50%; transform:translateX(-50%) translateY(6px);
  min-width:250px; background:var(--vd-ink-950); border:1px solid var(--vd-border-default);
  border-radius:var(--vd-radius-md); box-shadow:0 20px 44px -16px rgba(5,11,6,.55);
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity var(--vd-dur-fast), transform var(--vd-dur-base) var(--vd-ease-out), visibility var(--vd-dur-base);
  z-index:60;
}
.vd-svc-nav:hover .vd-nav-dropdown, .vd-svc-nav:focus-within .vd-nav-dropdown {
  opacity:1; visibility:visible; pointer-events:auto; transform:translateX(-50%) translateY(0);
}
.vd-nav-dropdown li { margin:0; }
.vd-nav-dropdown a {
  display:block; padding:10px 12px; border-radius:var(--vd-radius-sm);
  font-size:var(--vd-text-sm); font-weight:500; color:var(--vd-text-body-c);
  white-space:nowrap; text-decoration:none; transition:var(--vd-transition-ui);
}
.vd-nav-dropdown a:hover, .vd-nav-dropdown a:focus { background:rgba(244,239,227,.06); color:var(--vd-sun-300); }
@media (max-width:1024px) {
  .vd-svc-nav { position:static; }
  .vd-svc-nav > .vd-svc-nav__link { padding:14px 0; border-bottom:1px solid var(--vd-border-subtle); }
  .vd-nav-caret { display:none; }
  .vd-nav-dropdown {
    position:static; opacity:1; visibility:visible; pointer-events:auto; transform:none;
    box-shadow:none; border:none; background:transparent; min-width:0; padding:0 0 6px 16px;
  }
  .vd-nav-dropdown a { padding:10px 0; border-bottom:1px solid var(--vd-border-subtle); color:var(--vd-olive-300); font-size:var(--vd-text-sm); }
}

.vd-svc-nav__link {
  font-size:var(--vd-text-sm); font-weight:500; letter-spacing:.01em;
  color:var(--vd-text-body-c); text-decoration:none; transition:var(--vd-transition-ui);
  white-space:nowrap; cursor:pointer;
}
.vd-svc-nav__link:hover, .vd-svc-nav:focus-within .vd-svc-nav__link, .vd-svc-nav__link[aria-current="page"] { color:var(--vd-sun-300); }
