/*
Theme Name: Borden Family Law
Theme URI: https://rbordenlawfirm.com/
Author: Randall J. Borden, Attorney at Law
Author URI: https://rbordenlawfirm.com/
Description: A refined, editorial classic theme for Randall J. Borden, Attorney at Law — a family-law practice serving Fairfax, Loudoun, Prince William, Arlington, and Alexandria, Virginia. Light, classic, image-rich; white, hunter green, and black palette derived from the firm's logo.
Version: 2.0.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: rborden-law
*/


/* ==========================================================================
   Bundled stylesheet for the Borden Family Law theme.
   Concatenated in the same cascade order the source site loaded them:
     1. wp-base.css  (WordPress core block-layout mechanics + theme.json globals)
     2. theme.css    (component styles / former style.css body)
     3. nav.css      (navigation + social-link mechanics)
   ========================================================================== */

/* ============================ 1. wp-base.css ============================ */
/* ==========================================================================
   wp-base.css
   Reproduces the WordPress core block-layout mechanics and the theme.json
   global styles that WordPress normally injects at render time, so the
   ported block markup renders exactly as it did in the WordPress theme.
   ========================================================================== */

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

:root {
  --rb-content: 780px;   /* theme.json layout.contentSize */
  --rb-wide: 1280px;     /* theme.json layout.wideSize   */
  --rb-global-gap: 1.25rem; /* theme.json styles.spacing.blockGap */

  /* theme.json color palette */
  --wp-background: #ffffff;
  --wp-surface: #f6f4ee;
  --wp-surface-alt: #eef1ec;
  --wp-primary: #1f3a2e;
  --wp-primary-deep: #142a20;
  --wp-accent: #2d6048;
  --wp-ink: #14171a;
  --wp-ink-soft: #3a4047;
  --wp-muted: #6b7178;
  --wp-border: #dde2dd;
}

html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background-color: var(--wp-background);
  color: var(--wp-ink);
  font-family: "DM Sans", "Helvetica Neue", Arial, sans-serif;
  font-size: 1.0625rem;
  line-height: 1.65;
  font-weight: 400;
  letter-spacing: 0.005em;
}

img { max-width: 100%; height: auto; }
a { color: var(--wp-primary); }
a:hover { color: var(--wp-ink); }

/* --- Global typography (theme.json styles.elements) --- */
h1, h2, h3, h4, h5, h6,
.wp-block-heading, .wp-block-post-title {
  font-family: "Playfair Display", "Cormorant Garamond", Georgia, serif;
  font-weight: 400;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--wp-ink);
}
h1, .wp-block-post-title { font-size: clamp(2.75rem, 6vw, 4rem); font-style: normal; }
h2 { font-size: clamp(2rem, 4vw, 2.75rem); font-style: normal; }
h3 { font-size: 1.5rem; font-weight: 500; }
h4 { font-size: 1.25rem; font-weight: 500; }

/* ==========================================================================
   Layout: flow / constrained / flex
   ========================================================================== */

/* vertical rhythm between siblings (WordPress blockGap) */
.is-layout-flow > *,
.is-layout-constrained > * {
  margin-block: 0;
}
.is-layout-flow > * + *,
.is-layout-constrained > * + * {
  margin-block-start: var(--rb-gap, var(--rb-global-gap));
}

/* constrained: children capped at content width and centered */
.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull):not(.alignwide)) {
  max-width: var(--rb-content, 780px);
  margin-left: auto;
  margin-right: auto;
}
.is-layout-constrained > .alignwide {
  max-width: var(--rb-wide, 1280px);
  margin-left: auto;
  margin-right: auto;
}
.is-layout-constrained > .alignfull {
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}

/* flex */
.is-layout-flex {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5em;
}
.is-layout-flex > * { margin: 0; }

/* alignment helpers */
.alignfull { width: 100%; max-width: none; }
.alignwide { max-width: var(--rb-wide, 1280px); }
.aligncenter { margin-left: auto; margin-right: auto; }

/* ==========================================================================
   Columns
   ========================================================================== */
.wp-block-columns {
  display: flex;
  flex-wrap: wrap;
  align-items: normal;
  gap: 2em;
  margin-bottom: 0;
}
.wp-block-columns.are-vertically-aligned-center { align-items: center; }
.wp-block-columns.are-vertically-aligned-top { align-items: flex-start; }
.wp-block-columns.are-vertically-aligned-bottom { align-items: flex-end; }

.wp-block-column {
  flex-basis: 0;
  flex-grow: 1;
  min-width: 0;
  word-break: break-word;
  overflow-wrap: break-word;
}
.wp-block-column[style*="flex-basis"] { flex-grow: 0; }
.wp-block-column.is-vertically-aligned-center { align-self: center; }
.wp-block-column.is-vertically-aligned-top { align-self: flex-start; }
.wp-block-column.is-vertically-aligned-bottom { align-self: flex-end; }
.wp-block-column.is-vertically-aligned-stretch { align-self: stretch; }

/* WordPress stacks columns on small screens */
@media (max-width: 781px) {
  .wp-block-columns:not(.is-not-stacked-on-mobile) {
    flex-direction: column;
  }
  .wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column {
    flex-basis: 100% !important;
    flex-grow: 1;
  }
}

/* On desktop WordPress keeps columns on a single row (they shrink to fit rather
   than wrapping). Without this, a two-column row whose flex-basis values sum to
   ~100% plus a column-gap wraps the second column underneath the first. This is
   WordPress core's own rule and was missing from the ported wp-base.css. */
@media (min-width: 782px) {
  .wp-block-columns {
    flex-wrap: nowrap !important;
  }
}

/* ==========================================================================
   Buttons
   ========================================================================== */
.wp-block-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5em;
  margin: 0;
}
.wp-block-button { margin: 0; }
.wp-block-button__link,
.wp-element-button {
  display: inline-block;
  text-decoration: none;
  cursor: pointer;
  border: 1px solid transparent;
  /* theme.json button element defaults */
  background-color: var(--wp-primary);
  color: var(--wp-background);
  font-family: "DM Sans", sans-serif;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  border-radius: 0;
  padding: 1rem 1.75rem;
  line-height: 1.2;
}

/* ==========================================================================
   Images / figures
   ========================================================================== */
figure { margin: 0; }
.wp-block-image { margin: 0 0 1rem 0; }
.wp-block-image img { display: block; height: auto; max-width: 100%; vertical-align: bottom; }

/* ==========================================================================
   Spacer / separator / lists
   ========================================================================== */
.wp-block-spacer { display: block; }
.wp-block-separator {
  border: none;
  border-bottom: 1px solid currentColor;
  height: 0;
  margin: 2rem auto;
}
.wp-block-separator:not(.is-style-wide):not(.is-style-dots):not(.alignwide):not(.alignfull) {
  width: 100px;
}
.wp-block-separator.has-background { border-bottom: none; height: 1px; }
ul.wp-block-list, ol.wp-block-list { margin: 0; padding-left: 1.5rem; }

/* ==========================================================================
   Text alignment helpers
   ========================================================================== */
.has-text-align-center { text-align: center; }
.has-text-align-left { text-align: left; }
.has-text-align-right { text-align: right; }

/* ==========================================================================
   Color presets (theme.json palette)
   ========================================================================== */
.has-background-color { color: var(--wp-background); }
.has-surface-color { color: var(--wp-surface); }
.has-surface-alt-color { color: var(--wp-surface-alt); }
.has-primary-color { color: var(--wp-primary); }
.has-primary-deep-color { color: var(--wp-primary-deep); }
.has-accent-color { color: var(--wp-accent); }
.has-ink-color { color: var(--wp-ink); }
.has-ink-soft-color { color: var(--wp-ink-soft); }
.has-muted-color { color: var(--wp-muted); }
.has-border-color { color: var(--wp-border); }

.has-background-background-color { background-color: var(--wp-background); }
.has-surface-background-color { background-color: var(--wp-surface); }
.has-surface-alt-background-color { background-color: var(--wp-surface-alt); }
.has-primary-background-color { background-color: var(--wp-primary); }
.has-primary-deep-background-color { background-color: var(--wp-primary-deep); }
.has-accent-background-color { background-color: var(--wp-accent); }
.has-ink-background-color { background-color: var(--wp-ink); }
.has-ink-soft-background-color { background-color: var(--wp-ink-soft); }
.has-muted-background-color { background-color: var(--wp-muted); }
.has-border-background-color { background-color: var(--wp-border); }

/* ==========================================================================
   Font-size presets (theme.json)
   ========================================================================== */
.has-small-font-size { font-size: 0.875rem; }
.has-medium-font-size { font-size: 1rem; }
.has-large-font-size { font-size: 1.25rem; }
.has-x-large-font-size { font-size: 1.75rem; }
.has-xx-large-font-size { font-size: 2.25rem; }
.has-display-font-size { font-size: clamp(2.5rem, 5vw, 3.5rem); }


/* ============================ 2. theme.css ============================= */

:root {
  color-scheme: light;
  --rb-white: #ffffff;
  --rb-cream: #f6f4ee;
  --rb-sage: #eef1ec;
  --rb-mist: #f0f4f0;
  --rb-hunter: #1f3a2e;
  --rb-forest: #142a20;
  --rb-pine: #2d6048;
  --rb-leaf: #4d8367;
  --rb-ink: #14171a;
  --rb-charcoal: #3a4047;
  --rb-stone: #6b7178;
  --rb-border: #dde2dd;
  --rb-soft-border: #ebeee9;
}

html, body {
  background-color: var(--rb-white);
  color: var(--rb-ink);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

/* Keep display serif letterforms conventional — disable discretionary ligatures
   and stylistic-set swashes so headings read cleanly across the site. */
:where(h1, h2, h3, h4, h5, h6,
       .wp-block-post-title,
       .rb-section-title,
       .rb-monogram-letters,
       .rb-stat-num,
       .rb-signature,
       .rb-google-badge-score,
       em) {
  font-feature-settings: "dlig" 0, "swsh" 0, "ss01" 0, "ss02" 0, "ss03" 0;
}

/* Footer margin reset */
.wp-site-blocks > footer { margin-block-start: 0; }

/* === Top utility bar === */
.rb-topbar {
  background-color: var(--rb-hunter);
  border-bottom: 1px solid var(--rb-forest);
  font-size: 0.8125rem;
  color: rgba(255, 255, 255, 0.85);
  letter-spacing: 0.02em;
}
.rb-topbar a { color: rgba(255, 255, 255, 0.85); text-decoration: none; transition: color 0.2s ease; }
.rb-topbar a:hover { color: var(--rb-white); }
.rb-topbar strong { color: var(--rb-white) !important; }

.rb-topbar .rb-topbar-item {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
.rb-topbar .rb-topbar-item::before {
  content: "";
  display: inline-block;
  width: 14px;
  height: 14px;
  background-color: rgba(255, 255, 255, 0.85);
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
}
.rb-topbar .rb-topbar-phone::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M6.62 10.79a15.05 15.05 0 006.59 6.59l2.2-2.2a1 1 0 011.05-.24 11.36 11.36 0 003.57.57 1 1 0 011 1V20a1 1 0 01-1 1A17 17 0 013 4a1 1 0 011-1h3.5a1 1 0 011 1 11.36 11.36 0 00.57 3.57 1 1 0 01-.24 1.05l-2.21 2.17z'/></svg>");
          mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M6.62 10.79a15.05 15.05 0 006.59 6.59l2.2-2.2a1 1 0 011.05-.24 11.36 11.36 0 003.57.57 1 1 0 011 1V20a1 1 0 01-1 1A17 17 0 013 4a1 1 0 011-1h3.5a1 1 0 011 1 11.36 11.36 0 00.57 3.57 1 1 0 01-.24 1.05l-2.21 2.17z'/></svg>");
}
.rb-topbar .rb-topbar-mail::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M20 4H4a2 2 0 00-2 2v12a2 2 0 002 2h16a2 2 0 002-2V6a2 2 0 00-2-2zm0 4-8 5-8-5V6l8 5 8-5v2z'/></svg>");
          mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M20 4H4a2 2 0 00-2 2v12a2 2 0 002 2h16a2 2 0 002-2V6a2 2 0 00-2-2zm0 4-8 5-8-5V6l8 5 8-5v2z'/></svg>");
}
.rb-topbar .rb-topbar-clock::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 2a10 10 0 100 20 10 10 0 000-20zm1 11h-5v-2h3V7h2v6z'/></svg>");
          mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 2a10 10 0 100 20 10 10 0 000-20zm1 11h-5v-2h3V7h2v6z'/></svg>");
}
.rb-topbar .rb-topbar-cta a {
  color: var(--rb-white) !important;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-decoration: none;
  padding: 0.35rem 0.75rem;
  border: 1px solid rgba(255, 255, 255, 0.4);
  transition: background 0.2s ease, border-color 0.2s ease;
}
.rb-topbar .rb-topbar-cta a:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: var(--rb-white);
}

/* === Header / logo lockup === */
.rb-header {
  position: relative;
  background-color: var(--rb-white);
  border-bottom: 1px solid var(--rb-border);
}
.rb-header::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 3px;
  background: linear-gradient(90deg, transparent, var(--rb-hunter) 30%, var(--rb-hunter) 70%, transparent);
  opacity: 0.4;
}

.rb-logo-mark {
  width: 56px;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  padding: 0 !important;
  background: transparent !important;
  border: none !important;
}
.rb-logo-mark .wp-block-image,
.rb-logo-mark figure {
  margin: 0 !important;
  width: 56px;
  height: 56px;
  display: block;
}
.rb-logo-mark img {
  width: 56px !important;
  height: 56px !important;
  display: block;
  object-fit: contain;
}
.rb-logo-mark a {
  display: block;
  width: 56px;
  height: 56px;
}
.rb-logo-text {
  display: flex;
  flex-direction: column;
  line-height: 1;
}
/* Stretched link: the entire logo lockup (mark + wordmark + tagline) is one
   click target back to the homepage. An invisible absolutely-positioned
   pseudo-element on the name's anchor covers the whole lockup box. */
.rb-logo-lockup {
  position: relative;
  cursor: pointer;
}
.rb-logo-lockup .rb-logo-name a::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
}
.rb-logo-lockup:hover .rb-logo-name a {
  color: var(--rb-hunter) !important;
}
.rb-logo-name {
  font-family: "Cormorant Garamond", Georgia, "Times New Roman", serif;
  font-size: 1.55rem;
  font-weight: 600;
  color: var(--rb-ink);
  letter-spacing: 0.01em;
  line-height: 1.2;
}
.rb-logo-name a { color: var(--rb-ink) !important; text-decoration: none !important; }
.rb-logo-tag {
  font-family: "DM Sans", sans-serif;
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  color: var(--rb-hunter);
  margin-top: 0.5rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.rb-logo-tag::before,
.rb-logo-tag::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--rb-hunter);
  opacity: 0.45;
}

/* Nav style */
.rb-nav .wp-block-navigation-item__content {
  color: var(--rb-ink) !important;
  transition: color 0.2s ease;
  font-size: 0.78rem !important;
  letter-spacing: 0.14em !important;
  white-space: nowrap;
}
.rb-nav .wp-block-navigation-item__content:hover,
.rb-nav .current-menu-item .wp-block-navigation-item__content {
  color: var(--rb-hunter) !important;
}
.rb-nav .wp-block-navigation__submenu-container {
  background-color: var(--rb-white) !important;
  border: 1px solid var(--rb-border) !important;
  box-shadow: 0 12px 36px rgba(20, 42, 32, 0.1);
  padding: 0.5rem 0;
  min-width: 240px;
}
.rb-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  white-space: normal;
  letter-spacing: 0.08em !important;
  font-size: 0.8125rem !important;
}
.rb-nav.wp-block-navigation { --navigation-layout-gap: 1.5rem !important; }
.rb-nav .wp-block-navigation__container { gap: 1.5rem !important; }

/* === Hero (full-bleed attorney photo background) === */
.rb-hero {
  position: relative;
  overflow: hidden;
  background: var(--rb-white);
  min-height: 620px;
  display: flex;
  align-items: center;
}
/* The photo, absolutely positioned to cover the whole hero */
.rb-hero-bg {
  position: absolute !important;
  inset: 0;
  margin: 0 !important;
  width: 100% !important;
  max-width: none !important;
  height: 100%;
  z-index: 0;
}
.rb-hero-bg img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  object-position: right center;
  display: block;
}
/* White scrim over the left so the headline text stays crisp */
.rb-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(95deg,
    #ffffff 0%,
    #ffffff 32%,
    rgba(255, 255, 255, 0.95) 43%,
    rgba(255, 255, 255, 0.6) 54%,
    rgba(255, 255, 255, 0) 66%);
  pointer-events: none;
}
.rb-hero-row {
  position: relative;
  z-index: 2;
  width: 100%;
}
.rb-hero-eyebrow {
  font-family: "DM Sans", sans-serif;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--rb-hunter);
  display: inline-flex;
  align-items: center;
  gap: 0.85rem;
}
.rb-hero-eyebrow::before {
  content: "";
  width: 40px;
  height: 1px;
  background-color: var(--rb-hunter);
  display: inline-block;
}

/* Mobile: photo becomes a banner above the text instead of a background */
@media (max-width: 781px) {
  .rb-hero {
    min-height: 0;
    display: block;
    background: var(--rb-cream);
  }
  .rb-hero-bg {
    position: relative !important;
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 16 / 10;
    margin: 0 0 2rem 0 !important;
  }
  .rb-hero::before { display: none; }
}

/* === Section helpers === */
.rb-eyebrow {
  font-family: "DM Sans", sans-serif;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  color: var(--rb-hunter);
}
.rb-eyebrow-center {
  display: inline-flex;
  align-items: center;
  gap: 1rem;
  justify-content: center;
}
.rb-eyebrow-center::before,
.rb-eyebrow-center::after {
  content: "";
  width: 48px;
  height: 1px;
  background-color: var(--rb-hunter);
  opacity: 0.55;
}
.rb-section-title { color: var(--rb-ink); }
.rb-section-title em { color: var(--rb-hunter); font-style: italic; }

/* === Stats inline === */
.rb-stat-num {
  font-family: "Playfair Display", Georgia, serif !important;
  font-style: italic !important;
  font-size: clamp(2.25rem, 4vw, 3rem) !important;
  color: var(--rb-hunter) !important;
  line-height: 1 !important;
  margin: 0 !important;
}
.rb-stat-label {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.6875rem !important;
  letter-spacing: 0.3em !important;
  text-transform: uppercase;
  color: var(--rb-stone) !important;
  margin: 0 !important;
}

/* === Practice area cards === */
.rb-practice-card {
  position: relative;
  padding: 2.25rem 1.75rem !important;
  background-color: var(--rb-white) !important;
  border: 1px solid var(--rb-border) !important;
  transition: transform 0.35s ease, border-color 0.35s ease, box-shadow 0.35s ease;
  overflow: hidden;
}
.rb-practice-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 0;
  height: 3px;
  background-color: var(--rb-hunter);
  transition: width 0.4s ease;
}
.rb-practice-card:hover {
  transform: translateY(-6px);
  border-color: var(--rb-hunter) !important;
  box-shadow: 0 20px 50px rgba(20, 42, 32, 0.1);
}
.rb-practice-card:hover::before { width: 100%; }

.rb-practice-icon {
  width: 48px;
  height: 48px;
  margin-bottom: 1.5rem !important;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--rb-sage);
  color: var(--rb-hunter);
}
.rb-practice-icon img {
  width: 28px;
  height: 28px;
  display: block;
}

.rb-practice-title {
  font-family: "Playfair Display", Georgia, serif !important;
  font-style: normal !important;
  font-size: 1.5rem !important;
  margin: 0 0 0.85rem 0 !important;
  color: var(--rb-ink) !important;
}
.rb-practice-title a { color: var(--rb-ink) !important; text-decoration: none !important; }
.rb-practice-desc {
  color: var(--rb-stone) !important;
  font-size: 0.9375rem !important;
  line-height: 1.6 !important;
  margin-bottom: 1.5rem !important;
}
.rb-practice-link {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.75rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.22em !important;
  text-transform: uppercase !important;
  color: var(--rb-hunter) !important;
  text-decoration: none !important;
  display: inline-flex !important;
  align-items: center;
  gap: 0.5rem;
}
.rb-practice-link a { color: var(--rb-hunter) !important; text-decoration: none !important; }
.rb-practice-link::after {
  content: "→";
  transition: transform 0.25s ease;
}
.rb-practice-card:hover .rb-practice-link::after { transform: translateX(4px); }

/* === Service-area cards === */
.rb-area-card {
  background-color: var(--rb-white) !important;
  border: 1px solid var(--rb-border) !important;
  padding: 2rem 1.75rem !important;
  height: 100%;
  transition: transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}
.rb-area-card:hover {
  transform: translateY(-4px);
  border-color: var(--rb-hunter) !important;
  box-shadow: 0 16px 40px rgba(20, 42, 32, 0.08);
}
.rb-area-card--accent {
  background-color: var(--rb-hunter) !important;
  border-color: var(--rb-hunter) !important;
  color: var(--rb-cream) !important;
}
.rb-area-card--accent .rb-area-title,
.rb-area-card--accent .rb-area-desc,
.rb-area-card--accent .rb-area-link,
.rb-area-card--accent a {
  color: var(--rb-cream) !important;
}
.rb-area-title {
  font-family: "Playfair Display", Georgia, serif !important;
  font-style: normal !important;
  font-size: 1.375rem !important;
  color: var(--rb-ink) !important;
  margin: 0 0 0.85rem 0 !important;
  line-height: 1.2 !important;
}
.rb-area-title a { color: var(--rb-ink) !important; text-decoration: none !important; }
.rb-area-desc {
  color: var(--rb-stone) !important;
  font-size: 0.9375rem !important;
  line-height: 1.55 !important;
  margin: 0 0 1.5rem 0 !important;
}
.rb-area-link {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.75rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.22em !important;
  text-transform: uppercase;
  color: var(--rb-hunter) !important;
  margin: 0 !important;
}
.rb-area-link a {
  color: var(--rb-hunter) !important;
  text-decoration: none !important;
}
.rb-area-link a::after {
  content: " →";
  transition: margin-left 0.25s ease;
}
.rb-area-card:hover .rb-area-link a::after { margin-left: 4px; }

/* === Process steps === */
.rb-process-step {
  background-color: transparent !important;
  border-top: 2px solid var(--rb-hunter) !important;
  padding: 1.75rem 1.25rem 0.5rem 0 !important;
  height: 100%;
  position: relative;
}
.rb-process-icon {
  width: 36px;
  height: 36px;
  margin: 0 0 1rem 0 !important;
  color: var(--rb-hunter);
  display: flex;
  align-items: center;
  justify-content: center;
}
.rb-process-icon img { width: 32px; height: 32px; display: block; }
.rb-process-num {
  font-family: "Playfair Display", Georgia, serif !important;
  font-style: italic !important;
  font-size: 1.25rem !important;
  color: var(--rb-hunter) !important;
  margin: 0 0 0.6rem 0 !important;
  line-height: 1 !important;
  letter-spacing: 0.1em;
}
.rb-process-title {
  font-family: "DM Sans", sans-serif !important;
  font-style: normal !important;
  font-size: 1.0625rem !important;
  font-weight: 500 !important;
  color: var(--rb-ink) !important;
  margin: 0 0 0.65rem 0 !important;
  letter-spacing: 0.005em !important;
}
.rb-process-desc {
  color: var(--rb-stone) !important;
  font-size: 0.875rem !important;
  line-height: 1.55 !important;
  margin: 0 !important;
}

/* === About / portrait block === */
.rb-portrait {
  position: relative;
  aspect-ratio: 4 / 5;
  background: var(--rb-ink);
  border: 1px solid var(--rb-border);
  overflow: hidden;
}
.rb-portrait .wp-block-image,
.rb-portrait figure {
  margin: 0 !important;
  width: 100%;
  height: 100%;
}
.rb-portrait img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  object-position: center top;
  display: block;
}

/* === Quote / signature === */
.rb-signature {
  font-family: "Cormorant Garamond", "Playfair Display", Georgia, serif;
  font-style: normal;
  font-size: 1.875rem !important;
  color: var(--rb-ink) !important;
  line-height: 1.25 !important;
  margin: 1rem 0 0.25rem 0 !important;
}
.rb-signature-role {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.75rem !important;
  letter-spacing: 0.3em !important;
  text-transform: uppercase;
  color: var(--rb-hunter) !important;
  font-weight: 600 !important;
  margin: 0 !important;
}

/* === TL;DR callout for blog posts === */
.rb-tldr {
  position: relative;
}
.rb-tldr::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 4px;
  background-color: var(--rb-hunter);
}

/* === Post meta + blog grid === */
.rb-post-meta {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.8125rem !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase;
  color: var(--rb-hunter) !important;
  font-weight: 600 !important;
}

.rb-blog-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  list-style: none !important;
  padding-left: 0 !important;
  margin: 0 !important;
}
.rb-blog-grid > li {
  list-style: none !important;
  margin: 0 !important;
}
@media (max-width: 900px) {
  .rb-blog-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
  .rb-blog-grid { grid-template-columns: 1fr; }
}

/* Make sure the block content within a post uses a comfortable reading width */
.wp-block-post-content > p,
.wp-block-post-content > h2,
.wp-block-post-content > h3,
.wp-block-post-content > ul,
.wp-block-post-content > ol {
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}
.wp-block-post-content > h2 {
  margin-top: 2.5rem !important;
  margin-bottom: 1rem !important;
  font-size: clamp(1.6rem, 2.5vw, 2rem) !important;
  font-style: normal !important;
}
.wp-block-post-content > h3 {
  margin-top: 1.75rem !important;
  margin-bottom: 0.75rem !important;
  font-size: 1.25rem !important;
  font-weight: 500 !important;
}
.wp-block-post-content > p {
  font-size: 1.0625rem !important;
  line-height: 1.7 !important;
}

/* === Google Reviews banner === */
.rb-google-reviews {
  background-color: var(--rb-cream);
}
.rb-google-badge {
  display: inline-flex;
  align-items: center;
  gap: 1.25rem;
  background: var(--rb-white);
  border: 1px solid var(--rb-border);
  border-radius: 999px;
  padding: 0.85rem 1.85rem;
  box-shadow: 0 6px 24px rgba(20, 42, 32, 0.06);
}
.rb-google-badge-G {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
}
.rb-google-badge-G img {
  width: 100% !important;
  height: 100% !important;
  display: block !important;
}
.rb-google-badge-meta {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.15rem;
}
.rb-google-badge-label {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.75rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase;
  color: var(--rb-stone) !important;
  margin: 0 !important;
  line-height: 1 !important;
}
.rb-google-badge-rating {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  margin: 0 !important;
}
.rb-google-badge-score {
  font-family: "Playfair Display", Georgia, serif !important;
  font-style: italic !important;
  font-size: 1.5rem !important;
  font-weight: 500 !important;
  color: var(--rb-ink) !important;
  line-height: 1 !important;
}
.rb-google-stars {
  display: inline-flex;
  gap: 2px;
  align-items: center;
}
.rb-google-stars span {
  display: inline-block;
  width: 16px;
  height: 16px;
  background-color: #fbbc05;
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z'/></svg>");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
}
/* Partial star for the honest 4.6 average (≈60% of the 5th star filled). */
.rb-google-stars span.is-partial {
  background: linear-gradient(90deg, #fbbc05 0 60%, #dadce0 60% 100%);
}
.rb-google-card {
  position: relative;
  padding: 1.25rem 1.25rem 1rem 1.25rem !important;
  background-color: var(--rb-white) !important;
  border: 1px solid var(--rb-border) !important;
  height: 100%;
  display: flex;
  flex-direction: column;
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}
.rb-google-card:hover {
  transform: translateY(-4px);
  border-color: var(--rb-hunter) !important;
  box-shadow: 0 16px 40px rgba(20, 42, 32, 0.08);
}
.rb-google-card-stars {
  display: inline-flex;
  gap: 3px;
  margin: 0 0 0.75rem 0 !important;
}
.rb-google-card-stars span {
  width: 18px;
  height: 18px;
  background-color: #fbbc05;
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z'/></svg>");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
}
.rb-google-card-text {
  font-family: "Playfair Display", Georgia, serif !important;
  font-style: italic !important;
  font-size: 0.9375rem !important;
  color: var(--rb-ink) !important;
  line-height: 1.5 !important;
  margin: 0 0 0.85rem 0 !important;
  flex-grow: 1;
}
.rb-google-card-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.85rem;
  border-top: 1px solid var(--rb-soft-border);
  padding-top: 0.7rem;
  margin-top: auto;
}
.rb-google-card-author {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
}
.rb-google-card-name {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.875rem !important;
  font-weight: 600 !important;
  color: var(--rb-ink) !important;
  margin: 0 !important;
  line-height: 1.2 !important;
}
.rb-google-card-date {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.75rem !important;
  color: var(--rb-stone) !important;
  margin: 0 !important;
  letter-spacing: 0.02em;
}
.rb-google-card-G {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
  opacity: 0.85;
}
.rb-google-card-G img {
  width: 100% !important;
  height: 100% !important;
  display: block !important;
}
.rb-google-cta a {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  font-family: "DM Sans", sans-serif;
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--rb-hunter) !important;
  text-decoration: none !important;
  border-bottom: 1px solid var(--rb-hunter);
  padding-bottom: 0.35rem;
  transition: color 0.2s ease, border-color 0.2s ease;
}
.rb-google-cta a:hover {
  color: var(--rb-ink) !important;
  border-bottom-color: var(--rb-ink);
}

/* === Testimonial cards === */
.rb-testimonial {
  position: relative;
  padding: 3.5rem 1.75rem 1.75rem 1.75rem !important;
  background-color: var(--rb-cream) !important;
  border-top: 2px solid var(--rb-hunter) !important;
}
.rb-testimonial::before {
  content: "\201C";
  position: absolute;
  top: 0.25rem;
  left: 1.5rem;
  font-family: "Playfair Display", Georgia, serif;
  font-style: italic;
  font-size: 4rem;
  color: var(--rb-hunter);
  line-height: 1;
  opacity: 0.85;
}
.rb-testimonial-text {
  font-family: "Playfair Display", Georgia, serif !important;
  font-style: italic !important;
  font-size: 1.0625rem !important;
  color: var(--rb-ink) !important;
  line-height: 1.55 !important;
  margin: 0 0 1.25rem 0 !important;
}
.rb-testimonial-name {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.8125rem !important;
  font-weight: 600 !important;
  color: var(--rb-hunter) !important;
  margin: 0 !important;
  letter-spacing: 0.04em;
}

/* === Blog cards === */
.rb-blog-card {
  border: 1px solid var(--rb-border);
  background: var(--rb-white);
  padding: 2rem !important;
  transition: transform 0.35s ease, border-color 0.35s ease, box-shadow 0.35s ease;
}
.rb-blog-card:hover {
  transform: translateY(-4px);
  border-color: var(--rb-hunter);
  box-shadow: 0 16px 40px rgba(20, 42, 32, 0.08);
}
.rb-blog-date {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.75rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.22em !important;
  text-transform: uppercase;
  color: var(--rb-hunter) !important;
  margin: 0 0 1rem 0 !important;
}
.rb-blog-title {
  font-family: "Playfair Display", Georgia, serif !important;
  font-style: normal !important;
  font-size: 1.375rem !important;
  color: var(--rb-ink) !important;
  line-height: 1.25 !important;
  margin: 0 0 1rem 0 !important;
}
.rb-blog-excerpt {
  color: var(--rb-stone) !important;
  font-size: 0.9375rem !important;
  margin: 0 0 1.5rem 0 !important;
}

/* === FAQ === */
.rb-faq-item {
  border-bottom: 1px solid var(--rb-border) !important;
  padding: 1.5rem 0 !important;
}
.rb-faq-q {
  font-family: "Playfair Display", Georgia, serif !important;
  font-style: normal !important;
  font-size: 1.1875rem !important;
  color: var(--rb-ink) !important;
  margin: 0 0 0.75rem 0 !important;
  position: relative;
  padding-left: 2rem;
}
.rb-faq-q::before {
  content: "Q.";
  position: absolute;
  left: 0;
  top: 0.2rem;
  font-family: "Playfair Display", Georgia, serif;
  font-style: italic;
  font-size: 0.875rem;
  letter-spacing: 0.1em;
  color: var(--rb-hunter);
}
.rb-faq-a {
  color: var(--rb-stone) !important;
  font-size: 0.9375rem !important;
  line-height: 1.65 !important;
  margin: 0 !important;
  padding-left: 2rem;
  position: relative;
}
.rb-faq-a::before {
  content: "A.";
  position: absolute;
  left: 0;
  top: 0.05rem;
  font-family: "Playfair Display", Georgia, serif;
  font-style: italic;
  font-size: 0.875rem;
  letter-spacing: 0.1em;
  color: var(--rb-hunter);
  opacity: 0.7;
}

/* === Contact band === */
.rb-contact-band {
  position: relative;
  overflow: hidden;
  background: var(--rb-hunter);
  color: var(--rb-cream);
}
.rb-contact-band .rb-eyebrow { color: rgba(246, 244, 238, 0.8) !important; }
.rb-contact-band .rb-section-title { color: var(--rb-cream) !important; }
.rb-contact-band .rb-section-title em { color: var(--rb-cream) !important; opacity: 0.9; }
.rb-contact-band p { color: rgba(246, 244, 238, 0.9) !important; }
.rb-contact-band a { color: var(--rb-cream) !important; }

.rb-contact-band .wp-block-button .wp-block-button__link {
  background-color: var(--rb-cream) !important;
  color: var(--rb-hunter) !important;
  border-color: var(--rb-cream) !important;
}
.rb-contact-band .wp-block-button .wp-block-button__link:hover {
  background-color: var(--rb-white) !important;
  border-color: var(--rb-white) !important;
}
.rb-contact-band .wp-block-button.is-style-outline > .wp-block-button__link {
  background-color: transparent !important;
  color: var(--rb-cream) !important;
  border-color: var(--rb-cream) !important;
}
.rb-contact-band .wp-block-button.is-style-outline > .wp-block-button__link:hover {
  background-color: var(--rb-cream) !important;
  color: var(--rb-hunter) !important;
}

.rb-contact-card {
  padding: 1.5rem !important;
  background-color: rgba(255, 255, 255, 0.05) !important;
  border: 1px solid rgba(246, 244, 238, 0.2) !important;
  backdrop-filter: blur(4px);
}
.rb-contact-label {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.6875rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.3em !important;
  text-transform: uppercase;
  color: rgba(246, 244, 238, 0.7) !important;
  margin: 0 0 0.5rem 0 !important;
}
.rb-contact-value {
  font-family: "Playfair Display", Georgia, serif !important;
  font-style: normal !important;
  font-size: 1.1875rem !important;
  color: var(--rb-cream) !important;
  margin: 0 !important;
  line-height: 1.3 !important;
}

/* === Footer === */
.rb-footer {
  background-color: var(--rb-cream);
  border-top: 1px solid var(--rb-border);
  color: var(--rb-stone);
}
.rb-footer a { color: var(--rb-charcoal); text-decoration: none; transition: color 0.2s ease; }
.rb-footer a:hover { color: var(--rb-hunter); }
.rb-footer strong { color: var(--rb-ink); }
.rb-footer-title {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.75rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.3em !important;
  text-transform: uppercase;
  color: var(--rb-hunter) !important;
  margin: 0 0 1.25rem 0 !important;
}
.rb-footer-list,
ul.rb-footer-list {
  list-style: none !important;
  padding-left: 0 !important;
}
.rb-footer-list li,
ul.rb-footer-list li { list-style: none !important; }
.rb-footer-list li::marker { content: ""; }
.rb-footer-copy {
  font-size: 0.8125rem !important;
  color: var(--rb-stone) !important;
  margin: 0 !important;
}
.rb-footer-disclaimer {
  font-size: 0.75rem !important;
  color: var(--rb-stone) !important;
  margin: 1rem 0 0 0 !important;
  opacity: 0.85;
  font-style: italic;
  line-height: 1.5 !important;
}

/* === Page title band (inner pages) === */
.rb-page-title-band {
  background:
    radial-gradient(55% 100% at 80% 20%, rgba(31, 58, 46, 0.07) 0%, transparent 65%),
    var(--rb-cream);
  border-bottom: 1px solid var(--rb-border);
  padding: 5rem 1.5rem 4rem !important;
  position: relative;
}
.rb-page-title-band::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--rb-hunter) 30%, var(--rb-hunter) 70%, transparent);
  opacity: 0.4;
}
.rb-page-title-band .wp-block-post-title {
  font-family: "Playfair Display", Georgia, serif !important;
  font-style: normal !important;
  font-size: clamp(2.25rem, 4.5vw, 3.25rem) !important;
  font-weight: 400 !important;
  text-align: center !important;
  color: var(--rb-ink) !important;
  margin: 0 !important;
}

/* === Breadcrumbs === */
.rb-breadcrumbs {
  font-family: "DM Sans", sans-serif !important;
  font-size: 0.75rem !important;
  font-weight: 500 !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase;
  color: var(--rb-stone) !important;
  margin: 0 0 1.5rem 0 !important;
  text-align: center;
}
.rb-breadcrumbs a {
  color: var(--rb-hunter);
  text-decoration: none;
}
.rb-breadcrumbs a:hover { color: var(--rb-ink); }
.rb-breadcrumbs .sep {
  margin: 0 0.65rem;
  color: var(--rb-border);
}

/* === Page CTA band === */
.rb-page-cta {
  background-color: var(--rb-sage);
}

/* === Sticky mobile call bar === */
.rb-sticky-cta {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 90;
  display: none;
  background: var(--rb-hunter);
  border-top: 1px solid var(--rb-forest);
  box-shadow: 0 -8px 24px rgba(20, 42, 32, 0.18);
  padding-bottom: env(safe-area-inset-bottom);
}
.rb-sticky-cta a {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  width: 100%;
  padding: 0.95rem 1rem;
  color: var(--rb-cream);
  font-family: "DM Sans", sans-serif;
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.02em;
  text-decoration: none;
  -webkit-tap-highlight-color: transparent;
}
.rb-sticky-cta a:hover,
.rb-sticky-cta a:focus-visible {
  color: var(--rb-white);
  background: var(--rb-forest);
}
.rb-sticky-cta svg {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
  fill: currentColor;
}
.rb-sticky-cta .rb-sticky-num { font-variant-numeric: tabular-nums; }

@media (max-width: 781px) {
  .rb-sticky-cta { display: block; }
  body { padding-bottom: calc(56px + env(safe-area-inset-bottom)); }
}

/* === Equal-card framework === */
.equal-cards > .wp-block-column {
  display: flex;
  flex-direction: column;
}
/* Only pin the width of cards that declare their own flex-basis (e.g. the 33%
   practice/review cards). Columns without a flex-basis (e.g. the 5 service-area
   cards) must keep flex-grow:1 so they share the row evenly instead of
   collapsing to zero width. */
.equal-cards > .wp-block-column[style*="flex-basis"] {
  flex-grow: 0;
}
.equal-cards > .wp-block-column > .wp-block-group {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
}
.equal-cards .cta-bottom {
  margin-top: auto;
  justify-content: flex-start;
}

/* === Animations === */
.fade-up {
  opacity: 0;
  transform: translateY(28px);
  animation: rbFadeUp 0.7s ease forwards;
}
@keyframes rbFadeUp { to { opacity: 1; transform: translateY(0); } }

.fade-in {
  opacity: 0;
  animation: rbFadeIn 0.8s ease forwards;
}
@keyframes rbFadeIn { to { opacity: 1; } }

.slide-in-left {
  opacity: 0;
  transform: translateX(-30px);
  animation: rbSlideIn 0.8s ease forwards;
}
.slide-in-right {
  opacity: 0;
  transform: translateX(30px);
  animation: rbSlideIn 0.8s ease forwards;
}
@keyframes rbSlideIn { to { opacity: 1; transform: translateX(0); } }

.stagger-children > * {
  opacity: 0;
  transform: translateY(20px);
  animation: rbFadeUp 0.6s ease forwards;
}
.stagger-children > *:nth-child(1) { animation-delay: 0.08s; }
.stagger-children > *:nth-child(2) { animation-delay: 0.18s; }
.stagger-children > *:nth-child(3) { animation-delay: 0.28s; }
.stagger-children > *:nth-child(4) { animation-delay: 0.38s; }
.stagger-children > *:nth-child(5) { animation-delay: 0.48s; }
.stagger-children > *:nth-child(6) { animation-delay: 0.58s; }

.animate-on-scroll {
  transition: opacity 0.7s ease, transform 0.7s ease;
}
/* Content is visible by default. Only hide (pre-reveal) when JS is active — the
   inline <head> script adds .js-anim to <html>. This guarantees the page is
   never blank if JS is off/slow, and a failsafe reveals everything even when the
   IntersectionObserver never fires (e.g. background tabs, deferred scripts). */
.js-anim .animate-on-scroll {
  opacity: 0;
  transform: translateY(28px);
}
.animate-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.hover-lift {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.hover-lift:hover {
  transform: translateY(-4px);
  box-shadow: 0 18px 45px rgba(20, 42, 32, 0.12);
}

/* === Reduced motion === */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
  .animate-on-scroll,
  .fade-up,
  .fade-in,
  .slide-in-left,
  .slide-in-right,
  .stagger-children > * {
    opacity: 1 !important;
    transform: none !important;
  }
}

/* === Editor visibility overrides === */
.editor-styles-wrapper .fade-up,
.editor-styles-wrapper .fade-in,
.editor-styles-wrapper .slide-in-left,
.editor-styles-wrapper .slide-in-right,
.editor-styles-wrapper .animate-on-scroll,
.editor-styles-wrapper .stagger-children > * {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
  transition: none !important;
}

/* === Buttons === */
.wp-block-button .wp-block-button__link {
  background-color: var(--rb-hunter) !important;
  color: var(--rb-white) !important;
  border: 1px solid var(--rb-hunter) !important;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.wp-block-button .wp-block-button__link:hover {
  background-color: var(--rb-forest) !important;
  border-color: var(--rb-forest) !important;
}
.is-style-outline .wp-element-button,
.wp-block-button.is-style-outline > .wp-block-button__link {
  background-color: transparent !important;
  color: var(--rb-hunter) !important;
  border: 1px solid var(--rb-hunter) !important;
}
.is-style-outline .wp-element-button:hover,
.wp-block-button.is-style-outline > .wp-block-button__link:hover {
  background-color: var(--rb-hunter) !important;
  color: var(--rb-white) !important;
}

/* === Responsive tweaks === */
@media (max-width: 781px) {
  .rb-topbar { font-size: 0.75rem; }
  .rb-logo-name { font-size: 1.1875rem; }
  .rb-page-title-band { padding: 3.5rem 1rem 3rem !important; }
}
/* Declutter the top bar on phones — keep phone + hours, drop the rest.
   The sticky call bar and header menu cover the key actions. */
@media (max-width: 600px) {
  .rb-topbar-mail,
  .rb-topbar-cta,
  .rb-topbar .wp-block-social-links { display: none !important; }
  .rb-topbar { text-align: center; }
}

/* === Mobile auto-hide sticky header ===
   On phones the header is FIXED to the top and auto-hides on scroll-down
   (maximum reading space), reappearing compact on scroll-up. JS sets a
   matching padding-top on .wp-site-blocks so nothing hides under the fixed
   header AND so compacting never makes the page jump (the offset is constant,
   so shrinking the header just reveals content rather than reflowing it). In
   compact mode the green topbar drops away and the logo shrinks to a slim
   logo + menu bar. The .rb-head-hidden / .rb-head-compact classes are toggled
   by JS; every effect here is scoped to <= 781px, so desktop is untouched. */
@media (max-width: 781px) {
  header.wp-block-template-part {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 80;
    background-color: var(--rb-white);
    transition: transform 0.32s ease;
    will-change: transform;
  }
  header.wp-block-template-part.rb-head-hidden {
    transform: translateY(-100%);
  }
  header.wp-block-template-part .rb-header {
    transition: padding 0.25s ease, box-shadow 0.25s ease;
  }
  header.wp-block-template-part.rb-head-compact .rb-topbar {
    display: none;
  }
  header.wp-block-template-part.rb-head-compact .rb-header {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
    box-shadow: 0 6px 18px rgba(20, 42, 32, 0.12);
  }
  .rb-logo-mark,
  .rb-logo-mark .wp-block-image,
  .rb-logo-mark figure,
  .rb-logo-mark a,
  .rb-logo-mark img {
    transition: width 0.25s ease, height 0.25s ease;
  }
  header.wp-block-template-part.rb-head-compact .rb-logo-mark,
  header.wp-block-template-part.rb-head-compact .rb-logo-mark .wp-block-image,
  header.wp-block-template-part.rb-head-compact .rb-logo-mark figure,
  header.wp-block-template-part.rb-head-compact .rb-logo-mark a,
  header.wp-block-template-part.rb-head-compact .rb-logo-mark img {
    width: 40px !important;
    height: 40px !important;
  }
  header.wp-block-template-part.rb-head-compact .rb-logo-name {
    font-size: 1.05rem;
  }
  header.wp-block-template-part.rb-head-compact .rb-logo-tag {
    display: none;
  }
}

/* ==========================================================================
   Contact form embed (Lawmatics) — added for the React rebuild
   ========================================================================== */
.rb-form-embed {
  margin: 1.5rem 0 2.5rem;
  border: 1px solid var(--rb-border);
  background: var(--rb-white);
  box-shadow: 0 10px 34px rgba(20, 42, 32, 0.06);
}
.rb-form-embed iframe {
  display: block;
  width: 100%;
  min-height: 1180px;
  border: 0;
}
@media (max-width: 600px) {
  .rb-form-embed iframe { min-height: 1420px; }
}

/* Ensure page prose lists/paragraphs read at a comfortable width, matching
   the WordPress .wp-block-post-content constrained layout. */
.rb-page-content > * { }


/* ============================ 3. nav.css ============================== */
/* ==========================================================================
   nav.css — navigation layout/dropdown mechanics + social-link rendering.
   Colours and typography for .rb-nav come from theme.css (ported style.css);
   this file supplies the structural behaviour WordPress core normally adds.
   ========================================================================== */

/* --- Social links (WP social-links block, logos-only, gold) --- */
.wp-block-social-links {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.wp-block-social-links li { margin: 0; list-style: none; }
.wp-block-social-links a {
  display: flex;
  align-items: center;
  justify-content: center;
}
.wp-block-social-links.has-small-icon-size svg { width: 20px; height: 20px; }
.wp-block-social-links svg { width: 24px; height: 24px; fill: #c9a96e; transition: opacity 0.2s ease; }
.wp-block-social-links a:hover svg { opacity: 0.75; }

/* --- Navigation --- */
.rb-nav {
  display: flex;
  align-items: center;
}
.wp-block-navigation__container {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  list-style: none;
  margin: 0;
  padding: 0;
  flex-wrap: wrap;
}
.wp-block-navigation-item {
  position: relative;
  list-style: none;
  margin: 0;
  display: flex;
  align-items: center;
}
.wp-block-navigation-item__content {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  text-decoration: none;
  color: var(--rb-ink);
  font-family: "DM Sans", sans-serif;
  font-size: 0.78rem;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  white-space: nowrap;
  background: none;
  border: 0;
  cursor: pointer;
  padding: 0.35rem 0;
}
.wp-block-navigation-submenu > .wp-block-navigation-item__content .rb-caret {
  width: 0;
  height: 0;
  border-left: 3.5px solid transparent;
  border-right: 3.5px solid transparent;
  border-top: 4px solid currentColor;
  margin-left: 0.35rem;
  transition: transform 0.2s ease;
}

/* Submenu container (styled in theme.css); mechanics here */
.wp-block-navigation__submenu-container {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 60;
  list-style: none;
  margin: 0;
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
  display: flex;
  flex-direction: column;
}
.wp-block-navigation-submenu:hover > .wp-block-navigation__submenu-container,
.wp-block-navigation-submenu:focus-within > .wp-block-navigation__submenu-container,
.wp-block-navigation-submenu.is-open > .wp-block-navigation__submenu-container {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.wp-block-navigation__submenu-container .wp-block-navigation-item {
  display: block;
  width: 100%;
}
.wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  display: block;
  padding: 0.5rem 1.25rem;
  white-space: normal;
  letter-spacing: 0.08em;
  font-size: 0.8125rem;
}
.wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
  background: var(--rb-sage);
}

/* --- Hamburger (mobile only) --- */
.rb-nav-toggle {
  display: none;
  background: none;
  border: 0;
  cursor: pointer;
  padding: 0.5rem;
  color: var(--rb-ink);
}
.rb-nav-toggle svg { width: 26px; height: 26px; fill: currentColor; }

@media (max-width: 781px) {
  .rb-nav-toggle { display: inline-flex; }

  .rb-nav .wp-block-navigation__container {
    display: none;
    position: absolute;
    top: 100%;
    right: 0;
    left: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    background: var(--rb-white);
    border-top: 1px solid var(--rb-border);
    box-shadow: 0 18px 40px rgba(20, 42, 32, 0.14);
    padding: 0.5rem 0;
    max-height: 75vh;
    overflow-y: auto;
  }
  .rb-nav.is-open .wp-block-navigation__container { display: flex; }

  .rb-nav .wp-block-navigation-item { display: block; }
  .rb-nav .wp-block-navigation-item__content {
    padding: 0.85rem 1.5rem;
    font-size: 0.8125rem;
    justify-content: space-between;
  }
  .rb-nav .wp-block-navigation__submenu-container {
    position: static;
    opacity: 1;
    visibility: visible;
    transform: none;
    box-shadow: none;
    border: 0;
    background: var(--rb-sage);
    padding: 0;
    display: none;
    min-width: 0;
  }
  .rb-nav .wp-block-navigation-submenu.is-open > .wp-block-navigation__submenu-container {
    display: flex;
  }
  .rb-nav .wp-block-navigation-submenu.is-open > .wp-block-navigation-item__content .rb-caret {
    transform: rotate(180deg);
  }
  .rb-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
    padding: 0.7rem 2.25rem;
  }
}
