/* ==========================================================================
   Rhapsody Land & Co. — site styles for WordPress + Elementor (+ JupiterX)
   ==========================================================================
   How this file relates to Elementor:
     • Colours and fonts come from Elementor Site Settings (Global Colors /
       Global Fonts) through the --e-global-* variables, so changing a global
       there changes the site.
     • Sections are native Elementor containers carrying a CSS class
       (Advanced → CSS Classes), e.g. "rh-section rh-perspective". The class
       supplies spacing/typography defaults; anything set in the Elementor
       panel on a particular element overrides them.
     • Spacing between stacked widgets is the inner element's margin, so the
       widget's own Advanced → Margin/Padding stays free for adjustments.
     • Base element rules use :where() to stay at low specificity.
   Breakpoints = Elementor defaults: mobile ≤ 767, tablet 768–1024, desktop ≥ 1025.
   ========================================================================== */

/* 0. FONTS (self-hosted; Google Fonts are not requested) ----------------- */
@font-face { font-family: 'Bodoni Moda'; font-style: normal; font-weight: 400 900; font-display: swap;
  src: url(../fonts/bodoni-moda-normal-variable.woff2) format('woff2'); }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 100 1000; font-display: swap;
  src: url(../fonts/dm-sans-normal-variable.woff2) format('woff2'); }

/* 1. TOKENS --------------------------------------------------------------- */
body.rh-site {
  --rh-slate: var(--e-global-color-primary, #465f77);
  --rh-navy: var(--e-global-color-secondary, #263e51);
  --rh-ink: var(--e-global-color-text, #243b4c);
  --rh-accent: var(--e-global-color-accent, #b5aa8d);
  --rh-muted: var(--e-global-color-rhmuted, #586775);
  --rh-paper: var(--e-global-color-rhpaper, #f5f3ed);
  --rh-stone: var(--e-global-color-rhstone, #e8ebe8);
  --rh-stone-2: var(--e-global-color-rhstone2, #eceee9);
  --rh-line: var(--e-global-color-rhline, #d5d8d6);
  --rh-line-strong: var(--e-global-color-rhlinestrong, #aeb9c0);
  --rh-placeholder: var(--e-global-color-rhplaceholder, #405970);
  --rh-focus: var(--e-global-color-rhfocus, #ab783d);
  --rh-error: var(--e-global-color-rherror, #a43729);
  --rh-serif: var(--e-global-typography-primary-font-family, 'Bodoni Moda'), 'Bodoni 72', Didot, Georgia, serif;
  --rh-sans: var(--e-global-typography-text-font-family, 'DM Sans'), 'Helvetica Neue', Arial, sans-serif;
  --rh-display-weight: var(--e-global-typography-primary-font-weight, 500);
  --rh-opsz: 56;
  --rh-gutter: clamp(24px, 5vw, 88px);
  --rh-section-y: clamp(64px, 8vw, 110px);
}
@media (max-width: 767px) { body.rh-site { --rh-section-y: 60px; } }

/* 2. BASE ----------------------------------------------------------------- */
html { scroll-behavior: smooth; scroll-padding-top: 24px; -webkit-text-size-adjust: 100%; }
body.rh-site { margin: 0; font-optical-sizing: auto; }
:where(body.rh-site) { background-color: var(--rh-paper); color: var(--rh-ink); font-family: var(--rh-sans); font-size: 16px; line-height: 1.6; }
@media (min-width: 1600px) { body.rh-site { max-width: 1920px; margin-left: auto; margin-right: auto; box-shadow: 0 0 0 1px var(--rh-line); } }

.rh-site :where(*, *::before, *::after) { box-sizing: border-box; }
.rh-site a, .rh-site a:where(:hover, :focus, :active, :visited) { color: inherit; text-decoration: none; }
.rh-site :where(a, button) { touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.rh-site :where(button, input, select, textarea) { font: inherit; color: inherit; }
.rh-site :where(button) { cursor: pointer; }
.rh-site :focus-visible { outline: 3px solid var(--rh-focus); outline-offset: 4px; }
.rh-site [hidden] { display: none !important; }
.rh-site .rh-hp { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

.rh-site :where(h1, h2, h3, h4) { font-family: var(--rh-serif); font-weight: var(--rh-display-weight); line-height: 1.06; letter-spacing: -.02em;
  font-variation-settings: 'opsz' var(--rh-opsz); text-wrap: balance; margin-top: 0; color: inherit; text-transform: none; }
.rh-site :where(h1) { font-size: clamp(44px, 6vw, 96px); margin-bottom: .35em; }
.rh-site :where(h2) { font-size: clamp(36px, 4.4vw, 66px); margin-bottom: .4em; }
.rh-site :where(h3) { font-size: clamp(26px, 2.4vw, 36px); margin-bottom: 1em; --rh-opsz: 36; }
.rh-site :where(h4) { font-size: clamp(22px, 1.8vw, 28px); margin-bottom: 1.33em; --rh-opsz: 28; }
.rh-site :where(h1, h2) em { font-style: normal; color: #60768a; }
.rh-site :where(p, dl, dd, figure) { margin-top: 0; }
.rh-site :where(p) { margin-bottom: 1.1em; }
.rh-site :where(p:last-child) { margin-bottom: 0; }
/* Heading widgets used for small labels (tag = p / span / div) */
.rh-site :where(p, span, div).elementor-heading-title { font-family: var(--rh-sans); line-height: 1.6; }

/* Elementor containers: no default padding/gaps (Site Settings → Layout also sets 0) */
.e-con.rh-section { --padding-top: var(--rh-section-y); --padding-bottom: var(--rh-section-y); --padding-left: var(--rh-gutter); --padding-right: var(--rh-gutter); }

/* 3. TYPE ROLES (classes on Heading / Text Editor widgets) ---------------- */
.rh-eyebrow .elementor-heading-title, .rh-eyebrow-text, .rh-feature-region {
  font-family: var(--rh-sans); font-size: 12px; font-weight: 500; letter-spacing: .18em; text-transform: uppercase; line-height: 1.6;
  font-variation-settings: normal; color: inherit; margin: 0 0 28px; }
.rh-eyebrow--marked .elementor-heading-title::before { content: ''; display: inline-block; width: 23px; height: 10px; border-top: 2px solid var(--rh-slate);
  border-bottom: 2px solid var(--rh-slate); margin-right: 13px; vertical-align: 1px; }
/* Text measure is set on the paragraphs (Elementor caps widget wrappers at 100% and keeps its Width control free). */
.elementor-widget.rh-lede { font-size: 18px; color: var(--rh-muted); }
.rh-lede p { max-width: 600px; }
.elementor-widget.rh-small-note { font-size: 12px; color: var(--rh-muted); line-height: 1.7; }
.rh-small-note p { max-width: 690px; }
.rh-small-note a { border-bottom: 1px solid currentColor; }
.rh-index-number { font-size: 12px; letter-spacing: .11em; color: var(--rh-muted); }

/* 4. BUTTONS & LINKS -------------------------------------------------------
   Plain Elementor Button widgets use Site Settings → Buttons (ink, square).
   Classes on the Button widget: rh-btn-light, rh-btn-outline, rh-link (text link). */
.rh-site .elementor-button { display: inline-flex; justify-content: center; align-items: center; min-height: 50px; letter-spacing: .01em;
  transition: background-color .2s, color .2s, border-color .2s; }
.rh-site .elementor-button .elementor-button-content-wrapper { justify-content: center; }
/* The widget box hugs its button: no extra line-box space under an inline button (the button sets its own line-height). */
.rh-site .elementor-widget-button, .rh-site .elementor-widget-button .elementor-button-wrapper { line-height: 0; }
.rh-site .rh-btn-light .elementor-button { background-color: var(--rh-paper); color: var(--rh-navy); border-color: var(--rh-paper); }
.rh-site .rh-btn-light .elementor-button:is(:hover, :focus) { background-color: #fff; color: var(--rh-navy); border-color: #fff; }
.rh-site .rh-btn-outline .elementor-button { background-color: transparent; color: var(--rh-ink); border-color: var(--rh-ink); }
.rh-site .rh-btn-outline .elementor-button:is(:hover, :focus) { background-color: var(--rh-ink); color: #fff; border-color: var(--rh-ink); }
.rh-site .rh-btn-block .elementor-button-wrapper, .rh-site .rh-btn-block .elementor-button { width: 100%; }
.rh-site .rh-link .elementor-button { display: inline-block; min-height: 0; padding: 4px 0; background: none; border: 0; border-bottom: 1px solid currentColor; border-radius: 0;
  color: inherit; font-family: var(--rh-sans); font-size: 14px; font-weight: 500; line-height: 1.5; letter-spacing: 0; text-align: left; transition: color .2s; }
.rh-site .rh-link .elementor-button:is(:hover, :focus) { background: none; color: #6d573a; border-color: currentColor; }
.elementor-widget.rh-link { text-align: left; }

/* Buttons rendered by Rhapsody widgets (doubled class beats Site Settings → Buttons on <button>/<input>) */
.rh-site .rh-btn.rh-btn { display: inline-flex; justify-content: center; align-items: center; min-height: 50px; padding: 13px 26px; margin: 0; cursor: pointer;
  border: 1px solid var(--rh-ink); border-radius: 0; background: var(--rh-ink); color: #fff; font-family: var(--rh-sans); font-size: 14px; font-weight: 500;
  line-height: 1.2; letter-spacing: .01em; text-decoration: none; text-transform: none; box-shadow: none; transition: background-color .2s, color .2s, border-color .2s; }
.rh-site .rh-btn.rh-btn:is(:hover, :focus) { background: #38576e; border-color: #38576e; color: #fff; }
.rh-site .rh-btn.rh-btn--outline { background: transparent; color: var(--rh-ink); border-color: var(--rh-ink); }
.rh-site .rh-btn.rh-btn--outline:is(:hover, :focus) { background: var(--rh-ink); color: #fff; border-color: var(--rh-ink); }
.rh-site .rh-btn.rh-btn--block { width: 100%; }
.rh-site .rh-btn.rh-btn:disabled { opacity: .6; cursor: progress; }
.rh-text-link { display: inline-block; border-bottom: 1px solid currentColor; padding: 4px 0; font-size: 14px; font-weight: 500; line-height: 1.5; transition: color .2s; }
.rh-site .rh-text-link:hover { color: #6d573a; }

/* 5. SECTION HEADINGS ------------------------------------------------------ */
.e-con.rh-section-top { --column-gap: 40px; --margin-bottom: 44px; }
.rh-section-top > .e-con { --width: auto; --flex-grow: 1; --flex-shrink: 1; }
.rh-section-top > .elementor-widget { flex-shrink: 0; }
.rh-section-top .elementor-heading-title:is(h2) { margin: 0; }
.rh-section-top > .elementor-widget > *:last-child, .rh-section-top > .elementor-widget > .elementor-widget-container > *:last-child { margin-bottom: 6px; }

/* 6. BRAND LINES (Brand Lines widget) ------------------------------------- */
.rh-lines { display: flex; flex-direction: column; gap: 2px; width: 100%; color: var(--rh-slate); }
.rh-lines i { display: block; height: 5px; background: currentColor; }
.rh-lines i:not(:last-child) { opacity: .72; }
.elementor-widget.rh-lines-wrap--plain { width: 65px; flex-shrink: 0; }
.rh-lines-wrap--plain .rh-lines { color: #71879a; }

/* 7. HEADER (Header template) --------------------------------------------- */
.e-con.rh-header { --padding-top: 20px; --padding-bottom: 20px; --padding-left: var(--rh-gutter); --padding-right: var(--rh-gutter); --column-gap: 28px;
  --z-index: 20; color: #fff; }
.elementor-widget.rh-brand { width: 220px; flex-shrink: 0; line-height: 0; text-align: left; }
.rh-brand a { display: block; line-height: 0; }
.elementor-widget.rh-brand img { display: block; width: 100%; height: auto; }
.elementor-widget-rh-site-menu { position: static; }
.rh-nav { display: flex; align-items: center; gap: clamp(22px, 2.4vw, 36px); font-size: 14px; }
.rh-site .rh-nav a { padding: 12px 0; border-bottom: 1px solid transparent; color: #fff; line-height: 1.6; transition: color .2s, border-color .2s; }
.rh-site .rh-nav a:hover { color: #d2d8e2; }
.rh-site .rh-nav a[aria-current="page"] { border-bottom-color: #b9c4ce; }
.rh-site .rh-nav a.nav-contact { border-bottom-color: #b9c4ce; }
.rh-site .rh-nav a.nav-contact:hover { border-bottom-color: #fff; }
.rh-site .rh-menu .rh-menu-toggle { display: none; align-items: center; gap: 12px; min-height: 48px; padding: 0 4px; margin: 0; background: none; border: 0; border-radius: 0;
  color: #fff; font-family: var(--rh-sans); font-size: 14px; font-weight: 400; line-height: 1; box-shadow: none; }
.rh-site .rh-menu .rh-menu-toggle:is(:hover, :focus) { background: none; color: #fff; border: 0; }
.rh-menu-toggle span { font-size: 24px; line-height: 1; width: 1em; text-align: center; }
.rh-mobile-nav { display: none; position: absolute; left: 0; right: 0; top: 100%; z-index: 30; background: var(--rh-navy); color: #fff; padding: 8px var(--rh-gutter) 28px;
  box-shadow: 0 18px 30px rgba(19, 37, 54, .18); }
.rh-site .rh-mobile-nav a { display: flex; align-items: center; min-height: 52px; padding: 0; color: #fff; font-size: 18px; font-family: var(--rh-serif); font-weight: 500;
  line-height: 1.3; border-bottom: 1px solid #526779; }
.rh-site .rh-mobile-nav a:last-child { border-bottom: 0; }
.rh-site .rh-mobile-nav a[aria-current="page"] { color: #c5cfda; }

/* 8. FOOTER (Footer template) ---------------------------------------------- */
.e-con.rh-footer { --padding-top: 40px; --padding-bottom: 30px; --padding-left: var(--rh-gutter); --padding-right: var(--rh-gutter); --row-gap: 26px; --column-gap: 30px;
  color: var(--rh-paper); border-top: 1px solid #5e7081; }
.elementor-widget.rh-footer-brand { width: 210px; max-width: 100%; line-height: 0; text-align: left; }
.rh-footer-brand a { display: block; line-height: 0; }
.elementor-widget.rh-footer-brand img { display: block; width: 100%; height: auto; }
.rh-footer-links { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px 26px; }
.rh-site .rh-footer-links a { font-size: 13px; padding: 8px 0; line-height: 1.6; border-bottom: 1px solid transparent; color: inherit; }
.rh-site .rh-footer-links a:hover { border-bottom-color: #8fa0ae; }
.elementor-widget.rh-footer-line { font-size: 13px; color: #cbd3db; }
.e-con.rh-footer-legal { grid-column: 1 / -1; --row-gap: 10px; --column-gap: 30px; border-top: 1px solid #3b5468; --padding-top: 18px;
  font-size: 11px; color: #a9b7c2; line-height: 1.6; }
.rh-footer-legal p { margin: 0; }
.elementor-widget.rh-legal-note { text-align: right; justify-self: end; }
.rh-legal-note p { max-width: 560px; }

/* 9. HOME — HERO ------------------------------------------------------------ */
.e-con.rh-hero { --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px; --overflow: hidden; --min-height: 640px;
  --height: calc(100svh - 108px); max-height: 980px; isolation: isolate; color: var(--rh-paper); }
.e-con.rh-hero::after { content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(90deg, rgba(21,39,53,.68) 0%, rgba(28,43,53,.28) 60%, rgba(28,43,53,.08) 100%),
              linear-gradient(0deg, rgba(20,38,51,.72), transparent 50%),
              linear-gradient(180deg, rgba(20,38,51,.35), transparent 30%); }
.elementor-widget.rh-hero-media { position: absolute; inset: 0; z-index: 0; margin: 0; }
.elementor-widget.rh-hero-media img, .elementor-widget.rh-hero-media picture { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: 50% 55%; }
.rh-hero > .e-con, .rh-hero > .elementor-widget:not(.rh-hero-media) { z-index: 2; }
.e-con.rh-hero-copy { --padding-top: clamp(70px, 8vh, 130px); --padding-bottom: 160px; --padding-left: var(--rh-gutter); --padding-right: var(--rh-gutter); max-width: 1330px; }
.rh-eyebrow--hero .elementor-heading-title { margin-bottom: 34px; color: #e3e8ec; }
.rh-hero-title .elementor-heading-title { font-size: clamp(50px, 6.6vw, 104px); line-height: 1.04; letter-spacing: -.025em; margin: 0 0 38px; max-width: 12ch; color: #fff;
  text-shadow: 0 2px 40px rgba(22,44,62,.35); }
.e-con.rh-hero-bottom { --column-gap: 56px; --row-gap: 0px; }
.elementor-widget.rh-hero-text { font-size: 16px; line-height: 1.65; color: #e9edf0; }
.rh-hero-text p { margin: 0; max-width: 340px; }
.e-con.rh-hero-signature { --position: absolute; left: var(--rh-gutter); right: var(--rh-gutter); bottom: 52px; --width: auto; --column-gap: 26px;
  border-top: 1px solid rgba(255,255,255,.33); --padding-top: 24px; }
.elementor-widget.rh-lines-wrap--hero { margin-left: calc(-1 * var(--rh-gutter) - 70px); width: calc(var(--rh-gutter) + 143px); flex-shrink: 0; }
.rh-lines-wrap--hero .rh-lines { color: #d2dbe3; }
.elementor-widget.rh-hero-line { font-size: 12px; line-height: 1.6; letter-spacing: .025em; }
.rh-hero-line p { margin: 0; }
.elementor-widget.rh-hero-link { margin-left: auto; }
.rh-site .rh-hero-link .elementor-button { font-size: 12px; font-weight: 400; padding: 0 0 3px; border-bottom-color: #b9c6cd; white-space: nowrap; color: inherit; }
.rh-site .rh-hero-link .elementor-button:is(:hover, :focus) { color: #fff; border-bottom-color: #fff; }
.elementor-widget.rh-hero-note { position: absolute; right: var(--rh-gutter); bottom: 15px; font-size: 10px; line-height: 1.6; color: #e1e6e8; }
.rh-hero-note p { margin: 0; }

/* 10. HOME — PERSPECTIVE ------------------------------------------------------- */
.e-con.rh-perspective { --padding-top: 92px; --padding-bottom: 56px; --overflow: hidden; }
.e-con.rh-margin-note { --column-gap: 25px; --margin-bottom: 45px; }
.elementor-widget.rh-lines-wrap--margin { margin-left: calc(-1 * var(--rh-gutter) - 60px); width: calc(var(--rh-gutter) + 106px); flex-shrink: 0; }
.rh-lines-wrap--margin .rh-lines { gap: 1px; }
.rh-lines-wrap--margin .rh-lines i { height: 3px; }
.rh-margin-label .elementor-heading-title { font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--rh-muted); margin: 0; }
.e-con.rh-perspective-body { --column-gap: 9vw; --row-gap: 0px; --padding-left: 71px; }
.rh-perspective-title .elementor-heading-title { font-size: clamp(38px, 3.8vw, 59px); line-height: 1.12; margin: 0; }
.e-con.rh-perspective-copy { max-width: 400px; --padding-top: 4px; }
.elementor-widget.rh-perspective-text { color: var(--rh-muted); }
.rh-perspective-text p:first-child { color: var(--rh-ink); }
.rh-perspective-text p:last-child { margin-bottom: 1.1em; }
.e-con.rh-perspective-foot { --row-gap: 14px; --column-gap: 45px; --margin-top: 55px; --margin-left: 71px; --padding-top: 20px; border-top: 1px solid var(--rh-line);
  font-size: 12px; color: var(--rh-muted); }
.rh-step .elementor-heading-title { position: relative; padding-left: 18px; margin: 0; font-size: 12px; color: var(--rh-muted); }
.rh-step .elementor-heading-title::before { content: ''; position: absolute; width: 4px; height: 4px; background: var(--rh-slate); left: 0; top: 7px; }

/* 11. PORTFOLIO MAP (section + Portfolio Map widget) ------------------------- */
.e-con.rh-atlas-section { --padding-top: 74px; --padding-bottom: 64px; }
.e-con.rh-atlas-heading { --column-gap: 50px; --row-gap: 0px; }
.rh-atlas-heading > .rh-eyebrow { grid-column: 1 / -1; }
.rh-atlas-heading > .rh-eyebrow .elementor-heading-title { margin-bottom: 25px; }
.rh-atlas-title .elementor-heading-title { font-size: clamp(40px, 4.2vw, 65px); margin: 0; line-height: 1.07; }
.elementor-widget.rh-atlas-copy { font-size: 14px; color: var(--rh-muted); justify-self: end; }
.rh-atlas-copy p { margin: 0 0 5px; max-width: 300px; }
.rh-atlas-layout { display: grid; grid-template-columns: 1.6fr 1fr; gap: 4vw; align-items: center; margin-top: 45px; }
.rh-atlas-layout.is-map-only { grid-template-columns: 1fr; }
.rh-map-panel { min-width: 0; }
.rh-us-map { display: block; width: 100%; height: auto; overflow: visible; }
.rh-state { fill: #d6dcda; stroke: var(--rh-stone); stroke-width: 1.6; stroke-linejoin: round; transition: fill .2s; }
.rh-state.is-portfolio { fill: var(--rh-slate); stroke: #fff; cursor: pointer; }
.rh-state.is-portfolio:hover, .rh-state.is-portfolio:focus-visible, .rh-state.is-portfolio.is-active { fill: var(--rh-navy); stroke: #fff; stroke-width: 2; }
.rh-state.is-portfolio:focus-visible { outline: none; stroke: var(--rh-focus); stroke-width: 3; }
.rh-map-number { pointer-events: none; }
.rh-map-number circle { fill: var(--rh-paper); stroke: #a7b5bc; stroke-width: 1; }
.rh-map-number text { text-anchor: middle; font: 12px var(--rh-sans); fill: var(--rh-navy); }
.rh-map-key { font-size: 11px; color: var(--rh-muted); line-height: 1.6; margin: 14px 0 0; }
.rh-atlas-index { display: flex; flex-direction: column; }
.rh-site .rh-atlas-region { display: grid; grid-template-columns: 22px 1fr 15px; gap: 15px; padding: 25px 0; border-top: 1px solid #b4c0c3; align-items: baseline; color: var(--rh-ink); }
.rh-atlas-region > span:first-child { font-size: 10px; color: var(--rh-muted); }
.rh-atlas-region h3 { font-size: clamp(22px, 1.8vw, 26px); line-height: 1.2; letter-spacing: -.02em; margin: 0 0 8px; transition: color .2s; }
.rh-atlas-region p { font-size: 11px; color: var(--rh-muted); margin: 0; }
.rh-atlas-open { font-size: 17px; color: var(--rh-muted); transition: transform .2s, color .2s; }
.rh-atlas-region:hover h3, .rh-atlas-region.is-active h3 { color: var(--rh-slate); }
.rh-atlas-region.is-active .rh-atlas-open { color: var(--rh-ink); transform: rotate(90deg); }
.rh-atlas-all { margin-top: 14px; align-self: flex-start; }

/* 12. HOME — SELECTED OPPORTUNITIES (Featured Projects widget) --------------- */
.e-con.rh-opportunities { --padding-top: 90px; --padding-bottom: 72px; }
.rh-opportunities-title .elementor-heading-title { font-size: clamp(40px, 4.3vw, 66px); line-height: 1.1; }
.elementor-widget.rh-opportunity-intro { font-size: 14px; color: var(--rh-muted); }
.rh-opportunity-intro p { max-width: 275px; }
.rh-image-feature { display: grid; grid-template-columns: minmax(0, 2fr) minmax(255px, 1fr); background: #e9ece9; align-items: start; }
.rh-image-feature-copy { padding: 35px 30px; }
.rh-image-feature-copy .rh-feature-region { font-size: 10px; margin-bottom: 20px; color: var(--rh-muted); }
.rh-feature-type { font-size: 12px; color: var(--rh-muted); display: block; margin-bottom: 16px; }
.rh-image-feature-copy h3 { font-size: clamp(30px, 2.6vw, 38px); line-height: 1.12; margin: 0 0 22px; }
.rh-image-feature-copy .rh-feature-text { font-size: 15px; color: var(--rh-muted); max-width: 290px; margin-bottom: 25px; }
.rh-feature-facts { border-top: 1px solid #bdc7ca; padding-top: 20px; margin: 25px 0; display: grid; gap: 16px; }
.rh-feature-facts > div + div { border-top: 1px solid var(--rh-line); padding-top: 14px; }
.rh-feature-facts dt { font-size: 12px; color: var(--rh-muted); margin-bottom: 6px; }
.rh-feature-facts dd { font-size: 16px; font-weight: 500; margin: 0; line-height: 1.4; }
/* Two brief cards side by side. Columns are spaced generously; rows are not (row-gap 0) — the subgrid only keeps the
   locator / title / link rows level across both cards when one carries comparison controls. */
.rh-brief-features { display: grid; grid-template-columns: 1fr 1fr; column-gap: 6vw; row-gap: 0; margin-top: 42px; }
.rh-brief-features article { border-top: 1px solid #b8c4cb; padding-top: 23px; display: grid; grid-template-rows: subgrid; grid-row: span 4; row-gap: 0; align-content: start; min-width: 0; }
/* Space below the picture sits on the locator: Elementor zeroes <figure> margins inside widgets. */
.rh-brief-features article > .rh-project-locator { margin-top: 24px; }
.rh-brief-features .rh-project-locator { font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--rh-muted); }
.rh-brief-features article > div { display: grid; grid-template-columns: 1fr 1.1fr; gap: 25px; margin: 16px 0 20px; }
.rh-brief-features article > .rh-text-link { justify-self: start; align-self: start; font-size: 12px; }
.rh-brief-features h3 { font-size: clamp(26px, 2.2vw, 31px); margin: 0; }
.rh-brief-features article > div > p { font-size: 15px; color: var(--rh-muted); margin: 0; max-width: 310px; }
.rh-opportunities > .elementor-widget.rh-disclaimer, .rh-opportunities > .elementor-widget-rh-shared-section { margin-top: 36px; }
.rh-editor-empty { padding: 24px; border: 1px dashed var(--rh-line-strong); color: var(--rh-muted); font-size: 13px; margin: 0; }

/* Project imagery: single image, comparison, or "coming soon" ----------------- */
.rh-visual { margin: 0; min-width: 0; background: var(--rh-paper); }
.rh-visual figcaption { font-size: 11px; font-style: normal; font-weight: 400; color: var(--rh-muted); line-height: 1.6; margin: 0; padding: 12px 0 0; }
.rh-single-frame { position: relative; }
.rh-visual--single img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
.rh-visual-badge, .rh-compare-labels > span { color: #fff; background: rgba(36,59,76,.9); padding: 6px 10px; font-size: 11px; line-height: 1.6; letter-spacing: .02em; }
.rh-visual-badge { position: absolute; right: 18px; top: 18px; }
.rh-compare-frame { position: relative; aspect-ratio: 3 / 2; overflow: hidden; background: #d0d6d8; isolation: isolate; }
.rh-compare-frame > img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; user-select: none; pointer-events: none; }
.rh-compare-concept { clip-path: inset(0 calc(100% - var(--reveal, 50%)) 0 0); z-index: 1; }
.rh-compare-labels { position: absolute; left: 18px; right: 18px; top: 18px; z-index: 2; display: flex; justify-content: space-between; pointer-events: none; }
.rh-compare-frame[data-position="site"] .rh-compare-labels > span:first-child,
.rh-compare-frame[data-position="concept"] .rh-compare-labels > span:last-child { visibility: hidden; }
.rh-compare-divider { position: absolute; left: var(--reveal, 50%); width: 2px; top: 0; bottom: 0; background: #fff; z-index: 2; pointer-events: none; transform: translateX(-1px);
  box-shadow: 0 0 5px rgba(33,55,75,.2); }
.rh-compare-divider > span { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 50px; height: 50px; border-radius: 50%; background: var(--rh-paper);
  color: var(--rh-navy); box-shadow: 0 3px 18px rgba(19,37,54,.2); display: flex; align-items: center; justify-content: center; gap: 7px; font: 24px/1 Arial, sans-serif; }
.rh-compare-divider i { height: 18px; width: 1px; background: #6e8291; }
.rh-compare-frame[data-position="site"] .rh-compare-divider, .rh-compare-frame[data-position="concept"] .rh-compare-divider { visibility: hidden; }
.rh-site .rh-compare-range { position: absolute; z-index: 3; inset: 0; width: 100%; height: 100%; margin: 0; padding: 0; border: 0; opacity: 0; cursor: ew-resize; touch-action: pan-y;
  -webkit-appearance: none; appearance: none; background: transparent; }
.rh-compare-frame:focus-within { outline: 3px solid var(--rh-focus); outline-offset: 4px; }
.rh-compare-tools { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 14px 0 0; }
.rh-compare-tools > span { font-size: 10px; color: var(--rh-muted); text-align: right; line-height: 1.6; }
.rh-image-modes { display: inline-flex; border: 1px solid var(--rh-line-strong); }
.rh-site .rh-image-modes button[data-image-mode] { min-height: 36px; padding: 0 14px; margin: 0; background: transparent; border: 0; border-right: 1px solid var(--rh-line-strong); border-radius: 0;
  font-family: var(--rh-sans); font-size: 12px; font-weight: 400; line-height: 1; color: var(--rh-ink); box-shadow: none; text-transform: none; }
.rh-site .rh-image-modes button[data-image-mode]:is(:hover, :focus) { background: transparent; color: var(--rh-ink); border-color: var(--rh-line-strong); }
.rh-site .rh-image-modes button[data-image-mode]:last-child { border-right: 0; }
.rh-site .rh-image-modes button[data-image-mode][aria-pressed="true"] { background: var(--rh-ink); color: #fff; }
.rh-pending-frame { aspect-ratio: 3 / 2; position: relative; overflow: hidden; background: var(--rh-placeholder); color: var(--rh-paper); padding: clamp(22px, 3vw, 44px);
  display: flex; flex-direction: column; justify-content: space-between; isolation: isolate; }
.rh-pending-frame > img { position: absolute; right: -12%; bottom: -12%; width: 66%; height: auto; max-width: none; opacity: .07; z-index: -1; pointer-events: none; }
.rh-pending-location, .rh-pending-brand { font-size: 12px; letter-spacing: .09em; line-height: 1.5; color: var(--rh-paper); }
.rh-pending-location { opacity: .85; }
.rh-pending-brand { font-size: 10px; letter-spacing: .17em; opacity: .7; }
.rh-pending-frame > div { margin: 20px 0; }
.rh-pending-rule { display: block; width: 45px; height: 1px; background: #aebfcd; margin-bottom: 20px; }
.rh-site .rh-pending-frame p { font-family: var(--rh-serif); font-weight: 400; font-size: clamp(24px, 2.6vw, 38px); line-height: 1.15; color: var(--rh-paper); max-width: 360px; margin: 0;
  --rh-opsz: 36; font-variation-settings: 'opsz' var(--rh-opsz); }

/* 13. HOME — PEOPLE ---------------------------------------------------------- */
.e-con.rh-people { --column-gap: 8vw; --row-gap: 0px; --overflow: hidden; }
.e-con.rh-people-symbol { --padding-top: 24px; --padding-bottom: 24px; }
/* The bars run off the left edge: width/offset sit on the bars themselves (the section clips the overflow). */
.rh-lines-wrap--people .rh-lines { margin-left: calc(-1 * var(--rh-gutter) - 90px); width: calc(100% + var(--rh-gutter) + 65px); gap: 6px; color: #91a1af; margin-bottom: 35px; }
.rh-lines-wrap--people .rh-lines i { height: 14px; }
.rh-people-line .elementor-heading-title { display: block; font-family: var(--rh-serif); font-weight: 400; font-size: clamp(20px, 1.8vw, 24px); line-height: 1.4; letter-spacing: 0;
  color: var(--rh-muted); margin: 0; }
.rh-people-title .elementor-heading-title { font-size: clamp(40px, 4vw, 60px); line-height: 1.1; }
.elementor-widget.rh-people-text { font-size: 15px; color: var(--rh-muted); }
.rh-people-text p { max-width: 345px; }
.rh-people-text p:last-child { margin-bottom: 1.1em; }

/* 14. CONVERSATION BAND (Saved template: "Conversation band") ----------------- */
.e-con.rh-conversation { --padding-top: 72px; --padding-bottom: 86px; --column-gap: 6vw; --row-gap: 0px; --overflow: hidden; color: var(--rh-paper); }
.rh-conversation-title .elementor-heading-title { font-size: clamp(44px, 5vw, 77px); line-height: 1.06; margin: 0; color: #fff; }
.rh-conversation .rh-eyebrow .elementor-heading-title { color: #d9e0e6; }
.e-con.rh-conversation-copy { max-width: 350px; --padding-bottom: 8px; --z-index: 1; }
.elementor-widget.rh-conversation-text { font-size: 15px; color: #e0e6eb; }
.rh-conversation-text p:last-child { margin-bottom: 25px; }
.elementor-widget.rh-lines-wrap--conversation { position: absolute; right: calc(-1 * var(--rh-gutter)); bottom: 36px; width: calc(30vw + 160px); max-width: none; z-index: 0; pointer-events: none; }
.rh-lines-wrap--conversation .rh-lines { color: rgba(255,255,255,.18); gap: 4px; }
.rh-lines-wrap--conversation .rh-lines i { height: 10px; }
.rh-lines-wrap--conversation .rh-lines i:not(:last-child) { opacity: 1; }
.elementor-widget-rh-shared-section > .elementor > .e-con, .elementor-widget-rh-shared-section > .elementor-widget-container > .elementor > .e-con { --margin-left: 0px; --margin-right: 0px; }
.e-con.rh-shared { --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px; }

/* 15. INTERIOR — PAGE INTRO -------------------------------------------------- */
.e-con.rh-page-intro { --padding-top: 72px; --padding-bottom: 66px; border-bottom: 1px solid var(--rh-line); }
.rh-page-title .elementor-heading-title { font-size: clamp(44px, 5.7vw, 84px); line-height: 1.08; max-width: 1120px; }
.rh-page-intro .elementor-widget.rh-lede { font-size: 17px; }
.rh-page-intro .rh-lede p { margin: 0; }
.elementor-widget.rh-breadcrumb { text-align: left; }
.rh-site .rh-breadcrumb .elementor-button { display: inline-block; min-height: 0; padding: 0; margin-bottom: 34px; background: none; border: 0; border-radius: 0; color: inherit;
  font-family: var(--rh-sans); font-size: 13px; font-weight: 400; line-height: 1.6; text-decoration: underline; text-underline-offset: 4px; }
.rh-site .rh-breadcrumb .elementor-button:is(:hover, :focus) { background: none; color: var(--rh-slate); text-decoration: underline; }
.rh-site .elementor-widget-button.rh-breadcrumb { line-height: 1.6; } /* inline line box, as on the staging site */

/* 16. PROJECTS — REGION BLOCKS (Region Overview widget) ----------------------- */
.e-con.rh-regions-section { --padding-top: 70px; --padding-bottom: 30px; }
.rh-portfolio-regions { display: grid; grid-template-columns: 1fr 1fr; gap: 70px 7vw; }
.rh-region-block { padding-top: 25px; border-top: 1px solid var(--rh-ink); display: flex; flex-direction: column; align-items: flex-start; }
.rh-region-block h2 { font-size: clamp(32px, 2.8vw, 38px); margin: 24px 0 18px; }
.rh-site .rh-region-block h2 a:hover { color: var(--rh-slate); }
.rh-region-block > p { max-width: 450px; color: var(--rh-muted); }
.rh-region-block ul { list-style: none; padding: 0; margin: 15px 0 28px; width: 100%; }
.rh-region-block li { border-top: 1px solid var(--rh-line); padding: 13px 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 15px; align-items: baseline; }
.rh-region-block li a { font-size: 16px; font-weight: 500; }
.rh-site .rh-region-block li a:hover { text-decoration: underline; text-underline-offset: 4px; }
.rh-region-block li span { font-size: 12px; color: var(--rh-muted); text-align: right; }
.rh-site .rh-region-block .rh-btn { margin-top: auto; }
.e-con.rh-note-section { --padding-top: 15px; --padding-bottom: 65px; }

/* 17. REGION PAGES (Region Switcher + Region Projects widgets) --------------- */
.e-con.rh-switch-wrap { --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px; }
.rh-region-switch { display: flex; justify-content: flex-start; gap: clamp(24px, 4vw, 64px); padding: 14px var(--rh-gutter); background: #e7e9e6; border-bottom: 1px solid var(--rh-line);
  overflow-x: auto; scrollbar-width: none; }
.rh-region-switch::-webkit-scrollbar { display: none; }
.rh-site .rh-region-switch a { font-size: 14px; padding: 12px 0; white-space: nowrap; border-bottom: 1px solid transparent; line-height: 1.6; }
.rh-site .rh-region-switch a:hover { border-bottom-color: var(--rh-line-strong); }
.rh-site .rh-region-switch a[aria-current="page"] { border-bottom-color: var(--rh-ink); font-weight: 600; }
.rh-project-index { display: flex; flex-wrap: wrap; gap: 6px 24px; margin-bottom: 50px; }
.rh-site .rh-project-index a { font-size: 14px; border-bottom: 1px solid #adb8c0; padding: 8px 0; line-height: 1.6; }
.rh-site .rh-project-index a:hover { border-bottom-color: var(--rh-ink); }
.rh-project-detail { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 44px; align-items: start; border-top: 1px solid var(--rh-line-strong);
  padding: 48px 0 60px; scroll-margin-top: 28px; }
.rh-project-detail:last-of-type { padding-bottom: 20px; }
.rh-project-detail .rh-index-number { display: block; margin-bottom: 15px; }
.rh-detail-title .rh-location { margin-bottom: 12px; color: var(--rh-muted); }
.rh-detail-title h2 { font-size: clamp(34px, 3.2vw, 44px); margin-bottom: 15px; }
.rh-project-type { font-size: 13px; padding: 6px 11px; background: #e8eae5; display: inline-block; }
.rh-detail-copy { padding-top: 23px; max-width: 600px; }
.rh-detail-copy h3 { font-size: clamp(22px, 2vw, 27px); line-height: 1.25; margin-bottom: 18px; }
.rh-detail-copy > p { color: var(--rh-muted); }
.rh-facts { width: 100%; margin: 22px 0; display: grid; gap: 16px; }
.rh-facts > div { border-top: 1px solid var(--rh-line); padding-top: 14px; }
.rh-facts dt { font-size: 12px; color: var(--rh-muted); margin-bottom: 6px; }
.rh-facts dd { font-size: 16px; font-weight: 500; margin: 0; line-height: 1.4; }

/* 18. ABOUT ------------------------------------------------------------------ */
.e-con.rh-about-philosophy { --column-gap: 10vw; --row-gap: 0px; }
.e-con.rh-philosophy-copy { max-width: 470px; }
.elementor-widget.rh-philosophy-text { color: var(--rh-muted); }
.rh-quote-title .elementor-heading-title { font-size: clamp(38px, 3.6vw, 52px); margin-bottom: 0; }
.rh-quote-lines .rh-lines { margin-bottom: 30px; }
.elementor-widget.rh-placeholder-note { font-size: 12px; color: var(--rh-muted); }
.rh-placeholder-note p { margin: 0 0 6px; max-width: 300px; }
.e-con.rh-ceo { --column-gap: 9vw; --row-gap: 0px; border-top: 1px solid var(--rh-ink); --padding-top: 40px; --padding-bottom: 55px; }
.rh-ceo-name .elementor-heading-title { font-size: clamp(34px, 3.4vw, 47px); margin-bottom: 18px; }
.rh-ceo-subhead .elementor-heading-title { font-size: clamp(24px, 2.2vw, 30px); }
.elementor-widget.rh-bio { color: var(--rh-muted); }
.rh-content-tag .elementor-heading-title { font-size: 12px; color: var(--rh-muted); display: inline-block; border-top: 1px solid var(--rh-line); padding-top: 7px; margin: 0; line-height: 1.6; }
.e-con.rh-advisors { --row-gap: 40px; --column-gap: 28px; }
.e-con.rh-advisor { border-top: 1px solid var(--rh-line); --padding-top: 25px; }
.rh-advisor-name .elementor-heading-title { font-size: clamp(26px, 2.4vw, 32px); }
.rh-advisor .elementor-widget.rh-bio { font-size: 15px; }
.rh-advisor .rh-bio p { max-width: 350px; }
.rh-advisor .rh-bio p:last-child { margin-bottom: 1.1em; }
/* Five advisors need ≥1100px; between the tablet breakpoint and 1100px show three per row (body.rh-site outranks the Elementor column setting). */
@media (min-width: 1025px) and (max-width: 1099px) { body.rh-site .e-con.rh-advisors { --e-con-grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* 19. CONTACT (Inquiry Form widget) ------------------------------------------ */
.e-con.rh-contact-page { --column-gap: 8vw; --row-gap: 0px; }
.rh-contact-title .elementor-heading-title { font-size: clamp(42px, 4.7vw, 72px); }
.elementor-widget.rh-contact-text { color: var(--rh-muted); }
.rh-contact-text p { max-width: 365px; }
.e-con.rh-contact-note { --margin-top: 65px; border-top: 1px solid var(--rh-line); --padding-top: 25px; max-width: 380px; }
.rh-note-title .elementor-heading-title { font-size: clamp(24px, 2.2vw, 30px); }
.elementor-widget.rh-note-text { font-size: 15px; color: var(--rh-muted); }
.rh-form-alert, .rh-login-error { background: #fff; border-left: 2px solid var(--rh-error); padding: 11px 14px; margin-bottom: 20px; font-size: 14px; line-height: 1.5; }
.rh-login-error strong { font-weight: 600; }
.rh-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.rh-field { min-width: 0; }
.rh-field.is-full { grid-column: 1 / -1; }
.rh-site .rh-field label { display: block; font-size: 14px; line-height: 1.6; margin-bottom: 9px; color: var(--rh-ink); font-weight: 400; }
.rh-field label span { font-size: 12px; color: var(--rh-muted); }
.rh-site .rh-field :is(input, select, textarea) { display: block; width: 100%; max-width: none; min-height: 50px; margin: 0; padding: 12px 14px; background-color: #fff; border: 1px solid #c2cacb;
  border-radius: 0; box-shadow: none; color: var(--rh-ink); font-family: var(--rh-sans); font-size: 16px; line-height: 1.6; -webkit-appearance: none; appearance: none; }
.rh-site .rh-field select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23243b4c' stroke-width='1.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 14px center; padding-right: 40px; }
.rh-site .rh-field textarea { min-height: 150px; resize: vertical; }
.rh-site .rh-field :is(input, select, textarea):focus { outline: 2px solid var(--rh-slate); outline-offset: 0; border-color: var(--rh-slate); }
.rh-site .rh-field [aria-invalid="true"] { border-color: var(--rh-error); }
.rh-field-error { font-size: 13px; color: var(--rh-error); margin: 6px 0 0; }
.rh-field-error:empty { display: none; }
.rh-form-help { font-size: 12px; color: var(--rh-muted); margin: 18px 0 0; }
.rh-site .rh-btn.rh-btn--submit { margin-top: 22px; min-width: 200px; }
.rh-confirmation { padding: 30px 0; }
.rh-confirmation:focus { outline: none; }
.rh-confirmation-mark { display: block; font-size: 28px; border: 1px solid #7d8e94; width: 58px; height: 58px; text-align: center; line-height: 56px; margin-bottom: 28px; }
.rh-confirmation .rh-eyebrow-text { margin-bottom: 28px; }
.rh-confirmation h2 { font-size: clamp(36px, 3.6vw, 48px); }
.rh-confirmation p:not(.rh-eyebrow-text) { color: var(--rh-muted); }
.rh-confirmation .rh-btn { margin-top: 10px; }

/* 20. INVESTOR ACCESS (Investor Login widget) -------------------------------- */
.e-con.rh-access-page { --column-gap: 8vw; --row-gap: 0px; }
.rh-access-title .elementor-heading-title { font-size: clamp(40px, 4.2vw, 64px); }
.elementor-widget.rh-access-text { color: var(--rh-muted); }
.rh-access-text p { max-width: 380px; }
.elementor-widget.rh-access-note { font-size: 13px; }
.rh-access-note p { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--rh-line); }
.e-con.rh-access-panel { --padding-top: clamp(28px, 3vw, 40px); --padding-bottom: clamp(28px, 3vw, 40px); --padding-left: clamp(28px, 3vw, 40px); --padding-right: clamp(28px, 3vw, 40px);
  border-top: 3px solid var(--rh-slate); }
.rh-panel-title .elementor-heading-title { font-size: clamp(36px, 3.6vw, 49px); margin-bottom: 22px; }
.rh-login-form p { margin: 0 0 18px; }
.rh-site .rh-login-form label { display: block; font-size: 14px; line-height: 1.6; margin-bottom: 9px; color: var(--rh-ink); font-weight: 400; }
.rh-site .rh-login-form .input { display: block; width: 100%; max-width: none; min-height: 50px; margin: 0; padding: 12px 14px; background: #fff; border: 1px solid #c2cacb; border-radius: 0; box-shadow: none;
  color: var(--rh-ink); font-family: var(--rh-sans); font-size: 16px; line-height: 1.6; -webkit-appearance: none; appearance: none; }
.rh-site .rh-login-form .input:focus { outline: 2px solid var(--rh-slate); outline-offset: 0; border-color: var(--rh-slate); }
.rh-site .rh-login-form .input[aria-invalid="true"] { border-color: var(--rh-error); }
.rh-site .rh-login-form .login-remember label { display: flex; align-items: center; gap: 10px; margin: 4px 0 0; cursor: pointer; }
.rh-site .rh-login-form .login-remember input { width: 18px; height: 18px; margin: 0; accent-color: var(--rh-navy); flex-shrink: 0; }
.rh-login-form .login-submit { margin-top: 0; }
.rh-site .rh-login-form .login-lost { margin: 18px 0 0; } /* last line of the widget: no trailing margin (it would not collapse) */
.rh-login-form .login-lost .rh-text-link { font-size: 13px; }
.rh-login-state p { margin: 0 0 18px; }
.rh-login-links { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; }
.e-con.rh-login-request { --margin-top: 32px; --padding-top: 28px; border-top: 1px solid #bcc6c7; }
.rh-request-title .elementor-heading-title { font-size: clamp(24px, 2.2vw, 29px); margin-bottom: 10px; }
.elementor-widget.rh-request-text { color: var(--rh-muted); }
.rh-login-request .elementor-widget.rh-btn-block .elementor-button { margin-top: 36px; }
.rh-login-request .elementor-widget.rh-small-note p { margin-top: 18px; }

/* 21. MOTION ------------------------------------------------------------------ */
@media (prefers-reduced-motion: no-preference) {
  .rh-hero-copy { animation: rh-arrive .7s ease-out both; }
  @keyframes rh-arrive { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
}
@media (prefers-reduced-motion: reduce) {
  .rh-site *, .rh-site *::before, .rh-site *::after { animation: none !important; transition: none !important; }
  html { scroll-behavior: auto; }
}
/* No entrance animation while editing */
.elementor-editor-active .rh-hero-copy { animation: none; }

/* ============================================================================
   TABLET (768–1024)
   ========================================================================== */
@media (max-width: 1024px) {
  .rh-hero-title .elementor-heading-title { font-size: clamp(50px, 7.6vw, 84px); }
  .e-con.rh-hero-copy { --padding-top: 90px; }
  .e-con.rh-hero-bottom { --column-gap: 36px; }
  .e-con.rh-perspective-body { --padding-left: 0px; --column-gap: 6vw; }
  .e-con.rh-perspective-foot { --margin-left: 0px; }
  .rh-atlas-layout { grid-template-columns: 1.3fr 1fr; gap: 30px; }
  .rh-site .rh-atlas-region { padding: 20px 0; gap: 10px; }
  .rh-image-feature { grid-template-columns: minmax(0, 1.6fr) minmax(240px, 1fr); }
  .rh-image-feature-copy { padding: 26px 24px; }
  .rh-brief-features article > div { grid-template-columns: 1fr; gap: 14px; }
  /* Side-by-side brief cards on tablet: keep the comparison toolbar to one row so the two cards stay close in height.
     The instruction stays available to assistive tech through the range input's aria-describedby. */
  .rh-brief-features .rh-compare-tools > span { display: none; }
  .rh-compare-tools { flex-wrap: wrap; align-items: flex-start; gap: 12px; }
  .rh-compare-tools > span { text-align: left; }
  .e-con.rh-people { --column-gap: 5vw; }
  .e-con.rh-conversation { --column-gap: 5vw; }
  .rh-project-detail { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 32px; }
  .e-con.rh-about-philosophy { --column-gap: 6vw; }
  .e-con.rh-ceo { --column-gap: 6vw; }
  .e-con.rh-contact-page, .e-con.rh-access-page { --column-gap: 5vw; }
}

/* ============================================================================
   MOBILE (≤ 767): all iPhones, including iPhone Duo inner screen upright
   ========================================================================== */
@media (max-width: 767px) {
  .e-con.rh-header { --padding-top: 14px; --padding-bottom: 14px; }
  .elementor-widget.rh-brand { width: 176px; }
  .rh-nav { display: none; }
  .rh-site .rh-menu .rh-menu-toggle { display: inline-flex; }
  .rh-mobile-nav.is-open { display: block; }

  .e-con.rh-hero { --min-height: 600px; --height: calc(100svh - 86px); max-height: 900px; }
  .elementor-widget.rh-hero-media img { object-position: 38% center; }
  .e-con.rh-hero-copy { --padding-top: 64px; --padding-bottom: 170px; }
  .rh-eyebrow--hero .elementor-heading-title { font-size: 10px; margin-bottom: 28px; }
  .rh-hero-title .elementor-heading-title { font-size: clamp(38px, 10.2vw, 64px); line-height: 1.1; letter-spacing: -.02em; margin-bottom: 26px; max-width: none; }
  .e-con.rh-hero-bottom { --row-gap: 0px; }
  .rh-hero-text p { max-width: 420px; }
  .rh-hero-text p:last-child { margin-bottom: 26px; }
  .e-con.rh-hero-signature { bottom: 40px; --column-gap: 18px; --padding-top: 18px; }
  .elementor-widget.rh-lines-wrap--hero { width: calc(var(--rh-gutter) + 90px); margin-left: calc(-1 * var(--rh-gutter) - 56px); }
  .rh-lines-wrap--hero .rh-lines i { height: 4px; }
  .elementor-widget.rh-hero-line { font-size: 11px; }
  .rh-site .rh-hero-link .elementor-button { font-size: 11px; }
  .elementor-widget.rh-hero-note { bottom: 10px; font-size: 9px; }

  .e-con.rh-perspective { --padding-top: 60px; --padding-bottom: 40px; }
  .e-con.rh-margin-note { --margin-bottom: 30px; }
  .elementor-widget.rh-lines-wrap--margin { width: calc(var(--rh-gutter) + 80px); margin-left: calc(-1 * var(--rh-gutter) - 50px); }
  .rh-perspective-title .elementor-heading-title { font-size: clamp(34px, 9vw, 48px); margin-bottom: 26px; }
  .e-con.rh-perspective-copy { max-width: none; }
  .e-con.rh-perspective-foot { --margin-top: 36px; --row-gap: 10px; }

  .e-con.rh-atlas-section { --padding-top: 56px; --padding-bottom: 50px; }
  .rh-atlas-title .elementor-heading-title { font-size: clamp(34px, 9vw, 48px); }
  .elementor-widget.rh-atlas-copy { justify-self: start; }
  .rh-atlas-copy p { max-width: none; }
  .rh-atlas-copy p { margin: 20px 0 0; }
  .rh-atlas-layout { display: block; margin-top: 30px; }
  .rh-map-panel { max-width: 560px; }
  .rh-atlas-index { margin-top: 24px; }
  .rh-site .rh-atlas-region { padding: 18px 0; }
  .rh-atlas-region h3 { font-size: 24px; }

  .e-con.rh-opportunities { --padding-top: 60px; --padding-bottom: 50px; }
  .e-con.rh-section-top { --margin-bottom: 30px; --row-gap: 0px; }
  .rh-section-top > .elementor-widget > *:last-child, .rh-section-top > .elementor-widget > .elementor-widget-container > *:last-child { margin: 16px 0 0; }
  .rh-opportunity-intro p { max-width: none; }
  .rh-image-feature { display: block; }
  .rh-image-feature-copy { padding: 26px 22px 30px; }
  .rh-image-feature-copy .rh-feature-text { max-width: none; }
  .rh-brief-features { display: block; margin-top: 36px; }
  .rh-brief-features .rh-compare-tools > span { display: inline; }
  .rh-brief-features article { padding-top: 22px; }
  .rh-brief-features article + article { margin-top: 36px; }
  .rh-brief-features article > div { display: block; margin: 18px 0 16px; }
  .rh-brief-features h3 { margin-bottom: 10px; }
  .rh-brief-features article > div > p { max-width: none; }
  .rh-compare-tools { flex-wrap: wrap; gap: 10px; }
  .rh-compare-tools > span { text-align: left; }
  .rh-compare-divider > span { width: 44px; height: 44px; font-size: 20px; }

  .e-con.rh-people-symbol { --padding-top: 0px; --padding-bottom: 30px; }
  .rh-lines-wrap--people .rh-lines { width: calc(70% + var(--rh-gutter) + 60px); margin-left: calc(-1 * var(--rh-gutter) - 60px); gap: 4px; margin-bottom: 26px; }
  .rh-lines-wrap--people .rh-lines i { height: 10px; }
  .rh-people-title .elementor-heading-title { font-size: clamp(34px, 9vw, 48px); }
  .rh-people-text p { max-width: none; }

  .e-con.rh-conversation { --padding-top: 60px; --padding-bottom: 70px; }
  .rh-conversation-title .elementor-heading-title { font-size: clamp(36px, 10vw, 54px); margin-bottom: 26px; }
  .elementor-widget.rh-lines-wrap--conversation { bottom: 22px; width: 46vw; }
  .rh-lines-wrap--conversation .rh-lines { gap: 3px; }
  .rh-lines-wrap--conversation .rh-lines i { height: 7px; }

  .e-con.rh-footer { --padding-top: 36px; --padding-bottom: 26px; --row-gap: 0px; }
  .rh-footer-links { justify-content: flex-start; margin: 22px 0 18px; gap: 4px 22px; }
  .rh-footer-line p { margin-bottom: 20px; }
  .e-con.rh-footer-legal { --row-gap: 8px; }
  .elementor-widget.rh-legal-note { text-align: left; justify-self: start; }
  .rh-legal-note p { max-width: none; }

  .e-con.rh-page-intro { --padding-top: 50px; --padding-bottom: 46px; }
  .rh-page-title .elementor-heading-title { font-size: clamp(38px, 10vw, 56px); }
  .rh-site .rh-breadcrumb .elementor-button { margin-bottom: 26px; }
  .e-con.rh-regions-section { --padding-top: 50px; }
  .rh-portfolio-regions { display: block; }
  .rh-region-block { margin-bottom: 50px; }
  .rh-region-block h2 { font-size: 32px; }
  .rh-region-switch { padding: 8px var(--rh-gutter); gap: 24px; }
  .rh-project-index { margin-bottom: 36px; }
  .rh-project-detail { display: block; padding: 36px 0 44px; }
  .rh-project-detail .rh-regional-visual { margin-bottom: 26px; }
  .rh-detail-title h2 { font-size: clamp(32px, 8.5vw, 40px); }
  .rh-detail-copy { padding-top: 20px; }

  .e-con.rh-editorial-quote { --margin-bottom: 30px; }
  .rh-quote-title .elementor-heading-title { font-size: clamp(32px, 8.5vw, 42px); }
  .e-con.rh-ceo { --padding-top: 32px; --padding-bottom: 40px; }
  .e-con.rh-ceo > .e-con:first-child { --margin-bottom: 26px; }
  .e-con.rh-advisors { --row-gap: 30px; }

  .e-con.rh-contact-intro { --margin-bottom: 40px; }
  .e-con.rh-contact-note { --margin-top: 36px; }
  .rh-form-grid { grid-template-columns: 1fr; gap: 20px; }
  .e-con.rh-access-intro { --margin-bottom: 36px; }
  .rh-site .rh-btn.rh-btn--submit { width: 100%; }
}

/* Very narrow phones (≤ 360) */
@media (max-width: 360px) {
  .elementor-widget.rh-brand { width: 150px; }
  .rh-hero-title .elementor-heading-title { font-size: 36px; }
  .elementor-widget.rh-hero-link { display: none; }
}

/* Coming-soon page (Elementor maintenance mode) - reuses the hero */
.e-con.rh-hero.rh-coming-soon { --height: auto; --min-height: max(620px, 100svh); max-height: none; }
.elementor-widget.rh-cs-logo img { display: block; width: 210px; height: auto; margin-bottom: clamp(56px, 10vh, 112px); }
@media (max-width: 767px) {
  .e-con.rh-hero.rh-coming-soon { --height: auto; --min-height: max(600px, 100svh); max-height: none; }
  .elementor-widget.rh-cs-logo img { width: 156px; margin-bottom: 52px; }
}
