/*
Theme Name: Back Road Web Design
Theme URI: https://backroadwebdesign.com
Description: Custom child theme for Back Road Web Design, built on GeneratePress. Editorial design with Fraunces + Space Grotesk, dark anchor + warm cream surface + amber accent.
Author: Michael Venia
Author URI: https://backroadwebdesign.com
Template: generatepress
Version: 1.42.42
License: Proprietary
*/

/* ============================================================
   Self-hosted critical fonts — regular weights only.
   Latin subset, woff2. Loaded same-origin so they don't FOUT or
   suffer Google Fonts URL hash-rotation. Other weights (bold,
   italic non-400, etc.) still resolve via the Google Fonts <link>
   loaded by br_load_fonts() in functions.php.
   ============================================================ */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('assets/fonts/Fraunces-Regular-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('assets/fonts/Fraunces-Italic-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('assets/fonts/SpaceGrotesk-Variable-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('assets/fonts/SpaceMono-Regular-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ============================================================
   Design System Tokens
   ============================================================ */
:root {
  --brb-anchor:           #1A1A1A;
  --brb-ink:              #2A2A28;
  --brb-surface:          #FAF7F2;
  --brb-surface-raised:   #FFFFFF;
  --brb-accent:           #D97706;
  --brb-accent-hover:     #A85A00;
  --brb-accent-tint:      #F5A93B;
  --brb-mint:             #8AD3C0;

  --brb-neutral-100:      #EAE8E2;
  --brb-neutral-300:      #B8B5AD;
  --brb-neutral-500:      #6B6B66;
  --brb-neutral-700:      #3A3A37;

  --brb-text:             #1A1A1A;
  --brb-text-muted:       #5F5F5A;
  --brb-text-subtle:      #8C8A83;

  --brb-text-on-dark:          #FAF7F2;
  --brb-text-on-dark-muted:    #A9A7A1;
  --brb-text-on-dark-subtle:   #6B6B66;

  --brb-border:                 rgba(26, 26, 26, 0.08);
  --brb-border-strong:          rgba(26, 26, 26, 0.15);
  --brb-border-on-dark:         rgba(250, 247, 242, 0.08);
  --brb-border-on-dark-strong:  rgba(250, 247, 242, 0.15);

  --brb-font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
  --brb-font-body:    'Space Grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --brb-font-mono:    'Space Mono', ui-monospace, SFMono-Regular, Menlo, monospace;

  --brb-ease:              cubic-bezier(0.22, 1, 0.36, 1);
  --brb-ease-entrance:     cubic-bezier(0.16, 1, 0.3, 1);

  --brb-pad-page:          clamp(24px, 5.5vw, 88px);
  /* Nav-scoped inline padding. Deliberately tighter than --brb-pad-page:
     the header row is the one place on the site where horizontal space is
     over-subscribed (wordmark + 8 nav links + CTA), and the page-level 88px
     cap was spending ~96px of it on margin the nav can't afford. See the
     .nav-logo flex-shrink note for what that cost. The pill's inset formula
     below is derived from this token, so the 20px pill-to-content clearance
     holds at every width exactly as before. */
  --brb-nav-pad:           clamp(20px, 2.2vw, 28px);
  /* Section vertical rhythm — applied to the cream content
     sections on the four service pages. Hero, final CTA, and
     showcase sections opt out: they earn extra editorial weight
     and define their own padding values. */
  --brb-section-pad:       clamp(72px, 9vw, 120px);
  --brb-section-pad-tight: clamp(40px, 5vw, 64px);
  --brb-section-pad-loose: clamp(80px, 11vw, 160px);
  /* Hero-to-next seam — applied to BOTH the hero's bottom and the
     following section's top. Replaces additive stacking that
     produced 140-280px combined gaps with intentional 128-200px. */
  --brb-hero-to-next:      clamp(64px, 8vw, 100px);
}

/* ============================================================
   Hero-to-next seam — declarative
   ----------------------------------------------------------------
   Any <section> immediately following a hero gets its top padding
   tightened to the hero-to-next token. Combinator specificity
   (0,1,1) wins over the section's own class rule (0,1,0), so each
   section's intrinsic padding is preserved everywhere EXCEPT
   directly after a hero. Heroes themselves set their bottom
   padding to the same token, producing a symmetric seam.

   New heroes: add the selector to the list below + set the new
   hero's own bottom padding to var(--brb-hero-to-next).
   ============================================================ */
.hero + section,
.intro + section,
.work-hero + section,
.contact-hero + section,
.wd-hero + section,
.ind-hero + section,
.faq-hero + section,
.blog-hero + section,
.landing-hero + section,
.archive-hero + section,
.studio-hero + section,
.aia-hero + section,
.reviews-page__hero + section {
  padding-top: var(--brb-hero-to-next);
}

/* ============================================================
   Reset + Base
   ============================================================ */
* { box-sizing: border-box; margin: 0; padding: 0; }

html {
  scroll-behavior: smooth;
  overflow-x: hidden;
  /* Fix round 2 (Finding 4): the header now genuinely sticks (Fix round
     1), so in-page anchors (.faq-jumpnav links, and any other #hash
     target) landed with their first ~116px hidden behind it. This is
     sitewide on purpose — every anchor target benefits, not just the
     four call-out pages. Reconciled against the handful of per-element
     `scroll-margin-top` declarations below (see each) so the two don't
     add together and over-scroll.

     --brb-substicky-h is the height of a SECOND sticky chrome bar where a
     template stacks one under the header (.faq-jumpnav on /faqs/ is the
     only one left — the service-page .brb-subnav bar that used to share
     this term was removed sitewide 2026-07-30, once the header itself
     became genuinely sticky and the second bar was redundant). Published
     by site-chrome.js from the live element; 0px when there isn't one, or
     when the bar is display:none at the current breakpoint. Without it an
     anchor lands behind that second bar — /faqs/ was 57px short. */
  scroll-padding-top: calc(var(--brb-header-h, 117px) + var(--brb-substicky-h, 0px) + 16px);
}

body {
  font-family: var(--brb-font-body);
  font-size: 16px;
  line-height: 1.7;
  color: var(--brb-text);
  background: var(--brb-surface);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* `overflow-x: hidden` on html/body computes overflow-y: auto, which makes
   them scroll containers and silently defeats `position: sticky` on the
   header — the declared sticky nav had never actually pinned. `clip` gives
   the same horizontal containment without creating a scroll container
   (`clip` does NOT coerce the other axis, so overflow-y stays `visible`).
   Guarded by @supports so pre-16 Safari keeps the old (already-broken-
   sticky) behaviour rather than losing overflow containment.

   ROOT ONLY, deliberately. `overflow-x: clip` on the root has open WebKit
   bugs where Safari also clips the Y axis — worst case, the page does not
   scroll vertically on iPhone — so the smaller the surface the better. The
   root's overflow propagates to the VIEWPORT, so setting it on `html` alone
   still contains horizontal overflow for the whole document; `body` carried
   `overflow-x: hidden` only as a belt-and-braces duplicate, and dropping it
   is what actually stops `body` being a scroll container. That is the whole
   of the sticky fix — the header pins because `body` is no longer a scroller,
   not because `body` clips. Do not re-add overflow to `body`. */
@supports (overflow: clip) {
  html {
    overflow-x: clip;
  }
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--brb-font-display);
  font-weight: 400;
  letter-spacing: -0.02em;
  line-height: 1.1;
  color: inherit;
  margin: 0;
}

a { color: inherit; text-decoration: none; }

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

/* ============================================================
   Utility
   ============================================================ */
.wrap {
  max-width: 1200px;
  margin-inline: auto;
  padding-inline: var(--brb-pad-page);
}

.wrap-narrow {
  max-width: 880px;
  margin-inline: auto;
  padding-inline: var(--brb-pad-page);
}

.eyebrow {
  display: inline-block;
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-accent);
}

.eyebrow--muted { color: var(--brb-text-muted); }
.eyebrow--on-dark { color: var(--brb-accent); }

/* Scroll reveal */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity 900ms var(--brb-ease-entrance),
    transform 900ms var(--brb-ease-entrance);
}
.reveal.is-visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: 80ms; }
.reveal-delay-2 { transition-delay: 160ms; }
.reveal-delay-3 { transition-delay: 240ms; }
.reveal-delay-4 { transition-delay: 320ms; }

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--brb-font-body);
  font-size: 14px;
  font-weight: 500;
  padding: 12px 20px;
  border-radius: 999px;
  transition: all 200ms var(--brb-ease);
  cursor: pointer;
  border: 1px solid transparent;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.btn--primary {
  background: var(--brb-accent);
  color: var(--brb-anchor);
}

.btn--primary::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--brb-anchor);
  transform: translateY(101%);
  transition: transform 380ms cubic-bezier(0.25, 0.7, 0.1, 1);
}

.btn--primary:hover,
.btn--primary:focus-visible {
  background: var(--brb-accent);
  color: var(--brb-text-on-dark);
}

.btn--primary:hover::before,
.btn--primary:focus-visible::before {
  transform: translateY(0);
}

.btn--ghost-dark {
  background: transparent;
  color: var(--brb-text-on-dark);
  border-color: var(--brb-border-on-dark-strong);
}
.btn--ghost-dark:hover { border-color: var(--brb-text-on-dark); }

.btn--ghost-light {
  background: transparent;
  color: var(--brb-text);
  border-color: var(--brb-border-strong);
}
.btn--ghost-light:hover { border-color: var(--brb-text); }

.btn .btn__down {
  display: inline-block;
  transition: transform 300ms var(--brb-ease);
}

.btn:hover .btn__down { transform: translateY(3px); }

/* Prevent pseudo-element gradients from causing horizontal scroll.
   H.3.3 audit: .who dropped (renamed to .studio-who in H.2.1, no
   rule block left); .final renamed to .studio-final (H.3.3 ship).
   .hero retained — legacy class still active on /audit/ + other pages.
   Per-section studio-* members self-contain overflow-x: hidden in
   their own rules (see .studio-work, .studio-reviews, .studio-industries). */
.hero,
.studio-final,
.work-hero,
.contact-hero,
.wall,
.nudge,
.alt-paths {
  overflow-x: hidden;
}
/* ============================================================
   Site Header & Navigation
   ============================================================ */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: transparent;
  color: var(--brb-text-on-dark);
  border-bottom: none;
}

.nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 36px 0;
  gap: 32px;
}

/* Fix round 2 (Finding 1): `.nav`'s own `padding: 36px 0` zeroes the
   inline padding `.wrap` would otherwise contribute, so the pill's inset
   formula (which assumes the wordmark/CTA sit `--brb-pad-page` in from
   the edge) was computed against a containing block whose content
   actually sat only a few px in. Restoring the inline padding here — not
   the vertical 36px, which sets header height — puts nav content back at
   the intended inset so the pill can wrap it with real breathing room on
   every side. Precedent: the mobile breakpoint below already gives `.nav`
   its own inline padding (8px) independent of the vertical value. */
.nav { padding-inline: var(--brb-nav-pad); }

/* Direction E — the pill is painted behind the nav row, so no layout
   geometry changes and the header keeps its CTA-driven height. */
.nav { position: relative; }

.nav::before {
  content: "";
  position: absolute;
  inset-block: 20px;
  inset-inline: calc(var(--brb-nav-pad) - 20px);
  border-radius: 999px;
  background: rgba(26, 26, 26, 0.72);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  border: 1px solid var(--brb-border-on-dark);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.28);
  opacity: 1;
  transition: opacity 450ms var(--brb-ease), inset-inline 450ms var(--brb-ease);
  pointer-events: none;
}

/* Nav content sits above the pill. */
.nav > * { position: relative; z-index: 1; }

/* Overlay templates: the pill is OPAQUE BY DEFAULT — same safe state as
   every other page (see .nav::before above, opacity: 1 unconditionally).
   No-JS / JS-failure degrades to "pill always visible," never to "pill
   never appears." site-chrome.js adds .is-transparent to .site-header
   only once it confirms this is an overlay page at the very top of its
   dark hero, which fades the pill out so the transparent-over-hero look
   can render; scrolling past the utility strip drops the class and the
   pill fades back in. (Before 2026-07-30 this was inverted — the pill
   started hidden and JS had to add .is-pinned to reveal it, so a
   blocked/broken script left cream nav text over a cream page body with
   no backing on all 12 overlay pages.) An earlier revision also narrowed
   the pill by 30px on scroll as a flourish, but the pill only clears its
   own contents by 20px, so narrowing pushed the wordmark 2px OUTSIDE the
   pill's left edge and left the CTA 6px from the right. Every state now
   measures the same 28px / 36px breathing room. */
.brb-nav-overlay .site-header.is-transparent .nav::before {
  opacity: 0;
}

/* ------------------------------------------------------------
   Overlay hero pull-up (all dark-hero templates)

   `.site-header` is transparent, so on an overlay page the hero has to
   run UP behind it or the cream <body> paints a light shelf across the
   whole header row. Each hero is pulled up by exactly the header height
   and given that height back as top padding — its own clamp() repeated
   verbatim — so the hero grows 116px taller upward while every piece of
   its content stays pixel-identical to where it sits today.

   One rule per hero class because their rest padding differs:
     .hero            /free-strategy-audit/          clamp(80px, 12vw, 160px)
     .work-hero       /work/                         clamp(32px,  4vw,  56px)
     .wd-hero         6 national + 2 location pages  clamp(72px, 10vw, 140px)
     .brb-music-hero  /live-music-san-luis-obispo/   clamp(64px, 11vw, 132px)
   Keep these in sync if a base hero padding changes. The homepage's
   .studio-hero has its own pull-up next to the video-hero rules (it does
   NOT reuse its rest padding — the video hero is deliberately tighter).
   The gate that adds .brb-nav-overlay is br_page_uses_nav_overlay()
   in functions.php; that docblock owns the page list.
   ------------------------------------------------------------ */
.brb-nav-overlay .hero,
.brb-nav-overlay .work-hero,
.brb-nav-overlay .wd-hero,
.brb-nav-overlay .brb-music-hero {
  margin-top: calc(var(--brb-header-h, 117px) * -1);
}
.brb-nav-overlay .hero {
  padding-top: calc(var(--brb-header-h, 117px) + clamp(80px, 12vw, 160px));
}
.brb-nav-overlay .work-hero {
  padding-top: calc(var(--brb-header-h, 117px) + clamp(32px, 4vw, 56px));
}
.brb-nav-overlay .wd-hero {
  padding-top: calc(var(--brb-header-h, 117px) + clamp(72px, 10vw, 140px));
}
.brb-nav-overlay .brb-music-hero {
  padding-top: calc(var(--brb-header-h, 117px) + clamp(64px, 11vw, 132px));
}

@media (prefers-reduced-motion: reduce) {
  .nav::before { transition: none; }
}

.nav-logo {
  font-family: var(--brb-font-display);
  font-size: 22px;
  letter-spacing: -0.02em;
  white-space: nowrap;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  color: inherit;
  /* Element-level inset: unpins logo from .wrap left edge so the
     two-layer space (wrap padding + element margin) reads as
     intentional breathing room, not a hard container boundary. */
  margin-left: 8px;
  /* The wordmark is an <img> whose SVG has no preserveAspectRatio override,
     so it defaults to xMidYMid meet — meaning a squeezed box does NOT
     distort it, it silently letterboxes the artwork down and centres it.
     `.nav-logo` shrinking was therefore invisible as a layout bug and
     visible only as "the logo looks small": at 1600px the 36px wordmark was
     rendering at 20.4px, at 1440px 23px, at 1290px 25.4px — while mobile,
     which has no nav links to compete with, rendered the full 36px. The
     header logo was literally larger on a phone than on a desktop. Pinning
     flex-shrink here makes `height` mean what it says; the room for it comes
     from --brb-nav-pad + the .nav-links gap clamp. */
  flex-shrink: 0;
}
.nav-logo__img {
  height: 40px;
  width: auto;
  display: block;
}

/* 961-1199px (iPad landscape, small laptops) is the one band where the full
   desktop nav genuinely cannot fit a full-size wordmark — 8 links + CTA leave
   under 200px for it. Hand the logo back to flex there so it auto-fits rather
   than pushing the "Free audit" CTA off the right edge. It still lands larger
   than before this change, because the padding + gap reductions apply here too. */
@media (min-width: 961px) and (max-width: 1199px) {
  .nav-logo { flex-shrink: 1; }
}

/* Below the desktop breakpoint the wordmark shares the row with only the
   hamburger, but "Back Road Web Design." is a 7.9:1 lockup — at 40px it is
   316px wide, and 390px of viewport leaves 359px of usable row once the 40px
   toggle is counted. 36px (284px) keeps a 35px gap; 320px phones need 30px. */
@media (max-width: 960px) {
  .nav-logo__img { height: 36px; }
}
@media (max-width: 380px) {
  .nav-logo__img { height: 30px; }
}
.nav-logo__img--footer {
  height: 28px;
}
.nav-logo .thin { font-weight: 300; }
.nav-logo .bold { font-weight: 700; }
.nav-logo .dot { color: var(--brb-accent); font-weight: 400; }

.nav-links {
  display: flex;
  align-items: center;
  /* Was a flat 30px. Nine gaps at 30px is 270px of the header row, which is
     more than the wordmark itself gets — the clamp keeps the airy spacing on
     wide screens and buys the logo back ~60px where the row is tight. */
  gap: clamp(14px, 1.2vw, 24px);
  font-size: 14px;
}

.nav-links a:not(.nav-cta) {
  position: relative;
  display: grid;
  overflow: hidden;
  height: 1.4em;
  line-height: 1.4em;
  color: var(--brb-text-on-dark);
  /* flex: none is load-bearing, not tidying. These anchors carry
     `overflow: hidden` for the roll-up hover, so any width the flex
     line takes off them clips the label instead of wrapping it. The
     design intent (playbook-design.md § Navigation) is that the anchor
     sizes to the wider of its two stacked labels, which only holds if
     it cannot shrink. Adding the 5th service link in 2026-07 put the
     bar at capacity and shrank EVERY label by 1-6px — all eight lost
     their last character, not just the new one. Measured after:
     worst shortfall 6.3px -> 0.5px (sub-pixel), row overflow 0. */
  flex: none;
}

.nav-links a:not(.nav-cta) .nav-link__l {
  grid-area: 1 / 1;
  display: block;
  white-space: nowrap;
  transform: translateY(0);
  transition: transform 380ms cubic-bezier(0.25, 0.7, 0.1, 1);
}

.nav-links a:not(.nav-cta) .nav-link__l--alt {
  font-family: var(--brb-font-display);
  font-style: italic;
  color: var(--brb-accent);
  transform: translateY(100%);
}

.nav-links a:not(.nav-cta):hover .nav-link__l,
.nav-links a:not(.nav-cta):focus-visible .nav-link__l {
  transform: translateY(-100%);
}

.nav-links a:not(.nav-cta):hover .nav-link__l--alt,
.nav-links a:not(.nav-cta):focus-visible .nav-link__l--alt {
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  .nav-links a:not(.nav-cta) .nav-link__l { transition: none; }
}

.nav-divider {
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: var(--brb-neutral-500);
}

.nav-cta {
  background: var(--brb-accent);
  color: var(--brb-anchor) !important;
  padding: 10px 18px;
  border-radius: 999px;
  font-weight: 500;
  transition: background 200ms var(--brb-ease), color 200ms var(--brb-ease);
  /* Element-level inset: pulls the high-contrast amber CTA off the
     .wrap right edge so it doesn't visually pin to the container
     boundary at viewport widths where padding alone can't compensate. */
  margin-right: 16px;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  /* Companion to `flex: none` on .nav-links a:not(.nav-cta). Giving the
     other links their full width left this pill as the only shrinkable
     item in the row, so it absorbed ALL the compression: it squeezed to
     73x68 and wrapped "Free audit" onto two lines, rendering as an amber
     CIRCLE instead of a pill. A pill-shaped CTA must never wrap — its
     border-radius: 999px turns any second line into a circle. */
  flex: none;
  white-space: nowrap;
}

.nav-cta::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--brb-anchor);
  transform: translateY(101%);
  transition: transform 380ms cubic-bezier(0.25, 0.7, 0.1, 1);
}

.nav-cta:hover { color: var(--brb-text-on-dark) !important; }

.nav-cta:hover::before { transform: translateY(0); }

/* Placed after the .btn / .btn--primary / .nav-cta / .btn__down rules
   above (equal-specificity ::before/child selectors) so this override
   wins the cascade regardless of source order elsewhere in the file —
   a copy positioned before .nav-cta::before's own definition would be
   silently overridden by it. */
@media (prefers-reduced-motion: reduce) {
  .btn--primary::before,
  .nav-cta::before,
  .btn .btn__down { transition: none; }
}

/* Hamburger toggle — hidden on desktop */
.nav-toggle {
  display: none;
  background: transparent;
  border: 1px solid var(--brb-border-on-dark-strong);
  color: var(--brb-text-on-dark);
  width: 40px;
  height: 40px;
  padding: 0;
  border-radius: 6px;
  cursor: pointer;
  position: relative;
  align-items: center;
  justify-content: center;
  transition: border-color 200ms var(--brb-ease), background 200ms var(--brb-ease);
}

.nav-toggle:hover {
  border-color: var(--brb-text-on-dark-muted);
}

/* Three-line hamburger icon, animates to X when menu is open */
.nav-toggle__icon {
  position: relative;
  display: block;
  width: 18px;
  height: 2px;
  background: var(--brb-text-on-dark);
  transition: background 200ms var(--brb-ease);
}

.nav-toggle__icon::before,
.nav-toggle__icon::after {
  content: '';
  position: absolute;
  left: 0;
  width: 100%;
  height: 2px;
  background: var(--brb-text-on-dark);
  transition: transform 300ms var(--brb-ease), top 300ms var(--brb-ease);
}

.nav-toggle__icon::before { top: -6px; }
.nav-toggle__icon::after  { top: 6px; }

/* Open state: lines morph into an X */
.nav-toggle.is-open .nav-toggle__icon {
  background: transparent;
}

.nav-toggle.is-open .nav-toggle__icon::before {
  top: 0;
  transform: rotate(45deg);
}

.nav-toggle.is-open .nav-toggle__icon::after {
  top: 0;
  transform: rotate(-45deg);
}

/* Mobile menu panel — hidden on desktop, slides down on mobile when open */
.nav-mobile {
  display: none;
}

/* ============================================================
   Site utility nav — above the main header
   Editorial dark bar: tracked uppercase + dot separators + amber rule.
   Hidden on mobile; secondary destinations appear in nav-mobile instead.
   ============================================================ */
.site-utility-nav {
  background: #0A0A0A;
  border-bottom: 1px solid var(--brb-accent);
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: rgba(250, 247, 242, 0.82);
  line-height: 1;
}

.site-utility-nav__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 0;
}

.site-utility-nav__links {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
  gap: 0;
  /* Element-level inset: mirrors .nav-logo's 8px on the main header
     so the utility nav's leftmost link (Journal) doesn't pin to the
     .wrap left edge while the phone is inset on the right. Smaller
     than .site-utility-nav__phone's 16px because typographic links
     are less of a visual magnet than the amber CTA. */
  margin-left: 8px;
}

.site-utility-nav__links li {
  display: inline-flex;
  align-items: center;
}

.site-utility-nav__links li + li::before {
  content: '·';
  color: rgba(250, 247, 242, 0.25);
  margin: 0 14px;
  letter-spacing: 0;     /* don't track the separator dot */
}

.site-utility-nav a {
  color: rgba(250, 247, 242, 0.82);
  text-decoration: none;
  transition: color 200ms var(--brb-ease);
}

.site-utility-nav a:hover,
.site-utility-nav a.is-current {
  color: var(--brb-accent);
}

.site-utility-nav__phone {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  /* Element-level inset: matches .nav-cta so the phone (utility nav
     right edge) and audit button (main header right edge) both sit
     16px inside the .wrap container — keeps the two right edges in
     vertical alignment with each other. */
  margin-right: 16px;
}

.site-utility-nav__phone-icon {
  flex-shrink: 0;
  opacity: 0.75;
  transition: opacity 200ms var(--brb-ease);
}

.site-utility-nav__phone:hover .site-utility-nav__phone-icon {
  opacity: 1;
}

@media (max-width: 768px) {
  .site-utility-nav { display: none; }
}

/* Mobile-menu utility group (shown when site-utility-nav is hidden) */
.nav-mobile__divider {
  display: block;
  height: 1px;
  background: var(--brb-border-on-dark);
  margin: 8px 0 4px;
}

.nav-mobile__util {
  font-size: 14px;
  color: rgba(250, 247, 242, 0.65);
}

.nav-mobile__util:hover {
  color: var(--brb-accent);
}

.nav-mobile__phone {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
}

.nav-mobile__phone svg {
  flex-shrink: 0;
  opacity: 0.75;
}

/* ============================================================
   Mobile nav (breakpoint)
   ============================================================ */
@media (max-width: 960px) {
  /* Extra breathing room inside header on mobile so logo/toggle
     don't feel pinched against the wrap padding */
  .nav {
    padding-left: 8px;
    padding-right: 8px;
  }

  /* Fix round 2 (Finding 1): the desktop pill inset scales continuously
     with --brb-pad-page (a vw-driven clamp), but this block pins .nav's
     own padding to a flat 8px — so between ~654px and 960px the scaling
     inset would overtake the fixed-offset logo/toggle and poke outside
     the pill. Pin the inset too, sized against the actual 8px mobile nav
     padding + the logo/toggle's own margins, so it's correct across the
     whole 320-960 range instead of only at the narrow end where the
     vw-driven value happens to clamp low enough by coincidence. */
  .nav::before {
    inset-inline: 4px;
  }

  .nav-links { display: none; }

  .nav-toggle { display: inline-flex; }

  .nav-mobile {
    display: block;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--brb-anchor);
    border-bottom: 1px solid var(--brb-border-on-dark);
    max-height: 0;
    overflow: hidden;
    transition: max-height 400ms var(--brb-ease);
  }

  .nav-mobile.is-open {
    max-height: 600px;
  }

  .nav-mobile__inner {
    padding: 8px var(--brb-pad-page) 24px;
    display: flex;
    flex-direction: column;
  }

  .nav-mobile a {
    display: block;
    padding: 14px 0;
    font-size: 16px;
    color: var(--brb-text-on-dark);
    border-bottom: 1px solid var(--brb-border-on-dark);
    transition: color 200ms var(--brb-ease);
  }

  .nav-mobile a:last-child {
    border-bottom: none;
  }

  .nav-mobile a:hover,
  .nav-mobile a:focus {
    color: var(--brb-accent);
  }

  .nav-mobile__divider {
    border-bottom: 1px solid var(--brb-border-on-dark-strong);
    margin: 4px 0;
  }

  .nav-mobile .nav-cta {
    margin-top: 16px;
    text-align: center;
    padding: 14px 16px;
    border-bottom: none;
    color: var(--brb-anchor) !important;
  }

  /* Fix round 1, Finding 1 (same shape, second instance): this scope's
     unconditional color above and the base .nav-cta:hover flip are both
     (0,2,0) + !important, so the later-in-source rule above would win
     the tie and the label would stay dark against the risen ink. This
     selector needs to be more specific, not just later. */
  .nav-mobile .nav-cta:hover {
    color: var(--brb-text-on-dark) !important;
  }
}

/* ============================================================
   01 · Hero
   ============================================================ */
.hero {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(80px, 12vw, 160px) 0 var(--brb-hero-to-next);
  /* Reserve hero height so font swap / animation entry doesn't shift layout.
     Lower bound matches measured mobile height; clamp keeps it sane on iOS
     where vh fluctuates with the address bar. */
  min-height: clamp(540px, 70vh, 900px);
  position: relative;
  overflow: hidden;
}

.hero__inner { position: relative; }

.hero__eyebrow {
  margin-bottom: clamp(24px, 4vw, 40px);
  opacity: 0;
  animation: fadeUp 400ms var(--brb-ease-entrance) 0ms forwards;
}

.hero__headline {
  font-size: clamp(40px, 6.5vw, 88px);
  line-height: 1.02;
  margin-bottom: clamp(24px, 4vw, 40px);
  max-width: 14ch;
  opacity: 0;
  animation: fadeUp 400ms var(--brb-ease-entrance) 80ms forwards;
}

.hero__headline .accent {
  color: var(--brb-accent);
  font-style: italic;
  font-weight: 400;
}

.hero__subhead {
  font-size: clamp(15px, 1.4vw, 18px);
  line-height: 1.65;
  color: var(--brb-text-on-dark-muted);
  max-width: 56ch;
  margin-bottom: clamp(32px, 5vw, 48px);
  opacity: 0;
  animation: fadeUp 400ms var(--brb-ease-entrance) 160ms forwards;
}

.hero__ctas {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  opacity: 0;
  animation: fadeUp 400ms var(--brb-ease-entrance) 240ms forwards;
}

@keyframes fadeUp {
  to { opacity: 1; transform: translateY(0); }
  from { opacity: 0; transform: translateY(24px); }
}

/* ============================================================
   Footer
   ============================================================ */
.site-footer {
  background: #0F0F0F;
  color: var(--brb-text-on-dark-muted);
  padding: 64px 0 32px;
  font-size: 13px;
}

.footer-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 48px;
  padding-bottom: 48px;
  border-bottom: 1px solid var(--brb-border-on-dark);
}

@media (max-width: 840px) {
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
}

.footer-brand .nav-logo { font-size: 22px; }
.footer-brand p { margin-top: 12px; line-height: 1.6; max-width: 32ch; }

/* Footer newsletter — small "Stay in touch" signup under the logo.
   Renders FluentForm form 4 (Mailchimp-wired); these rules compact +
   rebrand FluentForm's default output (blue→amber, inline, on-dark). */
.footer-newsletter { margin-top: 22px; max-width: 360px; }
.footer-newsletter__label {
  display: block;
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark);
  margin-bottom: 12px;
}
.footer-newsletter .fluentform { margin: 0; }
.footer-newsletter .frm-fluent-form > fieldset { border: none; margin: 0; padding: 0; min-inline-size: 0; }
.footer-newsletter .ff-el-group { margin: 0; }
.footer-newsletter .ff-el-input--content { width: 100%; padding: 0; }
/* form 4 (email col-1 + submit col-2) styled as one underlined row — minimal/editorial */
.footer-newsletter .ff-t-container.ff-column-container {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0;
  border-bottom: 1px solid rgba(217, 119, 6, 0.55);
  transition: border-color 200ms var(--brb-ease);
}
.footer-newsletter .ff-t-container.ff-column-container:focus-within { border-bottom-color: var(--brb-accent); }
.footer-newsletter .ff-t-cell { padding: 0; }
.footer-newsletter .ff-t-column-1 { flex: 1 1 auto; min-width: 0; }
.footer-newsletter .ff-t-column-2 { flex: 0 0 auto; }
.footer-newsletter .ff_submit_btn_wrapper { margin: 0; }
.footer-newsletter .ff-el-input--label {
  position: absolute; width: 1px; height: 1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}
.footer-newsletter .ff-el-form-control {
  width: 100%;
  padding: 9px 0;
  border: none !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: var(--brb-text-on-dark) !important;
  font-family: var(--brb-font-body);
  font-size: 14px;
  box-shadow: none !important;
}
.footer-newsletter .ff-el-form-control::placeholder { color: rgba(250, 247, 242, 0.45); }
.footer-newsletter .ff-el-form-control:focus {
  outline: none !important;
  border: none !important;
  box-shadow: none !important;
}
.footer-newsletter .ff-btn-submit {
  margin: 0;
  padding: 0;
  border: none !important;
  outline: none !important;
  background: transparent !important;
  color: var(--brb-accent) !important;
  font-family: var(--brb-font-body);
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  white-space: nowrap;
  box-shadow: none !important;
  cursor: pointer;
  transition: color 200ms var(--brb-ease);
}
.footer-newsletter .ff-btn-submit::after { content: "\2009\2192"; }
.footer-newsletter .ff-btn-submit:hover,
.footer-newsletter .ff-btn-submit:focus,
.footer-newsletter .ff-btn-submit:focus-visible { color: #E8920C !important; outline: none !important; box-shadow: none !important; }
.footer-newsletter .ff-message-success,
.footer-newsletter .text-danger,
.footer-newsletter .error { font-size: 12px; margin-top: 6px; }
@media (max-width: 640px) {
  .footer-newsletter { margin-left: auto; margin-right: auto; }
}

.footer-col h4 {
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark);
  margin-bottom: 16px;
}

.footer-col ul { list-style: none; display: flex; flex-direction: column; gap: 10px; }
.footer-col a { color: var(--brb-text-on-dark-muted); transition: color 200ms var(--brb-ease); }
.footer-col a:hover { color: var(--brb-accent); }

/* Location links under each service — rendered as small city pills
   (internal linking to geo pages). Replaces the earlier indented sublist. */
.footer-sublist {
  list-style: none;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 6px;
  margin: 8px 0 2px;
  padding: 0;
}
.footer-sublist a {
  display: inline-block;
  font-size: 12px;
  line-height: 1;
  padding: 5px 10px;
  border-radius: 20px;
  background: color-mix(in srgb, var(--brb-text-on-dark-muted) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--brb-text-on-dark-muted) 18%, transparent);
  color: var(--brb-text-on-dark-muted);
  opacity: 1;
  transition: background 200ms var(--brb-ease), border-color 200ms var(--brb-ease), color 200ms var(--brb-ease);
}
.footer-sublist a:hover {
  background: color-mix(in srgb, var(--brb-accent) 16%, transparent);
  border-color: color-mix(in srgb, var(--brb-accent) 50%, transparent);
  color: var(--brb-accent);
}

@media (max-width: 720px) {
  .footer-col ul {
    gap: 14px;
  }
  .footer-sublist {
    gap: 7px;
    margin-top: 9px;
  }
  .footer-sublist a {
    font-size: 13px;
    padding: 6px 12px;
  }
}

/* Mobile: single centered column, reordered brand → Get in touch → Services →
   Company. Placed after the base footer rules so these overrides win the
   cascade (same specificity → later source order). */
@media (max-width: 640px) {
  .footer-grid { grid-template-columns: 1fr; justify-items: center; text-align: center; gap: 36px; }
  .footer-grid > *:nth-child(1) { order: 1; } /* brand */
  .footer-grid > *:nth-child(4) { order: 2; } /* Get in touch */
  .footer-grid > *:nth-child(2) { order: 3; } /* Services */
  .footer-grid > *:nth-child(3) { order: 4; } /* Company */
  .footer-brand p { max-width: 40ch; margin-left: auto; margin-right: auto; }
  .footer-brand__logo-link { display: inline-block; }
  .footer-col ul { align-items: center; }
  /* Drop the per-service city pills on mobile to keep the footer short —
     the main service links remain. (.footer-col .footer-sublist to beat the
     .footer-col ul base rule's specificity.) */
  .footer-col .footer-sublist { display: none; }
}

.footer-bottom {
  padding-top: 32px;
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 16px;
  font-size: 12px;
}


/* ============================================================
   ==============================================================
   ABOUT PAGE STYLES (.brb-about body class)
   These styles support page-about.php. Class names are unique
   to the About page except where they intentionally share the
   homepage's design tokens (e.g., .final, .site-header).
   ==============================================================
   ============================================================ */

/* ============================================================
   About · 01 · Intro
   ============================================================ */
.intro {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding: clamp(80px, 12vw, 160px) 0 var(--brb-hero-to-next);
  position: relative;
  overflow: hidden;
}

.intro__inner {
  position: relative;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: clamp(32px, 5vw, 80px);
  align-items: center;
  max-width: 1200px;
  margin-inline: auto;
}

.intro__content {
  max-width: 640px;
}

@media (max-width: 900px) {
  .intro__inner {
    grid-template-columns: 1fr;
  }
  .intro__content {
    max-width: 100%;
  }
}

.intro__eyebrow { margin-bottom: clamp(24px, 4vw, 40px); }

.intro__headline {
  font-size: clamp(40px, 5.5vw, 80px);
  line-height: 1.04;
  margin-bottom: clamp(28px, 4vw, 44px);
  letter-spacing: -0.03em;
}

.intro__headline em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

.intro__body {
  font-size: clamp(16px, 1.35vw, 19px);
  line-height: 1.7;
  color: var(--brb-text-muted);
  max-width: 54ch;
}

.intro__body p + p { margin-top: 1.2em; }

/* Portrait on the right */
.intro__portrait {
  position: relative;
  width: clamp(240px, 26vw, 380px);
  aspect-ratio: 4 / 5;
  flex-shrink: 0;
  opacity: 0;
  transform: translateY(30px) scale(0.96);
  transition: opacity 1200ms var(--brb-ease-entrance) 400ms, transform 1200ms var(--brb-ease-entrance) 400ms;
}

.intro__inner .intro__portrait {
  animation: intro-portrait-in 1400ms var(--brb-ease-entrance) 600ms forwards;
}

@keyframes intro-portrait-in {
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@media (max-width: 900px) {
  .intro__portrait {
    width: clamp(220px, 50vw, 300px);
    margin: 0 auto;
  }
}

.intro__portrait-frame {
  position: relative;
  width: 100%;
  height: 100%;
  border-radius: 8px;
  overflow: hidden;
  z-index: 2;
  box-shadow:
    0 22px 48px -18px rgba(26, 26, 26, 0.22),
    0 10px 22px -10px rgba(26, 26, 26, 0.14);
  transition: transform 600ms var(--brb-ease);
}

.intro__portrait-frame:hover {
  transform: translateY(-4px);
}

.intro__portrait-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.intro__portrait-accent {
  position: absolute;
  top: 16px;
  left: 16px;
  width: 100%;
  height: 100%;
  border: 2px solid var(--brb-accent);
  border-radius: 8px;
  z-index: 1;
  opacity: 0.55;
  transition: all 600ms var(--brb-ease);
}

.intro__portrait:hover .intro__portrait-accent {
  top: 20px;
  left: 20px;
  opacity: 0.75;
}

/* ============================================================
   About · 02 · Path Here
   ============================================================ */
.path {
  padding: var(--brb-hero-to-next) 0 clamp(24px, 3vw, 48px);
  background: var(--brb-surface);
}

.path__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.path__head {
  text-align: center;
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: clamp(40px, 5vw, 64px);
}

.path__title {
  font-size: clamp(40px, 5.5vw, 72px);
  line-height: 1.05;
  margin-top: 16px;
  max-width: 18ch;
  margin-left: auto;
  margin-right: auto;
}

.path__title em { font-style: italic; color: var(--brb-accent); }

.path__body {
  max-width: 62ch;
  margin-left: auto;
  margin-right: auto;
  text-align: center;
  font-size: 17px;
  line-height: 1.75;
  color: var(--brb-text);
}

.path__body p + p { margin-top: 1.4em; }

.path__body strong {
  font-weight: 500;
  color: var(--brb-text);
}

/* ============================================================
   About · 02.5 · Credentials (masthead style)
   ============================================================ */
.creds {
  background: var(--brb-surface);
  padding: 0 0 clamp(16px, 2vw, 28px);
}

.creds__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(14px, 1.8vw, 20px);
  text-align: center;
}

.creds__rule {
  width: 100%;
  max-width: 360px;
  height: 1px;
  background: var(--brb-border-strong);
}

.creds__label {
  color: var(--brb-accent);
}

.creds__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: clamp(12px, 1.5vw, 18px);
  font-family: var(--brb-font-display);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(18px, 2vw, 24px);
  line-height: 1.4;
  color: var(--brb-text);
  max-width: 100%;
}

.creds__item {
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  white-space: nowrap;
}

.creds__note {
  font-family: var(--brb-font-body);
  font-style: normal;
  font-size: 0.6em;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
  white-space: nowrap;
}

.creds__sep {
  color: var(--brb-accent);
  font-style: normal;
  font-size: 0.8em;
  opacity: 0.5;
}

@media (max-width: 640px) {
  .creds__sep { display: none; }
  .creds__list { flex-direction: column; gap: 10px; }
}

/* ============================================================
   About · 06 · Beyond the Work
   ============================================================ */
.beyond {
  padding: clamp(80px, 11vw, 160px) 0;
  background: var(--brb-surface);
  border-top: 1px solid var(--brb-border);
}

.beyond__grid {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: clamp(40px, 6vw, 96px);
  align-items: center;
}

@media (max-width: 840px) {
  .beyond__grid { grid-template-columns: 1fr; }
}

.beyond__photo {
  aspect-ratio: 4 / 5;
  background: var(--brb-neutral-100);
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--brb-text-muted);
  font-size: 13px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.beyond__content h2 {
  font-size: clamp(32px, 4.5vw, 56px);
  line-height: 1.1;
  margin-top: 16px;
  margin-bottom: 24px;
  max-width: 14ch;
}

.beyond__content h2 em {
  font-style: italic;
  color: var(--brb-accent);
}

.beyond__content p {
  font-size: 17px;
  line-height: 1.75;
  color: var(--brb-text-muted);
  max-width: 52ch;
}

.beyond__content p + p { margin-top: 1.2em; }


/* ============================================================
   ==============================================================
   AUDIT PAGE STYLES (.brb-audit body class)
   These styles support page-audit.php. Reuses existing .hero,
   .site-header, .site-footer, .btn styles from the base theme.
   Adds new sections: .included, .process, .proof, .form-section,
   .faq, .nudge.
   ==============================================================
   ============================================================ */

/* ============================================================
   Audit · Button size modifier
   ============================================================ */
.btn--large {
  font-size: 16px;
  padding: 16px 28px;
}

/* ============================================================
   Audit · Hero additions
   Reuses .hero, .hero__inner, .hero__eyebrow, .hero__headline,
   .hero__subhead, .hero__ctas from the homepage styles.
   Adds italic em accent and secondary note.
   ============================================================ */
.brb-audit .hero__headline em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

.hero__secondary-note {
  margin-top: 20px;
  font-size: 14px;
  color: var(--brb-text-on-dark-subtle);
}

.hero__secondary-note a {
  color: var(--brb-text-on-dark);
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 1px;
  transition: color 200ms var(--brb-ease);
}

.hero__secondary-note a:hover {
  color: var(--brb-accent);
}

/* ============================================================
   Audit · 03 · Process
   ============================================================ */
.process {
  padding: clamp(80px, 11vw, 160px) 0;
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  /* Fix round 2 (Finding 4): removed the old hardcoded scroll-margin-top
     (108px) — html's new scroll-padding-top covers this uniformly and the
     two would otherwise stack and over-scroll past the target. */
}

.process__head {
  margin-bottom: clamp(48px, 6vw, 80px);
  max-width: 700px;
}

.process__title {
  font-size: clamp(32px, 4.5vw, 56px);
  margin-top: 12px;
  max-width: 16ch;
}

.process__title em { font-style: italic; color: var(--brb-accent); }

.process__list {
  display: grid;
  gap: 1px;
  background: var(--brb-border-on-dark);
  border-top: 1px solid var(--brb-border-on-dark);
  border-bottom: 1px solid var(--brb-border-on-dark);
}

.process-step {
  background: var(--brb-anchor);
  padding: clamp(28px, 3.5vw, 40px) 0;
  display: grid;
  grid-template-columns: 100px 1fr 2fr;
  gap: clamp(24px, 4vw, 48px);
  align-items: baseline;
}

@media (max-width: 840px) {
  .process-step {
    grid-template-columns: 1fr;
    gap: 8px;
  }
}

.process-step__num {
  font-family: var(--brb-font-display);
  font-size: clamp(40px, 4vw, 56px);
  line-height: 1;
  color: var(--brb-accent);
  font-weight: 400;
}

.process-step__headline {
  font-family: var(--brb-font-display);
  font-size: clamp(22px, 2.4vw, 28px);
  line-height: 1.2;
}

.process-step__body {
  font-size: 16px;
  line-height: 1.7;
  color: var(--brb-text-on-dark-muted);
}

/* ============================================================
   Audit · 05 · Form Section
   ============================================================ */
.form-section {
  padding: clamp(80px, 11vw, 160px) 0;
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  /* Fix round 2 (Finding 4): see .process above — covered by html's
     scroll-padding-top now, removed to avoid double-offset. */
}

.form-section__head {
  margin-bottom: clamp(40px, 5vw, 64px);
  text-align: center;
}

.form-section__title {
  font-size: clamp(40px, 5.5vw, 72px);
  line-height: 1.05;
  margin-top: 16px;
  max-width: 16ch;
  margin-inline: auto;
}

.form-section__title em { font-style: italic; color: var(--brb-accent); }

.form-section__sub {
  font-size: 17px;
  line-height: 1.6;
  color: var(--brb-text-on-dark-muted);
  max-width: 52ch;
  margin: 20px auto 0;
}

.form-container {
  max-width: 680px;
  margin: 0 auto;
  background: #232321;
  border: 1px solid var(--brb-border-on-dark);
  border-radius: 8px;
  padding: clamp(32px, 4vw, 48px);
}

.form-field {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 24px;
}

.form-field label {
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--brb-text-on-dark);
}

.form-field label .required {
  color: var(--brb-accent);
  margin-left: 2px;
}

.form-field input,
.form-field textarea,
.form-field select {
  background: rgba(250,247,242,0.04);
  border: 1px solid var(--brb-border-on-dark-strong);
  color: var(--brb-text-on-dark);
  font-family: var(--brb-font-body);
  font-size: 15px;
  padding: 12px 14px;
  border-radius: 6px;
  transition: border-color 200ms var(--brb-ease), background 200ms var(--brb-ease);
}

.form-field input:focus,
.form-field textarea:focus,
.form-field select:focus {
  outline: none;
  border-color: var(--brb-accent);
  background: rgba(250,247,242,0.06);
}

.form-field input::placeholder,
.form-field textarea::placeholder {
  color: var(--brb-text-on-dark-subtle);
}

.form-field textarea {
  resize: vertical;
  min-height: 100px;
  font-family: var(--brb-font-body);
}

.form-field__help {
  font-size: 13px;
  color: var(--brb-text-on-dark-subtle);
  line-height: 1.5;
}

.checkbox-group {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 4px;
}

.checkbox-option {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
  padding: 8px 10px;
  border-radius: 4px;
  transition: background 150ms var(--brb-ease);
}

.checkbox-option:hover {
  background: rgba(250,247,242,0.04);
}

.checkbox-option input[type="checkbox"] {
  margin-top: 3px;
  accent-color: var(--brb-accent);
}

.checkbox-option span {
  font-size: 14px;
  color: var(--brb-text-on-dark);
  line-height: 1.5;
}

.form-submit {
  margin-top: 8px;
  width: 100%;
  background: var(--brb-accent);
  color: var(--brb-anchor);
  border: none;
  font-family: var(--brb-font-body);
  font-size: 15px;
  font-weight: 500;
  padding: 16px 24px;
  border-radius: 8px;
  cursor: pointer;
  transition: background 200ms var(--brb-ease);
}

.form-submit:hover {
  background: var(--brb-accent-hover);
}

.form-footnote {
  margin-top: 16px;
  text-align: center;
  font-size: 13px;
  color: var(--brb-text-on-dark-subtle);
}

.form-alt {
  margin-top: 32px;
  padding-top: 32px;
  border-top: 1px solid var(--brb-border-on-dark);
  text-align: center;
  font-size: 14px;
  color: var(--brb-text-on-dark-muted);
}

.form-alt a {
  color: var(--brb-text-on-dark);
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 1px;
  font-weight: 500;
  transition: color 200ms var(--brb-ease);
}

.form-alt a:hover {
  color: var(--brb-accent);
}

/* ============================================================
   Audit · 06 · FAQ
   ============================================================ */
/* ============================================================
   Audit · 07 · Final Nudge
   ============================================================ */
.nudge {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(64px, 8vw, 100px) 0;
  text-align: center;
  position: relative;
  overflow: hidden;
}

.nudge::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 0%, rgba(217,119,6,0.08), transparent 60%);
  pointer-events: none;
}

.nudge__inner { position: relative; }

.nudge__title {
  font-size: clamp(28px, 3.5vw, 44px);
  line-height: 1.15;
  margin-bottom: 16px;
  max-width: 22ch;
  margin-inline: auto;
}

.nudge__title em { font-style: italic; color: var(--brb-accent); }

.nudge__body {
  font-size: 16px;
  line-height: 1.65;
  color: var(--brb-text-on-dark-muted);
  max-width: 48ch;
  margin: 0 auto 28px;
}

.nudge__cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  color: var(--brb-text-on-dark);
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 2px;
  font-weight: 500;
  transition: color 200ms var(--brb-ease);
}

.nudge__cta:hover {
  color: var(--brb-accent);
}


/* ============================================================
   ==============================================================
   WORK PAGE STYLES (.brb-work body class)
   Record-collection gallery with interactive sleeves + modal.
   ==============================================================
   ============================================================ */

/* Deep anchor color for wall background */
.brb-work {
  --brb-anchor-deep: #141414;
}

/* ============================================================
   Work · 01 · Hero
   ============================================================ */
.work-hero {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(32px, 4vw, 56px) 0 var(--brb-hero-to-next);
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

/* Amber glow upper-right — matches standard hero backgrounds site-wide */
.work-hero::before {
  content: '';
  position: absolute;
  top: -40%;
  right: -30%;
  width: 900px;
  height: 900px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--brb-accent), transparent 100%);
  filter: blur(100px);
  opacity: 0.5;
  pointer-events: none;
  z-index: -1;
}

/* Violet counter-orb lower-left — matches standard */
.work-hero::after {
  content: '';
  position: absolute;
  bottom: -45%;
  left: -20%;
  width: 800px;
  height: 800px;
  border-radius: 50%;
  background: radial-gradient(circle, #8B5CF6, transparent 100%);
  filter: blur(100px);
  opacity: 0.15;
  pointer-events: none;
  z-index: -1;
}

.work-hero__inner { position: relative; max-width: 900px; }

.work-hero__headline {
  font-size: clamp(38px, 4.6vw, 68px);
  line-height: 1.05;
  margin-bottom: clamp(14px, 1.6vw, 20px);
  letter-spacing: -0.03em;
}

.work-hero__headline em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

.work-hero__subhead {
  font-size: clamp(16px, 1.4vw, 19px);
  line-height: 1.65;
  color: var(--brb-text-on-dark-muted);
  max-width: 56ch;
}

/* ============================================================
   Work · 02 · The Wall
   ============================================================ */
.wall {
  background: var(--brb-anchor-deep);
  padding: clamp(40px, 5vw, 72px) 0 clamp(100px, 12vw, 160px);
  position: relative;
  overflow: hidden;
}

.wall::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: radial-gradient(rgba(250, 247, 242, 0.012) 1px, transparent 1px);
  background-size: 32px 32px;
  pointer-events: none;
}

.wall__grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: clamp(28px, 3vw, 44px);
}

/* ============================================================
   Sleeve (record)
   ============================================================ */
.sleeve {
  display: block;
  cursor: pointer;
  position: relative;
  transition: transform 500ms var(--brb-ease);
}

.sleeve:nth-child(3n+1) { transform: rotate(-0.7deg); }
.sleeve:nth-child(3n+2) { transform: rotate(0.5deg); }
.sleeve:nth-child(3n+3) { transform: rotate(-0.3deg); }
.sleeve:nth-child(4n+1) { transform: rotate(0.6deg); }
.sleeve:nth-child(5n+3) { transform: rotate(-0.4deg); }
.sleeve:nth-child(7n+2) { transform: rotate(0.3deg); }

.sleeve:hover {
  transform: translateY(-8px) rotate(0deg);
  z-index: 2;
}

/* The frame follows the homepage `.studio-work__card` treatment — bordered,
   rounded, 16:10 art flush to the top edge, a meta row beneath it — but keeps
   the wall's per-client brand fill instead of the homepage card's white. The
   two things that make it read as one family with the homepage: the hairline
   border and the 14px radius. Here the border is keyed to the client
   (`--sleeve-accent`, set per variant below) rather than the neutral
   `--brb-border`, since each card already carries that client's colour.

   No fixed aspect-ratio any more: height is content-driven (art + band),
   exactly like the homepage card. */
.sleeve__frame {
  width: 100%;
  border: 1px solid var(--sleeve-accent, var(--brb-border));
  border-radius: 14px;
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow:
    0 1px 2px rgba(0,0,0,0.15),
    0 8px 16px rgba(0,0,0,0.25),
    0 16px 32px rgba(0,0,0,0.15);
  transition: box-shadow 500ms var(--brb-ease);
}

.sleeve:hover .sleeve__frame {
  box-shadow:
    0 2px 4px rgba(0,0,0,0.2),
    0 20px 40px rgba(0,0,0,0.4),
    0 40px 80px rgba(0,0,0,0.3);
}

/* Art box — holds the client screenshot, or (for marketing-only clients) the
   centered logo, or the decorative mark as a last fallback. Fixed at the
   homepage card's 16:10 so shot cards and logo cards keep one grid rhythm. */
.sleeve__art {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
}

/* Meta row beneath the art — the homepage `.studio-work__meta` geometry
   (flex, space-between, 13px/16px padding). Left slot is the numbered
   industry label, right slot the corner tag. */
.sleeve__band {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 13px 16px;
}

.sleeve__meta {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-weight: 500;
  opacity: 0.8;
}

.sleeve__mark {
  position: absolute;
  transition: transform 700ms var(--brb-ease);
}

.sleeve:hover .sleeve__mark { transform: scale(1.05); }

/* Client logo overlay — injected via JS when sleeveData.logo is set.
   Sits centered on the sleeve frame, replacing the decorative SVG mark
   when present. The :has() selector hides the SVG mark in browsers
   that support it; older browsers show both, with the logo on top.
   max-width + max-height + width:auto / height:auto lets the logo
   scale to fit BOTH dimensions, so tall/narrow logos don't dominate
   the frame the way a fixed width would. */
.sleeve__logo {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  max-width: 58%;
  max-height: 62%;
  width: auto;
  height: auto;
  object-fit: contain;
  filter: drop-shadow(0 2px 8px rgba(0,0,0,0.18));
  transition: transform 700ms var(--brb-ease);
  z-index: 1;
}

.sleeve:hover .sleeve__logo { transform: translate(-50%, -50%) scale(1.05); }

.sleeve__frame:has(.sleeve__logo) .sleeve__mark { display: none; }

/* ------------------------------------------------------------
   Client screenshot — the sleeve treatment for clients whose sites
   I designed. Server-rendered by $br_work_shot() in page-work.php;
   marketing-only sleeves (Mindful, DGI) keep the centered
   .sleeve__logo above.

   Same geometry as the homepage `.studio-work__shot`: full width of
   the art box, 16:10, top-anchored. Because .sleeve__art is itself
   16:10, cover crops nothing — the whole site shows. No text sits
   over the image, so this needs no scrim; every label lives on the
   brand band beneath and keeps inheriting the frame's own colour.
   ------------------------------------------------------------ */
.sleeve__shot-wrap {
  display: block;
}

.sleeve__shot {
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  object-position: top center;
}

.sleeve__frame--shot .sleeve__mark { display: none; }

/* Right slot of .sleeve__band — mirrors the homepage card's
   `.studio-work__industry` position. Was absolutely positioned against the
   old square frame; now it's simply the band's second flex child. */
.sleeve__corner {
  font-family: var(--brb-font-mono);
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  opacity: 0.62;
  white-space: nowrap;
}

.sleeve__caption {
  margin-top: 16px;
  font-family: var(--brb-font-body);
  font-size: 11px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  line-height: 1.5;
  transition: color 300ms var(--brb-ease);
}

.sleeve__caption strong {
  color: var(--brb-text-on-dark);
  font-weight: 500;
}

.sleeve:hover .sleeve__caption { color: var(--brb-text-on-dark-muted); }
.sleeve:hover .sleeve__caption strong { color: var(--brb-accent); }

/* ============================================================
   Sleeve color variants
   ============================================================ */
.sleeve--venia .sleeve__frame {
  --sleeve-accent: #D4A76A; /* the studio's gold, straight off its own site */
  background: linear-gradient(165deg, #0E1A2E 0%, #1B2D47 100%);
  color: #D4A76A;
}

.sleeve--ccl .sleeve__frame {
  --sleeve-accent: #C2566B; /* lifted from the maroon fill */
  background: #7A1426;
  color: #F5E8D3;
}

.sleeve--dk .sleeve__frame {
  --sleeve-accent: #E7A184; /* lifted terracotta */
  background: linear-gradient(150deg, #C4603E 0%, #A84F32 100%);
  color: #FAF2E3;
}

.sleeve--enrich .sleeve__frame {
  --sleeve-accent: #6FB6E6; /* lifted from the blue gradient */
  background: linear-gradient(160deg, #1C4C7C 0%, #2E7BB5 100%);
  color: #F2F7FC;
}

.sleeve--paso .sleeve__frame {
  --sleeve-accent: #7CB98A; /* lifted grove green */
  background: linear-gradient(160deg, #24402C 0%, #3F6E48 100%);
  color: #F1F5EF;
}

.sleeve--ccfc .sleeve__frame {
  --sleeve-accent: #5C8168; /* deepened — this card is pale, so the rim darkens instead of lifting */
  background: #A3BDA8;
  color: #1A3A30;
}

.sleeve--msp .sleeve__frame {
  --sleeve-accent: #D97706; /* the photographer's amber, already this card's ink */
  background: #0A0A0A;
  color: #D97706;
  border: 1px solid rgba(250, 247, 242, 0.1);
}

.sleeve--mindful .sleeve__frame {
  --sleeve-accent: #A9C6B2; /* lifted sage */
  background: linear-gradient(160deg, #4F6D5C 0%, #6A8775 100%);
  color: #D4DDC8;
}

.sleeve--dgi .sleeve__frame {
  --sleeve-accent: #F2A681; /* lifted from the orange gradient */
  background: linear-gradient(160deg, #B8472D 0%, #D86A48 100%);
  color: #F0CFB0;
}

/* ============================================================
   Work · Modal
   ============================================================ */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(10, 10, 10, 0.85);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  z-index: 1000;
  opacity: 0;
  visibility: hidden;
  transition: opacity 300ms var(--brb-ease), visibility 300ms var(--brb-ease);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(20px, 4vw, 48px);
}

.modal-overlay.is-open {
  opacity: 1;
  visibility: visible;
}

.modal {
  background: var(--brb-surface);
  max-width: 820px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  border-radius: 4px;
  position: relative;
  transform: translateY(20px) scale(0.98);
  transition: transform 400ms var(--brb-ease-entrance);
}

.modal-overlay.is-open .modal {
  transform: translateY(0) scale(1);
}

.modal__close {
  position: absolute;
  top: 20px;
  right: 20px;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(26, 26, 26, 0.05);
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 20px;
  color: var(--brb-text);
  z-index: 2;
  transition: background 200ms var(--brb-ease);
}

.modal__close:hover {
  background: rgba(26, 26, 26, 0.1);
}

.modal__header {
  aspect-ratio: 16 / 9;
  position: relative;
  overflow: hidden;
}

.modal__header-sleeve {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  padding: 40px;
}

.modal__header-title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 5vw, 64px);
  line-height: 1;
  font-weight: 400;
  text-align: center;
  letter-spacing: -0.02em;
  position: relative;
  z-index: 1;
}

.modal__body {
  padding: clamp(32px, 4vw, 56px);
}

.modal__eyebrow {
  color: var(--brb-accent);
  margin-bottom: 16px;
}

.modal__client {
  font-family: var(--brb-font-display);
  font-size: clamp(28px, 3.5vw, 40px);
  line-height: 1.15;
  margin-bottom: 24px;
}

.modal__screenshot {
  aspect-ratio: 16 / 10;
  width: 100%;
  margin-bottom: 28px;
  border-radius: 4px;
  overflow: hidden;
  background: var(--brb-neutral-100);
  position: relative;
  border: 1px solid var(--brb-border);
}

/* Credit-attribution line for SEO/ads-only engagements where the modal
   screenshot would otherwise be misread as a design case study. Two
   short complete sentences per playbook-voice.md §1 lead principle —
   first sentence cleanses the design assumption, second states what
   Michael actually delivers. Suppressed automatically when the sleeve's
   services string contains "design" (case-insensitive). */
.modal__screenshot-attribution {
  margin: 0 0 12px;
  font-family: var(--brb-font-body);
  font-size: 14px;
  line-height: 1.5;
  color: var(--brb-text-muted);
  font-style: italic;
}

.modal__screenshot img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.modal__screenshot-placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-family: var(--brb-font-body);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
}

.modal__screenshot-placeholder-icon {
  font-family: var(--brb-font-display);
  font-style: italic;
  font-size: 24px;
  letter-spacing: 0;
  text-transform: none;
  color: var(--brb-accent);
  margin-bottom: 4px;
}

.modal__meta {
  display: flex;
  gap: 24px;
  flex-wrap: wrap;
  padding: 16px 0;
  margin-bottom: 28px;
  border-top: 1px solid var(--brb-border);
  border-bottom: 1px solid var(--brb-border);
}

.modal__meta-item {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* Service badges: each item in the comma-separated services string
   renders as a chip. Splitting happens in JS on ', ' so multi-word
   labels like "DNS / hosting" stay intact. */
.modal__services {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.modal__service-badge {
  display: inline-flex;
  align-items: center;
  padding: 5px 10px;
  background: var(--brb-neutral-100);
  color: var(--brb-text);
  font-family: var(--brb-font-body);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.02em;
  border-radius: 4px;
  white-space: nowrap;
}

.modal__meta-label {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
}

.modal__meta-value {
  font-size: 14px;
  color: var(--brb-text);
  font-weight: 500;
}

.modal__narrative {
  font-size: 17px;
  line-height: 1.75;
  color: var(--brb-text);
  margin-bottom: 28px;
}

.modal__narrative p + p { margin-top: 1.2em; }

.modal__cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 500;
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 2px;
  transition: color 200ms var(--brb-ease);
}

.modal__cta:hover { color: var(--brb-accent); }

body.has-modal-open { overflow: hidden; }


/* ============================================================
   ==============================================================
   CONTACT PAGE STYLES (.brb-contact body class)
   Reuses .form-field, .form-submit, .form-footnote from audit page.
   Adds: .contact-hero, .methods, .method, .contact-form (wrapper),
   .location, .alt-paths.
   ==============================================================
   ============================================================ */

/* ============================================================
   Contact · 01 · Hero
   ============================================================ */
.contact-hero {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding: clamp(60px, 8vw, 100px) 0 clamp(24px, 3vw, 40px);
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

/* Tighter seam than the default hero-to-next token: the methods grid
   right below carries the contact CTAs, so the cards should sit above
   the fold on standard laptop viewports. */
.contact-hero + section { padding-top: clamp(24px, 3vw, 40px); }

/* Cream-led: soft amber glow top-LEFT — matches .intro / .ind-hero recipe */
.contact-hero::before {
  content: '';
  position: absolute;
  top: -20%;
  left: -5%;
  right: auto;
  width: 900px;
  height: 900px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--brb-accent), transparent 100%);
  filter: blur(100px);
  opacity: 0.10;
  pointer-events: none;
  z-index: -1;
}

/* Cream-led: faint violet counter-orb bottom-RIGHT */
.contact-hero::after {
  content: '';
  position: absolute;
  bottom: -20%;
  right: -5%;
  left: auto;
  width: 800px;
  height: 800px;
  border-radius: 50%;
  background: radial-gradient(circle, #8B5CF6, transparent 100%);
  filter: blur(100px);
  opacity: 0.05;
  pointer-events: none;
  z-index: -1;
}

.contact-hero__inner {
  position: relative;
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: clamp(40px, 6vw, 96px);
  align-items: center;
  max-width: 1200px;
  margin-inline: auto;
}

@media (max-width: 900px) {
  .contact-hero__inner {
    grid-template-columns: 1fr;
    gap: 32px;
  }
}

.contact-hero__content {
  max-width: 640px;
}

.contact-hero__portrait {
  position: relative;
  width: 100%;
  max-width: 380px;
  margin-left: auto;
}

@media (max-width: 900px) {
  .contact-hero__portrait {
    max-width: clamp(240px, 60vw, 360px);
    margin: 0 auto;
  }
}

.contact-hero__portrait-frame {
  position: relative;
  aspect-ratio: 4 / 5;
  border-radius: 2px;
  overflow: hidden;
  z-index: 2;
  box-shadow: 0 18px 44px rgba(26, 26, 26, 0.18);
}

.contact-hero__portrait-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  filter: saturate(0.95);
}

.contact-hero__portrait-accent {
  position: absolute;
  top: 16px;
  left: -16px;
  right: 16px;
  bottom: -16px;
  border: 1px solid var(--brb-accent);
  border-radius: 2px;
  z-index: 1;
  opacity: 0.6;
  transition: top 400ms var(--brb-ease), left 400ms var(--brb-ease),
              right 400ms var(--brb-ease), bottom 400ms var(--brb-ease);
}

.contact-hero__portrait:hover .contact-hero__portrait-accent {
  top: 20px;
  left: -20px;
  right: 20px;
  bottom: -20px;
}

.contact-hero__eyebrow { margin-bottom: clamp(20px, 3vw, 32px); }

.contact-hero__headline {
  font-size: clamp(48px, 8vw, 112px);
  line-height: 1;
  margin-bottom: clamp(24px, 4vw, 40px);
  letter-spacing: -0.03em;
}

.contact-hero__headline em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

.contact-hero__subhead {
  font-size: clamp(16px, 1.4vw, 19px);
  line-height: 1.65;
  color: var(--brb-text-muted);
  max-width: 56ch;
}

/* ============================================================
   Contact · 02 · Methods (Phone / Email / Schedule cards)
   ============================================================ */
.methods {
  background: var(--brb-surface);
  padding: clamp(32px, 4vw, 56px) 0 clamp(64px, 8vw, 120px) 0;
  position: relative;
  margin-top: -1px;
}

.methods__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--brb-border-strong);
  border-top: 1px solid var(--brb-border-strong);
  border-bottom: 1px solid var(--brb-border-strong);
}

@media (max-width: 840px) {
  .methods__grid { grid-template-columns: 1fr; }
}

.method {
  background: var(--brb-surface);
  padding: clamp(32px, 4vw, 48px) clamp(24px, 3vw, 40px);
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.method__label {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--brb-text-muted);
}

.method__title {
  font-family: var(--brb-font-display);
  font-size: clamp(22px, 2.3vw, 28px);
  line-height: 1.15;
}

.method__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.method__body {
  font-size: 14px;
  line-height: 1.65;
  color: var(--brb-text-muted);
  flex-grow: 1;
}

.method__actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.method__actions--split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.method__action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-family: var(--brb-font-body);
  font-size: 13px;
  font-weight: 500;
  padding: 10px 14px;
  border-radius: 6px;
  border: 1px solid var(--brb-border-strong);
  color: var(--brb-text);
  background: transparent;
  transition: all 200ms var(--brb-ease);
  white-space: nowrap;
}

.method__action:hover {
  background: var(--brb-accent);
  color: var(--brb-anchor);
  border-color: var(--brb-accent);
}

.method__action--primary {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  border-color: var(--brb-anchor);
}

.method__action--primary:hover {
  background: var(--brb-accent);
  color: var(--brb-anchor);
  border-color: var(--brb-accent);
}

.method__phone-number {
  margin-top: 10px;
  font-family: var(--brb-font-body);
  font-size: 12px;
  color: var(--brb-text-muted);
  letter-spacing: 0.04em;
  font-variant-numeric: tabular-nums;
}

/* ============================================================
   Contact · 03 · Form (wrapper styles only —
   .form-field / .form-submit / .form-footnote inherited from audit)
   ============================================================ */
.contact-form {
  padding: clamp(80px, 11vw, 160px) 0;
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
}

.contact-form__head {
  margin-bottom: clamp(36px, 4.5vw, 56px);
  text-align: center;
}

.contact-form__title {
  font-size: clamp(40px, 5vw, 64px);
  line-height: 1.05;
  margin-top: 16px;
  max-width: 16ch;
  margin-inline: auto;
}

.contact-form__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.contact-form__sub {
  font-size: 16px;
  line-height: 1.6;
  color: var(--brb-text-on-dark-muted);
  max-width: 50ch;
  margin: 20px auto 0;
}

.contact-form__container {
  max-width: 680px;
  margin: 0 auto;
  background: #232321;
  border: 1px solid var(--brb-border-on-dark);
  border-radius: 8px;
  padding: clamp(32px, 4vw, 48px);
}

/* Select styling (dropdown) — audit page only had input/textarea, add select */
.brb-contact .form-field select {
  appearance: none;
  background: rgba(250, 247, 242, 0.04);
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3e%3cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23D97706' stroke-width='1.5'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right 16px center;
  padding-right: 40px;
  border: 1px solid var(--brb-border-on-dark-strong);
  color: var(--brb-text-on-dark);
  font-family: var(--brb-font-body);
  font-size: 15px;
  padding-top: 12px;
  padding-bottom: 12px;
  padding-left: 14px;
  border-radius: 6px;
  transition: border-color 200ms var(--brb-ease), background-color 200ms var(--brb-ease);
  cursor: pointer;
}

.brb-contact .form-field select:focus {
  outline: none;
  border-color: var(--brb-accent);
}

.brb-contact .form-field select option {
  background: #232321;
  color: var(--brb-text-on-dark);
}

/* ============================================================
   Contact · 05 · Alternative Paths
   ============================================================ */
.alt-paths {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding: clamp(56px, 7vw, 96px) 0;
  position: relative;
  overflow: hidden;
}

.alt-paths__inner {
  position: relative;
  text-align: center;
  max-width: 720px;
  margin: 0 auto;
}

.alt-paths__title {
  font-size: clamp(26px, 3vw, 36px);
  line-height: 1.25;
  margin-bottom: clamp(36px, 4vw, 56px);
  max-width: 24ch;
  margin-inline: auto;
}

.alt-paths__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.alt-paths__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(12px, 1.5vw, 20px);
}

@media (max-width: 720px) {
  .alt-paths__grid { grid-template-columns: 1fr; }
}

.alt-path {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  border: 1px solid var(--brb-anchor);
  border-radius: 8px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  padding: 28px 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  text-align: center;
  transition: border-color 200ms var(--brb-ease), box-shadow 200ms var(--brb-ease), background 200ms var(--brb-ease);
}

.alt-path:hover {
  background: var(--brb-anchor);
  border-color: var(--brb-accent);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}

.alt-path__label {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--brb-text-on-dark-subtle);
}

.alt-path__title {
  font-family: var(--brb-font-display);
  font-size: 22px;
  line-height: 1.2;
  color: var(--brb-text-on-dark);
  transition: color 200ms var(--brb-ease);
}

.alt-path__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.alt-path:hover .alt-path__title {
  color: var(--brb-accent);
}


/* ============================================================
   ==============================================================
   FLUENT FORMS OVERRIDES
   Targets Fluent Forms rendered HTML inside .form-container
   (audit page) and .contact-form__container (contact page).
   Overrides FF defaults to match BRB dark form design.
   Uses :is() to apply to both container classes cleanly.
   ==============================================================
   ============================================================ */

/* Strip Fluent Forms wrapper padding/margin */
:is(.form-container, .contact-form__container, .wd-craft__form) .fluentform,
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-group {
  margin-bottom: 24px !important;
}

:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-group.ff_submit_btn_wrapper {
  margin-bottom: 0 !important;
}

/* Labels */
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-input--label label,
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-input--label .ff-el-is-required {
  font-family: var(--brb-font-body) !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  letter-spacing: 0.02em !important;
  color: var(--brb-text-on-dark) !important;
  margin-bottom: 8px !important;
}

/* Required asterisk */
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-is-required .asterisk-sign,
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-is-required.asterisk-sign {
  color: var(--brb-accent) !important;
  margin-left: 2px !important;
}

/* Inputs, textareas, selects */
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-form-control,
:is(.form-container, .contact-form__container, .wd-craft__form) input.ff-el-form-control,
:is(.form-container, .contact-form__container, .wd-craft__form) textarea.ff-el-form-control,
:is(.form-container, .contact-form__container, .wd-craft__form) select.ff-el-form-control {
  background: rgba(250, 247, 242, 0.04) !important;
  border: 1px solid var(--brb-border-on-dark-strong) !important;
  color: var(--brb-text-on-dark) !important;
  font-family: var(--brb-font-body) !important;
  font-size: 15px !important;
  padding: 12px 14px !important;
  border-radius: 6px !important;
  box-shadow: none !important;
  transition: border-color 200ms var(--brb-ease), background 200ms var(--brb-ease) !important;
  width: 100% !important;
}

:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-form-control:focus,
:is(.form-container, .contact-form__container, .wd-craft__form) input.ff-el-form-control:focus,
:is(.form-container, .contact-form__container, .wd-craft__form) textarea.ff-el-form-control:focus,
:is(.form-container, .contact-form__container, .wd-craft__form) select.ff-el-form-control:focus {
  outline: none !important;
  border-color: var(--brb-accent) !important;
  background: rgba(250, 247, 242, 0.06) !important;
  box-shadow: none !important;
}

:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-form-control::placeholder {
  color: var(--brb-text-on-dark-subtle) !important;
  opacity: 1 !important;
}

/* Textarea specific */
:is(.form-container, .contact-form__container, .wd-craft__form) textarea.ff-el-form-control {
  min-height: 100px !important;
  resize: vertical !important;
}

/* Select dropdown — custom amber chevron */
:is(.form-container, .contact-form__container, .wd-craft__form) select.ff-el-form-control {
  appearance: none !important;
  -webkit-appearance: none !important;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3e%3cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23D97706' stroke-width='1.5'/%3e%3c/svg%3e") !important;
  background-repeat: no-repeat !important;
  background-position: right 16px center !important;
  padding-right: 40px !important;
  cursor: pointer !important;
}

:is(.form-container, .contact-form__container, .wd-craft__form) select.ff-el-form-control option {
  background: #232321 !important;
  color: var(--brb-text-on-dark) !important;
}

/* Checkboxes */
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-form-check-label {
  font-family: var(--brb-font-body) !important;
  font-size: 14px !important;
  color: var(--brb-text-on-dark) !important;
  display: flex !important;
  align-items: flex-start !important;
  gap: 10px !important;
  cursor: pointer !important;
  padding: 8px 10px !important;
  border-radius: 4px !important;
  transition: background 150ms var(--brb-ease) !important;
  margin-bottom: 0 !important;
}

:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-form-check-label:hover {
  background: rgba(250, 247, 242, 0.04) !important;
}

:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-form-check-input {
  margin-top: 3px !important;
  accent-color: var(--brb-accent) !important;
  flex-shrink: 0 !important;
}

/* Submit button */
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-btn-submit,
:is(.form-container, .contact-form__container, .wd-craft__form) button[type="submit"].ff-btn {
  width: 100% !important;
  background: var(--brb-accent) !important;
  color: var(--brb-anchor) !important;
  border: none !important;
  font-family: var(--brb-font-body) !important;
  font-size: 15px !important;
  font-weight: 500 !important;
  padding: 16px 24px !important;
  border-radius: 8px !important;
  cursor: pointer !important;
  transition: background 200ms var(--brb-ease) !important;
  box-shadow: none !important;
  margin-top: 8px !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}

:is(.form-container, .contact-form__container, .wd-craft__form) .ff-btn-submit:hover,
:is(.form-container, .contact-form__container, .wd-craft__form) button[type="submit"].ff-btn:hover {
  background: var(--brb-accent-hover) !important;
  color: var(--brb-anchor) !important;
}

/* Error messages */
:is(.form-container, .contact-form__container, .wd-craft__form) .error,
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-is-error .ff-el-form-control {
  border-color: #e05252 !important;
}

:is(.form-container, .contact-form__container, .wd-craft__form) .error.text-danger {
  font-size: 12px !important;
  color: #e05252 !important;
  margin-top: 4px !important;
  font-family: var(--brb-font-body) !important;
}

/* Success message */
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-message-success {
  background: rgba(217, 119, 6, 0.1) !important;
  border: 1px solid var(--brb-accent) !important;
  color: var(--brb-text-on-dark) !important;
  padding: 16px 20px !important;
  border-radius: 6px !important;
  font-family: var(--brb-font-body) !important;
  font-size: 15px !important;
}

/* Remove FF loading spinner styles that might conflict */
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-el-progress-bar { display: none !important; }

/* Strip any white backgrounds FF might inject on its own wrappers */
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-default,
:is(.form-container, .contact-form__container, .wd-craft__form) .ff-form-wrap {
  background: transparent !important;
  padding: 0 !important;
  border: none !important;
}


/* ============================================================
   ==============================================================
   WEB DESIGN PAGE (.brb-web-design)
   Craft-forward editorial layout with scroll reveals,
   CSS-only laptop + phone mockups, and subtle animations.
   ==============================================================
   ============================================================ */

/* ============================================================
   WD · 01 · Hero
   ============================================================ */
.wd-hero {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  position: relative;
  overflow: hidden;
  padding: clamp(72px, 10vw, 140px) 0 var(--brb-hero-to-next);
  /* Reserve hero height so font swap / animation entry doesn't shift layout. */
  min-height: clamp(520px, 65vh, 760px);
  isolation: isolate;
}

.wd-hero__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: -1;
  background:
    radial-gradient(ellipse at 100% 0%, rgba(217, 119, 6, 0.38) 0%, transparent 100%),
    radial-gradient(ellipse at 0% 100%, rgba(139, 92, 246, 0.12) 0%, transparent 100%);
}

/* Orb divs kept in DOM for stability but hidden —
   amber glow is now a corner-anchored gradient on .wd-hero__bg */
.wd-hero__orb { display: none; }

.wd-hero__grid {
  /* Grid lines removed — kept the class for DOM stability, but it now renders nothing.
     If you ever want the grid back, restore the previous background-image rules. */
  display: none;
}

.wd-hero__inner {
  position: relative;
  max-width: 900px;
  margin-inline: auto;
}

.wd-hero__eyebrow {
  margin-bottom: clamp(28px, 3vw, 40px);
  opacity: 0;
  animation: wd-fade-in 600ms var(--brb-ease) 200ms forwards;
}

.wd-hero__headline {
  font-size: clamp(44px, 7.5vw, 104px);
  line-height: 1.02;
  letter-spacing: -0.035em;
  margin-bottom: clamp(24px, 3vw, 36px);
  font-weight: 400;
  text-wrap: pretty;
}

.wd-hero__headline .line {
  display: block;
  overflow: hidden;
  /* Padding-bottom extends the overflow-hidden clip box past the
     font's descender depth so 'g', 'y', 'p', 'q' don't get cut off
     under the tight line-height: 1.02 above. 0.1em ≈ 10px at 104px. */
  padding-bottom: 0.1em;
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 900ms var(--brb-ease-entrance), transform 900ms var(--brb-ease-entrance);
}

.wd-hero__headline .line.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.wd-hero__headline em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

.wd-hero__headline .dot {
  color: var(--brb-accent);
  font-weight: 700;
}

.wd-hero__sub {
  font-size: clamp(17px, 1.5vw, 20px);
  line-height: 1.65;
  color: var(--brb-text-on-dark-muted);
  max-width: 62ch;
  margin-bottom: clamp(24px, 3vw, 36px);
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.wd-hero__sub.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.wd-hero__actions {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.wd-hero__actions.is-visible {
  opacity: 1;
  transform: translateY(0);
}

@keyframes wd-fade-in {
  to { opacity: 1; }
}

/* Shared button system for the page */
.wd-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--brb-font-body);
  font-size: 15px;
  font-weight: 500;
  padding: 14px 22px;
  border-radius: 8px;
  transition: all 200ms var(--brb-ease);
  cursor: pointer;
  letter-spacing: 0;
}

.wd-btn svg {
  transition: transform 200ms var(--brb-ease);
}

.wd-btn:hover svg {
  transform: translateX(3px);
}

.wd-btn--primary {
  background: var(--brb-accent);
  color: var(--brb-anchor);
  border: 1px solid var(--brb-accent);
}

.wd-btn--primary:hover {
  background: var(--brb-accent-hover);
  border-color: var(--brb-accent-hover);
}

.wd-btn--ghost {
  background: transparent;
  color: var(--brb-text-on-dark);
  border: 1px solid var(--brb-border-on-dark-strong);
}

.wd-btn--ghost:hover {
  border-color: var(--brb-text-on-dark);
  background: rgba(250, 247, 242, 0.04);
}

/* ============================================================
   WD · Free site audit (Trailhead) — Section 02
   The form IS the section. No competing visuals. The hero above
   does the brand work; this is the conversion surface.
   ============================================================ */

.wd-audit {
  background: var(--brb-surface);
  padding: 64px 0 var(--brb-section-pad);
  position: relative;
  border-top: 1px solid var(--brb-border);
}

.wd-audit__inner {
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
}

.wd-audit__head {
  margin-bottom: 36px;
}

.wd-audit__head .eyebrow {
  display: inline-block;
  margin-bottom: 20px;
}

.wd-audit__headline {
  font-family: var(--brb-font-display);
  font-size: clamp(28px, 3.6vw, 46px);
  font-weight: 400;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--brb-text);
  margin: 0 0 20px;
}

.wd-audit__headline em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-audit__sub {
  font-family: var(--brb-font-body);
  font-size: clamp(16px, 1.4vw, 18px);
  line-height: 1.55;
  color: var(--brb-text-muted);
  max-width: 620px;
  margin: 0 auto;
}

.wd-audit__sub strong {
  font-weight: 600;
  color: var(--brb-text);
}

/* Form */
.wd-audit__form {
  margin: 0 auto 32px;
  max-width: 560px;
}

.wd-audit__field {
  display: flex;
  align-items: stretch;
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border-strong);
  border-radius: 10px;
  overflow: hidden;
  transition: border-color 200ms var(--brb-ease), box-shadow 200ms var(--brb-ease);
}

.wd-audit__field:focus-within {
  border-color: var(--brb-accent);
  box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.15);
}

.wd-audit__prefix {
  display: flex;
  align-items: center;
  padding: 0 12px 0 16px;
  font-family: var(--brb-font-body);
  font-size: 16px;
  color: var(--brb-text-subtle);
  user-select: none;
}

.wd-audit__input {
  flex: 1;
  border: 0;
  background: transparent;
  font-family: var(--brb-font-body);
  font-size: 16px;
  color: var(--brb-text);
  padding: 16px 8px 16px 0;
  outline: 0;
  min-width: 0;
}

.wd-audit__input::placeholder {
  color: var(--brb-text-subtle);
}

.wd-audit__submit {
  border: 0;
  border-radius: 0;
  margin: 0;
  padding: 0 22px;
  white-space: nowrap;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.wd-audit__submit svg {
  flex-shrink: 0;
}

.wd-audit__turnstile {
  display: flex;
  justify-content: center;
  margin-top: 16px;
  min-height: 65px;
}

.wd-audit__turnstile:empty {
  display: none;
}

.wd-audit__inline-error {
  margin: 12px 0 0;
  font-family: var(--brb-font-body);
  font-size: 14px;
  color: #B23A48;
  text-align: center;
}

/* Loading panel — replaces the form during a real audit */
.wd-audit__loading {
  margin: 0 auto 32px;
  max-width: 560px;
  padding: 28px 20px;
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border);
  border-radius: 10px;
  text-align: center;
}

.wd-audit__spinner {
  display: inline-flex;
  gap: 6px;
  margin-bottom: 14px;
}

.wd-audit__spinner-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--brb-accent);
  animation: wd-audit-pulse 1.2s var(--brb-ease) infinite;
}

.wd-audit__spinner-dot:nth-child(2) { animation-delay: 0.15s; }
.wd-audit__spinner-dot:nth-child(3) { animation-delay: 0.3s; }

@keyframes wd-audit-pulse {
  0%, 100% { opacity: 0.3; transform: scale(0.85); }
  50%      { opacity: 1;   transform: scale(1);    }
}

.wd-audit__loading-text {
  font-family: var(--brb-font-body);
  font-size: 15px;
  color: var(--brb-text-muted);
  margin: 0;
  transition: opacity 250ms var(--brb-ease);
}

/* Bot-protection blocked panel */
.wd-audit__blocked {
  margin: 0 auto 32px;
  max-width: 560px;
  padding: 24px;
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border);
  border-radius: 10px;
  text-align: center;
}

.wd-audit__blocked-title {
  font-family: var(--brb-font-display);
  font-size: 20px;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 8px;
}

.wd-audit__blocked-text {
  font-family: var(--brb-font-body);
  font-size: 15px;
  color: var(--brb-text-muted);
  margin: 0;
}

.wd-audit__blocked-text a {
  color: var(--brb-accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* What I check preview */
.wd-audit__preview {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
  max-width: 720px;
  margin: 0 auto 28px;
  text-align: left;
}

.wd-audit__preview-col {
  padding: 20px;
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border);
  border-radius: 8px;
}

.wd-audit__preview-icon {
  color: var(--brb-accent);
  margin-bottom: 12px;
}

.wd-audit__preview-label {
  font-family: var(--brb-font-display);
  font-size: 17px;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 8px;
}

.wd-audit__preview-desc {
  font-family: var(--brb-font-body);
  font-size: 14px;
  line-height: 1.5;
  color: var(--brb-text-muted);
  margin: 0;
}

.wd-audit__trust {
  font-family: var(--brb-font-body);
  font-size: 13px;
  color: var(--brb-text-subtle);
  margin: 0;
  letter-spacing: 0.02em;
}

.wd-audit__trust-sep {
  color: var(--brb-neutral-300);
  margin: 0 6px;
}

/* Mobile */
@media (max-width: 700px) {
  .wd-audit__field {
    flex-direction: column;
    border-radius: 12px;
  }

  .wd-audit__prefix {
    display: none;
  }

  .wd-audit__input {
    padding: 16px 16px 14px;
    text-align: center;
    border-bottom: 1px solid var(--brb-border);
  }

  .wd-audit__input::placeholder {
    text-align: center;
  }

  .wd-audit__submit {
    padding: 14px;
    justify-content: center;
    border-radius: 0;
  }

  .wd-audit__preview {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .wd-audit__trust {
    font-size: 12px;
  }

  .wd-audit__trust-sep {
    display: block;
    margin: 4px 0;
    height: 0;
    overflow: hidden;
  }
}

/* ============================================================
   Audit page · Sticky mobile CTA
   ------------------------------------------------------------
   Persistent one-tap shortcut to the personal-review form (id
   #strategy-audit). The form sits ~2,600px below the fold and
   ad traffic is mostly mobile, so a fixed bottom bar keeps the
   conversion path reachable without scrolling past the hero,
   trailhead tool, and "Have me look at it personally" intro.
   Mobile-only (≤720px) per editorial flourish discipline —
   desktop has the in-hero CTAs and doesn't need a persistent
   bar. Reveals after the user scrolls past the hero so it
   doesn't compete with the in-hero CTA pair on first paint.
   dual_path_choice (chosen_path: strategy_audit) fires via
   tracking.js DUAL_PATH_MAP on click.
   ============================================================ */
.audit-sticky-cta {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 50;
  display: none;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.85rem 1.25rem;
  padding-bottom: calc(0.85rem + env(safe-area-inset-bottom, 0px));
  background: var(--brb-accent);
  color: var(--brb-anchor);
  font-family: inherit;
  font-weight: 600;
  font-size: 1rem;
  text-decoration: none;
  box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.18);
  opacity: 0;
  transform: translateY(100%);
  transition: opacity 220ms ease, transform 220ms ease;
  pointer-events: none;
}
.audit-sticky-cta:hover {
  background: var(--brb-accent-hover);
}
.audit-sticky-cta.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.audit-sticky-cta__arrow {
  flex-shrink: 0;
}
@media (max-width: 720px) {
  .audit-sticky-cta {
    display: flex;
  }
}

/* ============================================================
   WD · 02 · Craft Philosophy
   ============================================================ */
.wd-craft {
  background: var(--brb-surface);
  padding: var(--brb-section-pad) 0;
  position: relative;
}

.wd-craft__inner {
  max-width: 760px;
  margin: 0 auto;
}

.wd-craft .eyebrow {
  margin-bottom: 28px;
  display: inline-block;
}

.wd-craft__title {
  font-family: var(--brb-font-display);
  font-size: clamp(28px, 3.4vw, 44px);
  line-height: 1.35;
  color: var(--brb-text);
  margin-bottom: 32px;
  font-weight: 300;
  letter-spacing: -0.02em;
}

.wd-craft__title em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

/* Word-by-word reveal */
.reveal-words {
  --reveal-delay: 0ms;
}

.reveal-words > em,
.reveal-words {
  opacity: 1;
}

/* Fade the whole paragraph up smoothly instead of per-word
   to keep it performant and not distracting */
.reveal-words {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 1000ms var(--brb-ease-entrance), transform 1000ms var(--brb-ease-entrance);
}

.reveal-words.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.wd-craft__body {
  font-size: clamp(16px, 1.3vw, 18px);
  line-height: 1.75;
  color: var(--brb-text-muted);
  max-width: 58ch;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 800ms var(--brb-ease) 200ms, transform 800ms var(--brb-ease) 200ms;
}

.wd-craft__body.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ============================================================
   WD · 03 · Platform cards (.wd-platform*)
   The .wd-stack* wrapper rules were removed 2026-07-31 with the
   /website-design/ "The Build" section (operator decision). These
   card rules stay — page-website-maintenance, page-seo-san-luis-
   obispo, page-location-service and page-industry-service all
   render .wd-platform markup inside their own grids.
   ============================================================ */
.wd-platform {
  background: var(--brb-surface);
  padding: clamp(32px, 4vw, 48px);
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.wd-platform.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.wd-platform--lead {
  /* grid-column / grid-row removed in v1.34.7 — these were designed
     for the legacy 4-up grid (1.5fr 1fr 1fr 1fr) where the lead
     occupied a tall column on the left while cards 2/3/4 filled
     the row 1 cells of the right 3 columns. The row 2 cells were
     empty, so the lead's height matched a single content row.
     After v1.34.4 collapsed the grid to 2-up, the row-span forced
     the lead to ~820px (the height of two stacked cells), leaving
     ~540px of empty dark space below its content. Now the lead is
     a normal grid cell that sizes to its content; visual weight
     comes from the dark background, the ::after gradient, the
     larger __name typography, and (when present) the WordPress
     pill — all preserved. */
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  position: relative;
}

.wd-platform--lead::after {
  content: '';
  position: absolute;
  top: 0; right: 0;
  width: 40%;
  height: 60%;
  background: radial-gradient(ellipse at top right, rgba(217, 119, 6, 0.12), transparent 70%);
  pointer-events: none;
}

@media (max-width: 900px) {
  .wd-platform--lead {
    grid-column: 1 / -1;
    grid-row: auto;
  }
}

.wd-platform__num {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--brb-text-muted);
  margin-bottom: 20px;
}

.wd-platform--lead .wd-platform__num {
  color: var(--brb-text-on-dark-subtle);
}

.wd-platform__name {
  font-family: var(--brb-font-display);
  font-size: clamp(22px, 2.4vw, 32px);
  font-weight: 400;
  letter-spacing: -0.02em;
  line-height: 1.15;
  margin-bottom: 16px;
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}

.wd-platform--lead .wd-platform__name {
  font-size: clamp(32px, 3.8vw, 48px);
}

.wd-platform__tag {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  font-weight: 500;
  background: var(--brb-accent);
  color: var(--brb-anchor);
  padding: 3px 10px;
  border-radius: 100px;
  position: relative;
  top: -4px;
}

.wd-platform__body {
  font-size: 15px;
  line-height: 1.65;
  color: var(--brb-text-muted);
}

.wd-platform--lead .wd-platform__body {
  color: var(--brb-text-on-dark-muted);
  font-size: 16px;
}

/* ============================================================
   WD · 04 · Device Mockup Showcase
   ============================================================ */
.wd-showcase {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(96px, 12vw, 160px) 0 clamp(120px, 15vw, 200px);
  position: relative;
  overflow: hidden;
}

.wd-showcase::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 80% 20%, rgba(217, 119, 6, 0.06), transparent 50%),
    radial-gradient(circle at 20% 80%, rgba(139, 92, 246, 0.04), transparent 50%);
  pointer-events: none;
}

.wd-showcase__head {
  position: relative;
  max-width: 760px;
  margin-bottom: clamp(56px, 7vw, 96px);
}

.wd-showcase__head .eyebrow {
  margin-bottom: 20px;
  display: inline-block;
}

.wd-showcase__title {
  font-size: clamp(36px, 4.5vw, 60px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
}

.wd-showcase__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-showcase__stage {
  position: relative;
  height: clamp(420px, 55vw, 620px);
  max-width: 960px;
  margin: 0 auto;
}

/* Laptop mockup */
.wd-mock--laptop {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 75%;
  z-index: 1;
  opacity: 0;
  transition: opacity 1200ms var(--brb-ease-entrance), transform 1200ms var(--brb-ease-entrance);
}

.wd-mock--laptop.is-visible {
  opacity: 1;
  transform: translateY(-50%) rotateY(-2deg);
  animation: wd-laptop-idle 8s ease-in-out infinite;
}

@keyframes wd-laptop-idle {
  0%, 100% { transform: translateY(-50%) rotateY(-2deg) translateX(0); }
  50%      { transform: translateY(calc(-50% - 6px)) rotateY(-2deg) translateX(-4px); }
}

.wd-mock__frame {
  background: #2A2A28;
  border-radius: 14px 14px 4px 4px;
  padding: 14px 14px 20px;
  position: relative;
  box-shadow:
    0 40px 80px -20px rgba(0, 0, 0, 0.6),
    0 20px 40px -10px rgba(0, 0, 0, 0.4),
    inset 0 1px 0 rgba(255,255,255,0.1);
}

.wd-mock__notch {
  position: absolute;
  top: 4px;
  left: 50%;
  transform: translateX(-50%);
  width: 60px;
  height: 6px;
  background: #1A1A1A;
  border-radius: 0 0 6px 6px;
}

.wd-mock__screen {
  background: var(--brb-surface);
  border-radius: 6px;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  position: relative;
}

.wd-mock__browser {
  background: #E8E5DF;
  padding: 10px 16px;
  display: flex;
  align-items: center;
  gap: 12px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.wd-mock__dots {
  display: flex;
  gap: 6px;
}

.wd-mock__dots span {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #C8C4BA;
}

.wd-mock__dots span:first-child { background: #E87C7C; }
.wd-mock__dots span:nth-child(2) { background: #E8C36A; }
.wd-mock__dots span:last-child { background: #86C580; }

.wd-mock__url {
  font-family: var(--brb-font-body);
  font-size: 10px;
  color: var(--brb-text-muted);
  background: var(--brb-surface);
  padding: 4px 12px;
  border-radius: 4px;
  flex-grow: 1;
  text-align: center;
  letter-spacing: 0.02em;
}

.wd-mock__content {
  padding: 6% 8%;
  background: var(--brb-surface);
  height: calc(100% - 34px);
  display: flex;
  flex-direction: column;
  gap: 6%;
}

.wd-mock__hero {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.wd-mock__hero-badge {
  width: 80px;
  height: 8px;
  background: var(--brb-accent);
  border-radius: 2px;
  opacity: 0.7;
}

.wd-mock__hero-line {
  height: 16px;
  background: var(--brb-anchor);
  border-radius: 3px;
  margin-top: 4px;
}

.wd-mock__hero-line--long { width: 92%; }
.wd-mock__hero-line--medium { width: 68%; }

.wd-mock__hero-sub {
  height: 6px;
  background: var(--brb-text-muted);
  opacity: 0.3;
  border-radius: 2px;
  width: 75%;
  margin-top: 14px;
}

.wd-mock__hero-buttons {
  display: flex;
  gap: 8px;
  margin-top: 18px;
}

.wd-mock__btn {
  height: 18px;
  width: 70px;
  border-radius: 4px;
}

.wd-mock__btn--primary { background: var(--brb-accent); }
.wd-mock__btn--ghost {
  background: transparent;
  border: 1px solid var(--brb-anchor);
}

.wd-mock__cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: auto;
}

.wd-mock__card {
  aspect-ratio: 3 / 2;
  background: rgba(26, 26, 26, 0.06);
  border-radius: 4px;
  position: relative;
}

.wd-mock__card::before {
  content: '';
  position: absolute;
  top: 30%;
  left: 12%;
  width: 60%;
  height: 6px;
  background: var(--brb-anchor);
  opacity: 0.5;
  border-radius: 2px;
}

.wd-mock__card::after {
  content: '';
  position: absolute;
  top: 48%;
  left: 12%;
  width: 40%;
  height: 4px;
  background: var(--brb-accent);
  border-radius: 2px;
}

.wd-mock__base {
  height: 8px;
  background: linear-gradient(to bottom, #2A2A28, #1A1A1A);
  margin-top: -4px;
  width: 110%;
  margin-left: -5%;
  border-radius: 0 0 8px 8px;
  position: relative;
}

.wd-mock__base::after {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 16%;
  height: 100%;
  background: #000;
  border-radius: 0 0 6px 6px;
}

.wd-mock__shadow {
  height: 50px;
  background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.4), transparent 70%);
  margin-top: -20px;
  filter: blur(15px);
  opacity: 0.5;
}

/* Phone mockup */
.wd-mock--phone {
  position: absolute;
  right: 2%;
  top: 8%;
  width: 28%;
  max-width: 220px;
  z-index: 2;
  opacity: 0;
  transition: opacity 1200ms var(--brb-ease-entrance) 300ms, transform 1200ms var(--brb-ease-entrance) 300ms;
}

.wd-mock--phone.is-visible {
  opacity: 1;
  transform: rotate(6deg);
  animation: wd-phone-idle 9s ease-in-out infinite 1s;
}

@keyframes wd-phone-idle {
  0%, 100% { transform: rotate(6deg) translateY(0); }
  50%      { transform: rotate(5deg) translateY(-10px); }
}

.wd-mock__phone-frame {
  background: #1A1A1A;
  border: 3px solid #2A2A28;
  border-radius: 28px;
  padding: 10px;
  box-shadow:
    0 30px 60px -10px rgba(0, 0, 0, 0.6),
    0 15px 30px -5px rgba(0, 0, 0, 0.4),
    inset 0 0 0 1px rgba(255,255,255,0.05);
  position: relative;
  aspect-ratio: 9 / 19;
}

.wd-mock__phone-notch {
  position: absolute;
  top: 14px;
  left: 50%;
  transform: translateX(-50%);
  width: 38%;
  height: 18px;
  background: #000;
  border-radius: 12px;
  z-index: 2;
}

.wd-mock__phone-screen {
  background: var(--brb-surface);
  border-radius: 20px;
  height: 100%;
  overflow: hidden;
  position: relative;
  padding: 28px 12px 12px;
}

.wd-mock__phone-status {
  height: 3px;
  background: var(--brb-anchor);
  border-radius: 2px;
  width: 50px;
  margin: 0 auto 12px;
  opacity: 0.3;
}

.wd-mock__phone-content {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 4px;
}

.wd-mock__phone-heading {
  height: 14px;
  background: var(--brb-anchor);
  border-radius: 3px;
  width: 80%;
}

.wd-mock__phone-line {
  height: 5px;
  background: var(--brb-text-muted);
  opacity: 0.25;
  border-radius: 2px;
  width: 95%;
}

.wd-mock__phone-line--short { width: 70%; }

.wd-mock__phone-btn {
  height: 22px;
  background: var(--brb-accent);
  border-radius: 4px;
  width: 100%;
  margin-top: 6px;
}

.wd-mock__phone-card {
  aspect-ratio: 5 / 3;
  background: rgba(26, 26, 26, 0.06);
  border-radius: 4px;
  margin-top: 8px;
  position: relative;
}

.wd-mock__phone-card::before {
  content: '';
  position: absolute;
  top: 40%;
  left: 10%;
  right: 40%;
  height: 4px;
  background: var(--brb-anchor);
  opacity: 0.5;
  border-radius: 2px;
}

.wd-mock__phone-card--alt::after {
  content: '';
  position: absolute;
  bottom: 15%;
  left: 10%;
  width: 30%;
  height: 8px;
  background: var(--brb-accent);
  border-radius: 3px;
}

/* ============================================================
   WD · 05 · Industries
   ============================================================ */
.wd-industries {
  background: var(--brb-surface);
  padding: var(--brb-section-pad) 0;
}

.wd-industries__head {
  max-width: 720px;
  margin-bottom: clamp(56px, 6vw, 80px);
}

.wd-industries__head .eyebrow { margin-bottom: 20px; display: inline-block; }

.wd-industries__title {
  font-size: clamp(36px, 4.5vw, 60px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  margin-bottom: 24px;
  font-weight: 400;
}

.wd-industries__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-industries__sub {
  font-size: clamp(16px, 1.3vw, 18px);
  line-height: 1.7;
  color: var(--brb-text-muted);
  max-width: 62ch;
}

.wd-industries__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--brb-border-strong);
  border-top: 1px solid var(--brb-border-strong);
  border-bottom: 1px solid var(--brb-border-strong);
}

@media (max-width: 900px) {
  .wd-industries__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
  .wd-industries__grid { grid-template-columns: 1fr; }
}

.wd-industry {
  background: var(--brb-surface);
  padding: clamp(32px, 4vw, 48px);
  display: flex;
  flex-direction: column;
  gap: 16px;
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.wd-industry.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.wd-industry__label {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--brb-text-muted);
}

.wd-industry__title {
  font-family: var(--brb-font-display);
  font-size: clamp(22px, 2.3vw, 28px);
  line-height: 1.15;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text);
}

.wd-industry__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-industry__body {
  font-size: 14px;
  line-height: 1.65;
  color: var(--brb-text-muted);
}

/* (Note: legacy dark-design .wd-principles block removed in 1.28.19.
   The cream-design rule near the bottom of this file is now the only
   .wd-principles definition. Service-page templates use the
   .wd-principles__grid + .principle markup pattern.) */

/* ============================================================
   WD · 07 · Proof
   ============================================================ */
.wd-proof {
  background: var(--brb-surface);
  padding: var(--brb-section-pad) 0;
  border-bottom: 1px solid var(--brb-border);
}

.wd-proof__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(24px, 3vw, 48px);
  flex-wrap: wrap;
}

.wd-proof__item {
  flex: 1;
  min-width: 140px;
  text-align: center;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.wd-proof__item.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.wd-proof__item:nth-child(3) { transition-delay: 100ms; }
.wd-proof__item:nth-child(5) { transition-delay: 200ms; }
.wd-proof__item:nth-child(7) { transition-delay: 300ms; }

.wd-proof__value {
  font-family: var(--brb-font-display);
  font-size: clamp(48px, 6vw, 80px);
  font-weight: 400;
  line-height: 1;
  letter-spacing: -0.04em;
  color: var(--brb-text);
  margin-bottom: 8px;
}

.wd-proof__value .wd-proof__sub {
  color: var(--brb-accent);
  font-weight: 400;
  font-style: italic;
  margin-left: 2px;
}

.wd-proof__word {
  font-style: italic;
  color: var(--brb-text);
}

.wd-proof__label {
  font-family: var(--brb-font-body);
  font-size: 11px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
  font-weight: 500;
}

.wd-proof__divider {
  width: 1px;
  height: 60px;
  background: var(--brb-border);
}

@media (max-width: 720px) {
  .wd-proof__divider { display: none; }
  .wd-proof__item { min-width: 45%; }
}

/* ============================================================
   WD · 08 · Final CTA
   ============================================================ */
.wd-final {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(96px, 12vw, 160px) 0;
  position: relative;
  overflow: hidden;
}

.wd-final::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 20% 50%, rgba(217, 119, 6, 0.08), transparent 50%),
    radial-gradient(circle at 80% 50%, rgba(139, 92, 246, 0.05), transparent 50%);
  pointer-events: none;
}

.wd-final__inner {
  position: relative;
  max-width: 820px;
  margin: 0 auto;
  text-align: center;
}

.wd-final__inner.is-visible {
  /* preserved for any legacy pages that do add .reveal to the inner */
}

.wd-final__inner .eyebrow {
  margin-bottom: 24px;
  display: inline-block;
}

.wd-final__title {
  font-size: clamp(36px, 5vw, 64px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  margin-bottom: 28px;
  font-weight: 400;
}

.wd-final__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-final__body {
  font-size: clamp(16px, 1.3vw, 18px);
  line-height: 1.7;
  color: var(--brb-text-on-dark-muted);
  max-width: 54ch;
  margin: 0 auto 40px;
}

.wd-final__actions {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
}


/* ============================================================
   WD · Mini Client Showcase strip (.wd-clients)
   Supportive trust strip on /website-design only — between
   .wd-dashboard and .wd-showcase. Logos render desaturated at
   rest, restore color on hover. All logos link to /work.
   ============================================================ */
.wd-clients {
  background: #EFE9E0;
  padding: var(--brb-section-pad) 0;
  border-top: 1px solid rgba(26, 26, 24, 0.1);
}

.wd-clients__head {
  text-align: center;
  margin-bottom: clamp(40px, 5vw, 64px);
}

.wd-clients__head .eyebrow {
  margin-bottom: 12px;
  display: inline-block;
}

.wd-clients__sub {
  font-family: var(--brb-font-display);
  font-style: italic;
  font-size: clamp(1.05rem, 1.4vw, 1.25rem);
  line-height: 1.4;
  color: var(--brb-text-muted);
  margin: 0;
}

.wd-clients__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(20px, 3vw, 36px) clamp(24px, 3.5vw, 48px);
  align-items: center;
  max-width: 1100px;
  margin-inline: auto;
}

@media (min-width: 600px) {
  .wd-clients__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (min-width: 880px) {
  .wd-clients__grid {
    grid-template-columns: repeat(6, 1fr);
  }
}

.wd-clients__item {
  display: flex;
  align-items: center;
  justify-content: center;
}

.wd-clients__link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 80px;
  padding: 8px 12px;
  border-radius: 6px;
  transition: transform 200ms var(--brb-ease), box-shadow 200ms var(--brb-ease);
}

.wd-clients__link:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(26, 26, 26, 0.06);
}

.wd-clients__logo {
  max-width: 100%;
  max-height: 56px;
  width: auto;
  height: auto;
  object-fit: contain;
  filter: grayscale(100%) opacity(0.6);
  transition: filter 200ms var(--brb-ease);
}

.wd-clients__link:hover .wd-clients__logo {
  filter: grayscale(0%) opacity(1);
}

.wd-clients__cta-wrap {
  text-align: center;
  margin-top: clamp(40px, 5vw, 64px);
}

.wd-clients__cta {
  font-family: var(--brb-font-body);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.04em;
  color: var(--brb-text);
  text-decoration: none;
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 2px;
  transition: color 200ms var(--brb-ease), border-color 200ms var(--brb-ease);
}

.wd-clients__cta:hover {
  color: var(--brb-accent);
}

/* ============================================================
   ==============================================================
   WD · Dashboard Mockup Section (.wd-dashboard)
   Reinforces "Measurable from day one" principle with a
   CSS+SVG stylized analytics dashboard. Brand-colored.
   ==============================================================
   ============================================================ */

.wd-dashboard {
  background: var(--brb-surface);
  padding: var(--brb-section-pad) 0;
  border-top: 1px solid var(--brb-border);
  position: relative;
  overflow: hidden;
}

.wd-dashboard::before {
  content: '';
  position: absolute;
  top: 0; right: 0;
  width: 50%;
  height: 100%;
  background: radial-gradient(ellipse at center right, rgba(217, 119, 6, 0.04), transparent 60%);
  pointer-events: none;
}

.wd-dashboard__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(48px, 6vw, 96px);
  align-items: center;
  position: relative;
}

@media (max-width: 900px) {
  .wd-dashboard__grid {
    grid-template-columns: 1fr;
  }
}

/* Copy column */
.wd-dashboard__copy {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 900ms var(--brb-ease-entrance), transform 900ms var(--brb-ease-entrance);
}

.wd-dashboard__copy.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.wd-dashboard__copy .eyebrow {
  margin-bottom: 20px;
  display: inline-block;
}

.wd-dashboard__title {
  font-family: var(--brb-font-display);
  font-size: clamp(30px, 3.6vw, 44px);
  line-height: 1.15;
  letter-spacing: -0.02em;
  margin-bottom: 24px;
  font-weight: 400;
  max-width: 18ch;
}

.wd-dashboard__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-dashboard__body {
  font-size: clamp(15px, 1.25vw, 17px);
  line-height: 1.7;
  color: var(--brb-text-muted);
  max-width: 48ch;
}

/* Dashboard viz column */
.wd-dashboard__viz {
  position: relative;
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 1200ms var(--brb-ease-entrance) 200ms, transform 1200ms var(--brb-ease-entrance) 200ms;
}

.wd-dashboard__viz.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* The actual dashboard window */
.wd-dash {
  background: var(--brb-anchor);
  border-radius: 12px;
  overflow: hidden;
  box-shadow:
    0 40px 80px -20px rgba(26, 26, 26, 0.25),
    0 20px 40px -10px rgba(26, 26, 26, 0.15),
    0 0 0 1px rgba(26, 26, 26, 0.08);
  position: relative;
  animation: wd-dash-idle 10s ease-in-out infinite;
}

@keyframes wd-dash-idle {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-6px); }
}

/* Header */
.wd-dash__head {
  background: #232321;
  padding: 14px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid rgba(250, 247, 242, 0.05);
}

.wd-dash__logo {
  display: flex;
  align-items: center;
  gap: 10px;
}

.wd-dash__dot {
  width: 8px;
  height: 8px;
  background: var(--brb-accent);
  border-radius: 50%;
  animation: wd-pulse 2s ease-in-out infinite;
  box-shadow: 0 0 0 0 rgba(217, 119, 6, 0.5);
}

@keyframes wd-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(217, 119, 6, 0.5); }
  50%      { box-shadow: 0 0 0 6px rgba(217, 119, 6, 0); }
}

.wd-dash__name {
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--brb-text-on-dark-muted);
}

.wd-dash__tabs {
  display: flex;
  gap: 16px;
}

.wd-dash__tab {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--brb-text-on-dark-subtle);
  padding-bottom: 4px;
  border-bottom: 1px solid transparent;
  transition: color 200ms var(--brb-ease);
}

.wd-dash__tab--active {
  color: var(--brb-text-on-dark);
  border-bottom-color: var(--brb-accent);
}

/* Body */
.wd-dash__body {
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

/* Stats row */
.wd-dash__stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

.wd-dash__stat {
  background: rgba(250, 247, 242, 0.03);
  border: 1px solid rgba(250, 247, 242, 0.06);
  border-radius: 8px;
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.wd-dash__stat-label {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  font-weight: 500;
}

.wd-dash__stat-value {
  font-family: var(--brb-font-display);
  font-size: 22px;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  letter-spacing: -0.02em;
  line-height: 1.1;
}

.wd-dash__stat-delta {
  font-family: var(--brb-font-body);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.03em;
}

.wd-dash__stat-delta--up {
  color: #7ACC8F;
}

/* Chart */
.wd-dash__chart {
  height: 120px;
  position: relative;
  padding: 12px 0;
}

.wd-dash__chart-grid {
  position: absolute;
  inset: 12px 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.wd-dash__chart-grid span {
  height: 1px;
  background: rgba(250, 247, 242, 0.05);
}

.wd-dash__chart-svg {
  width: 100%;
  height: 100%;
  overflow: visible;
}

.wd-dash__chart-area {
  fill: url(#wd-chart-gradient);
  fill: rgba(217, 119, 6, 0.15);
  opacity: 0;
  animation: wd-chart-area-in 1600ms var(--brb-ease-entrance) 600ms forwards;
}

@keyframes wd-chart-area-in {
  to { opacity: 1; }
}

.wd-dash__chart-line {
  fill: none;
  stroke: var(--brb-accent);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 1000;
  stroke-dashoffset: 1000;
  animation: wd-chart-draw 2000ms var(--brb-ease-entrance) 400ms forwards;
}

@keyframes wd-chart-draw {
  to { stroke-dashoffset: 0; }
}

.wd-dash__chart-dot {
  fill: var(--brb-accent);
  opacity: 0;
  animation: wd-dot-in 400ms var(--brb-ease) forwards;
}

.wd-dash__chart-dot:nth-of-type(1) { animation-delay: 1400ms; }
.wd-dash__chart-dot:nth-of-type(2) { animation-delay: 1700ms; }
.wd-dash__chart-dot:nth-of-type(3) { animation-delay: 2000ms; }
.wd-dash__chart-dot--last {
  animation-delay: 2300ms;
}

.wd-dash__chart-dot--last {
  fill: var(--brb-accent);
  filter: drop-shadow(0 0 8px rgba(217, 119, 6, 0.8));
}

@keyframes wd-dot-in {
  from { opacity: 0; transform: scale(0); }
  to   { opacity: 1; transform: scale(1); }
}

/* Sources block */
.wd-dash__sources {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-top: 4px;
  border-top: 1px solid rgba(250, 247, 242, 0.05);
}

.wd-dash__source-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 4px;
}

.wd-dash__source-label {
  font-family: var(--brb-font-body);
  font-size: 11px;
  color: var(--brb-text-on-dark-muted);
}

.wd-dash__source-pct {
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 600;
  color: var(--brb-text-on-dark);
}

.wd-dash__bar {
  height: 4px;
  background: rgba(250, 247, 242, 0.06);
  border-radius: 2px;
  overflow: hidden;
}

.wd-dash__bar-fill {
  height: 100%;
  background: var(--brb-accent);
  border-radius: 2px;
  width: 0 !important;
  animation: wd-bar-fill 1400ms var(--brb-ease-entrance) forwards;
}

.wd-dashboard__viz.is-visible .wd-dash__source:nth-child(1) .wd-dash__bar-fill { animation-delay: 800ms; --target-width: 42%; }
.wd-dashboard__viz.is-visible .wd-dash__source:nth-child(2) .wd-dash__bar-fill { animation-delay: 900ms; --target-width: 31%; }
.wd-dashboard__viz.is-visible .wd-dash__source:nth-child(3) .wd-dash__bar-fill { animation-delay: 1000ms; --target-width: 18%; }
.wd-dashboard__viz.is-visible .wd-dash__source:nth-child(4) .wd-dash__bar-fill { animation-delay: 1100ms; --target-width: 9%; }

@keyframes wd-bar-fill {
  to { width: var(--target-width, 50%) !important; }
}

/* Floating notification bubble */
.wd-dash__notif {
  position: absolute;
  top: -16px;
  right: -20px;
  background: var(--brb-surface);
  border: 1px solid var(--brb-border);
  border-radius: 100px;
  padding: 8px 14px 8px 10px;
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  color: var(--brb-text);
  letter-spacing: 0.02em;
  box-shadow: 0 10px 30px -5px rgba(26, 26, 26, 0.15);
  opacity: 0;
  transform: translate(8px, -8px) scale(0.9);
  animation: wd-notif-in 600ms var(--brb-ease-entrance) 2400ms forwards,
             wd-notif-float 6s ease-in-out 3000ms infinite;
}

@keyframes wd-notif-in {
  to {
    opacity: 1;
    transform: translate(0, 0) scale(1);
  }
}

@keyframes wd-notif-float {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50%      { transform: translate(0, -4px) scale(1); }
}

.wd-dash__notif-dot {
  width: 8px;
  height: 8px;
  background: #7ACC8F;
  border-radius: 50%;
  animation: wd-pulse-green 2s ease-in-out infinite;
  box-shadow: 0 0 0 0 rgba(122, 204, 143, 0.5);
}

@keyframes wd-pulse-green {
  0%, 100% { box-shadow: 0 0 0 0 rgba(122, 204, 143, 0.5); }
  50%      { box-shadow: 0 0 0 5px rgba(122, 204, 143, 0); }
}

.wd-dash__notif-text { white-space: nowrap; }

@media (max-width: 900px) {
  .wd-dash__notif { right: -10px; top: -12px; }
}

/* ============================================================
   Extra polish: subtle hover lifts + underline growth on industries,
   + gentle hover lift on platform cards
   ============================================================ */

.wd-industry {
  position: relative;
  cursor: default;
}

.wd-industry::after {
  content: '';
  position: absolute;
  left: clamp(32px, 4vw, 48px);
  bottom: 0;
  height: 2px;
  width: 0;
  background: var(--brb-accent);
  transition: width 500ms var(--brb-ease);
}

.wd-industry:hover::after {
  width: 48px;
}

/* Hub-link variant of an industry cell — clickable, with amber-underlined
   accent text + arrow on the body to signal interactivity. */
.wd-industry--link {
  cursor: pointer;
  text-decoration: none;
  color: inherit;
  transition: transform 250ms var(--brb-ease);
  display: block;
}
.wd-industry--link:hover {
  transform: translateY(-2px);
}
.wd-industry--link:hover::after {
  width: 64px;
}
.wd-industry__link-text {
  border-bottom: 1px solid var(--brb-accent);
  transition: color 200ms var(--brb-ease);
}
.wd-industry--link:hover .wd-industry__link-text {
  color: var(--brb-accent);
}

/* "See all industries →" CTA below the wd-industries grid */
.wd-industries__cta-wrap {
  margin-top: clamp(28px, 3vw, 40px);
  text-align: center;
}
.wd-industries__cta {
  font-family: var(--brb-font-body);
  font-size: 14px;
  font-weight: 500;
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 1px;
  transition: color 200ms var(--brb-ease);
}
.wd-industries__cta:hover {
  color: var(--brb-accent);
}

/* Dark-context variant — SEO + paid-advertising sections use --brb-anchor bg */
.wd-industries:has(.industry-item) .wd-industries__cta {
  color: var(--brb-text-on-dark);
}

/* "{Service} in {city} · {Service} in {city}" cities row below "See all industries" */
.wd-industries__cities {
  margin-top: clamp(10px, 1.2vw, 14px);
  text-align: center;
  font-family: var(--brb-font-body);
  font-size: 13px;
  font-weight: 400;
  color: var(--brb-text-muted);
}
.wd-industries__cities a {
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 1px;
  transition: color 200ms var(--brb-ease);
}
.wd-industries__cities a:hover {
  color: var(--brb-accent);
}

/* Dark-context variant — SEO + paid-advertising sections use --brb-anchor bg */
.wd-industries:has(.industry-item) .wd-industries__cities {
  color: var(--brb-text-on-dark-muted);
}
.wd-industries:has(.industry-item) .wd-industries__cities a {
  color: var(--brb-text-on-dark);
}

.wd-platform {
  transition: opacity 700ms var(--brb-ease),
              transform 700ms var(--brb-ease),
              background 300ms var(--brb-ease);
  cursor: default;
}

.wd-platform:not(.wd-platform--lead):hover {
  background: #F4F1EB;
}

/* Nudge the mockup's primary button with a soft pulse */
.wd-mock__btn--primary {
  animation: wd-btn-pulse 3s ease-in-out infinite;
}

@keyframes wd-btn-pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.7; }
}


/* ============================================================
   ==============================================================
   HOMEPAGE ENHANCEMENTS
   — Hero animated background (orbs + grid)
   — Hero line-by-line assembly
   — Trust strip under hero
   — Mini mockups for service cards (browser/SERP/display ad)
   — Dashboard mockup in flagship section
   — Count-up styling for inline hero counter
   ==============================================================
   ============================================================ */

/* ============================================================
   Hero — animated background
   ============================================================ */
.hero {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.hero__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: -1;
  background:
    radial-gradient(ellipse at 100% 0%, rgba(217, 119, 6, 0.38) 0%, transparent 100%),
    radial-gradient(ellipse at 0% 100%, rgba(139, 92, 246, 0.12) 0%, transparent 100%);
}

/* Orb divs kept in DOM for stability but hidden —
   amber glow is now a corner-anchored gradient on .hero__bg */
.hero__orb { display: none; }

.hero__grid {
  /* Grid lines removed — kept the class for DOM stability, but it now renders nothing.
     If you ever want the grid back, restore the previous background-image rules. */
  display: none;
}

/* Hero headline line-by-line assembly */
.hero__headline .line {
  display: block;
  opacity: 0;
  transform: translateY(22px);
  transition: opacity 900ms var(--brb-ease-entrance), transform 900ms var(--brb-ease-entrance);
}

.hero__headline .line.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.hero__headline em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

/* Inline hero metric styling */
.hero__inline-metric {
  color: var(--brb-accent);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

/* ============================================================
   ==============================================================
   ABOUT PAGE ENHANCEMENTS
   — Animated intro hero (orbs, grid, line assembly)
   — Signature portrait section
   — By the Numbers stats
   — Beyond the Work studio visualization (CSS/SVG)
   — Subtle polish on existing sections
   ==============================================================
   ============================================================ */

/* ============================================================
   Intro — animated background
   ============================================================ */
.intro {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.intro__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: -1;
  background:
    radial-gradient(ellipse at 0% 0%, rgba(217, 119, 6, 0.10) 0%, transparent 55%),
    radial-gradient(ellipse at 100% 100%, rgba(139, 92, 246, 0.05) 0%, transparent 65%);
}

/* Orb divs kept in DOM for stability but hidden —
   amber glow is now a corner-anchored gradient on .intro__bg */
.intro__orb { display: none; }

.intro__grid {
  /* Grid lines removed for consistency across all page heroes.
     Kept class for DOM stability. */
  display: none;
}

/* Intro headline line-by-line */
.intro__headline .line {
  display: block;
  opacity: 0;
  transform: translateY(22px);
  transition: opacity 900ms var(--brb-ease-entrance), transform 900ms var(--brb-ease-entrance);
}

.intro__headline .line.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.intro__headline em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

/* Intro body lines fade up */
.intro__body-line {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.intro__body-line.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ============================================================
   Signature section — portrait + name + signature mark
   ============================================================ */
.signature {
  background: var(--brb-surface);
  padding: clamp(56px, 7vw, 96px) 0;
  border-bottom: 1px solid var(--brb-border);
}

.signature__grid {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: center;
  max-width: 920px;
  margin: 0 auto;
}

@media (max-width: 680px) {
  .signature__grid {
    grid-template-columns: 1fr;
    text-align: center;
  }
}

.signature__photo {
  width: 220px;
  height: 220px;
  border-radius: 50%;
  overflow: hidden;
  border: 4px solid var(--brb-anchor);
  box-shadow: 0 20px 40px -15px rgba(26, 26, 26, 0.3);
  position: relative;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 900ms var(--brb-ease-entrance), transform 900ms var(--brb-ease-entrance);
}

.signature__photo.is-visible {
  opacity: 1;
  transform: translateY(0);
}

@media (max-width: 680px) {
  .signature__photo {
    width: 180px;
    height: 180px;
    margin: 0 auto;
  }
}

.signature__photo::after {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  border: 1px solid var(--brb-accent);
  opacity: 0;
  animation: signature-ring 4s ease-in-out infinite;
}

@keyframes signature-ring {
  0%, 100% { opacity: 0; transform: scale(1); }
  50%      { opacity: 0.3; transform: scale(1.04); }
}

.signature__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.signature__meta {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 900ms var(--brb-ease-entrance) 200ms, transform 900ms var(--brb-ease-entrance) 200ms;
}

.signature__meta.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.signature__line {
  width: 40px;
  height: 2px;
  background: var(--brb-accent);
  margin-bottom: 20px;
}

@media (max-width: 680px) {
  .signature__line { margin: 0 auto 20px; }
}

.signature__name {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 5vw, 52px);
  font-weight: 400;
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--brb-text);
  margin-bottom: 12px;
}

.signature__dot {
  color: var(--brb-accent);
  font-weight: 700;
}

.signature__role {
  font-family: var(--brb-font-body);
  font-size: 14px;
  color: var(--brb-text-muted);
  letter-spacing: 0.03em;
  margin-bottom: 20px;
}

.signature__mark {
  color: var(--brb-accent);
  max-width: 200px;
  height: 40px;
}

@media (max-width: 680px) {
  .signature__mark { margin: 0 auto; }
}

.signature__mark svg {
  width: 100%;
  height: 100%;
  overflow: visible;
}

.signature__path {
  stroke-dasharray: 500;
  stroke-dashoffset: 500;
  transition: stroke-dashoffset 2000ms var(--brb-ease-entrance);
}

.signature__mark.is-drawn .signature__path {
  stroke-dashoffset: 0;
}

/* ============================================================
   Beyond the Work — Studio visualization
   ============================================================ */
.beyond__viz {
  width: 100%;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 1000ms var(--brb-ease-entrance), transform 1000ms var(--brb-ease-entrance);
}

.beyond__viz .studio-viz.is-visible,
.beyond__viz:has(.studio-viz.is-visible) {
  opacity: 1;
  transform: translateY(0);
}

/* Since :has() isn't universal, use a class on .beyond__viz directly */
.studio-viz.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.studio-viz {
  background: var(--brb-anchor);
  border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 14px;
  padding: 24px;
  box-shadow:
    0 30px 60px -15px rgba(26, 26, 26, 0.35),
    0 15px 30px -10px rgba(26, 26, 26, 0.25);
  color: var(--brb-text-on-dark);
  font-family: var(--brb-font-body);
  position: relative;
  overflow: hidden;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 1000ms var(--brb-ease-entrance), transform 1000ms var(--brb-ease-entrance);
}

.studio-viz::before {
  content: '';
  position: absolute;
  top: 0; right: 0;
  width: 50%;
  height: 100%;
  background: radial-gradient(ellipse at top right, rgba(217, 119, 6, 0.08), transparent 60%);
  pointer-events: none;
}

.studio-viz__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-bottom: 16px;
  border-bottom: 1px solid rgba(250, 247, 242, 0.08);
  margin-bottom: 20px;
}

.studio-viz__indicator {
  display: flex;
  align-items: center;
  gap: 10px;
}

.studio-viz__rec-dot {
  width: 8px;
  height: 8px;
  background: #E87C7C;
  border-radius: 50%;
  animation: studio-rec-pulse 1.5s ease-in-out infinite;
}

@keyframes studio-rec-pulse {
  0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(232, 124, 124, 0.5); }
  50%      { opacity: 0.6; box-shadow: 0 0 0 5px rgba(232, 124, 124, 0); }
}

.studio-viz__rec-label {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--brb-text-on-dark-muted);
}

.studio-viz__timestamp {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.1em;
  color: var(--brb-accent);
  font-family: 'Fraunces', Georgia, serif;
}

/* VU Meter */
.studio-viz__vu {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
}

.studio-viz__vu-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.15em;
  color: var(--brb-text-on-dark-subtle);
  width: 14px;
}

.studio-viz__vu-track {
  flex-grow: 1;
  height: 10px;
  background: rgba(250, 247, 242, 0.05);
  border-radius: 2px;
  overflow: hidden;
  position: relative;
}

.studio-viz__vu-ticks {
  position: absolute;
  inset: 0;
  display: flex;
  justify-content: space-between;
  pointer-events: none;
  z-index: 2;
}

.studio-viz__vu-ticks span {
  width: 1px;
  height: 100%;
  background: rgba(26, 26, 26, 0.4);
}

.studio-viz__vu-fill {
  height: 100%;
  background: linear-gradient(to right,
    #7ACC8F 0%,
    #7ACC8F 55%,
    var(--brb-accent) 60%,
    var(--brb-accent) 80%,
    #E87C7C 85%,
    #E87C7C 100%);
  transform-origin: left;
  animation: studio-vu-l 1.2s ease-in-out infinite;
  border-radius: 2px;
}

.studio-viz__vu-fill--r {
  animation: studio-vu-r 1.4s ease-in-out infinite 0.3s;
}

@keyframes studio-vu-l {
  0%   { transform: scaleX(0.35); }
  25%  { transform: scaleX(0.72); }
  50%  { transform: scaleX(0.58); }
  75%  { transform: scaleX(0.82); }
  100% { transform: scaleX(0.35); }
}

@keyframes studio-vu-r {
  0%   { transform: scaleX(0.4); }
  30%  { transform: scaleX(0.68); }
  60%  { transform: scaleX(0.78); }
  80%  { transform: scaleX(0.52); }
  100% { transform: scaleX(0.4); }
}

.studio-viz__vu-peak {
  position: absolute;
  top: -2px;
  bottom: -2px;
  width: 2px;
  z-index: 3;
  opacity: 0;
  animation: studio-peak-flash 2.4s ease-out infinite;
}

.studio-viz__vu-peak--green { left: 50%; background: #7ACC8F; animation-delay: 0.4s; }
.studio-viz__vu-peak--amber { left: 70%; background: var(--brb-accent); animation-delay: 1.0s; }
.studio-viz__vu-peak--red   { left: 88%; background: #E87C7C; animation-delay: 1.6s; }

@keyframes studio-peak-flash {
  0%, 90%, 100% { opacity: 0; }
  45%, 55%      { opacity: 1; }
}

/* Waveform */
.studio-viz__waveform {
  position: relative;
  height: 80px;
  margin: 20px 0;
  background: rgba(250, 247, 242, 0.02);
  border-radius: 6px;
  overflow: hidden;
}

.studio-viz__wave-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.studio-viz__wave-path {
  fill: none;
  stroke: var(--brb-accent);
  stroke-width: 1.2;
  stroke-linecap: round;
  opacity: 0.8;
  animation: studio-wave-shift 12s linear infinite;
}

.studio-viz__wave-svg--alt { opacity: 0.35; }

.studio-viz__wave-path--alt {
  stroke: #FAF7F2;
  animation: studio-wave-shift 16s linear infinite reverse;
}

@keyframes studio-wave-shift {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-8px); }
}

/* Levels */
.studio-viz__levels {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-top: 8px;
  border-top: 1px solid rgba(250, 247, 242, 0.08);
}

.studio-viz__level {
  display: grid;
  grid-template-columns: 48px 1fr auto;
  align-items: center;
  gap: 12px;
}

.studio-viz__level-label {
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--brb-text-on-dark-subtle);
}

.studio-viz__level-bar {
  height: 4px;
  background: rgba(250, 247, 242, 0.06);
  border-radius: 2px;
  overflow: hidden;
}

.studio-viz__level-fill {
  height: 100%;
  background: var(--brb-accent);
  border-radius: 2px;
  width: 0;
  animation: studio-level-fill 1400ms var(--brb-ease-entrance) forwards;
  --level: 50%;
}

.beyond__viz .studio-viz.is-visible .studio-viz__level:nth-child(1) .studio-viz__level-fill { animation-delay: 400ms; }
.beyond__viz .studio-viz.is-visible .studio-viz__level:nth-child(2) .studio-viz__level-fill { animation-delay: 500ms; }
.beyond__viz .studio-viz.is-visible .studio-viz__level:nth-child(3) .studio-viz__level-fill { animation-delay: 600ms; }

@keyframes studio-level-fill {
  to { width: var(--level); }
}

.studio-viz__level-value {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 12px;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  width: 40px;
  text-align: right;
  letter-spacing: -0.02em;
}

/* ============================================================
   Subtle polish on existing About sections
   ============================================================ */

/* ============================================================
   About page — centered signature variant
   (when photo is moved up to hero, signature becomes text-only)
   ============================================================ */
.signature__grid--centered {
  grid-template-columns: 1fr !important;
  text-align: center;
  max-width: 600px;
}

.signature__grid--centered .signature__line {
  margin: 0 auto 20px;
}

.signature__grid--centered .signature__mark {
  margin: 0 auto;
}

/* Beyond the Work — styled outbound links for Carbon City Lights + Venia Mastering */
.beyond__link {
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 1px;
  transition: color 200ms var(--brb-ease), background 200ms var(--brb-ease);
}

.beyond__link:hover {
  color: var(--brb-accent);
  background: rgba(217, 119, 6, 0.06);
}

/* On dark backgrounds, use the dark-muted token */
.beyond--dark .beyond__link,
.beyond .beyond__content p .beyond__link {
  color: inherit;
}


/* ============================================================
   About · Hero portrait caption — elegant editorial detail
   Sits below the portrait with a subtle amber rule above
   ============================================================ */
.intro__caption {
  margin-top: 20px;
  text-align: center;
  position: relative;
  z-index: 2;
  opacity: 0;
  transform: translateY(8px);
  animation: intro-caption-in 900ms var(--brb-ease-entrance) 1400ms forwards;
}

@keyframes intro-caption-in {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.intro__caption-line {
  width: 24px;
  height: 1px;
  background: var(--brb-accent);
  margin: 0 auto 14px;
  opacity: 0.8;
}

.intro__caption-name {
  font-family: var(--brb-font-display);
  font-size: 20px;
  font-weight: 400;
  letter-spacing: -0.02em;
  color: var(--brb-text);
  line-height: 1.1;
  margin-bottom: 0;
}

.intro__caption-dot {
  color: var(--brb-accent);
  font-weight: 700;
}

.intro__caption-role {
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
  line-height: 1.5;
}

@media (max-width: 900px) {
  .intro__caption {
    margin-top: 18px;
  }
  .intro__caption-name {
    font-size: 18px;
  }
  .intro__caption-role {
    font-size: 10px;
    letter-spacing: 0.12em;
  }
}


/* ============================================================
   About · Beyond the Work — photo block (replaces studio viz)
   Uses the acoustic performance photo as the focal element,
   with the offset amber accent frame pattern from the hero.
   ============================================================ */
.beyond__photo-block {
  position: relative;
  aspect-ratio: 3 / 4;
  width: 100%;
}

@media (min-width: 900px) {
  .beyond__photo-block {
    max-width: 460px;
  }
}

.beyond__photo-frame {
  position: relative;
  width: 100%;
  height: 100%;
  border-radius: 8px;
  overflow: hidden;
  z-index: 2;
  box-shadow:
    0 30px 60px -15px rgba(0, 0, 0, 0.4),
    0 15px 30px -10px rgba(0, 0, 0, 0.25);
  opacity: 0;
  transform: translateY(24px) scale(0.97);
  transition: opacity 1200ms var(--brb-ease-entrance),
              transform 1200ms var(--brb-ease-entrance);
}

.beyond__photo-frame.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.beyond__photo-frame:hover img {
  transform: scale(1.03);
}

.beyond__photo-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 1200ms var(--brb-ease);
}

/* Subtle gradient overlay at bottom for caption readability */
.beyond__photo-frame::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 40%;
  background: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.55));
  pointer-events: none;
}

/* Photo caption overlay */
.beyond__photo-caption {
  position: absolute;
  bottom: 20px;
  left: 24px;
  right: 24px;
  z-index: 2;
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
}

.beyond__photo-caption-label {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.6);
  font-weight: 500;
}

.beyond__photo-caption-link {
  font-family: var(--brb-font-display);
  font-size: 18px;
  font-weight: 400;
  letter-spacing: -0.01em;
  color: #FAF7F2;
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 1px;
  transition: color 200ms var(--brb-ease);
}

.beyond__photo-caption-link:hover {
  color: var(--brb-accent);
}

/* Amber offset accent frame behind the photo */
.beyond__photo-accent {
  position: absolute;
  top: 16px;
  left: 16px;
  width: 100%;
  height: 100%;
  border: 2px solid var(--brb-accent);
  border-radius: 8px;
  z-index: 1;
  opacity: 0.35;
  transition: all 600ms var(--brb-ease);
}

.beyond__photo-block:hover .beyond__photo-accent {
  top: 20px;
  left: 20px;
  opacity: 0.55;
}


/* ============================================================
   ==============================================================
   HOMEPAGE v2 ENHANCEMENTS
   — Pull-quote editorial section (3.5)
   — Upgraded Who's Behind section
   — 3-column Work grid variant
   — Featured + grid reviews
   ==============================================================
   ============================================================ */

/* ============================================================
   ==============================================================
   SEO PAGE — SIGNATURE VISUALS
   — Animated SERP mockup with typing query + highlighted #1
   — Rank tracking dashboard (keyword table + sparklines)
   — Local Pack visualization (map + 3-pack results)
   — Core Web Vitals donut charts
   ==============================================================
   ============================================================ */

/* ============================================================
   SEO · SERP Mockup
   ============================================================ */
.seo-serp {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(60px, 8vw, 100px) 0;
  position: relative;
  overflow: hidden;
}

.seo-serp::before {
  content: '';
  position: absolute;
  top: -20%;
  right: -10%;
  width: 600px;
  height: 600px;
  background: radial-gradient(circle, rgba(217, 119, 6, 0.08), transparent 60%);
  pointer-events: none;
}

.seo-serp__head {
  max-width: 720px;
  margin: 0 auto clamp(40px, 5vw, 64px);
  text-align: center;
  position: relative;
}

.seo-serp__head .eyebrow {
  margin-bottom: 16px;
  display: inline-block;
}

.seo-serp__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  margin-bottom: 20px;
}

.seo-serp__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.seo-serp__body {
  font-size: 16px;
  line-height: 1.7;
  color: var(--brb-text-on-dark-muted);
  max-width: 56ch;
  margin: 0 auto;
}

.serp-mockup {
  max-width: 840px;
  margin: 0 auto;
  background: #FAF7F2;
  border-radius: 12px;
  overflow: hidden;
  box-shadow:
    0 40px 80px -20px rgba(0, 0, 0, 0.6),
    0 20px 40px -10px rgba(0, 0, 0, 0.4);
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 1200ms var(--brb-ease-entrance),
              transform 1200ms var(--brb-ease-entrance);
  position: relative;
}

.serp-mockup.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.serp-mockup__chrome {
  background: #E8E5E0;
  padding: 10px 16px;
  display: flex;
  align-items: center;
  gap: 16px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}

.serp-mockup__dots {
  display: flex;
  gap: 6px;
}

.serp-mockup__dots span {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}

.serp-mockup__dots span:nth-child(1) { background: #FF5F56; }
.serp-mockup__dots span:nth-child(2) { background: #FFBD2E; }
.serp-mockup__dots span:nth-child(3) { background: #27C93F; }

.serp-mockup__url-bar {
  flex: 1;
  background: #FFFFFF;
  border-radius: 6px;
  padding: 6px 12px;
  font-size: 12px;
  color: #5F5F5A;
  display: flex;
  align-items: center;
  gap: 8px;
}

.serp-mockup__lock {
  font-size: 10px;
}

.serp-mockup__search {
  padding: 32px 40px 20px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.serp-mockup__google {
  font-family: 'Product Sans', system-ui, sans-serif;
  font-size: 42px;
  font-weight: 500;
  letter-spacing: -0.02em;
  text-align: center;
}

.serp-mockup__search-input {
  background: #FFFFFF;
  border: 1px solid #DFE1E5;
  border-radius: 24px;
  padding: 12px 20px;
  font-size: 15px;
  color: #202124;
  min-height: 40px;
  display: flex;
  align-items: center;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.06);
}

.serp-mockup__query {
  font-family: Arial, sans-serif;
  color: #202124;
}

.serp-mockup__cursor {
  display: inline-block;
  animation: serp-blink 1s step-end infinite;
  color: #202124;
  margin-left: 1px;
}

@keyframes serp-blink {
  0%, 50% { opacity: 1; }
  51%, 100% { opacity: 0; }
}

.serp-mockup__results {
  padding: 16px 40px 32px;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 600ms var(--brb-ease), transform 600ms var(--brb-ease);
}

.serp-mockup__results.is-revealed {
  opacity: 1;
  transform: translateY(0);
}

.serp-mockup__stats {
  font-size: 12px;
  color: #70757A;
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.serp-result {
  padding: 14px 16px;
  margin-bottom: 10px;
  border-radius: 8px;
  position: relative;
  transition: all 300ms var(--brb-ease);
}

.serp-result--featured {
  background: rgba(217, 119, 6, 0.07);
  border: 1.5px solid var(--brb-accent);
  padding-right: 80px;
  animation: serp-featured-glow 3s ease-in-out infinite;
}

@keyframes serp-featured-glow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(217, 119, 6, 0); }
  50%      { box-shadow: 0 0 0 6px rgba(217, 119, 6, 0.08); }
}

.serp-result__badge {
  position: absolute;
  top: 12px;
  right: 12px;
  background: var(--brb-accent);
  color: #FFFFFF;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 4px;
  display: flex;
  align-items: center;
  gap: 4px;
}

.serp-result__badge-icon {
  font-size: 12px;
}

.serp-result__breadcrumb {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: #202124;
  margin-bottom: 6px;
}

.serp-result__favicon {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--brb-accent);
  display: inline-block;
  flex-shrink: 0;
}

.serp-result__favicon--grey { background: #9AA0A6; }

.serp-result__sep {
  color: #9AA0A6;
  margin: 0 2px;
}

.serp-result__title {
  font-family: Arial, sans-serif;
  font-size: 20px;
  font-weight: 400;
  color: #1A0DAB;
  line-height: 1.3;
  margin: 4px 0 6px 0;
  text-decoration: underline;
  text-decoration-color: rgba(26, 13, 171, 0.2);
}

.serp-result--competitor .serp-result__title {
  color: #1A0DAB;
}

.serp-result__rating {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
  font-size: 13px;
}

.serp-result__stars {
  color: #F59E0B;
  letter-spacing: 1px;
}

.serp-result__rating-count {
  color: #70757A;
  font-size: 13px;
}

.serp-result__desc {
  font-family: Arial, sans-serif;
  font-size: 13px;
  line-height: 1.5;
  color: #4D5156;
  margin: 0;
}

.serp-result--competitor {
  opacity: 0.65;
}

@media (max-width: 640px) {
  .serp-mockup__search { padding: 24px 20px 16px; }
  .serp-mockup__results { padding: 12px 20px 24px; }
  .serp-mockup__google { font-size: 32px; }
  .serp-result__title { font-size: 17px; }
  .serp-result--featured { padding-right: 16px; }
  .serp-result__badge { top: auto; bottom: 8px; right: 8px; }
}

/* ============================================================
   SEO · Rank Tracking Dashboard
   ============================================================ */
.seo-rankings {
  padding: clamp(60px, 8vw, 100px) 0;
  background: var(--brb-surface);
}

.seo-rankings__head {
  max-width: 680px;
  margin: 0 auto clamp(36px, 4.5vw, 56px);
  text-align: center;
}

.seo-rankings__head .eyebrow {
  margin-bottom: 16px;
  display: inline-block;
}

.seo-rankings__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  margin-bottom: 20px;
}

.seo-rankings__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.seo-rankings__body {
  font-size: 16px;
  line-height: 1.7;
  color: var(--brb-text-muted);
}

.rank-dash {
  max-width: 960px;
  margin: 0 auto;
  background: var(--brb-anchor);
  border-radius: 12px;
  padding: 32px;
  color: var(--brb-text-on-dark);
  box-shadow:
    0 30px 60px -15px rgba(0, 0, 0, 0.25),
    0 15px 30px -10px rgba(0, 0, 0, 0.15);
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 1000ms var(--brb-ease-entrance),
              transform 1000ms var(--brb-ease-entrance);
}

.rank-dash.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.rank-dash__head {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 32px;
  padding-bottom: 24px;
  border-bottom: 1px solid rgba(250, 247, 242, 0.08);
  margin-bottom: 24px;
}

@media (max-width: 720px) {
  .rank-dash__head { grid-template-columns: 1fr; }
}

.rank-dash__live {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  color: var(--brb-text-on-dark);
  font-weight: 500;
  margin-bottom: 4px;
}

.rank-dash__live-dot {
  width: 8px;
  height: 8px;
  background: #7ACC8F;
  border-radius: 50%;
  animation: rank-dash-pulse 2s ease-in-out infinite;
}

@keyframes rank-dash-pulse {
  0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(122, 204, 143, 0.4); }
  50%      { opacity: 0.8; box-shadow: 0 0 0 6px rgba(122, 204, 143, 0); }
}

.rank-dash__range {
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
}

.rank-dash__summary {
  display: flex;
  gap: 32px;
}

@media (max-width: 720px) {
  .rank-dash__summary { gap: 16px; flex-wrap: wrap; }
}

.rank-dash__stat-label {
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  margin-bottom: 4px;
  font-weight: 500;
}

.rank-dash__stat-value {
  font-family: var(--brb-font-display);
  font-size: 22px;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.rank-dash__delta {
  font-family: var(--brb-font-body);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0;
}

.rank-dash__delta--up { color: #7ACC8F; }
.rank-dash__delta--down { color: #E87C7C; }

.rank-dash__table-head {
  display: grid;
  grid-template-columns: 1fr 80px 1fr 100px;
  gap: 16px;
  padding: 10px 12px;
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  font-weight: 500;
  border-bottom: 1px solid rgba(250, 247, 242, 0.06);
}

.rank-dash__row {
  display: grid;
  grid-template-columns: 1fr 80px 1fr 100px;
  gap: 16px;
  align-items: center;
  padding: 14px 12px;
  border-bottom: 1px solid rgba(250, 247, 242, 0.05);
  transition: background 200ms var(--brb-ease);
}

.rank-dash__row:hover {
  background: rgba(250, 247, 242, 0.02);
}

.rank-dash__row:last-child { border-bottom: none; }

.rank-dash__keyword {
  font-size: 14px;
  color: var(--brb-text-on-dark);
  font-weight: 500;
}

.rank-dash__position {
  font-family: var(--brb-font-display);
  font-size: 20px;
  font-weight: 400;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  font-variant-numeric: tabular-nums;
}

.rank-dash__position--1 {
  background: rgba(217, 119, 6, 0.15);
  color: var(--brb-accent);
  box-shadow: inset 0 0 0 1px rgba(217, 119, 6, 0.4);
}

.rank-dash__position--2 {
  background: rgba(122, 204, 143, 0.1);
  color: #7ACC8F;
}

.rank-dash__position--3 {
  background: rgba(122, 204, 143, 0.06);
  color: #7ACC8F;
}

.rank-dash__position--4,
.rank-dash__position--5 {
  background: rgba(250, 247, 242, 0.04);
  color: var(--brb-text-on-dark-muted);
}

.rank-dash__spark {
  width: 100%;
  max-width: 180px;
  height: 30px;
  color: #7ACC8F;
}

.rank-dash__spark-path {
  stroke-dasharray: 250;
  stroke-dashoffset: 250;
  animation: rank-spark-draw 2s var(--brb-ease-entrance) forwards;
}

.rank-dash.is-visible .rank-dash__row:nth-child(2) .rank-dash__spark-path { animation-delay: 200ms; }
.rank-dash.is-visible .rank-dash__row:nth-child(3) .rank-dash__spark-path { animation-delay: 300ms; }
.rank-dash.is-visible .rank-dash__row:nth-child(4) .rank-dash__spark-path { animation-delay: 400ms; }
.rank-dash.is-visible .rank-dash__row:nth-child(5) .rank-dash__spark-path { animation-delay: 500ms; }
.rank-dash.is-visible .rank-dash__row:nth-child(6) .rank-dash__spark-path { animation-delay: 600ms; }
.rank-dash.is-visible .rank-dash__row:nth-child(7) .rank-dash__spark-path { animation-delay: 700ms; }

@keyframes rank-spark-draw {
  to { stroke-dashoffset: 0; }
}

.rank-dash__volume {
  font-size: 13px;
  color: var(--brb-text-on-dark-muted);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

@media (max-width: 720px) {
  .rank-dash { padding: 20px; }
  .rank-dash__table-head { display: none; }
  .rank-dash__row {
    grid-template-columns: 1fr auto;
    gap: 8px;
    padding: 14px 8px;
  }
  .rank-dash__spark { display: none; }
  .rank-dash__volume { font-size: 11px; }
}

/* ============================================================
   SEO · Local Pack
   ============================================================ */
.seo-local {
  padding: clamp(60px, 8vw, 100px) 0;
  background: var(--brb-surface);
  border-top: 1px solid var(--brb-border);
}

.seo-local__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 6vw, 80px);
  align-items: center;
  max-width: 1100px;
  margin: 0 auto;
}

@media (max-width: 900px) {
  .seo-local__grid { grid-template-columns: 1fr; }
}

.seo-local__content .eyebrow { margin-bottom: 16px; display: inline-block; }

.seo-local__title {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4vw, 48px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  margin-bottom: 24px;
}

.seo-local__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.seo-local__body {
  font-size: 16px;
  line-height: 1.7;
  color: var(--brb-text-muted);
  margin-bottom: 16px;
}

.seo-local__visual {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 1000ms var(--brb-ease-entrance),
              transform 1000ms var(--brb-ease-entrance);
}

.seo-local__visual.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.local-pack {
  background: var(--brb-anchor);
  border-radius: 12px;
  overflow: hidden;
  box-shadow:
    0 30px 60px -15px rgba(0, 0, 0, 0.3),
    0 15px 30px -10px rgba(0, 0, 0, 0.2);
}

.local-pack__map {
  height: 160px;
  background: #2A2A2A;
  position: relative;
  overflow: hidden;
}

.local-pack__map-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.local-pack__pin {
  position: absolute;
  transform: translate(-50%, -100%);
  animation: local-pin-drop 600ms var(--brb-ease-entrance) backwards;
}

.local-pack__pin--primary { animation-delay: 400ms; }
.local-pack__pin--secondary { animation-delay: 600ms; }
.local-pack__pin--tertiary { animation-delay: 800ms; }

@keyframes local-pin-drop {
  from { opacity: 0; transform: translate(-50%, -150%); }
  to   { opacity: 1; transform: translate(-50%, -100%); }
}

.local-pack__pin-marker {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  font-family: var(--brb-font-display);
  font-size: 13px;
  font-weight: 700;
  color: #FFFFFF;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
  position: relative;
}

.local-pack__pin-marker::after {
  content: '';
  position: absolute;
  bottom: -6px;
  left: 50%;
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 8px solid inherit;
}

.local-pack__pin--primary .local-pack__pin-marker {
  background: var(--brb-accent);
  box-shadow: 0 4px 16px rgba(217, 119, 6, 0.5);
  animation: local-pin-pulse 2s ease-in-out infinite;
  width: 32px;
  height: 32px;
  font-size: 15px;
}

@keyframes local-pin-pulse {
  0%, 100% { box-shadow: 0 4px 16px rgba(217, 119, 6, 0.5); }
  50%      { box-shadow: 0 4px 16px rgba(217, 119, 6, 0.5), 0 0 0 8px rgba(217, 119, 6, 0.15); }
}

.local-pack--pin-secondary .local-pack__pin-marker,
.local-pack__pin--secondary .local-pack__pin-marker { background: #8A8A8A; }

.local-pack__pin--tertiary .local-pack__pin-marker { background: #8A8A8A; }

.local-pack__results {
  padding: 16px;
  color: var(--brb-text-on-dark);
}

.local-pack__header {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(250, 247, 242, 0.08);
  margin-bottom: 12px;
}

.local-pack__item {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  padding: 14px 0;
  border-bottom: 1px solid rgba(250, 247, 242, 0.05);
  position: relative;
}

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

.local-pack__item--featured {
  background: linear-gradient(90deg, rgba(217, 119, 6, 0.08), transparent);
  padding: 16px 14px;
  margin: 0 -14px;
  border-radius: 8px;
  border-bottom: none;
  border: 1px solid rgba(217, 119, 6, 0.25);
  margin-bottom: 10px;
}

.local-pack__marker {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--brb-accent);
  color: #FFFFFF;
  font-family: var(--brb-font-display);
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.local-pack__item:not(.local-pack__item--featured) .local-pack__marker {
  background: #4A4A4A;
  color: var(--brb-text-on-dark-muted);
}

.local-pack__body { flex: 1; min-width: 0; }

.local-pack__name {
  font-family: var(--brb-font-display);
  font-size: 15px;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  margin-bottom: 4px;
  letter-spacing: -0.01em;
}

.local-pack__rating {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 4px;
  font-size: 12px;
}

.local-pack__stars {
  color: var(--brb-accent);
  letter-spacing: 1px;
  font-size: 11px;
}

.local-pack__rating-text {
  color: var(--brb-text-on-dark-muted);
}

.local-pack__meta {
  font-size: 11px;
  color: var(--brb-text-on-dark-subtle);
  letter-spacing: 0.02em;
}

.local-pack__ribbon {
  position: absolute;
  top: 10px;
  right: 10px;
  background: var(--brb-accent);
  color: #FFFFFF;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 3px 8px;
  border-radius: 3px;
}

/* ============================================================
   SEO · Core Web Vitals
   ============================================================ */
.seo-vitals {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(60px, 8vw, 100px) 0;
  position: relative;
  overflow: hidden;
}

.seo-vitals::before {
  content: '';
  position: absolute;
  bottom: -30%;
  left: -10%;
  width: 500px;
  height: 500px;
  background: radial-gradient(circle, rgba(122, 204, 143, 0.06), transparent 60%);
  pointer-events: none;
}

.seo-vitals__head {
  max-width: 680px;
  margin: 0 auto clamp(36px, 4.5vw, 56px);
  text-align: center;
  position: relative;
}

.seo-vitals__head .eyebrow { margin-bottom: 16px; display: inline-block; }

.seo-vitals__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  margin-bottom: 20px;
}

.seo-vitals__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.seo-vitals__body {
  font-size: 16px;
  line-height: 1.7;
  color: var(--brb-text-on-dark-muted);
}

.vitals-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(16px, 2vw, 32px);
  max-width: 900px;
  margin: 0 auto;
  position: relative;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 1000ms var(--brb-ease-entrance),
              transform 1000ms var(--brb-ease-entrance);
}

.vitals-grid.is-visible {
  opacity: 1;
  transform: translateY(0);
}

@media (max-width: 720px) {
  .vitals-grid { grid-template-columns: 1fr; max-width: 320px; }
}

.vital-card {
  background: rgba(250, 247, 242, 0.03);
  border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 12px;
  padding: 32px 24px;
  text-align: center;
  transition: all 300ms var(--brb-ease);
}

.vital-card:hover {
  border-color: rgba(122, 204, 143, 0.3);
  background: rgba(250, 247, 242, 0.04);
}

.vital-card__meter {
  position: relative;
  width: 120px;
  height: 120px;
  margin: 0 auto 20px;
}

.vital-card__ring {
  width: 100%;
  height: 100%;
  transform: rotate(-90deg);
}

.vital-card__ring-bg {
  fill: none;
  stroke: rgba(250, 247, 242, 0.06);
  stroke-width: 8;
}

.vital-card__ring-fill {
  fill: none;
  stroke-width: 8;
  stroke-linecap: round;
  stroke-dasharray: 327;
  stroke-dashoffset: 327;
  transition: stroke-dashoffset 2s var(--brb-ease-entrance);
}

.vital-card__ring-fill--good { stroke: #7ACC8F; }

.vitals-grid.is-visible .vital-card:nth-child(1) .vital-card__ring-fill {
  stroke-dashoffset: calc(327 - (327 * 0.92));
  transition-delay: 300ms;
}
.vitals-grid.is-visible .vital-card:nth-child(2) .vital-card__ring-fill {
  stroke-dashoffset: calc(327 - (327 * 0.95));
  transition-delay: 500ms;
}
.vitals-grid.is-visible .vital-card:nth-child(3) .vital-card__ring-fill {
  stroke-dashoffset: calc(327 - (327 * 0.98));
  transition-delay: 700ms;
}

.vital-card__score {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

.vital-card__score-inner {
  display: flex;
  align-items: baseline;
  gap: 3px;
}

.vital-card__value {
  font-family: var(--brb-font-display);
  font-size: 28px;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  letter-spacing: -0.02em;
  line-height: 1;
}

.vital-card__unit {
  font-size: 12px;
  color: var(--brb-text-on-dark-muted);
  font-family: var(--brb-font-body);
  line-height: 1;
}

.vital-card__label {
  font-family: var(--brb-font-display);
  font-size: 22px;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  margin-bottom: 4px;
  letter-spacing: -0.01em;
}

.vital-card__sublabel {
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  margin-bottom: 16px;
  font-weight: 500;
}

.vital-card__status {
  font-family: var(--brb-font-body);
  font-size: 12px;
  padding: 6px 12px;
  border-radius: 20px;
  display: inline-block;
  font-weight: 500;
}

.vital-card__status--good {
  background: rgba(122, 204, 143, 0.12);
  color: #7ACC8F;
  border: 1px solid rgba(122, 204, 143, 0.25);
}


/* ============================================================
   ==============================================================
   PAID ADS PAGE — SIGNATURE VISUALS
   — Ad placement mockup (highlighted sponsored positions)
   — Campaign performance dashboard (ROAS-focused)
   — Ad creative A/B testing variants
   ==============================================================
   ============================================================ */

/* ============================================================
   Paid Ads · Placement Mockup
   ============================================================ */
.ads-placement {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(60px, 8vw, 100px) 0;
  position: relative;
  overflow: hidden;
}

.ads-placement::before {
  content: '';
  position: absolute;
  top: -20%;
  right: -10%;
  width: 600px;
  height: 600px;
  background: radial-gradient(circle, rgba(217, 119, 6, 0.1), transparent 60%);
  pointer-events: none;
}

.ads-placement__head {
  max-width: 720px;
  margin: 0 auto clamp(40px, 5vw, 64px);
  text-align: center;
  position: relative;
}

.ads-placement__head .eyebrow { margin-bottom: 16px; display: inline-block; }

.ads-placement__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  margin-bottom: 20px;
}

.ads-placement__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.ads-placement__body {
  font-size: 16px;
  line-height: 1.7;
  color: var(--brb-text-on-dark-muted);
  max-width: 56ch;
  margin: 0 auto;
}

.ads-serp {
  max-width: 840px;
  margin: 0 auto;
  background: #FAF7F2;
  border-radius: 12px;
  overflow: hidden;
  box-shadow:
    0 40px 80px -20px rgba(0, 0, 0, 0.6),
    0 20px 40px -10px rgba(0, 0, 0, 0.4);
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 1200ms var(--brb-ease-entrance),
              transform 1200ms var(--brb-ease-entrance);
}

.ads-serp.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Reuse chrome styling from SERP */
.ads-serp__chrome {
  background: #E8E5E0;
  padding: 10px 16px;
  display: flex;
  align-items: center;
  gap: 16px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}

.ads-serp__dots { display: flex; gap: 6px; }
.ads-serp__dots span { width: 10px; height: 10px; border-radius: 50%; }
.ads-serp__dots span:nth-child(1) { background: #FF5F56; }
.ads-serp__dots span:nth-child(2) { background: #FFBD2E; }
.ads-serp__dots span:nth-child(3) { background: #27C93F; }

.ads-serp__url-bar {
  flex: 1;
  background: #FFFFFF;
  border-radius: 6px;
  padding: 6px 12px;
  font-size: 12px;
  color: #5F5F5A;
  display: flex;
  align-items: center;
  gap: 8px;
}

.ads-serp__search {
  padding: 24px 40px 16px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.ads-serp__google {
  font-family: 'Product Sans', system-ui, sans-serif;
  font-size: 36px;
  font-weight: 500;
  letter-spacing: -0.02em;
  text-align: center;
}

.ads-serp__search-input {
  background: #FFFFFF;
  border: 1px solid #DFE1E5;
  border-radius: 24px;
  padding: 10px 20px;
  font-size: 14px;
  color: #202124;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.06);
  font-family: Arial, sans-serif;
}

.ads-serp__stats {
  padding: 0 40px;
  font-size: 12px;
  color: #70757A;
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
  margin-left: 40px;
  margin-right: 40px;
}

.ads-serp__sponsored {
  padding: 16px 40px;
  background: rgba(217, 119, 6, 0.05);
  position: relative;
  border-top: 2px solid var(--brb-accent);
  border-bottom: 2px solid var(--brb-accent);
  animation: ads-sponsored-glow 3s ease-in-out infinite;
}

@keyframes ads-sponsored-glow {
  0%, 100% { background: rgba(217, 119, 6, 0.05); }
  50%      { background: rgba(217, 119, 6, 0.1); }
}

.ads-serp__sponsored-label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brb-accent);
  margin-bottom: 14px;
}

.ads-serp__pulse {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--brb-accent);
  animation: ads-pulse 1.5s ease-in-out infinite;
}

@keyframes ads-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(217, 119, 6, 0.5); }
  50%      { box-shadow: 0 0 0 6px rgba(217, 119, 6, 0); }
}

.ads-result {
  padding: 12px 14px;
  margin-bottom: 8px;
  border-radius: 6px;
  position: relative;
  background: #FFFFFF;
  transition: all 300ms var(--brb-ease);
}

.ads-result--ad-1 {
  border: 1.5px solid var(--brb-accent);
  box-shadow: 0 2px 8px rgba(217, 119, 6, 0.1);
}

.ads-result--ad-2, .ads-result--ad-3, .ads-result--ad-4 {
  border: 1px solid rgba(0, 0, 0, 0.06);
  opacity: 0.75;
}

.ads-result__ad-badge {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #202124;
  background: rgba(0, 0, 0, 0.05);
  padding: 2px 6px;
  border-radius: 3px;
  margin-bottom: 6px;
}

.ads-result--ad-1 .ads-result__ad-badge {
  background: var(--brb-accent);
  color: #FFFFFF;
}

.ads-result__position-label {
  position: absolute;
  top: 12px;
  right: 12px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--brb-accent);
  background: rgba(217, 119, 6, 0.1);
  padding: 3px 8px;
  border-radius: 4px;
}

.ads-result--ad-2 .ads-result__position-label,
.ads-result--ad-3 .ads-result__position-label,
.ads-result--ad-4 .ads-result__position-label {
  color: #70757A;
  background: rgba(0, 0, 0, 0.05);
}

.ads-result__breadcrumb {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: #202124;
  margin-bottom: 4px;
}

.ads-result__favicon {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--brb-accent);
  display: inline-block;
  flex-shrink: 0;
}

.ads-result__favicon--grey { background: #9AA0A6; }

.ads-result__title {
  font-family: Arial, sans-serif;
  font-size: 17px;
  font-weight: 400;
  color: #1A0DAB;
  line-height: 1.3;
  margin: 2px 0 4px 0;
}

.ads-result__desc {
  font-family: Arial, sans-serif;
  font-size: 12px;
  line-height: 1.5;
  color: #4D5156;
  margin: 0;
}

.ads-serp__organic {
  padding: 16px 40px 32px;
}

.ads-serp__organic-label {
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #9AA0A6;
  margin-bottom: 16px;
  padding-bottom: 10px;
  border-bottom: 1px dashed rgba(0, 0, 0, 0.1);
}

.ads-serp__organic-sample {
  display: flex;
  flex-direction: column;
  gap: 10px;
  opacity: 0.35;
}

.ads-serp__organic-line {
  height: 8px;
  background: linear-gradient(90deg, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.02));
  border-radius: 4px;
  width: 100%;
}

.ads-serp__organic-line--short { width: 60%; }

@media (max-width: 640px) {
  .ads-serp__search, .ads-serp__sponsored, .ads-serp__organic {
    padding-left: 20px;
    padding-right: 20px;
  }
  .ads-serp__stats { margin-left: 20px; margin-right: 20px; }
  .ads-serp__google { font-size: 28px; }
  .ads-result__title { font-size: 15px; }
  .ads-result__position-label { top: 8px; right: 8px; font-size: 9px; }
}

/* ============================================================
   Paid Ads · Campaign Performance Dashboard
   ============================================================ */
.ads-dash {
  padding: clamp(60px, 8vw, 100px) 0;
  background: var(--brb-surface);
}

.ads-dash__head {
  max-width: 680px;
  margin: 0 auto clamp(36px, 4.5vw, 56px);
  text-align: center;
}

.ads-dash__head .eyebrow { margin-bottom: 16px; display: inline-block; }

.ads-dash__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  margin-bottom: 20px;
}

.ads-dash__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.ads-dash__body {
  font-size: 16px;
  line-height: 1.7;
  color: var(--brb-text-muted);
}

.ads-dashboard {
  max-width: 1000px;
  margin: 0 auto;
  background: var(--brb-anchor);
  border-radius: 12px;
  padding: 32px;
  color: var(--brb-text-on-dark);
  box-shadow:
    0 30px 60px -15px rgba(0, 0, 0, 0.25),
    0 15px 30px -10px rgba(0, 0, 0, 0.15);
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 1000ms var(--brb-ease-entrance),
              transform 1000ms var(--brb-ease-entrance);
}

.ads-dashboard.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.ads-dashboard__head {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 32px;
  align-items: center;
  padding-bottom: 24px;
  border-bottom: 1px solid rgba(250, 247, 242, 0.08);
  margin-bottom: 24px;
}

@media (max-width: 720px) {
  .ads-dashboard { padding: 20px; }
  .ads-dashboard__head { grid-template-columns: 1fr; gap: 16px; }
}

.ads-dashboard__live {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  color: var(--brb-text-on-dark);
  font-weight: 500;
  margin-bottom: 4px;
}

.ads-dashboard__live-dot {
  width: 8px;
  height: 8px;
  background: #7ACC8F;
  border-radius: 50%;
  animation: rank-dash-pulse 2s ease-in-out infinite;
}

.ads-dashboard__range {
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
}

.ads-dashboard__hero-metric {
  text-align: right;
}

@media (max-width: 720px) { .ads-dashboard__hero-metric { text-align: left; } }

.ads-dashboard__hero-value {
  font-family: var(--brb-font-display);
  font-size: 42px;
  font-weight: 400;
  color: var(--brb-accent);
  line-height: 1;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}

.ads-dashboard__hero-label {
  font-size: 10px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  margin-top: 6px;
  font-weight: 500;
}

/* KPI grid */
.ads-dashboard__kpis {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 16px;
  padding: 20px 0;
  border-bottom: 1px solid rgba(250, 247, 242, 0.08);
  margin-bottom: 24px;
}

@media (max-width: 900px) {
  .ads-dashboard__kpis { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 600px) {
  .ads-dashboard__kpis { grid-template-columns: repeat(2, 1fr); }
}

.ads-kpi {
  padding: 12px 14px;
  background: rgba(250, 247, 242, 0.03);
  border-radius: 8px;
  border: 1px solid rgba(250, 247, 242, 0.05);
}

.ads-kpi__label {
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  margin-bottom: 6px;
  font-weight: 500;
}

.ads-kpi__value {
  font-family: var(--brb-font-display);
  font-size: 20px;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  line-height: 1.2;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}

.ads-kpi__delta {
  font-size: 11px;
  font-weight: 600;
  margin-top: 4px;
}

.ads-kpi__delta--up { color: #7ACC8F; }
.ads-kpi__delta--down { color: #7ACC8F; } /* Low CPC going down is good */

/* Chart */
.ads-dashboard__chart-section {
  padding: 20px 0;
  border-bottom: 1px solid rgba(250, 247, 242, 0.08);
  margin-bottom: 24px;
}

.ads-dashboard__chart-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 16px;
  flex-wrap: wrap;
  gap: 12px;
}

.ads-dashboard__chart-title {
  font-size: 13px;
  font-weight: 500;
  color: var(--brb-text-on-dark);
}

.ads-dashboard__chart-legend {
  display: flex;
  gap: 16px;
  font-size: 11px;
  color: var(--brb-text-on-dark-muted);
}

.ads-dashboard__legend-item {
  display: flex;
  align-items: center;
  gap: 6px;
}

.ads-dashboard__legend-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}

.ads-dashboard__legend-dot--revenue { background: var(--brb-accent); }
.ads-dashboard__legend-dot--spend { background: #8A8A8A; }

.ads-dashboard__chart {
  width: 100%;
  height: 180px;
  display: block;
}

.ads-dashboard__chart-grid {
  stroke: rgba(250, 247, 242, 0.04);
  stroke-width: 1;
}

.ads-dashboard__chart-area {
  fill: url(#adsGradient);
  fill: rgba(217, 119, 6, 0.08);
  opacity: 0;
  animation: ads-chart-area-in 1400ms var(--brb-ease-entrance) 600ms forwards;
}

@keyframes ads-chart-area-in {
  to { opacity: 1; }
}

.ads-dashboard__chart-line {
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 2000;
  stroke-dashoffset: 2000;
}

.ads-dashboard.is-visible .ads-dashboard__chart-line {
  animation: ads-chart-line-draw 2s var(--brb-ease-entrance) forwards;
}

.ads-dashboard__chart-line--revenue {
  stroke: var(--brb-accent);
  animation-delay: 400ms;
}

.ads-dashboard__chart-line--spend {
  stroke: #8A8A8A;
  stroke-width: 1.5;
  opacity: 0.7;
  animation-delay: 600ms;
}

@keyframes ads-chart-line-draw {
  to { stroke-dashoffset: 0; }
}

/* Campaigns table */
.ads-dashboard__campaigns-head {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 16px;
  padding: 10px 12px;
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  font-weight: 500;
  border-bottom: 1px solid rgba(250, 247, 242, 0.06);
}

.ads-campaign-row {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 16px;
  align-items: center;
  padding: 14px 12px;
  border-bottom: 1px solid rgba(250, 247, 242, 0.05);
  font-size: 13px;
  color: var(--brb-text-on-dark);
  transition: background 200ms var(--brb-ease);
  font-variant-numeric: tabular-nums;
}

.ads-campaign-row:hover {
  background: rgba(250, 247, 242, 0.02);
}

.ads-campaign-row:last-child { border-bottom: none; }

.ads-campaign-row__name {
  display: flex;
  align-items: center;
  gap: 10px;
}

.ads-campaign-row__type {
  display: inline-block;
  padding: 3px 8px;
  border-radius: 4px;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-family: var(--brb-font-body);
}

.ads-campaign-row__type--search { background: rgba(217, 119, 6, 0.15); color: var(--brb-accent); }
.ads-campaign-row__type--pmax { background: rgba(139, 92, 246, 0.15); color: #A78BFA; }
.ads-campaign-row__type--remarketing { background: rgba(122, 204, 143, 0.15); color: #7ACC8F; }
.ads-campaign-row__type--display { background: rgba(250, 247, 242, 0.06); color: var(--brb-text-on-dark-muted); }
.ads-campaign-row__type--meta { background: rgba(56, 142, 244, 0.15); color: #6BA8F5; }

.ads-campaign-row__roas {
  font-family: var(--brb-font-display);
  font-size: 15px;
  font-weight: 400;
  text-align: left;
}

.ads-campaign-row__roas--strong {
  color: var(--brb-accent);
  font-weight: 400;
}

@media (max-width: 720px) {
  .ads-dashboard__campaigns-head,
  .ads-campaign-row {
    grid-template-columns: 1.5fr 1fr 1fr;
  }
  .ads-dashboard__campaigns-head > div:nth-child(3),
  .ads-campaign-row > div:nth-child(3) { display: none; }
  .ads-campaign-row__name { font-size: 12px; }
}

/* ============================================================
   Paid Ads · Creative Variants (A/B testing)
   ============================================================ */
.ads-variants {
  padding: clamp(60px, 8vw, 100px) 0;
  background: var(--brb-surface);
  border-top: 1px solid var(--brb-border);
}

.ads-variants__head {
  max-width: 680px;
  margin: 0 auto clamp(36px, 4.5vw, 56px);
  text-align: center;
}

.ads-variants__head .eyebrow { margin-bottom: 16px; display: inline-block; }

.ads-variants__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  margin-bottom: 20px;
}

.ads-variants__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.ads-variants__body {
  font-size: 16px;
  line-height: 1.7;
  color: var(--brb-text-muted);
}

.ads-variants__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(16px, 2vw, 28px);
  max-width: 1100px;
  margin: 0 auto;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 1000ms var(--brb-ease-entrance),
              transform 1000ms var(--brb-ease-entrance);
}

.ads-variants__grid.is-visible {
  opacity: 1;
  transform: translateY(0);
}

@media (max-width: 900px) {
  .ads-variants__grid { grid-template-columns: 1fr; max-width: 480px; }
}

.ad-variant {
  background: #FFFFFF;
  border: 1px solid var(--brb-border);
  border-radius: 12px;
  padding: 24px;
  transition: all 300ms var(--brb-ease);
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.ad-variant--winner {
  border-color: var(--brb-accent);
  box-shadow: 0 8px 24px -8px rgba(217, 119, 6, 0.2);
  transform: translateY(-8px);
}

.ad-variant--loser {
  opacity: 0.7;
}

.ad-variant__label {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--brb-border);
}

.ad-variant__badge {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 4px;
  background: rgba(0, 0, 0, 0.06);
  color: var(--brb-text-muted);
}

.ad-variant__badge--winner {
  background: var(--brb-accent);
  color: #FFFFFF;
}

.ad-variant__badge--loser {
  background: rgba(0, 0, 0, 0.06);
  color: var(--brb-text-muted);
}

.ad-variant__version {
  font-family: var(--brb-font-display);
  font-size: 13px;
  color: var(--brb-text);
  font-weight: 400;
}

/* Ad preview mimics a Google Ad */
.ad-variant__preview {
  background: #F8F8F8;
  border: 1px solid rgba(0, 0, 0, 0.06);
  border-radius: 8px;
  padding: 14px 16px;
  min-height: 150px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ad-variant__sponsored {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #202124;
  width: fit-content;
  padding: 2px 6px;
  background: rgba(0, 0, 0, 0.05);
  border-radius: 3px;
  margin-bottom: 4px;
}

.ad-variant__url {
  font-family: Arial, sans-serif;
  font-size: 12px;
  color: #202124;
}

.ad-variant__headline {
  font-family: Arial, sans-serif;
  font-size: 16px;
  font-weight: 400;
  color: #1A0DAB;
  line-height: 1.3;
  margin: 4px 0 6px 0;
}

.ad-variant__description {
  font-family: Arial, sans-serif;
  font-size: 12px;
  line-height: 1.5;
  color: #4D5156;
  margin: 0;
}

.ad-variant__metrics {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
  padding-top: 12px;
  border-top: 1px solid var(--brb-border);
}

.ad-variant__metric {
  text-align: center;
  padding: 8px;
  background: rgba(250, 247, 242, 0.5);
  border-radius: 6px;
}

.ad-variant__metric--hero {
  background: rgba(217, 119, 6, 0.06);
}

.ad-variant--winner .ad-variant__metric--hero {
  background: rgba(217, 119, 6, 0.12);
}

.ad-variant__metric-label {
  font-size: 9px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
  margin-bottom: 4px;
  font-weight: 500;
}

.ad-variant__metric-value {
  font-family: var(--brb-font-display);
  font-size: 16px;
  font-weight: 400;
  color: var(--brb-text);
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}

.ad-variant--winner .ad-variant__metric--hero .ad-variant__metric-value {
  color: var(--brb-accent);
  font-size: 18px;
}


/* ============================================================
   ==============================================================
   SERVICE PAGE — SHARED SECTION CSS (SEO + Paid Ads)
   Missing classes that existed in the templates but had no CSS
   ==============================================================
   ============================================================ */

/* ============================================================
   Hero body + CTAs + meta (under the headline)
   ============================================================ */
.wd-hero__body {
  font-size: clamp(17px, 1.5vw, 20px);
  line-height: 1.65;
  color: var(--brb-text-on-dark-muted);
  max-width: 58ch;
  margin: clamp(28px, 4vw, 40px) 0 clamp(32px, 4vw, 44px);
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.wd-hero__body.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.wd-hero__ctas {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: clamp(28px, 4vw, 40px);
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.wd-hero__ctas.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.wd-hero__meta {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  margin-top: clamp(24px, 3vw, 36px);
  font-family: var(--brb-font-body);
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  font-weight: 500;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.wd-hero__meta.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.wd-hero__meta-sep {
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: var(--brb-accent);
  display: inline-block;
  flex-shrink: 0;
}

/* Keep the three meta pills on a single line on phones — fluid shrink
   instead of stacking (shared by every wd-hero location/service hero). */
@media (max-width: 480px) {
  .wd-hero__meta {
    flex-wrap: nowrap;
    white-space: nowrap;
    gap: 8px;
    font-size: clamp(8px, 2.3vw, 11px);
    letter-spacing: 0.05em;
  }
}

/* ============================================================
   Approach + form (merged section)
   Two-column grid on ≥880px (approach left, form right).
   Stacks below 880px with approach text on top.
   The outer .wd-craft block keeps its existing background +
   padding rules elsewhere in the file — this just adds the grid
   and form-column styling on top.
   ============================================================ */
.wd-craft__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(40px, 6vw, 80px);
  align-items: start;
}

@media (min-width: 880px) {
  .wd-craft__grid {
    grid-template-columns: 1fr 1fr;
    gap: clamp(48px, 6vw, 96px);
  }
}

.wd-craft__form {
  /* Form column — dark anchor surface for two-tone editorial +
     interactive rhythm (cream section + cream editorial column +
     dark form column). FF interactives inherit the canonical
     dark-form treatment via additive :is() scope expansion below
     (third container alongside .form-container + .contact-form__container). */
  background: var(--brb-anchor);
  border-radius: 8px;
  padding: clamp(28px, 3.5vw, 44px);
}

.wd-craft__form-title {
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: clamp(1.5rem, 2.4vw, 1.875rem);
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--brb-text-on-dark);
  margin: 0 0 12px;
}

.wd-craft__form-title em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-craft__form-sub {
  font-family: var(--brb-font-body);
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--brb-text-on-dark-subtle);
  margin: 0 0 24px;
}

/* ============================================================
   Philosophy section
   ============================================================ */
.wd-philosophy {
  background: var(--brb-surface);
  padding: var(--brb-section-pad) 0;
  border-bottom: 1px solid var(--brb-border);
}

.wd-philosophy__grid {
  display: grid;
  grid-template-columns: 1fr 1.5fr;
  gap: clamp(40px, 6vw, 96px);
  max-width: 1100px;
  margin: 0 auto;
  align-items: start;
}

@media (max-width: 900px) {
  .wd-philosophy__grid { grid-template-columns: 1fr; gap: 32px; }
}

.wd-philosophy__head .eyebrow {
  margin-bottom: 16px;
  display: inline-block;
}

.wd-philosophy__title {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4vw, 48px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  color: var(--brb-text);
}

.wd-philosophy__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-philosophy__body {
  font-size: 17px;
  line-height: 1.7;
  color: var(--brb-text-muted);
}

.wd-philosophy__body p {
  margin: 0 0 20px 0;
}

.wd-philosophy__body p:last-child { margin-bottom: 0; }

.wd-philosophy__body em {
  font-style: italic;
  color: var(--brb-text);
  font-weight: 400;
}

/* ============================================================
   Platforms / Services breakdown section
   ============================================================ */
.wd-platforms {
  padding: var(--brb-section-pad) 0;
  background: var(--brb-surface);
}

.wd-platforms__head {
  max-width: 680px;
  margin: 0 auto clamp(40px, 5vw, 64px);
  text-align: center;
}

.wd-platforms__head .eyebrow {
  margin-bottom: 16px;
  display: inline-block;
}

.wd-platforms__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  color: var(--brb-text);
}

.wd-platforms__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-platforms__intro {
  font-size: clamp(16px, 1.4vw, 19px);
  line-height: 1.55;
  color: var(--brb-text-muted);
  margin-top: clamp(16px, 1.6vw, 24px);
}

.wd-platforms__grid {
  /* 2-up at desktop (≥640px) — the previous 4-up layout
     (1.5fr 1fr 1fr 1fr) rendered cards 2 and 3 at ~239px on a
     1280px viewport, which squeezed the location-service template's
     content-heavy bodies (16–28-word paragraphs + 4-item bullet
     lists) into 13+ wrapped lines and broke bullet text mid-word.
     2-up gives ~562px per card at 1280px — comfortable reading
     width for the same content. /paid-advertising/ and /seo/
     (which also use this grid via .platform-card) benefit too;
     their hero variant loses layout-driven width emphasis but
     keeps its styling differentiation. */
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: clamp(20px, 2.5vw, 32px);
  row-gap: clamp(48px, 5vw, 80px);
  max-width: 1200px;
  margin: 0 auto;
  /* align-items: start (added v1.34.7) prevents the grid from
     stretching cells in the same row to match the tallest card.
     Each card sits at its natural content height — Card 02 with
     a 52-word body no longer inflates Card 01's row, and the lead
     card no longer leaves empty cream space below its row partner.
     Defensive against the OPPOSITE failure mode of the v1.34.7
     grid-row removal too: if a future card ends up much heavier
     than its partner, the partner doesn't get padded. */
  align-items: start;
}

@media (max-width: 640px) {
  .wd-platforms__grid { grid-template-columns: 1fr; }
  .platform-card--hero { grid-column: auto; }
}

.platform-card {
  background: #FFFFFF;
  border: 1px solid var(--brb-border);
  border-radius: 12px;
  padding: 32px 28px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  transition: transform 300ms var(--brb-ease),
              box-shadow 300ms var(--brb-ease),
              border-color 300ms var(--brb-ease);
}

.platform-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 20px 40px -15px rgba(26, 26, 26, 0.12);
  border-color: rgba(217, 119, 6, 0.3);
}

.platform-card--hero {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  border-color: var(--brb-anchor);
  position: relative;
  overflow: hidden;
}

.platform-card--hero::before {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  width: 100%;
  height: 100%;
  background: radial-gradient(ellipse at top right, rgba(217, 119, 6, 0.08), transparent 60%);
  pointer-events: none;
}

.platform-card__rank {
  font-family: var(--brb-font-display);
  font-size: 14px;
  font-weight: 400;
  color: var(--brb-accent);
  letter-spacing: 0.05em;
  font-variant-numeric: tabular-nums;
}

.platform-card__badge {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 4px;
  background: var(--brb-accent);
  color: #FFFFFF;
  width: fit-content;
}

.platform-card__name {
  font-family: var(--brb-font-display);
  font-size: 24px;
  font-weight: 400;
  color: inherit;
  letter-spacing: -0.02em;
  line-height: 1.2;
  margin: 0;
  position: relative;
}

.platform-card--hero .platform-card__name {
  font-size: 28px;
  color: var(--brb-text-on-dark);
}

.platform-card__desc {
  font-size: 14px;
  line-height: 1.65;
  color: var(--brb-text-muted);
  margin: 0;
  position: relative;
}

.platform-card--hero .platform-card__desc {
  color: var(--brb-text-on-dark-muted);
  font-size: 15px;
}

.platform-card__features {
  list-style: none;
  padding: 0;
  margin: 8px 0 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
  position: relative;
}

.platform-card__features li {
  font-size: 13px;
  line-height: 1.5;
  color: var(--brb-text-on-dark-muted);
  padding-left: 20px;
  position: relative;
}

.platform-card__features li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 8px;
  width: 10px;
  height: 1px;
  background: var(--brb-accent);
}

/* ============================================================
   Industries section
   ============================================================ */
.wd-industries:has(.industry-item) {
  padding: clamp(60px, 8vw, 100px) 0;
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
}

.wd-industries:has(.industry-item) .wd-industries__head {
  max-width: 720px;
  margin: 0 auto clamp(40px, 5vw, 64px);
  text-align: center;
}

.wd-industries:has(.industry-item) .wd-industries__head .eyebrow {
  margin-bottom: 16px;
  display: inline-block;
}

.wd-industries:has(.industry-item) .wd-industries__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
}

.wd-industries:has(.industry-item) .wd-industries__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-industries__grid:has(.industry-item) {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: clamp(12px, 1.5vw, 20px);
  max-width: 1200px;
  margin: 0 auto;
}

@media (max-width: 1100px) {
  .wd-industries__grid:has(.industry-item) { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 720px) {
  .wd-industries__grid:has(.industry-item) { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 480px) {
  .wd-industries__grid:has(.industry-item) { grid-template-columns: 1fr; }
}

.industry-item {
  background: rgba(250, 247, 242, 0.03);
  border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 10px;
  padding: 24px 20px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  transition: background 300ms var(--brb-ease),
              border-color 300ms var(--brb-ease),
              transform 300ms var(--brb-ease);
}

.industry-item:hover {
  background: rgba(250, 247, 242, 0.05);
  border-color: rgba(217, 119, 6, 0.3);
  transform: translateY(-2px);
}

.industry-item__num {
  font-family: var(--brb-font-display);
  font-size: 12px;
  font-weight: 400;
  color: var(--brb-accent);
  letter-spacing: 0.05em;
  font-variant-numeric: tabular-nums;
}

.industry-item__name {
  font-family: var(--brb-font-display);
  font-size: 17px;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  letter-spacing: -0.01em;
  line-height: 1.3;
}

.industry-item__desc {
  font-size: 13px;
  line-height: 1.5;
  color: var(--brb-text-on-dark-muted);
}

/* ============================================================
   Principles section
   ============================================================ */
.wd-principles {
  padding: var(--brb-section-pad) 0;
  background: var(--brb-surface);
  border-top: 1px solid var(--brb-border);
}

.wd-principles__head {
  max-width: 680px;
  margin: 0 auto clamp(40px, 5vw, 64px);
  text-align: center;
}

.wd-principles__head .eyebrow {
  margin-bottom: 16px;
  display: inline-block;
}

.wd-principles__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  color: var(--brb-text);
}

.wd-principles__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-principles__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(16px, 2vw, 28px);
  max-width: 1200px;
  margin: 0 auto;
}

@media (max-width: 900px) {
  .wd-principles__grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 520px) {
  .wd-principles__grid { grid-template-columns: 1fr; }
}

.principle {
  background: #FFFFFF;
  border: 1px solid var(--brb-border);
  border-radius: 12px;
  padding: 32px 28px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  transition: transform 300ms var(--brb-ease),
              box-shadow 300ms var(--brb-ease),
              border-color 300ms var(--brb-ease);
}

.principle:hover {
  transform: translateY(-4px);
  box-shadow: 0 20px 40px -15px rgba(26, 26, 26, 0.1);
  border-color: rgba(217, 119, 6, 0.3);
}

.principle__icon {
  font-size: 24px;
  color: var(--brb-accent);
  line-height: 1;
  font-family: var(--brb-font-display);
}

.principle__title {
  font-family: var(--brb-font-display);
  font-size: 20px;
  font-weight: 400;
  color: var(--brb-text);
  line-height: 1.2;
  letter-spacing: -0.01em;
  margin: 0;
}

.principle__body {
  font-size: 14px;
  line-height: 1.65;
  color: var(--brb-text-muted);
  margin: 0;
}

/* ============================================================
   Proof strip
   ============================================================ */
.wd-proof.wd-proof--dark,
.wd-proof:has(.wd-proof__stat) {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(48px, 6vw, 80px) 0;
  border-top: 1px solid rgba(250, 247, 242, 0.06);
}

.wd-proof.wd-proof--dark .wd-proof__inner,
.wd-proof:has(.wd-proof__stat) .wd-proof__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(16px, 3vw, 48px);
  flex-wrap: wrap;
  max-width: 1100px;
  margin: 0 auto;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 1000ms var(--brb-ease-entrance), transform 1000ms var(--brb-ease-entrance);
}

.wd-proof.wd-proof--dark .wd-proof__inner.is-visible,
.wd-proof:has(.wd-proof__stat) .wd-proof__inner.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.wd-proof--dark .wd-proof__stat,
.wd-proof:has(.wd-proof__stat) .wd-proof__stat {
  flex: 1;
  min-width: 140px;
  text-align: center;
}

.wd-proof--dark .wd-proof__value,
.wd-proof:has(.wd-proof__stat) .wd-proof__value {
  font-family: var(--brb-font-display);
  font-size: clamp(40px, 5vw, 64px);
  font-weight: 400;
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--brb-text-on-dark);
  margin-bottom: 10px;
  font-variant-numeric: tabular-nums;
}

.wd-proof--dark .wd-proof__label,
.wd-proof:has(.wd-proof__stat) .wd-proof__label {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  font-weight: 500;
}

.wd-proof--dark .wd-proof__divider,
.wd-proof:has(.wd-proof__stat) .wd-proof__divider {
  width: 1px;
  height: 56px;
  background: rgba(250, 247, 242, 0.1);
}

@media (max-width: 720px) {
  .wd-proof__divider { display: none; }
  .wd-proof__stat { min-width: 45%; }
}

/* ============================================================
   Final CTA
   ============================================================ */
.wd-final.wd-final--dark,
.wd-final:has(.wd-final__ctas) {
  padding: clamp(60px, 8vw, 100px) 0;
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  text-align: center;
}

.wd-final.wd-final--dark .wd-final__inner .eyebrow,
.wd-final:has(.wd-final__ctas) .wd-final__inner .eyebrow {
  margin-bottom: 16px;
  display: inline-block;
}

.wd-final.wd-final--dark .wd-final__title,
.wd-final:has(.wd-final__ctas) .wd-final__title {
  font-family: var(--brb-font-display);
  font-size: clamp(40px, 5.5vw, 72px);
  line-height: 1.05;
  letter-spacing: -0.03em;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  margin-bottom: 28px;
  max-width: 20ch;
  margin-left: auto;
  margin-right: auto;
}

.wd-final.wd-final--dark .wd-final__title em,
.wd-final:has(.wd-final__ctas) .wd-final__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-final.wd-final--dark .wd-final__body,
.wd-final:has(.wd-final__ctas) .wd-final__body {
  font-size: 17px;
  line-height: 1.65;
  color: var(--brb-text-on-dark-muted);
  margin: 0 auto 36px;
  max-width: 56ch;
}

.wd-final__ctas {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  margin-bottom: 28px;
}

.wd-final__contact {
  font-size: 14px;
  color: var(--brb-text-on-dark-muted);
  letter-spacing: 0.02em;
}

.wd-final__contact a {
  color: var(--brb-text-on-dark);
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 1px;
  transition: color 200ms var(--brb-ease);
}

.wd-final__contact a:hover {
  color: var(--brb-accent);
}


/* ============================================================
   Service hero — two-column with visual on the right
   Scoped to only apply when the hero uses the new split layout
   (i.e. when wd-hero__content is present). The Web Design page
   uses the original full-width hero and is unaffected.
   ============================================================ */
.wd-hero__inner:has(.wd-hero__content) {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: clamp(40px, 6vw, 96px);
  align-items: center;
  max-width: 1280px;
  margin-inline: auto;
}

@media (max-width: 960px) {
  .wd-hero__inner:has(.wd-hero__content) {
    grid-template-columns: 1fr;
    gap: 56px;
  }
}

.wd-hero__content {
  max-width: 640px;
}

.wd-hero__visual {
  position: relative;
  width: 100%;
  opacity: 0;
  transform: translateY(30px) scale(0.96);
  animation: wd-hero-visual-in 1200ms var(--brb-ease-entrance) 700ms forwards;
}

@keyframes wd-hero-visual-in {
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@media (max-width: 960px) {
  .wd-hero__visual {
    max-width: 440px;
    margin: 0 auto;
  }
}

/* ==========================================================
   SEO hero visual — mini ranking cards
   ========================================================== */
.seo-hero-viz {
  position: relative;
  padding: 28px;
  background: rgba(250, 247, 242, 0.03);
  border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 14px;
  box-shadow:
    0 30px 60px -15px rgba(0, 0, 0, 0.4),
    0 15px 30px -10px rgba(0, 0, 0, 0.25);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.seo-hero-viz::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 14px;
  background: radial-gradient(ellipse at top right, rgba(217, 119, 6, 0.1), transparent 70%);
  pointer-events: none;
}

.seo-hero-viz__query {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: rgba(255, 255, 255, 0.05);
  border-radius: 24px;
  margin-bottom: 18px;
  position: relative;
}

.seo-hero-viz__query-icon {
  width: 14px;
  height: 14px;
  border: 1.5px solid var(--brb-text-on-dark-muted);
  border-radius: 50%;
  position: relative;
  flex-shrink: 0;
}

.seo-hero-viz__query-icon::after {
  content: '';
  position: absolute;
  right: -5px;
  bottom: -5px;
  width: 8px;
  height: 2px;
  background: var(--brb-text-on-dark-muted);
  transform: rotate(45deg);
}

.seo-hero-viz__query-text {
  font-family: Arial, sans-serif;
  font-size: 13px;
  color: var(--brb-text-on-dark-muted);
}

.seo-hero-viz__results {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.seo-hero-result {
  padding: 12px 14px;
  background: rgba(250, 247, 242, 0.04);
  border-radius: 8px;
  border: 1px solid transparent;
  position: relative;
  animation: seo-hero-result-in 600ms var(--brb-ease-entrance) backwards;
}

.seo-hero-result:nth-child(1) { animation-delay: 1000ms; }
.seo-hero-result:nth-child(2) { animation-delay: 1200ms; }
.seo-hero-result:nth-child(3) { animation-delay: 1400ms; }

@keyframes seo-hero-result-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

.seo-hero-result--featured {
  background: rgba(217, 119, 6, 0.12);
  border-color: rgba(217, 119, 6, 0.4);
  animation: seo-hero-result-in 600ms var(--brb-ease-entrance) 1000ms backwards,
             seo-hero-glow 3s ease-in-out 1800ms infinite;
}

@keyframes seo-hero-glow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(217, 119, 6, 0); }
  50%      { box-shadow: 0 0 0 4px rgba(217, 119, 6, 0.12); }
}

.seo-hero-result__rank {
  position: absolute;
  top: 10px;
  right: 12px;
  font-family: var(--brb-font-display);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--brb-accent);
  display: flex;
  align-items: center;
  gap: 4px;
}

.seo-hero-result__rank--muted {
  color: var(--brb-text-on-dark-subtle);
}

.seo-hero-result__url {
  font-size: 11px;
  color: var(--brb-text-on-dark-muted);
  margin-bottom: 3px;
}

.seo-hero-result--featured .seo-hero-result__url {
  color: var(--brb-accent);
  font-weight: 500;
}

.seo-hero-result__title {
  font-family: Arial, sans-serif;
  font-size: 13px;
  color: #B4C8FF;
  font-weight: 400;
  line-height: 1.35;
  margin: 0;
}

.seo-hero-result--featured .seo-hero-result__title {
  color: #D8E3FF;
}

.seo-hero-viz__badge {
  position: absolute;
  top: -12px;
  right: 20px;
  background: var(--brb-accent);
  color: #FFFFFF;
  font-family: var(--brb-font-body);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 6px 12px;
  border-radius: 4px;
  box-shadow: 0 4px 12px rgba(217, 119, 6, 0.35);
  animation: seo-hero-badge-in 700ms var(--brb-ease-entrance) 1600ms backwards;
}

@keyframes seo-hero-badge-in {
  from { opacity: 0; transform: translateY(-8px) scale(0.9); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* ==========================================================
   Paid Ads hero visual — ROAS growth chart
   ========================================================== */
.ads-hero-viz {
  position: relative;
  padding: 28px;
  background: rgba(250, 247, 242, 0.03);
  border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 14px;
  box-shadow:
    0 30px 60px -15px rgba(0, 0, 0, 0.4),
    0 15px 30px -10px rgba(0, 0, 0, 0.25);
}

.ads-hero-viz::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 14px;
  background: radial-gradient(ellipse at bottom right, rgba(217, 119, 6, 0.12), transparent 70%);
  pointer-events: none;
}

.ads-hero-viz__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 18px;
}

.ads-hero-viz__label {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 8px;
}

.ads-hero-viz__label-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #7ACC8F;
  animation: ads-hero-dot-pulse 2s ease-in-out infinite;
}

@keyframes ads-hero-dot-pulse {
  0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(122, 204, 143, 0.4); }
  50%      { opacity: 0.7; box-shadow: 0 0 0 5px rgba(122, 204, 143, 0); }
}

.ads-hero-viz__roas {
  text-align: right;
}

.ads-hero-viz__roas-value {
  font-family: var(--brb-font-display);
  font-size: 32px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--brb-accent);
  font-variant-numeric: tabular-nums;
  animation: ads-hero-roas-in 800ms var(--brb-ease-entrance) 1600ms backwards;
}

@keyframes ads-hero-roas-in {
  from { opacity: 0; transform: scale(0.85); }
  to   { opacity: 1; transform: scale(1); }
}

.ads-hero-viz__roas-label {
  font-size: 9px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  margin-top: 4px;
  font-weight: 500;
}

.ads-hero-viz__chart {
  position: relative;
  height: 120px;
  margin: 8px 0 16px;
}

.ads-hero-viz__chart-svg {
  width: 100%;
  height: 100%;
  overflow: visible;
}

.ads-hero-viz__chart-grid {
  stroke: rgba(250, 247, 242, 0.06);
  stroke-width: 1;
  stroke-dasharray: 2 4;
}

.ads-hero-viz__chart-area {
  fill: rgba(217, 119, 6, 0.15);
  opacity: 0;
  animation: ads-hero-area-in 1200ms var(--brb-ease-entrance) 1200ms forwards;
}

@keyframes ads-hero-area-in {
  to { opacity: 1; }
}

.ads-hero-viz__chart-line-revenue {
  fill: none;
  stroke: var(--brb-accent);
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 400;
  stroke-dashoffset: 400;
  animation: ads-hero-line-draw 1800ms var(--brb-ease-entrance) 1000ms forwards;
  filter: drop-shadow(0 2px 4px rgba(217, 119, 6, 0.3));
}

.ads-hero-viz__chart-line-spend {
  fill: none;
  stroke: rgba(138, 138, 138, 0.7);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-dasharray: 400;
  stroke-dashoffset: 400;
  animation: ads-hero-line-draw 1800ms var(--brb-ease-entrance) 1200ms forwards;
}

@keyframes ads-hero-line-draw {
  to { stroke-dashoffset: 0; }
}

.ads-hero-viz__chart-endpoint {
  fill: var(--brb-accent);
  r: 5;
  opacity: 0;
  animation: ads-hero-endpoint-in 600ms var(--brb-ease-entrance) 2600ms forwards;
}

@keyframes ads-hero-endpoint-in {
  to { opacity: 1; }
}

.ads-hero-viz__stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  padding-top: 14px;
  border-top: 1px solid rgba(250, 247, 242, 0.06);
}

.ads-hero-viz__stat {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.ads-hero-viz__stat-label {
  font-size: 9px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  font-weight: 500;
}

.ads-hero-viz__stat-value {
  font-family: var(--brb-font-display);
  font-size: 18px;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}

.ads-hero-viz__stat-value--up {
  color: #7ACC8F;
}

.ads-hero-viz__legend {
  display: flex;
  gap: 14px;
  font-size: 10px;
  color: var(--brb-text-on-dark-muted);
  margin-top: 8px;
}

.ads-hero-viz__legend-item {
  display: flex;
  align-items: center;
  gap: 6px;
  letter-spacing: 0.05em;
}

.ads-hero-viz__legend-dot {
  width: 8px;
  height: 2px;
  border-radius: 1px;
}

.ads-hero-viz__legend-dot--revenue { background: var(--brb-accent); }
.ads-hero-viz__legend-dot--spend { background: rgba(138, 138, 138, 0.7); }


/* ============================================================
   Service hero — headline sizing adjustment for two-column
   The Web Design page uses the hero full-width; SEO and Paid Ads
   use the two-column split layout, which needs a slightly smaller
   headline to fit the narrower content column.
   ============================================================ */
.wd-hero__content .wd-hero__headline {
  font-size: clamp(40px, 5.5vw, 64px);
  margin-bottom: clamp(24px, 3vw, 36px);
}

.wd-hero__content .wd-hero__body {
  font-size: clamp(16px, 1.3vw, 18px);
  margin: 0 0 clamp(24px, 3vw, 36px);
}

.wd-hero__content .wd-hero__ctas {
  margin-bottom: clamp(24px, 3vw, 36px);
}

/* ============================================================
   Audit page · Hero — two-column with Trailhead PDF cover visual
   ============================================================ */
.audit-hero__inner {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: clamp(40px, 6vw, 88px);
  align-items: center;
  max-width: 1240px;
  margin-inline: auto;
}

@media (max-width: 960px) {
  .audit-hero__inner {
    grid-template-columns: 1fr;
    gap: 56px;
  }
}

.audit-hero__content {
  max-width: 620px;
}

.audit-hero__visual {
  position: relative;
  width: 100%;
  opacity: 0;
  transform: translateY(30px) scale(0.96);
  animation: audit-hero-visual-in 1100ms var(--brb-ease-entrance) 500ms forwards;
}

@keyframes audit-hero-visual-in {
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

/* Trailhead PDF cover mock — pixel-targets the canonical Worker
   M2 PDF cover design. Score 73 is hardcoded in the markup; this
   only handles layout and typography.

   Aspect ratio is deliberately preserved on mobile per the
   strategy-audit copy lock: the 8.5:11 print proportion signals
   "this is the actual PDF you'll get back" and shrinking below
   that defeats the dual-path hero's visual hook. On a 375px
   viewport that produces a ~440px-tall card — acceptable
   tradeoff for the visual integrity. */
.trailhead-cover {
  position: relative;
  background: var(--brb-surface);
  border-radius: 6px;
  padding: 36px 36px 0;
  box-shadow:
    0 24px 60px rgba(26, 26, 26, 0.18),
    0 6px 18px rgba(26, 26, 26, 0.08);
  overflow: hidden;
  aspect-ratio: 8.5 / 11;
  max-width: 420px;
  margin-left: auto;
  font-family: var(--brb-font-body);
  color: var(--brb-text);
}

@media (max-width: 960px) {
  .trailhead-cover { margin: 0 auto; }
}

.trailhead-cover__brand {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
  margin-bottom: 0.4in;
}

.trailhead-cover__brand-tail {
  color: var(--brb-accent);
  font-style: italic;
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
}

.trailhead-cover__divider {
  width: 60px;
  height: 2px;
  background: var(--brb-accent);
  margin-bottom: 0.4in;
}

.trailhead-cover__lede {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brb-text-subtle);
  margin-bottom: 8pt;
}

.trailhead-cover__domain {
  font-family: var(--brb-font-display);
  font-size: 36px;
  font-weight: 400;
  line-height: 1.1;
  color: var(--brb-text);
  margin-bottom: 12pt;
}

.trailhead-cover__date {
  font-size: 11px;
  color: var(--brb-text-muted);
}

.trailhead-cover__score-block {
  position: absolute;
  left: 36px;
  right: 36px;
  bottom: 1.2in;
  display: flex;
  align-items: baseline;
  gap: 18px;
}

.trailhead-cover__score {
  font-family: var(--brb-font-display);
  font-size: 130px;
  font-weight: 400;
  line-height: 0.9;
  letter-spacing: -0.04em;
  color: var(--brb-accent);
}

.trailhead-cover__score-meta {
  font-size: 11px;
  color: var(--brb-text-muted);
  letter-spacing: 0.02em;
}

.trailhead-cover__strip {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 0.4in;
  background: var(--brb-accent);
}


/* ============================================================
   Web Design page · "See the tool" CTA card
   Replaces the inline Trailhead form previously hosted on
   page-web-design.php Section 02. Single anchor link to
   /free-strategy-audit/#trailhead — no widget, no Turnstile.
   ============================================================ */
.wd-audit-cta {
  background: var(--brb-surface);
  padding: 64px 0 var(--brb-section-pad);
  position: relative;
  border-top: 1px solid var(--brb-border);
}

.wd-audit-cta__inner {
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
}

.wd-audit-cta__head {
  margin-bottom: 36px;
}

.wd-audit-cta__head .eyebrow {
  display: inline-block;
  margin-bottom: 20px;
}

.wd-audit-cta__headline {
  font-family: var(--brb-font-display);
  font-size: clamp(28px, 3.6vw, 46px);
  font-weight: 400;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--brb-text);
  margin: 0 0 20px;
}

.wd-audit-cta__headline em {
  font-style: italic;
  color: var(--brb-accent);
}

.wd-audit-cta__sub {
  font-family: var(--brb-font-body);
  font-size: clamp(16px, 1.4vw, 18px);
  line-height: 1.55;
  color: var(--brb-text-muted);
  max-width: 620px;
  margin: 0 auto;
}

.wd-audit-cta__action {
  margin: 32px 0 0;
  text-align: center;
}


/* ============================================================
   Scroll-to-top button — sitewide
   ============================================================ */
.scroll-top {
  position: fixed;
  bottom: 28px;
  right: 28px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  border: 1px solid var(--brb-accent);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: opacity 300ms var(--brb-ease),
              visibility 300ms var(--brb-ease),
              transform 300ms var(--brb-ease),
              background 200ms var(--brb-ease);
  z-index: 90;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
  font-family: var(--brb-font-body);
  padding: 0;
  -webkit-tap-highlight-color: transparent;
}

.scroll-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.scroll-top:hover {
  background: var(--brb-accent);
  color: var(--brb-anchor);
  transform: translateY(-2px);
}

.scroll-top svg {
  width: 19px;
  height: 19px;
  transition: transform 200ms var(--brb-ease);
}

.scroll-top:hover svg {
  transform: translateY(-1px);
}

/* Growth-chart "scroll to top" — the rising trend line redraws on hover
   (a small nod to the marketing the site sells). The arrowhead is the
   up-affordance; the line is the chart. */
.scroll-top__line {
  stroke-dasharray: 24;
  stroke-dashoffset: 0;
}
.scroll-top:hover .scroll-top__line {
  animation: brb-scroll-top-draw 650ms var(--brb-ease);
}
@keyframes brb-scroll-top-draw {
  from { stroke-dashoffset: 24; }
  to   { stroke-dashoffset: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .scroll-top:hover .scroll-top__line { animation: none; }
}

@media (max-width: 600px) {
  .scroll-top {
    bottom: 20px;
    right: 20px;
    width: 40px;
    height: 40px;
  }
}


/* ============================================================
   Homepage hero — split layout with composite visual on right
   Proportions match .wd-hero--has-visual on service pages so the
   text/visual balance feels consistent across the site.
   ============================================================ */
.hero__inner--split {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: clamp(40px, 6vw, 80px);
  align-items: center;
  max-width: 1280px;
  margin-inline: auto;
}

@media (max-width: 1000px) {
  .hero__inner--split {
    grid-template-columns: 1fr;
    gap: 56px;
  }
}

.hero__content {
  max-width: 620px;
  position: relative;
  z-index: 2;
}

/* When the homepage hero has the split layout, use a smaller
   headline size than the full-width variant — so the text doesn't
   overpower the visual on the right. The cap is lower than the
   service page cap (48px vs 64px) because the homepage headline
   uses complete sentences per line, not short phrases. */
.hero__inner--split .hero__headline {
  font-size: clamp(32px, 4vw, 48px);
  max-width: 32ch;
  text-wrap: pretty;
}

.hero__inner--split .hero__subhead {
  max-width: 46ch;
}

.hero__visual {
  position: relative;
  width: 100%;
  height: 440px;
  opacity: 0;
  animation: hero-viz-in 1200ms var(--brb-ease-entrance) 700ms forwards;
}

@media (max-width: 1000px) {
  .hero__visual { height: 560px; max-width: 520px; margin: 0 auto; }
}

@keyframes hero-viz-in {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ============================================================
   HERO VIZ v2 — Two-card composition (site mockup + live dashboard)
   Homepage hero visual: website mockup behind, analytics dashboard in front.
   Legacy 3-card styles are preserved below as .hero-viz-legacy-* for reuse
   on service pages (Web Design / SEO / Paid Ads).
   ============================================================ */

.hero-viz-card {
  position: absolute;
  background: linear-gradient(165deg, #1F1F1F 0%, #151515 100%);
  border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 10px;
  box-shadow:
    0 20px 48px rgba(0, 0, 0, 0.32),
    0 0 0 1px rgba(217, 119, 6, 0.04) inset;
  color: var(--brb-surface);
  overflow: hidden;
  transition: transform 500ms var(--brb-ease),
              box-shadow 500ms var(--brb-ease);
}

.hero-viz-card--site      { animation: hero-viz-float-site 7s ease-in-out infinite; }
.hero-viz-card--dashboard { animation: hero-viz-float-dash 8s ease-in-out -3s infinite; }

@keyframes hero-viz-float-site {
  0%, 100% { transform: translate(0, 0) rotate(var(--r, -1.5deg)); }
  50%      { transform: translate(0, -6px) rotate(var(--r, -1.5deg)); }
}
@keyframes hero-viz-float-dash {
  0%, 100% { transform: translate(0, 0) rotate(var(--r, 2deg)); }
  50%      { transform: translate(0, -4px) rotate(var(--r, 2deg)); }
}

.hero__visual:hover .hero-viz-card {
  transition: transform 200ms var(--brb-ease),
              box-shadow 500ms var(--brb-ease);
}

/* ----- Card 1 — Website mockup (tilted left, back) ----- */
.hero-viz-card--site {
  --r: -1.5deg;
  transform: rotate(-1.5deg);
  top: 10px;
  left: 0;
  width: 62%;
  z-index: 1;
}

.hero__visual:hover .hero-viz-card--site {
  animation-play-state: paused;
  transform: rotate(-0.5deg) translateY(-4px)
             translate3d(calc(var(--mx, 0) * -8px), calc(var(--my, 0) * -8px), 0);
  box-shadow:
    0 28px 60px rgba(0, 0, 0, 0.38),
    0 0 0 1px rgba(217, 119, 6, 0.08) inset;
}

.site-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: #0F0F0F;
  border-bottom: 1px solid rgba(250, 247, 242, 0.06);
}
.site-bar__dots { display: flex; gap: 5px; }
.site-bar__dots span {
  width: 9px; height: 9px; border-radius: 50%;
  background: rgba(250, 247, 242, 0.15);
}
.site-bar__dots span:first-child   { background: rgba(217, 80, 80, 0.45); }
.site-bar__dots span:nth-child(2)  { background: rgba(217, 170, 80, 0.45); }
.site-bar__dots span:nth-child(3)  { background: rgba(80, 217, 130, 0.45); }
.site-bar__url {
  flex: 1;
  background: rgba(250, 247, 242, 0.05);
  border-radius: 4px;
  padding: 4px 10px;
  font-size: 11px;
  color: rgba(250, 247, 242, 0.55);
  font-family: var(--brb-font-body);
  display: flex;
  align-items: center;
  gap: 6px;
  min-height: 22px;
}
.site-bar__url::before {
  content: '';
  width: 9px; height: 9px;
  border: 1px solid currentColor;
  border-radius: 50%;
  opacity: 0.6;
  flex-shrink: 0;
}
.site-bar__url-text {
  overflow: hidden;
  white-space: nowrap;
}
.site-bar__cursor {
  display: inline-block;
  width: 1px;
  background: var(--brb-accent);
  height: 12px;
  vertical-align: middle;
  animation: site-cursor-blink 1s step-end infinite;
  margin-left: 1px;
}
@keyframes site-cursor-blink { 50% { opacity: 0; } }
.site-bar__url-text.is-done + .site-bar__cursor { display: none; }

.site-body {
  padding: 22px 22px 18px;
  background: linear-gradient(180deg, #1A1A1A 0%, #151515 100%);
}

.site-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 22px;
  opacity: 0;
  animation: site-el-in 500ms var(--brb-ease-entrance) 900ms forwards;
}
.site-nav__logo {
  width: 48px; height: 8px;
  background: var(--brb-surface);
  border-radius: 2px;
  opacity: 0.85;
}
.site-nav__links { display: flex; gap: 10px; }
.site-nav__links span {
  width: 28px; height: 5px;
  background: rgba(250, 247, 242, 0.25);
  border-radius: 2px;
}

.site-hero-section {
  padding-bottom: 16px;
  border-bottom: 1px solid rgba(250, 247, 242, 0.08);
  margin-bottom: 16px;
}
.site-hero-section__headline {
  font-family: 'Fraunces', serif;
  font-size: 14px;
  font-weight: 400;
  color: var(--brb-surface);
  line-height: 1.25;
  margin-bottom: 8px;
  letter-spacing: -0.01em;
  opacity: 0;
  animation: site-el-in 500ms var(--brb-ease-entrance) 1100ms forwards;
}
.site-hero-section__headline em {
  color: var(--brb-accent);
  font-style: italic;
}
.site-hero-section__sub {
  height: 4px;
  background: rgba(250, 247, 242, 0.2);
  border-radius: 2px;
  margin-bottom: 4px;
  width: 70%;
  opacity: 0;
  animation: site-el-in 500ms var(--brb-ease-entrance) 1250ms forwards;
}
.site-hero-section__sub.second {
  animation-delay: 1330ms;
  width: 50%;
  margin-bottom: 12px;
}
.site-hero-section__cta {
  display: inline-block;
  background: var(--brb-accent);
  color: var(--brb-surface);
  font-size: 9px;
  padding: 5px 10px;
  border-radius: 3px;
  letter-spacing: 0.04em;
  font-weight: 500;
  opacity: 0;
  transform: translateY(4px);
  animation: site-el-in 500ms var(--brb-ease-entrance) 1450ms forwards;
  transition: background 250ms var(--brb-ease),
              transform 250ms var(--brb-ease),
              box-shadow 250ms var(--brb-ease);
}
.hero-viz-card--site:hover .site-hero-section__cta {
  background: #E8842A;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(217, 119, 6, 0.4);
}

.site-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
}
.site-grid__cell {
  aspect-ratio: 1.2;
  background: rgba(250, 247, 242, 0.04);
  border: 1px solid rgba(250, 247, 242, 0.06);
  border-radius: 3px;
  padding: 6px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  opacity: 0;
  animation: site-el-in 500ms var(--brb-ease-entrance) forwards;
}
.site-grid__cell:nth-child(1) { animation-delay: 1600ms; }
.site-grid__cell:nth-child(2) { animation-delay: 1680ms; }
.site-grid__cell:nth-child(3) { animation-delay: 1760ms; }
.site-grid__cell-line {
  height: 3px;
  background: rgba(250, 247, 242, 0.25);
  border-radius: 1px;
  margin-bottom: 3px;
}
.site-grid__cell-line--short { width: 60%; }

@keyframes site-el-in {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ----- Card 2 — Analytics dashboard (tilted right, front, overlaps) ----- */
.hero-viz-card--dashboard {
  --r: 2deg;
  transform: rotate(2deg);
  top: 180px;
  right: 0;
  width: 58%;
  padding: 18px 20px;
  z-index: 2;
}

.hero__visual:hover .hero-viz-card--dashboard {
  animation-play-state: paused;
  transform: rotate(1deg) translateY(-6px)
             translate3d(calc(var(--mx, 0) * 8px), calc(var(--my, 0) * 8px), 0);
  box-shadow:
    0 28px 60px rgba(0, 0, 0, 0.4),
    0 0 0 1px rgba(217, 119, 6, 0.08) inset;
}

.dash-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 14px;
  opacity: 0;
  animation: site-el-in 500ms var(--brb-ease-entrance) 1000ms forwards;
}
.dash-head__eyebrow {
  font-size: 9px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(250, 247, 242, 0.5);
  margin-bottom: 4px;
}
.dash-head__title {
  font-family: 'Fraunces', serif;
  font-size: 15px;
  font-weight: 400;
  color: var(--brb-surface);
  letter-spacing: -0.005em;
}
.dash-head__title em {
  font-style: italic;
  color: var(--brb-accent);
}
.dash-head__live {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 9px;
  color: rgba(138, 211, 192, 0.85);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.dash-head__live::before {
  content: '';
  width: 6px; height: 6px;
  background: var(--brb-mint);
  border-radius: 50%;
  box-shadow: 0 0 6px var(--brb-mint);
  animation: dash-live-pulse 2s ease-in-out infinite;
}
@keyframes dash-live-pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.4; }
}

.dash-kpis {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 6px;
  margin-bottom: 14px;
}
.dash-kpi {
  padding: 8px 9px 9px;
  background: rgba(250, 247, 242, 0.03);
  border: 1px solid rgba(250, 247, 242, 0.06);
  border-radius: 5px;
  transition: background 250ms var(--brb-ease),
              border-color 250ms var(--brb-ease),
              transform 250ms var(--brb-ease);
  opacity: 0;
  animation: site-el-in 500ms var(--brb-ease-entrance) forwards;
}
.dash-kpi:nth-child(1) { animation-delay: 1150ms; }
.dash-kpi:nth-child(2) { animation-delay: 1230ms; }
.dash-kpi:nth-child(3) { animation-delay: 1310ms; }
.dash-kpi:hover {
  background: rgba(217, 119, 6, 0.08);
  border-color: rgba(217, 119, 6, 0.25);
  transform: translateY(-1px);
}
.dash-kpi__label {
  font-size: 8px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(250, 247, 242, 0.45);
  margin-bottom: 3px;
}
.dash-kpi__value {
  font-family: 'Fraunces', serif;
  font-size: 14px;
  font-weight: 500;
  color: var(--brb-surface);
  letter-spacing: -0.01em;
  line-height: 1;
}
.dash-kpi__delta {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  font-size: 8px;
  color: var(--brb-mint);
  margin-top: 3px;
  font-weight: 500;
}
.dash-kpi__delta::before { content: '↑'; font-size: 9px; }

.dash-chart {
  position: relative;
  height: 110px;
  margin-bottom: 8px;
  opacity: 0;
  animation: site-el-in 500ms var(--brb-ease-entrance) 1400ms forwards;
  cursor: crosshair;
}
.dash-chart svg {
  width: 100%;
  height: 100%;
  overflow: visible;
  display: block;
}
.dash-chart__grid {
  stroke: rgba(250, 247, 242, 0.06);
  stroke-width: 0.5;
  stroke-dasharray: 2 3;
}
.dash-chart__area {
  fill: url(#dashAreaGrad);
  opacity: 0;
  animation: dash-area-in 900ms var(--brb-ease-entrance) 1700ms forwards;
}
@keyframes dash-area-in { to { opacity: 1; } }
.dash-chart__line {
  fill: none;
  stroke: var(--brb-accent);
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 400;
  stroke-dashoffset: 400;
  animation: dash-line-draw 1600ms var(--brb-ease-entrance) 1500ms forwards;
  filter: drop-shadow(0 0 3px rgba(217, 119, 6, 0.3));
}
@keyframes dash-line-draw { to { stroke-dashoffset: 0; } }
.dash-chart__dot {
  fill: var(--brb-accent);
  opacity: 0;
  animation: dash-dot-in 300ms var(--brb-ease-entrance) forwards;
}
.dash-chart__dot:nth-child(1) { animation-delay: 1700ms; }
.dash-chart__dot:nth-child(2) { animation-delay: 1800ms; }
.dash-chart__dot:nth-child(3) { animation-delay: 1900ms; }
.dash-chart__dot:nth-child(4) { animation-delay: 2000ms; }
.dash-chart__dot:nth-child(5) { animation-delay: 2100ms; }
.dash-chart__dot:nth-child(6) { animation-delay: 2200ms; }
.dash-chart__dot:nth-child(7) { animation-delay: 2300ms; }
.dash-chart__dot--last {
  r: 4;
  fill: var(--brb-accent);
  filter: drop-shadow(0 0 6px var(--brb-accent));
  animation: dash-dot-in 300ms var(--brb-ease-entrance) 2300ms forwards,
             dash-dot-pulse 2.4s ease-in-out 2.6s infinite;
}
@keyframes dash-dot-in { to { opacity: 1; } }
@keyframes dash-dot-pulse {
  0%, 100% { transform: scale(1); filter: drop-shadow(0 0 6px var(--brb-accent)); }
  50%      { transform: scale(1.15); filter: drop-shadow(0 0 10px var(--brb-accent)); }
}
.dash-chart__cursor {
  stroke: rgba(217, 119, 6, 0.4);
  stroke-width: 1;
  stroke-dasharray: 2 3;
  opacity: 0;
  pointer-events: none;
  transition: opacity 200ms var(--brb-ease);
}
.dash-chart:hover .dash-chart__cursor { opacity: 1; }

.dash-chart__tooltip {
  position: absolute;
  top: -8px;
  background: rgba(250, 247, 242, 0.96);
  color: var(--brb-anchor);
  padding: 4px 8px;
  border-radius: 3px;
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.01em;
  pointer-events: none;
  opacity: 0;
  transform: translateX(-50%);
  transition: opacity 200ms var(--brb-ease);
  white-space: nowrap;
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
  z-index: 3;
}
.dash-chart__tooltip::after {
  content: '';
  position: absolute;
  bottom: -3px;
  left: 50%;
  transform: translateX(-50%) rotate(45deg);
  width: 6px; height: 6px;
  background: rgba(250, 247, 242, 0.96);
}
.dash-chart:hover .dash-chart__tooltip { opacity: 1; }

.dash-chart__xlabels {
  display: flex;
  justify-content: space-between;
  font-size: 8px;
  letter-spacing: 0.05em;
  color: rgba(250, 247, 242, 0.4);
  padding: 0 2px;
  opacity: 0;
  animation: site-el-in 500ms var(--brb-ease-entrance) 2500ms forwards;
}

.dash-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 10px;
  margin-top: 10px;
  border-top: 1px solid rgba(250, 247, 242, 0.06);
  font-size: 9px;
  color: rgba(250, 247, 242, 0.45);
  letter-spacing: 0.04em;
  opacity: 0;
  animation: site-el-in 500ms var(--brb-ease-entrance) 2600ms forwards;
}
.dash-foot__source {
  font-family: 'Fraunces', serif;
  font-style: italic;
}

/* Mobile: cards stack vertically with enough container height for both
   to render without overflowing, plus a bit of bottom breathing room
   before the next section. */
@media (max-width: 1000px) {
  .hero-viz-card--site      { width: 75%; top: 0;    left: 0; }
  .hero-viz-card--dashboard { width: 75%; top: 260px; right: 0; }
}
@media (max-width: 520px) {
  .hero__visual { height: 540px; }
  .hero-viz-card--site      { width: 82%; }
  .hero-viz-card--dashboard { width: 82%; top: 240px; }
}

@media (prefers-reduced-motion: reduce) {
  .hero-viz-card,
  .site-nav, .site-hero-section__headline,
  .site-hero-section__sub, .site-hero-section__cta, .site-grid__cell,
  .dash-head, .dash-kpi, .dash-chart, .dash-chart__area,
  .dash-chart__line, .dash-chart__dot, .dash-chart__dot--last,
  .dash-chart__xlabels, .dash-foot {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    stroke-dashoffset: 0 !important;
  }
}

/* ============================================================
   LEGACY HERO VIZ — preserved for reuse on service pages.
   (These classes originally powered the 3-card homepage hero;
    they now live on the Web Design / SEO / Paid Ads pages.)
   ============================================================ */
.hero-viz-legacy-card {
  position: absolute;
  background: linear-gradient(165deg, #1F1F1F 0%, #151515 100%);
  border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 8px;
  box-shadow:
    0 16px 40px rgba(0, 0, 0, 0.4),
    0 0 0 1px rgba(217, 119, 6, 0.03) inset;
  transition: transform 600ms var(--brb-ease);
  color: var(--brb-surface);
}
.hero-viz-legacy-card--float {
  animation: hero-viz-legacy-float 7s ease-in-out infinite;
}
@keyframes hero-viz-legacy-float {
  0%, 100% { transform: translateY(0) rotate(var(--r, 0deg)); }
  50%      { transform: translateY(-6px) rotate(var(--r, 0deg)); }
}

/* --- Legacy site mockup (used on Web Design page) --- */
.hero-viz-legacy-site {
  padding: 0;
  overflow: hidden;
}
.hero-viz-legacy-site__bar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  background: #0F0F0F;
  border-bottom: 1px solid rgba(250, 247, 242, 0.06);
}
.hero-viz-legacy-site__dots { display: flex; gap: 4px; }
.hero-viz-legacy-site__dots span {
  width: 8px; height: 8px; border-radius: 50%;
  background: rgba(250, 247, 242, 0.15);
}
.hero-viz-legacy-site__url {
  flex: 1;
  background: rgba(250, 247, 242, 0.05);
  border-radius: 3px;
  padding: 3px 8px;
  font-size: 11px;
  color: rgba(250, 247, 242, 0.55);
  font-family: var(--brb-font-body);
}
.hero-viz-legacy-site__body {
  padding: 22px 22px 24px;
  background: linear-gradient(180deg, #1A1A1A 0%, #151515 100%);
}
.hero-viz-legacy-site__logo {
  width: 60px; height: 10px;
  background: var(--brb-surface);
  border-radius: 2px;
  margin-bottom: 18px;
  opacity: 0.9;
}
.hero-viz-legacy-site__line {
  height: 6px;
  background: rgba(250, 247, 242, 0.15);
  border-radius: 2px;
  margin-bottom: 8px;
}
.hero-viz-legacy-site__line--long { width: 90%; }
.hero-viz-legacy-site__line--med  { width: 60%; }
.hero-viz-legacy-site__btn {
  width: 80px; height: 20px;
  background: var(--brb-accent);
  border-radius: 3px;
  margin-top: 12px;
}

/* --- Legacy metric tile (used on Paid Ads page) --- */
.hero-viz-legacy-metric {
  padding: 22px 24px;
  color: var(--brb-surface);
}
.hero-viz-legacy-metric__label {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(250, 247, 242, 0.55);
  margin-bottom: 8px;
}
.hero-viz-legacy-metric__value {
  font-family: 'Fraunces', serif;
  font-size: 44px;
  font-weight: 500;
  color: var(--brb-accent);
  letter-spacing: -0.02em;
  line-height: 1;
  margin-bottom: 12px;
}
.hero-viz-legacy-metric__spark {
  width: 100%;
  height: 30px;
  color: var(--brb-accent);
}
.hero-viz-legacy-metric__spark svg {
  width: 100%;
  height: 100%;
}
.hero-viz-legacy-metric__spark-path {
  opacity: 0.85;
}

/* --- Legacy SERP snippet (used on SEO page) --- */
.hero-viz-legacy-serp {
  padding: 16px 18px;
  color: var(--brb-surface);
}
.hero-viz-legacy-serp__tag {
  display: inline-block;
  font-size: 9px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--brb-mint);
  padding: 2px 8px;
  border: 1px solid rgba(138, 211, 192, 0.35);
  border-radius: 3px;
  margin-bottom: 10px;
}
.hero-viz-legacy-serp__site {
  font-size: 11px;
  color: rgba(250, 247, 242, 0.55);
  margin-bottom: 4px;
}
.hero-viz-legacy-serp__title {
  height: 10px;
  width: 75%;
  background: rgba(250, 247, 242, 0.2);
  border-radius: 2px;
  margin-bottom: 8px;
}
.hero-viz-legacy-serp__meta {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 10px;
  color: var(--brb-text-on-dark-muted);
}
.hero-viz-legacy-serp__stars {
  color: var(--brb-accent);
  letter-spacing: 1px;
}


/* ============================================================
   Web Design hero — composite visual on right
   ============================================================ */
.wd-hero--has-visual .wd-hero__inner {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: clamp(40px, 6vw, 80px);
  align-items: center;
  max-width: 1280px;
  margin-inline: auto;
}

@media (max-width: 1000px) {
  .wd-hero--has-visual .wd-hero__inner {
    grid-template-columns: 1fr;
    gap: 56px;
  }
}

/* Grid items default to `min-width: auto`, so this column refuses to
   shrink below its widest unbreakable child — the hero meta strip.
   Latent since the component shipped; /website-maintenance/ never hit
   it only because its meta labels are short. /ai-automation/'s longer
   labels blew the column to 437px inside a 375px viewport and clipped
   the hero body copy. min-width: 0 lets the column shrink and the
   strip wrap (it already carries flex-wrap). Measured at 375px:
   437.5px -> 327px, no horizontal overflow. Desktop is unaffected —
   the content fits its track there, so nothing changes. */
.wd-hero--has-visual .wd-hero__content { min-width: 0; }

.wd-hero--has-visual .wd-hero__eyebrow,
.wd-hero--has-visual .wd-hero__headline,
.wd-hero--has-visual .wd-hero__sub,
.wd-hero--has-visual .wd-hero__actions {
  grid-column: 1;
}

/* Slightly smaller headline when paired with a visual so it sits
   comfortably in the left column without blowing out on line 4 */
.wd-hero--has-visual .wd-hero__headline {
  font-size: clamp(36px, 5vw, 64px);
  max-width: 14ch;
}

.wd-hero--has-visual .wd-hero__sub {
  max-width: 46ch;
}

.wd-hero__visual--design {
  grid-column: 2;
  grid-row: 1 / span 4;
  position: relative;
  width: 100%;
  height: 400px;
  opacity: 0;
  animation: hero-viz-in 1200ms var(--brb-ease-entrance) 700ms forwards;
}

@media (max-width: 1000px) {
  .wd-hero__visual--design {
    grid-column: 1;
    grid-row: auto;
    height: 340px;
    max-width: 480px;
    margin: 0 auto;
  }
}

/* Desktop browser frame — primary */
.wd-hero-mock {
  position: relative;
  width: 100%;
  background: linear-gradient(165deg, #1F1F1F 0%, #151515 100%);
  border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 10px;
  box-shadow:
    0 24px 56px rgba(0, 0, 0, 0.5),
    0 0 0 1px rgba(217, 119, 6, 0.04) inset;
  overflow: hidden;
}

.wd-hero-mock__bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: rgba(250, 247, 242, 0.02);
  border-bottom: 1px solid rgba(250, 247, 242, 0.06);
}

.wd-hero-mock__dots {
  display: flex;
  gap: 5px;
}

.wd-hero-mock__dots span {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(250, 247, 242, 0.15);
}

.wd-hero-mock__url {
  font-family: var(--brb-font-body);
  font-size: 10px;
  color: var(--brb-text-on-dark-subtle);
  letter-spacing: 0.02em;
}

/* Auto-rotating showcase of recent builds inside the browser frame
   (replaces the old CSS-skeleton canvas — real sites read stronger than
   a wireframe). Pure-CSS crossfade; the URL bar swaps in sync. Honors
   prefers-reduced-motion below. */
.wd-hero-mock__shot {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: #151515;
}

.wd-hero-mock__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  animation: wdHeroSlideshow 18s infinite;
}
.wd-hero-mock__shot .wd-hero-mock__slide:nth-child(2) { animation-delay: 6s; }
.wd-hero-mock__shot .wd-hero-mock__slide:nth-child(3) { animation-delay: 12s; }

.wd-hero-mock__slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
}

/* URL bar — one label per slide, stacked and crossfaded in sync. The
   base font/color is inherited from the .wd-hero-mock__url rule above. */
.wd-hero-mock__urls {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  height: 13px;
}
.wd-hero-mock__urls .wd-hero-mock__url {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  opacity: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  animation: wdHeroSlideshow 18s infinite;
}
.wd-hero-mock__urls .wd-hero-mock__url:nth-child(2) { animation-delay: 6s; }
.wd-hero-mock__urls .wd-hero-mock__url:nth-child(3) { animation-delay: 12s; }

@keyframes wdHeroSlideshow {
  0%, 28%  { opacity: 1; }
  33.333%  { opacity: 0; }
  94.667%  { opacity: 0; }
  100%     { opacity: 1; }
}

/* Slide indicator dots — bottom-center over the shot, active dot amber,
   synced to the same staggered timeline as the slides. */
.wd-hero-mock__nav {
  position: absolute;
  left: 50%;
  bottom: 10px;
  transform: translateX(-50%);
  display: flex;
  gap: 7px;
  padding: 5px 8px;
  border-radius: 999px;
  background: rgba(10, 10, 10, 0.4);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
  z-index: 2;
}
.wd-hero-mock__navdot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(250, 247, 242, 0.45);
  animation: wdHeroDot 18s infinite;
}
.wd-hero-mock__nav .wd-hero-mock__navdot:nth-child(2) { animation-delay: 6s; }
.wd-hero-mock__nav .wd-hero-mock__navdot:nth-child(3) { animation-delay: 12s; }

@keyframes wdHeroDot {
  0%, 28%  { background: var(--brb-accent); }
  33.333%  { background: rgba(250, 247, 242, 0.45); }
  94.667%  { background: rgba(250, 247, 242, 0.45); }
  100%     { background: var(--brb-accent); }
}

@media (prefers-reduced-motion: reduce) {
  .wd-hero-mock__slide,
  .wd-hero-mock__urls .wd-hero-mock__url,
  .wd-hero-mock__navdot { animation: none; }
  .wd-hero-mock__slide,
  .wd-hero-mock__urls .wd-hero-mock__url { opacity: 0; }
  .wd-hero-mock__slide:first-child,
  .wd-hero-mock__urls .wd-hero-mock__url:first-child { opacity: 1; }
  .wd-hero-mock__navdot:first-child { background: var(--brb-accent); }
}

/* Mobile mockup — overlapping right-bottom */
.wd-hero-phone {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 32%;
  aspect-ratio: 9 / 19;
  background: linear-gradient(165deg, #1F1F1F 0%, #151515 100%);
  border: 1px solid rgba(250, 247, 242, 0.1);
  border-radius: 20px;
  padding: 12px 8px;
  box-shadow: 0 24px 56px rgba(0, 0, 0, 0.55);
  animation: hero-viz-float 8s ease-in-out -2s infinite;
  --r: 3deg;
  transform: rotate(3deg);
}

.wd-hero-phone__notch {
  width: 40%;
  height: 4px;
  background: rgba(250, 247, 242, 0.15);
  border-radius: 2px;
  margin: 0 auto 14px;
}

.wd-hero-phone__header {
  height: 12px;
  background: linear-gradient(90deg, var(--brb-accent) 0%, rgba(217,119,6,0.3) 100%);
  border-radius: 2px;
  margin: 0 6px 10px;
}

.wd-hero-phone__body {
  padding: 0 6px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.wd-hero-phone__line {
  height: 4px;
  border-radius: 2px;
  background: rgba(250, 247, 242, 0.1);
}

.wd-hero-phone__line--short { width: 50%; }
.wd-hero-phone__line--med { width: 75%; }

.wd-hero-phone__card {
  height: 44px;
  background: rgba(250, 247, 242, 0.04);
  border: 1px solid rgba(250, 247, 242, 0.06);
  border-radius: 4px;
  margin: 6px 0;
}

.wd-hero-phone__btn {
  height: 14px;
  background: var(--brb-accent);
  border-radius: 3px;
  margin-top: 6px;
}


/* ============================================================
   Footer logo — clickable
   ============================================================ */
.footer-brand__logo-link {
  display: inline-block;
  text-decoration: none;
  color: inherit;
  margin-bottom: 12px;
  transition: opacity 200ms var(--brb-ease);
}

.footer-brand__logo-link:hover {
  opacity: 0.7;
}

.footer-brand__logo-link:hover .dot {
  color: var(--brb-accent);
}


/* ============================================================
   ============================================================
   INDUSTRIES PAGE
   Single-page editorial overview of the verticals BRB serves.
   Alternating-direction industry blocks with content + vignette.
   ============================================================
   ============================================================ */

/* ============================================================
   Industries · Hero
   ============================================================ */
.ind-hero {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding: clamp(80px, 10vw, 140px) 0 var(--brb-hero-to-next);
  position: relative;
  overflow: hidden;
}

.ind-hero__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background:
    radial-gradient(ellipse at 0% 0%, rgba(217, 119, 6, 0.10) 0%, transparent 55%),
    radial-gradient(ellipse at 100% 100%, rgba(139, 92, 246, 0.05) 0%, transparent 65%);
}

/* Orb divs kept in DOM for stability but hidden —
   amber glow is now a corner-anchored gradient on .ind-hero__bg */
.ind-hero__orb { display: none; }

.ind-hero__grid {
  /* Grid lines removed — kept the class for DOM stability, but it now renders nothing.
     If you ever want the grid back, restore the previous background-image rules. */
  display: none;
}

.ind-hero__inner {
  position: relative;
  z-index: 1;
  max-width: 880px;
  margin-inline: auto;
  text-align: center;
}

.ind-hero .eyebrow {
  margin-bottom: clamp(24px, 3vw, 36px);
  display: inline-block;
}

.ind-hero__headline {
  font-family: var(--brb-font-display);
  font-size: clamp(48px, 7vw, 100px);
  line-height: 1.02;
  letter-spacing: -0.03em;
  font-weight: 400;
  margin-bottom: clamp(24px, 3vw, 36px);
}

.ind-hero__headline .line {
  display: block;
  opacity: 0;
  transform: translateY(22px);
  animation: fadeUp 1000ms var(--brb-ease-entrance) forwards;
}

.ind-hero__headline .line:nth-child(1) { animation-delay: 200ms; }
.ind-hero__headline .line:nth-child(2) { animation-delay: 400ms; }

.ind-hero__headline em {
  font-style: italic;
  color: var(--brb-accent);
}

.ind-hero__headline .dot {
  color: var(--brb-accent);
  font-style: normal;
}

.ind-hero__sub {
  font-size: clamp(16px, 1.4vw, 19px);
  line-height: 1.65;
  color: var(--brb-text-muted);
  max-width: 60ch;
  margin: 0 auto clamp(40px, 5vw, 56px);
  opacity: 0;
  animation: fadeUp 1000ms var(--brb-ease-entrance) 650ms forwards;
}

/* Jump nav */
.ind-hero__jump {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: center;
  opacity: 0;
  animation: fadeUp 1000ms var(--brb-ease-entrance) 900ms forwards;
}

.ind-hero__jump a {
  display: inline-flex;
  align-items: center;
  padding: 10px 16px;
  font-family: var(--brb-font-body);
  font-size: 13px;
  font-weight: 500;
  color: var(--brb-text);
  background: #FFFFFF;
  border: 1px solid var(--brb-border);
  border-radius: 999px;
  letter-spacing: 0.01em;
  box-shadow: 0 1px 2px rgba(26, 26, 26, 0.04);
  transition: background 200ms var(--brb-ease),
              border-color 200ms var(--brb-ease),
              color 200ms var(--brb-ease);
}

.ind-hero__jump a:hover {
  background: rgba(217, 119, 6, 0.06);
  border-color: var(--brb-accent);
  color: var(--brb-text);
}

/* ============================================================
   Industries · Blocks (shared)
   Each industry block: two-column with content + vignette
   Alternating bg to create rhythm down the page.
   ============================================================ */
.industry-block {
  padding: clamp(72px, 10vw, 140px) 0;
  position: relative;
}

/* Alternating backgrounds for visual rhythm */
.industry-block--medical { background: var(--brb-surface); }
.industry-block--real-estate {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
}
.industry-block--wineries { background: var(--brb-surface); }
.industry-block--home-services {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
}
.industry-block--professional { background: var(--brb-surface); }

.industry-block__grid {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: clamp(40px, 6vw, 96px);
  align-items: center;
  max-width: 1200px;
  margin-inline: auto;
}

.industry-block__grid--reversed {
  grid-template-columns: 1fr 1.1fr;
}

.industry-block__grid--reversed .industry-block__content {
  grid-column: 2;
}

.industry-block__grid--reversed .industry-block__visual {
  grid-column: 1;
  grid-row: 1;
}

@media (max-width: 900px) {
  .industry-block__grid,
  .industry-block__grid--reversed {
    grid-template-columns: 1fr;
    gap: 48px;
  }
  .industry-block__grid--reversed .industry-block__content,
  .industry-block__grid--reversed .industry-block__visual {
    grid-column: 1;
    grid-row: auto;
  }
}

/* Block content */
.industry-block__label {
  font-family: var(--brb-font-body);
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--brb-accent);
  font-weight: 500;
  margin-bottom: 20px;
}

.industry-block__title {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4.5vw, 56px);
  line-height: 1.08;
  letter-spacing: -0.025em;
  font-weight: 400;
  margin-bottom: 28px;
  max-width: 16ch;
}

.industry-block--real-estate .industry-block__title,
.industry-block--home-services .industry-block__title {
  color: var(--brb-text-on-dark);
}

.industry-block__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.industry-block__body {
  font-size: 16px;
  line-height: 1.7;
  color: var(--brb-text-muted);
  margin-bottom: 20px;
  max-width: 56ch;
}

.industry-block--real-estate .industry-block__body,
.industry-block--home-services .industry-block__body {
  color: var(--brb-text-on-dark-muted);
}

/* Client list */
.industry-block__clients {
  margin-top: 28px;
  padding-top: 24px;
  border-top: 1px solid var(--brb-border);
}

.industry-block--real-estate .industry-block__clients,
.industry-block--home-services .industry-block__clients {
  border-top-color: rgba(250, 247, 242, 0.1);
}

.industry-block__clients-label {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
  font-weight: 500;
  margin-bottom: 10px;
}

.industry-block--real-estate .industry-block__clients-label,
.industry-block--home-services .industry-block__clients-label {
  color: var(--brb-text-on-dark-subtle);
}

.industry-block__clients-list {
  list-style: none;
  padding: 0;
  margin: 0;
  font-family: var(--brb-font-display);
  font-size: 16px;
  color: var(--brb-text);
  line-height: 1.5;
}

.industry-block--real-estate .industry-block__clients-list,
.industry-block--home-services .industry-block__clients-list {
  color: var(--brb-text-on-dark);
}

.industry-block__clients-list li {
  display: inline;
}

.industry-block__clients-list li::after {
  content: ' · ';
  color: var(--brb-accent);
  margin: 0 4px;
}

.industry-block__clients-list li:last-child::after {
  content: '';
  margin: 0;
}

/* Service chips */
.industry-block__services {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 24px;
}

.industry-block__service-chip {
  display: inline-flex;
  align-items: center;
  padding: 8px 14px;
  font-family: var(--brb-font-body);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.01em;
  color: var(--brb-text);
  background: transparent;
  border: 1px solid var(--brb-border-strong);
  border-radius: 999px;
  transition: background 200ms var(--brb-ease),
              border-color 200ms var(--brb-ease),
              color 200ms var(--brb-ease);
}

.industry-block--real-estate .industry-block__service-chip,
.industry-block--home-services .industry-block__service-chip {
  color: var(--brb-text-on-dark);
  border-color: rgba(250, 247, 242, 0.18);
}

.industry-block__service-chip:hover {
  background: var(--brb-accent);
  border-color: var(--brb-accent);
  color: var(--brb-anchor);
}

/* "Full {industry} marketing strategy" deep-link below the service chips */
.industry-block__deep-link {
  margin-top: 20px;
  font-family: var(--brb-font-body);
  font-size: 14px;
  font-weight: 500;
}
.industry-block__deep-link a {
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 1px;
  transition: color 200ms var(--brb-ease);
}
.industry-block__deep-link a:hover {
  color: var(--brb-accent);
}

/* Dark-context variant — real-estate + home-services blocks use --brb-anchor bg */
.industry-block--real-estate .industry-block__deep-link a,
.industry-block--home-services .industry-block__deep-link a {
  color: var(--brb-text-on-dark);
}

/* Vignette (right side visual) */
.industry-vignette {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 10px;
  padding: clamp(28px, 3vw, 40px);
  position: relative;
  overflow: hidden;
  box-shadow: 0 24px 56px rgba(0, 0, 0, 0.25);
}

.industry-block--real-estate .industry-vignette,
.industry-block--home-services .industry-vignette {
  background: var(--brb-surface);
  color: var(--brb-text);
  border-color: var(--brb-border-strong);
  box-shadow: 0 24px 56px rgba(0, 0, 0, 0.15);
}

/* Accent glow */
.industry-vignette::before {
  content: '';
  position: absolute;
  top: -30%;
  right: -20%;
  width: 60%;
  height: 60%;
  background: radial-gradient(circle, rgba(217, 119, 6, 0.12), transparent 70%);
  pointer-events: none;
}

.industry-vignette__head {
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid rgba(250, 247, 242, 0.08);
  position: relative;
}

.industry-block--real-estate .industry-vignette__head,
.industry-block--home-services .industry-vignette__head {
  border-bottom-color: var(--brb-border);
}

.industry-vignette__eyebrow {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--brb-accent);
  font-weight: 500;
}

.industry-vignette__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
  position: relative;
}

.industry-vignette__list li {
  display: grid;
  grid-template-columns: 36px 1fr;
  gap: 14px;
  align-items: start;
  font-size: 15px;
  line-height: 1.55;
  color: var(--brb-text-on-dark);
}

.industry-block--real-estate .industry-vignette__list li,
.industry-block--home-services .industry-vignette__list li {
  color: var(--brb-text);
}

.industry-vignette__num {
  font-family: var(--brb-font-display);
  font-size: 18px;
  color: var(--brb-accent);
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  padding-top: 2px;
}

/* ============================================================
   Industries · "Category not listed" section
   ============================================================ */
.ind-outsider {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(64px, 8vw, 100px) 0;
  text-align: center;
  border-top: 1px solid rgba(250, 247, 242, 0.06);
}

.ind-outsider__inner {
  max-width: 720px;
  margin-inline: auto;
}

.ind-outsider .eyebrow {
  margin-bottom: 20px;
  display: inline-block;
}

.ind-outsider__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 5vw, 60px);
  line-height: 1.08;
  letter-spacing: -0.025em;
  font-weight: 400;
  margin-bottom: 24px;
  color: var(--brb-text-on-dark);
}

.ind-outsider__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.ind-outsider__body {
  font-size: 17px;
  line-height: 1.65;
  color: var(--brb-text-on-dark-muted);
  max-width: 56ch;
  margin: 0 auto 32px;
}

.ind-outsider__ctas {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
}


/* ============================================================
   ============================================================
   ANALYTICS PAGE
   Interactive data flow diagram, live hero dashboard preview,
   and the full measurement stack.
   ============================================================
   ============================================================ */

/* ============================================================
   Hero dashboard visual (replaces the standard wd-hero__visual)
   ============================================================ */
.wd-hero__visual:has(.an-hero-dash) {
  height: auto;
  max-width: 540px;
  margin-left: auto;
}

.an-hero-dash {
  background: linear-gradient(165deg, #1F1F1F 0%, #151515 100%);
  border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 10px;
  padding: 18px;
  box-shadow:
    0 32px 72px rgba(0, 0, 0, 0.5),
    0 0 0 1px rgba(217, 119, 6, 0.04) inset;
  position: relative;
}

.an-hero-dash::before {
  content: '';
  position: absolute;
  inset: -40px;
  background: radial-gradient(ellipse at top right, rgba(217, 119, 6, 0.14), transparent 60%);
  z-index: -1;
  pointer-events: none;
}

.an-hero-dash__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(250, 247, 242, 0.08);
  margin-bottom: 16px;
  gap: 16px;
}

.an-hero-dash__title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--brb-font-body);
  font-size: 12px;
  color: var(--brb-text-on-dark);
  font-weight: 500;
}

.an-hero-dash__dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #86efac;
  box-shadow: 0 0 8px rgba(134, 239, 172, 0.5);
  animation: an-hero-dot-pulse 2s ease-in-out infinite;
}

@keyframes an-hero-dot-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

.an-hero-dash__tabs {
  display: flex;
  gap: 4px;
}

.an-hero-dash__tab {
  font-family: var(--brb-font-body);
  font-size: 10px;
  letter-spacing: 0.04em;
  color: var(--brb-text-on-dark-subtle);
  padding: 4px 8px;
  border-radius: 4px;
  font-weight: 500;
}

.an-hero-dash__tab--active {
  background: rgba(217, 119, 6, 0.14);
  color: var(--brb-accent);
}

/* Metric buttons row */
.an-hero-dash__metrics {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-bottom: 14px;
}

.an-hero-dash__metric {
  background: rgba(250, 247, 242, 0.03);
  border: 1px solid rgba(250, 247, 242, 0.06);
  border-radius: 6px;
  padding: 10px 12px;
  text-align: left;
  cursor: pointer;
  transition: background 200ms var(--brb-ease),
              border-color 200ms var(--brb-ease);
  color: inherit;
  font-family: inherit;
}

.an-hero-dash__metric:hover {
  background: rgba(250, 247, 242, 0.06);
  border-color: rgba(250, 247, 242, 0.12);
}

.an-hero-dash__metric.is-active {
  background: rgba(217, 119, 6, 0.08);
  border-color: rgba(217, 119, 6, 0.4);
}

.an-hero-dash__metric-label {
  font-size: 9px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  font-weight: 500;
  margin-bottom: 4px;
}

.an-hero-dash__metric-value {
  font-family: var(--brb-font-display);
  font-size: 22px;
  color: var(--brb-text-on-dark);
  line-height: 1;
  letter-spacing: -0.02em;
  font-weight: 400;
  margin-bottom: 4px;
}

.an-hero-dash__metric.is-active .an-hero-dash__metric-value {
  color: var(--brb-accent);
}

.an-hero-dash__metric-delta {
  font-size: 10px;
  font-weight: 500;
}

.an-hero-dash__metric-delta--up { color: #86efac; }

/* Chart */
.an-hero-dash__chart {
  background: rgba(0, 0, 0, 0.2);
  border-radius: 6px;
  padding: 8px;
  height: 140px;
}

.an-hero-dash__chart svg {
  width: 100%;
  height: 100%;
  display: block;
}

.an-hero-dash__grid-line {
  stroke: rgba(250, 247, 242, 0.06);
  stroke-width: 1;
  stroke-dasharray: 2 4;
}

.an-hero-dash__line {
  stroke-linecap: round;
  stroke-linejoin: round;
  filter: drop-shadow(0 0 8px rgba(217, 119, 6, 0.4));
}


/* ============================================================
   Data flow diagram — the interactive centerpiece
   ============================================================ */
.an-flow {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(72px, 10vw, 140px) 0;
  position: relative;
  overflow: hidden;
}

.an-flow::before {
  content: '';
  position: absolute;
  top: 0; left: 50%;
  transform: translateX(-50%);
  width: 80%;
  height: 60%;
  background: radial-gradient(ellipse at center top, rgba(217, 119, 6, 0.06), transparent 60%);
  pointer-events: none;
}

.an-flow__head {
  text-align: center;
  max-width: 780px;
  margin: 0 auto clamp(48px, 6vw, 80px);
  position: relative;
}

.an-flow__head .eyebrow { margin-bottom: 16px; display: inline-block; }

.an-flow__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 5vw, 60px);
  line-height: 1.08;
  letter-spacing: -0.025em;
  font-weight: 400;
  margin-bottom: 20px;
}

.an-flow__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.an-flow__sub {
  font-size: clamp(15px, 1.3vw, 17px);
  line-height: 1.65;
  color: var(--brb-text-on-dark-muted);
  max-width: 60ch;
  margin: 0 auto;
}

/* Stage container - fades in */
.an-flow__stage {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 900ms var(--brb-ease-entrance), transform 900ms var(--brb-ease-entrance);
}

.an-flow__stage.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Nodes row */
.an-flow__nodes {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  margin-bottom: clamp(40px, 5vw, 64px);
  flex-wrap: wrap;
}

@media (max-width: 900px) {
  .an-flow__nodes {
    gap: 10px;
    justify-content: flex-start;
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 12px;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    scroll-padding-inline: 4px;
  }
  .an-flow__nodes .an-flow__node {
    flex: 0 0 auto;
    scroll-snap-align: start;
  }
  .an-flow__nodes .an-flow__connector {
    display: none;
  }
}

.an-flow__node {
  background: rgba(250, 247, 242, 0.03);
  border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 8px;
  padding: 18px 16px;
  min-width: 130px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  color: var(--brb-text-on-dark);
  font-family: inherit;
  transition: background 250ms var(--brb-ease),
              border-color 250ms var(--brb-ease),
              transform 250ms var(--brb-ease);
}

.an-flow__node:hover {
  background: rgba(250, 247, 242, 0.06);
  border-color: rgba(250, 247, 242, 0.14);
  transform: translateY(-2px);
}

.an-flow__node.is-active {
  background: rgba(217, 119, 6, 0.1);
  border-color: var(--brb-accent);
  box-shadow: 0 8px 24px rgba(217, 119, 6, 0.14);
}

.an-flow__node-icon {
  color: var(--brb-text-on-dark-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 2px;
}

.an-flow__node.is-active .an-flow__node-icon { color: var(--brb-accent); }

.an-flow__node-label {
  font-family: var(--brb-font-display);
  font-size: 15px;
  color: var(--brb-text-on-dark);
  letter-spacing: -0.01em;
}

.an-flow__node-sub {
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-subtle);
  font-weight: 500;
}

/* Connector between nodes */
.an-flow__connector {
  flex: 0 0 36px;
  height: 8px;
  color: rgba(250, 247, 242, 0.2);
}

.an-flow__connector svg {
  width: 100%;
  height: 100%;
  display: block;
}

/* Detail panel */
.an-flow__detail {
  max-width: 780px;
  margin: 0 auto;
  background: rgba(250, 247, 242, 0.025);
  border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 10px;
  padding: clamp(28px, 3.5vw, 44px);
  min-height: 260px;
  position: relative;
}

.an-flow__panel {
  display: none;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 400ms var(--brb-ease), transform 400ms var(--brb-ease);
}

.an-flow__panel.is-active {
  display: block;
  opacity: 1;
  transform: translateY(0);
}

.an-flow__panel-tag {
  font-family: var(--brb-font-body);
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--brb-accent);
  font-weight: 500;
  margin-bottom: 10px;
}

.an-flow__panel-title {
  font-family: var(--brb-font-display);
  font-size: clamp(22px, 2.5vw, 30px);
  line-height: 1.15;
  color: var(--brb-text-on-dark);
  margin-bottom: 14px;
  letter-spacing: -0.02em;
  font-weight: 400;
}

.an-flow__panel-body {
  font-size: 15px;
  line-height: 1.7;
  color: var(--brb-text-on-dark-muted);
  margin-bottom: 18px;
  max-width: 60ch;
}

.an-flow__panel-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 24px;
}

@media (max-width: 600px) {
  .an-flow__panel-list { grid-template-columns: 1fr; }
}

.an-flow__panel-list li {
  position: relative;
  padding-left: 18px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--brb-text-on-dark);
}

.an-flow__panel-list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 9px;
  width: 8px;
  height: 1px;
  background: var(--brb-accent);
}


/* ============================================================
   ============================================================
   FAQ PAGE
   Editorial accordion with search, section jumpnav, and smooth reveals.
   ============================================================
   ============================================================ */

.faq-hero {
  background: var(--brb-surface);
  padding: clamp(64px, 9vw, 120px) 0 var(--brb-hero-to-next);
  position: relative;
  overflow: hidden;
}

.faq-hero::before {
  content: '';
  position: absolute;
  top: -20%;
  left: -5%;
  width: 40%;
  height: 100%;
  background: radial-gradient(ellipse, rgba(217, 119, 6, 0.05), transparent 65%);
  pointer-events: none;
}

.faq-hero .eyebrow {
  margin-bottom: 20px;
  display: inline-block;
}

.faq-hero__title {
  font-family: var(--brb-font-display);
  font-size: clamp(40px, 6vw, 72px);
  line-height: 1.05;
  letter-spacing: -0.03em;
  font-weight: 400;
  margin-bottom: 24px;
  max-width: 20ch;
}

.faq-hero__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.faq-hero__body {
  font-size: clamp(16px, 1.4vw, 19px);
  line-height: 1.7;
  color: var(--brb-text-muted);
  max-width: 60ch;
  margin-bottom: 36px;
}

.faq-hero__body a {
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-accent);
  text-decoration: none;
  transition: color 200ms var(--brb-ease);
}

.faq-hero__body a:hover { color: var(--brb-accent); }

/* Search input */
.faq-search {
  position: relative;
}

.faq-search__icon {
  position: absolute;
  left: 18px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--brb-text-muted);
  pointer-events: none;
}

.faq-search input {
  width: 100%;
  padding: 14px 44px 14px 48px;
  border: 1px solid var(--brb-border);
  border-radius: 8px;
  background: #FFFFFF;
  font-family: var(--brb-font-body);
  font-size: 15px;
  color: var(--brb-text);
  transition: border-color 200ms var(--brb-ease),
              box-shadow 200ms var(--brb-ease);
}

.faq-search input::placeholder {
  color: var(--brb-text-muted);
}

.faq-search input:focus {
  outline: none;
  border-color: var(--brb-accent);
  box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.14);
}

.faq-search__clear {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  background: transparent;
  border: none;
  padding: 6px;
  cursor: pointer;
  color: var(--brb-text-muted);
  border-radius: 4px;
  transition: background 200ms var(--brb-ease), color 200ms var(--brb-ease);
}

.faq-search__clear:hover {
  background: rgba(26, 26, 26, 0.06);
  color: var(--brb-text);
}

/* ============================================================
   Jump navigation — sticky on scroll
   ============================================================ */
.faq-jumpnav {
  position: sticky;
  /* Fix round 2 (Finding 3): same cause as .brb-subnav — the header now
     genuinely sticks, so top: 0 pinned this behind the header instead of
     below it, with its cream chips bleeding around the pill. */
  top: var(--brb-header-h, 117px);
  z-index: 50;
  background: rgba(250, 247, 242, 0.95);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--brb-border);
}

.faq-jumpnav__inner {
  display: flex;
  justify-content: center;
  gap: 8px;
  overflow-x: auto;
  padding: 14px 0;
  scrollbar-width: none;
}

.faq-jumpnav__inner::-webkit-scrollbar {
  display: none;
}

.faq-jumpnav__link {
  font-family: var(--brb-font-body);
  font-size: 13px;
  letter-spacing: 0.02em;
  color: var(--brb-text-muted);
  text-decoration: none;
  padding: 10px 18px;
  border-radius: 999px;
  background: rgba(26, 26, 26, 0.04);
  border: 1px solid transparent;
  white-space: nowrap;
  font-weight: 500;
  cursor: pointer;
  transition: background 200ms var(--brb-ease), color 200ms var(--brb-ease), border-color 200ms var(--brb-ease);
}

.faq-jumpnav__link:hover {
  background: rgba(26, 26, 26, 0.08);
  color: var(--brb-text);
}

.faq-jumpnav__link.is-active,
.faq-jumpnav__link.is-active:hover {
  background: var(--brb-accent);
  color: var(--brb-text-on-dark);
  border-color: var(--brb-accent);
}

/* ============================================================
   FAQ main content
   ============================================================ */
.faq-main {
  background: var(--brb-surface);
  padding: clamp(48px, 6vw, 80px) 0 clamp(80px, 10vw, 120px);
}

.faq-section {
  margin-bottom: clamp(48px, 6vw, 80px);
  /* Fix round 2 (Finding 4): removed the old hardcoded scroll-margin-top
     (108px) — covered by html's scroll-padding-top now (this is also the
     .faq-jumpnav Finding 3 target set, so it doubly needed reconciling). */
  padding: clamp(64px, 8vw, 120px) 0;
  background: var(--brb-surface);
}

/* Inside /faqs/ multi-section pattern, .faq-main parent provides
   the section chrome — individual .faq-section blocks reset to
   margin-only spacing so consecutive sections stack tight. */
.faq-main .faq-section {
  padding: 0;
  background: transparent;
}

.faq-section:last-child { margin-bottom: 0; }

.faq-section__head {
  display: flex;
  align-items: baseline;
  gap: 20px;
  margin-bottom: 28px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--brb-border);
}

.faq-section__num {
  font-family: var(--brb-font-body);
  font-size: 12px;
  letter-spacing: 0.2em;
  color: var(--brb-accent);
  font-weight: 600;
}

.faq-section__title {
  font-family: var(--brb-font-display);
  font-size: clamp(24px, 3vw, 36px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0;
}

/* Single-section FAQ head — eyebrow + h2 stacked + centered.
   Used on /free-strategy-audit/ where the FAQ block has no
   sectioned numbering pattern. Canonical .faq-section__head
   above is for numbered (.faq-section__num + h2) horizontal
   layout used on /faqs/ multi-section page. */
.faq__head {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: clamp(8px, 1vw, 12px);
  margin-bottom: clamp(32px, 4vw, 56px);
}

/* FAQ items (accordion) */
.faq-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.faq-item {
  background: #FFFFFF;
  border: 1px solid var(--brb-border);
  border-radius: 8px;
  overflow: hidden;
  transition: border-color 200ms var(--brb-ease),
              box-shadow 200ms var(--brb-ease);
}

.faq-item[open] {
  border-color: rgba(217, 119, 6, 0.3);
  box-shadow: 0 4px 16px rgba(26, 26, 26, 0.05);
}

.faq-item--match {
  border-color: rgba(217, 119, 6, 0.45);
  box-shadow: 0 4px 16px rgba(217, 119, 6, 0.08);
}

.faq-item__q {
  padding: 20px 24px;
  font-family: var(--brb-font-display);
  font-size: clamp(16px, 1.4vw, 19px);
  line-height: 1.4;
  letter-spacing: -0.01em;
  color: var(--brb-text);
  font-weight: 400;
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  transition: background 200ms var(--brb-ease);
}

.faq-item__q::-webkit-details-marker { display: none; }

.faq-item__q:hover {
  background: rgba(217, 119, 6, 0.03);
}

.faq-item__chevron {
  flex-shrink: 0;
  color: var(--brb-text-muted);
  transition: transform 300ms var(--brb-ease),
              color 200ms var(--brb-ease);
}

.faq-item[open] .faq-item__chevron {
  transform: rotate(180deg);
  color: var(--brb-accent);
}

.faq-item__a {
  padding: 0 24px 24px 24px;
  border-top: 1px solid var(--brb-border);
}

.faq-item__a p {
  font-size: 15px;
  line-height: 1.7;
  color: var(--brb-text-muted);
  margin: 16px 0 0;
}

.faq-item__a p:first-child { margin-top: 16px; }

.faq-item__a p strong {
  color: var(--brb-text);
  font-weight: 600;
}

.faq-item__a a {
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-accent);
  text-decoration: none;
  transition: color 200ms var(--brb-ease);
}

.faq-item__a a:hover { color: var(--brb-accent); }

.faq-item__a ul {
  margin: 16px 0 0;
  padding-left: 0;
  list-style: none;
}

.faq-item__a ul li {
  font-size: 15px;
  line-height: 1.7;
  color: var(--brb-text-muted);
  padding-left: 20px;
  position: relative;
  margin-bottom: 6px;
}

.faq-item__a ul li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 13px;
  width: 10px;
  height: 1px;
  background: var(--brb-accent);
}

/* No results */
.faq-noresults {
  text-align: center;
  padding: 48px 24px;
  color: var(--brb-text-muted);
  font-size: 15px;
}

.faq-noresults a {
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-accent);
  text-decoration: none;
}

/* ============================================================
   FAQ CTA section
   ============================================================ */
.faq-cta {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(64px, 8vw, 120px) 0;
  text-align: center;
}

.faq-cta__inner {
  max-width: 720px;
  margin-inline: auto;
}

.faq-cta .eyebrow {
  margin-bottom: 20px;
  display: inline-block;
}

.faq-cta__title {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4.5vw, 52px);
  line-height: 1.1;
  letter-spacing: -0.025em;
  font-weight: 400;
  margin-bottom: 20px;
}

.faq-cta__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.faq-cta__body {
  font-size: clamp(15px, 1.3vw, 17px);
  line-height: 1.7;
  color: var(--brb-text-on-dark-muted);
  max-width: 56ch;
  margin: 0 auto 36px;
}

.faq-cta__actions {
  display: flex;
  gap: 14px;
  justify-content: center;
  flex-wrap: wrap;
}

/* ============================================================
   Blog · Index (page-blog.php)
   ============================================================ */
.blog-hero {
  background: var(--brb-surface);
  padding: clamp(64px, 9vw, 120px) 0 var(--brb-hero-to-next);
  position: relative;
  overflow: hidden;
}

.blog-hero .eyebrow {
  margin-bottom: 20px;
  display: inline-block;
}

.blog-hero__title {
  font-family: var(--brb-font-display);
  font-size: clamp(40px, 6vw, 72px);
  line-height: 1.05;
  letter-spacing: -0.03em;
  font-weight: 400;
  margin-bottom: 24px;
  max-width: 22ch;
}

.blog-hero__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.blog-hero__body {
  font-size: clamp(16px, 1.4vw, 19px);
  line-height: 1.7;
  color: var(--brb-text-muted);
  max-width: 60ch;
}

.blog-main {
  background: var(--brb-surface);
  padding: clamp(32px, 5vw, 64px) 0 clamp(80px, 10vw, 140px);
}

.blog-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(24px, 3vw, 40px);
}

@media (max-width: 960px) {
  .blog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
  .blog-grid { grid-template-columns: 1fr; }
}

.blog-card {
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border);
  border-radius: 14px;
  overflow: hidden;
  transition: transform 300ms var(--brb-ease), border-color 300ms var(--brb-ease), box-shadow 300ms var(--brb-ease);
}

.blog-card:hover {
  transform: translateY(-3px);
  border-color: var(--brb-border-strong);
  box-shadow: 0 12px 32px rgba(26, 26, 26, 0.06);
}

.blog-card__link {
  display: block;
  color: inherit;
}

.blog-card__illustration {
  aspect-ratio: 16 / 10;
  background: var(--brb-neutral-100);
  position: relative;
  overflow: hidden;
}

.blog-card__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.blog-card__illustration-placeholder {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at 70% 30%, rgba(217, 119, 6, 0.22) 0%, transparent 70%),
    linear-gradient(135deg, var(--brb-neutral-100) 0%, #E4E1DA 100%);
}

.blog-card__body {
  padding: clamp(20px, 2vw, 28px) clamp(20px, 2vw, 28px) clamp(24px, 2.2vw, 32px);
}

.blog-card__category {
  display: inline-block;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--brb-accent);
  margin-bottom: 12px;
}

.blog-card__title {
  font-family: var(--brb-font-display);
  font-size: clamp(20px, 1.8vw, 24px);
  line-height: 1.2;
  letter-spacing: -0.01em;
  font-weight: 400;
  color: var(--brb-text);
  margin-bottom: 14px;
  transition: color 200ms var(--brb-ease);
}

.blog-card:hover .blog-card__title {
  color: var(--brb-accent);
}

.blog-card__date {
  font-size: 13px;
  color: var(--brb-text-subtle);
  letter-spacing: 0.01em;
}

.blog-empty {
  text-align: center;
  padding: 80px 0;
  color: var(--brb-text-muted);
  font-size: 17px;
}

/* ============================================================
   Blog · Shared CTA (page-blog.php + single.php)
   ============================================================ */
.blog-cta {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(64px, 8vw, 120px) 0;
  text-align: center;
}

.blog-cta__inner {
  max-width: 720px;
  margin-inline: auto;
}

.blog-cta .eyebrow {
  margin-bottom: 20px;
  display: inline-block;
}

.blog-cta__title {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4.5vw, 52px);
  line-height: 1.1;
  letter-spacing: -0.025em;
  font-weight: 400;
  margin-bottom: 20px;
}

.blog-cta__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.blog-cta__body {
  font-size: clamp(15px, 1.3vw, 17px);
  line-height: 1.7;
  color: var(--brb-text-on-dark-muted);
  max-width: 56ch;
  margin: 0 auto 36px;
}

.blog-cta__actions {
  display: flex;
  gap: 14px;
  justify-content: center;
  flex-wrap: wrap;
}

/* ============================================================
   Blog · Single post (single.php)
   ============================================================ */
.wrap-reading {
  max-width: 720px;
  margin-inline: auto;
  padding-inline: var(--brb-pad-page);
}

.post-single {
  background: var(--brb-surface);
  padding: clamp(48px, 7vw, 96px) 0 clamp(72px, 9vw, 128px);
}

.post-single__header {
  margin-bottom: clamp(32px, 4vw, 56px);
}

.post-single__back {
  display: inline-block;
  font-size: 13px;
  letter-spacing: 0.02em;
  color: var(--brb-text-muted);
  margin-bottom: 28px;
  transition: color 200ms var(--brb-ease);
}

.post-single__back:hover { color: var(--brb-accent); }

.post-single__category {
  margin-bottom: 16px;
  display: inline-block;
}

.post-single__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 5.5vw, 60px);
  line-height: 1.08;
  letter-spacing: -0.03em;
  font-weight: 400;
  margin-bottom: 20px;
  color: var(--brb-text);
}

.post-single__meta {
  font-size: 14px;
  color: var(--brb-text-subtle);
  letter-spacing: 0.02em;
}

.post-single__illustration {
  margin-top: clamp(32px, 4vw, 56px);
}

.post-single__illustration img {
  width: 100%;
  height: auto;
  border-radius: 12px;
  display: block;
}

.post-single__illustration-placeholder {
  aspect-ratio: 16 / 9;
  border-radius: 12px;
  background:
    radial-gradient(ellipse at 70% 30%, rgba(217, 119, 6, 0.22) 0%, transparent 70%),
    linear-gradient(135deg, var(--brb-neutral-100) 0%, #E4E1DA 100%);
}

.post-single__content {
  font-family: var(--brb-font-body);
  font-size: 18px;
  line-height: 1.75;
  color: var(--brb-ink);
}

.post-single__content > * + * { margin-top: 1.3em; }

.post-single__content h2 {
  font-family: var(--brb-font-display);
  font-size: clamp(26px, 3vw, 34px);
  line-height: 1.2;
  letter-spacing: -0.02em;
  font-weight: 400;
  margin-top: 2em;
  margin-bottom: 0.6em;
  color: var(--brb-text);
}

.post-single__content h3 {
  font-family: var(--brb-font-display);
  font-size: clamp(20px, 2vw, 24px);
  line-height: 1.25;
  letter-spacing: -0.015em;
  font-weight: 500;
  margin-top: 1.8em;
  margin-bottom: 0.5em;
  color: var(--brb-text);
}

.post-single__content h4 {
  font-family: var(--brb-font-body);
  font-size: 17px;
  font-weight: 600;
  letter-spacing: 0;
  margin-top: 1.6em;
  margin-bottom: 0.4em;
  color: var(--brb-text);
}

.post-single__content p { margin: 0; }

.post-single__content a {
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-accent);
  transition: color 200ms var(--brb-ease);
}

.post-single__content a:hover { color: var(--brb-accent); }

.post-single__content ul,
.post-single__content ol {
  padding-left: 1.4em;
}

.post-single__content li + li { margin-top: 0.5em; }

.post-single__content blockquote {
  border-left: 3px solid var(--brb-accent);
  padding: 4px 0 4px 24px;
  margin-left: 0;
  font-family: var(--brb-font-display);
  font-style: italic;
  font-size: clamp(20px, 2vw, 24px);
  line-height: 1.45;
  color: var(--brb-text);
}

.post-single__content img {
  border-radius: 10px;
  margin: 1.8em 0;
}

.post-single__content figure {
  margin: 1.8em 0;
}

.post-single__content figure img { margin: 0; }

.post-single__content figcaption {
  font-size: 14px;
  color: var(--brb-text-subtle);
  text-align: center;
  margin-top: 10px;
}

.post-single__content code {
  font-family: 'SF Mono', Menlo, Consolas, monospace;
  font-size: 0.92em;
  background: var(--brb-neutral-100);
  padding: 2px 6px;
  border-radius: 4px;
}

.post-single__content pre {
  background: var(--brb-neutral-100);
  padding: 18px 20px;
  border-radius: 8px;
  overflow-x: auto;
  font-size: 14px;
  line-height: 1.55;
}

.post-single__content pre code {
  background: none;
  padding: 0;
  font-size: inherit;
}

.post-single__content hr {
  border: 0;
  border-top: 1px solid var(--brb-border);
  margin: 2.4em auto;
  width: 60%;
}

/* ============================================================
   Landing template (page-landing.php)
   Used by service-area + industry pages whose body is editor-authored.
   Reuses the inline brand blocks already in the page content.
   ============================================================ */
.landing-hero {
  background: var(--brb-surface);
  padding: clamp(72px, 10vw, 128px) 0 var(--brb-hero-to-next);
}

.landing-hero__title {
  font-family: var(--brb-font-display);
  font-size: clamp(40px, 6vw, 72px);
  line-height: 1.05;
  letter-spacing: -0.03em;
  font-weight: 400;
  color: var(--brb-text);
  max-width: 22ch;
}

.landing-hero__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.landing-main {
  background: var(--brb-surface);
  padding: clamp(24px, 3vw, 48px) 0 clamp(80px, 10vw, 140px);
}

/* /reviews-only override — its short content was leaving a 228px void
   between the verification CTA and the cross-links section. Cuts the
   bottom padding by half on this page only. */
body.page-reviews .landing-main { padding-bottom: 72px; }

.landing-main__inner {
  font-family: var(--brb-font-body);
  font-size: 18px;
  line-height: 1.75;
  color: var(--brb-ink);
}

.landing-main__inner > * + * { margin-top: 1.3em; }

.landing-main__inner h2 {
  font-family: var(--brb-font-display);
  font-size: clamp(28px, 3.4vw, 40px);
  line-height: 1.15;
  letter-spacing: -0.02em;
  font-weight: 400;
  margin-top: 2em;
  margin-bottom: 0.6em;
  color: var(--brb-text);
}

.landing-main__inner h2 em {
  font-style: italic;
  color: var(--brb-accent);
}

.landing-main__inner h3 {
  font-family: var(--brb-font-display);
  font-size: clamp(20px, 2vw, 26px);
  line-height: 1.25;
  letter-spacing: -0.015em;
  font-weight: 500;
  margin-top: 1.8em;
  margin-bottom: 0.5em;
  color: var(--brb-text);
}

.landing-main__inner h4 {
  font-family: var(--brb-font-body);
  font-size: 17px;
  font-weight: 600;
  margin-top: 1.6em;
  margin-bottom: 0.4em;
  color: var(--brb-text);
}

.landing-main__inner p { margin: 0; }

.landing-main__inner a {
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-accent);
  transition: color 200ms var(--brb-ease);
}

.landing-main__inner a:hover { color: var(--brb-accent); }

.landing-main__inner ul,
.landing-main__inner ol {
  padding-left: 1.4em;
}

.landing-main__inner li + li { margin-top: 0.5em; }

.landing-main__inner blockquote {
  border-left: 3px solid var(--brb-accent);
  padding: 4px 0 4px 24px;
  margin-left: 0;
  font-family: var(--brb-font-display);
  font-style: italic;
  font-size: clamp(20px, 2vw, 24px);
  line-height: 1.45;
  color: var(--brb-text);
}

.landing-main__inner img {
  border-radius: 10px;
  margin: 1.8em 0;
}

.landing-main__inner figure { margin: 1.8em 0; }
.landing-main__inner figure img { margin: 0; }
.landing-main__inner figcaption {
  font-size: 14px;
  color: var(--brb-text-subtle);
  text-align: center;
  margin-top: 10px;
}

.landing-main__inner hr {
  border: 0;
  border-top: 1px solid var(--brb-border);
  margin: 2.4em auto;
  width: 60%;
}

/* ============================================================
   Landing template — hero eyebrow
   ============================================================ */
.landing-hero__eyebrow {
  margin-bottom: 18px;
}

/* ============================================================
   Landing template — author byline strip
   ============================================================ */
.landing-byline {
  background: var(--brb-surface);
}

.landing-byline__inner {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 18px 0;
  border-top: 1px solid var(--brb-border);
  border-bottom: 1px solid var(--brb-border);
}

.landing-byline__photo {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  object-fit: cover;
  display: block;
  flex-shrink: 0;
  background: var(--brb-neutral-100);
}

.landing-byline__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1 1 auto;
  min-width: 0;
}

.landing-byline__name {
  font-family: var(--brb-font-body);
  font-size: 15px;
  font-weight: 500;
  color: var(--brb-text);
  letter-spacing: -0.005em;
}

.landing-byline__meta {
  font-family: var(--brb-font-body);
  font-size: 13px;
  color: var(--brb-text-muted);
  letter-spacing: 0.01em;
}

.landing-byline__link {
  font-family: var(--brb-font-body);
  font-size: 13px;
  font-weight: 500;
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-accent);
  white-space: nowrap;
  transition: color 200ms var(--brb-ease);
  flex-shrink: 0;
}

.landing-byline__link:hover { color: var(--brb-accent); }

@media (max-width: 600px) {
  .landing-byline__inner {
    flex-wrap: wrap;
    gap: 12px;
  }
  .landing-byline__link {
    flex-basis: 100%;
    text-align: left;
  }
}

/* ============================================================
   Landing template — cross-links ("Also looking at")
   ============================================================ */
.landing-crosslinks {
  background: var(--brb-surface);
  padding: clamp(48px, 7vw, 88px) 0 clamp(24px, 3vw, 40px);
}

.landing-crosslinks__title {
  font-family: var(--brb-font-display);
  font-size: clamp(24px, 3vw, 32px);
  line-height: 1.15;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text);
  margin-bottom: clamp(20px, 2.5vw, 32px);
}

.landing-crosslinks__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(14px, 1.6vw, 20px);
}

@media (max-width: 720px) {
  .landing-crosslinks__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
  .landing-crosslinks__grid { grid-template-columns: 1fr; }
}

.landing-crosslinks__card {
  display: block;
  position: relative;
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border);
  border-radius: 12px;
  padding: 20px 22px 24px;
  color: inherit;
  transition: transform 250ms var(--brb-ease), border-color 250ms var(--brb-ease), box-shadow 250ms var(--brb-ease);
}

.landing-crosslinks__card:hover {
  transform: translateY(-2px);
  border-color: var(--brb-border-strong);
  box-shadow: 0 10px 28px rgba(26, 26, 26, 0.06);
}

.landing-crosslinks__card-title {
  font-family: var(--brb-font-display);
  font-size: 18px;
  line-height: 1.25;
  letter-spacing: -0.01em;
  font-weight: 400;
  color: var(--brb-text);
  margin-bottom: 8px;
  transition: color 200ms var(--brb-ease);
}

.landing-crosslinks__card:hover .landing-crosslinks__card-title { color: var(--brb-accent); }

.landing-crosslinks__card-desc {
  font-family: var(--brb-font-body);
  font-size: 14px;
  line-height: 1.55;
  color: var(--brb-text-muted);
  margin-bottom: 12px;
}

.landing-crosslinks__card-arrow {
  font-family: var(--brb-font-body);
  font-size: 16px;
  color: var(--brb-accent);
  transition: transform 200ms var(--brb-ease);
  display: inline-block;
}

.landing-crosslinks__card:hover .landing-crosslinks__card-arrow { transform: translateX(3px); }

/* ============================================================
   Landing template — final CTA (dark band)
   ============================================================ */
.landing-final-cta {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(56px, 7vw, 96px) 0;
  text-align: center;
}

.landing-final-cta__inner {
  max-width: 640px;
  margin-inline: auto;
}

.landing-final-cta__title {
  font-family: var(--brb-font-display);
  font-size: clamp(28px, 4vw, 44px);
  line-height: 1.1;
  letter-spacing: -0.025em;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  margin-bottom: 16px;
}

.landing-final-cta__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.landing-final-cta__body {
  font-family: var(--brb-font-body);
  font-size: clamp(15px, 1.3vw, 17px);
  line-height: 1.65;
  color: var(--brb-text-on-dark-muted);
  max-width: 52ch;
  margin: 0 auto 32px;
}

.landing-final-cta__actions {
  display: flex;
  gap: 18px;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
}

.landing-final-cta__secondary {
  font-family: var(--brb-font-body);
  font-size: 14px;
  color: var(--brb-text-on-dark-muted);
  border-bottom: 1px solid rgba(217, 119, 6, 0.6);
  transition: color 200ms var(--brb-ease), border-color 200ms var(--brb-ease);
}

.landing-final-cta__secondary:hover {
  color: var(--brb-text-on-dark);
  border-bottom-color: var(--brb-accent);
}

/* ============================================================
   404 — Not Found page
   ============================================================ */
.error-404 {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding: clamp(72px, 12vw, 160px) 0 clamp(96px, 14vw, 200px);
}

.error-404__hero {
  text-align: center;
  max-width: 880px;
  padding-bottom: clamp(48px, 7vw, 96px);
}

.error-404__hero .eyebrow {
  margin-bottom: 18px;
}

.error-404__headline {
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: clamp(2.25rem, 5.5vw, 4rem);
  line-height: 1.08;
  letter-spacing: -0.015em;
  color: var(--brb-text);
  margin: 0 0 24px;
}

.error-404__headline em {
  font-style: italic;
  color: var(--brb-accent);
}

.error-404__sub {
  font-family: var(--brb-font-body);
  font-size: clamp(1rem, 1.4vw, 1.125rem);
  line-height: 1.6;
  color: var(--brb-text-muted);
  max-width: 560px;
  margin: 0 auto;
}

.error-404__nav-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
  padding-bottom: clamp(64px, 9vw, 120px);
}

@media (min-width: 880px) {
  .error-404__nav-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
  }
}

.error-404__nav-card {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 28px 24px;
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border);
  border-radius: 10px;
  text-decoration: none;
  color: var(--brb-text);
  transition: border-color 200ms var(--brb-ease),
              transform 200ms var(--brb-ease),
              box-shadow 200ms var(--brb-ease);
}

.error-404__nav-card:hover {
  border-color: var(--brb-border-strong);
  transform: translateY(-2px);
  box-shadow: 0 6px 24px rgba(26, 26, 26, 0.06);
}

.error-404__nav-card--accent {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  border-color: var(--brb-anchor);
}

.error-404__nav-card--accent:hover {
  border-color: var(--brb-accent);
}

.error-404__nav-card-label {
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: 1.4rem;
  letter-spacing: -0.01em;
  line-height: 1.2;
}

.error-404__nav-card--accent .error-404__nav-card-label {
  color: var(--brb-accent);
}

.error-404__nav-card-desc {
  font-family: var(--brb-font-body);
  font-size: 0.92rem;
  line-height: 1.5;
  color: var(--brb-text-muted);
}

.error-404__nav-card--accent .error-404__nav-card-desc {
  color: var(--brb-text-on-dark-muted);
}

.error-404__recent-posts {
  border-top: 1px solid var(--brb-border);
  padding-top: clamp(48px, 7vw, 88px);
}

.error-404__recent-posts-head {
  margin-bottom: clamp(28px, 4vw, 48px);
}

.error-404__recent-posts-title {
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: clamp(1.5rem, 2.6vw, 2rem);
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--brb-text);
  margin: 8px 0 0;
}

.error-404__recent-posts-title em {
  font-style: italic;
  color: var(--brb-accent);
}

.error-404__recent-posts-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0;
}

.error-404__recent-post {
  border-top: 1px solid var(--brb-border);
}

.error-404__recent-post:last-child {
  border-bottom: 1px solid var(--brb-border);
}

.error-404__recent-post-link {
  display: grid;
  grid-template-columns: 140px 1fr;
  align-items: baseline;
  gap: 24px;
  padding: 22px 4px;
  text-decoration: none;
  color: var(--brb-text);
  transition: color 200ms var(--brb-ease);
}

.error-404__recent-post-link:hover {
  color: var(--brb-accent);
}

.error-404__recent-post-meta {
  font-family: var(--brb-font-body);
  font-size: 0.78rem;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--brb-text-subtle);
}

.error-404__recent-post-title {
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: clamp(1.05rem, 1.6vw, 1.25rem);
  line-height: 1.25;
  letter-spacing: -0.005em;
}

@media (max-width: 600px) {
  .error-404__recent-post-link {
    grid-template-columns: 1fr;
    gap: 6px;
    padding: 20px 4px;
  }
}

/* ============================================================
   Location-service · Local-pack mockup (signature visual)
   --------------------------------------------------------------
   Two surfaces:
   1. .loc-pack-card (compact, hero right-side)
   2. .loc-pack       (expanded, full section between hero+market)
   Plus a paragraph-block stat row (.loc-stat) + 3-callout grid
   (.loc-pack__callouts) for the "What gets a business into the
   3-pack" annotation.
   ============================================================ */

/* ---- Compact card variant (hero visual) ---------------------- */
.loc-pack-card {
  background: #fff;
  border-radius: 12px;
  border: 1px solid rgba(26, 26, 26, 0.08);
  overflow: hidden;
  font-family: var(--brb-font-body);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18);
  width: 100%;
  max-width: 420px;
  margin-left: auto;
  opacity: 0;
  transform: translateY(20px) scale(0.97);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.loc-pack-card.is-visible,
.wd-hero.is-visible .loc-pack-card,
.wd-hero__visual.is-visible .loc-pack-card {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.loc-pack-card__bar {
  background: rgba(26, 26, 26, 0.03);
  padding: 10px 14px;
  display: flex;
  align-items: center;
  gap: 10px;
  border-bottom: 1px solid rgba(26, 26, 26, 0.06);
}
.loc-pack-card__bar-logo {
  font-family: var(--brb-font-display);
  font-size: 13px;
  font-weight: 500;
  color: var(--brb-text);
  letter-spacing: -0.01em;
}
.loc-pack-card__bar-query {
  background: #fff;
  border: 1px solid rgba(26, 26, 26, 0.1);
  border-radius: 18px;
  padding: 5px 12px;
  flex: 1;
  color: rgba(26, 26, 26, 0.55);
  font-size: 12px;
}
.loc-pack-card__map {
  height: 56px;
  background: linear-gradient(135deg, #E8EDE7 0%, #DCE3DA 100%);
  position: relative;
}
.loc-pack-card__map::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 9px;
  height: 9px;
  background: var(--brb-accent);
  border: 2px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 4px rgba(217, 119, 6, 0.2);
}
.loc-pack-card__results {
  padding: 4px 0;
}
.loc-pack-card__result {
  padding: 12px 16px;
  border-bottom: 1px solid rgba(26, 26, 26, 0.05);
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.loc-pack-card__result:last-child { border-bottom: 0; }
.loc-pack-card__result--featured {
  background: rgba(217, 119, 6, 0.04);
  border-left: 3px solid var(--brb-accent);
  padding-left: 13px;
}
.loc-pack-card__result-name {
  font-family: var(--brb-font-display);
  font-size: 14px;
  font-weight: 500;
  color: var(--brb-text);
  margin: 0;
  line-height: 1.2;
}
.loc-pack-card__result-meta {
  font-size: 11px;
  color: rgba(26, 26, 26, 0.7);
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.loc-pack-card__stars { color: var(--brb-accent); letter-spacing: 1px; font-size: 10px; }
.loc-pack-card__rating-num { font-weight: 500; color: var(--brb-text); }
.loc-pack-card__result-address {
  font-size: 11px;
  color: rgba(26, 26, 26, 0.55);
}

/* Sponsored modifier (compact) — small uppercase eyebrow above the
   business name, signals paid-pack context (SLO Paid Ads, v1.35.1) */
.loc-pack-card__sponsored-tag {
  font-family: var(--brb-font-body);
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(26, 26, 26, 0.42);
  margin: 0;
  line-height: 1;
}

/* ---- Expanded section variant -------------------------------- */
.loc-pack {
  background: var(--brb-surface);
  padding: var(--brb-section-pad) 0;
  border-top: 1px solid var(--brb-border);
}

.loc-pack__head {
  text-align: center;
  max-width: 720px;
  margin: 0 auto clamp(36px, 4.5vw, 56px);
}
.loc-pack__head .eyebrow {
  margin-bottom: 14px;
  display: inline-block;
}
.loc-pack__title {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4.2vw, 52px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 18px;
}
.loc-pack__title em {
  font-style: italic;
  color: var(--brb-accent);
}
.loc-pack__body {
  font-family: var(--brb-font-body);
  font-size: clamp(1rem, 1.3vw, 1.125rem);
  line-height: 1.7;
  color: var(--brb-text-muted);
  margin: 0;
}

.loc-pack__chrome {
  background: #fff;
  border-radius: 14px;
  border: 1px solid rgba(26, 26, 26, 0.08);
  overflow: hidden;
  font-family: var(--brb-font-body);
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
  max-width: 720px;
  margin: 0 auto clamp(48px, 6vw, 80px);
}

.loc-pack__bar {
  background: rgba(26, 26, 26, 0.03);
  padding: 14px 20px;
  display: flex;
  align-items: center;
  gap: 14px;
  border-bottom: 1px solid rgba(26, 26, 26, 0.06);
}
.loc-pack__bar-logo {
  font-family: var(--brb-font-display);
  font-size: 16px;
  font-weight: 500;
  color: var(--brb-text);
  letter-spacing: -0.01em;
}
.loc-pack__bar-query {
  background: #fff;
  border: 1px solid rgba(26, 26, 26, 0.1);
  border-radius: 22px;
  padding: 7px 16px;
  flex: 1;
  color: rgba(26, 26, 26, 0.55);
  font-size: 14px;
}

.loc-pack__map {
  height: 96px;
  background:
    radial-gradient(circle at 70% 35%, rgba(255, 255, 255, 0.4) 0%, transparent 60%),
    linear-gradient(135deg, #E8EDE7 0%, #DCE3DA 100%);
  position: relative;
}
.loc-pack__map-pin {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 14px;
  height: 14px;
  background: var(--brb-accent);
  border: 3px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 6px rgba(217, 119, 6, 0.18);
}
.loc-pack__map::after {
  content: '';
  position: absolute;
  top: 32%;
  left: 28%;
  width: 7px;
  height: 7px;
  background: rgba(26, 26, 26, 0.4);
  border-radius: 50%;
  box-shadow:
    100px 22px 0 -1px rgba(26, 26, 26, 0.4),
    160px -10px 0 -1px rgba(26, 26, 26, 0.4);
}

.loc-pack__results { padding: 4px 0; }
.loc-pack__result {
  padding: 16px 22px;
  border-bottom: 1px solid rgba(26, 26, 26, 0.05);
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.loc-pack__result:last-child { border-bottom: 0; }
.loc-pack__result--featured {
  background: rgba(217, 119, 6, 0.04);
  border-left: 3px solid var(--brb-accent);
  padding-left: 19px;
}
.loc-pack__result-name {
  font-family: var(--brb-font-display);
  font-size: 17px;
  font-weight: 500;
  color: var(--brb-text);
  margin: 0;
  line-height: 1.2;
}
.loc-pack__result-meta {
  font-size: 13px;
  color: rgba(26, 26, 26, 0.7);
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.loc-pack__stars { color: var(--brb-accent); letter-spacing: 1px; font-size: 12px; }
.loc-pack__rating-num { font-weight: 500; color: var(--brb-text); }
.loc-pack__result-address {
  font-size: 13px;
  color: rgba(26, 26, 26, 0.55);
}
.loc-pack__result-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 4px;
}
.loc-pack__action {
  font-size: 12px;
  color: rgba(26, 26, 26, 0.7);
  padding: 4px 12px;
  border: 1px solid rgba(26, 26, 26, 0.12);
  border-radius: 14px;
  font-weight: 500;
}
.loc-pack__result--featured .loc-pack__action {
  color: var(--brb-accent);
  border-color: rgba(217, 119, 6, 0.3);
}

/* Sponsored modifier (expanded) — small uppercase eyebrow above the
   business name, signals paid-pack context (SLO Paid Ads, v1.35.1).
   Composes cleanly with --featured: featured row gets both amber tint
   AND sponsored eyebrow; runners-up get just the eyebrow. */
.loc-pack__sponsored-tag {
  font-family: var(--brb-font-body);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(26, 26, 26, 0.42);
  margin: 0;
  line-height: 1;
}

/* ---- 3-pack callouts ----------------------------------------- */
.loc-pack__callouts {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  border-radius: 14px;
  padding: clamp(28px, 3.5vw, 44px);
  max-width: 960px;
  margin: 0 auto;
}
.loc-pack__callouts-title {
  font-family: var(--brb-font-body);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(250, 247, 242, 0.55);
  margin: 0 0 24px;
  font-weight: 500;
}
.loc-pack__callouts-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
}
@media (min-width: 720px) {
  .loc-pack__callouts-grid { grid-template-columns: repeat(3, 1fr); gap: clamp(20px, 2.5vw, 36px); }
}
.loc-pack__callout {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 600ms var(--brb-ease), transform 600ms var(--brb-ease);
}
.loc-pack__callout.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.loc-pack__callout-num {
  font-family: var(--brb-font-display);
  font-size: 28px;
  font-weight: 400;
  color: var(--brb-accent);
  line-height: 1;
  margin-bottom: 12px;
  letter-spacing: -0.02em;
}
.loc-pack__callout-title {
  font-family: var(--brb-font-display);
  font-size: 18px;
  font-weight: 500;
  color: var(--brb-text-on-dark);
  margin: 0 0 8px;
  line-height: 1.3;
}
.loc-pack__callout-body {
  font-family: var(--brb-font-body);
  font-size: 14px;
  line-height: 1.6;
  color: rgba(250, 247, 242, 0.78);
  margin: 0;
}

/* ---- Winery-SEO cross-link line (F5.3) — centered footer under the
   callouts panel on the light band; muted body with accent links. --- */
.loc-pack__crosslink {
  max-width: 640px;
  margin: clamp(28px, 3.5vw, 48px) auto 0;
  text-align: center;
  font-family: var(--brb-font-body);
  font-size: 16px;
  line-height: 1.7;
  color: var(--brb-text-muted);
}
.loc-pack__crosslink a {
  color: var(--brb-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* ---- Stat row used in .wd-philosophy on location pages ------- */
.loc-stat-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  margin: clamp(20px, 2.5vw, 32px) 0 0;
}
@media (min-width: 720px) {
  .loc-stat-row { grid-template-columns: repeat(3, 1fr); }
}
.loc-stat {
  background: rgba(217, 119, 6, 0.06);
  border-left: 3px solid var(--brb-accent);
  padding: 16px 18px;
  border-radius: 4px;
}
.loc-stat__value {
  font-family: var(--brb-font-display);
  font-size: 1.5rem;
  font-weight: 500;
  color: var(--brb-accent);
  line-height: 1;
  margin: 0 0 6px;
  letter-spacing: -0.01em;
}
.loc-stat__label {
  font-family: var(--brb-font-body);
  font-size: 0.82rem;
  color: var(--brb-text);
  line-height: 1.4;
  margin: 0 0 4px;
}
.loc-stat__source {
  font-family: var(--brb-font-body);
  font-size: 0.7rem;
  color: rgba(26, 26, 26, 0.5);
  margin: 0;
  font-style: italic;
}

/* ============================================================
   Industry-service · Per-vertical signature visuals (RESERVED)
   --------------------------------------------------------------
   Reserved namespace for the .ind-mock-* classes that will host
   per-industry signature mockups when each vertical is populated
   in page-industry-service.php.

   Planned mockups per industry:
     - .ind-mock-medical    — review widget mockup (review velocity / GBP signal)
     - .ind-mock-realestate — listing card mockup (typical buyer-search behavior)
     - .ind-mock-winery     — tasting reservation flow (DTC-driven economy)
     - .ind-mock-home       — service-area + LSA result mockup

   Each industry-population commit will add its own scoped block
   here (e.g., .ind-mock-medical, .ind-mock-realestate). No shared
   CSS — vertical-specific by design. Compact + expanded variants
   per the .loc-pack-card / .loc-pack precedent.
   ============================================================ */
/* ============================================================
   Industry-service · Home services LSA + service-area mockup
   --------------------------------------------------------------
   First concrete .ind-mock-* implementation (v1.35.0).
   Sibling pattern to .loc-pack on page-location-service.php.

   Two surfaces:
     - Compact: hero visual slot (LSA card only, no map)
     - Expanded: Section 03 split layout (LSA card + service-area
       map), shown only on /home-services-digital-marketing/
   ============================================================ */

/* ---- Section frame --------------------------------------------- */
.ind-mock-home-services {
  background: var(--brb-surface);
  padding: var(--brb-section-pad) 0;
  border-top: 1px solid var(--brb-border);
}

.ind-mock-home-services__head {
  text-align: center;
  max-width: 720px;
  margin: 0 auto clamp(36px, 4.5vw, 56px);
}
.ind-mock-home-services__head .eyebrow {
  margin-bottom: 14px;
  display: inline-block;
}

.ind-mock-home-services__title {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4.2vw, 52px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 18px;
}
.ind-mock-home-services__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.ind-mock-home-services__body {
  font-family: var(--brb-font-body);
  font-size: clamp(1rem, 1.3vw, 1.125rem);
  line-height: 1.7;
  color: var(--brb-text-muted);
  margin: 0;
}

/* ---- Split layout (expanded) ----------------------------------- */
.ind-mock-home-services__split {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 32px;
  align-items: start;
  max-width: 1080px;
  margin: 0 auto;
}

/* ---- LSA card (shared by compact + expanded) ------------------- */
.ind-mock-home-services__card {
  background: #fff;
  border: 1px solid rgba(26, 26, 26, 0.08);
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.10);
  padding: 18px;
  font-family: var(--brb-font-body);
  width: 100%;
  max-width: 480px;
  margin-left: auto;
  margin-right: auto;
}

.ind-mock-home-services__card--compact {
  max-width: 380px;
  padding: 14px;
  margin-left: auto;
  margin-right: 0;
  opacity: 0;
  transform: translateY(20px) scale(0.97);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.ind-mock-home-services__card--compact.is-visible,
.wd-hero.is-visible .ind-mock-home-services__card--compact,
.wd-hero__visual.is-visible .ind-mock-home-services__card--compact {
  opacity: 1;
  transform: translateY(0) scale(1);
}

/* ---- Search bar ------------------------------------------------ */
.ind-mock-home-services__searchbar {
  display: flex;
  align-items: center;
  gap: 10px;
  background: rgba(26, 26, 26, 0.04);
  border: 1px solid rgba(26, 26, 26, 0.06);
  border-radius: 999px;
  padding: 8px 14px;
  margin-bottom: 14px;
}
.ind-mock-home-services__search-icon {
  font-size: 14px;
  color: rgba(26, 26, 26, 0.45);
  line-height: 1;
}
.ind-mock-home-services__search-query {
  font-size: 13px;
  color: rgba(26, 26, 26, 0.75);
}

/* ---- LSA label ("Most popular") -------------------------------- */
.ind-mock-home-services__lsa-label {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(26, 26, 26, 0.55);
  margin: 0 0 8px;
}

/* ---- LSA result rows ------------------------------------------- */
.ind-mock-home-services__lsa-result {
  padding: 12px 0;
  border-bottom: 1px solid rgba(26, 26, 26, 0.06);
}
.ind-mock-home-services__lsa-result:last-child { border-bottom: 0; }

.ind-mock-home-services__lsa-result--featured {
  background: rgba(217, 118, 6, 0.04);
  border: 1px solid rgba(217, 118, 6, 0.20);
  border-radius: 10px;
  padding: 12px 14px;
  margin-bottom: 8px;
}

.ind-mock-home-services__lsa-result--compact {
  padding: 8px 0;
}

.ind-mock-home-services__lsa-name {
  font-size: 14px;
  font-weight: 600;
  color: var(--brb-text);
  margin: 0 0 4px;
  line-height: 1.3;
}

.ind-mock-home-services__lsa-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: rgba(26, 26, 26, 0.7);
  margin-bottom: 6px;
  flex-wrap: wrap;
}
.ind-mock-home-services__lsa-rating-num { font-weight: 600; color: var(--brb-text); }
.ind-mock-home-services__lsa-stars { color: var(--brb-accent); letter-spacing: 1px; font-size: 11px; }
.ind-mock-home-services__lsa-reviews { color: rgba(26, 26, 26, 0.55); }

/* ---- Google Verified badge (BLUE per Oct 2025 platform change) - */
.ind-mock-home-services__lsa-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 500;
  color: #1a73e8;
  margin-right: 8px;
}
.ind-mock-home-services__lsa-badge-check {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  background: #1a73e8;
  color: #fff;
  border-radius: 50%;
  font-size: 9px;
  font-weight: 700;
  line-height: 1;
}
.ind-mock-home-services__lsa-badge--inline {
  font-size: 0;
  margin-right: 0;
}

/* ---- Status line ----------------------------------------------- */
.ind-mock-home-services__lsa-status {
  display: block;
  font-size: 11px;
  color: rgba(26, 26, 26, 0.6);
  margin-top: 6px;
}

/* ---- Action buttons (Call / Message) --------------------------- */
.ind-mock-home-services__lsa-actions {
  display: flex;
  gap: 8px;
  margin-top: 10px;
}
.ind-mock-home-services__lsa-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 1;
  font-size: 12px;
  font-weight: 500;
  padding: 7px 12px;
  border-radius: 999px;
  border: 1px solid rgba(26, 26, 26, 0.15);
  background: #fff;
  color: var(--brb-text);
  letter-spacing: 0.01em;
}
.ind-mock-home-services__lsa-action--call {
  background: var(--brb-text);
  color: #fff;
  border-color: var(--brb-text);
}

/* ---- Service-area map ------------------------------------------ */
.ind-mock-home-services__map {
  background: #fff;
  border: 1px solid rgba(26, 26, 26, 0.08);
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.06);
  padding: 18px;
  font-family: var(--brb-font-body);
  width: 100%;
  max-width: 480px;
  margin: 0 auto;
}

.ind-mock-home-services__map-label {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(26, 26, 26, 0.55);
  margin: 0 0 12px;
}

.ind-mock-home-services__map-svg {
  display: block;
  width: 100%;
  height: auto;
  max-height: 280px;
}

.ind-mock-home-services__map-fill {
  fill: rgba(217, 118, 6, 0.08);
  stroke: rgba(217, 118, 6, 0.25);
  stroke-width: 1;
}
.ind-mock-home-services__map-coast {
  fill: none;
  stroke: rgba(26, 26, 26, 0.55);
  stroke-width: 1.5;
  stroke-linecap: round;
}
.ind-mock-home-services__map-inland {
  fill: none;
  stroke: rgba(26, 26, 26, 0.20);
  stroke-width: 1;
  stroke-dasharray: 3 3;
  stroke-linecap: round;
}

.ind-mock-home-services__map-pin {
  fill: rgba(26, 26, 26, 0.55);
}
.ind-mock-home-services__map-pin--featured {
  fill: var(--brb-accent);
}

.ind-mock-home-services__map-pin-label {
  font-family: var(--brb-font-body);
  font-size: 9px;
  fill: rgba(26, 26, 26, 0.65);
}
.ind-mock-home-services__map-pin-label--featured {
  font-weight: 600;
  fill: var(--brb-text);
}

.ind-mock-home-services__map-caption {
  font-size: 12px;
  color: rgba(26, 26, 26, 0.6);
  margin: 12px 0 0;
  text-align: center;
  font-style: italic;
}

/* ---- Mobile breakpoint ----------------------------------------- */
@media (max-width: 720px) {
  .ind-mock-home-services__split {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  .ind-mock-home-services__card,
  .ind-mock-home-services__map {
    padding: 14px;
    max-width: 100%;
  }
  .ind-mock-home-services__lsa-result--featured {
    padding: 10px 12px;
  }
}

/* ============================================================
   Industry-service · Medical reviews widget mockup
   --------------------------------------------------------------
   Second concrete .ind-mock-* implementation (v1.38.8).
   Google Reviews widget design — distinct from .ind-mock-home-services
   (LSA + service-area map).

   Two surfaces:
     - Compact: hero visual slot — GBP knowledge panel + first
       review only (no signals annotations or full review list)
     - Expanded: Section 03 — full GBP panel + 2 reviews +
       engagement signal annotations
   ============================================================ */

/* ---- Section frame --------------------------------------------- */
.ind-mock-medical {
  background: var(--brb-surface);
  padding: var(--brb-section-pad) 0;
  border-top: 1px solid var(--brb-border);
}

.ind-mock-medical__head {
  text-align: center;
  max-width: 720px;
  margin: 0 auto clamp(36px, 4.5vw, 56px);
}
.ind-mock-medical__head .eyebrow {
  margin-bottom: 14px;
  display: inline-block;
}

.ind-mock-medical__title {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4.2vw, 52px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 18px;
}
.ind-mock-medical__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.ind-mock-medical__body {
  font-family: var(--brb-font-body);
  font-size: clamp(1rem, 1.3vw, 1.125rem);
  line-height: 1.7;
  color: var(--brb-text-muted);
  margin: 0;
}

/* ---- Card chrome (shared by compact + expanded) ---------------- */
.ind-mock-medical__card {
  background: #fff;
  border: 1px solid rgba(26, 26, 26, 0.08);
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.10);
  font-family: var(--brb-font-body);
  width: 100%;
  max-width: 560px;
  margin: 0 auto;
  overflow: hidden;
}

.ind-mock-medical__card--compact {
  max-width: 380px;
  margin-left: auto;
  margin-right: 0;
  opacity: 0;
  transform: translateY(20px) scale(0.97);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.ind-mock-medical__card--compact.is-visible,
.wd-hero.is-visible .ind-mock-medical__card--compact,
.wd-hero__visual.is-visible .ind-mock-medical__card--compact {
  opacity: 1;
  transform: translateY(0) scale(1);
}

/* ---- GBP knowledge panel (header) ------------------------------ */
.ind-mock-medical__panel {
  padding: 18px;
  border-bottom: 1px solid rgba(26, 26, 26, 0.06);
}

.ind-mock-medical__card--compact .ind-mock-medical__panel {
  padding: 14px;
}

.ind-mock-medical__practice-name {
  font-family: var(--brb-font-display);
  font-size: 18px;
  font-weight: 500;
  color: var(--brb-text);
  margin: 0 0 6px;
  line-height: 1.2;
  letter-spacing: -0.01em;
}

.ind-mock-medical__card--compact .ind-mock-medical__practice-name {
  font-size: 15px;
}

.ind-mock-medical__rating {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}
.ind-mock-medical__rating-num {
  font-size: 14px;
  font-weight: 600;
  color: var(--brb-text);
}
.ind-mock-medical__stars {
  color: var(--brb-accent);
  letter-spacing: 1px;
  font-size: 12px;
}
.ind-mock-medical__rating-count {
  font-size: 12px;
  color: rgba(26, 26, 26, 0.55);
}
.ind-mock-medical__rating-badge {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.04em;
  color: #1a8754;
  background: rgba(26, 135, 84, 0.08);
  padding: 2px 8px;
  border-radius: 999px;
  margin-left: 4px;
}

.ind-mock-medical__category {
  font-size: 12px;
  color: rgba(26, 26, 26, 0.6);
  margin: 0 0 4px;
}
.ind-mock-medical__address {
  font-size: 12px;
  color: rgba(26, 26, 26, 0.6);
  margin: 0 0 6px;
}
.ind-mock-medical__hours {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: rgba(26, 26, 26, 0.7);
  margin: 0;
}
.ind-mock-medical__hours-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #1a8754;
  flex-shrink: 0;
}

/* ---- Action button row ----------------------------------------- */
.ind-mock-medical__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
}
.ind-mock-medical__action {
  font-size: 11px;
  font-weight: 500;
  padding: 6px 12px;
  border-radius: 999px;
  border: 1px solid rgba(26, 26, 26, 0.15);
  background: #fff;
  color: var(--brb-text);
  letter-spacing: 0.01em;
}
.ind-mock-medical__action--primary {
  background: var(--brb-text);
  color: #fff;
  border-color: var(--brb-text);
}

/* ---- Reviews list ---------------------------------------------- */
.ind-mock-medical__reviews {
  padding: 16px 18px;
  border-bottom: 1px solid rgba(26, 26, 26, 0.06);
}

.ind-mock-medical__reviews-label {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(26, 26, 26, 0.55);
  margin: 0 0 10px;
}

.ind-mock-medical__review {
  padding: 10px 0;
  border-bottom: 1px solid rgba(26, 26, 26, 0.04);
}
.ind-mock-medical__review:last-child {
  border-bottom: 0;
}
.ind-mock-medical__review--compact {
  padding: 12px 14px;
}

.ind-mock-medical__review-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}
.ind-mock-medical__review-name {
  font-size: 12px;
  font-weight: 600;
  color: var(--brb-text);
}
.ind-mock-medical__review-stars {
  color: var(--brb-accent);
  letter-spacing: 1px;
  font-size: 11px;
}
.ind-mock-medical__review-age {
  font-size: 11px;
  color: rgba(26, 26, 26, 0.5);
}

.ind-mock-medical__review-quote {
  font-family: var(--brb-font-body);
  font-size: 12.5px;
  line-height: 1.55;
  color: rgba(26, 26, 26, 0.75);
  font-style: italic;
  margin: 0;
}

.ind-mock-medical__card--compact .ind-mock-medical__review-quote {
  font-size: 12px;
  line-height: 1.5;
}

/* ---- Engagement signals (expanded only) ------------------------ */
.ind-mock-medical__signals {
  padding: 14px 18px;
  background: rgba(26, 26, 26, 0.02);
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.ind-mock-medical__signal {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11.5px;
  color: rgba(26, 26, 26, 0.7);
  margin: 0;
}
.ind-mock-medical__signal-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  background: rgba(26, 135, 84, 0.10);
  color: #1a8754;
  border-radius: 50%;
  font-size: 10px;
  font-weight: 700;
  flex-shrink: 0;
}

/* ---- Mobile breakpoint ----------------------------------------- */
@media (max-width: 720px) {
  .ind-mock-medical__card {
    max-width: 100%;
  }
  .ind-mock-medical__panel,
  .ind-mock-medical__reviews,
  .ind-mock-medical__signals {
    padding-left: 14px;
    padding-right: 14px;
  }
  .ind-mock-medical__actions {
    gap: 6px;
  }
  .ind-mock-medical__action {
    font-size: 10.5px;
    padding: 5px 10px;
  }
}

/* ============================================================
   Industry-service · Real estate listing card mockup
   --------------------------------------------------------------
   Third concrete .ind-mock-* implementation (v1.38.9).
   Listing card design — visually distinct from
   .ind-mock-home-services (LSA + map) and .ind-mock-medical
   (GBP reviews widget).

   Two surfaces:
     - Compact: hero visual slot — listing card only (price,
       address, specs, agent), no search chrome or signals
     - Expanded: Section 03 — search result chrome + listing
       card + engagement signal annotations

   Photo placeholder uses a subtle muted gradient — no stock
   imagery. Signals "this is where a real listing photo would
   go" without faking content.
   ============================================================ */

/* ---- Section frame --------------------------------------------- */
.ind-mock-real-estate {
  background: var(--brb-surface);
  padding: var(--brb-section-pad) 0;
  border-top: 1px solid var(--brb-border);
}

.ind-mock-real-estate__head {
  text-align: center;
  max-width: 720px;
  margin: 0 auto clamp(36px, 4.5vw, 56px);
}
.ind-mock-real-estate__head .eyebrow {
  margin-bottom: 14px;
  display: inline-block;
}

.ind-mock-real-estate__title {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4.2vw, 52px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 18px;
}
.ind-mock-real-estate__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.ind-mock-real-estate__body {
  font-family: var(--brb-font-body);
  font-size: clamp(1rem, 1.3vw, 1.125rem);
  line-height: 1.7;
  color: var(--brb-text-muted);
  margin: 0;
}

/* ---- Expanded chrome wrapper ----------------------------------- */
.ind-mock-real-estate__chrome {
  background: #fff;
  border: 1px solid rgba(26, 26, 26, 0.08);
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.10);
  font-family: var(--brb-font-body);
  width: 100%;
  max-width: 560px;
  margin: 0 auto;
  overflow: hidden;
}

/* ---- Search result chrome (expanded only) ---------------------- */
.ind-mock-real-estate__search-chrome {
  padding: 14px 18px;
  background: rgba(26, 26, 26, 0.02);
  border-bottom: 1px solid rgba(26, 26, 26, 0.06);
}

.ind-mock-real-estate__search-meta {
  font-size: 11.5px;
  color: rgba(26, 26, 26, 0.6);
  margin: 0 0 8px;
}

.ind-mock-real-estate__filters {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.ind-mock-real-estate__filter {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.02em;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid rgba(26, 26, 26, 0.10);
  background: #fff;
  color: rgba(26, 26, 26, 0.7);
}

/* ---- Listing card (shared by compact + expanded) --------------- */
.ind-mock-real-estate__card {
  background: #fff;
  font-family: var(--brb-font-body);
}

/* Compact variant lives outside the chrome — it's the whole card */
.ind-mock-real-estate__card--compact {
  border: 1px solid rgba(26, 26, 26, 0.08);
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.10);
  width: 100%;
  max-width: 380px;
  margin-left: auto;
  margin-right: 0;
  overflow: hidden;
  opacity: 0;
  transform: translateY(20px) scale(0.97);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.ind-mock-real-estate__card--compact.is-visible,
.wd-hero.is-visible .ind-mock-real-estate__card--compact,
.wd-hero__visual.is-visible .ind-mock-real-estate__card--compact {
  opacity: 1;
  transform: translateY(0) scale(1);
}

/* ---- Photo placeholder (no stock imagery) ---------------------- */
.ind-mock-real-estate__photo {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  background:
    linear-gradient(135deg, rgba(26, 26, 26, 0.06) 0%, rgba(26, 26, 26, 0.02) 100%);
  border-bottom: 1px solid rgba(26, 26, 26, 0.04);
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Inline SVG house illustration — same illustrative-not-photographic
   philosophy as the .ind-mock-home-services service-area map. Amber
   line art on the soft gradient canvas. (v1.39.2) */
.ind-mock-real-estate__photo-svg {
  width: 55%;
  max-width: 220px;
  height: auto;
  fill: none;
  stroke: var(--brb-accent);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.ind-mock-real-estate__photo-body {
  fill: rgba(217, 119, 6, 0.04);
}
.ind-mock-real-estate__photo-ground {
  stroke: rgba(26, 26, 26, 0.20);
  stroke-width: 1;
  stroke-dasharray: 3 3;
}

.ind-mock-real-estate__badge {
  position: absolute;
  top: 12px;
  left: 12px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #1a8754;
  background: #fff;
  padding: 4px 10px;
  border-radius: 999px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

/* ---- Listing details ------------------------------------------- */
.ind-mock-real-estate__details {
  padding: 16px 18px;
}

.ind-mock-real-estate__card--compact .ind-mock-real-estate__details {
  padding: 14px;
}

.ind-mock-real-estate__price {
  font-family: var(--brb-font-display);
  font-size: 22px;
  font-weight: 500;
  color: var(--brb-text);
  letter-spacing: -0.01em;
  margin: 0 0 4px;
  line-height: 1.1;
}

.ind-mock-real-estate__card--compact .ind-mock-real-estate__price {
  font-size: 19px;
}

.ind-mock-real-estate__address {
  font-size: 12.5px;
  color: rgba(26, 26, 26, 0.7);
  margin: 0 0 6px;
  line-height: 1.4;
}

.ind-mock-real-estate__specs {
  font-size: 12px;
  color: rgba(26, 26, 26, 0.6);
  margin: 0 0 10px;
}

/* ---- Action button row ----------------------------------------- */
.ind-mock-real-estate__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 12px 0;
}
.ind-mock-real-estate__action {
  font-size: 11px;
  font-weight: 500;
  padding: 6px 12px;
  border-radius: 999px;
  border: 1px solid rgba(26, 26, 26, 0.15);
  background: #fff;
  color: var(--brb-text);
  letter-spacing: 0.01em;
}
.ind-mock-real-estate__action--primary {
  background: var(--brb-text);
  color: #fff;
  border-color: var(--brb-text);
}

/* ---- Agent attribution ----------------------------------------- */
.ind-mock-real-estate__agent {
  font-size: 11.5px;
  color: rgba(26, 26, 26, 0.6);
  margin: 10px 0 0;
  padding-top: 10px;
  border-top: 1px solid rgba(26, 26, 26, 0.04);
  line-height: 1.4;
}
.ind-mock-real-estate__agent-name {
  color: var(--brb-text);
  font-weight: 500;
}
.ind-mock-real-estate__agent-rating {
  color: rgba(26, 26, 26, 0.7);
}

/* ---- Engagement signals (expanded only) ------------------------ */
.ind-mock-real-estate__signals {
  padding: 14px 18px;
  background: rgba(26, 26, 26, 0.02);
  border-top: 1px solid rgba(26, 26, 26, 0.06);
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.ind-mock-real-estate__signal {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11.5px;
  color: rgba(26, 26, 26, 0.7);
  margin: 0;
}
.ind-mock-real-estate__signal-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  background: rgba(26, 135, 84, 0.10);
  color: #1a8754;
  border-radius: 50%;
  font-size: 10px;
  font-weight: 700;
  flex-shrink: 0;
}

/* ---- Mobile breakpoint ----------------------------------------- */
@media (max-width: 720px) {
  .ind-mock-real-estate__chrome {
    max-width: 100%;
  }
  .ind-mock-real-estate__details,
  .ind-mock-real-estate__signals,
  .ind-mock-real-estate__search-chrome {
    padding-left: 14px;
    padding-right: 14px;
  }
  .ind-mock-real-estate__actions {
    gap: 5px;
  }
  .ind-mock-real-estate__action {
    font-size: 10.5px;
    padding: 5px 10px;
  }
  .ind-mock-real-estate__price {
    font-size: 19px;
  }
}

/* ============================================================
   Industry-service · Winery tasting reservation flow mockup
   --------------------------------------------------------------
   Fourth and final concrete .ind-mock-* implementation (v1.39.0).
   Tasting reservation booking flow design — distinct from the
   three prior verticals (LSA/map, GBP reviews, listing card).

   Two surfaces:
     - Compact: hero visual slot — booking widget chrome +
       experience selection cards (Standard vs Estate) + club-
       member-save prompt only. No date pill, no time grid, no
       party size, no subtotal.
     - Expanded: Section 03 — full booking flow (header + step
       indicator + date + time grid + party size + experience
       cards + subtotal + CTA + club prompt)

   Selected-state treatment uses --brb-accent (amber) consistent
   with site-wide selected-state convention.
   ============================================================ */

/* ---- Section frame --------------------------------------------- */
.ind-mock-winery {
  background: var(--brb-surface);
  padding: var(--brb-section-pad) 0;
  border-top: 1px solid var(--brb-border);
}

.ind-mock-winery__head {
  text-align: center;
  max-width: 720px;
  margin: 0 auto clamp(36px, 4.5vw, 56px);
}
.ind-mock-winery__head .eyebrow {
  margin-bottom: 14px;
  display: inline-block;
}

.ind-mock-winery__title {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4.2vw, 52px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 18px;
}
.ind-mock-winery__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.ind-mock-winery__body {
  font-family: var(--brb-font-body);
  font-size: clamp(1rem, 1.3vw, 1.125rem);
  line-height: 1.7;
  color: var(--brb-text-muted);
  margin: 0;
}

/* ---- Booking widget chrome (shared by compact + expanded) ------ */
.ind-mock-winery__chrome {
  background: #fff;
  border: 1px solid rgba(26, 26, 26, 0.08);
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.10);
  font-family: var(--brb-font-body);
  width: 100%;
  max-width: 560px;
  margin: 0 auto;
  overflow: hidden;
}

.ind-mock-winery__chrome--compact {
  max-width: 380px;
  margin-left: auto;
  margin-right: 0;
  opacity: 0;
  transform: translateY(20px) scale(0.97);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}

.ind-mock-winery__chrome--compact.is-visible,
.wd-hero.is-visible .ind-mock-winery__chrome--compact,
.wd-hero__visual.is-visible .ind-mock-winery__chrome--compact {
  opacity: 1;
  transform: translateY(0) scale(1);
}

/* ---- Header ---------------------------------------------------- */
.ind-mock-winery__header {
  padding: 16px 18px;
  border-bottom: 1px solid rgba(26, 26, 26, 0.06);
  background: rgba(26, 26, 26, 0.02);
}

.ind-mock-winery__chrome--compact .ind-mock-winery__header {
  padding: 14px;
}

.ind-mock-winery__winery {
  font-family: var(--brb-font-display);
  font-size: 16px;
  font-weight: 500;
  color: var(--brb-text);
  margin: 0 0 2px;
  letter-spacing: -0.01em;
}

.ind-mock-winery__subheader {
  font-size: 12px;
  color: rgba(26, 26, 26, 0.6);
  margin: 0;
}

/* ---- Step indicator (expanded only) ---------------------------- */
.ind-mock-winery__step-indicator {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 10px;
}
.ind-mock-winery__step-text {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(26, 26, 26, 0.55);
}
.ind-mock-winery__step-dots {
  display: inline-flex;
  gap: 4px;
}
.ind-mock-winery__step-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(26, 26, 26, 0.15);
}
.ind-mock-winery__step-dot--active {
  background: var(--brb-accent);
}

/* ---- Selection grid (expanded only) ---------------------------- */
.ind-mock-winery__selection {
  padding: 14px 18px;
}

.ind-mock-winery__field {
  margin-bottom: 14px;
}
.ind-mock-winery__field:last-child {
  margin-bottom: 0;
}

.ind-mock-winery__field-label {
  display: block;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(26, 26, 26, 0.55);
  margin-bottom: 6px;
}

/* Date pill */
.ind-mock-winery__date {
  display: inline-block;
  font-size: 12.5px;
  font-weight: 500;
  padding: 6px 12px;
  border-radius: 999px;
  background: rgba(217, 119, 6, 0.08);
  border: 1px solid rgba(217, 119, 6, 0.30);
  color: var(--brb-text);
}

/* Time grid */
.ind-mock-winery__time-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 6px;
}
.ind-mock-winery__time-slot {
  font-size: 12px;
  font-weight: 500;
  padding: 7px 8px;
  text-align: center;
  border-radius: 6px;
  border: 1px solid rgba(26, 26, 26, 0.12);
  background: #fff;
  color: rgba(26, 26, 26, 0.7);
}
.ind-mock-winery__time-slot--selected {
  background: var(--brb-accent);
  color: #fff;
  border-color: var(--brb-accent);
}

/* Party size */
.ind-mock-winery__party-size {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  border: 1px solid rgba(26, 26, 26, 0.12);
  border-radius: 999px;
  padding: 4px 14px;
  background: #fff;
}
.ind-mock-winery__party-control {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  font-size: 14px;
  color: rgba(26, 26, 26, 0.55);
  user-select: none;
}
.ind-mock-winery__party-count {
  font-size: 12.5px;
  font-weight: 500;
  color: var(--brb-text);
}

/* ---- Experience cards (shared by compact + expanded) ----------- */
.ind-mock-winery__experiences {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.ind-mock-winery__chrome--compact .ind-mock-winery__experiences {
  padding: 14px;
  padding-top: 0;
}

.ind-mock-winery__experience {
  position: relative;
  padding: 10px 12px;
  border: 1px solid rgba(26, 26, 26, 0.12);
  border-radius: 8px;
  background: #fff;
}
.ind-mock-winery__experience--selected {
  border-color: var(--brb-accent);
  background: rgba(217, 119, 6, 0.04);
  box-shadow: 0 0 0 1px var(--brb-accent) inset;
}

.ind-mock-winery__experience-name {
  font-family: var(--brb-font-display);
  font-size: 13px;
  font-weight: 500;
  color: var(--brb-text);
  margin: 0 0 4px;
  letter-spacing: -0.005em;
}

.ind-mock-winery__experience-detail {
  font-size: 11px;
  color: rgba(26, 26, 26, 0.6);
  margin: 0 0 6px;
  line-height: 1.4;
}

.ind-mock-winery__experience-price {
  font-size: 12px;
  font-weight: 600;
  color: var(--brb-text);
  margin: 0;
}

.ind-mock-winery__experience-check {
  position: absolute;
  top: 8px;
  right: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  background: var(--brb-accent);
  color: #fff;
  border-radius: 50%;
  font-size: 10px;
  font-weight: 700;
}

/* ---- Footer (expanded only) — subtotal + CTA + club prompt ----- */
.ind-mock-winery__footer {
  padding: 14px 18px 16px;
  background: rgba(26, 26, 26, 0.02);
  border-top: 1px solid rgba(26, 26, 26, 0.06);
}

.ind-mock-winery__subtotal {
  font-size: 13px;
  font-weight: 500;
  color: var(--brb-text);
  margin: 0 0 10px;
}

.ind-mock-winery__cta {
  display: block;
  text-align: center;
  font-size: 13px;
  font-weight: 500;
  padding: 10px 16px;
  background: var(--brb-text);
  color: #fff;
  border-radius: 999px;
  letter-spacing: 0.01em;
}

/* ---- Club prompt (shared) -------------------------------------- */
.ind-mock-winery__club-prompt {
  font-size: 11.5px;
  color: rgba(26, 26, 26, 0.6);
  margin: 10px 0 0;
  text-align: center;
}

.ind-mock-winery__chrome--compact .ind-mock-winery__club-prompt {
  margin: 0;
  padding: 12px 14px 14px;
  text-align: left;
  border-top: 1px solid rgba(26, 26, 26, 0.06);
  background: rgba(26, 26, 26, 0.02);
}

.ind-mock-winery__club-link {
  color: var(--brb-accent);
  font-weight: 500;
}

/* ---- Mobile breakpoint ----------------------------------------- */
@media (max-width: 720px) {
  .ind-mock-winery__chrome {
    max-width: 100%;
  }
  .ind-mock-winery__header,
  .ind-mock-winery__selection,
  .ind-mock-winery__footer {
    padding-left: 14px;
    padding-right: 14px;
  }
  .ind-mock-winery__time-grid {
    grid-template-columns: repeat(3, 1fr);
  }
  .ind-mock-winery__experiences {
    grid-template-columns: 1fr;
  }
}

/* ============================================================
   Breadcrumbs (.brb-breadcrumbs)
   Site-wide nav chrome rendered by Rank Math via br_breadcrumbs().
   Sits between site header and the first content section on
   blog posts, blog index, FAQ, location-service, industry-service.
   Skipped on homepage and top-level service pages by design.
============================================================ */
.brb-breadcrumbs {
  background: var(--brb-surface);
  border-bottom: 1px solid var(--brb-border);
  padding-block: 14px;
}
.brb-breadcrumbs__inner {
  font-size: 13px;
  letter-spacing: 0.02em;
  color: var(--brb-text-muted);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}
.brb-breadcrumbs a {
  color: var(--brb-text);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.2s var(--brb-ease);
}
.brb-breadcrumbs a:hover { border-bottom-color: var(--brb-accent); }
.brb-breadcrumbs__sep {
  color: var(--brb-text-subtle);
  margin: 0 10px;
  display: inline-block;
}
.brb-breadcrumbs .last { color: var(--brb-text-subtle); }

@media (max-width: 600px) {
  .brb-breadcrumbs { padding-block: 12px; }
  .brb-breadcrumbs__inner { font-size: 12px; }
  .brb-breadcrumbs__sep { margin: 0 6px; }
}

/* ============================================================
   Archive hero (.archive-hero)
   Utility-weight intro for fallback archive renders served via
   index.php — category, tag, author, date routes that don't have
   a dedicated template. Deliberately lighter than .blog-hero /
   .faq-hero: this is a list affordance, not an editorial moment.
   Suppressed on is_search() — search ships chrome + grid only.
============================================================ */
.archive-hero {
  background: var(--brb-surface);
  padding: clamp(40px, 5vw, 64px) 0 var(--brb-hero-to-next);
  border-bottom: 1px solid var(--brb-border);
}
.archive-hero .eyebrow {
  margin-bottom: 12px;
  display: inline-block;
}
.archive-hero__title {
  font-family: var(--brb-font-display);
  font-size: clamp(28px, 3.6vw, 40px);
  line-height: 1.15;
  letter-spacing: -0.02em;
  font-weight: 400;
  margin: 0;
  color: var(--brb-text);
}

.archive-empty {
  text-align: center;
  padding: clamp(48px, 6vw, 80px) 0;
  color: var(--brb-text-muted);
  font-size: 16px;
}

@media (max-width: 600px) {
  .archive-hero { padding: 32px 0 var(--brb-hero-to-next); }
  .archive-hero__title { font-size: clamp(24px, 6vw, 30px); }
}

/* ============================================================
   Accessibility utility — visually hidden but available to screen
   readers and search engines. Used for headings that need to exist
   for a11y/SEO without being rendered visually (e.g., search h1).
============================================================ */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ============================================================
   42 · Reviews Page (page-reviews.php)
   — Editorial hero + filterable masonry + chip system
   ============================================================ */

/* Container override for /reviews content sections only — wider than 1200px
   to give the masonry columns more room. Scoped to the page's section blocks
   (not the body) so the rule doesn't cascade into the global header + footer
   .wrap containers, which must stay at the sitewide 1200px max-width. */
.reviews-page__hero .wrap,
.reviews-page__controls-section .wrap,
.reviews-page__grid-section .wrap {
  max-width: 1320px;
}

/* ---------------- Hero stat band ---------------- */
.reviews-page__hero {
  position: relative;
  padding: clamp(72px, 9vw, 128px) 0 var(--brb-hero-to-next);
  overflow: hidden;
  background: var(--brb-surface);
}

.reviews-page__hero-bg {
  position: absolute;
  inset: 0;
  background: radial-gradient(
    circle at 85% 15%,
    rgba(217, 119, 6, 0.10),
    transparent 55%
  );
  pointer-events: none;
}

.reviews-page__hero-inner {
  position: relative;
  z-index: 1;
}

.reviews-page__hero-title {
  font-family: var(--brb-font-display);
  font-size: clamp(40px, 6vw, 72px);
  line-height: 1.05;
  letter-spacing: -0.03em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 14px 0 20px;
  max-width: 22ch;
}
.reviews-page__hero-title em {
  font-style: italic;
  color: var(--brb-accent);
}

.reviews-page__hero-sub {
  font-family: var(--brb-font-body);
  font-size: clamp(15px, 1.4vw, 18px);
  line-height: 1.65;
  color: var(--brb-text-muted);
  max-width: 56ch;
  margin: 0 0 36px;
}

.reviews-page__stat-row {
  list-style: none;
  margin: 0;
  padding: 18px 0 0;
  border-top: 1px solid var(--brb-border);
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: clamp(20px, 4vw, 48px);
}
.reviews-page__hero-cta {
  margin-top: clamp(24px, 3vw, 32px);
}
.reviews-page__stat {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-family: var(--brb-font-body);
  font-size: 14px;
  color: var(--brb-text-muted);
}
.reviews-page__stat-num {
  font-family: var(--brb-font-display);
  font-size: clamp(22px, 2.4vw, 28px);
  font-weight: 400;
  color: var(--brb-text);
  letter-spacing: -0.02em;
}
.reviews-page__stat-stars {
  color: var(--brb-accent);
  font-size: 14px;
  letter-spacing: 2px;
}
.reviews-page__stat-label {
  text-transform: lowercase;
  letter-spacing: 0.02em;
}
/* Anchor the "Verified on Google" stat to the right edge of the strip so
   the stats group naturally on the left and the trust signal closes the
   line — fills the empty right-side space the default flex layout left. */
.reviews-page__stat:has(.reviews-page__stat-link) {
  margin-left: auto;
}

/* Tighter hero-to-next section spacing on /reviews/ only — the default
   site-wide rhythm (var(--brb-hero-to-next) on both sides ≈ 200px combined)
   reads as a void here because the hero is content-light (eyebrow + short
   headline + one-line body + single stat row). Cut both sides ≈ 50% so
   the filter bar feels connected to the stat strip without breaking the
   sitewide hero convention used by every other page. */
.reviews-page__hero {
  padding-bottom: clamp(32px, 4vw, 48px);
}
.reviews-page__hero + .reviews-page__controls-section {
  padding-top: clamp(24px, 3vw, 40px);
}
.reviews-page__stat-link {
  font-family: var(--brb-font-body);
  font-size: 14px;
  color: var(--brb-text);
  font-weight: 500;
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 1px;
  transition: color 200ms var(--brb-ease);
}
.reviews-page__stat-link:hover {
  color: var(--brb-accent);
}

/* ---------------- Filter + sort controls ---------------- */
.reviews-page__controls-section {
  background: var(--brb-surface);
  padding: 8px 0 clamp(20px, 3vw, 32px);
}

.reviews-page__controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 20px;
  padding: 20px 0;
  border-top: 1px solid var(--brb-border);
  border-bottom: 1px solid var(--brb-border);
}

.reviews-page__filter-group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.reviews-page__filter-divider {
  color: var(--brb-text-subtle);
  margin: 0 4px;
  user-select: none;
  opacity: 0.55;
}

.filter-chip {
  font-family: var(--brb-font-body);
  font-size: 13px;
  font-weight: 500;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid var(--brb-border-strong);
  background-color: transparent;
  color: var(--brb-text);
  cursor: pointer;
  transition: background-color 200ms var(--brb-ease),
              color 200ms var(--brb-ease),
              border-color 200ms var(--brb-ease);
  letter-spacing: 0.01em;
}
.filter-chip:hover {
  background-color: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  border-color: var(--brb-anchor);
}
.filter-chip--active,
.filter-chip--active:hover {
  background-color: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  border-color: var(--brb-anchor);
  font-weight: 500;
}

.reviews-page__sort-group {
  display: flex;
  align-items: center;
  gap: 10px;
}
.reviews-page__sort-label {
  font-family: var(--brb-font-body);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
}
.sort-dropdown {
  font-family: var(--brb-font-body);
  font-size: 13px;
  font-weight: 500;
  color: var(--brb-text);
  background: transparent;
  border: 1px solid var(--brb-border-strong);
  border-radius: 8px;
  padding: 8px 32px 8px 14px;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='none' stroke='%231A1A1A' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M1 1l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  transition: border-color 200ms var(--brb-ease);
}
.sort-dropdown:hover,
.sort-dropdown:focus {
  border-color: var(--brb-text);
  outline: none;
}

/* ---------------- Masonry grid (CSS columns) ---------------- */
.reviews-page__grid-section {
  background: var(--brb-surface);
  padding: clamp(24px, 4vw, 48px) 0 clamp(72px, 9vw, 120px);
}

.reviews-grid {
  column-gap: clamp(16px, 2vw, 28px);
  column-count: 1;
}
@media (min-width: 720px) {
  .reviews-grid { column-count: 2; }
}
@media (min-width: 1100px) {
  .reviews-grid { column-count: 3; }
}

/* ---------------- Review card ---------------- */
.review-card {
  break-inside: avoid;
  display: inline-block;
  width: 100%;
  margin: 0 0 clamp(16px, 2vw, 28px);
  padding: 28px 28px 22px;
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border);
  border-radius: 12px;
  position: relative;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 700ms var(--brb-ease-entrance),
              transform 700ms var(--brb-ease-entrance),
              border-color 250ms var(--brb-ease),
              box-shadow 250ms var(--brb-ease);
  transition-delay: 0ms, 0ms, 0ms, 0ms;
}
.review-card.is-visible {
  opacity: 1;
  transform: translateY(0);
  transition-delay: var(--reveal-delay, 0ms),
                    var(--reveal-delay, 0ms),
                    0ms,
                    0ms;
}
.review-card:hover {
  transform: translateY(-2px);
  border-color: rgba(217, 119, 6, 0.30);
  box-shadow: 0 14px 32px -14px rgba(26, 26, 26, 0.12);
}

.review-card__stars {
  color: var(--brb-accent);
  font-size: 13px;
  letter-spacing: 1.5px;
  margin: 0 0 12px;
}

.review-card__quote {
  font-family: var(--brb-font-display);
  font-size: 16px;
  line-height: 1.55;
  color: var(--brb-text);
  margin: 0 0 22px;
  font-weight: 400;
  letter-spacing: -0.005em;
}

.review-card__attribution-row {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  column-gap: 12px;
  row-gap: 12px;
  align-items: center;
  padding-top: 16px;
  border-top: 1px solid var(--brb-border);
}
.review-card__attribution-row .review-card__avatar { grid-row: 1; grid-column: 1; }
.review-card__attribution-row .review-card__attribution { grid-row: 1; grid-column: 2; }
.review-card__attribution-row .review-card__chips { grid-row: 2; grid-column: 1 / -1; }

.review-card__avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  font-family: var(--brb-font-body);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  flex-shrink: 0;
}
.review-card__avatar--amber {
  background: var(--brb-accent);
  color: var(--brb-anchor);
}
.review-card__avatar--mint {
  background: var(--brb-mint);
  color: var(--brb-anchor);
}
.review-card__avatar--anchor {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
}

.review-card__attribution {
  min-width: 0;
}
.review-card__name {
  font-family: var(--brb-font-display);
  font-size: 15px;
  font-weight: 400;
  letter-spacing: -0.01em;
  color: var(--brb-text);
  line-height: 1.3;
  margin: 0;
}
.review-card__meta {
  font-family: var(--brb-font-body);
  font-size: 12px;
  color: var(--brb-text-muted);
  margin: 4px 0 0;
  line-height: 1.4;
  letter-spacing: 0.01em;
}

.review-card__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

/* ---------------- Chips (industry only) ----------------
   Base outlined neutral treatment, then a soft slug-keyed accent
   on the left edge for tasteful visual variety across the 3 buckets. */
.chip {
  display: inline-flex;
  align-items: center;
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 999px;
  line-height: 1.4;
  border: 1px solid transparent;
}
.chip--industry {
  background: transparent;
  color: var(--brb-text-muted);
  border-color: var(--brb-border-strong);
  border-left-width: 3px;
  padding-left: 12px;
}
.chip--industry-home-services {
  border-left-color: var(--brb-accent);
}
.chip--industry-healthcare {
  border-left-color: var(--brb-mint);
}
.chip--industry-local-business {
  border-left-color: var(--brb-anchor);
}

/* ---------------- Final CTA (dark band) ---------------- */
.reviews-page__cta {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: clamp(72px, 10vw, 128px) 0;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.reviews-page__cta::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(
    circle at 50% 0%,
    rgba(217, 119, 6, 0.10),
    transparent 60%
  );
  pointer-events: none;
}
.reviews-page__cta-inner { position: relative; }

.reviews-page__cta-title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 5vw, 60px);
  line-height: 1.05;
  letter-spacing: -0.025em;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  margin: 16px 0 20px;
}
.reviews-page__cta-title em {
  font-style: italic;
  color: var(--brb-accent);
}
.reviews-page__cta-body {
  font-family: var(--brb-font-body);
  font-size: clamp(15px, 1.3vw, 17px);
  line-height: 1.65;
  color: var(--brb-text-on-dark-muted);
  max-width: 56ch;
  margin: 0 auto 36px;
}
.reviews-page__cta-actions {
  display: flex;
  gap: 14px;
  justify-content: center;
  flex-wrap: wrap;
}

/* ---------------- Mobile tweaks ---------------- */
@media (max-width: 720px) {
  .reviews-page__controls {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
  }
  .reviews-page__sort-group { align-self: flex-end; }
}


/* ============================================================
   Hero stats — 3-stat counter row inside .wd-hero__content
   Used on the trojan-horse trojan template (page-seo-san-luis-
   obispo.php). Lives below .wd-hero__meta inside the hero's
   left column. Lighter visual than .wd-proof.wd-proof--dark
   (which is a section-level pattern). Animated countup wired
   via the inline reveal script's animateCounter() function.
   ============================================================ */
.wd-hero__stats {
  margin-top: clamp(28px, 4vw, 40px);
  padding-top: clamp(20px, 2.5vw, 28px);
  border-top: 1px solid var(--brb-border-on-dark);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(16px, 3vw, 32px);
  max-width: 560px;
}

.wd-hero__stats-item {
  min-width: 0;
}

.wd-hero__stats-value {
  margin: 0 0 4px 0;
  font-family: var(--brb-font-display);
  font-size: clamp(28px, 3.4vw, 40px);
  line-height: 1;
  color: var(--brb-accent);
  font-weight: 400;
  letter-spacing: -0.01em;
}

.wd-hero__stats-label {
  margin: 0;
  font-size: 12px;
  line-height: 1.35;
  color: rgba(250, 247, 242, 0.7);
  letter-spacing: 0.01em;
}

@media (max-width: 600px) {
  .wd-hero__stats {
    grid-template-columns: 1fr;
    gap: 16px;
    max-width: none;
  }
  .wd-hero__stats-value { font-size: 28px; }
}

/* ============================================================
   Google Business Profile card — hero right-column visual
   Renders as Back Road Web Design's actual GBP knowledge-panel
   shape: cover banner, business header (name + rating row +
   category), action button row (Website / Directions / Call —
   visual only, not interactive), info rows (hours, phone,
   address, services), and one anonymous review excerpt.

   Reveal pattern mirrors .loc-pack-card: opacity:0 + transform
   default, gated by .is-visible on self OR .wd-hero__visual
   ancestor (toggled by inline reveal script's setTimeout
   handler).

   Used on the trojan-horse template only. New pattern, no
   sister-page reuse expected.
   ============================================================ */
.gbp-card {
  background: #fff;
  border-radius: 14px;
  border: 1px solid rgba(26, 26, 26, 0.08);
  overflow: hidden;
  font-family: var(--brb-font-body);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.22);
  width: 100%;
  max-width: 420px;
  margin-left: auto;
  opacity: 0;
  transform: translateY(20px) scale(0.97);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
  color: var(--brb-text);
}

.gbp-card.is-visible,
.wd-hero.is-visible .gbp-card,
.wd-hero__visual.is-visible .gbp-card {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.gbp-card__bar {
  background: rgba(26, 26, 26, 0.03);
  padding: 10px 14px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border-bottom: 1px solid rgba(26, 26, 26, 0.06);
}

.gbp-card__bar-logo {
  font-weight: 600;
  font-size: 13px;
  letter-spacing: -0.01em;
  color: var(--brb-text);
}

.gbp-card__bar-meta {
  font-size: 11px;
  color: var(--brb-text-muted);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.gbp-card__cover {
  height: 88px;
  background:
    linear-gradient(135deg, rgba(217, 119, 6, 0.18) 0%, rgba(138, 211, 192, 0.20) 100%),
    radial-gradient(circle at 30% 70%, rgba(217, 119, 6, 0.25), transparent 55%),
    radial-gradient(circle at 75% 30%, rgba(138, 211, 192, 0.30), transparent 50%);
  border-bottom: 1px solid rgba(26, 26, 26, 0.06);
}

.gbp-card__body {
  padding: 16px 18px 18px;
}

.gbp-card__header {
  margin-bottom: 14px;
}

.gbp-card__name {
  margin: 0 0 4px 0;
  font-family: var(--brb-font-display);
  font-size: 20px;
  line-height: 1.2;
  font-weight: 400;
  letter-spacing: -0.01em;
  color: var(--brb-text);
}

.gbp-card__rating-row {
  margin: 0;
  font-size: 13px;
  line-height: 1.4;
  color: var(--brb-text-muted);
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px;
}

.gbp-card__rating-num {
  font-weight: 600;
  color: var(--brb-text);
}

.gbp-card__stars {
  color: var(--brb-accent);
  letter-spacing: 1px;
  font-size: 12px;
}

.gbp-card__review-count {
  color: var(--brb-text-muted);
}

.gbp-card__category {
  color: var(--brb-text-muted);
}

.gbp-card__actions {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  margin-bottom: 16px;
}

.gbp-card__action {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 8px 4px;
  border: 1px solid rgba(26, 26, 26, 0.10);
  border-radius: 8px;
  background: #fff;
  font-size: 11px;
  color: var(--brb-text);
}

.gbp-card__action-icon {
  font-size: 16px;
  line-height: 1;
  color: var(--brb-accent);
}

.gbp-card__action-label {
  letter-spacing: 0.01em;
  font-weight: 500;
}

.gbp-card__info {
  list-style: none;
  margin: 0 0 14px 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.gbp-card__info-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 13px;
  line-height: 1.4;
  color: var(--brb-text);
}

.gbp-card__info-icon {
  width: 16px;
  flex: 0 0 16px;
  text-align: center;
  font-size: 12px;
  color: var(--brb-text-muted);
  line-height: 1.4;
}

.gbp-card__info-text {
  color: var(--brb-text);
}

.gbp-card__info-text strong {
  color: #1a8754;
  font-weight: 600;
}

.gbp-card__review {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid rgba(26, 26, 26, 0.06);
}

.gbp-card__review-stars {
  display: block;
  color: var(--brb-accent);
  letter-spacing: 1.5px;
  font-size: 11px;
  margin-bottom: 6px;
}

.gbp-card__review-quote {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--brb-text-muted);
  font-style: italic;
}

@media (max-width: 960px) {
  .gbp-card {
    max-width: 480px;
    margin-inline: auto;
  }
}

/* ============================================================
   .wd-principles --3up modifier + supporting blocks for B.3
   Section 02 (trojan-horse template counter-position cards).
   The base .wd-principles pattern uses repeat(4, 1fr) at desktop;
   the --3up modifier overrides to repeat(3, 1fr) for the 3-card
   "Why most small business SEO underperforms" failure-mode grid.
   Plus __intro / __close paragraph blocks and __stats spacing
   for the in-section cost-range stat row.
   ============================================================ */
.wd-principles--3up .wd-principles__grid {
  grid-template-columns: repeat(3, 1fr);
}

@media (max-width: 900px) {
  .wd-principles--3up .wd-principles__grid {
    grid-template-columns: 1fr;
  }
}

.wd-principles__head:has(.wd-principles__intro) {
  max-width: 760px;
}

.wd-principles__intro {
  margin: 24px 0 0 0;
  font-size: 17px;
  line-height: 1.6;
  color: var(--brb-text-muted);
  text-align: left;
}

.wd-principles__stats {
  margin-top: clamp(40px, 5vw, 64px);
  max-width: 900px;
  margin-inline: auto;
}

.wd-principles__close {
  max-width: 760px;
  margin: clamp(32px, 4vw, 48px) auto 0;
  font-size: 17px;
  line-height: 1.6;
  color: var(--brb-text);
  text-align: left;
}

/* ============================================================
   .wd-platforms --5up modifier for B.3 Section 03 (trojan-horse
   template service cards). Base .wd-platforms__grid is 2-up at
   desktop, 1-up at ≤640px (line 9507). 5 cards in 2-up produces
   2/2/1; the 5th card (Link building) spans full-row width via
   :last-child override for visual emphasis on the section's
   closing service category. Mobile reverts to 1-up natural.
   ============================================================ */
.wd-platforms--5up .wd-platforms__grid > :last-child {
  grid-column: 1 / -1;
}

@media (max-width: 640px) {
  .wd-platforms--5up .wd-platforms__grid > :last-child {
    grid-column: auto;
  }
}

/* ============================================================
   .industry-cards / .industry-card — compact 2x2 grid pattern
   for B.3 Section 04 (trojan-horse template). Purpose-built
   variant of the industry-vertical card concept; intentionally
   distinct from /industries/ page's full-bleed alternating
   .industry-block pattern (which lives at ~viewport-tall scale).

   This compact pattern fits 4 industry cards into a single
   landing-page section (2x2 at desktop, 1-up at ≤760px) with
   body + internal link per card. No clients list, no service
   chips, no industry vignette — those live on the deeper
   /industries/ destination page. The ◭ / ✚ / ❀ / ✱ glyph set
   anchors visual differentiation per industry without a heavy
   visual right-column.

   Voice precedents preserved in card bodies:
     · real estate SLO scope-out parenthetical
     · "3,500+ leads delivered" only in real estate card
     · "direct wine sales and club memberships" in winery card
   ============================================================ */
.industry-cards {
  padding: var(--brb-section-pad) 0;
  background: var(--brb-surface);
  border-top: 1px solid var(--brb-border);
}

.industry-cards__head {
  max-width: 760px;
  margin: 0 auto clamp(40px, 5vw, 64px);
  text-align: center;
}

.industry-cards__head .eyebrow {
  margin-bottom: 16px;
  display: inline-block;
}

.industry-cards__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0;
}

.industry-cards__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.industry-cards__sub {
  margin: 24px 0 0 0;
  font-size: 17px;
  line-height: 1.6;
  color: var(--brb-text-muted);
  text-align: left;
}

.industry-cards__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(20px, 2.5vw, 32px);
  max-width: 1100px;
  margin: 0 auto;
}

@media (max-width: 760px) {
  .industry-cards__grid { grid-template-columns: 1fr; }
}

.industry-card {
  background: #fff;
  border: 1px solid var(--brb-border);
  border-radius: 12px;
  padding: 32px 28px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  transition: transform 300ms var(--brb-ease),
              box-shadow 300ms var(--brb-ease),
              border-color 300ms var(--brb-ease);
}

.industry-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 20px 40px -15px rgba(26, 26, 26, 0.1);
  border-color: rgba(217, 119, 6, 0.3);
}

.industry-card__icon {
  font-size: 28px;
  color: var(--brb-accent);
  line-height: 1;
  font-family: var(--brb-font-display);
}

.industry-card__title {
  font-family: var(--brb-font-display);
  font-size: 22px;
  font-weight: 400;
  color: var(--brb-text);
  line-height: 1.25;
  letter-spacing: -0.01em;
  margin: 0;
}

.industry-card__body {
  font-size: 15px;
  line-height: 1.65;
  color: var(--brb-text-muted);
  margin: 0;
  flex: 1;
}

.industry-card__link {
  margin-top: 8px;
  font-size: 14px;
  font-weight: 500;
  color: var(--brb-accent);
  text-decoration: none;
  transition: color 200ms var(--brb-ease);
  align-self: flex-start;
}

.industry-card__link:hover {
  color: var(--brb-text);
}

/* ============================================================
   .compare-table — 4-column comparison matrix for B.3 Section
   05 (trojan-horse template counter-positioning section).
   Compares Generic agencies / Cheap freelancers / All-in-one
   tools / My approach across 6 decision dimensions. The "My
   approach" column gets accent border + subtle bg tint + textual
   ★ Recommended indicator (NOT color-only — WCAG 1.4.1 compliant
   with the textual label as primary differentiator).

   Mobile responsive: at ≤900px the table reflows to stacked-
   cards pattern. Each dimension becomes a card containing all
   4 options with their column names rendered as data-label
   pseudo-prefixes. Preserves accessibility — screen readers
   navigate cards correctly via the dimension <th scope="row">
   acting as card heading, with each <td> labeled by its
   data-label.
   ============================================================ */
.compare-table-wrapper {
  margin: clamp(48px, 6vw, 72px) auto 0;
  max-width: 1200px;
  overflow-x: auto;
}

.compare-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-family: var(--brb-font-body);
  font-size: 14px;
  line-height: 1.5;
}

.compare-table thead th {
  padding: 16px 14px;
  text-align: left;
  vertical-align: bottom;
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: 15px;
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-border);
  background: transparent;
}

.compare-table__dimension-head {
  width: 22%;
}

.compare-table__col {
  width: 19.5%;
  color: var(--brb-text-muted);
}

.compare-table__col--mine {
  color: var(--brb-text);
  background: rgba(217, 119, 6, 0.06);
  border-top: 2px solid var(--brb-accent);
  border-left: 1px solid var(--brb-border);
  border-right: 1px solid var(--brb-border);
  position: relative;
}

.compare-table__col-name {
  display: block;
  font-weight: 500;
}

.compare-table__recommended {
  display: block;
  margin-top: 4px;
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--brb-accent);
}

.compare-table tbody th {
  padding: 18px 14px;
  text-align: left;
  vertical-align: top;
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: 15px;
  color: var(--brb-text);
  background: rgba(26, 26, 26, 0.02);
  border-bottom: 1px solid var(--brb-border);
}

.compare-table tbody td {
  padding: 18px 14px;
  vertical-align: top;
  color: var(--brb-text-muted);
  border-bottom: 1px solid var(--brb-border);
}

.compare-table__cell--mine {
  color: var(--brb-text);
  background: rgba(217, 119, 6, 0.06);
  font-weight: 500;
  border-left: 1px solid var(--brb-border);
  border-right: 1px solid var(--brb-border);
}

.compare-table tbody tr:last-child .compare-table__cell--mine {
  border-bottom: 2px solid var(--brb-accent);
}

/* B.4 — compare-table extensions for industry-service template:
   column subhead, cell value+note pairing, section header + sources
   footer, plus the section wrapper. Layered on the B.3 base above. */
.compare-table-section {
  padding: clamp(64px, 9vw, 120px) 0;
  background: var(--brb-surface);
}

.compare-table__head {
  max-width: 760px;
  margin: 0 auto clamp(40px, 6vw, 64px);
  text-align: center;
}

.compare-table__title {
  font-family: var(--brb-display);
  font-size: clamp(32px, 4.4vw, 52px);
  line-height: 1.08;
  letter-spacing: -0.01em;
  color: var(--brb-anchor);
  margin: 0.3em 0 0.5em;
}

.compare-table__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.compare-table__sub {
  font-size: clamp(16px, 1.4vw, 18px);
  line-height: 1.55;
  color: var(--brb-anchor-soft, #4a4a4a);
  margin: 0;
}

.compare-table__col-subhead {
  display: block;
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 0.04em;
  color: var(--brb-anchor-soft, #6a6a6a);
  margin-top: 4px;
  text-transform: none;
}

.compare-table__cell-value {
  display: block;
  font-weight: 600;
  color: var(--brb-anchor);
}

.compare-table__cell-note {
  display: block;
  font-size: 12px;
  line-height: 1.4;
  color: var(--brb-anchor-soft, #6a6a6a);
  margin-top: 4px;
}

.compare-table__sources {
  max-width: 880px;
  margin: clamp(20px, 3vw, 32px) auto 0;
  font-size: 13px;
  line-height: 1.55;
  color: var(--brb-anchor-soft, #6a6a6a);
  text-align: center;
  font-style: italic;
}

@media (max-width: 900px) {
  .compare-table thead { display: none; }

  .compare-table,
  .compare-table tbody,
  .compare-table tr,
  .compare-table th,
  .compare-table td {
    display: block;
    width: 100%;
  }

  .compare-table tbody tr {
    border: 1px solid var(--brb-border);
    border-radius: 12px;
    margin-bottom: 16px;
    padding: 20px;
    background: #fff;
  }

  .compare-table tbody th[scope="row"] {
    margin: 0 0 12px 0;
    padding: 0;
    border-bottom: 1px solid var(--brb-border);
    padding-bottom: 12px;
    background: transparent;
    font-size: 17px;
  }

  .compare-table tbody td {
    padding: 10px 0;
    border-bottom: 1px solid var(--brb-border);
    border-left: 0;
    border-right: 0;
    background: transparent;
    color: var(--brb-text);
  }

  .compare-table tbody td:last-child {
    border-bottom: 0;
  }

  .compare-table tbody td::before {
    content: attr(data-label);
    display: block;
    font-family: var(--brb-font-body);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--brb-text-muted);
    margin-bottom: 4px;
  }

  .compare-table tbody td.compare-table__cell--mine {
    background: rgba(217, 119, 6, 0.06);
    border-radius: 8px;
    padding: 12px;
    margin: 6px 0;
  }

  .compare-table tbody td.compare-table__cell--mine::before {
    color: var(--brb-accent);
    content: attr(data-label) " ★ Recommended";
  }
}

/* ============================================================
   .compare-principles__grid — 3-card grid for B.3 Section 05
   (counter-positioning principle reinforcement). Reuses .principle
   card chrome unchanged; just provides the 3-up grid wrapper
   without the .wd-principles section padding (Section 05 already
   has its own .wd-philosophy padding).
   ============================================================ */
.compare-principles__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(16px, 2vw, 28px);
  max-width: 1200px;
  margin: clamp(48px, 6vw, 72px) auto 0;
}

@media (max-width: 900px) {
  .compare-principles__grid { grid-template-columns: 1fr; }
}

/* ============================================================
   .pricing-section / .pricing-tier — single-tier pricing card
   for B.3 Section 06 (trojan-horse template). Strategy thread
   scope-changed from G1 catalog's 3-tier pattern to a single
   unified tier reflecting FAQ Q5/Q6 source-of-truth (SEO + Local
   SEO bundled at $750-$1,500/mo). Single-tier means no
   "featured tier" emphasis logic needed; accent treatment
   applies uniformly.

   Layout: centered head + single tier card + "Other engagements"
   sub-block + closing transition. Card has icon, heading, large
   price display, range subtitle, included-items bullet list.
   ============================================================ */
.pricing-section {
  padding: var(--brb-section-pad) 0;
  background: var(--brb-surface);
  border-top: 1px solid var(--brb-border);
}

.pricing-section__head {
  max-width: 760px;
  margin: 0 auto clamp(40px, 5vw, 64px);
  text-align: center;
}

.pricing-section__head .eyebrow {
  margin-bottom: 16px;
  display: inline-block;
}

.pricing-section__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0;
}

.pricing-section__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.pricing-section__sub {
  margin: 24px 0 0 0;
  font-size: 17px;
  line-height: 1.6;
  color: var(--brb-text-muted);
  text-align: left;
}

.pricing-tier {
  background: #fff;
  border: 2px solid var(--brb-accent);
  border-radius: 16px;
  padding: clamp(36px, 4.5vw, 56px) clamp(28px, 4vw, 48px);
  max-width: 720px;
  margin: 0 auto;
  box-shadow: 0 16px 48px -20px rgba(217, 119, 6, 0.18);
}

.pricing-tier__icon {
  font-size: 36px;
  color: var(--brb-accent);
  line-height: 1;
  font-family: var(--brb-font-display);
  margin-bottom: 16px;
}

.pricing-tier__heading {
  font-family: var(--brb-font-display);
  font-size: 26px;
  line-height: 1.2;
  letter-spacing: -0.01em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 12px 0;
}

.pricing-tier__price {
  font-family: var(--brb-font-display);
  font-size: clamp(40px, 5vw, 56px);
  line-height: 1;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-accent);
  margin: 0 0 8px 0;
}

.pricing-tier__price-suffix {
  font-size: 0.45em;
  color: var(--brb-text-muted);
  font-family: var(--brb-font-body);
  font-weight: 400;
  margin-left: 4px;
  letter-spacing: 0;
}

.pricing-tier__range-sub {
  margin: 0 0 28px 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--brb-text-muted);
}

.pricing-tier__list-label {
  font-family: var(--brb-font-body);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
  margin: 0 0 14px 0;
  padding-top: 24px;
  border-top: 1px solid var(--brb-border);
}

.pricing-tier__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.pricing-tier__list li {
  font-size: 15px;
  line-height: 1.6;
  color: var(--brb-text);
  padding-left: 22px;
  position: relative;
}

.pricing-tier__list li::before {
  content: "✓";
  position: absolute;
  left: 0;
  top: 1px;
  color: var(--brb-accent);
  font-weight: 600;
}

.pricing-tier__list li strong {
  color: var(--brb-text);
  font-weight: 600;
}

.pricing-other {
  max-width: 720px;
  margin: clamp(40px, 5vw, 64px) auto 0;
  text-align: left;
}

.pricing-other__heading {
  font-family: var(--brb-font-display);
  font-size: 20px;
  line-height: 1.2;
  letter-spacing: -0.01em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 12px 0;
}

.pricing-other__body {
  margin: 0;
  font-size: 15px;
  line-height: 1.65;
  color: var(--brb-text-muted);
}

/* ============================================================
   .process-step glyph + step number stacking — for B.3 Section
   07 (trojan-horse template process flow). Existing
   .process-step pattern (line 1746+, used on page-audit.php)
   renders __num as a single big numeral. Trojan template wants
   BOTH a glyph (visual identifier ◇/◎/▲/⚡) AND the ordinal
   number (01-04), stacked inside the __num slot.

   Plus .process__sub paragraph block for the section's lead
   paragraph (existing .process__head accommodates eyebrow + H2;
   adding .process__sub for the body intro paragraph) and
   .process__close for the closing transition into Section 08.

   These selectors only fire when the corresponding markup
   is present on this template; existing page-audit.php usage
   unaffected.
   ============================================================ */
.process-step__num .process-step__glyph {
  display: block;
  font-size: 1em;
  color: var(--brb-accent);
  line-height: 1;
}

.process-step__num .process-step__step {
  display: block;
  margin-top: 6px;
  font-family: var(--brb-font-body);
  font-size: 0.32em;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--brb-text-on-dark-muted);
}

.process__sub {
  margin: 16px 0 0 0;
  font-size: 17px;
  line-height: 1.6;
  color: var(--brb-text-on-dark-muted);
  max-width: 70ch;
}

.process__close {
  max-width: 760px;
  margin: clamp(40px, 5vw, 64px) auto 0;
  font-size: 17px;
  line-height: 1.6;
  color: var(--brb-text-on-dark-muted);
  text-align: center;
}

/* ============================================================
   B.3 trojan-horse — standalone FAQ section spacing
   On /faqs the .faq-section sits inside .faq-main which provides
   top/bottom padding. On the trojan template (body.brb-seo-trojan)
   .faq-section is rendered standalone — needs section-rhythm
   padding matching sister sections (.process etc.) so the H2
   isn't flush against the section above.
   ============================================================ */
body.brb-seo-trojan .faq-section {
  padding: clamp(80px, 11vw, 160px) 0;
  margin-bottom: 0;
}

/* B.4 follow-up — match industry-service template section rhythm so FAQ
   heading isn't flush against the proof strip above. Same scope pattern
   as .brb-seo-trojan above; uses --brb-section-pad token (clamp 72-120px)
   so adjacent sections (.wd-proof, .wd-final, .wd-philosophy, .wd-platforms,
   .wd-principles, .industry-cards) all share rhythm. clamp() handles
   responsive scaling — no separate mobile breakpoint needed. */
body.brb-industry-service .faq-section {
  padding: var(--brb-section-pad) 0;
  margin-bottom: 0;
}

/* =============================================================================
   B.5.1 — Paid Advertising deepening (v1.39.21)
   Styles for: sticky sub-nav, "What the data shows" stat blocks, channel
   compare table, pricing transparency cards, audience-by-use-case grid,
   industries linking strip, FAQ accordion, proof source citation.
   Scoped under .brb-paid where appropriate to avoid collision with B.4
   industry-service template patterns.
   ========================================================================== */

/* --- Fixed sub-nav (desktop only) — REMOVED 2026-07-30 ---
   .brb-subnav / .brb-subnav__inner / .brb-subnav__link / .brb-subnav__cta
   deleted. The site header became genuinely sticky in release 20260730.1
   (overflow-x: clip in place of overflow-x: hidden on html/body — see the
   scroll-padding-top comment near the top of this file), so the second
   fixed bar every B.5-family template stacked underneath it was
   redundant. Every consuming template (.brb-paid, .brb-analytics,
   .brb-seo, .brb-geo, .brb-maintenance, .brb-industries, the two
   nav_overlay page-location-service.php instances, plus .brb-web-design
   in the prior release) had its <nav class="brb-subnav"> markup and
   scroll-activation JS removed in the same pass. Zero remaining
   consumers confirmed by grep across php/css/js before deleting this
   block. --brb-substicky-h / scroll-padding-top machinery is UNCHANGED —
   .faq-jumpnav on /faqs/ still uses it. */

/* --- "What the data shows" stat blocks --- */
.ads-data {
  background: var(--brb-cream, #FAF7F2);
  padding: var(--brb-section-pad) 0;
  position: relative;
}
.ads-data__head {
  max-width: 760px;
  margin: 0 auto 56px;
  text-align: center;
}
.ads-data__title {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(32px, 4vw, 48px);
  line-height: 1.12;
  margin: 16px 0 20px;
  color: var(--brb-anchor, #1A1A1A);
}
.ads-data__title em {
  font-style: italic;
  color: var(--brb-amber, #D97706);
}
.ads-data__intro {
  font-size: 17px;
  line-height: 1.55;
  color: rgba(26, 26, 26, 0.72);
}
.ads-data__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  margin-bottom: 48px;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.ads-data__grid.is-visible { opacity: 1; transform: translateY(0); }
.ads-stat {
  background: #fff;
  border: 1px solid rgba(26, 26, 26, 0.08);
  border-radius: 12px;
  padding: 28px 24px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.ads-stat__value {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(38px, 4.5vw, 52px);
  line-height: 1;
  font-weight: 600;
  color: var(--brb-amber, #D97706);
  letter-spacing: -0.02em;
}
.ads-stat__pre,
.ads-stat__unit {
  font-size: 0.62em;
  font-weight: 500;
  color: rgba(217, 119, 6, 0.78);
  margin: 0 2px;
}
.ads-stat__label {
  font-size: 14.5px;
  line-height: 1.45;
  color: var(--brb-anchor, #1A1A1A);
  margin: 0;
}
.ads-stat__source {
  margin: 0;
  font-size: 12px;
  line-height: 1.4;
  color: rgba(26, 26, 26, 0.55);
  border-top: 1px solid rgba(26, 26, 26, 0.08);
  padding-top: 10px;
  margin-top: auto;
}
.ads-data__close {
  max-width: 780px;
  margin: 0 auto;
  font-size: 16px;
  line-height: 1.65;
  color: rgba(26, 26, 26, 0.78);
  text-align: center;
}
@media (max-width: 1024px) {
  .ads-data__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 540px) {
  .ads-data__grid { grid-template-columns: 1fr; }
}

/* --- Channel compare table --- */
/* .geo-compare comma-aliased onto .ads-compare canonical (B.7 v1.39.48 fix
   for visual parity with B.5). Single source of truth lives here; future
   tweaks propagate to /paid-advertising/, /seo/, /generative-engine-optimization/
   simultaneously. .geo-compare 3-col layout (label + SEO + GEO) inherits
   the same cell-treatment selectors as .ads-compare 4-col tables — column
   count differs, visual tokens identical. */
.ads-compare,
.geo-compare {
  background: #fff;
  padding: var(--brb-section-pad) 0;
}
.ads-compare__head,
.geo-compare__head {
  max-width: 720px;
  margin: 0 auto 48px;
  text-align: center;
}
.ads-compare__title,
.geo-compare__title {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(32px, 4vw, 48px);
  line-height: 1.12;
  margin: 16px 0 20px;
  color: var(--brb-anchor, #1A1A1A);
}
.ads-compare__title em,
.geo-compare__title em { font-style: italic; color: var(--brb-amber, #D97706); }
.ads-compare__intro,
.geo-compare__intro {
  font-size: 17px;
  line-height: 1.55;
  color: rgba(26, 26, 26, 0.72);
}
.ads-compare__table-wrap,
.geo-compare__table-wrap {
  overflow-x: auto;
  border: 1px solid rgba(26, 26, 26, 0.1);
  border-radius: 12px;
  background: #fff;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.ads-compare__table-wrap.is-visible,
.geo-compare__table-wrap.is-visible { opacity: 1; transform: translateY(0); }
.ads-compare__table,
.geo-compare__table {
  width: 100%;
  min-width: 720px;
  border-collapse: collapse;
  font-size: 14.5px;
  line-height: 1.5;
}
.ads-compare__table thead th,
.geo-compare__table thead th {
  background: var(--brb-anchor, #1A1A1A);
  color: #fff;
  font-family: 'Fraunces', Georgia, serif;
  font-weight: 500;
  font-size: 15px;
  padding: 18px 16px;
  text-align: left;
  border-right: 1px solid rgba(255, 255, 255, 0.08);
}
.ads-compare__table thead th:last-child,
.geo-compare__table thead th:last-child { border-right: 0; }
.ads-compare__table tbody th,
.geo-compare__table tbody th {
  background: rgba(250, 247, 242, 0.7);
  text-align: left;
  font-weight: 600;
  padding: 16px;
  color: var(--brb-anchor, #1A1A1A);
  vertical-align: top;
  border-bottom: 1px solid rgba(26, 26, 26, 0.06);
  border-right: 1px solid rgba(26, 26, 26, 0.06);
  white-space: nowrap;
}
.ads-compare__table tbody td,
.geo-compare__table tbody td {
  padding: 16px;
  vertical-align: top;
  color: rgba(26, 26, 26, 0.86);
  border-bottom: 1px solid rgba(26, 26, 26, 0.06);
  border-right: 1px solid rgba(26, 26, 26, 0.06);
}
.ads-compare__table tbody td:last-child,
.ads-compare__table thead th:last-child,
.geo-compare__table tbody td:last-child,
.geo-compare__table thead th:last-child { border-right: 0; }
.ads-compare__table tbody tr:last-child td,
.ads-compare__table tbody tr:last-child th,
.geo-compare__table tbody tr:last-child td,
.geo-compare__table tbody tr:last-child th { border-bottom: 0; }
.ads-compare__note,
.geo-compare__note {
  max-width: 780px;
  margin: 32px auto 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: rgba(26, 26, 26, 0.62);
  text-align: center;
  font-style: italic;
}
.ads-compare__note a,
.geo-compare__note a {
  color: var(--brb-amber, #D97706);
  border-bottom: 1px solid currentColor;
}
@media (max-width: 767px) {
  .ads-compare__table thead,
  .geo-compare__table thead { display: none; }
  .ads-compare__table,
  .ads-compare__table tbody,
  .ads-compare__table tbody tr,
  .ads-compare__table tbody th,
  .ads-compare__table tbody td,
  .geo-compare__table,
  .geo-compare__table tbody,
  .geo-compare__table tbody tr,
  .geo-compare__table tbody th,
  .geo-compare__table tbody td { display: block; min-width: 0; width: 100%; }
  .ads-compare__table tbody tr,
  .geo-compare__table tbody tr {
    border-bottom: 1px solid rgba(26, 26, 26, 0.12);
    padding: 16px 0;
  }
  .ads-compare__table tbody th,
  .geo-compare__table tbody th {
    background: transparent;
    padding: 0 16px 8px;
    border: 0;
    white-space: normal;
    font-size: 16px;
  }
  .ads-compare__table tbody td,
  .geo-compare__table tbody td {
    padding: 6px 16px;
    border: 0;
  }
  .ads-compare__table tbody td::before,
  .geo-compare__table tbody td::before {
    content: attr(data-label) " · ";
    font-weight: 600;
    color: var(--brb-amber, #D97706);
  }
}

/* --- Pricing transparency --- */
.ads-pricing {
  background: var(--brb-anchor, #1A1A1A);
  color: #fff;
  padding: var(--brb-section-pad) 0;
}
.ads-pricing__head {
  max-width: 720px;
  margin: 0 auto 56px;
  text-align: center;
}
.ads-pricing__title {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(32px, 4vw, 48px);
  line-height: 1.12;
  margin: 16px 0 20px;
  color: #fff;
}
.ads-pricing__title em { font-style: italic; color: var(--brb-amber, #D97706); }
.ads-pricing__intro {
  font-size: 17px;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.74);
}
.ads-pricing__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  margin-bottom: 48px;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.ads-pricing__grid--three { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 1023px) {
  .ads-pricing__grid--three { grid-template-columns: 1fr 1fr; }
}
/* 3-col variant: tighter padding + smaller price font so the
   nowrap'd `.ads-pricing-card__price-range` strings fit the
   narrower per-card width without overflowing the viewport. */
.ads-pricing__grid--three .ads-pricing-card { padding: 28px 24px; }
.ads-pricing__grid--three .ads-pricing-card__value {
  font-size: clamp(28px, 3.2vw, 40px);
}
.ads-pricing__grid.is-visible { opacity: 1; transform: translateY(0); }
.ads-pricing-card {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 12px;
  padding: 36px 32px;
}
.ads-pricing-card--fee {
  background: rgba(217, 119, 6, 0.1);
  border-color: rgba(217, 119, 6, 0.3);
}
.ads-pricing-card__label {
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(255, 255, 255, 0.62);
  margin-bottom: 16px;
}
.ads-pricing-card--fee .ads-pricing-card__label { color: var(--brb-amber, #D97706); }
.ads-pricing-card__value {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(38px, 4.5vw, 54px);
  line-height: 1;
  font-weight: 600;
  color: #fff;
  letter-spacing: -0.02em;
  margin-bottom: 20px;
}
.ads-pricing-card__sep {
  margin: 0 4px;
  color: rgba(255, 255, 255, 0.5);
  font-weight: 400;
}
.ads-pricing-card__suffix {
  font-size: 0.42em;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.6);
  margin-left: 4px;
}
.ads-pricing-card__desc {
  font-size: 15.5px;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.82);
  margin: 0 0 20px;
}
.ads-pricing-card__list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.ads-pricing-card__list li {
  padding: 8px 0 8px 22px;
  position: relative;
  font-size: 14.5px;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.78);
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}
.ads-pricing-card__list li:first-child { border-top: 0; }
.ads-pricing-card__list li::before {
  content: "—";
  position: absolute;
  left: 0;
  color: var(--brb-amber, #D97706);
}
.ads-pricing__close {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
.ads-pricing__close p {
  font-size: 16px;
  color: rgba(255, 255, 255, 0.74);
  margin: 0;
}
@media (max-width: 767px) {
  .ads-pricing__grid { grid-template-columns: 1fr; }
}

/* --- Audience-by-use-case cards + Industries linking strip ---
   The Audiences section reuses .wd-industries chrome but with
   .ads-audience-card cards instead of .industry-item. The existing
   .wd-industries:has(.industry-item) centered-head override (CSS line
   ~9666) doesn't match this selector, leaving the head left-aligned
   while the intro paragraph (centered) sits below it. The block below
   mirrors the centered treatment for the audience-card variant so
   eyebrow + headline + subhead all align consistently. */
.wd-industries:has(.ads-audience-card) .wd-industries__head {
  max-width: 720px;
  margin: 0 auto clamp(40px, 5vw, 64px);
  text-align: center;
}
.wd-industries:has(.ads-audience-card) .wd-industries__head .eyebrow {
  margin-bottom: 16px;
  display: inline-block;
}
.wd-industries:has(.ads-audience-card) .wd-industries__title {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
}
.wd-industries:has(.ads-audience-card) .wd-industries__title em {
  font-style: italic;
  color: var(--brb-accent);
}
.wd-industries__intro {
  max-width: 640px;
  margin: 18px auto 0;
  font-size: 16px;
  line-height: 1.6;
  color: rgba(26, 26, 26, 0.68);
  text-align: center;
}
.ads-audience__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
  margin-top: 48px;
  margin-bottom: 56px;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.ads-audience__grid.is-visible { opacity: 1; transform: translateY(0); }
.ads-audience-card {
  background: #fff;
  border: 1px solid rgba(26, 26, 26, 0.1);
  border-radius: 12px;
  padding: 32px 28px;
}
.ads-audience-card__num {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 18px;
  color: var(--brb-amber, #D97706);
  margin-bottom: 12px;
  font-weight: 500;
}
.ads-audience-card__name {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 22px;
  line-height: 1.2;
  margin: 0 0 14px;
  color: var(--brb-anchor, #1A1A1A);
  font-weight: 500;
}
.ads-audience-card__desc {
  margin: 0;
  font-size: 15.5px;
  line-height: 1.6;
  color: rgba(26, 26, 26, 0.78);
}
@media (max-width: 767px) {
  .ads-audience__grid { grid-template-columns: 1fr; }
}
/* B.7 — sibling-service link between audience cards and industries strip
   (muted-italic, decorative-not-CTA). Single-anchor cross-link from
   /seo/ → /generative-engine-optimization/ per copy deck Phase 7. */
.ads-audience__sibling-link {
  margin-top: 24px;
  text-align: center;
  font-size: 0.95rem;
  color: var(--brb-text-muted);
  font-style: italic;
}
.ads-audience__sibling-link a {
  color: var(--brb-text);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.ads-audience__sibling-link a:hover {
  color: var(--brb-accent);
}
.ads-audience__industries-strip {
  border-top: 1px solid rgba(26, 26, 26, 0.1);
  padding-top: 36px;
  margin-top: 16px;
}
.ads-audience__industries-label {
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(26, 26, 26, 0.6);
  text-align: center;
  margin: 0 0 24px;
}
.ads-audience__industries-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 12px;
}
.ads-audience__industry {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 16px;
  background: rgba(255, 255, 255, 0.6);
  border: 1px solid rgba(26, 26, 26, 0.08);
  border-radius: 10px;
  text-decoration: none;
  transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}
.ads-audience__industry:hover {
  background: #fff;
  border-color: rgba(217, 119, 6, 0.4);
  transform: translateY(-2px);
}
.ads-audience__industry-name {
  font-weight: 600;
  font-size: 14px;
  color: var(--brb-anchor, #1A1A1A);
}
.ads-audience__industry-desc {
  font-size: 12.5px;
  line-height: 1.4;
  color: rgba(26, 26, 26, 0.62);
}
.ads-audience__industry--more .ads-audience__industry-name { color: var(--brb-amber, #D97706); }
@media (max-width: 1024px) {
  .ads-audience__industries-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
  .ads-audience__industries-grid { grid-template-columns: 1fr; }
}

/* --- Proof strip source citation --- */
.wd-proof__source {
  margin-top: 6px;
  font-size: 11.5px;
  letter-spacing: 0.04em;
  color: var(--brb-text-muted);
  text-transform: uppercase;
  font-weight: 500;
}

.wd-proof--dark .wd-proof__source,
.wd-proof:has(.wd-proof__stat) .wd-proof__source {
  color: rgba(255, 255, 255, 0.52);
}

/* --- FAQ accordion --- */
.ads-faq {
  background: var(--brb-cream, #FAF7F2);
  padding: var(--brb-section-pad) 0;
}
.ads-faq__head {
  max-width: 680px;
  margin: 0 auto 48px;
  text-align: center;
}
.ads-faq__title {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(32px, 4vw, 48px);
  line-height: 1.12;
  margin: 16px 0 0;
  color: var(--brb-anchor, #1A1A1A);
}
.ads-faq__title em { font-style: italic; color: var(--brb-amber, #D97706); }
.ads-faq__list {
  max-width: 820px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 12px;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.ads-faq__list.is-visible { opacity: 1; transform: translateY(0); }
.ads-faq__item {
  background: #fff;
  border: 1px solid rgba(26, 26, 26, 0.1);
  border-radius: 10px;
  overflow: hidden;
}
.ads-faq__item[open] {
  border-color: rgba(217, 119, 6, 0.4);
  box-shadow: 0 4px 16px rgba(26, 26, 26, 0.04);
}
.ads-faq__q {
  cursor: pointer;
  padding: 20px 24px;
  font-size: 17px;
  line-height: 1.4;
  font-weight: 500;
  color: var(--brb-anchor, #1A1A1A);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  list-style: none;
}
.ads-faq__q::-webkit-details-marker { display: none; }
.ads-faq__chevron {
  flex-shrink: 0;
  color: rgba(26, 26, 26, 0.5);
  transition: transform 0.2s ease, color 0.2s ease;
}
.ads-faq__item[open] .ads-faq__chevron {
  transform: rotate(180deg);
  color: var(--brb-amber, #D97706);
}
.ads-faq__a {
  padding: 0 24px 22px;
  border-top: 1px solid rgba(26, 26, 26, 0.06);
  padding-top: 18px;
}
.ads-faq__a p {
  margin: 0;
  font-size: 15.5px;
  line-height: 1.6;
  color: rgba(26, 26, 26, 0.78);
}

/* =============================================================================
   B.5.2 — Data & Analytics deepening (v1.39.23)
   Adds:
   — .ads-data__grid--six modifier (3-col desktop) for the 6-card audit-patterns variant
   — .ads-stat--ordinal treatment (numeric labels, no $ prefix, no source line)
   — .platform-card__name-aside for the Looker Studio dual-name parenthetical
   — .wd-industries:has(.ads-audience-card) override (mirror of Paid Ads pattern)
   Cross-page CSS for sub-nav, ads-compare, ads-pricing, ads-audience, ads-faq
   already lives in B.5.1 block — these B.5.2 additions are the deltas only.
   Section padding tokens use var(--brb-section-pad) per Pattern 23.
   ========================================================================== */

/* --- 6-card grid variant for audit-patterns (3-col desktop / 2-col tablet / 1-col mobile) --- */
.ads-data__grid--six {
  grid-template-columns: repeat(3, 1fr);
}
@media (max-width: 1024px) {
  .ads-data__grid--six { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 540px) {
  .ads-data__grid--six { grid-template-columns: 1fr; }
}

/* --- Ordinal stat variant (numeric label, no source line, slightly different
       visual rhythm than the cited-stat variant on Paid Ads) --- */
.ads-stat--ordinal .ads-stat__value {
  font-size: clamp(28px, 3vw, 36px);
  color: rgba(217, 119, 6, 0.85);
  letter-spacing: -0.01em;
}
.ads-stat--ordinal .ads-stat__label {
  font-size: 15px;
  line-height: 1.55;
}

/* --- Looker Studio dual-name parenthetical inside .platform-card__name --- */
.platform-card__name-aside {
  display: block;
  font-family: var(--brb-font-body);
  font-size: 13px;
  font-weight: 400;
  color: rgba(26, 26, 26, 0.55);
  letter-spacing: 0.01em;
  margin-top: 4px;
  font-style: normal;
}
.brb-analytics .platform-card__name-aside { color: rgba(26, 26, 26, 0.55); }

/* --- Audiences section padding standard (Pattern 23) ---
   The .wd-industries class is shared with B.5.1 Paid Ads; that page got
   audiences-card-specific overrides via :has(.ads-audience-card). Inherit
   the same override here so the eyebrow + headline + subhead alignment
   matches across both B.5 pages. */
.brb-analytics .wd-industries {
  padding: var(--brb-section-pad) 0;
}

/* =============================================================================
   B.5.3 — SEO page deepening (v1.39.24)
   Adds .ads-pricing-card--solo modifier (single-card pricing variant for SEO).
   Pricing card breaks the standard .ads-pricing__grid 2-col pattern: full-width
   single card with internal tier-grid (2-col tier breakdown desktop, stacked
   mobile). Used when a service has ONE concept presented at scope tiers
   (SEO retainer) rather than TWO concepts (Paid Ads management fee + ad spend).
   Section padding tokens use var(--brb-section-pad) per Pattern 23.
   ========================================================================== */

/* --- Single-card pricing variant (override 2-col grid for solo cards) --- */
.ads-pricing__grid:has(.ads-pricing-card--solo) {
  grid-template-columns: 1fr;
}
.ads-pricing-card--solo {
  max-width: 720px;
  margin: 0 auto;
}
.ads-pricing-card--solo .ads-pricing-card__value {
  font-size: clamp(40px, 5vw, 60px);
}

/* --- Internal tier-grid inside the solo pricing card --- */
.ads-pricing-card__tier-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin: 24px 0 24px;
  padding: 20px 0;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.ads-pricing-card__tier {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ads-pricing-card__tier-label {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 22px;
  line-height: 1;
  font-weight: 600;
  color: var(--brb-amber, #D97706);
  letter-spacing: -0.01em;
}
.ads-pricing-card__tier-desc {
  margin: 0;
  font-size: 14.5px;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.78);
}
@media (max-width: 640px) {
  .ads-pricing-card__tier-grid {
    grid-template-columns: 1fr;
    gap: 24px;
  }
}

/* =============================================================================
   B.5.4.1 — Pricing market context strip on /website-design/
   Visually subordinate to the two pricing cards above. Source-attribution
   citation styled small + italic + muted. BRB's tier ($3,500–$15,000) gets
   subtle accent emphasis via .ads-pricing__market-context-tier--mine
   without overpowering the two cards above.
   ========================================================================== */

.ads-pricing__market-context {
  margin-top: 48px;
  padding-top: 32px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.ads-pricing__market-context.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.ads-pricing__market-context-intro {
  font-size: 13.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(255, 255, 255, 0.55);
  margin: 0 0 18px;
  text-align: center;
}
.ads-pricing__market-context-tiers {
  list-style: none;
  padding: 0;
  margin: 0 0 16px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}
.ads-pricing__market-context-tier {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 16px 20px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 8px;
}
.ads-pricing__market-context-tier-range {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 18px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.78);
  letter-spacing: -0.01em;
}
.ads-pricing__market-context-tier-label {
  font-size: 13.5px;
  line-height: 1.45;
  color: rgba(255, 255, 255, 0.62);
}
.ads-pricing__market-context-tier--mine {
  border-color: rgba(217, 119, 6, 0.3);
  background: rgba(217, 119, 6, 0.04);
}
.ads-pricing__market-context-tier--mine .ads-pricing__market-context-tier-range {
  color: var(--brb-amber, #D97706);
}
.ads-pricing__market-context-tier--mine .ads-pricing__market-context-tier-label {
  color: rgba(255, 255, 255, 0.74);
}
.ads-pricing__market-context-source {
  margin: 0;
  font-size: 12px;
  font-style: italic;
  color: rgba(255, 255, 255, 0.42);
  text-align: center;
  letter-spacing: 0.01em;
}
@media (max-width: 640px) {
  .ads-pricing__market-context-tiers {
    grid-template-columns: 1fr;
  }
}

/* =============================================================================
   B.5.4.2 — Pricing card price formatting + market context prose treatment
   - .ads-pricing-card__price-range wraps the dollar range in a non-breaking
     span so it doesn't break across lines at the en-dash.
   - .ads-pricing-card__suffix renders "per project" on its own line below
     the price (override the prior inline B.5.1 default).
   - .ads-pricing__market-context-text replaces the prior tier-list with a
     single prose paragraph; subordinate to the cards above.
   ========================================================================== */

.ads-pricing-card__price-range {
  white-space: nowrap;
}
/* Adjacent-sibling scoping: only force suffix to its own line when the price
   is wrapped in .ads-pricing-card__price-range (Web Design pricing cards).
   Paid Ads pricing cards keep the original inline /mo suffix behavior. */
.ads-pricing-card__price-range + .ads-pricing-card__suffix {
  display: block;
  margin-left: 0;
  margin-top: 4px;
  font-size: 14px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.62);
  letter-spacing: 0;
}

/* =============================================================================
   B.5.4.3 — Market context restructure: small contextual box (template tier
   disclaimer only) + framing line below. Replaces the B.5.4.2 prose treatment
   .ads-pricing__market-context-text (now removed) which was reading as a
   third comparison option rather than positioning context. Box visual is
   subordinate, narrower, lighter weight than the two pricing cards above.
   Stop-and-show during live verify if the box reads as a third card.
   ========================================================================== */

.ads-pricing__market-context-box {
  max-width: 640px;
  margin: 32px auto 24px;
  padding: 16px 24px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 8px;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.ads-pricing__market-context-box.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.ads-pricing__market-context-box-text {
  margin: 0 0 8px;
  font-size: 13.5px;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.66);
}
.ads-pricing__market-context-box-text strong {
  color: rgba(255, 255, 255, 0.82);
  font-weight: 600;
}
.ads-pricing__market-context-box-source {
  margin: 0;
  font-size: 11.5px;
  font-style: italic;
  color: rgba(255, 255, 255, 0.42);
  letter-spacing: 0.01em;
}
.ads-pricing__market-context-framing {
  max-width: 640px;
  margin: 0 auto;
  font-size: 14px;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.62);
  text-align: center;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.ads-pricing__market-context-framing.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.ads-pricing__source {
  max-width: 640px;
  margin: 12px auto 0;
  font-size: 12px;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.45);
  text-align: center;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.ads-pricing__source.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* B.6.1.1.1 — adjacent-sibling spacing for location-instance pricing
   sections. When the framing paragraph sits directly after the close
   wrap (no market-context aside intervening, per B.6.1.x kickoff),
   this rule restores the breathing room the aside provides on the
   /website-design/ canonical layout. Surgical: scopes by adjacency
   so /website-design/ canonical (where aside sits between) is
   unaffected. */
.ads-pricing__close + .ads-pricing__market-context-framing {
  margin-top: 32px;
}

/* B.6.1.1.3 — restore sectional rhythm consistency on the
   location-service template by mirroring the wd-philosophy → loc-pack
   reference (cream→cream, doubled padding, visible borders) on every
   cream-on-cream transition that previously lacked a border break.
   Borders provide the visual structure; doubled padding stays as the
   canonical rhythm. Replaces the B.6.1.1.2 50% padding-reduction rule
   (which over-corrected — Michael preferred the larger-padded feel
   matched to the philosophy → loc-pack reference). Scoped to
   body.brb-location-service so /website-design/ canonical is
   unaffected (wd-industries and ads-faq exist on canonical too but
   their context there is fine). */
body.brb-location-service .wd-platforms,
body.brb-location-service .wd-industries,
body.brb-location-service .ads-faq {
  border-top: 1px solid var(--brb-border);
}

/* ============================================================
   SERVICE-CODED HERO GRADIENTS — body-class scoped overrides
   on .wd-hero__bg + .wd-hero__headline em.

   Web Design (body.brb-web-design) keeps the canonical amber
   default defined on .wd-hero__bg further up — no override here.

   Counter-orb (lower-left subtle amber) is the family anchor and
   stays consistent across all three variants below. CTA buttons
   stay solid amber across all variants — action color is constant.
   ============================================================ */

/* SEO — bright teal/cyan dominant (2026-07, operator ask). Reads
   bright + modern and stays clearly distinct from Web Design's deep
   blue, Paid's soft mint and Analytics' violet. Amber counter-orb
   kept as the family anchor. */
body.brb-seo .wd-hero__bg {
  background:
    radial-gradient(ellipse at 100% 0%, rgba(14, 165, 180, 0.55) 0%, transparent 62%),
    radial-gradient(ellipse at 16% 92%, rgba(45, 212, 214, 0.20) 0%, transparent 58%),
    radial-gradient(ellipse at 0% 100%, rgba(217, 119, 6, 0.10) 0%, transparent 70%);
}
body.brb-seo .wd-hero__headline em { color: #3FD0D8; }

/* Paid Advertising — mint dominant */
body.brb-paid .wd-hero__bg {
  background:
    radial-gradient(ellipse at 100% 0%, rgba(138, 211, 192, 0.32) 0%, transparent 60%),
    radial-gradient(ellipse at 0% 100%, rgba(217, 119, 6, 0.10) 0%, transparent 70%);
}
body.brb-paid .wd-hero__headline em { color: var(--brb-mint); }

/* Data Analytics — violet dominant */
body.brb-analytics .wd-hero__bg {
  background:
    radial-gradient(ellipse at 100% 0%, rgba(139, 92, 246, 0.42) 0%, transparent 60%),
    radial-gradient(ellipse at 0% 100%, rgba(217, 119, 6, 0.08) 0%, transparent 70%);
}
body.brb-analytics .wd-hero__headline em { color: #B49AFF; }

/* AI Automation has NO entry in this family. It was briefly given a
   deep-indigo Tier 3 dark hero on 2026-07-31, then rebuilt the same day
   as a CREAM-LED (Tier 2) page once the operator's reference mockup
   arrived — cream ground, amber accent, dark Fraunces roman over amber
   Fraunces italic. Its styles live in the AI AUTOMATION block near the
   end of this file. Do not re-add an indigo variant here. */

/* ============================================================
   STUDIO HERO — Direction 4 homepage hero (Tier 4)
   Cream-led editorial-poster composition. Distinct from .hero
   (still owned by /free-strategy-audit/) and from Tier 2 cream
   editorial heroes (.intro, .contact-hero, .ind-hero).

   Composition:
     — Cream surface with subtle warm-wash radial backdrop
     — Mint geometric block top-right (rotated 8°)
     — Amber geometric block bottom-right (rotated -4°)
     — Floating proof-point stat card (rotated -3°)
     — Oversized staggered Fraunces headline (line 2 indented)
     — 3-stat strip with Fraunces italic amber values
     — Bottom-left signature line with 32px amber bar
   ============================================================ */
.studio-hero {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  position: relative;
  overflow: hidden;
  isolation: isolate;
  padding: clamp(96px, 13vw, 180px) 0 var(--brb-hero-to-next);
  min-height: clamp(620px, 78vh, 880px);
}

/* Hero video backdrop — muted autoplay aerial reel behind a dark scrim.
   The <video> covers the section; the ::after gradient darkens the left
   (headline legibility) and the lower area (slider + CTA legibility, and
   an easy transition into the next section). Poster paints instantly;
   video streams in behind it. Reduced-motion falls back to the poster. */
.studio-hero__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  overflow: hidden;
  background: var(--brb-anchor-deep, #141414);
}
.studio-hero__video {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 42%;
}
.studio-hero__bg::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(94deg, rgba(18, 18, 18, 0.86) 0%, rgba(18, 18, 18, 0.62) 34%, rgba(18, 18, 18, 0.28) 64%, rgba(18, 18, 18, 0.10) 100%),
    linear-gradient(0deg, rgba(18, 18, 18, 0.60) 0%, rgba(18, 18, 18, 0.10) 30%, rgba(18, 18, 18, 0) 55%);
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
  .studio-hero__video { display: none; }
}

/* Mint geometric block — top-right, rotated 8° */
.studio-hero__mint-block {
  position: absolute;
  top: -8%;
  right: -6%;
  width: 38%;
  height: 78%;
  background: var(--brb-mint);
  transform: rotate(8deg);
  transform-origin: center;
  pointer-events: none;
  z-index: 1;
  border-radius: 4px;
  opacity: 0.46;
}

/* Amber geometric block — bottom-right, rotated -4° */
.studio-hero__amber-block {
  position: absolute;
  bottom: 8%;
  right: 6%;
  width: 14%;
  height: 22%;
  background: var(--brb-accent);
  transform: rotate(-4deg);
  transform-origin: center;
  pointer-events: none;
  z-index: 2;
  border-radius: 2px;
  opacity: 0.55;
}

/* Inner content column */
.studio-hero__inner {
  position: relative;
  z-index: 4;
  max-width: 720px;
}

/* Eyebrow — mint dot + uppercase tracking */
.studio-hero__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin-bottom: clamp(28px, 4vw, 44px);
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
}

.studio-hero__eyebrow-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #5BA89A;
}

/* Oversized staggered Fraunces headline */
.studio-hero__headline {
  font-family: var(--brb-font-display);
  font-size: clamp(40px, 5.4vw, 80px);
  line-height: 1.04;
  letter-spacing: -0.025em;
  font-weight: 400;
  margin-bottom: clamp(28px, 3.5vw, 40px);
  color: var(--brb-text-on-dark);
  text-shadow: 0 2px 30px rgba(0, 0, 0, 0.28);
}

.studio-hero__headline-line {
  display: block;
}

.studio-hero__headline em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

/* Sub-hero copy */
.studio-hero__sub {
  font-size: clamp(17px, 1.5vw, 20px);
  line-height: 1.6;
  color: rgba(250, 247, 242, 0.92);
  max-width: 56ch;
  margin-bottom: clamp(26px, 3.2vw, 40px);
  text-shadow: 0 1px 20px rgba(0, 0, 0, 0.30);
}

/* 3-stat strip */
.studio-hero__stats {
  display: flex;
  gap: clamp(28px, 4vw, 56px);
  padding-top: clamp(20px, 2.5vw, 28px);
  margin-bottom: clamp(36px, 4.5vw, 48px);
  border-top: 1px solid rgba(26, 26, 26, 0.08);
}

.studio-hero__stats-item {
  display: flex;
  flex-direction: column;
}

.studio-hero__stats-value {
  font-family: var(--brb-font-display);
  font-size: clamp(24px, 2.8vw, 36px);
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: -0.02em;
  margin-bottom: 6px;
}

.studio-hero__stats-value em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

.studio-hero__stats-label {
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
}

/* CTAs — primary amber, secondary ghost on anchor */
.studio-hero__ctas {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  align-items: center;
}

/* ===== Mobile composition (≤720px) =====
   Mint block flattens behind headline at lower opacity.
   Amber block hides. Stat card moves below CTAs as inline tag.
*/
@media (max-width: 720px) {
  .studio-hero {
    padding: clamp(72px, 16vw, 120px) 0 var(--brb-hero-to-next);
    min-height: 0;
  }

  .studio-hero__mint-block {
    top: 6%;
    right: -20%;
    width: 70%;
    height: 36%;
    opacity: 0.55;
    transform: rotate(6deg);
  }

  .studio-hero__amber-block {
    display: none;
  }

  .studio-hero__showcase {
    display: none;
  }

  .studio-hero__stats {
    gap: 24px;
  }
}

/* ============================================================
   STUDIO HERO CARD — H.5 dashboard flourish
   Floating dark anchor surface layered over mint geometric block.
   Three KPI tiles + rising sparkline mirror /data-analytics/
   .an-hero-dash language. Desktop-only (≥721px), aria-hidden,
   data-motion="on" gates all entry animations + parallax (set by
   homepage.js when both breakpoint and reduced-motion checks pass).
   ============================================================ */

.studio-hero__card {
  position: absolute;
  top: 18%;
  right: 6%;
  width: 300px;
  z-index: 3;
  background: var(--brb-anchor);
  border-radius: 8px;
  padding: 11px 12px 16px;
  transform: rotate(2deg);
  transform-origin: center;
  box-shadow: 0 10px 26px rgba(26, 26, 26, 0.16);
  font-family: var(--brb-font-body);
  color: var(--brb-text-on-dark);
  pointer-events: none;
}

.studio-hero__card[data-motion="on"] {
  opacity: 0;
  transform: rotate(2deg) translateY(12px);
  animation: studio-hero-card-enter 900ms cubic-bezier(0.2, 0.8, 0.2, 1) 400ms forwards;
  will-change: transform;
}

@keyframes studio-hero-card-enter {
  to {
    opacity: 1;
    transform: rotate(2deg) translateY(0);
  }
}

/* Hero showcase — client website in a browser frame, KPI card overlapping
   its corner. Composed centerpiece: "a site I built → the results it drives."
   Desktop-only flourish (hidden ≤720px); decorative (aria-hidden). */
.studio-hero__showcase {
  position: absolute;
  top: clamp(48px, 9vh, 132px);
  right: clamp(8px, 2.4vw, 52px);
  width: clamp(360px, 41vw, 560px);
  z-index: 3;
}
.studio-hero__browser {
  position: relative;
  border-radius: 12px;
  overflow: hidden;
  background: #141414;
  border: 1px solid rgba(26, 26, 26, 0.10);
  box-shadow: 0 32px 64px rgba(26, 26, 26, 0.22), 0 8px 20px rgba(26, 26, 26, 0.12);
}
/* The dashboard card becomes the secondary, overlapping element — repositioned
   to spill over the browser's bottom-left corner (parallax still applies). */
.studio-hero__showcase .studio-hero__card {
  top: auto;
  right: auto;
  bottom: -24px;
  left: -28px;
  width: clamp(186px, 16vw, 224px);
  z-index: 4;
}

/* 721–1159px: not enough horizontal room for the browser + text column.
   Fall back to the KPI card alone at its original spot (browser hidden). */
@media (min-width: 721px) and (max-width: 1159px) {
  .studio-hero__browser { display: none; }
  .studio-hero__showcase { top: 18%; right: 6%; width: 300px; }
  .studio-hero__showcase .studio-hero__card {
    position: static;
    top: auto; right: auto; bottom: auto; left: auto;
    width: 100%;
  }
}

.studio-hero__card-chrome {
  display: flex;
  align-items: center;
  gap: 5px;
  margin-bottom: 9px;
}

.studio-hero__card-chrome-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: rgba(250, 247, 242, 0.18);
  flex-shrink: 0;
}

.studio-hero__card-status {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-left: auto;
}

.studio-hero__card-live-dot {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--brb-mint);
}

.studio-hero__card[data-motion="on"] .studio-hero__card-live-dot {
  animation: studio-hero-card-pulse 2s ease-out infinite;
}

@keyframes studio-hero-card-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(138, 211, 192, 0.55); }
  70%  { box-shadow: 0 0 0 6px rgba(138, 211, 192, 0); }
  100% { box-shadow: 0 0 0 0 rgba(138, 211, 192, 0); }
}

.studio-hero__card-status-label {
  font-size: 9px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(250, 247, 242, 0.5);
  font-weight: 500;
}

.studio-hero__card-tiles {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 5px;
  margin-bottom: 14px;
}

.studio-hero__card-tile {
  background: rgba(250, 247, 242, 0.04);
  border-radius: 4px;
  padding: 13px 8px;
}

.studio-hero__card[data-motion="on"] .studio-hero__card-tile {
  opacity: 0;
  transform: translateY(4px);
  animation: studio-hero-card-tile-enter 500ms cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}

.studio-hero__card[data-motion="on"] .studio-hero__card-tile:nth-child(1) { animation-delay: 1000ms; }
.studio-hero__card[data-motion="on"] .studio-hero__card-tile:nth-child(2) { animation-delay: 1150ms; }
.studio-hero__card[data-motion="on"] .studio-hero__card-tile:nth-child(3) { animation-delay: 1300ms; }

@keyframes studio-hero-card-tile-enter {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.studio-hero__card-tile-value {
  font-family: var(--brb-font-display);
  font-size: 14px;
  font-weight: 500;
  line-height: 1;
  color: var(--brb-text-on-dark);
  margin-bottom: 2px;
}

.studio-hero__card-tile-trend {
  font-size: 9px;
  color: var(--brb-mint);
  font-weight: 500;
  margin-bottom: 2px;
}

.studio-hero__card-tile-label {
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(250, 247, 242, 0.5);
  font-weight: 500;
}

.studio-hero__card-spark {
  display: block;
  width: 100%;
  height: 44px;
  overflow: visible;
}

.studio-hero__card-spark-line {
  fill: none;
  stroke: var(--brb-accent);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 240;
  stroke-dashoffset: 240;
}

.studio-hero__card[data-motion="on"] .studio-hero__card-spark-line {
  animation: studio-hero-card-spark-draw 1400ms cubic-bezier(0.4, 0, 0.2, 1) 1600ms forwards;
}

@keyframes studio-hero-card-spark-draw {
  to { stroke-dashoffset: 0; }
}

.studio-hero__card-spark-fill {
  fill: var(--brb-accent);
  fill-opacity: 0;
  stroke: none;
}

.studio-hero__card[data-motion="on"] .studio-hero__card-spark-fill {
  animation: studio-hero-card-spark-fill-in 800ms cubic-bezier(0.4, 0, 0.2, 1) 2700ms forwards;
}

@keyframes studio-hero-card-spark-fill-in {
  to { fill-opacity: 0.10; }
}

/* Reduced-motion defense-in-depth — JS in homepage.js already short-circuits
   data-motion="on" when prefers-reduced-motion matches at init time. This
   block is the CSS belt-and-suspenders: catches edge cases where JS errors
   elsewhere prevent the parallax-block guard from running, where future
   refactors forget the JS check, and where the OS-level preference flips
   mid-session (one-shot JS init can't catch that). */
@media (prefers-reduced-motion: reduce) {
  .studio-hero__card[data-motion="on"],
  .studio-hero__card[data-motion="on"] .studio-hero__card-tile,
  .studio-hero__card[data-motion="on"] .studio-hero__card-live-dot,
  .studio-hero__card[data-motion="on"] .studio-hero__card-spark-line,
  .studio-hero__card[data-motion="on"] .studio-hero__card-spark-fill {
    animation: none !important;
  }

  .studio-hero__card[data-motion="on"] {
    opacity: 1;
    transform: rotate(2deg);
  }

  .studio-hero__card[data-motion="on"] .studio-hero__card-tile {
    opacity: 1;
    transform: none;
  }

  .studio-hero__card[data-motion="on"] .studio-hero__card-spark-line {
    stroke-dashoffset: 0;
  }

  .studio-hero__card[data-motion="on"] .studio-hero__card-spark-fill {
    fill-opacity: 0.10;
  }
}

/* ============================================================
   STUDIO SERVICES — Direction 4 H.1.5
   Cream-led 4-card asymmetric grid. Web Design featured (slightly
   larger via 1.4fr column on desktop) + Door-opener tag. SEO / Paid
   Ads / Analytics complete the family. Card sub-copies deliberately
   structurally varied per Pattern 30 — uniform card heights/lengths
   defeat the purpose; cards adjust to copy variance, not the reverse.

   Cards use Pattern 31 white-fill-on-cream pattern (matches Industries
   jump-link pills): white background + soft 1px lift shadow + amber
   border on hover with faint amber tint. Tint is 0.04 (fainter than
   Industries pills' 0.06) because cards carry more visual weight.

   Markup discipline (Pattern 34): nested .wrap container; component
   inner is not dual-classed with .wrap. Container-edge alignment
   (Pattern 35) shares nav logo anchor.
   ============================================================ */

/* =============================================================================
   H.2.1 — Section 04 Who (.studio-who)
   ----------------------------------------------------------------------------
   H.2.1.1 (v1.39.58): white-fill chrome on .studio-who__inner dropped;
   amber offset-frame restored on the portrait per pre-revamp pattern
   (commit 63e0f51^ source: .who__photo-block / .who__photo-frame /
   .who__photo-accent). The section now sits on plain cream, with the
   portrait carrying the editorial gesture — outline frame in amber,
   offset down-right behind the photo, deepens on hover.

   Pattern 34 markup shape: <section.studio-who> > .wrap > .studio-who__inner.
   Inner does NOT dual-class with .wrap (wrap owns width + page padding;
   inner owns layout grid).

   Pattern 35 alignment: leftmost element (portrait) anchors to nav-logo
   glyph horizontal at ~207px on a 1440 viewport.

   Editorial flourish discipline: text signature line under portrait acts as
   asset fallback (handwritten SVG not yet authored — flagged for follow-up).
   Signature hides at ≤720px per playbook §10 flourish-survival rule.
   ============================================================================= */
/* DARK (2026-08-03). Flipped as part of the operator's "make the cream and
   dark background alternate so it's every other" pass — .studio-aisearch above
   is cream, so this had to become the dark half of the pair. See the tone map
   in docs/site-page-inventory.md for the full sequence. */
.studio-who {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: var(--brb-section-pad) 0;
  position: relative;
  isolation: isolate;
}

.studio-who__inner {
  padding: clamp(8px, 1.5vw, 16px) 0;
  display: grid;
  grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
  gap: clamp(36px, 5vw, 72px);
  align-items: center;
}

.studio-who__media {
  display: flex;
  flex-direction: column;
  gap: clamp(16px, 1.8vw, 24px);
}

.studio-who__photo {
  position: relative;
  aspect-ratio: 4 / 5;
  width: 100%;
  max-width: 420px;
}

.studio-who__photo-frame {
  position: relative;
  width: 100%;
  height: 100%;
  border-radius: 6px;
  overflow: hidden;
  z-index: 2;
  background: var(--brb-surface);
  box-shadow:
    0 24px 48px -18px rgba(26, 26, 26, 0.28),
    0 8px 18px -10px rgba(26, 26, 26, 0.14);
}

.studio-who__photo-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

.studio-who__photo-accent {
  position: absolute;
  top: 16px;
  left: 16px;
  width: 100%;
  height: 100%;
  border: 2px solid var(--brb-accent);
  border-radius: 6px;
  z-index: 1;
  opacity: 0.45;
  pointer-events: none;
  transition: top 600ms var(--brb-ease),
              left 600ms var(--brb-ease),
              opacity 600ms var(--brb-ease);
}

.studio-who__photo:hover .studio-who__photo-accent {
  top: 20px;
  left: 20px;
  opacity: 0.65;
}

.studio-who__content {
  display: flex;
  flex-direction: column;
}

.studio-who__eyebrow {
  display: inline-block;
  margin-bottom: clamp(16px, 2vw, 24px);
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-muted);
}

.studio-who__headline {
  font-family: var(--brb-font-display);
  font-size: clamp(40px, 5.4vw, 64px);
  line-height: 1.05;
  letter-spacing: -0.03em;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  margin: 0 0 clamp(24px, 3vw, 36px);
}

.studio-who__headline em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

.studio-who__body {
  font-family: var(--brb-font-body);
  font-size: clamp(15px, 1.2vw, 17px);
  line-height: 1.7;
  color: var(--brb-text-on-dark-muted);
  margin: 0 0 clamp(16px, 1.6vw, 20px);
  max-width: 56ch;
}

.studio-who__body a {
  color: var(--brb-text-on-dark);
  border-bottom: 1px solid var(--brb-accent);
  text-decoration: none;
  transition: color 200ms var(--brb-ease);
}

.studio-who__body a:hover {
  color: var(--brb-accent);
}

.studio-who__ctas {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

/* Tablet — keep two-column but loosen padding */
@media (max-width: 960px) {
  .studio-who__inner {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
    gap: clamp(28px, 4vw, 48px);
  }

  .studio-who__photo {
    max-width: 360px;
  }
}

/* Mobile — stack vertically; signature hidden per editorial flourish discipline */
@media (max-width: 720px) {
  .studio-who {
    padding: clamp(56px, 12vw, 88px) 0;
  }

  .studio-who__inner {
    grid-template-columns: 1fr;
    gap: clamp(28px, 5vw, 40px);
    padding: clamp(32px, 7vw, 48px) clamp(20px, 5vw, 32px);
  }

  .studio-who__media {
    align-items: center;
  }

  .studio-who__photo {
    max-width: 360px;
  }

  .studio-who__headline {
    font-size: clamp(34px, 8vw, 44px);
  }
}

/* .studio-process (H.6.1 "The process" band) REMOVED 2026-08-03 with its
   markup — operator asked for the section to go. The .shero-phone* rules went
   with it: a first pass kept them on the assumption the hero also rendered that
   phone, but `grep -rn shero-phone theme/brb-theme/*.php` returned nothing after
   the delete — .proc-media was its only consumer. Verified, not assumed, because
   orphan CSS is exactly the silent failure in Gotcha #79. See page-homepage.php
   for the markup-side note. */

/* ============================================================
   Homepage ad-energy redesign (2026-06) — hero accent line +
   frosted service cards (replace credential stats) + SLO-Mission
   phone re-homed into the process band as a 2-col feature.
   Pairs with .studio-hero / .studio-process above.
   ============================================================ */

/* tighten hero rhythm so service cards + CTAs sit above the fold */
.studio-hero { padding-top: clamp(80px, 9.5vw, 124px); }
.studio-hero__eyebrow { margin-bottom: clamp(16px, 2.4vw, 24px); }
.studio-hero__headline { margin-bottom: clamp(12px, 1.8vw, 20px); }

/* hero accent line (under the sub) */
.studio-hero__accent {
  font-family: var(--brb-font-display);
  font-style: italic;
  font-size: clamp(15px, 1.3vw, 18px);
  line-height: 1.4;
  color: var(--brb-accent-hover);
  margin: 0 0 clamp(12px, 1.8vw, 18px);
  max-width: 56ch;
  text-shadow: 0 1px 10px rgba(250, 247, 242, 0.85);
}

/* hero service cards (frosted glass, gradient icon chips, hover lift) */
/* (hero service list removed per operator — services live in the system section + nav) */

/* ---- Hero site slider (Squarespace-style center + peek carousel) ---- */
.studio-slider { position: relative; width: 100%; }
.studio-slider__viewport { overflow: hidden; padding: 22px 0; }
.studio-slider__track {
  position: relative;
  display: flex;
  gap: 20px;
  transition: transform 0.6s cubic-bezier(0.4, 0, 0.1, 1);
  will-change: transform;
}
.studio-slider__card {
  flex: 0 0 74%;
  margin: 0;
  border-radius: 14px;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 24px 50px -24px rgba(26, 26, 26, 0.45);
  opacity: 0.38;
  transform: scale(0.9);
  transition: opacity 0.55s var(--brb-ease), transform 0.55s var(--brb-ease), box-shadow 0.55s var(--brb-ease);
}
.studio-slider__card.is-active {
  opacity: 1;
  transform: scale(1);
  box-shadow: 0 40px 80px -30px rgba(26, 26, 26, 0.55);
}
.studio-slider__card img {
  display: block; width: 100%; height: auto;
  /* Every slider capture is 16:10 (1440x900). Locking the ratio means a
     stray odd-sized screenshot gets cropped rather than leaving the card's
     white background exposed below it (flex stretches cards to the tallest). */
  aspect-ratio: 16 / 10; object-fit: cover; object-position: top center;
}
.studio-slider__track { align-items: flex-start; }
.studio-slider__ui {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-top: 4px;
}
.studio-slider__dots { display: flex; align-items: center; gap: 8px; }
.studio-slider__pip {
  width: 8px; height: 8px;
  border: 0; padding: 0;
  border-radius: 99px;
  background: rgba(26, 26, 26, 0.2);
  cursor: pointer;
  transition: background 0.25s var(--brb-ease), width 0.25s var(--brb-ease);
}
.studio-slider__pip.is-active { background: var(--brb-accent); width: 22px; }
/* Prev/next arrow pair — flanks the dots; matches the former pill treatment
   (white raised pill on the dark hero band) so it reads in the same spot. */
.studio-slider__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  padding: 0;
  color: var(--brb-text);
  background: var(--brb-surface-raised);
  border: 1px solid rgba(26, 26, 26, 0.12);
  border-radius: 99px;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(26, 26, 26, 0.08);
  transition: transform 0.2s var(--brb-ease), box-shadow 0.2s var(--brb-ease), border-color 0.2s var(--brb-ease), color 0.2s var(--brb-ease);
}
.studio-slider__arrow svg { width: 16px; height: 16px; display: block; }
.studio-slider__arrow:hover { transform: translateY(-2px); border-color: rgba(217, 119, 6, 0.5); color: var(--brb-accent); box-shadow: 0 8px 20px rgba(26, 26, 26, 0.12); }
.studio-slider__arrow:active { transform: scale(0.94); }
.studio-slider__arrow:focus-visible { outline: 2px solid var(--brb-accent); outline-offset: 2px; }
/* Desktop drag affordance on the track */
.studio-slider__track { cursor: grab; }
.studio-slider__track.is-grabbing { cursor: grabbing; }

/* ============================================================
   Homepage hero — centered layout + full-width peek-carousel band (round 3)
   Text centers over the desert; the slider becomes a Squarespace-style
   centered band below it; dark CTA (hero-scoped); trust bar restored
   with a single SVG star. Mint/amber blocks dropped from markup.
   ============================================================ */
.studio-hero { padding: clamp(68px, 8.5vw, 116px) 0 clamp(48px, 6vw, 80px); }
.studio-hero__bg::after {
  background: linear-gradient(180deg, rgba(250, 247, 242, 0.54) 0%, rgba(250, 247, 242, 0.4) 46%, rgba(250, 247, 242, 0.28) 100%);
}
.studio-hero__inner { max-width: min(1080px, 100%); margin: 0 auto; text-align: center; }
/* eyebrow centered above the headline (restored round 4) */
.studio-hero__eyebrow { margin-bottom: clamp(18px, 2.2vw, 30px); }
.studio-hero__headline { font-size: clamp(40px, 5.1vw, 74px); margin-top: 0; margin-bottom: clamp(24px, 3vw, 40px); }
/* sub matches the .studio-who body treatment — softer muted grey, lighter weight */
.studio-hero__sub { margin: 0 auto clamp(24px, 2.8vw, 36px); max-width: 56ch; color: #4a4a47; font-size: clamp(16px, 1.3vw, 18px); line-height: 1.7; }
.studio-hero__ctas { justify-content: center; }

/* dark primary CTA — hero only (orange CTAs elsewhere unchanged) */
.studio-hero__ctas .btn--primary { background: rgba(26, 26, 26, 0.82); color: var(--brb-text-on-dark); border-color: rgba(26, 26, 26, 0.22); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }

/* Above-the-fold legibility pass (2026-07-16, operator ask): the eyebrow,
   sub paragraph, and stat labels ran muted-gray over the mid-tone dunes.
   Calmer wash behind the text zone + darker warm-charcoal text tokens. */
.studio-hero__bg::after {
  background: linear-gradient(180deg, rgba(250, 247, 242, 0.68) 0%, rgba(250, 247, 242, 0.58) 50%, rgba(250, 247, 242, 0.30) 100%);
}
.studio-hero__eyebrow { color: #3B3B37; font-weight: 600; }
.studio-hero__sub { color: #33332F; }
.studio-hero__stats { border-top-color: rgba(26, 26, 26, 0.18); }
.studio-hero__stats-label { color: #3B3B37; }
.studio-hero__ctas .btn--primary:hover { background: rgba(26, 26, 26, 0.94); border-color: rgba(26, 26, 26, 0.4); }

/* trust bar — centered; single star on the 5.0 stat */
.studio-hero__stats { justify-content: center; width: fit-content; max-width: 100%; margin: clamp(22px, 2.6vw, 34px) auto 0; list-style: none; padding: clamp(14px, 1.6vw, 18px) 0 0; gap: clamp(20px, 2.6vw, 38px); flex-wrap: wrap; }
.studio-hero__stats-item { align-items: center; text-align: center; }
.studio-hero__stats-value { display: inline-flex; align-items: center; gap: 4px; font-size: clamp(18px, 1.8vw, 24px); }
.studio-hero__stats-label { font-size: 10px; }
.studio-hero__star { width: 0.5em; height: 0.5em; color: var(--brb-accent); flex: none; }

/* full-width peek-carousel band below the centered content (≈half visible above the fold) */
.studio-hero__carousel { position: relative; z-index: 2; margin-top: clamp(30px, 3.8vw, 56px); }
.studio-slider__viewport { padding: clamp(18px, 2.4vw, 34px) 0; perspective: 2000px; }
.studio-slider__track { transform-style: preserve-3d; gap: clamp(26px, 2.8vw, 42px); }
.studio-slider__card { flex: 0 0 42vw; max-width: 700px; }
.studio-slider__ui { width: min(1080px, 92vw); margin: clamp(16px, 2vw, 26px) auto 0; justify-content: center; }
.studio-slider__ui .studio-slider__next { margin-left: clamp(8px, 1.2vw, 16px); }

/* Squarespace-style coverflow arc — the two cards flanking the featured site
   angle inward in 3D, forming a shallow arc. Immediate neighbors only
   (JS marks .is-left / .is-right); far cards keep the flat dim/scale. */
.studio-slider__card.is-active { z-index: 3; }
.studio-slider__card.is-left {
  opacity: 0.45;
  transform: scale(0.9) translateZ(-130px) rotateY(28deg);
  transform-origin: right center;
}
.studio-slider__card.is-right {
  opacity: 0.45;
  transform: scale(0.9) translateZ(-130px) rotateY(-28deg);
  transform-origin: left center;
}
@media (max-width: 760px) {
  .studio-slider__card { flex: 0 0 82vw; }
  .studio-hero__carousel { margin-top: 24px; }
  /* flatten the arc on mobile — only the featured card shows */
  .studio-slider__viewport { perspective: none; }
  .studio-slider__card.is-left,
  .studio-slider__card.is-right { transform: scale(0.9); }
}

/* ============================================================
   Homepage hero — DARK VIDEO variant (2026-07 redesign).
   Supersedes the round-3 "centered cream" hero above. Scoped to
   .studio-hero--video (0,2,x specificity) so it wins over the
   single-class .studio-hero__* refinements regardless of source
   order. Content left-aligns over the dark-left scrim; text goes
   on-dark; primary CTA returns to amber; slider pips lighten.
   ============================================================ */
.studio-hero--video .studio-hero__bg::after {
  background:
    linear-gradient(94deg, rgba(18, 18, 18, 0.86) 0%, rgba(18, 18, 18, 0.60) 34%, rgba(18, 18, 18, 0.26) 64%, rgba(18, 18, 18, 0.08) 100%),
    linear-gradient(0deg, rgba(18, 18, 18, 0.62) 0%, rgba(18, 18, 18, 0.10) 30%, rgba(18, 18, 18, 0) 55%);
}

/* Nav-contrast fix, overlay templates only: the 94deg scrim above thins to
   0.08 alpha exactly where the nav links sit, so a top band joins the
   stack as a third layer here rather than restacking a new element. */
.brb-nav-overlay .studio-hero--video .studio-hero__bg::after {
  background:
    linear-gradient(180deg, rgba(18, 18, 18, 0.62) 0%, rgba(18, 18, 18, 0.28) 12%, rgba(18, 18, 18, 0) 22%),
    linear-gradient(94deg, rgba(18, 18, 18, 0.86) 0%, rgba(18, 18, 18, 0.60) 34%, rgba(18, 18, 18, 0.26) 64%, rgba(18, 18, 18, 0.08) 100%),
    linear-gradient(0deg, rgba(18, 18, 18, 0.62) 0%, rgba(18, 18, 18, 0.10) 30%, rgba(18, 18, 18, 0) 55%);
}

.studio-hero--video .studio-hero__inner {
  max-width: 640px;
  margin: 0;
  text-align: left;
}
.studio-hero--video .studio-hero__headline {
  color: var(--brb-text-on-dark);
  text-shadow: 0 2px 30px rgba(0, 0, 0, 0.35);
}
.studio-hero--video .studio-hero__sub {
  color: rgba(250, 247, 242, 0.92);
  max-width: 52ch;
  margin-left: 0;
  margin-right: 0;
  text-shadow: 0 1px 20px rgba(0, 0, 0, 0.35);
}
.studio-hero--video .studio-hero__ctas {
  justify-content: flex-start;
}
.studio-hero--video .studio-hero__ctas .btn--primary {
  background: var(--brb-accent);
  color: var(--brb-anchor);
  border-color: transparent;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
.studio-hero--video .studio-hero__ctas .btn--primary:hover,
.studio-hero--video .studio-hero__ctas .btn--primary:focus-visible {
  /* Fix round 1, Finding 1: the base .btn--primary:hover color flip
     (0,2,0) loses to this scope's unconditional rest-state color
     (0,3,0) above, so it never actually applies here — without this,
     the label matches the risen ::before ink color and disappears.
     This selector must win at (0,4,0) or higher. */
  background: var(--brb-accent-hover);
  color: var(--brb-text-on-dark);
  border-color: transparent;
}
.studio-hero--video .studio-slider__pip {
  background: rgba(250, 247, 242, 0.32);
}
.studio-hero--video .studio-slider__pip.is-active {
  background: var(--brb-accent);
}
@media (max-width: 720px) {
  .studio-hero--video .studio-hero__inner { max-width: 100%; }
}

.brb-nav-overlay .studio-hero {
  margin-top: calc(var(--brb-header-h, 117px) * -1);
  padding-top: calc(var(--brb-header-h, 117px) + clamp(24px, 4vw, 56px));
}

/* (flagship analytics-card placement reverted — section uses its original 3 plain metric tiles) */

/* =============================================================================
   H.2.2 — Section 05 Flagship (.studio-flagship)
   ----------------------------------------------------------------------------
   Anchor dark surface (#1A1A1A) — page's first intentional dark break after
   four cream/raised sections. Editorial spread inside .wrap: narrative left,
   four-stat metric block right. Inline amber-underlined link as CTA — Final
   CTA carries the page's conversion weight, this section earns its proof
   register without competing.

   Pattern 34 markup shape: <section.studio-flagship> > .wrap > __inner.
   Inner does NOT dual-class with .wrap.

   Pattern 35 alignment: content edge sits flush with .wrap content edge,
   anchoring the headline (and metric block top edge) to the nav-logo glyph
   horizontal at ~207px on a 1440 viewport.

   Editorial flourish discipline: metric block is load-bearing (carries the
   proof). No geometric accents — section map § Section 05 doesn't specify any.
   Mobile keeps the 4-row vertical stack for the metric block (no 2x2 collapse)
   so proof reads as a vertical column on narrow viewports.
   ============================================================================= */
/* CREAM (2026-08-03). Was the page's "anchor dark surface"; flipped in the
   alternation pass because .studio-who above it became dark. It was also
   followed by the dark .studio-trustbar, which has since been removed — so
   this section now runs cream into the cream .studio-reviews. That repeat is
   unavoidable rather than an oversight (ten bands, dark at both ends — see the
   parity note in page-homepage.php where the strip used to be). The proof
   register survives the flip either way: the metric numbers were always the
   loudest thing here, and they read as well in ink on cream as in cream on
   ink. */
.studio-flagship {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding: var(--brb-section-pad) 0;
  position: relative;
  isolation: isolate;
}

.studio-flagship__inner {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap: clamp(40px, 6vw, 96px);
  align-items: start;
}

.studio-flagship__content {
  display: flex;
  flex-direction: column;
}

.studio-flagship__eyebrow {
  display: inline-block;
  margin-bottom: clamp(20px, 2.4vw, 28px);
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
}

.studio-flagship__headline {
  font-family: var(--brb-font-display);
  font-size: clamp(36px, 5vw, 60px);
  line-height: 1.05;
  letter-spacing: -0.025em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 clamp(24px, 3vw, 36px);
  max-width: 18ch;
}

.studio-flagship__headline em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

/* BUG FIX 2026-08-03. When this section flipped dark -> cream, this rule was
   missed and kept --brb-text-on-dark-muted (#A9A7A1), i.e. a light-grey token
   meant for dark surfaces, sitting on cream: 2.25:1, well under the 4.5:1 AA
   floor for body text. That is what the operator was reading as "hard to read"
   — not a preference, a contrast failure I introduced.
   --brb-ink (13.46:1) rather than --brb-text-muted (6.01:1): this paragraph
   carries the section's whole argument next to 72px metric numbers, and it
   stays a step softer than the #1A1A1A headline so the hierarchy holds. */
.studio-flagship__body {
  font-family: var(--brb-font-body);
  font-size: clamp(15px, 1.2vw, 17px);
  line-height: 1.7;
  color: var(--brb-ink);
  margin: 0 0 clamp(24px, 3vw, 36px);
  max-width: 56ch;
}

/* Inline amber-underlined link, matching the .studio-services__card-link
   on-cream pattern (2026-08-03: section flipped back to cream, so this returns
   to the ink-on-cream colour it was originally derived from). */
.studio-flagship__cta-inline {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  align-self: flex-start;
  font-family: var(--brb-font-body);
  font-size: 14px;
  font-weight: 500;
  color: var(--brb-text);
  text-decoration: none;
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 2px;
  transition: gap 200ms var(--brb-ease), color 200ms var(--brb-ease);
}

.studio-flagship__cta-inline:hover {
  gap: 10px;
  color: var(--brb-accent);
}

/* Metric block — 4-row vertical stack. Numbers right-aligned consistently;
   labels uppercase Space Grotesk below each value. Subtle 1px divider between rows
   keeps the column read as a unit without crowding the numbers. */
.studio-flagship__metrics {
  display: flex;
  flex-direction: column;
  gap: clamp(20px, 2.4vw, 28px);
  padding-top: clamp(8px, 1vw, 12px);
}

.studio-flagship__metric {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  text-align: right;
  padding-bottom: clamp(20px, 2.4vw, 28px);
  border-bottom: 1px solid var(--brb-border);
}

.studio-flagship__metric:last-child {
  padding-bottom: 0;
  border-bottom: none;
}

.studio-flagship__metric-value {
  font-family: var(--brb-font-display);
  font-size: clamp(44px, 6vw, 72px);
  line-height: 1;
  letter-spacing: -0.03em;
  font-weight: 400;
  color: var(--brb-text);
}

.studio-flagship__metric-value em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
  font-size: 0.7em;
  margin-left: 2px;
}

.studio-flagship__metric-label {
  margin-top: 8px;
  font-family: var(--brb-font-body);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
}

/* Tablet — keep two-column but tighten gap */
@media (max-width: 960px) {
  .studio-flagship__inner {
    grid-template-columns: minmax(0, 1fr) minmax(0, 0.9fr);
    gap: clamp(32px, 4vw, 56px);
  }
}

/* Mobile — stack narrative above metric block; metrics keep 4-row stack
   per editorial flourish discipline (proof reads better as vertical column) */
@media (max-width: 720px) {
  .studio-flagship {
    padding: clamp(56px, 12vw, 88px) 0;
  }

  .studio-flagship__inner {
    grid-template-columns: 1fr;
    gap: clamp(40px, 8vw, 56px);
  }

  .studio-flagship__headline {
    font-size: clamp(30px, 8vw, 40px);
  }

  .studio-flagship__metric {
    align-items: flex-start;
    text-align: left;
  }

  .studio-flagship__metric-value {
    font-size: clamp(38px, 10vw, 52px);
  }
}

.studio-services {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  position: relative;
  overflow: hidden;
  isolation: isolate;
  padding: clamp(72px, 9vw, 120px) 0;
}

/* Warm-wash backdrop tuned for dark surface (H.1.5.1) — slightly stronger
   amber/mint glows so they read against #1A1A1A */
.studio-services__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background:
    radial-gradient(ellipse at 100% 0%, rgba(217, 119, 6, 0.10) 0%, transparent 60%),
    radial-gradient(ellipse at 0% 100%, rgba(138, 211, 192, 0.08) 0%, transparent 65%);
}

/* Mint geometric accent — smaller than hero block; reads as smaller-sibling */
.studio-services__mint-block {
  position: absolute;
  top: 10%;
  right: -5%;
  width: 28%;
  height: 50%;
  background: var(--brb-mint);
  opacity: 0.92;
  transform: rotate(6deg);
  transform-origin: center;
  pointer-events: none;
  z-index: 1;
  border-radius: 4px;
}

.studio-services__inner {
  position: relative;
  z-index: 4;
}

/* Section header */
.studio-services__head {
  margin-bottom: clamp(40px, 5vw, 64px);
  max-width: 720px;
}

.studio-services__eyebrow {
  display: inline-block;
  margin-bottom: clamp(16px, 2vw, 24px);
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-muted);
}

.studio-services__headline {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4.5vw, 56px);
  line-height: 1.06;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  margin: 0;
  max-width: 22ch;
}

.studio-services__headline em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

/* 4-card asymmetric grid — Web Design featured (1.4fr) on desktop */
.studio-services__grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: clamp(16px, 1.6vw, 24px);
}

/* Card base — H.1.5.1 cream-fill-on-dark (was white-fill-on-cream).
   Card text colors unchanged per H.1.5.1 minimal-scope mandate. */
.studio-services__card {
  display: flex;
  flex-direction: column;
  background: var(--brb-surface);
  border: 1px solid var(--brb-border);
  border-radius: 8px;
  padding: clamp(24px, 2.6vw, 32px);
  text-decoration: none;
  color: inherit;
  box-shadow: 0 1px 2px rgba(26, 26, 26, 0.04);
  transition: background 200ms var(--brb-ease),
              border-color 200ms var(--brb-ease),
              transform 200ms var(--brb-ease),
              box-shadow 200ms var(--brb-ease);
}

/* H.3.5 — hover regression fix. Pre-fix used rgba amber 0.04 which was
   ~4% opaque on a dark section, causing the card to read as see-through.
   New treatment: opaque slightly-darker cream + amber border + 2px lift +
   deeper shadow. Card text colors unchanged. */
.studio-services__card:hover {
  background: #F5F0E5;
  border-color: var(--brb-accent);
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.18);
}

/* Featured modifier — slightly more vertical breathing room.
   Column-span comes from the 1.4fr first track in __grid. */
.studio-services__card--featured {
  padding: clamp(28px, 3vw, 40px) clamp(24px, 2.6vw, 32px);
}

/* Door-opener tag — amber uppercase eyebrow above card title */
.studio-services__card-tag {
  display: inline-block;
  margin-bottom: 12px;
  font-family: var(--brb-font-body);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-accent);
}

.studio-services__card-title {
  font-family: var(--brb-font-display);
  font-size: clamp(22px, 2.2vw, 28px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 clamp(12px, 1.4vw, 16px);
}

/* Sub-copy — Pattern 30 voice mandate: card heights adjust to copy
   variance, not the reverse. No min-height / line-clamp / truncation. */
.studio-services__card-sub {
  font-family: var(--brb-font-body);
  font-size: clamp(14px, 1.1vw, 15px);
  line-height: 1.6;
  color: var(--brb-text-muted);
  margin: 0 0 clamp(20px, 2.2vw, 28px);
  flex: 1;
}

.studio-services__card-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--brb-font-body);
  font-size: 14px;
  font-weight: 500;
  color: var(--brb-text);
  align-self: flex-start;
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 2px;
  transition: gap 200ms var(--brb-ease);
}

.studio-services__card:hover .studio-services__card-link {
  gap: 10px;
}

/* Tablet — 2 columns x 2 rows; Web Design retains featured styling */
@media (max-width: 899px) {
  .studio-services__grid {
    grid-template-columns: 1fr 1fr;
  }
}

/* Mobile — single column stack; Web Design first */
@media (max-width: 720px) {
  .studio-services {
    padding: clamp(56px, 12vw, 88px) 0;
  }

  .studio-services__mint-block {
    top: -4%;
    right: -22%;
    width: 60%;
    height: 28%;
    opacity: 0.55;
    transform: rotate(5deg);
  }

  .studio-services__grid {
    grid-template-columns: 1fr;
  }

  .studio-services__card--featured {
    /* On stacked mobile, padding parity removes the desktop emphasis */
    padding: clamp(24px, 2.6vw, 32px);
  }
}

/* v1.40.35 — Locations strip below 4-card grid.
   Inline list of 6 location-service pages (SLO + Paso × Web/SEO/Paid).
   Routes internal-link authority from homepage → orphaned geo pages so
   Google ranks the right page for geo-tagged queries (was: /contact/
   outranking /website-design-san-luis-obispo/ for "web design san luis
   obispo"). Visually subtle muted strip; horizontally scrolls on mobile.   */
.studio-services__locations {
  margin: clamp(32px, 3.6vw, 48px) 0 0;
  padding: clamp(16px, 1.6vw, 22px) clamp(20px, 2.4vw, 32px);
  border-top: 1px solid color-mix(in srgb, var(--brb-text-muted) 25%, transparent);
  font-family: var(--brb-font-body);
  font-size: clamp(13px, 1.05vw, 14px);
  line-height: 1.8;
  color: var(--brb-text-muted);
  text-align: center;
}

.studio-services__locations-label {
  display: inline-block;
  margin-right: 8px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  font-size: clamp(11px, 0.9vw, 12px);
  color: var(--brb-text);
}

.studio-services__locations a {
  color: inherit;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  text-decoration-color: color-mix(in srgb, var(--brb-text-muted) 40%, transparent);
  transition: color 200ms var(--brb-ease), text-decoration-color 200ms var(--brb-ease);
}

.studio-services__locations a:hover {
  color: var(--brb-accent);
  text-decoration-color: var(--brb-accent);
  text-decoration-thickness: 2px;
}

.studio-services__locations-sep {
  margin: 0 6px;
  opacity: 0.6;
}

/* v1.40.36 — Mobile: stack the 6 links vertically (was: horizontal scroll
   which forced swipe UX). Label becomes a heading, links stack as a tap-
   friendly list, separator dots hidden. */
@media (max-width: 720px) {
  .studio-services__locations {
    text-align: left;
    line-height: 1.6;
    padding: 20px 24px;
  }
  .studio-services__locations-label {
    display: block;
    margin: 0 0 12px;
    margin-right: 0;
  }
  .studio-services__locations a {
    display: block;
    padding: 8px 0;
    font-size: 15px;
  }
  .studio-services__locations-sep {
    display: none;
  }
}

/* =============================================================================
   H.3.1 — Section 07 Recent work (.studio-work)
   ----------------------------------------------------------------------------
   Cream-led editorial-poster work section. Replaces dark .work block.
   Pattern 31 white-fill-on-cream tiles, asymmetric grid (1.4fr featured +
   stacked column of 1fr/1fr). Pattern 34 markup shape:
     <section.studio-work> > .wrap > .studio-work__inner.
   Self-contained overflow-x: hidden; not added to the cross-section rule
   at lines ~150 (which is stale and pending H.3.3 closeout audit).
   ============================================================================= */

.studio-work {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding-block: var(--brb-section-pad);
  overflow-x: hidden;
}

.studio-work__title {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4.5vw, 56px);
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--brb-text-on-dark);
  margin-block: 0.5rem 2.5rem;
  max-width: 22ch;
}

/* H.3.1.1 — homepage work grid. Three-column at desktop, single
   column at mobile. Card component itself (.studio-work__card) is
   defined below — a homepage-scoped fork, not an edit to /work/'s
   .sleeve component. */
.studio-work__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(28px, 3vw, 44px);
}

.studio-work__cta-wrap {
  margin-top: 2rem;
}

.studio-work__cta {
  font-size: 14px;
  color: var(--brb-text-on-dark);
  border-bottom: 1px solid rgba(250, 247, 242, 0.3);
  padding-bottom: 2px;
  text-decoration: none;
  transition: border-color 200ms var(--brb-ease),
              color 200ms var(--brb-ease);
}

.studio-work__cta:hover,
.studio-work__cta:focus-visible {
  color: var(--brb-accent);
  border-color: var(--brb-accent);
}

@media (max-width: 880px) {
  .studio-work__grid {
    grid-template-columns: 1fr;
  }
}

/* ============================================================
   07 · Recent work — Direction E screenshot cards
   Homepage-scoped fork; .sleeve stays untouched for /work/.
   ============================================================ */
.studio-work__card {
  border: 1px solid var(--brb-border);
  border-radius: 14px;
  overflow: hidden;
  background: #FFFFFF;
  cursor: pointer;
  transition: transform 450ms var(--brb-ease), box-shadow 450ms var(--brb-ease);
}

.studio-work__card:hover,
.studio-work__card:focus-visible {
  transform: translateY(-8px);
  box-shadow: 0 26px 60px rgba(26, 26, 26, 0.16);
}

/* `height: auto` is load-bearing, not tidiness. The <img> carries
   width="1440" height="900" attributes, which map to a presentational
   height. With both dimensions definite the browser ignores aspect-ratio
   entirely: the image computed 312x900 in a 314px column, so object-fit
   cover scaled the shot ~3x to fill a portrait box — the cards rendered
   as very tall, zoomed crops. height:auto lets aspect-ratio govern. */
.studio-work__shot {
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  object-position: top center;
}

.studio-work__meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 13px 16px;
}

.studio-work__client {
  font-size: 13.5px;
  font-weight: 600;
  /* Explicit color needed: .studio-work sets color: var(--brb-text-on-dark)
     for the section's dark background, which would otherwise inherit into
     this white card and render near-invisible. */
  color: var(--brb-text);
}

.studio-work__industry {
  font-family: var(--brb-font-mono);
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
}

@media (prefers-reduced-motion: reduce) {
  .studio-work__card { transition: none; }
}

/* =============================================================================
   H.3.4 — Section 06 Reviews (.studio-reviews)
   ----------------------------------------------------------------------------
   Featured-only treatment: Scott Adams blockquote on cream surface as
   editorial pull-quote. Supporting 3-card grid retired (full review set
   on /reviews/ page). Consolidates 5 fragmented legacy CSS ranges
   (.reviews / .review / .review-featured / .reviews__cta-wrap /
   .reviews__head override) into a single namespaced block.

   Pattern 34 markup shape: <section.studio-reviews> > .wrap > __inner.
   No Pattern 31 white-fill — featured blockquote is the only review on
   the section, so it earns full editorial weight without the raised-tile
   chrome.
   ============================================================================= */

.studio-reviews {
  background: var(--brb-surface);
  padding-block: var(--brb-section-pad);
  overflow-x: hidden;
}

/* H.3.5.1 — adjacent cream-on-cream boundary collapse. Reviews → Work
   is the only same-surface adjacency on the homepage post-H-batch
   (services→who is now dark→cream; flagship→reviews is dark→cream;
   work→industries is cream→cream but industries has its own internal
   structure). Without a color shift to anchor the section break, the
   doubled section padding (~240px stacked) reads as dead space. This
   collapses .studio-work's top padding when it follows .studio-reviews,
   leaving a single section-rhythm gap at the boundary. Site-wide
   convention audit candidate for separate housekeeping pass. */
/* Work section is now dark — reviews(cream)→work(dark) is a color-change
   seam, so restore the section rhythm (Pattern 43 does NOT apply across a
   surface-tier change). */
.studio-reviews + .studio-work {
  padding-top: var(--brb-section-pad);
}

/* H.3.3.1 — Work → Industries adjacency collapse. Same Pattern 43
   approach as the Reviews → Work fix above; both are cream-on-cream
   adjacencies where the doubled section padding (~240px stacked)
   reads as dead space without a color shift to anchor the section
   break. */
.studio-work + .studio-industries {
  padding-top: var(--brb-section-pad);
}

.studio-reviews__inner {
  max-width: 880px;
  margin: 0 auto;
}

.studio-reviews__head {
  text-align: center;
  max-width: 680px;
  margin: 0 auto clamp(40px, 5vw, 64px);
}

.studio-reviews__head .eyebrow {
  margin-bottom: 16px;
  display: inline-block;
}

.studio-reviews__title {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.1;
  letter-spacing: -0.03em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 20px;
}

.studio-reviews__title em {
  font-style: italic;
  color: var(--brb-accent);
}

.studio-reviews__sub {
  font-size: 15px;
  line-height: 1.6;
  color: var(--brb-text-muted);
  margin: 0;
}

.studio-reviews__link {
  color: var(--brb-accent);
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 1px;
  text-decoration: none;
  transition: color 200ms var(--brb-ease),
              background 200ms var(--brb-ease);
}

.studio-reviews__link:hover {
  background: rgba(217, 119, 6, 0.06);
}

/* Featured-only blockquote — editorial pull-quote register on cream
   surface. H.3.5.2: chrome inverted to cream-with-border (was white-fill
   bumped chromatic in H.3.5.1; operator wanted cream surface matching
   surrounding section). Card boundary now defined by edge (1px border)
   rather than fill contrast or lift. Padding bumped to clamp(56px, 6vw,
   80px) top so the decorative " icon (positioned at top: 24px inside
   card) has visible breathing room from the top edge — was top: -12px
   (outside card) in the H.3.4 ship which read as flush with card border. */
.studio-reviews__featured {
  position: relative;
  max-width: 780px;
  margin: 0 auto;
  /* H.3.3.2 — decorative quote icon removed (read out of place against
     cream-on-cream chrome). Top padding rebalanced to match bottom for
     symmetric vertical breathing room above stars / below attribution. */
  padding: clamp(40px, 5vw, 56px) clamp(24px, 3vw, 40px);
  text-align: center;
  background: var(--brb-surface);
  border: 1px solid var(--brb-border);
  border-radius: 12px;
  box-shadow: 0 10px 30px -10px rgba(26, 26, 26, 0.08);
}

.studio-reviews__featured-stars {
  color: var(--brb-accent);
  font-size: 18px;
  letter-spacing: 2px;
  margin-bottom: 28px;
  position: relative;
  z-index: 1;
}

.studio-reviews__featured-quote {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(22px, 2.6vw, 32px);
  line-height: 1.4;
  letter-spacing: -0.015em;
  font-weight: 300;
  color: var(--brb-text);
  margin: 0 0 32px;
  position: relative;
  z-index: 1;
}

.studio-reviews__featured-quote em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

.studio-reviews__featured-author {
  position: relative;
  z-index: 1;
}

.studio-reviews__featured-name {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 18px;
  font-weight: 400;
  color: var(--brb-text);
  letter-spacing: -0.01em;
}

.studio-reviews__featured-meta {
  font-family: var(--brb-font-body);
  font-size: 11px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--brb-text-muted);
  margin-top: 6px;
  font-weight: 500;
}

.studio-reviews__cta-wrap {
  margin-top: clamp(32px, 4vw, 48px);
  display: flex;
  justify-content: center;
  align-items: center;
  gap: clamp(16px, 2vw, 24px);
  flex-wrap: wrap;
}

.studio-reviews__cta {
  font-family: var(--brb-font-body);
  font-size: 14px;
  font-weight: 500;
  color: var(--brb-text);
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 1px;
  text-decoration: none;
  transition: color 200ms var(--brb-ease);
}

.studio-reviews__cta:hover,
.studio-reviews__cta:focus-visible {
  color: var(--brb-accent);
}

/* Supporting 3-card grid — Jasper / North Coast Junk Removal / Kirrin.
   Restored beneath the featured Scott Adams blockquote. Cream-on-cream
   chrome (1px border + hover lift) matches the featured card register
   without competing with it (smaller pad, body-weight quote). Collapses
   to single column at <840px. */
.studio-reviews__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(16px, 2vw, 24px);
  margin-top: clamp(40px, 5vw, 64px);
}

@media (max-width: 840px) {
  .studio-reviews__grid {
    grid-template-columns: 1fr;
    max-width: 560px;
    margin-left: auto;
    margin-right: auto;
  }
}

.studio-reviews__card {
  background: var(--brb-surface);
  border: 1px solid var(--brb-border);
  border-radius: 10px;
  padding: 28px 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  /* Resting shadow mirrors .studio-reviews__featured chrome (0 10px 30px
     -10px / 0.08) at slightly tighter spread + lower opacity so the cards
     read as the same surface family without inverting the featured
     blockquote's visual primacy. */
  box-shadow: 0 10px 30px -12px rgba(26, 26, 26, 0.07);
  transition: transform 300ms var(--brb-ease),
              box-shadow 300ms var(--brb-ease),
              border-color 300ms var(--brb-ease);
}

.studio-reviews__card:hover {
  transform: translateY(-3px);
  box-shadow: 0 24px 48px -16px rgba(26, 26, 26, 0.14);
  border-color: rgba(217, 119, 6, 0.3);
}

.studio-reviews__card-stars {
  color: var(--brb-accent);
  font-size: 14px;
  letter-spacing: 1.5px;
}

.studio-reviews__card-quote {
  font-family: 'Fraunces', Georgia, serif;
  font-style: italic;
  font-size: 16px;
  line-height: 1.5;
  color: var(--brb-text);
  margin: 0;
  flex: 1;
}

.studio-reviews__card-author {
  font-family: var(--brb-font-body);
  font-size: 13px;
  letter-spacing: 0.01em;
}

.studio-reviews__card-name {
  font-weight: 500;
  color: var(--brb-text);
}

.studio-reviews__card-role {
  font-size: 12px;
  color: var(--brb-text-muted);
  margin-top: 2px;
}

/* =============================================================================
   H.6.2 — Reviews upgrade: aggregate stat band + enhanced (avatar/role) cards
   ----------------------------------------------------------------------------
   Stat band sits between __head and __featured (own bottom margin since
   __featured has no top margin). Numbers count up via .wd-counter inside a
   .reveal wrapper (existing reveal observer triggers them; reduced-motion
   snaps to final). Enhanced cards add avatar (avatar_tone from reviews-data),
   the reviewer's real role, and a Google tag — replacing the generic
   "Google Review" line.
   ============================================================================= */
.studio-reviews__stats {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: clamp(20px, 3vw, 40px);
  max-width: 760px;
  margin: 0 auto clamp(40px, 5vw, 64px);
  padding: 24px clamp(24px, 3vw, 36px);
  background: #FFFFFF;
  border: 1px solid var(--brb-border);
  border-radius: 16px;
  box-shadow: 0 10px 30px -12px rgba(26, 26, 26, 0.08);
}
.studio-reviews__score { display: flex; flex-direction: column; align-items: center; }
.studio-reviews__score-num {
  font-family: var(--brb-font-display);
  font-size: clamp(48px, 6vw, 64px);
  line-height: 1;
  color: var(--brb-text);
}
.studio-reviews__score-stars {
  color: var(--brb-accent);
  letter-spacing: 2px;
  font-size: 18px;
  margin-top: 4px;
}
.studio-reviews__stats-div { width: 1px; height: 46px; background: var(--brb-border); }
.studio-reviews__stat { text-align: center; }
.studio-reviews__stat-v {
  display: block;
  font-family: var(--brb-font-display);
  font-size: 28px;
  line-height: 1;
  color: var(--brb-text);
}
.studio-reviews__stat-l {
  display: block;
  font-family: var(--brb-font-body);
  font-size: 13px;
  color: var(--brb-text-muted);
  margin-top: 4px;
}
.studio-reviews__stats-google {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--brb-font-body);
  font-size: 14px;
  color: var(--brb-text-muted);
}
.studio-reviews__g {
  font-family: var(--brb-font-display);
  font-weight: 700;
  background: conic-gradient(from -45deg, #4285F4, #34A853, #FBBC05, #EA4335, #4285F4);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* enhanced cards */
.studio-reviews__card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.studio-reviews__card-gtag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-family: var(--brb-font-body);
  font-size: 12px;
  color: var(--brb-text-subtle);
}
.studio-reviews__card-author {
  display: flex;
  align-items: center;
  gap: 12px;
}
.studio-reviews__card-avatar {
  flex: 0 0 auto;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--brb-font-display);
  font-size: 16px;
  line-height: 1;
  color: var(--brb-text-on-dark);
}
.studio-reviews__card-avatar--amber { background: var(--brb-accent); }
.studio-reviews__card-avatar--mint { background: var(--brb-mint); color: var(--brb-anchor); }
.studio-reviews__card-avatar--anchor { background: var(--brb-anchor); }
.studio-reviews__card-author-text { display: flex; flex-direction: column; }

@media (max-width: 560px) {
  .studio-reviews__stats-div { display: none; }
  .studio-reviews__stats { gap: 18px 28px; }
}

/* =============================================================================
   H.3.2 — Section 08 Industries (.studio-industries)
   ----------------------------------------------------------------------------
   Cream-on-cream card chrome (border + subtle 1px lift, per the H.3.5.x
   chrome-arc convergence — see Pattern 41 candidate). 4-up grid at desktop;
   single column at mobile <880px. Per-industry color modifier sets
   --industry-color, used by the .studio-industries__mark glyph frame
   (low-opacity fill + full-saturation border + glyph color) and by the
   card hover border tint. Color signatures borrow from Tier 3 service
   hero accents — visual bridge between service pages and industry pages.

   Glyphs are raw HTML characters per page-industry-service.php convention
   (line ~2059: <div class="industry-card__icon" aria-hidden="true">⊙</div>).
   No SVG, no pseudo-content — direct character output keeps the brand
   glyph vocabulary consistent across pages.

   Pattern 47 candidate: title scale aligned to .studio-services / .studio-work
   / .studio-reviews tier (56px max, -0.02em letter-spacing) — proof/listing
   section register, not editorial-weight register.
   ============================================================================= */

.studio-industries {
  background: var(--brb-surface);
  padding-block: var(--brb-section-pad);
  overflow-x: hidden;
}

.studio-industries__head {
  margin-bottom: clamp(40px, 5vw, 64px);
  max-width: 720px;
}

.studio-industries__title {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4.5vw, 56px);
  font-weight: 400;
  line-height: 1.06;
  letter-spacing: -0.02em;
  color: var(--brb-text);
  margin: 0;
  max-width: 22ch;
}

.studio-industries__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(16px, 1.6vw, 24px);
}

.studio-industries__card {
  display: flex;
  flex-direction: column;
  gap: 18px;
  padding: clamp(24px, 2.6vw, 32px);
  background: var(--brb-surface);
  border: 1px solid var(--brb-border);
  border-radius: 8px;
  text-decoration: none;
  color: inherit;
  box-shadow: 0 1px 2px rgba(26, 26, 26, 0.04);
  transition: border-color 200ms var(--brb-ease),
              box-shadow 200ms var(--brb-ease),
              transform 200ms var(--brb-ease);
}

.studio-industries__card:hover,
.studio-industries__card:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(26, 26, 26, 0.06);
  border-color: var(--industry-color, var(--brb-accent));
  background: color-mix(in srgb, var(--industry-color) 4%, var(--brb-surface));
}

/* Per-industry color signature — the --industry-color custom property
   feeds the mark frame + hover border tint */
.studio-industries__card--medical {
  --industry-color: var(--brb-accent);
}

.studio-industries__card--real-estate {
  --industry-color: #E07B43;  /* rust — matches Tier 3 SEO hero accent; not tokenized */
}

.studio-industries__card--winery {
  --industry-color: #B49AFF;  /* violet — matches Tier 3 Data Analytics hero; not tokenized */
}

.studio-industries__card--home-services {
  --industry-color: var(--brb-mint);
}

.studio-industries__mark {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  color: var(--industry-color);
  background: color-mix(in srgb, var(--industry-color) 12%, transparent);
  border: 1px solid var(--industry-color);
  transition: background 200ms var(--brb-ease), transform 200ms var(--brb-ease);
}
.studio-industries__mark svg {
  width: 26px;
  height: 26px;
}
.studio-industries__card:hover .studio-industries__mark,
.studio-industries__card:focus-visible .studio-industries__mark {
  background: color-mix(in srgb, var(--industry-color) 20%, transparent);
  transform: scale(1.05);
}

.studio-industries__card-title {
  font-family: var(--brb-font-display);
  font-size: 22px;
  line-height: 1.2;
  font-weight: 400;
  letter-spacing: -0.01em;
  color: var(--brb-text);
  margin: 0;
}

.studio-industries__card-body {
  font-size: 14px;
  line-height: 1.55;
  color: var(--brb-text-muted);
  margin: 0;
  flex: 1;
}

.studio-industries__more {
  margin: clamp(40px, 5vw, 56px) 0 0;
  text-align: center;
}

.studio-industries__more-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--brb-font-body);
  font-size: 14px;
  font-weight: 500;
  color: var(--brb-text);
  letter-spacing: 0.01em;
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 3px;
  text-decoration: none;
  transition: color 200ms var(--brb-ease),
              gap 200ms var(--brb-ease);
}

.studio-industries__more-link:hover,
.studio-industries__more-link:focus-visible {
  color: var(--brb-accent);
  gap: 12px;
}

.studio-industries__more-link svg {
  transition: transform 200ms var(--brb-ease);
}

.studio-industries__more-link:hover svg,
.studio-industries__more-link:focus-visible svg {
  transform: translateX(2px);
}

@media (max-width: 880px) {
  .studio-industries__grid {
    grid-template-columns: 1fr;
  }
}

/* =============================================================================
   H.3.3 — Section 09 Final CTA (.studio-final)
   ----------------------------------------------------------------------------
   Deep dark closing chord — #181410 literal (slightly warmer than
   --brb-anchor #1A1A1A used by hero/services/flagship). Single usage
   doesn't justify tokenization yet; tokenize as --brb-anchor-deep when
   2nd usage lands. Bookends with hero: optimistic light open ↔
   grounded weighted close.

   Pattern 47 candidate: editorial-weight tier title (60-64px) — proof/
   listing tier (56px on services/work/reviews/industries) would
   undersell the closing chord. Final CTA carries the page's conversion
   weight; title earns the larger scale.

   Pattern 41 honored: hover states stay opaque on this dark surface.
   Buttons inherit site-wide .btn / .btn--primary / .btn--ghost-dark
   conventions — no homepage-scoped button overrides.
   ============================================================================= */

.studio-final {
  background: #181410;  /* deep dark closer; tokenize as --brb-anchor-deep when 2nd usage lands */
  color: var(--brb-text-on-dark);
  padding: clamp(80px, 12vw, 160px) 0;
  text-align: center;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.studio-final::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(
    circle at 50% 0%,
    rgba(217, 119, 6, 0.08),
    transparent 60%
  );
  pointer-events: none;
  z-index: 0;
}

.studio-final__inner {
  position: relative;
  z-index: 1;
}

.studio-final__eyebrow {
  display: inline-block;
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-text-on-dark-muted);
  margin-bottom: clamp(20px, 2.5vw, 28px);
}

.studio-final__title {
  font-family: var(--brb-font-display);
  font-size: clamp(40px, 6vw, 64px);
  line-height: 1.05;
  letter-spacing: -0.025em;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  max-width: 18ch;
  margin: 0 auto clamp(24px, 3vw, 32px);
}

.studio-final__title em {
  font-style: italic;
  color: var(--brb-accent);
  font-weight: 400;
}

.studio-final__body {
  font-family: var(--brb-font-body);
  font-size: clamp(15px, 1.2vw, 17px);
  line-height: 1.7;
  color: var(--brb-text-on-dark-muted);
  max-width: 56ch;
  margin: 0 auto clamp(32px, 4vw, 48px);
}

.studio-final__ctas {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  margin-bottom: clamp(40px, 5vw, 56px);
}

.studio-final__contact {
  padding-top: clamp(28px, 3vw, 40px);
  border-top: 1px solid var(--brb-border-on-dark);
  font-family: var(--brb-font-body);
  font-size: 13px;
  color: var(--brb-text-on-dark-muted);
}

.studio-final__contact a {
  color: var(--brb-text-on-dark);
  border-bottom: 1px solid var(--brb-accent);
  padding-bottom: 2px;
  text-decoration: none;
  transition: color 200ms var(--brb-ease);
}

.studio-final__contact a:hover,
.studio-final__contact a:focus-visible {
  color: var(--brb-accent);
}

/* =============================================================================
   B.7 — Generative Engine Optimization service page (v1.39.46)
   ----------------------------------------------------------------------------
   New CSS namespaces for /generative-engine-optimization/. Inherits global
   chrome (.wd-hero, .wd-philosophy, .wd-final, .eyebrow, .btn) from B.5
   (the .brb-subnav bar this page also inherited was removed sitewide
   2026-07-30). Adds B.7-specific surfaces:
     .geo-mock-citation   — hero signature visual (AI assistant citation card)
     .geo-process         — five-card "process" grid (3 cols → 1 col)
     .geo-compare         — GEO vs SEO 3-col table
     .geo-audience        — three-card "who this fits" grid
     .geo-pricing-text    — audit-routed text-block pricing (no tier cards)
     .geo-faq             — FAQ accordion (B.5 .ads-faq shape, .geo-* namespace)
   All sections use var(--brb-section-pad) per Pattern 23. Body class
   .brb-geo is set via get_header() — reserved for future service-color
   theming if the page graduates to Tier 3 hero treatment.
   ============================================================================= */

/* --- Hero secondary CTA hover lock (scoped to .brb-geo body class) -------
   Shared `.btn--ghost-dark:hover` (style.css:193) only shifts border-color,
   leaving text color to inherit through the cascade. On B.7 the in-page
   anchor href="#approach" interacts with the cascade differently than the
   external-URL secondary CTAs on B.5 service pages — locking text color
   explicitly + adding subtle background tint + arrow accent on hover.
   Scoped via body.brb-geo so the change does not touch B.5 hover behavior. */
body.brb-geo .wd-hero__ctas .btn--ghost-dark {
  /* baseline arrow color (matches text) */
  color: var(--brb-text-on-dark);
}
body.brb-geo .wd-hero__ctas .btn--ghost-dark:hover,
body.brb-geo .wd-hero__ctas .btn--ghost-dark:focus-visible {
  color: var(--brb-text-on-dark);
  background: rgba(250, 247, 242, 0.06);
  border-color: var(--brb-text-on-dark);
}

/* --- Hero signature visual: .geo-mock-citation -------------------------- */
.geo-mock-citation {
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border);
  border-radius: 14px;
  padding: clamp(20px, 2.4vw, 28px);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.04) inset,
    0 18px 40px rgba(0, 0, 0, 0.18),
    0 4px 10px rgba(0, 0, 0, 0.10);
  color: var(--brb-text);
  max-width: 480px;
  margin-inline: auto;
  font-family: var(--brb-font-body);
  font-size: 14px;
  line-height: 1.55;
}

.geo-mock-citation__head {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--brb-border);
  margin-bottom: 14px;
}

.geo-mock-citation__ai-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  flex-shrink: 0;
  padding: 4px 9px;
  border-radius: 999px;
  background: rgba(217, 119, 6, 0.10);
  color: var(--brb-accent);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.geo-mock-citation__query {
  font-family: var(--brb-font-body);
  font-size: 13px;
  line-height: 1.45;
  color: var(--brb-text-muted);
  font-style: italic;
}

.geo-mock-citation__answer p {
  margin: 0 0 14px 0;
  color: var(--brb-text);
  font-size: 13.5px;
}

.geo-mock-citation__sources {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 7px;
}

.geo-mock-source {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 8px;
  background: transparent;
  font-size: 13px;
  color: var(--brb-text);
  position: relative;
  transition: background 0.18s var(--brb-ease);
}

.geo-mock-source__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 999px;
  background: var(--brb-neutral-100);
  color: var(--brb-text-muted);
  font-size: 11px;
  font-weight: 600;
  flex-shrink: 0;
}

.geo-mock-source__name {
  flex: 1;
  min-width: 0;
}

.geo-mock-source--highlight {
  background: rgba(217, 119, 6, 0.08);
  border: 1px solid rgba(217, 119, 6, 0.22);
}

.geo-mock-source--highlight .geo-mock-source__num {
  background: var(--brb-accent);
  color: #FFF;
}

.geo-mock-source--highlight .geo-mock-source__name {
  font-weight: 500;
  color: var(--brb-text);
}

.geo-mock-source__chevron {
  color: var(--brb-accent);
  flex-shrink: 0;
}

.geo-mock-source__callout {
  font-size: 11px;
  color: var(--brb-accent);
  font-weight: 500;
  letter-spacing: 0.02em;
  white-space: nowrap;
  flex-shrink: 0;
}

@media (max-width: 540px) {
  .geo-mock-citation {
    font-size: 13px;
  }
  .geo-mock-source__callout {
    display: none;
  }
}

/* --- Section 03 · Process cards: .geo-process / .geo-process-card ------- */
.geo-process {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding-block: var(--brb-section-pad);
}

.geo-process__head {
  max-width: 760px;
  margin-bottom: clamp(40px, 5vw, 64px);
}

.geo-process__title {
  font-size: clamp(34px, 4.6vw, 56px);
  margin-top: 18px;
}

.geo-process__title em {
  color: var(--brb-accent);
  font-style: italic;
}

.geo-process__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(18px, 2.2vw, 28px);
}

.geo-process-card {
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border);
  border-radius: 12px;
  padding: clamp(24px, 2.4vw, 32px);
  display: flex;
  flex-direction: column;
  gap: 12px;
  transition: border-color 0.2s var(--brb-ease), transform 0.2s var(--brb-ease);
}

.geo-process-card:hover {
  border-color: rgba(217, 119, 6, 0.35);
  transform: translateY(-2px);
}

.geo-process-card__num {
  font-family: var(--brb-font-display);
  font-size: 22px;
  color: var(--brb-accent);
  letter-spacing: -0.02em;
}

.geo-process-card__name {
  font-family: var(--brb-font-display);
  font-size: clamp(20px, 1.8vw, 24px);
  letter-spacing: -0.015em;
  line-height: 1.2;
}

.geo-process-card__desc {
  font-size: 15px;
  line-height: 1.65;
  color: var(--brb-text-muted);
}

@media (max-width: 1024px) {
  .geo-process__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 640px) {
  .geo-process__grid {
    grid-template-columns: 1fr;
  }
}

/* --- Section 04 · Compare table: .geo-compare --------------------------- */
/* .geo-compare visual treatment is comma-aliased onto .ads-compare canonical
   above (search "/* .geo-compare comma-aliased onto .ads-compare canonical").
   Standalone .geo-compare* block deleted in v1.39.48 — single source of
   truth at .ads-compare; column-count differs (3 vs 4), tokens identical. */

/* --- Section 05 · Audience cards: .geo-audience / .geo-audience-card ---- */
.geo-audience {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding-block: var(--brb-section-pad);
}

.geo-audience__head {
  max-width: 760px;
  margin-bottom: clamp(40px, 5vw, 64px);
}

.geo-audience__title {
  font-size: clamp(34px, 4.6vw, 56px);
  margin-top: 18px;
}

.geo-audience__title em {
  color: var(--brb-accent);
  font-style: italic;
}

.geo-audience__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(20px, 2.4vw, 32px);
}

.geo-audience-card {
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border);
  border-radius: 12px;
  padding: clamp(28px, 2.6vw, 36px);
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.geo-audience-card__num {
  font-family: var(--brb-font-display);
  font-size: 24px;
  color: var(--brb-accent);
  letter-spacing: -0.02em;
}

.geo-audience-card__name {
  font-family: var(--brb-font-display);
  font-size: clamp(22px, 2vw, 28px);
  letter-spacing: -0.015em;
  line-height: 1.2;
}

.geo-audience-card__desc {
  font-size: 15.5px;
  line-height: 1.65;
  color: var(--brb-text-muted);
}

@media (max-width: 900px) {
  .geo-audience__grid {
    grid-template-columns: 1fr;
  }
}

/* --- Section 06 · Pricing text-block: .geo-pricing-text ----------------- */
.geo-pricing-text {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding-block: var(--brb-section-pad);
}

.geo-pricing-text__head {
  margin-bottom: clamp(28px, 3vw, 40px);
  text-align: center;
}

.geo-pricing-text__title {
  color: var(--brb-text-on-dark);
  font-size: clamp(34px, 4.4vw, 52px);
  margin-top: 18px;
  letter-spacing: -0.02em;
}

.geo-pricing-text__title em {
  color: var(--brb-accent-tint);
  font-style: italic;
}

.geo-pricing-text__body {
  display: flex;
  flex-direction: column;
  gap: 18px;
  max-width: 720px;
  margin-inline: auto;
}

.geo-pricing-text__body p {
  font-size: clamp(16px, 1.35vw, 18px);
  line-height: 1.7;
  color: var(--brb-text-on-dark);
}

.geo-pricing-text__cta {
  text-align: center;
  margin-top: clamp(28px, 3vw, 40px);
}

/* --- Section 07 · FAQ accordion: .geo-faq ------------------------------- */
.geo-faq {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding-block: var(--brb-section-pad);
}

.geo-faq__head {
  max-width: 760px;
  margin-bottom: clamp(40px, 5vw, 64px);
}

.geo-faq__title {
  font-size: clamp(34px, 4.6vw, 56px);
  margin-top: 18px;
}

.geo-faq__title em {
  color: var(--brb-accent);
  font-style: italic;
}

.geo-faq__list {
  display: flex;
  flex-direction: column;
  max-width: 880px;
  border-top: 1px solid var(--brb-border);
}

.geo-faq__item {
  border-bottom: 1px solid var(--brb-border);
}

.geo-faq__item summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 22px 0;
  font-family: var(--brb-font-display);
  font-size: clamp(18px, 1.6vw, 22px);
  letter-spacing: -0.01em;
  color: var(--brb-text);
  transition: color 0.18s var(--brb-ease);
}

.geo-faq__item summary::-webkit-details-marker {
  display: none;
}

.geo-faq__item summary:hover {
  color: var(--brb-accent);
}

.geo-faq__chevron {
  color: var(--brb-text-muted);
  transition: transform 0.22s var(--brb-ease);
  flex-shrink: 0;
}

.geo-faq__item[open] .geo-faq__chevron {
  transform: rotate(180deg);
}

.geo-faq__a {
  padding: 0 0 24px 0;
  font-size: 16px;
  line-height: 1.7;
  color: var(--brb-text-muted);
  max-width: 760px;
}

.geo-faq__a p {
  margin: 0;
}

/* ==========================================================================
   B.13 — Website Support & Maintenance card (/website-design/ pricing)
   Full-width 4th card sitting BELOW the .ads-pricing__grid--three. Reuses
   .ads-pricing-card base for visual coherence; adds a horizontal head
   (label + value side-by-side) and a two-column bullet list.
   ========================================================================== */

.ads-pricing__support {
  margin-top: 32px;
}

.ads-pricing-card--support {
  max-width: 920px;
  margin: 0 auto;
}

.ads-pricing-card__support-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px 24px;
  margin-bottom: 20px;
}

.ads-pricing-card__support-head .ads-pricing-card__label {
  margin-bottom: 0;
}

.ads-pricing-card__support-head .ads-pricing-card__value {
  margin-bottom: 0;
  font-size: clamp(28px, 3.4vw, 40px);
}

.ads-pricing-card__list--two-col {
  columns: 2;
  column-gap: 32px;
}

.ads-pricing-card__list--two-col li {
  break-inside: avoid;
}

@media (max-width: 640px) {
  .ads-pricing-card__list--two-col {
    columns: 1;
  }
  .ads-pricing-card__support-head {
    flex-direction: column;
    align-items: flex-start;
  }
}

.ads-pricing-card__support-note {
  margin: 20px 0 0;
  font-size: 14.5px;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.68);
}



/* ===== Homepage elevation — reduced-motion safety net ===== */
@media (prefers-reduced-motion: reduce) {
  .studio-system__layer { opacity: 1 !important; transform: none !important; }
  .reveal { opacity: 1 !important; transform: none !important; }
  .is-tilt { transform: none !important; }
}

/* ============================================================
   01b · Studio System — "one system, not four vendors" (interactive)
   Stack of 4 service buttons (left) swaps a crossfading panel (right)
   between the resting pitch and per-service detail. Replaces the old
   .studio-services card grid. Per-service accent via --svc-color.
============================================================ */
/* Fix round 2 (Finding 4): scroll-margin-top: 108px removed — covered by
   html's scroll-padding-top now. */
.studio-system { position: relative; background: var(--brb-anchor); color: var(--brb-text-on-dark); padding: var(--brb-section-pad) 0; overflow: hidden; isolation: isolate; }
/* Hero "See how it works" scroll cue — gently bobbing down-arrow. */
.btn__down { display: inline-block; margin-left: 2px; }
@keyframes brb-btn-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(3px); } }
@media (prefers-reduced-motion: reduce) { .btn__down { animation: none; } }
.studio-system__bg { position: absolute; inset: 0; z-index: -1; background: radial-gradient(ellipse at 12% 0%, rgba(217,119,6,0.20) 0%, transparent 55%); }
.studio-system__inner { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: clamp(32px, 5vw, 64px); align-items: center; }

/* stack — interactive service buttons */
.studio-system__stack { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.studio-system__cap { font-weight: 600; font-size: 0.72rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--brb-accent); background: rgba(217,119,6,0.12); border: 1px solid rgba(217,119,6,0.4); padding: 7px 14px; border-radius: 30px; margin-bottom: 14px; }
.studio-system__layer { --layer-color: var(--brb-accent); width: 60%; min-height: 54px; border: 0; cursor: pointer; -webkit-appearance: none; appearance: none; font-family: var(--brb-font-body); font-weight: 600; font-size: 0.95rem; text-align: left; border-radius: 10px; display: flex; align-items: center; gap: 12px; padding: 0 18px; color: var(--brb-anchor); background: var(--layer-color); box-shadow: 0 10px 30px rgba(0,0,0,0.32); opacity: 0; transform: translateY(22px) scale(0.97); transition: opacity 0.5s var(--brb-ease), transform 0.25s var(--brb-ease), box-shadow 0.25s var(--brb-ease), filter 0.25s var(--brb-ease); }
.studio-system__layer.is-stacked { opacity: 1; transform: none; }
.studio-system__layer-ico { width: 24px; height: 24px; border-radius: 6px; background: rgba(26,26,26,0.16); display: flex; align-items: center; justify-content: center; font-size: 13px; flex: none; }
.studio-system__layer-arrow { margin-left: auto; opacity: 0; transform: translateX(-4px); transition: opacity 0.2s, transform 0.2s; }
.studio-system__layer--web { --layer-color: var(--brb-mint); width: 90%; }
.studio-system__layer--seo { --layer-color: #B49AFF;         width: 80%; }
.studio-system__layer--ads { --layer-color: var(--brb-accent); width: 70%; }
.studio-system__layer--ana { --layer-color: #5AA0C9;         width: 60%; }
.studio-system__layer:focus-visible { outline: 2px solid var(--brb-text-on-dark); outline-offset: 3px; }
.studio-system__stack.has-active .studio-system__layer:not(.is-active) { opacity: 0.4; filter: saturate(0.7); }
.studio-system__layer.is-active { filter: none; transform: translateX(10px) scale(1.02); box-shadow: 0 12px 30px rgba(0,0,0,0.45); }
.studio-system__layer.is-active .studio-system__layer-arrow { opacity: 1; transform: translateX(0); }

/* panels — overlapped in one grid cell, crossfade between them */
.studio-system__panels { display: grid; }
.studio-system__panel { grid-area: 1 / 1; align-self: center; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 0.2s var(--brb-ease); }
.studio-system__panel.is-active { opacity: 1; visibility: visible; pointer-events: auto; }
.studio-system__panel--web { --svc-color: var(--brb-mint); }
.studio-system__panel--seo { --svc-color: #B49AFF; }
.studio-system__panel--ads { --svc-color: var(--brb-accent); }
.studio-system__panel--ana { --svc-color: #5AA0C9; }

.studio-system__eyebrow { font-weight: 600; font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(250,247,242,0.55); }
.studio-system__panel:not(.studio-system__panel--default) .studio-system__eyebrow { color: var(--svc-color); }
.studio-system__headrow { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; margin: 12px 0 16px; }
.studio-system__headline { font-family: var(--brb-font-display, 'Fraunces', serif); font-size: clamp(30px, 4vw, 48px); letter-spacing: -0.02em; line-height: 1.1; margin: 12px 0 16px; }
.studio-system__headrow .studio-system__headline { margin: 0; }
.studio-system__headline em { font-style: italic; color: var(--svc-color, var(--brb-accent)); }
.studio-system__chip { font-weight: 600; font-size: 0.66rem; letter-spacing: 0.04em; text-transform: uppercase; color: var(--brb-accent); background: rgba(217,119,6,0.14); border: 1px solid rgba(217,119,6,0.4); padding: 6px 11px; border-radius: 30px; }
.studio-system__body { font-size: 1rem; line-height: 1.62; color: rgba(250,247,242,0.74); margin: 0 0 16px; max-width: 46ch; }
.studio-system__link { display: inline-flex; align-items: center; gap: 7px; margin-top: 18px; font-weight: 600; font-size: 0.92rem; color: var(--svc-color, var(--brb-accent)); text-decoration: none; transition: gap 0.2s var(--brb-ease); }
.studio-system__link:hover { gap: 11px; }

@media (max-width: 720px) {
  .studio-system__inner { grid-template-columns: 1fr; gap: 28px; }
  .studio-system__visual { order: -1; }
  .studio-system__layer { min-height: 48px; }
}
@media (prefers-reduced-motion: reduce) {
  .studio-system__panel { transition: none; }
  .studio-system__layer { transition: none; }
}

/* ============================================================
   Polish — card tilt (desktop fine-pointer only)
   All three selectors already transition `transform` in their
   base rules (.sleeve L1527, .studio-services__card L17053-56,
   .studio-industries__card L17637-39), so no transition is
   re-declared here — only the 3D context + compositor hint.
============================================================ */
.studio-industries__card { transform-style: preserve-3d; will-change: transform; }

/* Polish — magnetic primary CTAs */
.studio-hero__ctas .btn--primary, .studio-final__ctas .btn--primary { will-change: transform; }

/* ============================================================
   Device showcase — browser (desktop) + phone (mobile) scene.
   Used in the homepage work modal when a project has both a
   desktop and a mobile screenshot. Relaxes .modal__screenshot's
   16:10 lock so the overlapping phone isn't clipped.
============================================================ */
.modal__screenshot.is-devscene,
.modal__screenshot.is-proof {
  aspect-ratio: auto;
  overflow: visible;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.modal__screenshot.is-devscene img { height: auto; }
.modal__screenshot.is-proof .svc-viz { margin: 0 0 4px; max-width: none; }

.devscene { position: relative; padding: 4px 0 8px; }
.devscene__browser {
  width: 84%;
  border-radius: 10px;
  overflow: hidden;
  background: #141414;
  box-shadow: 0 22px 50px rgba(0,0,0,0.26);
  border: 1px solid rgba(26,26,26,0.12);
}
.devscene__bar { display: flex; align-items: center; gap: 6px; padding: 9px 12px; background: #20242b; }
.devscene__dot { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.devscene__url { margin-left: 8px; height: 14px; flex: 1; max-width: 55%; border-radius: 8px; background: rgba(255,255,255,0.12); }
.devscene__shot { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; object-position: top center; }
.devscene__phone {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 27%;
  max-width: 140px;
  aspect-ratio: 9 / 19.3;
  border-radius: 18px;
  overflow: hidden;
  background: #0d0d0d;
  border: 4px solid #0d0d0d;
  box-shadow: 0 16px 34px rgba(0,0,0,0.34);
}
.devscene__phone::before {
  content: "";
  position: absolute;
  z-index: 2;
  top: 7px;
  left: 50%;
  transform: translateX(-50%);
  width: 30%;
  height: 4px;
  border-radius: 3px;
  background: rgba(255,255,255,0.3);
}
.devscene__phone img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: top center; }

@media (max-width: 540px) {
  .devscene__browser { width: 80%; }
  .devscene__phone { width: 30%; }
}

/* Device scene inside the dark .studio-system resting panel — compact,
   with frames tuned to read on the dark surface. */
.studio-system__device { margin: 24px 0 4px; max-width: 470px; }
.studio-system__device .devscene__browser { border-color: rgba(250,247,242,0.14); box-shadow: 0 22px 48px rgba(0,0,0,0.45); }
.studio-system__device .devscene__phone { border-color: #050505; box-shadow: 0 16px 30px rgba(0,0,0,0.5); }
.devscene--compact .devscene__browser { width: 78%; }
.devscene--compact .devscene__phone { width: 25%; max-width: 116px; }
@media (max-width: 720px) {
  .studio-system__device { max-width: 100%; }
}

/* ============================================================
   01b · Services — Direction E serif rows (.studio-services)
   NOTE: .studio-services is also used by a retired dark-band card-grid
   component (L17877, dead CSS — no live template emits its markup).
   That rule sets `color: var(--brb-text-on-dark)`, which at equal
   specificity survives the cascade for any property THIS rule doesn't
   redeclare. Without an explicit color here, .studio-services__name
   inherits near-white text on this section's cream background
   (invisible). Redeclare color explicitly rather than rely on
   inheriting body's default.
   ============================================================ */
.studio-services {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding: var(--brb-section-pad) 0;
}

.studio-services__title {
  font-family: var(--brb-font-display);
  font-weight: 460;
  font-size: clamp(32px, 4.2vw, 56px);
  line-height: 1.06;
  letter-spacing: -0.018em;
  margin: 0 0 clamp(28px, 3.5vw, 44px);
}

.studio-services__title em {
  font-style: italic;
  color: var(--brb-accent);
}

/* Grid, not flex+space-between. With three children of varying width the
   free space split by space-between moved the description column with each
   service name's length — measured right edges wandered across 158px
   ("SEO" vs "Paid Advertising"), which read as misalignment down the list.
   A fixed description track pins every row's description to the same left
   AND right edge; center alignment keeps one- and two-line descriptions on
   the same optical level against the display-size name. */
.studio-services__row {
  display: grid;
  grid-template-columns: 1fr minmax(0, 34ch) auto;
  align-items: center;
  gap: clamp(20px, 3vw, 40px);
  padding: clamp(20px, 2.4vw, 28px) 6px;
  border-top: 1px solid var(--brb-border);
  color: inherit;
  text-decoration: none;
  transition: background 350ms var(--brb-ease), padding 350ms var(--brb-ease);
}

.studio-services__row:last-child { border-bottom: 1px solid var(--brb-border); }

.studio-services__row:hover,
.studio-services__row:focus-visible {
  background: #FFFFFF;
  padding-inline: 22px;
}

.studio-services__name {
  font-family: var(--brb-font-display);
  font-size: clamp(28px, 3.4vw, 44px);
  font-weight: 460;
  letter-spacing: -0.015em;
  transition: color 300ms var(--brb-ease);
}

.studio-services__row:hover .studio-services__name,
.studio-services__row:focus-visible .studio-services__name {
  color: var(--brb-accent);
  font-style: italic;
}

.studio-services__desc {
  font-size: 13.5px;
  color: var(--brb-text-muted);
  text-align: right;
}

.studio-services__go {
  font-size: 20px;
  color: var(--brb-accent);
  opacity: 0;
  transform: translateX(-10px);
  transition: opacity 350ms var(--brb-ease), transform 350ms var(--brb-ease);
}

.studio-services__row:hover .studio-services__go,
.studio-services__row:focus-visible .studio-services__go {
  opacity: 1;
  transform: none;
}

/* .studio-services__new (the amber "New" badge on the AI Automation row)
   was removed 2026-07-30 by operator decision, and its rule deleted with
   the markup rather than left as an orphan. It was also the last consumer
   of --brb-font-mono on this section; the work-card industry label still
   uses the token. */

@media (max-width: 720px) {
  .studio-services__row {
    grid-template-columns: 1fr;
    align-items: start;
    gap: 6px;
  }
  .studio-services__desc { text-align: left; }
  .studio-services__go { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .studio-services__row,
  .studio-services__name,
  .studio-services__go { transition: none; }
}

/* ============================================================
   Website Maintenance (F3) — imagery
   Hero device scene (on the dark hero) + "Real sites" device-scene
   band. Reuses the .devscene component (Pattern 52) + existing client
   screenshots; only the wrappers below are page-specific.
   ============================================================ */
.brb-maintenance .wd-hero__visual { width: 100%; max-width: 500px; margin-inline: auto; }
.brb-maintenance .wd-hero__visual .devscene__browser {
  border-color: rgba(250, 247, 242, 0.14);
  box-shadow: 0 26px 56px rgba(0, 0, 0, 0.5);
}
.brb-maintenance .wd-hero__visual .devscene__phone {
  border-color: #050505;
  box-shadow: 0 16px 30px rgba(0, 0, 0, 0.5);
}
@media (max-width: 1000px) {
  .brb-maintenance .wd-hero__visual { max-width: 440px; }
}

.maint-sites {
  background: var(--brb-surface);
  padding: var(--brb-section-pad) 0;
  border-top: 1px solid var(--brb-border);
}
.maint-sites__head {
  text-align: center;
  max-width: 660px;
  margin: 0 auto clamp(40px, 5vw, 64px);
}
.maint-sites__head .eyebrow { margin-bottom: 14px; display: inline-block; }
.maint-sites__title {
  font-family: var(--brb-font-display);
  font-size: clamp(30px, 3.6vw, 46px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 16px;
}
.maint-sites__title em { font-style: italic; color: var(--brb-accent); }
.maint-sites__sub {
  font-family: var(--brb-font-body);
  font-size: clamp(1rem, 1.3vw, 1.125rem);
  line-height: 1.7;
  color: var(--brb-text-muted);
  margin: 0;
}
.maint-sites__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(40px, 6vw, 64px);
  max-width: 1180px;
  margin: 0 auto;
}
@media (min-width: 760px) {
  .maint-sites__grid { grid-template-columns: repeat(3, 1fr); gap: clamp(24px, 2.6vw, 44px); }
}
.maint-site { max-width: 400px; margin-inline: auto; width: 100%; }
.maint-sites .devscene__browser { width: 100%; }
.maint-sites .devscene__phone { width: 26%; max-width: 104px; }
.maint-site__label {
  font-family: var(--brb-font-body);
  text-align: center;
  margin: 22px 0 0;
  font-size: 14px;
  color: var(--brb-text-muted);
}

/* Bigger hero device scene (scoped) — give the visual more weight + room. */
.brb-maintenance .wd-hero--has-visual .wd-hero__inner { grid-template-columns: 1fr 1.15fr; }
.brb-maintenance .wd-hero__visual { max-width: 640px; }
@media (max-width: 1000px) {
  .brb-maintenance .wd-hero--has-visual .wd-hero__inner { grid-template-columns: 1fr; }
  .brb-maintenance .wd-hero__visual { max-width: 540px; }
}

/* Inline device scene inside a .wd-philosophy head column (Why section). */
.maint-inline-scene { margin-top: clamp(28px, 3vw, 40px); max-width: 100%; }
.maint-inline-scene .devscene { padding-top: 0; }
.maint-inline-scene .devscene__browser { width: 100%; }

/* F7.2 — Central Coast dunes photo folded into the location "local market"
   head column (.wd-philosophy head). PAGE-SCOPED to .brb-location-service so it
   never bleeds into the shared .wd-philosophy component on other pages. Mirrors
   the .maint-inline-scene precedent; reuses the existing optimized dunes-hero. */
.brb-location-service .locsvc-market-photo {
  margin: clamp(28px, 3vw, 40px) 0 0;
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 18px 40px -24px rgba(20, 20, 18, 0.55);
}
.brb-location-service .locsvc-market-photo img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  object-position: center 55%;
}
@media (max-width: 900px) {
  .brb-location-service .locsvc-market-photo { max-width: 520px; }
}

/* As-needed — half-width dunes landscape photo + prose (image fills half). */
.maint-photo-split {
  background: var(--brb-surface);
  padding: var(--brb-section-pad) 0;
  border-top: 1px solid var(--brb-border);
}
.maint-photo-split__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(32px, 5vw, 60px);
  align-items: stretch;
  max-width: 1160px;
  margin-inline: auto;
}
@media (min-width: 880px) {
  .maint-photo-split__grid { grid-template-columns: 1fr 1fr; }
}
.maint-photo-split__media {
  min-height: 320px;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 24px 54px rgba(0, 0, 0, 0.16);
  background-image: image-set(
    url('assets/images/hero/dunes-hero-1000.avif') type('image/avif') 1x,
    url('assets/images/hero/dunes-hero-1600.avif') type('image/avif') 2x,
    url('assets/images/hero/dunes-hero-1000.webp') type('image/webp') 1x,
    url('assets/images/hero/dunes-hero-1600.webp') type('image/webp') 2x
  );
  background-size: cover;
  background-position: center 42%;
}
.maint-photo-split__prose { align-self: center; }
.maint-photo-split__title {
  font-family: var(--brb-font-display);
  font-size: clamp(30px, 3.6vw, 48px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 22px;
}
.maint-photo-split__title em { font-style: italic; color: var(--brb-accent); }
.maint-photo-split__prose p {
  font-family: var(--brb-font-body);
  font-size: 17px;
  line-height: 1.7;
  color: var(--brb-text-muted);
  margin: 0 0 18px;
}
.maint-photo-split__prose p:last-child { margin-bottom: 0; }

/* Client logo strip: force one row on the maintenance page (6 logos). */
@media (min-width: 760px) {
  .brb-maintenance .wd-clients__grid { grid-template-columns: repeat(6, 1fr); }
}

/* ============================================================
   Per-module proof cards in the .studio-system service panels.
   Real client data (no financials). Accent = the panel's --svc-color.
============================================================ */
.svc-viz {
  --viz: var(--svc-color, var(--brb-accent));
  margin: 18px 0 6px;
  max-width: 450px;
  background: #131313;
  border: 1px solid rgba(250,247,242,0.1);
  border-radius: 12px;
  padding: 14px 16px 15px;
  box-shadow: 0 16px 38px rgba(0,0,0,0.38);
}
.svc-viz__bar { display: flex; align-items: center; gap: 7px; margin-bottom: 13px; }
.svc-viz__bar i { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.svc-viz__label { margin-left: 6px; font-weight: 600; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: rgba(250,247,242,0.5); }
.svc-viz__live { margin-left: auto; font-weight: 600; font-size: 9px; letter-spacing: 0.07em; text-transform: uppercase; color: var(--viz); display: flex; align-items: center; gap: 5px; }
.svc-viz__live::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--viz); }
.svc-viz__kpis { display: flex; gap: 22px; margin-bottom: 14px; }
.svc-viz__kpi .v { font-family: var(--brb-font-display, 'Fraunces', serif); font-size: 21px; line-height: 1; color: var(--brb-text-on-dark); }
.svc-viz__kpi .v b { color: var(--viz); font-weight: 600; }
.svc-viz__kpi .l { font-weight: 400; font-size: 9px; line-height: 1.3; letter-spacing: 0.04em; text-transform: uppercase; color: rgba(250,247,242,0.45); margin-top: 5px; }
.svc-viz__rows { display: grid; gap: 8px; }
.svc-viz__row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.svc-viz__row .k { font-weight: 500; font-size: 12px; line-height: 1.2; color: rgba(250,247,242,0.82); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.svc-viz__row .k--mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11.5px; color: rgba(250,247,242,0.75); }
.svc-viz__row .val { flex: none; font-weight: 600; font-size: 11px; color: rgba(250,247,242,0.7); }
.svc-viz__pos { flex: none; font-weight: 600; font-size: 10.5px; letter-spacing: 0.02em; padding: 3px 9px; border-radius: 20px; color: var(--brb-anchor); background: var(--viz); }
.svc-viz__pos--muted { color: var(--viz); background: transparent; border: 1px solid color-mix(in srgb, var(--viz) 45%, transparent); }
.svc-viz__spark { margin-top: 12px; height: 30px; display: flex; align-items: flex-end; gap: 4px; }
.svc-viz__spark span { flex: 1; background: linear-gradient(180deg, var(--viz), color-mix(in srgb, var(--viz) 25%, transparent)); border-radius: 2px 2px 0 0; opacity: 0.85; }
.svc-viz__note { font-size: 13px; line-height: 1.55; color: rgba(250,247,242,0.72); }
@media (max-width: 720px) { .svc-viz { max-width: 100%; } }

/* ============================================================
   SLO Live Music page (page-live-music-san-luis-obispo.php)
   Phase 2 visual kit. After-dark hero → genre filter → poster
   spotlight → "coming up" list → venues → bridge + CTA.
   All selectors prefixed .brb-music-. Genre→color map is scoped
   to .brb-music as local custom properties (no brand-hex
   hardcoding outside the after-dark color recipe).
   ============================================================ */
.brb-music {
  font-family: var(--brb-font-body);
  color: var(--brb-text);
  background: var(--brb-surface);

  /* Genre accent map — quiet, scannable, keyed to the data slug.
     Hue per genre; the poster gradient + chip + pill all read from it. */
  --bm-g-rock:              #d9534f;
  --bm-g-folk-bluegrass:    #5d8a4f;
  --bm-g-soul-funk:         #c77d2e;
  --bm-g-hip-hop:           #6a6fb0;
  --bm-g-blues:             #3f6fa0;
  --bm-g-jazz:              #9a6b8f;
  --bm-g-country:           #b07636;
  --bm-g-singer-songwriter: #6f9a8d;
  --bm-g-live-music:        var(--brb-accent);
  /* current accent — overridden per element via --bm-accent below */
  --bm-accent: var(--brb-accent);
  /* --brb-anchor-deep is scoped to .brb-work in the base theme, so define it
     here too — the hero/filter/venues dark backgrounds depend on it. Without
     this it resolves to nothing, those background declarations are dropped, and
     the sections fall back to the page's cream (on-dark text then disappears). */
  --brb-anchor-deep: #141414;
}

.brb-music *,
.brb-music *::before,
.brb-music *::after { box-sizing: border-box; }

/* Per-genre accent resolution. Each filterable/colored element sets its own
   --bm-accent off its data-genre slug so chips, pills, and poster fallbacks
   share one source of truth. */
.brb-music [data-genre="rock"],
.brb-music [data-genre-chip="rock"],
.brb-music [data-genre-art="rock"]                       { --bm-accent: var(--bm-g-rock); }
.brb-music [data-genre="folk-bluegrass"],
.brb-music [data-genre-chip="folk-bluegrass"],
.brb-music [data-genre-art="folk-bluegrass"]             { --bm-accent: var(--bm-g-folk-bluegrass); }
.brb-music [data-genre="soul-funk"],
.brb-music [data-genre-chip="soul-funk"],
.brb-music [data-genre-art="soul-funk"]                  { --bm-accent: var(--bm-g-soul-funk); }
.brb-music [data-genre="hip-hop"],
.brb-music [data-genre-chip="hip-hop"],
.brb-music [data-genre-art="hip-hop"]                    { --bm-accent: var(--bm-g-hip-hop); }
.brb-music [data-genre="blues"],
.brb-music [data-genre-chip="blues"],
.brb-music [data-genre-art="blues"]                      { --bm-accent: var(--bm-g-blues); }
.brb-music [data-genre="jazz"],
.brb-music [data-genre-chip="jazz"],
.brb-music [data-genre-art="jazz"]                       { --bm-accent: var(--bm-g-jazz); }
.brb-music [data-genre="country"],
.brb-music [data-genre-chip="country"],
.brb-music [data-genre-art="country"]                    { --bm-accent: var(--bm-g-country); }
.brb-music [data-genre="singer-songwriter"],
.brb-music [data-genre-chip="singer-songwriter"],
.brb-music [data-genre-art="singer-songwriter"]          { --bm-accent: var(--bm-g-singer-songwriter); }
.brb-music [data-genre="live-music"],
.brb-music [data-genre-chip="live-music"],
.brb-music [data-genre-art="live-music"]                 { --bm-accent: var(--bm-g-live-music); }

/* Filter visibility toggle (JS). Hidden = display:none so the grid reflows. */
.brb-music-hidden { display: none !important; }

.brb-music-screen-reader {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0; border: 0;
  clip: rect(0 0 0 0); clip-path: inset(50%);
  overflow: hidden; white-space: nowrap;
}

/* ---------- shared section frame ---------- */
.brb-music-section { padding: clamp(40px, 7vw, 80px) var(--brb-pad-page); }
.brb-music-section__inner { max-width: 1080px; margin: 0 auto; }

.brb-music-eyebrow {
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--brb-text-subtle);
  margin: 0 0 0.5rem;
}
.brb-music-eyebrow--gold { color: var(--brb-accent-tint); }

.brb-music-kicker {
  font-family: var(--brb-font-body);
  font-size: 0.78rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--brb-accent);
  margin: 0 0 1.1rem;
}
.brb-music-kicker--muted { color: var(--brb-text-muted); }

.brb-music-h2 {
  font-family: var(--brb-font-display);
  font-weight: 500;
  font-size: clamp(1.6rem, 3.4vw, 2.3rem);
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--brb-text);
  margin: 0 0 0.5rem;
}
.brb-music-h2--light { color: var(--brb-text-on-dark); }

.brb-music-lede {
  font-size: 1rem;
  line-height: 1.55;
  color: var(--brb-text-muted);
  max-width: 56ch;
  margin: 0 0 2rem;
}
.brb-music-lede--light { color: var(--brb-text-on-dark-muted); }

/* ---------- Band 1 · Hero (after-dark) ---------- */
.brb-music-hero {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(120% 95% at 24% -12%, color-mix(in srgb, var(--brb-accent) 18%, transparent), transparent 56%),
    radial-gradient(130% 95% at 86% -22%, color-mix(in srgb, var(--brb-accent-tint) 12%, transparent), transparent 52%),
    linear-gradient(165deg, #1b120c 0%, var(--brb-anchor) 46%, var(--brb-anchor-deep) 100%);
  color: var(--brb-text-on-dark);
  padding: clamp(64px, 11vw, 132px) var(--brb-pad-page) clamp(52px, 8vw, 88px);
}
.brb-music-hero__glow {
  position: absolute;
  top: -28%; left: 50%;
  width: min(720px, 92%); height: 70%;
  transform: translateX(-50%);
  background: radial-gradient(closest-side, color-mix(in srgb, var(--brb-accent-tint) 18%, transparent), transparent 72%);
  filter: blur(8px);
  opacity: 0.42;
  pointer-events: none;
}
.brb-music-hero__grain {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.45;
  mix-blend-mode: soft-light;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
}
.brb-music-hero__inner {
  position: relative;
  z-index: 1;
  max-width: 720px;
  margin: 0 auto;
}
.brb-music-hero .brb-music-eyebrow { color: var(--brb-accent-tint); }
.brb-music-hero__title {
  font-family: var(--brb-font-display);
  font-weight: 500;
  font-size: clamp(2.3rem, 6.5vw, 4rem);
  line-height: 1.02;
  letter-spacing: -0.02em;
  color: var(--brb-surface);
  margin: 0 0 0.75rem;
}
.brb-music-hero__sub {
  font-size: clamp(1rem, 1.6vw, 1.12rem);
  line-height: 1.6;
  color: var(--brb-text-on-dark-muted);
  max-width: 54ch;
  margin: 0 0 1.5rem;
}
.brb-music-stat {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  font-size: 0.9rem;
  letter-spacing: 0.01em;
  color: var(--brb-text-on-dark);
  background: rgba(0, 0, 0, 0.22);
  border: 1px solid var(--brb-border-on-dark-strong);
  border-radius: 999px;
  padding: 0.5rem 1rem;
  margin: 0 0 1.5rem;
}
.brb-music-stat b {
  font-weight: 700;
  color: var(--brb-accent-tint);
}
.brb-music-hero__bridge {
  font-family: var(--brb-font-display);
  font-style: italic;
  font-size: 0.96rem;
  line-height: 1.5;
  color: var(--brb-accent-tint);
  max-width: 48ch;
  margin: 0;
}

/* live pulse */
.brb-music-pulse {
  width: 9px; height: 9px;
  flex: none;
  border-radius: 50%;
  background: var(--brb-mint);
  box-shadow: 0 0 0 0 color-mix(in srgb, var(--brb-mint) 60%, transparent);
  animation: brb-music-pp 1.9s ease-out infinite;
}
.brb-music-pulse--sm { width: 6px; height: 6px; }
@keyframes brb-music-pp {
  0%   { box-shadow: 0 0 0 0 color-mix(in srgb, var(--brb-mint) 55%, transparent); }
  70%  { box-shadow: 0 0 0 8px color-mix(in srgb, var(--brb-mint) 0%, transparent); }
  100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--brb-mint) 0%, transparent); }
}

/* ---------- Band 2 · Genre filter ---------- */
.brb-music-filter {
  background: var(--brb-anchor-deep);
  padding: 0.95rem var(--brb-pad-page);
  border-bottom: 1px solid var(--brb-border-on-dark);
}
.brb-music-filter__list {
  list-style: none;
  margin: 0 auto;
  padding: 0;
  max-width: 1080px;
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
}
.brb-music-pill {
  font-family: var(--brb-font-body);
  font-size: 0.74rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  line-height: 1;
  color: var(--brb-text-on-dark-muted);
  background: rgba(250, 247, 242, 0.05);
  border: 1px solid var(--brb-border-on-dark-strong);
  border-radius: 999px;
  padding: 0.45rem 0.85rem;
  cursor: pointer;
  transition: color 200ms var(--brb-ease), background 200ms var(--brb-ease), border-color 200ms var(--brb-ease);
}
.brb-music-pill:not(.is-active):hover {
  color: var(--brb-text-on-dark);
  background: rgba(250, 247, 242, 0.10);
  border-color: var(--bm-accent);
}
.brb-music-pill.is-active {
  color: var(--brb-anchor);
  background: var(--brb-accent-tint);
  border-color: var(--brb-accent-tint);
  font-weight: 600;
}
.brb-music-pill[data-genre].is-active {
  /* Darken any genre accent so the white label clears contrast on warm hues
     (amber "Live", brown "Country", orange "Soul/Funk"). */
  background: color-mix(in srgb, var(--bm-accent) 80%, #14110d);
  border-color: color-mix(in srgb, var(--bm-accent) 80%, #14110d);
  color: #fff;
}
.brb-music-pill:focus-visible {
  outline: 2px solid var(--brb-accent-tint);
  outline-offset: 2px;
}

/* ---------- Band 3 · "This weekend" poster spotlight ---------- */
.brb-music-spotlight { background: var(--brb-surface-raised); }
.brb-music-posters {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}
.brb-music-poster {
  position: relative;
  border-radius: 14px;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: var(--brb-anchor);
  box-shadow: 0 10px 30px rgba(20, 20, 20, 0.18);
  isolation: isolate;
}
.brb-music-poster.is-mine {
  box-shadow: 0 10px 30px rgba(20, 20, 20, 0.22),
              0 0 0 2px var(--brb-accent-tint);
}
.brb-music-poster__art {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-size: cover;
  background-position: center;
  /* genre-colored gradient fallback when no poster image */
  background-color: var(--bm-accent);
  background-image: linear-gradient(150deg,
    color-mix(in srgb, var(--bm-accent) 78%, #14110d) 0%,
    color-mix(in srgb, var(--bm-accent) 30%, #14110d) 78%);
}
.brb-music-poster__scrim {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(to top,
    rgba(15, 12, 9, 0.88) 12%,
    rgba(15, 12, 9, 0.18) 52%,
    rgba(15, 12, 9, 0.04) 100%);
}
.brb-music-poster__when {
  position: absolute;
  top: 0.6rem; left: 0.6rem;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--brb-surface);
  background: rgba(0, 0, 0, 0.5);
  border-radius: 6px;
  padding: 0.2rem 0.5rem;
}
.brb-music-poster__when.is-tonight {
  color: #0e0b08;
  background: var(--brb-mint);
}
.brb-music-ribbon {
  position: absolute;
  top: 0.6rem; right: 0.6rem;
  z-index: 2;
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: #241c08;
  background: var(--brb-accent-tint);
  border-radius: 999px;
  padding: 0.2rem 0.6rem;
}
.brb-music-poster__meta {
  position: absolute;
  left: 0.85rem; right: 0.85rem; bottom: 0.7rem;
  z-index: 2;
}
.brb-music-poster__act {
  font-family: var(--brb-font-display);
  font-weight: 600;
  font-size: 1.1rem;
  line-height: 1.1;
  color: #fff;
  margin: 0;
}
.brb-music-poster__venue {
  font-size: 0.72rem;
  color: var(--brb-text-on-dark-muted);
  margin: 0.25rem 0 0;
}

.brb-music-empty {
  font-family: var(--brb-font-display);
  font-style: italic;
  font-size: 1.05rem;
  line-height: 1.55;
  color: var(--brb-text-muted);
  max-width: 52ch;
  margin: 0;
  padding: 1.25rem 1.4rem;
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border);
  border-left: 3px solid var(--brb-accent-tint);
  border-radius: 10px;
}

/* ---------- Band 4 · "Coming up" list ---------- */
.brb-music-upcoming { background: var(--brb-surface); border-top: 1px solid var(--brb-border-strong); }
.brb-music-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.brb-music-row {
  display: grid;
  grid-template-columns: 58px 1fr;
  grid-template-areas:
    "date body"
    "date tail";
  gap: 0.15rem 1rem;
  align-items: start;
  padding: 1rem 0;
  border-bottom: 1px solid var(--brb-border);
}
.brb-music-row:first-child { border-top: 1px solid var(--brb-border); }
.brb-music-row.is-mine { border-left: 3px solid var(--brb-accent-tint); padding-left: 0.9rem; }
.brb-music-row__date {
  grid-area: date;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  line-height: 1;
}
.brb-music-row__dow {
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--brb-accent);
}
.brb-music-row__day {
  font-family: var(--brb-font-display);
  font-weight: 600;
  font-size: 1.55rem;
  color: var(--brb-text);
  margin: 0.1rem 0;
}
.brb-music-row__mon {
  font-size: 0.6rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--brb-text-subtle);
}
.brb-music-row__body { grid-area: body; min-width: 0; }
.brb-music-row__act {
  display: block;
  font-size: 1.02rem;
  font-weight: 600;
  line-height: 1.25;
  color: var(--brb-text);
}
.brb-music-row__mine {
  display: inline-block;
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #241c08;
  background: var(--brb-accent-tint);
  border-radius: 999px;
  padding: 0.1rem 0.5rem;
  margin-left: 0.4rem;
  vertical-align: 0.12em;
}
.brb-music-row__venue {
  display: block;
  font-size: 0.85rem;
  color: var(--brb-text-muted);
  margin-top: 0.2rem;
}
.brb-music-row__tail {
  grid-area: tail;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
  margin-top: 0.45rem;
}
.brb-music-chip {
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  /* Dark, genre-tinted text on a solid light chip — readable on the cream list. */
  color: color-mix(in srgb, var(--bm-accent) 42%, #1a1410);
  background: color-mix(in srgb, var(--bm-accent) 14%, #ffffff);
  border: 1px solid color-mix(in srgb, var(--bm-accent) 38%, #ffffff);
  border-radius: 999px;
  padding: 0.15rem 0.55rem;
}
.brb-music-via {
  font-size: 0.74rem;
  font-weight: 500;
  color: var(--brb-accent);
  text-decoration: none;
  transition: color 200ms var(--brb-ease);
}
.brb-music-via:hover {
  color: var(--brb-accent-hover);
  text-decoration: underline;
}

/* ---------- Clickable shows (whole card / row → event link) ---------- */
.brb-music-poster__link,
.brb-music-row__link {
  color: inherit;
  text-decoration: none;
}
/* Stretched overlay makes the entire card/row the click target. */
.brb-music-poster__link::after,
.brb-music-row__link::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 4;
}
.brb-music-row { position: relative; }
/* Keep the explicit "via" link clickable above the row's stretched overlay. */
.brb-music-via { position: relative; z-index: 5; }
/* Hover affordances — signal the whole show is clickable. */
.brb-music-poster {
  transition: transform 200ms var(--brb-ease), box-shadow 200ms var(--brb-ease);
}
.brb-music-poster:hover {
  transform: translateY(-3px);
  box-shadow: 0 16px 40px rgba(20, 20, 20, 0.30);
}
.brb-music-poster:hover .brb-music-poster__act { text-decoration: underline; text-underline-offset: 2px; }
.brb-music-row { transition: background 160ms var(--brb-ease); }
.brb-music-row:hover { background: color-mix(in srgb, var(--brb-accent) 7%, transparent); }
.brb-music-row:hover .brb-music-row__act { text-decoration: underline; text-underline-offset: 2px; }
.brb-music-poster__link:focus-visible,
.brb-music-row__link:focus-visible {
  outline: 2px solid var(--brb-accent);
  outline-offset: 3px;
}

/* ---------- Band 5 · Venues I love ---------- */
.brb-music-venues { background: var(--brb-anchor-deep); color: var(--brb-text-on-dark); }
.brb-music-venuegrid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}
.brb-music-venue {
  display: block;
  padding: 1.1rem 1.2rem;
  background: rgba(250, 247, 242, 0.04);
  border: 1px solid var(--brb-border-on-dark);
  border-radius: 12px;
  text-decoration: none;
  transition: border-color 220ms var(--brb-ease), background 220ms var(--brb-ease), transform 220ms var(--brb-ease);
}
.brb-music-venue:hover {
  border-color: var(--brb-accent-tint);
  background: rgba(250, 247, 242, 0.07);
  transform: translateY(-2px);
}
.brb-music-venue:focus-visible {
  outline: 2px solid var(--brb-accent-tint);
  outline-offset: 3px;
}
.brb-music-venue__name {
  font-family: var(--brb-font-display);
  font-weight: 600;
  font-size: 1.1rem;
  line-height: 1.15;
  color: var(--brb-surface);
  margin: 0;
}
.brb-music-venue__arrow {
  color: var(--brb-accent-tint);
  font-size: 0.82em;
  opacity: 0.65;
  transition: opacity 220ms var(--brb-ease);
}
.brb-music-venue:hover .brb-music-venue__arrow { opacity: 1; }
.brb-music-venue__where {
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--brb-accent-tint);
  margin: 0.3rem 0 0.5rem;
}
.brb-music-venue__note {
  font-size: 0.88rem;
  line-height: 1.5;
  color: var(--brb-text-on-dark-muted);
  margin: 0;
}

/* ---------- Band 6 · The bridge + soft CTA ---------- */
.brb-music-bridge {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(120% 120% at 18% 120%, color-mix(in srgb, var(--brb-accent) 24%, transparent), transparent 55%),
    linear-gradient(165deg, var(--brb-anchor) 0%, var(--brb-anchor-deep) 100%);
  color: var(--brb-text-on-dark);
  text-align: center;
}
.brb-music-bridge .brb-music-section__inner { max-width: 620px; }
.brb-music-bridge__glow {
  position: absolute;
  bottom: -40%; left: 50%;
  width: min(640px, 92%); height: 80%;
  transform: translateX(-50%);
  background: radial-gradient(closest-side, color-mix(in srgb, var(--brb-accent) 22%, transparent), transparent 70%);
  pointer-events: none;
}
.brb-music-bridge > .brb-music-section__inner { position: relative; z-index: 1; }
.brb-music-bridge .brb-music-eyebrow { justify-content: center; }
.brb-music-bridge__body {
  font-size: 1.02rem;
  line-height: 1.65;
  color: var(--brb-text-on-dark-muted);
  max-width: 52ch;
  margin: 0 auto 2.25rem;
}
.brb-music-cta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
  padding-top: 1.75rem;
  border-top: 1px solid var(--brb-border-on-dark);
}
.brb-music-cta__line {
  font-family: var(--brb-font-display);
  font-size: 1.1rem;
  line-height: 1.4;
  color: var(--brb-surface);
  margin: 0;
}
.brb-music-cta__btn {
  display: inline-block;
  font-family: var(--brb-font-body);
  font-weight: 600;
  font-size: 0.9rem;
  letter-spacing: 0.01em;
  color: var(--brb-anchor);
  background: var(--brb-accent-tint);
  border-radius: 8px;
  padding: 0.7rem 1.5rem;
  text-decoration: none;
  transition: background 200ms var(--brb-ease), transform 200ms var(--brb-ease);
}
.brb-music-cta__btn:hover {
  background: var(--brb-accent);
  color: var(--brb-surface);
  transform: translateY(-1px);
}
.brb-music-cta__btn:focus-visible {
  outline: 2px solid var(--brb-accent-tint);
  outline-offset: 3px;
}

/* ---------- responsive ---------- */
@media (min-width: 560px) {
  .brb-music-venuegrid { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 720px) {
  .brb-music-posters { grid-template-columns: repeat(3, 1fr); }
  .brb-music-row {
    grid-template-columns: 64px 1fr auto;
    grid-template-areas: "date body tail";
    align-items: center;
    gap: 1.25rem;
  }
  .brb-music-row__tail { margin-top: 0; justify-content: flex-end; }
}
@media (min-width: 920px) {
  .brb-music-venuegrid { grid-template-columns: repeat(3, 1fr); }
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .brb-music-pulse { animation: none; }
  .brb-music-venue,
  .brb-music-cta__btn,
  .brb-music-pill,
  .brb-music-via { transition: none; }
}

/* ============================================================
   Homepage · Beyond the Surface (.studio-surface) — 2026-07
   Dark band: six capability pillars (left) + a real-client device
   mockup (right). Sits between the hero and the System section.
   ============================================================ */
.studio-surface {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: var(--brb-section-pad) 0;
  overflow: hidden;
}
.studio-surface__inner {
  display: grid;
  grid-template-columns: minmax(0, 1.32fr) minmax(0, 0.82fr);
  gap: clamp(36px, 5vw, 72px);
  align-items: center;
}
.studio-surface__eyebrow {
  display: inline-flex;
  flex-direction: column;
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-accent);
  margin-bottom: clamp(16px, 2vw, 24px);
}
.studio-surface__eyebrow::after {
  content: '';
  width: 30px;
  height: 2px;
  margin-top: 10px;
  background: var(--brb-accent);
  border-radius: 2px;
}
.studio-surface__head {
  font-family: var(--brb-font-display);
  font-size: clamp(32px, 4vw, 54px);
  line-height: 1.08;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  margin: 0 0 clamp(20px, 2.4vw, 30px);
}
.studio-surface__head em { font-style: italic; color: var(--brb-accent); }
.studio-surface__sub {
  font-size: clamp(14.5px, 1.02vw, 16px);
  line-height: 1.7;
  color: var(--brb-text-on-dark-muted);
  max-width: 54ch;
  margin: 0 0 13px;
}
.studio-surface__sub:last-of-type { margin-bottom: clamp(26px, 3.2vw, 38px); }
.studio-surface__hl { color: var(--brb-accent); }
.studio-surface__sub strong { color: var(--brb-text-on-dark); font-weight: 600; }
.studio-surface__pillars {
  list-style: none;
  margin: 0 0 clamp(28px, 3.4vw, 40px);
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(24px, 2.8vw, 36px) clamp(20px, 2.2vw, 30px);
}
.studio-surface__pillar {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 11px;
  align-items: start;
}
.studio-surface__pillar-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  flex: none;
  border-radius: 50%;
  background: transparent;
  border: 1.5px solid rgba(217, 119, 6, 0.6);
  color: var(--brb-accent);
}
.studio-surface__pillar-ico svg { width: 20px; height: 20px; }
.studio-surface__pillar-txt { min-width: 0; }
.studio-surface__pillar-title {
  font-family: var(--brb-font-body);
  font-size: 15.5px;
  font-weight: 600;
  color: var(--brb-text-on-dark);
  margin: 4px 0 5px;
}
.studio-surface__pillar-desc {
  font-size: 13px;
  line-height: 1.55;
  color: var(--brb-text-on-dark-muted);
  margin: 0;
}
.studio-surface__getstarted {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 26px;
  border: 0;
  border-radius: 10px;
  /* Amber, not cream (2026-08-03 operator ask). It was cream because it sat
     beside the .imac mockup and a filled amber button would have fought it for
     attention; with the mockup gone and the section centred, this is the only
     thing to look at, so it takes the brand CTA treatment used everywhere else. */
  background: var(--brb-accent);
  /* Anchor ink, NOT white — matching .btn--primary, which is the house
     treatment for an amber fill. White on #D97706 is 3.19:1, under the 4.5:1
     AA floor for 13px text; #1A1A1A on the same fill clears it comfortably. */
  color: var(--brb-anchor);
  font-family: var(--brb-font-body);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  cursor: pointer;
  box-shadow: 0 12px 26px rgba(217, 119, 6, 0.26);
  transition: background 0.25s var(--brb-ease), transform 0.25s var(--brb-ease);
}
.studio-surface__getstarted:hover { background: var(--brb-accent-hover); transform: translateY(-2px); }
.studio-surface__getstarted-arrow { color: var(--brb-anchor); font-size: 15px; }

/* --- centred, no-graphic variant (2026-08-03) ----------------------------
   The .imac monitor mockup that used to occupy the right column was removed
   at the operator's ask ("just center the section and make it feel more
   spacious since we won't have a graphic there"). Its .imac* rules went with
   it — this section was their only consumer, checked with
   `grep -rn 'class="imac' theme/brb-theme/*.php` rather than assumed.

   Rather than leave a 1.32fr column stranded beside empty space, the modifier
   collapses the grid to one centred column, re-centres the parts that were
   left-aligned against the mockup (eyebrow + its rule, headline, body, CTA),
   and spends the reclaimed width on rhythm: a wider measure, a 3-up pillar
   grid that now has room to breathe, and taller vertical gaps.
   --------------------------------------------------------------------- */
.studio-surface__inner--centered {
  grid-template-columns: minmax(0, 1fr);
  max-width: 980px;
  margin-inline: auto;
  text-align: center;
}
.studio-surface__inner--centered .studio-surface__eyebrow {
  align-items: center;
  margin-bottom: clamp(18px, 2.2vw, 26px);
}
.studio-surface__inner--centered .studio-surface__head {
  font-size: clamp(34px, 4.4vw, 58px);
  max-width: 20ch;
  margin-inline: auto;
  margin-bottom: clamp(22px, 2.6vw, 32px);
}
.studio-surface__inner--centered .studio-surface__sub {
  max-width: 68ch;
  margin-inline: auto;
  margin-bottom: 15px;
}
.studio-surface__inner--centered .studio-surface__sub:last-of-type {
  margin-bottom: clamp(40px, 5vw, 62px);
}
.studio-surface__inner--centered .studio-surface__pillars {
  margin-bottom: clamp(38px, 4.6vw, 56px);
  gap: clamp(30px, 3.6vw, 46px) clamp(26px, 3vw, 40px);
  text-align: left;
}
/* Pillars stay icon-left/text-right — centring the rows themselves would
   ragged-edge six different-length labels. The GRID is centred instead. */
.studio-surface__inner--centered .studio-surface__cta { text-align: center; }

@media (max-width: 900px) {
  .studio-surface__inner { grid-template-columns: 1fr; gap: clamp(30px, 6vw, 44px); }
}
@media (max-width: 620px) {
  .studio-surface__pillars { grid-template-columns: 1fr; }
  .studio-surface__inner--centered .studio-surface__pillars { max-width: 22rem; margin-inline: auto; }
}

/* Get Started popup — contact form in the shared .modal shell */
.modal--form { max-width: 560px; }
.gs-modal__body { padding: clamp(28px, 4vw, 44px) clamp(24px, 4vw, 44px) clamp(28px, 4vw, 40px); }
.gs-modal__eyebrow {
  display: inline-block;
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--brb-accent);
  margin-bottom: 10px;
}
.gs-modal__title {
  font-family: var(--brb-font-display);
  font-size: clamp(28px, 3.4vw, 40px);
  line-height: 1.05;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 12px;
}
.gs-modal__title em { font-style: italic; color: var(--brb-accent); }
.gs-modal__intro {
  font-size: 15px;
  line-height: 1.6;
  color: var(--brb-text-muted);
  margin: 0 0 clamp(18px, 2.4vw, 26px);
}
.gs-modal__form { position: relative; }
.gs-modal__form .ff-btn-submit,
.gs-modal__form button[type="submit"] {
  background: var(--brb-accent) !important;
  border-color: var(--brb-accent) !important;
  color: var(--brb-anchor) !important;
}
.gs-modal__form .ff-btn-submit:hover,
.gs-modal__form button[type="submit"]:hover {
  background: var(--brb-accent-hover) !important;
  border-color: var(--brb-accent-hover) !important;
}

/* ============================================================
   Homepage · AI Search visibility (.studio-aisearch) — 2026-07
   Light band: AI-chat mockup (left) + heading/audit CTA (right).
   ============================================================ */
.studio-aisearch {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding: var(--brb-section-pad) 0;
  overflow: hidden;
}
.studio-aisearch__inner {
  display: grid;
  grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
  gap: clamp(40px, 5.5vw, 80px);
  align-items: center;
}
.studio-aisearch__visual { display: flex; justify-content: center; }
.studio-aisearch__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--brb-font-body);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--brb-accent);
  margin-bottom: clamp(14px, 1.8vw, 20px);
}
.studio-aisearch__eyebrow::before {
  content: "";
  width: 24px;
  height: 1px;
  background: var(--brb-accent);
}
.studio-aisearch__head {
  font-family: var(--brb-font-display);
  font-size: clamp(30px, 3.6vw, 50px);
  line-height: 1.08;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text);
  margin: 0 0 clamp(18px, 2.2vw, 26px);
}
.studio-aisearch__head em { font-style: italic; color: var(--brb-accent); }
.studio-aisearch__sub {
  font-size: clamp(14.5px, 1.05vw, 16px);
  line-height: 1.7;
  color: var(--brb-text-muted);
  max-width: 58ch;
  margin: 0 0 clamp(14px, 1.6vw, 18px);
}
.studio-aisearch__cta { margin-top: clamp(12px, 1.6vw, 20px); }

/* AI-chat mockup */
.ai-chat {
  width: 100%;
  max-width: 430px;
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border);
  border-radius: 18px;
  box-shadow: 0 30px 64px rgba(26, 26, 26, 0.12);
  overflow: hidden;
  font-family: var(--brb-font-body);
}
.ai-chat__head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--brb-border);
  font-size: 13px;
  font-weight: 600;
  color: var(--brb-text);
}
.ai-chat__spark { color: var(--brb-accent); }
.ai-chat__head-menu { margin-left: auto; color: var(--brb-text-subtle); letter-spacing: 2px; }
.ai-chat__body { padding: 18px; display: flex; flex-direction: column; gap: 16px; }
.ai-chat__q {
  align-self: flex-end;
  max-width: 86%;
  background: #FBEEDC;
  color: var(--brb-text);
  font-size: 13.5px;
  line-height: 1.5;
  padding: 10px 14px;
  border-radius: 14px 14px 4px 14px;
}
.ai-chat__a { display: flex; gap: 10px; }
.ai-chat__a-ico {
  flex: none;
  width: 24px;
  height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--brb-accent);
  color: #fff;
  font-size: 12px;
}
.ai-chat__a-lead { font-size: 13.5px; line-height: 1.5; color: var(--brb-text-muted); margin: 2px 0 10px; }
.ai-chat__card {
  border: 1px solid var(--brb-border);
  border-radius: 12px;
  padding: 13px 14px;
  background: var(--brb-surface);
}
.ai-chat__card-head { display: flex; align-items: center; gap: 12px; }
.ai-chat__card-avatar {
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background-size: cover;
  background-position: center;
  border: 1px solid var(--brb-border);
}
.ai-chat__card-name { font-size: 14px; font-weight: 700; color: var(--brb-accent); }
.ai-chat__card-meta { font-size: 11.5px; color: var(--brb-text-muted); margin-top: 2px; }
.ai-chat__card-loc { font-size: 11.5px; color: var(--brb-text-subtle); margin-top: 1px; }
.ai-chat__card-desc { font-size: 12.5px; line-height: 1.55; color: var(--brb-text-muted); margin: 10px 0 0; }
.ai-chat__input {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 18px 18px;
  padding: 11px 12px 11px 16px;
  border: 1px solid var(--brb-border);
  border-radius: 99px;
}
.ai-chat__input-ph { flex: 1; color: var(--brb-text-subtle); font-size: 13px; }
.ai-chat__input-send {
  flex: none;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--brb-accent);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
}
@media (max-width: 900px) {
  .studio-aisearch__inner { grid-template-columns: 1fr; gap: clamp(30px, 6vw, 44px); }
  .studio-aisearch__content { order: -1; }
  .studio-aisearch__visual { max-width: 460px; margin: 0 auto; }
}

/* ============================================================
   Web Design · "Behind the scenes" intro + sliding site marquee
   (.wd-showcase) — 2026-07. Dark band; two rows of real builds
   scroll in opposite directions; audit CTA below.
   ============================================================ */
.wd-showcase {
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
  padding: var(--brb-section-pad) 0;
  overflow: hidden;
}
.wd-showcase__head {
  text-align: center;
  max-width: 760px;
  margin-inline: auto;
  margin-bottom: clamp(36px, 4.5vw, 56px);
}
.wd-showcase__title {
  font-family: var(--brb-font-display);
  font-size: clamp(28px, 3.4vw, 44px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 400;
  color: var(--brb-text-on-dark);
  margin: 0 0 16px;
}
.wd-showcase__title em { font-style: italic; color: var(--brb-accent); }
.wd-showcase__sub {
  font-size: clamp(15px, 1.1vw, 17px);
  line-height: 1.7;
  color: var(--brb-text-on-dark-muted);
  margin: 0;
}
.wd-marquee {
  display: flex;
  flex-direction: column;
  gap: clamp(16px, 1.8vw, 24px);
  margin-bottom: clamp(36px, 4.5vw, 52px);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
}
.wd-marquee__row { overflow: hidden; }
.wd-marquee__track {
  display: flex;
  gap: clamp(16px, 1.6vw, 22px);
  width: max-content;
  will-change: transform;
}
.wd-marquee__row--left .wd-marquee__track { animation: wd-marquee-l 48s linear infinite; }
.wd-marquee__row--right .wd-marquee__track { animation: wd-marquee-r 56s linear infinite; }
@keyframes wd-marquee-l { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes wd-marquee-r { from { transform: translateX(-50%); } to { transform: translateX(0); } }
/* marquee scrolls continuously — no hover pause (operator) */
.wd-marquee__card {
  flex: none;
  width: clamp(240px, 26vw, 360px);
  margin: 0;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid rgba(250, 247, 242, 0.1);
  box-shadow: 0 16px 34px rgba(0, 0, 0, 0.42);
  background: #0d0d0d;
}
.wd-marquee__card img { display: block; width: 100%; height: auto; }
.wd-showcase__cta { text-align: center; }
@media (prefers-reduced-motion: reduce) {
  .wd-marquee__row--left .wd-marquee__track,
  .wd-marquee__row--right .wd-marquee__track { animation: none; }
}

/* ============================================================
   Web Design · hero with the site marquee moved in (2026-07).
   Single-column content; the two marquee rows run full-bleed
   across the bottom of the dark hero band.
   ============================================================ */
.wd-hero--marquee { padding-bottom: 0; }
.wd-hero--marquee .wd-hero__inner,
.wd-hero--marquee .wd-hero__inner:has(.wd-hero__content) {
  display: block;
  max-width: 940px;
  margin-inline: auto;
}
.wd-hero--marquee .wd-hero__content { max-width: 820px; margin-inline: auto; text-align: center; }
.wd-hero--marquee .wd-hero__sub { max-width: 68ch; margin-inline: auto; }
.wd-hero--marquee .wd-hero__eyebrow { display: flex; justify-content: center; }
.wd-hero--marquee .wd-hero__actions { justify-content: center; }

/* Web Design — blue dominant (2026-07, operator ask). Joins the
   service-coded hero family: dominant hue + the constant amber
   counter-orb at lower-left. Blue reads alongside SEO rust,
   Paid mint and Analytics violet without colliding with any. */
body.brb-web-design .wd-hero__bg {
  background:
    radial-gradient(ellipse at 100% 0%, rgba(37, 99, 155, 0.55) 0%, transparent 62%),
    radial-gradient(ellipse at 12% 96%, rgba(90, 160, 201, 0.20) 0%, transparent 58%),
    radial-gradient(ellipse at 0% 100%, rgba(217, 119, 6, 0.10) 0%, transparent 70%);
}
body.brb-web-design .wd-hero__headline em { color: #6FB3DC; }
.wd-hero--marquee .wd-marquee {
  margin-top: clamp(44px, 5.5vw, 76px);
  margin-bottom: 0;
  padding-bottom: clamp(52px, 6.5vw, 88px);
}
.wd-hero--marquee .wd-marquee__card {
  border-color: rgba(250, 247, 242, 0.12);
  box-shadow: 0 18px 38px rgba(0, 0, 0, 0.5);
}

/* ============================================================
   Web Design · Built Around Your Business (.wd-features) — 2026-07.
   Light band; three dark capability cards, each with a real-client
   phone mockup peeking up from the bottom edge.
   ============================================================ */
.wd-features {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding: var(--brb-section-pad) 0;
}
.wd-features__head { max-width: 760px; margin: 0 0 clamp(36px, 4.5vw, 54px); }
.wd-features__eyebrow {
  display: inline-block;
  font-family: var(--brb-font-body);
  font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--brb-accent);
  margin-bottom: clamp(14px, 1.8vw, 20px);
}
.wd-features__title {
  font-family: var(--brb-font-display);
  font-size: clamp(30px, 3.6vw, 48px); line-height: 1.1; letter-spacing: -0.02em; font-weight: 400;
  color: var(--brb-text); margin: 0 0 clamp(16px, 2vw, 22px);
}
.wd-features__title em { font-style: italic; color: var(--brb-accent); }
.wd-features__sub {
  font-size: clamp(15px, 1.1vw, 17px); line-height: 1.7; color: var(--brb-text-muted); margin: 0;
}
.wd-features__grid {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 2.2vw, 30px);
}
.wd-feature-card {
  position: relative;
  border-radius: 18px;
  overflow: hidden;
  padding: clamp(24px, 2.4vw, 32px) clamp(24px, 2.4vw, 32px) 0;
  min-height: 500px;
  display: flex;
  flex-direction: column;
  color: var(--brb-text-on-dark);
  border: 1px solid rgba(250, 247, 242, 0.08);
}
.wd-feature-card--sell     { background: radial-gradient(130% 90% at 82% 4%, #4c3b28, transparent 60%), linear-gradient(158deg, #3a2e21, #191309); }
.wd-feature-card--book     { background: radial-gradient(130% 90% at 82% 4%, #463640, transparent 60%), linear-gradient(158deg, #342730, #17111a); }
.wd-feature-card--schedule { background: radial-gradient(130% 90% at 82% 4%, #4c4029, transparent 60%), linear-gradient(158deg, #38301f, #16130b); }
.wd-feature-card__body { position: relative; z-index: 3; }
.wd-feature-card__title {
  font-family: var(--brb-font-display); font-size: clamp(20px, 1.7vw, 24px); font-weight: 400;
  color: #fff; margin: 0 0 10px;
}
.wd-feature-card__desc {
  font-size: 13px; line-height: 1.6; color: rgba(250, 247, 242, 0.72); margin: 0; max-width: 36ch;
}
.wd-feature-card__stage { position: relative; margin-top: auto; min-height: clamp(280px, 26vw, 320px); }
.wd-feature-card__phone {
  position: absolute; left: 50%; bottom: 8px; transform: translateX(-50%) rotate(-3deg);
  width: clamp(128px, 12.5vw, 156px);
  border: 7px solid #0c0c0c; border-radius: 24px;
  background: #0c0c0c;
  box-shadow: 0 24px 48px rgba(0, 0, 0, 0.5);
  overflow: hidden;
  aspect-ratio: 9 / 16;
  z-index: 1;
}
.wd-feature-card__notch {
  position: absolute; top: 7px; left: 50%; transform: translateX(-50%);
  width: 32%; height: 4px; border-radius: 3px; background: rgba(255, 255, 255, 0.25); z-index: 2;
}
.wd-feature-card__phone img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: top center; }

/* floating overlay chips */
.wd-ov {
  position: absolute; z-index: 4;
  background: #fff; color: #1a1a1a; border-radius: 12px;
  box-shadow: 0 14px 30px rgba(0, 0, 0, 0.35);
  padding: 10px 12px; font-family: var(--brb-font-body);
}
.wd-ov__label { display: block; font-size: 9px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: #8C8A83; margin-bottom: 7px; }
.wd-ov__row { display: block; font-size: 12px; color: #1a1a1a; }
.wd-ov__row em { font-style: normal; font-weight: 600; }
.wd-ov__row--muted { color: #8C8A83; font-size: 11px; margin-top: 3px; }
.wd-ov__dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: #4ED17F; margin-right: 7px; vertical-align: middle; }
.wd-ov--ship, .wd-ov--sent, .wd-ov--booked { font-size: 11.5px; font-weight: 600; padding: 9px 12px; display: flex; align-items: center; white-space: nowrap; }
.wd-ov--pay { top: 18px; right: -4px; }
.wd-ov--ship { bottom: 40px; left: -6px; }
.wd-ov--quote { top: 12px; right: -6px; width: 150px; }
.wd-ov--sent { bottom: 48px; left: -4px; }
.wd-ov--cal { top: 16px; right: -4px; }
.wd-ov--booked { bottom: 44px; left: -6px; }
.wd-pays { display: flex; gap: 6px; }
.wd-pay { display: inline-flex; align-items: center; justify-content: center; gap: 3px; height: 22px; padding: 0 8px; border-radius: 5px; font-size: 11px; font-weight: 600; }
.wd-pay--apple { background: #000; color: #fff; }
.wd-pay--apple svg { width: 11px; height: 12px; }
.wd-pay--mc { gap: 0; background: #f3f1ec; padding: 0 7px; }
.wd-pay--mc span { width: 13px; height: 13px; border-radius: 50%; }
.wd-pay--mc span:first-child { background: #EB001B; }
.wd-pay--mc span:last-child { background: #F79E1B; margin-left: -6px; opacity: 0.88; }
.wd-pay--stripe { background: #635BFF; color: #fff; font-style: italic; letter-spacing: -0.02em; }
.wd-cal { display: flex; gap: 4px; }
.wd-cal i { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 24px; border-radius: 6px; font-size: 11px; font-style: normal; color: #5F5F5A; background: #f3f1ec; }
.wd-cal i.is-sel { background: var(--brb-accent); color: #fff; font-weight: 700; }
@media (max-width: 900px) {
  .wd-features__grid { grid-template-columns: 1fr; gap: 18px; }
  .wd-feature-card { min-height: 460px; }
  /* `width: 100%` is load-bearing, not redundant. The stage is a flex
     item that would normally stretch, but `margin-inline: auto` cancels
     the stretch and makes it size to its content — and every child here
     is position:absolute, so the content is nothing and the box computed
     to 0px wide. Anything sized against it (the chips' max-width) then
     resolved to 0 and collapsed to min-content. */
  .wd-feature-card__stage { width: 100%; max-width: 360px; margin-inline: auto; }
  /* The status chips are nowrap by default, which reads fine in a 3-up
     desktop grid. Single-column, the two longest ("Order confirmed ·
     ships in 2 days" / "Appointment booked · 3:00 PM") run past the
     card's right edge and clip. Let them wrap rather than trim the copy.
     Drop back to block flow to do it: the chip's text is an anonymous
     flex item, so under `display: flex` a max-width collapses it to
     min-content — one word per line in a tall narrow pill. `.wd-ov__dot`
     is already inline-block with vertical-align, so it sits correctly on
     the first line without flex centring it. */
  .wd-ov--ship, .wd-ov--sent, .wd-ov--booked {
    display: block;
    white-space: normal;
    max-width: 72%;
    line-height: 1.4;
  }
}

/* ============================================================
   Web Design · Designed For What You're Selling (.wd-selling) — 2026-07.
   7 hoverable categories (left) swap the browser mockup (right).
   ============================================================ */
.wd-selling { background: var(--brb-surface-raised); color: var(--brb-text); padding: var(--brb-section-pad) 0; }
.wd-selling__head { margin: 0 0 clamp(28px, 3.5vw, 44px); }
.wd-selling__eyebrow {
  display: inline-block;
  font-family: var(--brb-font-body);
  font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--brb-accent); margin-bottom: clamp(12px, 1.6vw, 18px);
}
.wd-selling__title {
  font-family: var(--brb-font-display);
  font-size: clamp(30px, 3.6vw, 48px); line-height: 1.1; letter-spacing: -0.02em; font-weight: 400;
  color: var(--brb-text); margin: 0;
}
.wd-selling__title em { font-style: italic; color: var(--brb-accent); }
.wd-selling__inner {
  display: grid; grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr);
  gap: clamp(32px, 4vw, 64px); align-items: center;
}
.wd-selling__list { list-style: none; margin: 0; padding: 0; }
.wd-selling__item { border-top: 1px solid var(--brb-border); }
.wd-selling__item:last-child { border-bottom: 1px solid var(--brb-border); }
.wd-selling__btn {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  width: 100%; background: none; border: 0; cursor: pointer; text-align: left;
  padding: clamp(13px, 1.5vw, 19px) 4px;
  font-family: var(--brb-font-display); font-size: clamp(19px, 1.9vw, 28px); font-weight: 400;
  color: var(--brb-text-subtle); transition: color 0.25s var(--brb-ease);
}
.wd-selling__btn:hover, .wd-selling__item.is-active .wd-selling__btn { color: var(--brb-accent); }
.wd-selling__arrow { flex: none; color: var(--brb-accent); opacity: 0; transform: translateX(-8px); transition: opacity 0.25s var(--brb-ease), transform 0.25s var(--brb-ease); }
.wd-selling__item.is-active .wd-selling__arrow { opacity: 1; transform: none; }
.wd-selling__browser { width: 100%; }
.wd-selling__shots { position: relative; aspect-ratio: 16 / 10; background: #0d0d0d; }
.wd-selling__shot {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: top center;
  opacity: 0; transition: opacity 0.4s var(--brb-ease);
}
.wd-selling__shot.is-active { opacity: 1; }
@media (max-width: 860px) {
  .wd-selling__inner { grid-template-columns: 1fr; gap: clamp(24px, 5vw, 36px); }
  .wd-selling__btn { font-size: clamp(18px, 5vw, 24px); }
}

/* ============================================================
   Web Design · Site Health — Issues Holding Your Website Back
   (.wd-health) — 2026-07. Intro + laptop dashboard + 6 hover cards.
   ============================================================ */
.wd-health { background: var(--brb-surface); color: var(--brb-text); padding: var(--brb-section-pad) 0; overflow: hidden; }
.wd-health__top {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(32px, 4.5vw, 72px); align-items: center; margin-bottom: clamp(40px, 5vw, 66px);
}
.wd-health__eyebrow {
  display: inline-block; font-family: var(--brb-font-body);
  font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--brb-accent); margin-bottom: clamp(14px, 1.8vw, 20px);
}
.wd-health__title {
  font-family: var(--brb-font-display); font-size: clamp(28px, 3.3vw, 44px);
  line-height: 1.1; letter-spacing: -0.02em; font-weight: 400; color: var(--brb-text);
  margin: 0 0 clamp(18px, 2.2vw, 26px);
}
.wd-health__title em { font-style: italic; color: var(--brb-accent); display: block; }
.wd-health__lead { font-size: clamp(15px, 1.05vw, 16.5px); line-height: 1.7; color: var(--brb-text-muted); margin: 0 0 14px; max-width: 52ch; }
.wd-health__lead strong { color: var(--brb-accent); font-weight: 600; }

/* laptop dashboard */
.wdh-dash { position: relative; display: flex; justify-content: center; padding: clamp(18px,3vw,42px) clamp(14px,2vw,34px) clamp(22px,3vw,40px); color: var(--brb-accent); }
.wdh-dash__laptop { position: relative; z-index: 2; width: min(100%, 440px); }
.wdh-dash__screen {
  background: linear-gradient(160deg, #171b21, #0f1216);
  border: 6px solid #0c0e12; border-radius: 14px 14px 4px 4px;
  box-shadow: 0 34px 60px rgba(0, 0, 0, 0.35); padding: clamp(14px, 1.6vw, 20px);
}
.wdh-dash__hinge {
  height: 12px; width: 118%; margin: 0 -9% ; border-radius: 0 0 12px 12px;
  background: linear-gradient(180deg, #14171c, #0a0c0f);
  box-shadow: 0 14px 20px rgba(0, 0, 0, 0.28);
}
.wd-dashui { color: var(--brb-text-on-dark); font-family: var(--brb-font-body); }
.wd-dashui__bar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.wd-dashui__title { font-size: 13px; font-weight: 600; }
.wd-dashui__live { display: inline-flex; align-items: center; gap: 6px; font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--brb-text-on-dark-muted); }
.wd-dashui__dot { width: 7px; height: 7px; border-radius: 50%; background: #4ED17F; box-shadow: 0 0 8px #4ED17F; }
.wd-dashui__hero { display: flex; align-items: center; gap: clamp(14px, 2vw, 22px); margin-bottom: 14px; }
.wd-dashui__ring {
  flex: none; width: 90px; height: 90px; border-radius: 50%; position: relative;
  background: conic-gradient(var(--brb-accent) 0 67%, rgba(250, 247, 242, 0.12) 67% 100%);
  display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center;
}
.wd-dashui__ring::before { content: ''; position: absolute; inset: 8px; border-radius: 50%; background: #12151a; }
.wd-dashui__ring-num { position: relative; z-index: 1; font-family: var(--brb-font-display); font-size: 26px; line-height: 1; }
.wd-dashui__ring-lbl { position: relative; z-index: 1; font-size: 8px; letter-spacing: 0.04em; text-transform: uppercase; color: var(--brb-text-on-dark-muted); margin-top: 1px; }
.wd-dashui__tiles { flex: 1; display: grid; gap: 8px; }
.wd-dashui__tile { display: flex; align-items: baseline; justify-content: space-between; padding-bottom: 7px; border-bottom: 1px solid rgba(250, 247, 242, 0.08); }
.wd-dashui__tile-v { font-family: var(--brb-font-display); font-size: 18px; color: #4ED17F; }
.wd-dashui__tile-v--warn { color: #F5A93B; }
.wd-dashui__tile-v--err { color: #E9705F; }
.wd-dashui__tile-l { font-size: 11px; color: var(--brb-text-on-dark-muted); }
.wd-dashui__spark { display: block; width: 100%; height: 40px; margin-bottom: 12px; }
.wd-dashui__checks { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 14px; }
.wd-dashui__checks li { font-size: 11px; color: var(--brb-text-on-dark-muted); display: inline-flex; align-items: center; gap: 6px; }
.wd-dashui__checks li::before { content: '✓'; color: #4ED17F; font-size: 11px; }
.wd-dashui__checks--warn li { color: var(--brb-text-on-dark-muted); }
.wd-dashui__checks--warn li::before { content: '!'; color: var(--brb-accent); font-weight: 700; width: 11px; text-align: center; }
.wdh-dash__landscape { position: absolute; top: clamp(0px, 1vw, 12px); right: clamp(-6px, 0vw, 6px); width: clamp(170px, 34%, 250px); height: auto; z-index: 0; opacity: 0.32; pointer-events: none; }
.wdh-dash__mug, .wdh-dash__plant { position: absolute; z-index: 3; color: var(--brb-accent); }
.wdh-dash__mug { left: clamp(4px, 3%, 34px); bottom: clamp(0px, 1vw, 12px); width: clamp(30px, 3.8vw, 42px); opacity: 0.72; }
.wdh-dash__plant { right: clamp(4px, 4%, 40px); bottom: clamp(0px, 1vw, 10px); width: clamp(26px, 3.2vw, 36px); opacity: 0.66; }
.wdh-dash__mug svg, .wdh-dash__plant svg, .wdh-dash__landscape { display: block; width: 100%; height: auto; }

/* 6 hover-reveal issue cards.
   Sizing corrected 2026-08-03 (operator: "too large and wide… the width
   should match the section of the content"). Two causes, both fixed:
   (1) an unbalanced </div> in the template closed .wrap early, so this grid
       escaped the container and ran full-bleed — wider than the intro copy
       and laptop above it. The markup is balanced now, so it inherits .wrap.
   (2) the cards themselves were oversized for their content — 34px padding
       and a 218px floor left the short descriptions swimming. */
.wd-health__cards {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(16px, 1.6vw, 22px); margin-bottom: clamp(40px, 5vw, 60px);
}
.wd-health-card {
  position: relative; overflow: hidden;
  background: linear-gradient(168deg, #FFFFFF 0%, #FBF8F3 100%);
  border: 1px solid var(--brb-border); border-radius: 14px;
  padding: clamp(20px, 1.9vw, 26px) clamp(20px, 1.9vw, 24px); min-height: 0;
  transition: transform 0.28s var(--brb-ease), box-shadow 0.28s var(--brb-ease), border-color 0.28s var(--brb-ease), background 0.28s var(--brb-ease);
  cursor: default; outline: none;
}
.wd-health-card__head { display: flex; align-items: center; gap: 12px; }
.wd-health-card__ico {
  flex: none; display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 50%;
  border: 1.5px solid var(--brb-border-strong); color: var(--brb-text-muted);
  background: #fff;
  transition: color 0.28s var(--brb-ease), border-color 0.28s var(--brb-ease), background 0.28s var(--brb-ease), transform 0.28s var(--brb-ease);
}
.wd-health-card::before {
  content: ''; position: absolute; inset: 0 0 auto 0; height: 3px;
  background: var(--card-accent); opacity: 0; transition: opacity 0.28s var(--brb-ease);
}
.wd-health-card:hover::before, .wd-health-card:focus-visible::before, .wd-health-card.is-open::before { opacity: 1; }
.wd-health-card__ico svg { width: 19px; height: 19px; }
.wd-health-card__title { font-family: var(--brb-font-body); font-size: 16px; font-weight: 600; letter-spacing: -0.01em; color: var(--brb-text); margin: 0; flex: 1; }
.wd-health-card__arrow { flex: none; color: var(--brb-text-subtle); font-size: 15px; transition: color 0.28s var(--brb-ease), transform 0.28s var(--brb-ease); }
.wd-health-card__desc {
  margin: 13px 0 0; font-size: 12.5px; line-height: 1.6; color: var(--brb-text-muted);
  text-wrap: pretty;
}
.wd-health-card:hover, .wd-health-card:focus-visible, .wd-health-card.is-open {
  transform: translateY(-4px);
  border-color: var(--card-accent);
  background: #fff;
  box-shadow: 0 16px 36px color-mix(in srgb, var(--card-accent) 22%, transparent);
}
.wd-health-card:hover .wd-health-card__ico,
.wd-health-card:focus-visible .wd-health-card__ico,
.wd-health-card.is-open .wd-health-card__ico { color: var(--card-ink, #fff); border-color: var(--card-accent); background: var(--card-accent); transform: scale(1.04); }
.wd-health-card:hover .wd-health-card__arrow,
.wd-health-card:focus-visible .wd-health-card__arrow,
.wd-health-card.is-open .wd-health-card__arrow { color: var(--card-accent); transform: translateX(3px); }
.wd-health-card:hover .wd-health-card__desc,
.wd-health-card:focus-visible .wd-health-card__desc,
.wd-health-card.is-open .wd-health-card__desc { opacity: 1; transform: none; }

.wd-health__closing {
  text-align: center; max-width: 720px; margin: 0 auto;
  font-family: var(--brb-font-display); font-size: clamp(18px, 1.8vw, 24px); line-height: 1.5; color: var(--brb-text);
}
.wd-health__closing em { font-style: italic; color: var(--brb-accent); }
.wd-health__closing-mark { color: var(--brb-accent); margin-right: 6px; }

@media (max-width: 900px) {
  .wd-health__top { grid-template-columns: 1fr; }
  .wd-health__visual { order: 2; max-width: 460px; margin-inline: auto; }
  .wd-health__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 620px) {
  .wd-health__cards { grid-template-columns: 1fr; }
  .wd-health-card { min-height: 0; }
  .wd-health-card__desc { margin-top: 12px; }
}

/* ============================================================
   Web Design · The Details Customers Feel (.wd-details) — 2026-08.
   Cream band so it separates from .wd-selling (white) above and
   .wd-health (white) below without adding a third surface colour.
   Ten craft cards, 5-up; one carries the dark "active" treatment at
   rest and the highlight follows the cursor across the grid.
   ============================================================ */
.wd-details {
  background: var(--brb-surface);
  color: var(--brb-text);
  padding: var(--brb-section-pad) 0;
}
.wd-details__top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.02fr);
  gap: clamp(28px, 4vw, 64px);
  align-items: center;
  margin-bottom: clamp(34px, 4.4vw, 56px);
}
.wd-details__eyebrow {
  display: inline-block; font-family: var(--brb-font-body);
  font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--brb-accent);
  padding-bottom: 8px;
  border-bottom: 1.5px solid var(--brb-accent);
  margin-bottom: clamp(16px, 2vw, 22px);
}
.wd-details__title {
  font-family: var(--brb-font-display); font-size: clamp(30px, 3.5vw, 48px);
  line-height: 1.08; letter-spacing: -0.02em; font-weight: 400;
  color: var(--brb-text); margin: 0 0 clamp(14px, 1.8vw, 20px);
}
.wd-details__title em { font-style: italic; color: var(--brb-accent); }
.wd-details__lead {
  font-size: clamp(15px, 1.1vw, 17px); line-height: 1.7;
  color: var(--brb-text-muted); margin: 0; max-width: 46ch;
}
.wd-details__flourish { display: block; margin-top: clamp(18px, 2.4vw, 28px); color: var(--brb-accent); opacity: 0.75; }
.wd-details__flourish svg { width: 132px; height: 22px; display: block; }

/* --- illustrated browser ------------------------------------ */
.wd-details__visual { position: relative; padding: 26px 0 40px; }
.wd-details__landscape {
  position: absolute; right: 0; top: -30%; width: 68%; height: auto;
  color: var(--brb-neutral-300); opacity: 0.8; pointer-events: none;
}
.wd-details__browser {
  position: relative; z-index: 1;
  width: 72%; margin-left: 0; margin-right: auto;
  background: #fff; border: 1px solid var(--brb-border);
  border-radius: 12px; overflow: hidden;
  box-shadow: 0 22px 48px rgba(26, 26, 26, 0.10);
}
.wd-details__chrome {
  display: flex; align-items: center; gap: 6px;
  padding: 9px 12px; border-bottom: 1px solid var(--brb-border);
}
.wd-details__chrome i { width: 7px; height: 7px; border-radius: 50%; background: var(--brb-neutral-300); }
.wd-details__chrome b { flex: 1; height: 7px; border-radius: 4px; background: var(--brb-neutral-100); margin-left: 8px; max-width: 46%; }
.wd-details__page { padding: 12px 14px 18px; }
.wd-details__band {
  border: 1px solid var(--brb-border); border-radius: 8px;
  color: var(--brb-neutral-300); overflow: hidden; margin-bottom: 14px;
  background: linear-gradient(180deg, #FFFFFF 0%, #FBF8F3 100%);
}
.wd-details__band svg { width: 100%; height: auto; display: block; }
.wd-details__line {
  display: block; height: 7px; border-radius: 4px;
  background: var(--brb-neutral-100); margin-bottom: 8px;
}
.wd-details__line--lg { height: 10px; width: 62%; background: var(--brb-neutral-300); opacity: 0.55; }
.wd-details__line--sm { width: 44%; }
.wd-details__cta {
  display: block; width: 84px; height: 15px; border-radius: 4px;
  background: var(--brb-accent); margin-top: 12px;
}
.wd-details__card {
  position: absolute; z-index: 2; right: 8%; bottom: 0;
  width: clamp(120px, 15vw, 158px); padding: 14px;
  background: #fff; border: 1px solid var(--brb-border); border-radius: 10px;
  box-shadow: 0 16px 34px rgba(26, 26, 26, 0.12);
}
.wd-details__check { display: block; width: 26px; height: 26px; color: var(--brb-accent); margin-bottom: 10px; }
.wd-details__check svg { width: 100%; height: 100%; display: block; }
.wd-details__card-line { display: block; height: 6px; border-radius: 4px; background: var(--brb-neutral-100); margin-bottom: 6px; }
.wd-details__card-line--sm { width: 58%; margin-bottom: 0; }

/* --- the ten cards ------------------------------------------ */
.wd-details__grid {
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: clamp(12px, 1.2vw, 18px);
}
.wd-detail-card {
  position: relative; overflow: hidden;
  background: var(--brb-surface-raised);
  border: 1px solid var(--brb-border); border-radius: 14px;
  padding: clamp(18px, 1.7vw, 24px);
  outline: none; cursor: default;
  transition: background 0.3s var(--brb-ease), border-color 0.3s var(--brb-ease),
              transform 0.3s var(--brb-ease), box-shadow 0.3s var(--brb-ease);
}
.wd-detail-card__plus {
  position: absolute; top: clamp(14px, 1.4vw, 18px); right: clamp(14px, 1.4vw, 18px);
  font-family: var(--brb-font-body); font-size: 15px; line-height: 1;
  color: var(--brb-text-subtle); transition: color 0.3s var(--brb-ease);
}
.wd-detail-card__ico {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 50%;
  border: 1.4px solid var(--brb-border-strong); color: var(--brb-text-muted);
  margin-bottom: clamp(14px, 1.5vw, 20px);
  transition: color 0.3s var(--brb-ease), border-color 0.3s var(--brb-ease), background 0.3s var(--brb-ease);
}
.wd-detail-card__ico svg { width: 20px; height: 20px; display: block; }
.wd-detail-card__ico em {
  font-family: var(--brb-font-display); font-style: normal;
  font-size: 16px; letter-spacing: -0.01em; line-height: 1;
}
.wd-detail-card__title {
  font-family: var(--brb-font-body); font-size: 14px; font-weight: 600;
  letter-spacing: -0.01em; color: var(--brb-text); margin: 0 0 8px;
  transition: color 0.3s var(--brb-ease);
}
.wd-detail-card__desc {
  margin: 0; font-size: 12.5px; line-height: 1.6; color: var(--brb-text-muted);
  transition: color 0.3s var(--brb-ease);
}

/* Dark highlight. One card holds it at rest; hovering any card moves
   it there, so the grid always shows exactly one active tile. */
.wd-detail-card.is-active,
.wd-detail-card:hover,
.wd-detail-card:focus-visible {
  background: var(--brb-anchor);
  border-color: var(--brb-anchor);
  transform: translateY(-3px);
  box-shadow: 0 18px 38px rgba(26, 26, 26, 0.22);
}
.wd-details__grid:hover .wd-detail-card.is-active:not(:hover) {
  background: var(--brb-surface-raised);
  border-color: var(--brb-border);
  transform: none;
  box-shadow: none;
}
.wd-detail-card.is-active .wd-detail-card__ico,
.wd-detail-card:hover .wd-detail-card__ico,
.wd-detail-card:focus-visible .wd-detail-card__ico {
  color: var(--brb-accent); border-color: var(--brb-accent);
}
.wd-detail-card.is-active .wd-detail-card__title,
.wd-detail-card:hover .wd-detail-card__title,
.wd-detail-card:focus-visible .wd-detail-card__title { color: var(--brb-text-on-dark); }
.wd-detail-card.is-active .wd-detail-card__desc,
.wd-detail-card:hover .wd-detail-card__desc,
.wd-detail-card:focus-visible .wd-detail-card__desc { color: var(--brb-text-on-dark-muted); }
.wd-detail-card.is-active .wd-detail-card__plus,
.wd-detail-card:hover .wd-detail-card__plus,
.wd-detail-card:focus-visible .wd-detail-card__plus { color: var(--brb-accent); }
.wd-details__grid:hover .wd-detail-card.is-active:not(:hover) .wd-detail-card__ico { color: var(--brb-text-muted); border-color: var(--brb-border-strong); }
.wd-details__grid:hover .wd-detail-card.is-active:not(:hover) .wd-detail-card__title { color: var(--brb-text); }
.wd-details__grid:hover .wd-detail-card.is-active:not(:hover) .wd-detail-card__desc { color: var(--brb-text-muted); }
.wd-details__grid:hover .wd-detail-card.is-active:not(:hover) .wd-detail-card__plus { color: var(--brb-text-subtle); }

.wd-details__closing {
  position: relative;
  text-align: center; max-width: 860px; margin: clamp(34px, 4.4vw, 56px) auto 0;
  font-family: var(--brb-font-display); font-size: clamp(17px, 1.6vw, 22px);
  line-height: 1.5; color: var(--brb-text);
}
.wd-details__closing em { font-style: italic; color: var(--brb-accent); }
.wd-details__closing-mark { color: var(--brb-accent); margin-right: 6px; }

@media (max-width: 1100px) {
  .wd-details__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .wd-details__top { grid-template-columns: 1fr; }
  .wd-details__browser { width: 80%; }
  .wd-details__landscape { width: 52%; top: -14%; }
}
@media (max-width: 720px) {
  .wd-details__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .wd-details__card { width: 128px; }
  /* No hover on touch — drop the resting highlight so all ten read alike. */
  .wd-detail-card.is-active {
    background: var(--brb-surface-raised); border-color: var(--brb-border);
    transform: none; box-shadow: none;
  }
  .wd-detail-card.is-active .wd-detail-card__ico { color: var(--brb-text-muted); border-color: var(--brb-border-strong); }
  .wd-detail-card.is-active .wd-detail-card__title { color: var(--brb-text); }
  .wd-detail-card.is-active .wd-detail-card__desc { color: var(--brb-text-muted); }
  .wd-detail-card.is-active .wd-detail-card__plus { color: var(--brb-text-subtle); }
}
@media (max-width: 460px) {
  .wd-details__grid { grid-template-columns: 1fr; }
}

/* ============================================================
   Web Design · A Website That's Easy to Manage (.wd-manage)
   Rebuilt 2026-08 to the operator's reference mockup. Left column is
   copy + three points; right column is an illustrated editing scene
   (line-art landscape, monitor running the WP editor, two floating
   panels). Below: a five-item support strip and a dark closing band.
   ============================================================ */
.wd-manage { background: var(--brb-surface-raised); color: var(--brb-text); padding: var(--brb-section-pad) 0; }
.wd-manage__top {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.06fr);
  gap: clamp(28px, 4vw, 60px); align-items: center;
  margin-bottom: clamp(36px, 4.6vw, 60px);
}
.wd-manage__eyebrow {
  display: inline-block; font-family: var(--brb-font-body);
  font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--brb-accent); padding-bottom: 8px;
  border-bottom: 1.5px solid var(--brb-accent);
  margin-bottom: clamp(16px, 2vw, 22px);
}
.wd-manage__title {
  font-family: var(--brb-font-display); font-size: clamp(30px, 3.5vw, 48px);
  line-height: 1.08; letter-spacing: -0.02em; font-weight: 400;
  color: var(--brb-text); margin: 0 0 clamp(12px, 1.5vw, 18px);
}
.wd-manage__title em { font-style: italic; color: var(--brb-accent); }
.wd-manage__rule { display: block; color: var(--brb-neutral-300); margin-bottom: clamp(14px, 1.8vw, 20px); }
.wd-manage__rule svg { width: 168px; height: 12px; display: block; }
.wd-manage__lead {
  font-size: clamp(15px, 1.1vw, 17px); line-height: 1.7;
  color: var(--brb-text-muted); margin: 0 0 clamp(24px, 3vw, 34px); max-width: 52ch;
}
.wd-manage__points { list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(18px, 2vw, 26px); }
.wd-manage__point { display: flex; gap: 16px; align-items: flex-start; }
.wd-manage__point-ico {
  flex: none; display: inline-flex; align-items: center; justify-content: center;
  width: 46px; height: 46px; border-radius: 50%;
  border: 1.4px solid var(--brb-border-strong); background: #fff;
  color: var(--brb-text);
}
.wd-manage__point-ico svg { width: 22px; height: 22px; display: block; }
.wd-manage__point strong {
  display: block; font-family: var(--brb-font-body); font-size: 15px; font-weight: 600;
  color: var(--brb-text); margin-bottom: 5px;
}
.wd-manage__point div span { display: block; font-size: 13px; line-height: 1.6; color: var(--brb-text-muted); }

/* --- illustrated editing scene ------------------------------ */
.wd-manage__visual { position: relative; padding: clamp(18px, 3vw, 40px) 0 clamp(28px, 4vw, 52px); }
.wd-manage__landscape {
  position: absolute; inset: -12% -4% auto 0; width: 100%; height: auto;
  color: var(--brb-neutral-300); opacity: 0.62; pointer-events: none;
}
.wd-manage__screen { position: relative; z-index: 1; width: 68%; margin: 0 auto 0 0; }
.wd-manage__wp {
  display: grid; grid-template-columns: 30% 1fr;
  background: #fff; border: 1px solid var(--brb-border);
  border-radius: 10px; overflow: hidden;
  box-shadow: 0 24px 52px rgba(26, 26, 26, 0.16);
}
.wd-manage__wp-side { background: var(--brb-anchor); padding: 10px 0 14px; }
.wd-manage__wp-mark { display: block; width: 20px; height: 20px; color: var(--brb-text-on-dark); margin: 2px 0 10px 10px; }
.wd-manage__wp-mark svg { width: 100%; height: 100%; display: block; }
.wd-manage__wp-side ul { list-style: none; margin: 0; padding: 0; }
.wd-manage__wp-side li {
  font-family: var(--brb-font-body); font-size: 8.5px; line-height: 1;
  color: var(--brb-text-on-dark-muted); padding: 5px 10px;
}
.wd-manage__wp-side li.is-on { background: rgba(250, 247, 242, 0.1); color: var(--brb-text-on-dark); }
.wd-manage__wp-main { padding: 10px 12px 14px; min-width: 0; }
.wd-manage__wp-label { display: block; font-family: var(--brb-font-body); font-size: 9px; font-weight: 600; color: var(--brb-text); margin-bottom: 6px; }
.wd-manage__wp-field {
  display: block; font-family: var(--brb-font-body); font-size: 8.5px; color: var(--brb-text-muted);
  border: 1px solid var(--brb-border-strong); border-radius: 3px; padding: 5px 7px; margin-bottom: 7px;
}
.wd-manage__wp-tools { display: flex; align-items: center; gap: 7px; padding-bottom: 7px; border-bottom: 1px solid var(--brb-border); margin-bottom: 9px; }
.wd-manage__wp-tools i { font-family: var(--brb-font-body); font-style: normal; font-size: 8px; font-weight: 700; color: var(--brb-text-muted); }
.wd-manage__wp-tools b { width: 9px; height: 2px; border-radius: 2px; background: var(--brb-neutral-100); }
.wd-manage__wp-canvas { border: 1px solid var(--brb-border); border-radius: 4px; padding: 9px; }
.wd-manage__wp-h {
  font-family: var(--brb-font-display); font-size: clamp(9px, 1vw, 13px); line-height: 1.25;
  color: var(--brb-text); margin: 0 0 7px;
}
.wd-manage__wp-line { display: block; height: 3px; border-radius: 2px; background: var(--brb-neutral-100); margin-bottom: 4px; }
.wd-manage__wp-line--sm { width: 58%; margin-bottom: 8px; }
.wd-manage__wp-photo {
  border-radius: 3px; overflow: hidden; color: var(--brb-neutral-300);
  background: linear-gradient(180deg, #FBF8F3 0%, #F1EBE1 100%);
}
.wd-manage__wp-photo svg { width: 100%; height: auto; display: block; }
.wd-manage__stand {
  display: block; position: relative; width: 14%; height: 13px; margin: 0 auto;
  background: var(--brb-neutral-100); border-radius: 0 0 3px 3px;
}
.wd-manage__stand::after {
  content: ''; position: absolute; left: 50%; top: 100%; transform: translateX(-50%);
  width: 260%; height: 5px; border-radius: 3px; background: var(--brb-neutral-100);
}

.wd-manage__panel {
  position: absolute; z-index: 3;
  background: #fff; border: 1px solid var(--brb-border); border-radius: 8px;
  padding: 9px 10px; box-shadow: 0 14px 30px rgba(26, 26, 26, 0.14);
}
.wd-manage__panel--style { top: 4%; right: 0; width: clamp(96px, 12vw, 124px); }
.wd-manage__panel--edit { top: 32%; right: 6%; width: clamp(104px, 13vw, 132px); }
.wd-manage__panel-t {
  display: block; font-family: var(--brb-font-body); font-size: 8.5px; font-weight: 600;
  color: var(--brb-text); margin-bottom: 6px;
}
.wd-manage__swatches, .wd-manage__fonts { display: flex; gap: 5px; margin-bottom: 8px; }
.wd-manage__swatches i { width: 14px; height: 14px; border-radius: 50%; border: 1px solid var(--brb-border); }
.wd-manage__fonts i {
  font-family: var(--brb-font-display); font-style: normal; font-size: 9px; line-height: 1;
  color: var(--brb-text-muted); border: 1px solid var(--brb-border); border-radius: 3px; padding: 3px 5px;
}
.wd-manage__fonts i.is-on { color: var(--brb-accent); border-color: var(--brb-accent); }
.wd-manage__panel-list { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 4px; }
.wd-manage__panel-list li { font-family: var(--brb-font-body); font-size: 8.5px; color: var(--brb-text-muted); }
.wd-manage__panel-btn {
  display: block; text-align: center; font-family: var(--brb-font-body);
  font-size: 8px; font-weight: 600; color: #fff;
  background: var(--brb-accent); border-radius: 3px; padding: 5px 4px;
}
.wd-manage__add {
  position: absolute; z-index: 2; right: 4%; bottom: 16%;
  display: inline-flex; align-items: center; gap: 5px; white-space: nowrap;
  font-family: var(--brb-font-body); font-size: 8.5px; color: var(--brb-text-muted);
}
.wd-manage__add em { font-style: normal; }
.wd-manage__mug, .wd-manage__plant { position: absolute; z-index: 2; color: var(--brb-neutral-300); }
.wd-manage__mug { width: 34px; height: 29px; left: 4%; bottom: 6%; }
.wd-manage__plant { width: 30px; height: 37px; left: 12%; bottom: 2%; }
.wd-manage__mug svg, .wd-manage__plant svg { width: 100%; height: 100%; display: block; }

/* --- support strip ------------------------------------------ */
.wd-manage__support {
  list-style: none; margin: 0 0 clamp(24px, 3vw, 34px); padding: clamp(20px, 2.4vw, 28px) clamp(18px, 2vw, 26px);
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: clamp(14px, 1.8vw, 26px);
  border: 1px solid var(--brb-border); border-radius: 16px; background: var(--brb-surface);
}
.wd-manage__support-item { display: flex; gap: 11px; align-items: flex-start; }
.wd-manage__support-item + .wd-manage__support-item { border-left: 1px solid var(--brb-border); padding-left: clamp(14px, 1.8vw, 26px); }
.wd-manage__support-ico { flex: none; width: 26px; height: 26px; color: var(--brb-accent); }
.wd-manage__support-ico svg { width: 100%; height: 100%; display: block; }
.wd-manage__support-item strong {
  display: block; font-family: var(--brb-font-body); font-size: 12.5px; font-weight: 600;
  letter-spacing: -0.01em; color: var(--brb-text); margin-bottom: 4px; text-wrap: balance;
}
.wd-manage__support-item div span { display: block; font-size: 11.5px; line-height: 1.55; color: var(--brb-text-muted); text-wrap: pretty; }

/* --- closing band ------------------------------------------- */
.wd-manage__band {
  position: relative; overflow: hidden;
  display: flex; align-items: center; justify-content: center; gap: 12px;
  background: var(--brb-anchor); border-radius: 16px;
  padding: clamp(22px, 2.6vw, 32px) clamp(60px, 7vw, 110px);
}
.wd-manage__band-mark { flex: none; color: var(--brb-accent); font-size: 18px; line-height: 1; }
.wd-manage__band-text {
  margin: 0; text-align: center;
  font-family: var(--brb-font-display); font-size: clamp(16px, 1.6vw, 22px);
  line-height: 1.45; color: var(--brb-text-on-dark);
}
.wd-manage__band-text em { font-style: italic; color: var(--brb-accent); }
.wd-manage__band-art {
  position: absolute; right: 0; bottom: -4px; width: clamp(96px, 11vw, 150px); height: auto;
  color: var(--brb-text-on-dark-subtle); opacity: 0.55; pointer-events: none;
}

@media (max-width: 1100px) {
  .wd-manage__support { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .wd-manage__support-item + .wd-manage__support-item { border-left: 0; padding-left: 0; }
}
@media (max-width: 900px) {
  .wd-manage__top { grid-template-columns: 1fr; }
  .wd-manage__screen { width: 72%; }
}
@media (max-width: 760px) {
  .wd-manage__support { grid-template-columns: 1fr; }
  .wd-manage__screen { width: 84%; }
  .wd-manage__panel--style { top: 2%; }
  .wd-manage__panel--edit { top: 38%; right: 0; }
  .wd-manage__band { flex-direction: column; padding-inline: clamp(20px, 6vw, 40px); }
  .wd-manage__band-art { display: none; }
}

/* Dashboard viz: don't let the Looker frame dominate the split (2026-07) */
.wd-dashboard__viz { max-width: 560px; width: 100%; justify-self: end; }
@media (max-width: 900px) { .wd-dashboard__viz { justify-self: center; } }

/* Breathing room above the pricing close CTA (2026-07) */
.ads-pricing__close { margin-top: clamp(34px, 4vw, 52px); }

/* ============================================================
   SEO · Search Is Always Evolving (.seo-evolving) — 2026-07.
   ============================================================ */
.seo-evolving { background: var(--brb-anchor); color: var(--brb-text-on-dark); padding: var(--brb-section-pad) 0; overflow: hidden; }
.seo-evolving__inner { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 0.88fr); gap: clamp(36px, 5vw, 72px); align-items: center; }
.seo-evolving__eyebrow {
  display: inline-block; font-family: var(--brb-font-body);
  font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--brb-accent); margin-bottom: clamp(14px, 1.8vw, 20px);
}
.seo-evolving__title {
  font-family: var(--brb-font-display); font-size: clamp(28px, 3.4vw, 46px);
  line-height: 1.1; letter-spacing: -0.02em; font-weight: 400; color: var(--brb-text-on-dark); margin: 0 0 clamp(18px, 2.2vw, 26px);
}
.seo-evolving__title em { font-style: italic; color: var(--brb-accent); }
.seo-evolving__sub { font-size: clamp(14.5px, 1.05vw, 16px); line-height: 1.7; color: var(--brb-text-on-dark-muted); margin: 0 0 14px; max-width: 56ch; }
.seo-evolving__ctas { display: flex; flex-wrap: wrap; gap: 14px; margin-top: clamp(10px, 1.5vw, 18px); }
.seo-evolving__visual { display: grid; gap: 14px; }
.seo-serpcard, .seo-readiness { background: #14171c; border: 1px solid rgba(250, 247, 242, 0.1); border-radius: 14px; box-shadow: 0 24px 50px rgba(0, 0, 0, 0.4); }
.seo-serpcard { padding: 16px; }
.seo-serpcard__bar { display: flex; align-items: center; gap: 10px; background: rgba(255, 255, 255, 0.06); border-radius: 99px; padding: 9px 15px; }
.seo-serpcard__g { font-family: var(--brb-font-display); font-size: 14px; color: #EDEDED; }
.seo-serpcard__q { font-size: 13px; color: var(--brb-text-on-dark-muted); }
.seo-serpcard__ai { margin-top: 13px; }
.seo-serpcard__ai-tag { display: inline-block; font-size: 11px; font-weight: 600; color: var(--brb-accent); margin-bottom: 5px; }
.seo-serpcard__ai p { font-size: 12.5px; line-height: 1.5; color: var(--brb-text-on-dark-muted); margin: 0; }
.seo-serpcard__result { margin-top: 12px; border-left: 2px solid var(--brb-accent); padding-left: 11px; }
.seo-serpcard__result-name { display: block; font-size: 13.5px; font-weight: 600; color: #7FA8E0; }
.seo-serpcard__result-meta { display: block; font-size: 11.5px; color: var(--brb-text-on-dark-muted); margin-top: 2px; }
.seo-readiness { padding: 16px; display: flex; align-items: center; gap: 16px; }
.seo-readiness__ring {
  flex: none; width: 72px; height: 72px; border-radius: 50%; position: relative;
  display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center;
  background: conic-gradient(var(--brb-accent) 0 87%, rgba(250, 247, 242, 0.12) 87% 100%);
}
.seo-readiness__ring::before { content: ''; position: absolute; inset: 7px; border-radius: 50%; background: #14171c; }
.seo-readiness__num { position: relative; z-index: 1; font-family: var(--brb-font-display); font-size: 22px; line-height: 1; }
.seo-readiness__lbl { position: relative; z-index: 1; font-size: 9px; line-height: 1; margin-top: 2px; color: var(--brb-text-on-dark-muted); }
.seo-readiness__body { flex: 1; min-width: 0; }
.seo-readiness__head { font-size: 12px; color: var(--brb-text-on-dark-muted); margin-bottom: 8px; }
.seo-readiness__head strong { color: #4ED17F; font-weight: 600; }
.seo-readiness__checks { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px; }
.seo-readiness__checks li { font-size: 11px; color: var(--brb-text-on-dark-muted); display: inline-flex; align-items: center; gap: 5px; }
.seo-readiness__checks li::before { content: '✓'; color: #4ED17F; font-size: 10px; }
@media (max-width: 900px) {
  .seo-evolving__inner { grid-template-columns: 1fr; gap: clamp(28px, 6vw, 40px); }
  .seo-evolving__visual { max-width: 460px; }
}

/* ============================================================
   SEO · The Evolution of Search timeline (.seo-evo) — 2026-07.
   ============================================================ */
.seo-evo { background: var(--brb-surface); color: var(--brb-text); padding: var(--brb-section-pad) 0; overflow: hidden; }
.seo-evo__head { max-width: 720px; margin: 0 0 clamp(36px, 4.5vw, 54px); }
.seo-evo__eyebrow { display: inline-block; font-family: var(--brb-font-body); font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--brb-accent); margin-bottom: clamp(14px, 1.8vw, 20px); }
.seo-evo__title { font-family: var(--brb-font-display); font-size: clamp(28px, 3.4vw, 46px); line-height: 1.1; letter-spacing: -0.02em; font-weight: 400; color: var(--brb-text); margin: 0 0 clamp(14px, 1.8vw, 20px); }
.seo-evo__title em { font-style: italic; color: var(--brb-accent); }
.seo-evo__sub { font-size: clamp(15px, 1.1vw, 17px); line-height: 1.7; color: var(--brb-text-muted); margin: 0; }
.seo-evo__timeline {
  --evo-gap: clamp(18px, 2vw, 30px);
  display: flex; flex-wrap: wrap; justify-content: center; align-items: stretch;
  row-gap: clamp(40px, 4.2vw, 58px); column-gap: var(--evo-gap);
  margin-bottom: clamp(32px, 4vw, 48px);
}
.seo-era {
  flex: 0 1 calc((100% - 4 * var(--evo-gap)) / 5); min-width: 150px;
  display: flex; flex-direction: column;
  border-top: 1px solid var(--brb-border);
  padding-top: clamp(24px, 2.4vw, 32px);
}
@media (max-width: 1000px) { .seo-era { flex-basis: calc((100% - 2 * var(--evo-gap)) / 3); } }
@media (max-width: 640px)  { .seo-era { flex-basis: calc((100% - var(--evo-gap)) / 2); } }
.seo-era { position: relative; }
.seo-era__title { min-height: 2.4em; }
.seo-era__desc { flex: 1 1 auto; }
.seo-era__year { display: block; font-family: var(--brb-font-body); font-size: 12px; font-weight: 700; letter-spacing: 0.03em; color: var(--brb-accent); margin-bottom: 12px; }
.seo-era__node { position: absolute; top: -5px; left: 0; width: 9px; height: 9px; border-radius: 50%; background: var(--brb-accent); box-shadow: 0 0 0 4px var(--brb-surface); }
.seo-era__ico { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; border: 1.5px solid var(--brb-border-strong); color: var(--brb-accent); margin-bottom: 12px; }
.seo-era__ico svg { width: 22px; height: 22px; }
.seo-era__title { font-family: var(--brb-font-display); font-size: 17px; font-weight: 400; color: var(--brb-text); margin: 0 0 8px; }
.seo-era__desc { font-size: 12.5px; line-height: 1.55; color: var(--brb-text-muted); margin: 0 0 12px; }
.seo-era__rlabel { display: block; font-size: 10px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--brb-accent); margin-bottom: 6px; }
.seo-era__rewards { list-style: none; margin: 0; padding: 0; }
.seo-era__rewards li { font-size: 12px; color: var(--brb-text-muted); padding: 2px 0 2px 17px; position: relative; }
.seo-era__rewards li::before { content: '✓'; position: absolute; left: 0; color: var(--brb-accent); font-size: 11px; }
.seo-evo__takeaways {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(16px, 2vw, 30px);
  background: var(--brb-anchor); color: var(--brb-text-on-dark); border-radius: 16px;
  padding: clamp(24px, 3vw, 38px); margin-bottom: clamp(32px, 4vw, 48px);
}
.seo-take strong { display: block; font-family: var(--brb-font-body); font-size: 14px; font-weight: 600; color: var(--brb-text-on-dark); margin-bottom: 5px; }
.seo-take span { display: block; font-size: 12.5px; line-height: 1.5; color: var(--brb-text-on-dark-muted); }
.seo-evo__closing {
  background: var(--brb-surface-raised); border: 1px solid var(--brb-border); border-radius: 16px;
  padding: clamp(28px, 3.5vw, 48px); text-align: center;
}
.seo-evo__closing-title { font-family: var(--brb-font-display); font-size: clamp(24px, 2.6vw, 36px); font-weight: 400; color: var(--brb-text); margin: 0 0 14px; }
.seo-evo__closing-title em { font-style: italic; color: var(--brb-accent); }
.seo-evo__closing-sub { font-size: clamp(14px, 1.05vw, 16px); line-height: 1.7; color: var(--brb-text-muted); margin: 0 auto clamp(20px, 2.5vw, 28px); max-width: 62ch; }
.seo-evo__signoff { text-align: center; font-family: var(--brb-font-display); font-size: clamp(20px, 2.1vw, 30px); color: var(--brb-text); margin: clamp(28px, 3.5vw, 44px) 0 0; }
.seo-evo__signoff em { font-style: italic; color: var(--brb-accent); }
@media (max-width: 720px) {
  .seo-evo__takeaways { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 440px) {
  .seo-evo__takeaways { grid-template-columns: 1fr; }
}

/* ============================================================
   SEO · What Happens Behind the Scenes Every Month (.seo-month)
   12 hover-reveal process cards, per-card accent. — 2026-07.
   ============================================================ */
.seo-month { background: var(--brb-anchor); color: var(--brb-text-on-dark); padding: var(--brb-section-pad) 0; overflow: hidden; }
.seo-month__head { max-width: 720px; margin: 0 0 clamp(34px, 4.2vw, 50px); }
.seo-month__eyebrow { display: inline-block; font-family: var(--brb-font-body); font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--brb-accent); margin-bottom: clamp(14px, 1.8vw, 20px); }
.seo-month__title { font-family: var(--brb-font-display); font-size: clamp(28px, 3.4vw, 46px); line-height: 1.1; letter-spacing: -0.02em; font-weight: 400; color: var(--brb-text-on-dark); margin: 0 0 clamp(14px, 1.8vw, 20px); }
.seo-month__title em { font-style: italic; color: var(--brb-accent); }
.seo-month__sub { font-size: clamp(15px, 1.1vw, 17px); line-height: 1.7; color: var(--brb-text-on-dark-muted); margin: 0; max-width: 66ch; }
.seo-month__grid {
  --m-gap: clamp(14px, 1.6vw, 20px);
  display: flex; flex-wrap: wrap; justify-content: center; align-items: stretch; gap: var(--m-gap);
}
.seo-month-card { flex: 0 1 calc((100% - 3 * var(--m-gap)) / 4); min-width: 180px; }
@media (max-width: 1000px) { .seo-month-card { flex-basis: calc((100% - 2 * var(--m-gap)) / 3); } }
@media (max-width: 720px)  { .seo-month-card { flex-basis: calc((100% - var(--m-gap)) / 2); } }
@media (max-width: 460px)  { .seo-month-card { flex-basis: 100%; } }
.seo-month-card {
  position: relative; background: rgba(250, 247, 242, 0.03);
  border: 1px solid rgba(250, 247, 242, 0.1); border-radius: 14px;
  padding: 18px; outline: none; cursor: default;
  transition: transform 0.28s var(--brb-ease), border-color 0.28s var(--brb-ease), background 0.28s var(--brb-ease), box-shadow 0.28s var(--brb-ease);
}
.seo-month-card__head { display: flex; align-items: center; gap: 11px; }
.seo-month-card__ico {
  flex: none; width: 38px; height: 38px; border-radius: 10px;
  border: 1px solid rgba(250, 247, 242, 0.14); display: inline-flex; align-items: center; justify-content: center;
  color: var(--brb-text-on-dark-muted); transition: color 0.28s var(--brb-ease), border-color 0.28s var(--brb-ease);
}
.seo-month-card__ico svg { width: 19px; height: 19px; }
.seo-month-card__title { font-family: var(--brb-font-body); font-size: 13.5px; font-weight: 600; color: var(--brb-text-on-dark); margin: 0; flex: 1; line-height: 1.3; }
.seo-month-card__arrow { flex: none; color: var(--brb-text-on-dark-subtle); font-size: 20px; line-height: 1; transition: color 0.28s var(--brb-ease), transform 0.28s var(--brb-ease); }
.seo-month-card__desc {
  margin: 14px 0 0; font-size: 12px; line-height: 1.55; color: var(--brb-text-on-dark-muted);
}
.seo-month-card:hover, .seo-month-card:focus-visible, .seo-month-card.is-open {
  transform: translateY(-4px); border-color: var(--card-accent); background: rgba(250, 247, 242, 0.06);
  box-shadow: 0 16px 36px color-mix(in srgb, var(--card-accent) 30%, transparent);
}
.seo-month-card:hover .seo-month-card__ico, .seo-month-card:focus-visible .seo-month-card__ico, .seo-month-card.is-open .seo-month-card__ico { color: var(--card-accent); border-color: var(--card-accent); }
.seo-month-card:hover .seo-month-card__arrow, .seo-month-card:focus-visible .seo-month-card__arrow, .seo-month-card.is-open .seo-month-card__arrow { color: var(--card-accent); }
/* descriptions stay open — hover only shifts colour, no layout shift */
.seo-month__grid { align-items: stretch; }
.seo-month-card { display: flex; flex-direction: column; }

/* ============================================================
   Case Studies grid (.cases) — shared SEO + Paid Ads. Hover a tile
   to reveal the stats. — 2026-07.
   ============================================================ */
.cases { background: var(--brb-anchor); color: var(--brb-text-on-dark); padding: var(--brb-section-pad) 0; overflow: hidden; }
.cases__head { max-width: 720px; margin: 0 0 clamp(32px, 4vw, 48px); }
.cases__title { font-family: var(--brb-font-display); font-size: clamp(28px, 3.4vw, 46px); line-height: 1.1; letter-spacing: -0.02em; font-weight: 400; color: var(--brb-text-on-dark); margin: clamp(12px, 1.6vw, 18px) 0 clamp(12px, 1.6vw, 18px); }
.cases__title em { font-style: italic; color: var(--brb-accent); }
.cases__sub { font-size: clamp(14.5px, 1.05vw, 16px); line-height: 1.7; color: var(--brb-text-on-dark-muted); margin: 0; }
.cases__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(16px, 1.8vw, 24px); }
.case-tile {
  position: relative; min-height: clamp(240px, 26vw, 300px); border-radius: 16px; overflow: hidden;
  background-size: cover; background-position: center; border: 1px solid rgba(250, 247, 242, 0.1);
  display: flex; align-items: flex-end; padding: clamp(22px, 2.4vw, 32px); cursor: default; outline: none;
}
.case-tile--plain { background: linear-gradient(160deg, #2c2824, #171412); }
.case-tile__label { position: relative; z-index: 2; transition: opacity 0.3s var(--brb-ease); }
.case-tile__name { display: block; font-family: var(--brb-font-display); font-size: clamp(20px, 2vw, 28px); color: #fff; }
.case-tile__ind { display: block; font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--brb-accent); margin-top: 5px; }
.case-tile__panel {
  position: absolute; inset: 0; z-index: 3; display: flex; flex-direction: column; justify-content: center;
  gap: clamp(12px, 1.4vw, 18px); padding: clamp(24px, 2.6vw, 36px);
  background: linear-gradient(160deg, rgba(14, 14, 14, 0.9), rgba(14, 14, 14, 0.96));
  opacity: 0; transition: opacity 0.35s var(--brb-ease);
}
.case-tile:hover .case-tile__panel, .case-tile:focus-visible .case-tile__panel { opacity: 1; }
.case-tile:hover .case-tile__label, .case-tile:focus-visible .case-tile__label { opacity: 0; }
.case-tile__panel-name { font-family: var(--brb-font-display); font-size: clamp(18px, 1.7vw, 22px); color: #fff; }
.case-tile__stats { display: flex; gap: clamp(18px, 2.2vw, 34px); flex-wrap: wrap; }
.case-stat { display: flex; flex-direction: column; }
.case-stat__v { font-family: var(--brb-font-display); font-size: clamp(26px, 2.8vw, 38px); color: var(--brb-accent); line-height: 1; }
.case-stat__l { font-size: 11px; color: var(--brb-text-on-dark-muted); margin-top: 6px; max-width: 15ch; }
.case-tile__link { font-family: var(--brb-font-body); font-size: 12px; font-weight: 600; color: var(--brb-text-on-dark); text-decoration: none; margin-top: 2px; }
.case-tile__link:hover { color: var(--brb-accent); }
@media (max-width: 720px) { .cases__grid { grid-template-columns: 1fr; } }


/* SEO page · equal-height "building blocks" cards (2026-07).
   Scoped to body.brb-seo — /paid-advertising/ and the location-service
   template deliberately keep align-items:start for their heavier bodies. */
body.brb-seo .wd-platforms__grid { align-items: stretch; grid-auto-rows: 1fr; }
body.brb-seo .platform-card { height: 100%; }

/* ============================================================
   SEO Case Studies — verified-data tiles (2026-07-29).
   Spec: docs/superpowers/specs/2026-07-29-seo-case-studies-design.md
   Two tiles, anonymised, no client screenshots — the proof is the
   data visual, so nothing identifies the client.
   ============================================================ */
.cases__grid--pair { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 820px) { .cases__grid--pair { grid-template-columns: 1fr; } }

.case-tile--data {
  background-image: none;
  background:
    radial-gradient(ellipse at 100% 0%, rgba(14, 165, 180, 0.22) 0%, transparent 62%),
    linear-gradient(158deg, #16232a 0%, #10171c 100%);
  border-color: rgba(63, 208, 216, 0.18);
  align-items: stretch;
  min-height: clamp(280px, 30vw, 340px);
}
.case-tile--data .case-tile__label {
  display: flex; flex-direction: column; align-items: flex-start;
  width: 100%; justify-content: flex-start;
}
.case-tile--data .case-tile__ind {
  order: -1; margin: 0 0 12px; color: #3FD0D8;
}
.case-tile--data .case-tile__name {
  font-family: var(--brb-font-display); font-size: clamp(22px, 2.2vw, 30px);
  line-height: 1.12; font-weight: 400; color: var(--brb-text-on-dark);
}
.case-tile__note {
  display: block; margin-top: 8px; font-size: 12.5px; line-height: 1.5;
  color: var(--brb-text-on-dark-muted); max-width: 34ch;
}

/* data visual — line chart (tile 1) */
.case-viz { width: 100%; margin-top: auto; padding-top: 20px; }
.case-viz svg { display: block; width: 100%; height: clamp(52px, 6vw, 68px); }
.case-viz__cap {
  display: block; margin-top: 8px; font-size: 10.5px; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--brb-text-on-dark-subtle);
}

/* data visual — ranking rows (tile 2) */
.case-viz--rows { display: grid; gap: 7px; }
.case-row {
  display: grid; grid-template-columns: 1fr auto auto; gap: 12px; align-items: center;
  background: rgba(250, 247, 242, 0.04); border: 1px solid rgba(250, 247, 242, 0.08);
  border-radius: 8px; padding: 8px 11px;
}
.case-row span { font-size: 12px; color: var(--brb-text-on-dark-muted); min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.case-row b { font-family: var(--brb-font-display); font-size: 14px; color: #3FD0D8; font-weight: 400; }
.case-row i { font-style: normal; font-size: 10.5px; color: var(--brb-text-on-dark-subtle); min-width: 34px; text-align: right; }

.case-tile__body {
  margin: 14px 0 0; font-size: 12.5px; line-height: 1.6;
  color: var(--brb-text-on-dark-muted);
}
.cases__foot {
  margin: clamp(20px, 2.4vw, 28px) 0 0; font-size: 11.5px; line-height: 1.6;
  color: var(--brb-text-on-dark-subtle); max-width: 76ch;
}

/* Paid Ads case tiles — same component as /seo/, mint accent to match
   this page's hero family instead of the SEO teal (2026-07-29). */
.cases--paid .case-tile--data {
  background:
    radial-gradient(ellipse at 100% 0%, rgba(138, 211, 192, 0.20) 0%, transparent 62%),
    linear-gradient(158deg, #17231f 0%, #101714 100%);
  border-color: rgba(138, 211, 192, 0.20);
}
.cases--paid .case-tile--data .case-tile__ind { color: var(--brb-mint); }
.cases--paid .case-row b { color: var(--brb-mint); }

/* spend-vs-revenue bars (Paid tile 1) */
.case-viz--bars { display: grid; gap: 12px; }
.case-bar { display: grid; grid-template-columns: 78px 1fr auto; gap: 11px; align-items: center; }
.case-bar__k { font-size: 11px; color: var(--brb-text-on-dark-muted); }
.case-bar__t {
  height: 9px; border-radius: 99px; background: rgba(250, 247, 242, 0.07); overflow: hidden;
}
.case-bar__t i { display: block; height: 100%; border-radius: 99px; background: rgba(250, 247, 242, 0.28); }
.case-bar--win .case-bar__t i { background: var(--brb-mint); }
.case-bar b {
  font-family: var(--brb-font-display); font-size: 14px; font-weight: 400;
  color: var(--brb-text-on-dark-muted); min-width: 46px; text-align: right;
}
.case-bar--win b { color: var(--brb-mint); }

/* ============================================================
   AI AUTOMATION (/ai-automation/) — .aia-* namespace
   Spec: docs/superpowers/specs/2026-07-31-ai-automation-page-design.md

   Rebuilt 2026-07-31 (round 2) against the operator's reference
   mockup. Round 1's dark indigo hero, .aia-trace run-log card and
   .aia-flow step row are GONE — the reference is cream + amber, so
   this page is Tier 2 cream-led and carries no service-coded dark
   hero at all. Two indigo tokens were retired with it.

   Accent policy on this page:
     cream surfaces  -> var(--brb-accent) #D97706, the house
                        convention for display italics on cream
                        (/about/, /contact/, /free-strategy-audit/)
     dark surfaces   -> the per-card --aia-tone values below, all
                        drawn from the site's existing service
                        palette, all >= 7:1 on --brb-anchor
   ============================================================ */

/* ---- 01 · Hero (cream) ---- */
.aia-hero {
  position: relative;
  background: var(--brb-surface);
  color: var(--brb-text);
  padding: clamp(56px, 7vw, 96px) 0 var(--brb-hero-to-next);
  overflow: hidden;
}
.aia-hero__inner {
  display: grid;
  /* Content column leads. At 1fr/1.05fr the headline's first line
     ("Put AI to work on") wrapped and orphaned "on" onto its own
     line at 1440 — the copy is longer than the reference's
     two-word-per-line headline, so it needs the wider track. */
  grid-template-columns: 1.15fr 1fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: center;
  /* Grid items default to min-width:auto and will not shrink below
     their widest unbreakable child. Same trap that blew out the
     shared .wd-hero content column at 375px. */
  min-width: 0;
}
.aia-hero__content { min-width: 0; }

.aia-hero__headline {
  margin-top: 18px;
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: clamp(36px, 4.4vw, 58px);
  line-height: 1.05;
  letter-spacing: -0.025em;
  text-wrap: balance;
}
.aia-hero__headline .line {
  display: block;
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 620ms var(--brb-ease), transform 620ms var(--brb-ease);
}
.aia-hero__headline .line.is-visible { opacity: 1; transform: none; }
.aia-hero__headline em { font-style: italic; color: var(--brb-accent); }

.aia-hero__body,
.aia-hero__ctas {
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}
.aia-hero__body.is-visible,
.aia-hero__ctas.is-visible { opacity: 1; transform: none; }

.aia-hero__body {
  margin-top: 22px;
  max-width: 52ch;
  font-size: 17px;
  line-height: 1.62;
  color: var(--brb-text-muted);
}
.aia-hero__ctas {
  margin-top: clamp(26px, 3vw, 36px);
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
}

.aia-machine__sun {
  stroke: rgba(217, 119, 6, 0.45);
  stroke-width: 1.4;
  fill: none;
}

/* ---- Signature: the line-art automation machine ----
   Strokes only, no fills, so it recolors from tokens and stays
   legible at any size. Deliberately carries NO numbers — it is a
   process diagram, not a mocked dashboard. */
.aia-hero__visual { min-width: 0; }
.aia-machine {
  width: 100%;
  height: auto;
  display: block;
  color: var(--brb-accent);
}
.aia-machine g,
.aia-machine > path {
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}
.aia-machine__ridge {
  stroke: rgba(26, 26, 26, 0.16);
  stroke-width: 1.2;
  fill: none;
}
.aia-machine__card,
.aia-machine__out {
  stroke: rgba(26, 26, 26, 0.42);
  stroke-width: 1.5;
  fill: none;
}
.aia-machine__hair { stroke: rgba(26, 26, 26, 0.2); }
.aia-machine__body {
  stroke: var(--brb-accent);
  stroke-width: 1.8;
  fill: none;
}
.aia-machine__gear {
  stroke: var(--brb-accent);
  stroke-width: 1.6;
  fill: none;
  transform-box: fill-box;
  transform-origin: center;
}
.aia-machine__gear--lg { animation: aia-spin 18s linear infinite; }
.aia-machine__gear--sm { animation: aia-spin 12s linear infinite reverse; }
.aia-machine__belt {
  stroke: rgba(26, 26, 26, 0.32);
  stroke-width: 1.5;
  fill: none;
}
.aia-machine__fill { fill: var(--brb-accent); stroke: none; }
.aia-machine__flow {
  stroke: var(--brb-accent);
  stroke-width: 1.6;
  fill: none;
  stroke-dasharray: 5 5;
  animation: aia-dash 1.4s linear infinite;
}
@keyframes aia-spin { to { transform: rotate(360deg); } }
@keyframes aia-dash { to { stroke-dashoffset: -20; } }

/* ---- Benefit strip (inside the hero section) ---- */
.aia-benefits {
  list-style: none;
  margin: clamp(48px, 6vw, 76px) 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: clamp(12px, 1.4vw, 18px);
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 700ms var(--brb-ease), transform 700ms var(--brb-ease);
}
.aia-benefits.is-visible { opacity: 1; transform: none; }
.aia-benefit {
  background: #FFFFFF;
  border: 1px solid var(--brb-border);
  border-radius: 12px;
  padding: clamp(16px, 1.7vw, 22px);
  text-align: center;
  box-shadow: 0 1px 2px rgba(26, 26, 26, 0.04);
}
.aia-benefit__ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px; height: 34px;
  color: var(--brb-accent);
}
.aia-benefit__ico svg { width: 20px; height: 20px; }
.aia-benefit__title {
  margin-top: 6px;
  font-family: var(--brb-font-body);
  font-size: 14.5px;
  font-weight: 600;
  letter-spacing: -0.005em;
}
.aia-benefit__desc {
  margin-top: 7px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--brb-text-muted);
}

/* ---- 02 · What it covers (cream) ---- */
.aia-covers { padding: var(--brb-section-pad) 0; background: var(--brb-surface); }
.aia-covers__inner {
  display: grid;
  grid-template-columns: 0.85fr 1.15fr;
  gap: clamp(36px, 5vw, 76px);
  align-items: start;
}
.aia-covers__head { position: sticky; top: calc(var(--brb-header-h, 110px) + 24px); min-width: 0; }
.aia-covers__title {
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: clamp(30px, 3.6vw, 46px);
  letter-spacing: -0.02em;
  line-height: 1.08;
  margin-top: 16px;
}
.aia-covers__title em { font-style: italic; color: var(--brb-accent); }
.aia-covers__intro {
  margin-top: 18px;
  font-size: 16.5px;
  line-height: 1.62;
  color: var(--brb-text-muted);
}
.aia-covers__grid { display: grid; gap: clamp(14px, 1.6vw, 20px); min-width: 0; }
.aia-card {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 18px;
  align-items: start;
  background: #FFFFFF;
  border: 1px solid var(--brb-border);
  border-radius: 14px;
  padding: clamp(20px, 2.2vw, 28px);
  box-shadow: 0 1px 2px rgba(26, 26, 26, 0.04);
  transition: border-color 0.3s var(--brb-ease), box-shadow 0.3s var(--brb-ease), transform 0.3s var(--brb-ease);
}
.aia-card:hover {
  border-color: rgba(217, 119, 6, 0.34);
  box-shadow: 0 10px 28px rgba(26, 26, 26, 0.09);
  transform: translateY(-2px);
}
.aia-card__ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px; height: 40px;
  border-radius: 10px;
  background: rgba(217, 119, 6, 0.10);
  color: var(--brb-accent);
  flex: none;
}
.aia-card__ico svg { width: 21px; height: 21px; }
.aia-card__title {
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: 21px;
  letter-spacing: -0.01em;
}
.aia-card__desc {
  margin-top: 8px;
  font-size: 15.5px;
  line-height: 1.6;
  color: var(--brb-text-muted);
}

/* ---- 03 · Popular automations (dark, centered) ---- */
.aia-popular {
  padding: var(--brb-section-pad) 0;
  background: var(--brb-anchor);
  color: var(--brb-text-on-dark);
}
.aia-popular__head { max-width: 760px; margin-inline: auto; text-align: center; }
.aia-popular__title {
  margin-top: 16px;
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: clamp(36px, 4.8vw, 60px);
  letter-spacing: -0.025em;
  line-height: 1.05;
}
.aia-popular__title em { font-style: italic; color: var(--brb-accent); }
.aia-popular__intro {
  margin-top: 18px;
  font-size: 16.5px;
  line-height: 1.62;
  color: var(--brb-text-on-dark-muted);
}
.aia-popular__grid {
  margin-top: clamp(40px, 5vw, 64px);
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: clamp(12px, 1.4vw, 18px);
}

/* Pattern 48 custom-property bridge: one rule per tone, several
   consumers. Every value is an EXISTING site service color —
   amber (accent), mint (Paid), blue (Web Design), teal (SEO),
   violet (Analytics) — per the operator's own instruction in the
   Web Design tab of the same doc. Measured on --brb-anchor:
   amber 8.49:1 · mint 10.08:1 · blue 7.59:1 · teal 9.30:1 ·
   violet 7.46:1. The amber here is LIGHTENED to #E9A94D because the
   raw --brb-accent measures only 5.46:1 on the anchor. */
.aia-pop--amber  { --aia-tone: #E9A94D; }
.aia-pop--mint   { --aia-tone: var(--brb-mint); }
.aia-pop--blue   { --aia-tone: #6FB3DC; }
.aia-pop--teal   { --aia-tone: #3FD0D8; }
.aia-pop--violet { --aia-tone: #B49AFF; }

.aia-pop {
  position: relative;
  border: 1px solid rgba(250, 247, 242, 0.10);
  border-radius: 14px;
  padding: clamp(18px, 1.9vw, 24px);
  background:
    radial-gradient(ellipse at 50% 0%, color-mix(in srgb, var(--aia-tone) 12%, transparent) 0%, transparent 70%),
    rgba(250, 247, 242, 0.02);
  transition: border-color 0.3s var(--brb-ease), transform 0.3s var(--brb-ease), box-shadow 0.3s var(--brb-ease);
}
.aia-pop:hover {
  border-color: color-mix(in srgb, var(--aia-tone) 46%, transparent);
  transform: translateY(-3px);
  box-shadow: 0 14px 34px rgba(0, 0, 0, 0.42);
}
.aia-pop__ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  border-radius: 9px;
  border: 1px solid color-mix(in srgb, var(--aia-tone) 34%, transparent);
  background: color-mix(in srgb, var(--aia-tone) 10%, transparent);
  color: var(--aia-tone);
}
.aia-pop__ico svg { width: 19px; height: 19px; }
.aia-pop__title {
  margin-top: 16px;
  font-family: var(--brb-font-body);
  font-size: 15px;
  font-weight: 600;
  color: var(--aia-tone);
  letter-spacing: -0.005em;
}
.aia-pop__desc {
  margin-top: 8px;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--brb-text-on-dark-muted);
}

/* ---- 04 · Proof (cream) ---- */
.aia-proof { padding: var(--brb-section-pad) 0; background: var(--brb-surface); }
.aia-proof__head { max-width: 720px; }
.aia-proof__title {
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: clamp(30px, 3.6vw, 46px);
  letter-spacing: -0.02em;
  line-height: 1.08;
  margin-top: 16px;
}
.aia-proof__title em { font-style: italic; color: var(--brb-accent); }
.aia-proof__intro {
  margin-top: 18px;
  font-size: 16.5px;
  line-height: 1.62;
  color: var(--brb-text-muted);
}
.aia-proof__grid {
  margin-top: clamp(40px, 5vw, 64px);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(18px, 2.2vw, 28px);
}
.aia-proof__item {
  padding-top: 22px;
  border-top: 2px solid var(--brb-accent);
  display: flex;
  flex-direction: column;
}
/* Small screenshot under each callout. Fixed 16:10 so the three sit as
   a level row regardless of what each capture contained. Pushed to the
   bottom of the flex column so the shots line up even when the copy
   above them runs to different lengths. */
.aia-proof__shot {
  /* margin-top:auto bottom-aligns the three shots against each other.
     The grid already makes the row equal-height, so without this the
     shots start at different Y depending on how long each card's copy
     runs, and the row reads ragged. */
  margin: 18px 0 0;
  margin-top: auto;
  border: 1px solid var(--brb-border);
  border-radius: 10px;
  overflow: hidden;
  background: #FFFFFF;
  box-shadow: 0 1px 2px rgba(26, 26, 26, 0.05);
  order: 99;
}
.aia-proof__shot img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 10;
  object-fit: cover;
}
.aia-proof__item-title {
  font-family: var(--brb-font-display);
  font-weight: 400;
  font-size: 21px;
  letter-spacing: -0.01em;
}
.aia-proof__item-desc {
  margin-top: 10px;
  font-size: 15.5px;
  line-height: 1.62;
  color: var(--brb-text-muted);
}
.aia-proof__link {
  display: inline-block;
  align-self: flex-start;
  margin-top: 14px;
  font-size: 14.5px;
  color: var(--brb-accent);
  text-decoration: none;
  border-bottom: 1px solid rgba(217, 119, 6, 0.3);
  padding-bottom: 1px;
  transition: border-color 0.25s var(--brb-ease);
}
.aia-proof__link:hover { border-bottom-color: var(--brb-accent); }

/* ---- Eyebrow variants used on this page ----
   A short rule before (and optionally after) the label, the way the
   reference sets its section kickers. */
.eyebrow--rule,
.eyebrow--rule-both { position: relative; display: inline-flex; align-items: center; gap: 10px; }
.eyebrow--rule::before,
.eyebrow--rule-both::before { content: ""; width: 26px; height: 1px; background: currentColor; opacity: 0.5; }
.eyebrow--rule-both::after { content: ""; width: 26px; height: 1px; background: currentColor; opacity: 0.5; }

/* ---- Responsive ---- */
@media (max-width: 1100px) {
  .aia-benefits { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .aia-popular__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .aia-hero__inner { grid-template-columns: 1fr; gap: 40px; }
  .aia-covers__inner { grid-template-columns: 1fr; }
  .aia-covers__head { position: static; }
  .aia-proof__grid { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .aia-benefits { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .aia-popular__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .aia-card { grid-template-columns: 1fr; gap: 14px; }
}
@media (max-width: 460px) {
  .aia-benefits { grid-template-columns: 1fr; }
  .aia-popular__grid { grid-template-columns: 1fr; }
}

/* ---- Reduced motion: stop the machine, show everything ---- */
@media (prefers-reduced-motion: reduce) {
  .aia-machine__gear--lg,
  .aia-machine__gear--sm,
  .aia-machine__flow { animation: none; }
  .aia-hero__headline .line,
  .aia-hero__body,
  .aia-hero__ctas,
  .aia-benefits { opacity: 1; transform: none; transition: none; }
}
