/* palette lifted for the client revision pass (see lighten.js) */
/* ==========================================================================
   Falconhurst Treehouses — design-system port
   Source of truth: "Animated homepage design system" (.dc.html canvas export)

   SPECIFICITY CONVENTION (important — read before editing)
   --------------------------------------------------------
   base defaults   :where(.fh) :where(el)   -> (0,0,0)  never fights anything
   Divi neutralise .fh el                   -> (0,1,1)  beats Divi's element rules
   COMPONENTS      .fh .fh-thing            -> (0,2,0)  beats both of the above
   Every component class MUST be written with the leading `.fh ` so it outranks
   both the base layer and the neutralisers. Writing `.fh-thing` alone is a bug:
   it loses to `.fh a` and to `.fh h1`.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Tokens
   applyBrand() in site-fx.js computes --fh-accent-soft at runtime as
   lighten('#C8912F', 0.28) = #D7B069. The #E2B664 written as the CSS-var
   fallback in the source never actually renders through var(); it only renders
   where the source hard-codes it (hover states, twinkle dots, rgba(226,182,100)
   borders). Both values are reproduced exactly.
   -------------------------------------------------------------------------- */
:root {
  --fh-accent: #C8912F;
  --fh-accent-soft: #D7B069;      /* computed, not the #E2B664 fallback */
  --fh-accent-lit: #E2B664;       /* literal hard-coded gold from source */
  --fh-ink: #14263B;
  --fh-navy: #0E2744;
  --fh-navy-deep: #0A2038;
  --fh-navy-mid: #143255;
  --fh-cream: #F7F2E8;
  --fh-cream-2: #EFE7D8;
  --fh-cream-3: #FFFDF8;
  --fh-shell: 1760px;
  --fh-gutter: clamp(16px, 2.2vw, 34px);
  --fh-ease: cubic-bezier(.16, 1, .3, 1);
}

/* --------------------------------------------------------------------------
   2. Base layer — zero specificity so components always win
   -------------------------------------------------------------------------- */
.fh, .fh * { box-sizing: border-box; }
html { scroll-behavior: smooth; }

/* (0,1,0) so it outranks Divi's body{font-size:14px;line-height:1.7em;
   font-weight:500;color:#666} at (0,0,1), while still losing to .fh .fh-thing
   components at (0,2,0). The source's <body> sets none of these, so these are
   the browser defaults the source actually renders with. */
.fh {
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: normal;
  color: var(--fh-ink);
  -webkit-font-smoothing: antialiased;
}
/* overflow-x on page content only, never on the header wrapper, so the fixed
   header can never be clipped by an ancestor. */
.fh-page { background: var(--fh-cream); overflow-x: hidden; }

:where(.fh) ::selection { background: #C8912F; color: #06172B; }
:where(.fh) :where(a) { color: #C8912F; text-decoration: none; }
:where(.fh) :where(a:hover) { color: #E2B664; }
:where(.fh) :where(h1, h2, h3, h4, p, ul, ol, figure) { margin: 0; }
:where(.fh) :where(ul) { padding: 0; list-style: none; }
:where(.fh) :where(button) {
  font: inherit; color: inherit; background: none; border: 0; cursor: pointer;
}
:where(.fh) :where(input, textarea) { font: inherit; }
.fh :focus-visible { outline: 2px solid var(--fh-accent); outline-offset: 3px; }

/* --------------------------------------------------------------------------
   3. Keyframes (verbatim from source)
   -------------------------------------------------------------------------- */
@keyframes fh-twinkle {
  0%, 100% { opacity: .15; transform: scale(.7); }
  50%      { opacity: .9;  transform: scale(1); }
}
@keyframes fh-drift {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-14px); }
}
@keyframes fh-scrollcue {
  0%   { transform: translateY(-40%); opacity: 0; }
  40%  { opacity: 1; }
  100% { transform: translateY(120%); opacity: 0; }
}
@keyframes fh-ring {
  0%   { transform: scale(.35); opacity: .85; }
  100% { transform: scale(1.5);  opacity: 0; }
}

/* --------------------------------------------------------------------------
   4. Interaction primitives (verbatim from source)
   -------------------------------------------------------------------------- */
.fh [data-navlink] { position: relative; }
.fh [data-navlink]::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -7px; height: 1px;
  background: currentColor; transform: scaleX(0); transform-origin: left;
  transition: transform .45s var(--fh-ease);
}
.fh [data-navlink]:hover::after { transform: scaleX(1); }

.fh [data-arrow] { display: inline-block; transition: transform .45s var(--fh-ease); }
.fh [data-btn]:hover [data-arrow],
.fh [data-card]:hover [data-arrow] { transform: translateX(7px); }

.fh [data-zoom] { transition: transform 1.2s var(--fh-ease); }
.fh [data-card]:hover [data-zoom],
.fh [data-tile]:hover [data-zoom] { transform: scale(1.05); }

.fh [data-rail]::-webkit-scrollbar { height: 0; }
.fh [data-rail] { scrollbar-width: none; }

.fh [data-acc-body] {
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows .55s var(--fh-ease);
}
.fh [data-acc][aria-expanded="true"] + [data-acc-body] { grid-template-rows: 1fr; }
.fh [data-acc-inner] { overflow: hidden; }
.fh [data-acc][aria-expanded="true"] [data-plus] { transform: rotate(90deg); }
.fh [data-acc][aria-expanded="true"] [data-plus-v] { opacity: 0; }

/* --------------------------------------------------------------------------
   5. Divi neutralisers (0,1,1) — scoped, so the rest of the site is untouched
   -------------------------------------------------------------------------- */
/* style-static.min.css: h1..h6{padding-bottom:10px;line-height:1em} */
.fh h1, .fh h2, .fh h3, .fh h4, .fh h5, .fh h6 {
  padding-bottom: 0;
  line-height: normal;
  font-weight: 400;
  color: inherit;
}
/* p{padding-bottom:1em} — applies in text AND code modules */
.fh p { padding-bottom: 0; }
/* Divi also pads every list: ul{padding-left:16px;padding-bottom:23px;line-height:26px} */
.fh ul, .fh ol { padding: 0; line-height: normal; }
.fh li { line-height: normal; }
.fh .et_pb_text p { padding-bottom: 0; }

/* .et_block_row:after clearfix becomes a real grid/flex item */
.fh .et_pb_row:before, .fh .et_pb_row:after,
.fh .et_block_row:before, .fh .et_block_row:after {
  content: none !important;
  display: none !important;
}

/* Theme Builder body wrapper: must contribute no geometry at all. */
.fh-body-section { padding: 0 !important; margin: 0 !important; background: transparent !important; }
.fh-body-row {
  max-width: none !important; width: 100% !important;
  padding: 0 !important; margin: 0 !important;
}
.fh-body-row > .et_pb_column { padding: 0 !important; margin: 0 !important; width: 100% !important; }

/* Divi's boxed section/row defaults must never dictate the layout. */
.fh.et_pb_section, .fh .et_pb_section { padding: 0; background-color: transparent; }
.fh .et_pb_row {
  width: 100%;
  max-width: var(--fh-shell);
  margin-left: auto;
  margin-right: auto;
  padding: 0 var(--fh-gutter);
  display: flow-root;
}
.fh .et_pb_module { margin-bottom: 0; }

/* Divi's own .container is a name collision (width:80%;max-width:1080px) */
.fh .et_pb_row.container { max-width: var(--fh-shell); width: 100%; }
#main-content .fh .container:before { display: none; }

/* --------------------------------------------------------------------------
   6. Generic grid row helper
   Divi's gutter scale is percentage-based (1-4) and cannot express the source's
   clamp() gaps, so grid rows carry their geometry via css.mainElement and this
   class resets the column widths Divi stamps on them at (0,2,0).
   -------------------------------------------------------------------------- */
.fh .fh-grid > .et_pb_column {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  margin-bottom: 0 !important;
  float: none !important;
}

/* --------------------------------------------------------------------------
   7. Shared component atoms
   -------------------------------------------------------------------------- */
.fh .fh-serif { font-family: Newsreader, Georgia, serif; }
.fh .fh-sans  { font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif; }

.fh .fh-eyebrow { display: flex; align-items: center; gap: 14px; }
.fh .fh-eyebrow-rule { display: block; width: 44px; height: 1px; background: var(--fh-accent); }
.fh .fh-eyebrow-text {
  font-size: 11px; letter-spacing: .32em; text-transform: uppercase; font-weight: 600;
}
.fh .fh-eyebrow-text.is-dark  { color: #6F6142; }
.fh .fh-eyebrow-text.is-light { color: var(--fh-accent-soft); }

/* --------------------------------------------------------------------------
   8. Scroll-reveal
   -------------------------------------------------------------------------- */
.fh [data-reveal] { will-change: opacity, transform; }

/* ==========================================================================
   HEADER — Global (Divi Theme Builder)
   Source: Site Header.dc.html, values verbatim.
   ========================================================================== */

/* The Divi SECTION is the fixed bar (source: <header data-fh-header>). */
.fh.fh-header {
  position: fixed !important; top: 0; left: 0; right: 0; z-index: 90;
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif;
  transition: background .6s var(--fh-ease), box-shadow .6s;
  background: linear-gradient(180deg, rgba(10, 32, 56, .6), rgba(10, 32, 56, 0));
  transform: none !important; filter: none !important;
  padding: 0 !important; margin: 0 !important;
}

/* The ROW is the inner flex container (source: header > div). */
/* Vertical padding trimmed from 18px so the larger logo below only grows the
   bar from 82px to 86px — the header stays the same object, just with a more
   prominent mark. Nothing on any page is offset by the header height (every
   body section starts at y=0 and the bar floats over it), so this is safe. */
.fh-header .et_pb_row.fh-header-inner {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: 12px clamp(16px, 2.2vw, 34px);
  display: flex; align-items: center; gap: clamp(14px, 2vw, 32px);
}
/* The COLUMNS are the flex items (source: the 5 children of that div). */
.fh-header .fh-header-inner > .et_pb_column {
  width: auto !important; max-width: none !important;
  flex: 0 0 auto;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh-header .fh-header-inner .et_pb_module { margin: 0 !important; padding: 0 !important; }
.fh-header .fh-header-inner > .fh-hcol-nav { margin-left: auto !important; }
.fh-header .fh-header-inner > .fh-hcol-burger { display: none; }

/* ---- logo lockup ---- */
.fh .fh-logo {
  display: flex; align-items: center; gap: 12px;
  text-decoration: none; flex: 0 0 auto;
}
/* Logo enlarged again on request: mark 46 -> 58 -> 72px, wordmark 15 -> 20px. */
.fh .fh-logo img { height: 72px; width: auto; display: block; }
.fh .fh-logo-txt { display: block; line-height: 1.1; }
.fh .fh-logo-1 {
  display: block; font-size: 20px; letter-spacing: .3em;
  font-weight: 700; color: #FFFFFF;
}
.fh .fh-logo-2 {
  display: block; font-size: 12.5px; letter-spacing: .44em;
  font-weight: 500; color: var(--fh-accent-soft); padding-left: 2px;
}
/* On a narrow phone the lockup and the hamburger share one row, so the mark
   steps back down just enough to keep them from crowding. */
@media (max-width: 860px) {
  .fh .fh-logo img { height: 62px; }
  .fh .fh-logo-1 { font-size: 17px; }
  .fh .fh-logo-2 { font-size: 10.5px; letter-spacing: .42em; }
}
@media (max-width: 520px) {
  .fh .fh-logo img { height: 54px; }
  .fh .fh-logo-1 { font-size: 14.5px; }
  .fh .fh-logo-2 { font-size: 9px; letter-spacing: .38em; }
}

/* ---- desktop nav ---- */
.fh .fh-nav {
  display: flex; align-items: center;
  gap: clamp(16px, 1.8vw, 28px); margin-left: auto;
}
.fh .fh-nav-icon { display: inline-flex; align-items: center; color: #F4EEE2; transition: color .4s; }
.fh .fh-nav-icon:hover { color: #E2B664; }
.fh .fh-nav-link { font-size: 14px; letter-spacing: .04em; color: #F4EEE2; }
.fh .fh-nav-link:hover { color: #F4EEE2; }

.fh .fh-dropwrap { position: relative; }
.fh .fh-droptrigger {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: 14px; letter-spacing: .04em; color: #F4EEE2;
}
.fh .fh-droptrigger:hover { color: #F4EEE2; }
.fh .fh-caret { display: inline-block; font-size: 9px; transition: transform .4s; }
.fh .fh-dropmenu {
  position: absolute; top: 100%; left: -18px; padding-top: 18px;
  opacity: 0; pointer-events: none; transform: translateY(-6px);
  transition: opacity .35s var(--fh-ease), transform .35s var(--fh-ease);
}
.fh .fh-dropmenu-inner {
  background: #0E2744;
  border: 1px solid rgba(226, 182, 100, .24);
  box-shadow: 0 26px 60px rgba(8, 26, 46, .5);
  min-width: 320px; padding: 10px 0;
}
.fh .fh-dropitem {
  display: block; padding: 14px 22px; font-size: 14px; line-height: 1.4;
  color: #DCE5EF; transition: background .3s, color .3s;
}
.fh .fh-dropitem:hover { background: rgba(226, 182, 100, .1); color: #FFFFFF; }

/* ---- phone ---- */
.fh .fh-phone {
  display: flex; align-items: center; gap: 8px;
  font-size: 14px; font-weight: 600; color: #FFFFFF;
  letter-spacing: .02em; text-decoration: none;
}
.fh .fh-phone:hover { color: #FFFFFF; }
.fh .fh-phone-dot {
  display: inline-block; width: 6px; height: 6px;
  border-radius: 50%; background: var(--fh-accent);
}

/* ---- hamburger ---- */
.fh .fh-menubtn {
  display: none; margin-left: auto; flex-direction: column; gap: 6px;
  padding: 10px; align-items: flex-end;
  background: none; border: 0; cursor: pointer;
}
.fh .fh-menubtn span { display: block; height: 1.5px; background: #FFFFFF; }
.fh .fh-menubtn span:nth-child(1) { width: 26px; }
.fh .fh-menubtn span:nth-child(2) { width: 18px; }

/* ---- mobile overlay ---- */
.fh .fh-menu {
  position: fixed; inset: 0; z-index: 100; background: #0E2744;
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif;
  display: flex; flex-direction: column;
  padding: 24px clamp(20px, 6vw, 60px) 40px;
  opacity: 0; pointer-events: none; transform: translateY(-12px);
  transition: opacity .5s var(--fh-ease), transform .5s var(--fh-ease);
  overflow-y: auto;
}
.fh .fh-menu-top { display: flex; align-items: center; justify-content: space-between; }
.fh .fh-menu-top img { height: 52px; width: auto; }
.fh .fh-menuclose {
  font-size: 30px; line-height: 1; color: #F4EEE2;
  padding: 8px 4px; background: none; border: 0; cursor: pointer;
}
.fh .fh-menu-nav { display: flex; flex-direction: column; gap: 2px; margin: auto 0; }
.fh .fh-menulink-lg {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(20px, 5vw, 28px);
  color: #F7F2E8; padding: 5px 0; text-decoration: none;
}
.fh .fh-menulink-lg:hover { color: #F7F2E8; }
.fh .fh-menu-divider { height: 1px; background: rgba(247, 242, 232, .14); margin: 18px 0; }
.fh .fh-menulink-sm { font-size: 15px; color: #C3D0DE; padding: 9px 0; text-decoration: none; }
.fh .fh-menulink-sm:hover { color: #C3D0DE; }
.fh .fh-menu-foot { display: flex; flex-direction: column; gap: 12px; }
.fh .fh-menu-cta {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  background: var(--fh-accent); color: #08192C; font-weight: 700;
  letter-spacing: .09em; text-transform: uppercase; font-size: 14px;
  padding: 17px; text-decoration: none;
}
.fh .fh-menu-cta:hover { color: #08192C; }
.fh .fh-menu-tel {
  text-align: center; color: #F4EEE2; font-size: 16px;
  letter-spacing: .04em; text-decoration: none;
}
.fh .fh-menu-tel:hover { color: #F4EEE2; }

/* ---- header CTA (native divi/button) ----
   Divi's .et_pb_button base rules are highly specific and carry a pseudo-element
   arrow, so these are forced. Divi also strips the source's <span data-arrow>,
   so the arrow is re-created as ::after with the identical 7px hover travel. */
.fh-header .et_pb_button_module_wrapper { margin: 0 !important; padding: 0 !important; }
.fh a.et_pb_button.fh-header-cta,
.fh a.et_pb_button.fh-header-cta:hover {
  display: inline-flex !important; align-items: center !important; gap: 10px !important;
  background: var(--fh-accent) !important; background-image: none !important;
  color: #08192C !important;
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif !important;
  font-size: 13.5px !important; font-weight: 700 !important;
  letter-spacing: .09em !important; text-transform: uppercase !important;
  padding: 14px 22px !important;
  border: 0 !important; border-radius: 0 !important; text-decoration: none !important;
  line-height: normal !important;
  transition: background .4s, transform .4s !important;
}
.fh a.et_pb_button.fh-header-cta:hover { background: #E2B664 !important; transform: translateY(-2px); }
.fh a.et_pb_button.fh-header-cta:before { content: none !important; display: none !important; }

/* Disabling Divi's button icon makes it emit, at (1,2,2) with !important:
     body #page-container .et_pb_section .et_pb_button_N:after{display:none!important}
     body #page-container .et_pb_section .et_pb_button_N:hover{padding-left/right:1em!important}
   An ID is required to outrank that, and the hover padding must be pinned back
   to the source's 14px 22px. */
body #page-container .fh a.et_pb_button.fh-header-cta:after {
  content: "\2192" !important; display: inline-block !important; position: static !important;
  top: auto !important; right: auto !important; bottom: auto !important; left: auto !important;
  align-self: center !important; vertical-align: middle !important;
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif !important;
  font-size: 13.5px !important; line-height: 1 !important;
  margin: 0 !important; padding: 0 !important; opacity: 1 !important; width: auto !important;
  transition: transform .45s var(--fh-ease) !important;
}
body #page-container .fh a.et_pb_button.fh-header-cta:hover:after { transform: translateX(7px); }
body #page-container .fh a.et_pb_button.fh-header-cta,
body #page-container .fh a.et_pb_button.fh-header-cta:hover {
  padding: 14px 22px !important;
}

/* ==========================================================================
   FOOTER — Global (Divi Theme Builder)
   Source: Site Footer.dc.html, values verbatim.
   ========================================================================== */
.fh.fh-footer {
  background: #0A2038;
  color: #C3D0DE;
  border-top: 1px solid rgba(226, 182, 100, .18);
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif;
  padding: 0 !important;
}
.fh-footer .et_pb_row.fh-footer-grid {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(50px, 6vw, 80px) clamp(16px, 2.2vw, 34px) 34px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));
  gap: clamp(28px, 4vw, 50px);
  align-items: start;
}
.fh-footer .fh-footer-grid > .et_pb_column,
.fh-footer .fh-footer-bottom > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh-footer .et_pb_module { margin: 0 !important; }

/* the footer logo links home, like the header's; the link box wraps the mark
   exactly so the hit area is the logo and the 20px gap below is unchanged */
.fh .fh-footer-logolink {
  display: block; width: fit-content; line-height: 0; text-decoration: none;
}
.fh .fh-footer-logo { width: 158px; height: auto; display: block; margin-bottom: 20px; }
.fh .fh-footer-blurb {
  font-size: 14px; line-height: 1.8; color: #A3B6CA;
  max-width: 30ch; margin: 0 0 20px;
}
.fh .fh-footer-rating {
  display: flex; align-items: center; gap: 10px;
  font-size: 12px; letter-spacing: .18em; text-transform: uppercase;
  color: var(--fh-accent-soft);
}
.fh .fh-footer-rating .fh-stars { display: inline-flex; gap: 3px; font-size: 13px; }

.fh .fh-footer-label {
  font-size: 11px; letter-spacing: .3em; text-transform: uppercase;
  color: var(--fh-accent-soft); margin-bottom: 18px;
}
.fh .fh-footer-list {
  display: flex; flex-direction: column; gap: 11px;
  margin: 0; padding: 0; list-style: none;
}
.fh .fh-footer-list a { font-size: 14.5px; color: #C3D0DE; text-decoration: none; }
.fh .fh-footer-list a:hover { color: #C3D0DE; }

.fh .fh-footer-addr { font-size: 14.5px; line-height: 1.7; color: #A3B6CA; }
.fh .fh-footer-addr a { color: #C3D0DE; text-decoration: none; }
.fh .fh-footer-addr a:hover { color: #C3D0DE; }

.fh-footer .et_pb_button_module_wrapper { margin: 0 0 22px 0 !important; padding: 0 !important; }
.fh a.et_pb_button.fh-footer-cta,
.fh a.et_pb_button.fh-footer-cta:hover {
  display: inline-flex !important; align-items: center !important; gap: 10px !important;
  background: var(--fh-accent) !important; background-image: none !important;
  color: #08192C !important;
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif !important;
  font-size: 13px !important; font-weight: 700 !important;
  letter-spacing: .1em !important; text-transform: uppercase !important;
  padding: 15px 22px !important;
  border: 0 !important; border-radius: 0 !important; text-decoration: none !important;
  line-height: normal !important;
  transition: background .4s, transform .4s !important;
}
.fh a.et_pb_button.fh-footer-cta:hover { background: #E2B664 !important; transform: translateY(-2px); }
.fh a.et_pb_button.fh-footer-cta:before { content: none !important; display: none !important; }
body #page-container .fh a.et_pb_button.fh-footer-cta:after {
  content: "\2192" !important; display: inline-block !important; position: static !important;
  top: auto !important; right: auto !important; bottom: auto !important; left: auto !important;
  align-self: center !important; vertical-align: middle !important;
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif !important;
  font-size: 13px !important; line-height: 1 !important;
  margin: 0 !important; padding: 0 !important; opacity: 1 !important; width: auto !important;
  transition: transform .45s var(--fh-ease) !important;
}
body #page-container .fh a.et_pb_button.fh-footer-cta:hover:after { transform: translateX(7px); }
body #page-container .fh a.et_pb_button.fh-footer-cta,
body #page-container .fh a.et_pb_button.fh-footer-cta:hover {
  padding: 15px 22px !important;
}

.fh-footer .et_pb_row.fh-footer-bottom {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: 22px clamp(16px, 2.2vw, 34px) 40px;
  border-top: 1px solid rgba(247, 242, 232, .1);
}
.fh .fh-footer-bottom-inner {
  display: flex; flex-wrap: wrap; gap: 16px;
  justify-content: space-between; align-items: center; width: 100%;
}
.fh .fh-footer-copy { font-size: 12.5px; color: #8397AE; margin: 0; }
.fh .fh-footer-legal { display: flex; flex-wrap: wrap; gap: 24px; }
.fh .fh-footer-legal a { font-size: 12.5px; color: #8397AE; text-decoration: none; }
.fh .fh-footer-legal a:hover { color: #8397AE; }
.fh .fh-footer-legal a.fh-totop { color: var(--fh-accent-soft); }
.fh .fh-footer-legal a.fh-totop:hover { color: var(--fh-accent-soft); }

/* --------------------------------------------------------------------------
   Source media queries (verbatim breakpoints)
   -------------------------------------------------------------------------- */
@media (max-width: 1080px) {
  .fh [data-desknav] { display: none !important; }
  .fh-header .fh-header-inner > .fh-desknav { display: none !important; }
  .fh-header .fh-header-inner > .fh-hcol-burger { display: block !important; margin-left: auto !important; }
  .fh [data-menubtn] { display: flex !important; }
}
@media (max-width: 1150px) {
  .fh [data-procline] { display: none !important; }
}
@media (max-width: 900px) {
  .fh [data-hero-grid], .fh .fh-hero-grid { grid-template-columns: 1fr !important; }
  .fh [data-hero-media], .fh .fh-hero-media {
    height: auto !important;
    align-items: flex-start !important;
    margin-top: 26px;
  }
}
/* The source collapses [data-split] at 760px on the homepage and 860px on the
   About / Contact / Service pages. Divi rows cannot carry data-* attributes, so
   each split row carries the matching class instead. */
@media (max-width: 860px) {
  .fh .fh-split-860 { grid-template-columns: 1fr !important; }
}
@media (max-width: 900px) {
  .fh .fh-legal-split { grid-template-columns: 1fr !important; }
  .fh .fh-toc { position: static !important; }
}
@media (max-width: 760px) {
  .fh [data-split] { grid-template-columns: 1fr !important; }
  .fh .fh-split-760 { grid-template-columns: 1fr !important; }
}
@media (prefers-reduced-motion: reduce) {
  .fh * { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}

/* ==========================================================================
   SHARED ATOMS used across every page
   ========================================================================== */

/* image-slot equivalent: the component defaults to fit="cover", centred, and
   fills its sized wrapper (:host{width:100%;height:100%}). */
.fh .fh-img {
  display: block; width: 100%; height: 100%;
  object-fit: cover; object-position: center;
}
.fh .fh-tile { position: relative; overflow: hidden; }
.fh .fh-zoom { position: absolute; inset: 0; }

/* buttons */
.fh .fh-btn {
  display: inline-flex; align-items: center; gap: 12px;
  background: var(--fh-accent); color: #08192C;
  font-size: 14px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  padding: 19px 30px; border-radius: 0; text-decoration: none;
  transition: background .4s, transform .4s, box-shadow .4s;
}
.fh .fh-btn:hover {
  background: #E2B664; color: #08192C;
  transform: translateY(-2px);
  box-shadow: 0 16px 34px rgba(200, 145, 47, .28);
}
.fh .fh-btn-ghost {
  display: inline-flex; align-items: center; gap: 12px;
  border: 1px solid rgba(247, 242, 232, .32); color: #F7F2E8;
  font-size: 14px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
  padding: 18px 28px; border-radius: 0; text-decoration: none;
  transition: background .4s, border-color .4s;
}
.fh .fh-btn-ghost:hover {
  background: rgba(247, 242, 232, .08);
  border-color: rgba(247, 242, 232, .6);
  color: #F7F2E8;
}
.fh .fh-link {
  display: inline-flex; align-items: center; gap: 10px;
  font-size: 13px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
}
.fh .fh-link.is-gold { color: var(--fh-accent-soft); }
.fh .fh-link.is-gold:hover { color: var(--fh-accent-soft); }
.fh .fh-link.is-brown { color: #8A6A22; }
.fh .fh-link.is-brown:hover { color: #8A6A22; }

/* twinkling stars (hero + problem section) */
.fh .fh-twinkle {
  position: absolute; border-radius: 50%;
  animation: fh-twinkle 5s ease-in-out infinite;
}

/* ==========================================================================
   HOME 01 — Hero
   ========================================================================== */
.fh.fh-hero {
  position: relative; background: #0E2744; color: #F7F2E8; overflow: hidden;
}
.fh .fh-hero-video {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; opacity: 0; transition: opacity 1.6s ease;
}
.fh .fh-hero-scrim-a {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(96deg, rgba(10, 32, 56,.87) 0%, rgba(14, 39, 68,.78) 38%, rgba(14, 39, 68,.52) 66%, rgba(14, 39, 68,.34) 100%);
}
.fh .fh-hero-scrim-b {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(10, 32, 56,.7) 0%, transparent 26%, transparent 62%, rgba(10, 32, 56,.85) 100%);
}
.fh .fh-tw1 { top: 14%; left: 6%;  width: 3px; height: 3px; background: #E2B664; animation-duration: 5s; }
.fh .fh-tw2 { top: 26%; left: 22%; width: 2px; height: 2px; background: #F7F2E8; animation-duration: 7s; animation-delay: .8s; }
.fh .fh-tw3 { top: 62%; left: 9%;  width: 2px; height: 2px; background: #E2B664; animation-duration: 6s; animation-delay: 1.6s; }
.fh .fh-tw4 { top: 78%; left: 30%; width: 3px; height: 3px; background: #F7F2E8; animation-duration: 8s; animation-delay: .3s; }
.fh .fh-tw5 { top: 18%; right: 4%; width: 2px; height: 2px; background: #E2B664; animation-duration: 6.5s; animation-delay: 1.1s; }

/* hero grid row */
.fh-hero .et_pb_row.fh-hero-grid {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(120px, 14vh, 170px) clamp(16px, 2.2vw, 34px) clamp(56px, 7vh, 90px);
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr);
  gap: clamp(28px, 4vw, 64px);
  align-items: center;
  min-height: 100vh;
}
.fh-hero .fh-hero-grid > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}

.fh .fh-hero-eyebrow { margin-bottom: clamp(20px, 3vh, 30px); }
.fh .fh-hero-eyebrow .fh-eyebrow-rule {
  width: clamp(28px, 5vw, 60px);
}
.fh .fh-hero-eyebrow .fh-eyebrow-text {
  font-size: clamp(10px, 1.1vw, 12px);
  letter-spacing: .34em;
  color: var(--fh-accent-soft);
}
.fh .fh-hero-h1 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(42px, 6.4vw, 92px); line-height: .98; letter-spacing: -.022em;
  text-wrap: balance; margin-bottom: clamp(22px, 3vh, 32px); color: #F7F2E8;
}
.fh .fh-hero-h1 em {
  font-style: italic; color: var(--fh-accent-soft); font-weight: 300;
}
.fh .fh-hero-lead {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(19px, 1.9vw, 25px); line-height: 1.5; color: #DCE5EF;
  max-width: 33ch; margin-bottom: 18px; text-wrap: pretty;
}
.fh .fh-hero-body {
  font-size: clamp(14.5px, 1.15vw, 16px); line-height: 1.75; color: #BDCDDE;
  max-width: 46ch; margin-bottom: clamp(28px, 4vh, 40px); text-wrap: pretty;
}
.fh .fh-hero-cta { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.fh .fh-hero-note {
  margin-top: 18px; font-size: 13.5px; color: #A3B6CA; letter-spacing: .01em;
}

/* hero right column */
.fh .fh-hero-media {
  position: relative; height: min(70vh, 600px);
  display: flex; flex-direction: column;
  justify-content: flex-end; align-items: flex-end; gap: 16px;
}
.fh .fh-statcard {
  display: flex; align-items: stretch;
  background: rgba(10, 32, 56, .72);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(226, 182, 100, .26);
}
.fh .fh-statcell { padding: 18px 24px; }
.fh .fh-statcell.has-rule { border-right: 1px solid rgba(226, 182, 100, .22); }
.fh .fh-statlabel {
  font-size: 10px; letter-spacing: .3em; text-transform: uppercase;
  color: var(--fh-accent-soft); margin-bottom: 6px;
}
.fh .fh-statvalue {
  font-family: Newsreader, Georgia, serif; font-size: 30px; line-height: 1; color: #F7F2E8;
}

/* scroll cue */
.fh .fh-scrollcue {
  position: absolute; left: 50%; bottom: 22px; transform: translateX(-50%);
  width: 1px; height: 54px; background: rgba(247, 242, 232, .16); overflow: hidden;
  z-index: 2;
}
.fh .fh-scrollcue span {
  display: block; width: 1px; height: 22px; background: var(--fh-accent-soft);
  animation: fh-scrollcue 2.6s ease-in-out infinite;
}

/* ==========================================================================
   HOME 02 — Trust bar
   ========================================================================== */
.fh.fh-trust {
  background: #0A2038;
  border-top: 1px solid rgba(226, 182, 100, .16);
  border-bottom: 1px solid rgba(226, 182, 100, .16);
}
.fh-trust .et_pb_row.fh-trust-grid {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(24px, 3.4vw, 38px) clamp(16px, 2.2vw, 34px);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
  gap: clamp(18px, 3vw, 34px);
}
.fh-trust .fh-trust-grid > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-trust-cell { display: flex; flex-direction: column; gap: 6px; }
.fh .fh-trust-head {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(20px, 1.9vw, 26px); color: #F7F2E8;
}
.fh .fh-trust-sub { font-size: 13px; letter-spacing: .05em; color: #A3B6CA; }
.fh .fh-trust-row { display: flex; align-items: center; gap: 10px; }
.fh .fh-stars-wrap {
  display: inline-flex; gap: 3px; font-size: 17px; letter-spacing: .08em;
  color: rgba(226, 182, 100, .22);
}
.fh .fh-stars-wrap span { transition: color .5s ease, transform .5s var(--fh-ease); }
.fh .fh-stars-wrap span:nth-child(2) { transition-delay: .1s; }
.fh .fh-stars-wrap span:nth-child(3) { transition-delay: .2s; }
.fh .fh-stars-wrap span:nth-child(4) { transition-delay: .3s; }
.fh .fh-stars-wrap span:nth-child(5) { transition-delay: .4s; }

/* Hosts the absolutely-positioned decorative layers (video, scrims, twinkles,
   scroll cue). Absolute + inset:0 so it (a) contributes ZERO layout height and
   (b) is a containing block exactly matching the section, so each layer's own
   inset:0 resolves to the section box. It precedes the content row in DOM
   order and the content row is position:relative, so content paints on top. */
.fh .et_pb_row.fh-layer-row {
  position: absolute !important;
  top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important;
  height: auto !important; min-height: 0 !important;
  padding: 0 !important; margin: 0 !important;
  max-width: none !important; width: auto !important;
  pointer-events: none;
}
.fh .fh-layer-row > .et_pb_column {
  position: static !important;
  padding: 0 !important; margin: 0 !important;
  width: 100% !important; max-width: none !important;
  height: 100% !important;
}
.fh .fh-layer-row .et_pb_module {
  padding: 0 !important; margin: 0 !important;
  width: 100% !important; max-width: none !important;
}
.fh .fh-layer-row .et_pb_code,
.fh .fh-layer-row .et_pb_code_inner { position: static !important; }

/* ==========================================================================
   HOME 03 — Introduction
   ========================================================================== */
.fh.fh-intro { background: #F7F2E8; position: relative; }
.fh-intro .et_pb_row.fh-intro-split {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(70px, 10vw, 140px) clamp(16px, 2.2vw, 34px);
  display: grid;
  grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr);
  gap: clamp(34px, 5vw, 80px);
  align-items: center;
}
.fh-intro .fh-intro-split > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-intro-figure { position: relative; }
.fh .fh-intro-tile { position: relative; overflow: hidden; height: clamp(320px, 42vw, 540px); }
.fh .fh-quotecard {
  position: absolute;
  right: clamp(-16px, -1.4vw, -8px);
  bottom: clamp(-20px, -2vw, -12px);
  background: #0E2744; color: #F7F2E8;
  padding: 22px 26px; max-width: 260px;
}
.fh .fh-quotecard p {
  font-family: Newsreader, Georgia, serif; font-style: italic;
  font-size: 17px; line-height: 1.45; color: #E7DFCE;
}
.fh .fh-sec-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(30px, 3.6vw, 52px); line-height: 1.08; letter-spacing: -.02em;
  color: #0B2340; margin-bottom: 26px; text-wrap: balance;
}
.fh .fh-sec-h2 em { font-style: italic; color: #8A6A22; }
.fh .fh-sec-body {
  font-size: clamp(15px, 1.2vw, 17px); line-height: 1.8; color: #4A4535;
  max-width: 58ch; margin-bottom: 20px; text-wrap: pretty;
}
.fh .fh-intro-eyebrow { margin-bottom: 26px; }
.fh .fh-intro-stats {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(190px, 100%), 1fr));
  gap: 22px; margin-top: 38px;
  border-top: 1px solid rgba(11, 35, 64, .14); padding-top: 30px;
}
.fh .fh-intro-stat-h {
  font-family: Newsreader, Georgia, serif; font-size: 22px;
  color: #0B2340; margin-bottom: 6px;
}
.fh .fh-intro-stat-p { font-size: 14px; line-height: 1.7; color: #6A6353; }

/* ==========================================================================
   HOME 04 — The problem
   ========================================================================== */
.fh.fh-problem {
  background: #143255; color: #F7F2E8; position: relative; overflow: hidden;
}
.fh .fh-problem-radial {
  position: absolute; inset: 0;
  background: radial-gradient(90% 120% at 85% 10%, rgba(200,145,47,.14), transparent 60%);
}
.fh .fh-tw-p1 { top: 22%; right: 46%; width: 3px; height: 3px; background: #E2B664; animation-duration: 7s; }
.fh .fh-tw-p2 { top: 68%; left: 4%;  width: 2px; height: 2px; background: #F7F2E8; animation-duration: 9s; animation-delay: 1.4s; }

.fh-problem .et_pb_row.fh-problem-split {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(72px, 10vw, 140px) clamp(16px, 2.2vw, 34px) 0;
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr);
  gap: clamp(30px, 4vw, 70px);
  align-items: center;
}
.fh-problem .et_pb_row.fh-problem-cards {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: 0 clamp(16px, 2.2vw, 34px) clamp(72px, 10vw, 140px);
}
.fh-problem .fh-problem-split > .et_pb_column,
.fh-problem .fh-problem-cards > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-problem-eyebrow { margin-bottom: 30px; }
.fh .fh-problem-lead {
  font-family: Newsreader, Georgia, serif; font-weight: 300;
  font-size: clamp(26px, 3.5vw, 52px); line-height: 1.16; letter-spacing: -.018em;
  max-width: 20ch; text-wrap: pretty; margin-bottom: clamp(28px, 3.4vw, 44px);
}
.fh .fh-problem-lead em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-problem-body {
  font-size: clamp(15px, 1.2vw, 17px); line-height: 1.85; color: #C3D0DE;
  max-width: 58ch; text-wrap: pretty;
}
.fh .fh-problem-figure { position: relative; }
.fh .fh-problem-tile { position: relative; overflow: hidden; height: clamp(360px, 40vw, 620px); }
.fh .fh-problem-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(10, 32, 56,.1), rgba(10, 32, 56,.55));
}
.fh .fh-offset-border {
  position: absolute; inset: 0; pointer-events: none;
  border: 1px solid rgba(226, 182, 100, .3);
  transform: translate(16px, 16px);
}
.fh .fh-problem-badge {
  position: absolute; left: 0; bottom: 0; pointer-events: none;
  background: rgba(10, 32, 56, .9); backdrop-filter: blur(6px);
  border-left: 2px solid var(--fh-accent); padding: 16px 22px;
}
.fh .fh-problem-badge-l {
  font-size: 10px; letter-spacing: .28em; text-transform: uppercase;
  color: var(--fh-accent-soft); margin-bottom: 6px;
}
.fh .fh-problem-badge-t {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(19px, 1.7vw, 24px); line-height: 1.2;
}
.fh .fh-problem-cardgrid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
  gap: clamp(20px, 2.4vw, 34px);
  margin-top: clamp(46px, 5vw, 78px);
  border-top: 1px solid rgba(247, 242, 232, .14);
  padding-top: clamp(32px, 3.6vw, 52px);
}
.fh .fh-num {
  font-family: Newsreader, Georgia, serif; font-size: 15px; letter-spacing: .18em;
  color: var(--fh-accent-soft); margin-bottom: 14px;
}
.fh .fh-problem-h3 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(19px, 1.7vw, 24px); margin-bottom: 10px; line-height: 1.25;
}
.fh .fh-problem-p { font-size: 14.5px; line-height: 1.8; color: #BDCDDE; text-wrap: pretty; }
.fh .fh-problem-aside {
  border-left: 1px solid rgba(226, 182, 100, .3);
  padding-left: clamp(20px, 2vw, 30px);
}
.fh .fh-problem-aside p {
  font-family: Newsreader, Georgia, serif; font-style: italic;
  font-size: clamp(17px, 1.6vw, 21px); line-height: 1.5; color: #E7DFCE;
  margin-bottom: 18px;
}

/* ==========================================================================
   HOME 05 — Services
   ========================================================================== */
.fh.fh-services { background: #F7F2E8; }
.fh-services .et_pb_row.fh-services-head {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(70px, 9vw, 130px) clamp(16px, 2.2vw, 34px) 0;
}
.fh-services .et_pb_row.fh-services-grid {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: 0 clamp(16px, 2.2vw, 34px) clamp(40px, 5vw, 70px);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(290px, 100%), 1fr));
  gap: clamp(18px, 2vw, 28px);
  align-items: stretch;
}
.fh-services .fh-services-head > .et_pb_column,
.fh-services .fh-services-grid > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
/* The grid stretches the columns, but `height:100%` on the card resolves
   against whichever ancestor has a height — and Divi puts two auto-height
   wrappers (.et_pb_code and .et_pb_code_inner) between them. Without this
   chain the cards are only the same height when their copy happens to wrap to
   the same number of lines, which is why they matched at some widths and not
   at others. */
.fh-services .fh-services-grid > .et_pb_column,
.fh-services .fh-services-grid > .et_pb_column > .et_pb_module,
.fh-services .fh-services-grid .et_pb_code_inner {
  height: 100%;
}
.fh .fh-sec-head {
  display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between;
  gap: 24px; margin-bottom: clamp(34px, 4.5vw, 60px);
}
.fh .fh-sec-head-eyebrow { margin-bottom: 22px; }
.fh .fh-services-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(30px, 4vw, 56px); line-height: 1.05; letter-spacing: -.022em;
  color: #0B2340; text-wrap: balance;
}
.fh .fh-services-h2 em { font-style: italic; color: #8A6A22; }
.fh .fh-sec-head-note {
  font-size: 15px; line-height: 1.75; color: #6A6353; max-width: 34ch;
}
.fh .fh-card {
  display: flex; flex-direction: column; height: 100%;
  background: #FFFDF8; border: 1px solid rgba(11, 35, 64, .1);
  text-decoration: none; color: inherit;
  transition: transform .6s var(--fh-ease), box-shadow .6s, border-color .6s;
}
.fh .fh-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 26px 60px rgba(11, 35, 64, .14);
  border-color: rgba(200, 145, 47, .5);
  color: inherit;
}
/* Taller than the source's flat 230px, and fluid so the frame keeps a sensible
   proportion against a card that runs from ~310px to ~545px wide. The photo
   still fills it with object-fit: cover (.fh-img), so nothing letterboxes. */
.fh .fh-card-media {
  position: relative; overflow: hidden;
  height: clamp(260px, 21vw, 320px);
}
.fh .fh-card-num {
  position: absolute; top: 16px; left: 18px;
  font-family: Newsreader, Georgia, serif; font-size: 15px; letter-spacing: .16em;
  color: #F7F2E8; text-shadow: 0 2px 12px rgba(10, 32, 56, .7);
  z-index: 1;
}
.fh .fh-card-body {
  padding: clamp(22px, 2.4vw, 32px);
  display: flex; flex-direction: column; flex: 1;
}
.fh .fh-card-h3 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(21px, 1.9vw, 26px); line-height: 1.2;
  color: #0B2340; margin-bottom: 14px;
}
.fh .fh-card-p {
  font-size: 14.5px; line-height: 1.75; color: #6A6353;
  margin-bottom: 24px; text-wrap: pretty;
}
.fh .fh-card-more {
  margin-top: auto; display: inline-flex; align-items: center; gap: 10px;
  font-size: 12.5px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: #8A6A22;
}

/* ==========================================================================
   HOME 06 — Gallery rail  (rail is FULL BLEED, outside the 1760 shell)
   ========================================================================== */
.fh.fh-gallery { background: var(--fh-cream-3); padding-bottom: clamp(70px, 9vw, 130px) !important; }
.fh-gallery .et_pb_row.fh-gallery-head {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(30px, 4vw, 50px) clamp(16px, 2.2vw, 34px) 0;
}
.fh-gallery .et_pb_row.fh-rail-row,
.fh-gallery .et_pb_row.fh-railbar-row {
  max-width: none !important; width: 100% !important;
  margin: 0 !important; padding: 0 !important;
}
.fh-gallery .et_pb_row > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-gallery-headflex {
  display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between;
  gap: 20px; margin-bottom: 30px;
}
.fh .fh-gallery-eyebrow { margin-bottom: 20px; }
.fh .fh-gallery-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(28px, 3.4vw, 46px); line-height: 1.06; letter-spacing: -.02em;
  color: #0B2340;
}
.fh .fh-railnav { display: flex; gap: 10px; }
.fh .fh-railbtn {
  width: 52px; height: 52px;
  border: 1px solid rgba(11, 35, 64, .22); color: #0B2340;
  display: flex; align-items: center; justify-content: center;
  transition: background .4s, color .4s, border-color .4s;
}
.fh .fh-railbtn:hover { background: #143255; color: #F7F2E8; border-color: #143255; }
.fh .fh-rail {
  display: flex; gap: clamp(12px, 1.4vw, 20px);
  overflow-x: auto; scroll-snap-type: x mandatory;
  padding: 8px clamp(16px, 2.2vw, 34px) 26px; cursor: grab;
}
.fh .fh-rail figure {
  flex: 0 0 clamp(260px, 30vw, 420px); scroll-snap-align: start; margin: 0;
  position: relative; overflow: hidden; height: clamp(300px, 34vw, 470px);
}
.fh .fh-rail figcaption {
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: 46px 20px 18px;
  background: linear-gradient(180deg, transparent, rgba(10, 32, 56, .86));
  color: #F7F2E8; font-size: 13px; letter-spacing: .12em; text-transform: uppercase;
  pointer-events: none;
}
.fh .fh-railbar-shell {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: 0 clamp(16px, 2.2vw, 34px);
}
.fh .fh-railtrack {
  height: 2px; background: rgba(11, 35, 64, .12);
  position: relative; overflow: hidden;
}
.fh .fh-railbar {
  position: absolute; left: 0; top: 0; bottom: 0; width: 22%;
  background: var(--fh-accent); transition: transform .2s linear;
}
/* The source's "Drag or scroll to explore" caption was removed on request; the
   scrollbar track above it is the only affordance now. */

/* ==========================================================================
   HOME 07 — Process
   ========================================================================== */
.fh.fh-process { background: #0E2744; color: #F7F2E8; position: relative; overflow: hidden; }
.fh .fh-process-radial {
  position: absolute; inset: 0;
  background: radial-gradient(80% 100% at 20% 0%, rgba(200,145,47,.12), transparent 55%);
}
.fh-process .et_pb_row.fh-process-row {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(70px, 9vw, 130px) clamp(16px, 2.2vw, 34px);
}
.fh-process .fh-process-row > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-process-head { max-width: 620px; margin-bottom: clamp(44px, 6vw, 80px); }
.fh .fh-process-eyebrow { margin-bottom: 22px; }
.fh .fh-process-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(30px, 4vw, 56px); line-height: 1.05; letter-spacing: -.022em;
  text-wrap: balance;
}
.fh .fh-process-h2 em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-steps-wrap { position: relative; }
/* The line starts behind the centre of the first step's disc (the discs are
   52px and step 1 sits flush with the container's left edge), so it emerges at
   01's right edge exactly as it does at 02, 03 and 04. The source's `left: 6%`
   started it ~30px clear of 01, leaving that one step visibly detached. */
.fh .fh-procline {
  position: absolute; left: 26px; right: 6%; top: 26px; height: 1px;
  background: rgba(247, 242, 232, .16);
}
.fh .fh-procfill {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, var(--fh-accent), var(--fh-accent-soft));
  transform: scaleX(0); transform-origin: left;
  transition: transform 2.2s var(--fh-ease);
}
.fh .fh-steps {
  position: relative; display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr));
  gap: clamp(26px, 3vw, 44px);
}
.fh .fh-step-circle {
  display: flex; align-items: center; justify-content: center;
  width: 52px; height: 52px; border-radius: 50%;
  border: 1px solid rgba(226, 182, 100, .45); background: #0E2744;
  font-family: Newsreader, Georgia, serif; font-size: 19px;
  color: var(--fh-accent-soft); margin-bottom: 24px;
}
.fh .fh-step-h3 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(21px, 2vw, 27px); margin-bottom: 12px;
}
.fh .fh-step-p { font-size: 14.5px; line-height: 1.8; color: #BDCDDE; text-wrap: pretty; }
.fh .fh-process-cta { margin-top: clamp(44px, 5vw, 70px); }
.fh .fh-btn.is-r2, .fh .fh-btn-ghost.is-r2 { border-radius: 2px; }

/* ==========================================================================
   HOME 08 — Image break (parallax)
   ========================================================================== */
.fh.fh-break {
  position: relative; height: clamp(340px, 46vw, 620px);
  overflow: hidden; background: #0E2744;
}
.fh .fh-break-parallax { position: absolute; top: -8%; left: 0; right: 0; height: 116%; }
.fh .fh-break-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(10, 32, 56,.62) 0%, rgba(10, 32, 56,.28) 45%, rgba(10, 32, 56,.82) 100%);
}
.fh .fh-break-content {
  position: absolute; inset: 0; display: flex; align-items: flex-end; pointer-events: none;
}
.fh .fh-break-shell {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: 0 clamp(16px, 2.2vw, 34px) clamp(36px, 5vw, 66px);
}
.fh .fh-break-quote {
  font-family: Newsreader, Georgia, serif; font-weight: 300; font-style: italic;
  font-size: clamp(22px, 3vw, 44px); line-height: 1.25; color: #F7F2E8;
  max-width: 22ch; text-shadow: 0 4px 30px rgba(3, 12, 24, .6);
}

/* ==========================================================================
   HOME 09 — Rob's story
   ========================================================================== */
.fh.fh-story { background: #EFE7D8; }
.fh-story .et_pb_row.fh-story-split {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(70px, 9vw, 130px) clamp(16px, 2.2vw, 34px);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(34px, 5vw, 80px);
  align-items: center;
}
.fh-story .fh-story-split > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-story-eyebrow { margin-bottom: 24px; }
.fh .fh-story-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(30px, 3.8vw, 54px); line-height: 1.05; letter-spacing: -.022em;
  color: #0B2340; margin-bottom: 26px; text-wrap: balance;
}
.fh .fh-story-h2 em { font-style: italic; color: #8A6A22; }
.fh .fh-story-p {
  font-size: clamp(15px, 1.2vw, 17px); line-height: 1.85; color: #4A4535;
  max-width: 56ch; margin-bottom: 20px; text-wrap: pretty;
}
.fh .fh-story-p.is-last { margin-bottom: 30px; }
.fh .fh-story-link {
  border-bottom: 1px solid rgba(138, 106, 34, .4); padding-bottom: 6px;
}
.fh .fh-story-figure { position: relative; }
.fh .fh-story-offset {
  position: absolute; inset: 0; pointer-events: none;
  border: 1px solid rgba(11, 35, 64, .18);
  transform: translate(-16px, -16px);
}
.fh .fh-story-tile { position: relative; overflow: hidden; height: clamp(340px, 44vw, 560px); }

/* ==========================================================================
   HOME 10 — Service area
   ========================================================================== */
.fh.fh-area { background: #F7F2E8; }
.fh-area .et_pb_row.fh-area-split {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(70px, 9vw, 120px) clamp(16px, 2.2vw, 34px);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, .92fr);
  gap: clamp(34px, 5vw, 80px);
  align-items: center;
}
.fh-area .fh-area-split > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-area-eyebrow { margin-bottom: 24px; }
.fh .fh-area-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(28px, 3.4vw, 48px); line-height: 1.06; letter-spacing: -.02em;
  color: #0B2340; margin-bottom: 24px;
}
.fh .fh-area-h2 em { font-style: italic; color: #8A6A22; }
.fh .fh-area-p {
  font-size: clamp(15px, 1.2vw, 17px); line-height: 1.85; color: #4A4535;
  max-width: 52ch; margin-bottom: 28px; text-wrap: pretty;
}
.fh .fh-area-info {
  display: flex; flex-wrap: wrap; gap: 28px;
  border-top: 1px solid rgba(11, 35, 64, .14); padding-top: 26px;
}
.fh .fh-area-label {
  font-size: 11px; letter-spacing: .26em; text-transform: uppercase;
  color: #6F6142; margin-bottom: 8px;
}
.fh .fh-area-value { font-size: 15px; line-height: 1.6; color: #0B2340; }
.fh .fh-area-tel { font-size: 15px; color: #0B2340; display: block; margin-bottom: 4px; }
.fh .fh-area-mail { font-size: 15px; color: #8A6A22; }
.fh .fh-map {
  position: relative; background: #0E2744; overflow: hidden;
  aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center;
}
.fh .fh-map-radial {
  position: absolute; inset: 0;
  background: radial-gradient(60% 60% at 50% 50%, rgba(200,145,47,.16), transparent 70%);
}
.fh .fh-ring {
  position: absolute; width: 62%; height: 62%;
  border: 1px solid rgba(226, 182, 100, .45); border-radius: 50%;
  animation: fh-ring 6s ease-out infinite;
}
.fh .fh-ring.r2 { animation-delay: 2s; }
.fh .fh-ring.r3 { animation-delay: 4s; }
.fh .fh-map-center { position: relative; text-align: center; color: #F7F2E8; }
.fh .fh-map-center img {
  height: clamp(70px, 9vw, 110px); width: auto;
  margin: 0 auto 18px; display: block; opacity: .95;
}
.fh .fh-map-city {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(20px, 2.2vw, 28px); margin-bottom: 6px;
}
.fh .fh-map-state {
  font-size: 12px; letter-spacing: .3em; text-transform: uppercase;
  color: var(--fh-accent-soft);
}

/* ==========================================================================
   HOME 11 — FAQ
   ========================================================================== */
.fh.fh-faq { background: #FFFDF8; border-top: 1px solid rgba(11, 35, 64, .08); }
.fh-faq .et_pb_row.fh-faq-split {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(70px, 9vw, 130px) clamp(16px, 2.2vw, 34px);
  display: grid;
  grid-template-columns: minmax(0, .68fr) minmax(0, 1.32fr);
  gap: clamp(30px, 4vw, 70px);
  align-items: start;
}
.fh-faq .fh-faq-split > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-faq-aside { position: sticky; top: 120px; }
.fh .fh-faq-eyebrow { margin-bottom: 22px; }
.fh .fh-faq-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(28px, 3.4vw, 46px); line-height: 1.06; letter-spacing: -.02em;
  color: #0B2340; margin-bottom: 20px;
}
.fh .fh-faq-note { font-size: 15px; line-height: 1.8; color: #6A6353; max-width: 34ch; }
.fh .fh-faq-list { display: flex; flex-direction: column; }
.fh .fh-faq-item { border-top: 1px solid rgba(11, 35, 64, .14); }
.fh .fh-faq-item.is-last { border-bottom: 1px solid rgba(11, 35, 64, .14); }
.fh .fh-faq-btn {
  width: 100%; display: flex; align-items: center; justify-content: space-between;
  gap: 24px; padding: 26px 0; text-align: left;
}
.fh .fh-faq-q {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(18px, 1.7vw, 23px); line-height: 1.35; color: #0B2340;
}
.fh .fh-plus {
  position: relative; flex: 0 0 auto; width: 18px; height: 18px;
  transition: transform .5s var(--fh-ease);
}
.fh .fh-plus i {
  position: absolute; display: block; background: #8A6A22; font-style: normal;
}
.fh .fh-plus i.h { top: 50%; left: 0; width: 18px; height: 1.5px; }
.fh .fh-plus i.v { left: 50%; top: 0; width: 1.5px; height: 18px; transition: opacity .4s; }
.fh .fh-faq-a {
  padding: 0 0 26px; max-width: 62ch;
  font-size: 15px; line-height: 1.85; color: #5A5445;
}

/* ==========================================================================
   HOME 12 — Final CTA
   ========================================================================== */
.fh.fh-cta { position: relative; background: #0E2744; color: #F7F2E8; overflow: hidden; }
.fh .fh-cta-bg { position: absolute; inset: 0; opacity: .3; }
.fh .fh-cta-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(100deg, #0E2744 30%, rgba(14, 39, 68,.74) 62%, rgba(14, 39, 68,.6) 100%);
}
.fh-cta .et_pb_row.fh-cta-split {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(70px, 9vw, 130px) clamp(16px, 2.2vw, 34px);
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
  gap: clamp(34px, 5vw, 70px);
  align-items: center;
}
.fh-cta .fh-cta-split > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-cta-eyebrow { margin-bottom: 24px; }
.fh .fh-cta-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(32px, 4.4vw, 62px); line-height: 1.03; letter-spacing: -.024em;
  margin-bottom: 24px; text-wrap: balance;
}
.fh .fh-cta-h2 em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-cta-p {
  font-size: clamp(16px, 1.3vw, 19px); line-height: 1.7; color: #C3D0DE;
  max-width: 40ch; margin-bottom: 30px;
}
.fh .fh-cta-tel {
  display: inline-flex; align-items: baseline; gap: 14px;
  font-family: Newsreader, Georgia, serif; font-size: clamp(26px, 2.8vw, 38px);
  color: #F7F2E8; border-bottom: 1px solid rgba(226, 182, 100, .4); padding-bottom: 8px;
}
.fh .fh-cta-tel:hover { color: #F7F2E8; }
.fh .fh-cta-tel span {
  font-family: Karla, sans-serif; font-size: 12px; letter-spacing: .24em;
  text-transform: uppercase; color: var(--fh-accent-soft);
}
.fh .fh-quoteform {
  background: rgba(247, 242, 232, .06); backdrop-filter: blur(10px);
  border: 1px solid rgba(247, 242, 232, .16);
  padding: clamp(24px, 3vw, 40px);
  display: flex; flex-direction: column; gap: 16px;
}
.fh .fh-quoteform-title {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(21px, 2vw, 26px); margin-bottom: 4px;
}
.fh .fh-quoteform input,
.fh .fh-quoteform select,
.fh .fh-quoteform textarea {
  background: rgba(10, 32, 56, .4);
  border: 1px solid rgba(247, 242, 232, .2);
  color: #F7F2E8; padding: 15px 16px; font-size: 15px;
  outline: none; transition: border-color .3s;
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif;
}
.fh .fh-quoteform textarea { resize: vertical; }
.fh .fh-quoteform input:focus,
.fh .fh-quoteform select:focus,
.fh .fh-quoteform textarea:focus { border-color: #C8912F; }
.fh .fh-quoteform input::placeholder,
.fh .fh-quoteform textarea::placeholder { color: #A3B6CA; opacity: 1; }
.fh .fh-quoteform button[type="submit"] {
  display: inline-flex; align-items: center; justify-content: center; gap: 12px;
  background: var(--fh-accent); color: #08192C;
  font-size: 14px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  padding: 18px 26px; border: 0; cursor: pointer;
  transition: background .4s, transform .4s;
}
.fh .fh-quoteform button[type="submit"]:hover {
  background: #E2B664; transform: translateY(-2px);
}
.fh .fh-formnote { font-size: 12.5px; line-height: 1.6; color: #A3B6CA; }

/* Native divi/image used as a full-bleed tile layer.
   .et_pb_image inserts .et_pb_image_wrap between the module and the <img>,
   so that wrapper needs height:100% for an absolutely-sized frame to work. */
.fh .et_pb_image.fh-zoom { position: absolute; inset: 0; margin: 0 !important; line-height: 0; }
.fh .et_pb_image.fh-zoom .et_pb_image_wrap { display: block; width: 100%; height: 100%; }
.fh .et_pb_image.fh-zoom .et_pb_image_wrap img {
  width: 100%; height: 100%; object-fit: cover; object-position: center; display: block;
}

/* --------------------------------------------------------------------------
   Native divi/image used as a photo tile.
   The module div IS the source's [data-tile] frame (position:relative,
   overflow:hidden, fixed height); the <img> inside carries the [data-zoom]
   1.2s hover scale. .et_pb_image_wrap sits between them and needs height:100%.
   -------------------------------------------------------------------------- */
.fh .et_pb_image.fh-tile {
  display: block; margin: 0 !important; line-height: 0;
  position: relative; overflow: hidden; width: 100%;
}
.fh .et_pb_image.fh-tile .et_pb_image_wrap { display: block; width: 100%; height: 100%; }
.fh .et_pb_image.fh-tile .et_pb_image_wrap img {
  width: 100%; height: 100%; object-fit: cover; object-position: center;
  display: block; transition: transform 1.2s var(--fh-ease);
}
.fh .et_pb_image.fh-tile:hover .et_pb_image_wrap img { transform: scale(1.05); }

/* parallax band + CTA background plate */
.fh .et_pb_image.fh-break-parallax {
  position: absolute; top: -8%; left: 0; right: 0; height: 116%;
  margin: 0 !important; line-height: 0; width: 100%;
}
.fh .et_pb_image.fh-cta-bg {
  position: absolute; inset: 0; opacity: .3;
  margin: 0 !important; line-height: 0; width: 100%;
}
.fh .et_pb_image.fh-break-parallax .et_pb_image_wrap,
.fh .et_pb_image.fh-cta-bg .et_pb_image_wrap { display: block; width: 100%; height: 100%; }
.fh .et_pb_image.fh-break-parallax .et_pb_image_wrap img,
.fh .et_pb_image.fh-cta-bg .et_pb_image_wrap img {
  width: 100%; height: 100%; object-fit: cover; object-position: center; display: block;
}

/* columns that act as positioned figures */
.fh .et_pb_column.fh-intro-figure,
.fh .et_pb_column.fh-problem-figure,
.fh .et_pb_column.fh-story-figure { position: relative; }


/* ==========================================================================
   ABOUT
   ========================================================================== */
.fh.fh-ab-hero { position: relative; background: #0E2744; color: #F7F2E8; overflow: hidden; }
.fh .et_pb_image.fh-ab-hero-bg {
  position: absolute; top: -6%; left: 0; right: 0; height: 112%; opacity: .42;
  margin: 0 !important; line-height: 0; width: 100%;
}
.fh .et_pb_image.fh-ab-hero-bg .et_pb_image_wrap { display: block; width: 100%; height: 100%; }
.fh .et_pb_image.fh-ab-hero-bg .et_pb_image_wrap img {
  width: 100%; height: 100%; object-fit: cover; object-position: center; display: block;
}
.fh .fh-ab-hero-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(105deg, rgba(10, 32, 56,.88) 12%, rgba(14, 39, 68,.74) 52%, rgba(14, 39, 68,.5) 100%);
}
.fh .fh-tw-ab1 { top: 30%; right: 12%; width: 3px; height: 3px; background: #E2B664; animation-duration: 6s; }
.fh-ab-hero .et_pb_row.fh-ab-hero-row {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(140px, 16vh, 200px) clamp(16px, 2.2vw, 34px) clamp(60px, 8vw, 110px);
}
.fh .fh-crumbs {
  display: flex; align-items: center; gap: 12px;
  font-size: 11px; letter-spacing: .28em; text-transform: uppercase;
  color: #A3B6CA; margin-bottom: 30px;
}
.fh .fh-crumbs a { color: #A3B6CA; }
.fh .fh-crumbs a:hover { color: #A3B6CA; }
.fh .fh-crumbs .is-current { color: var(--fh-accent-soft); }
.fh .fh-ab-h1 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(38px, 5.6vw, 84px); line-height: 1.02; letter-spacing: -.022em;
  max-width: 16ch; margin-bottom: 30px; text-wrap: balance;
}
.fh .fh-ab-h1 em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-ab-lead {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(18px, 1.7vw, 24px); line-height: 1.6; color: #DCE5EF;
  max-width: 58ch; text-wrap: pretty;
}

/* ---- how it started ---- */
.fh.fh-ab-started { background: #F7F2E8; }
.fh-ab-started .et_pb_row.fh-ab-started-split {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(70px, 9vw, 130px) clamp(16px, 2.2vw, 34px);
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
  gap: clamp(34px, 5vw, 80px); align-items: center;
}
.fh-ab-started .fh-ab-started-split > .et_pb_column,
.fh-ab-who .et_pb_row > .et_pb_column,
.fh-ab-approach .fh-ab-approach-split > .et_pb_column,
.fh-ab-bring .fh-ab-bring-row > .et_pb_column,
.fh-ab-expect .fh-ab-expect-row > .et_pb_column,
.fh-ab-cta .fh-ab-cta-row > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-ab-eyebrow { margin-bottom: 24px; }
.fh .fh-ab-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(30px, 3.8vw, 54px); line-height: 1.05; letter-spacing: -.02em;
  color: #0B2340; margin-bottom: 28px; text-wrap: balance;
}
.fh .fh-ab-h2 em { font-style: italic; color: #8A6A22; }
.fh .fh-ab-p {
  font-size: clamp(15px, 1.2vw, 17px); line-height: 1.85; color: #4A4535;
  max-width: 58ch; margin-bottom: 20px; text-wrap: pretty;
}
.fh .fh-ab-p.is-last { margin-bottom: 0; }
.fh .fh-ab-year {
  display: flex; align-items: baseline; gap: 18px; margin-top: 38px;
  border-top: 1px solid rgba(11, 35, 64, .14); padding-top: 30px;
}
.fh .fh-ab-year-n {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(52px, 6vw, 86px); line-height: 1; color: #0B2340;
}
.fh .fh-ab-year-t {
  font-size: 13px; line-height: 1.6; letter-spacing: .04em;
  color: #6F6142; max-width: 22ch;
}
.fh .et_pb_column.fh-ab-rob-figure { position: relative; }
.fh .fh-ab-rob-offset {
  position: absolute; inset: 0; pointer-events: none;
  border: 1px solid rgba(11, 35, 64, .2); transform: translate(-16px, -16px);
}
.fh .et_pb_image.fh-ab-rob-tile { height: clamp(340px, 42vw, 560px); }
.fh .fh-ab-namecard {
  position: absolute; right: 0; bottom: -18px;
  background: #0E2744; color: #F7F2E8; padding: 16px 22px;
}
.fh .fh-ab-namecard-l {
  font-size: 10px; letter-spacing: .28em; text-transform: uppercase;
  color: var(--fh-accent-soft); margin-bottom: 5px;
}
.fh .fh-ab-namecard-n { font-family: Newsreader, Georgia, serif; font-size: 22px; line-height: 1; }

/* ---- who we build for ---- */
.fh.fh-ab-who { background: #EFE7D8; }
.fh-ab-who .et_pb_row.fh-ab-who-head {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(66px, 8vw, 120px) clamp(16px, 2.2vw, 34px) 0;
}
.fh-ab-who .et_pb_row.fh-ab-who-grid {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: 0 clamp(16px, 2.2vw, 34px) clamp(66px, 8vw, 120px);
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
  gap: clamp(18px, 2vw, 28px); align-items: stretch;
}
.fh .fh-ab-who-headflex {
  display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between;
  gap: 26px; margin-bottom: clamp(34px, 4vw, 58px);
}
.fh .fh-ab-who-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(28px, 3.5vw, 50px); line-height: 1.06; letter-spacing: -.02em;
  color: #0B2340; max-width: 16ch; text-wrap: balance;
}
.fh .fh-ab-who-note { font-size: 15px; line-height: 1.8; color: #5A5445; max-width: 44ch; }
.fh .fh-ab-card {
  background: #FFFDF8; border: 1px solid rgba(11, 35, 64, .1);
  padding: clamp(24px, 2.6vw, 38px); height: 100%;
}
.fh .fh-ab-card-n {
  font-family: Newsreader, Georgia, serif; font-size: 15px; letter-spacing: .18em;
  color: #8A6A22; margin-bottom: 18px;
}
.fh .fh-ab-card-h3 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(20px, 1.8vw, 26px); color: #0B2340;
  margin-bottom: 12px; line-height: 1.25;
}
.fh .fh-ab-card-p { font-size: 14.5px; line-height: 1.8; color: #6A6353; }

/* ---- how we approach ---- */
.fh.fh-ab-approach { background: #143255; color: #F7F2E8; position: relative; overflow: hidden; }
.fh .fh-ab-approach-radial {
  position: absolute; inset: 0;
  background: radial-gradient(80% 110% at 88% 12%, rgba(200,145,47,.14), transparent 60%);
}
.fh-ab-approach .et_pb_row.fh-ab-approach-split {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(70px, 9vw, 130px) clamp(16px, 2.2vw, 34px);
  display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr);
  gap: clamp(34px, 4.5vw, 74px); align-items: center;
}
.fh .fh-ab-approach-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 300;
  font-size: clamp(30px, 4.2vw, 60px); line-height: 1.08; letter-spacing: -.022em;
  margin-bottom: 30px; text-wrap: balance;
}
.fh .fh-ab-approach-h2 em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-ab-approach-p {
  font-size: clamp(15px, 1.2vw, 17px); line-height: 1.85; color: #C3D0DE;
  max-width: 60ch; margin-bottom: 20px; text-wrap: pretty;
}
.fh .fh-ab-approach-p.is-last { margin-bottom: 0; }
.fh .et_pb_image.fh-ab-approach-tile { height: clamp(320px, 38vw, 520px); }

/* ---- what we bring ---- */
.fh.fh-ab-bring { background: #F7F2E8; }
.fh-ab-bring .et_pb_row.fh-ab-bring-row {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(70px, 9vw, 130px) clamp(16px, 2.2vw, 34px);
}
.fh .fh-ab-bring-split {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(28px, 4vw, 70px); align-items: start;
  margin-bottom: clamp(38px, 4.5vw, 62px);
}
.fh .fh-ab-bring-lead {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(20px, 2.2vw, 30px); line-height: 1.4; color: #0B2340; text-wrap: pretty;
}
.fh .fh-ab-bring-body {
  font-size: clamp(15px, 1.2vw, 17px); line-height: 1.85; color: #4A4535; text-wrap: pretty;
}
.fh .fh-ab-bring-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
  gap: clamp(18px, 2vw, 28px);
  border-top: 1px solid rgba(11, 35, 64, .14);
  padding-top: clamp(30px, 3.4vw, 46px);
}
.fh .fh-ab-bring-h {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(22px, 2vw, 28px); color: #0B2340; margin-bottom: 8px;
}
.fh .fh-ab-bring-p { font-size: 14px; line-height: 1.75; color: #6A6353; }

/* ---- what to expect ---- */
.fh.fh-ab-expect { background: #0E2744; color: #F7F2E8; position: relative; overflow: hidden; }
.fh .fh-ab-expect-radial {
  position: absolute; inset: 0;
  background: radial-gradient(80% 100% at 18% 0%, rgba(200,145,47,.12), transparent 55%);
}
.fh-ab-expect .et_pb_row.fh-ab-expect-row {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(70px, 9vw, 130px) clamp(16px, 2.2vw, 34px);
}
.fh .fh-ab-expect-head { max-width: 640px; margin-bottom: clamp(40px, 5vw, 72px); }
.fh .fh-ab-expect-eyebrow { margin-bottom: 22px; }
.fh .fh-ab-expect-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(28px, 3.6vw, 52px); line-height: 1.06; letter-spacing: -.02em;
  text-wrap: balance;
}
.fh .fh-ab-expect-h2 em { font-style: italic; color: var(--fh-accent-soft); }
/* Same fix as .fh-procline on the homepage: start the line behind the centre
   of the first step's disc so it meets 01's edge exactly as it meets 02-04,
   rather than beginning ~17px clear of it. Used by About and all three
   service pages. */
.fh .fh-ab-procline {
  position: absolute; left: 26px; right: 5%; top: 26px; height: 1px;
  background: rgba(247, 242, 232, .16);
}
.fh .fh-ab-steps {
  position: relative; display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(250px, 100%), 1fr));
  gap: clamp(26px, 3vw, 44px);
}

/* ---- about CTA ---- */
.fh.fh-ab-cta { position: relative; background: #0A2038; color: #F7F2E8; overflow: hidden; }
.fh .et_pb_image.fh-ab-cta-bg {
  position: absolute; inset: 0; opacity: .28;
  margin: 0 !important; line-height: 0; width: 100%;
}
.fh .et_pb_image.fh-ab-cta-bg .et_pb_image_wrap { display: block; width: 100%; height: 100%; }
.fh .et_pb_image.fh-ab-cta-bg .et_pb_image_wrap img {
  width: 100%; height: 100%; object-fit: cover; object-position: center; display: block;
}
.fh .fh-ab-cta-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(100deg, #0A2038 34%, rgba(10, 32, 56,.72) 100%);
}
.fh-ab-cta .et_pb_row.fh-ab-cta-row {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(64px, 8vw, 120px) clamp(16px, 2.2vw, 34px);
}
.fh .fh-ab-cta-flex {
  display: flex; flex-wrap: wrap; align-items: flex-end;
  justify-content: space-between; gap: 34px;
}
.fh .fh-ab-cta-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(30px, 4vw, 56px); line-height: 1.05; letter-spacing: -.022em;
  max-width: 18ch; text-wrap: balance;
}
.fh .fh-ab-cta-h2 em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-ab-cta-btns { display: flex; flex-wrap: wrap; gap: 14px; }


/* ==========================================================================
   CONTACT
   ========================================================================== */
.fh.fh-ct-hero { position: relative; background: #0E2744; color: #F7F2E8; overflow: hidden; }
.fh .et_pb_image.fh-ct-hero-bg {
  position: absolute; top: -6%; left: 0; right: 0; height: 112%; opacity: .38;
  margin: 0 !important; line-height: 0; width: 100%;
}
.fh .fh-ct-hero-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(102deg, rgba(10, 32, 56,.88) 14%, rgba(14, 39, 68,.8) 56%, rgba(14, 39, 68,.5) 100%);
}
.fh .fh-tw-ct1 { top: 34%; right: 16%; width: 3px; height: 3px; background: #E2B664; animation-duration: 6s; }
.fh-ct-hero .et_pb_row.fh-ct-hero-split {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(130px, 15vh, 190px) clamp(16px, 2.2vw, 34px) clamp(56px, 7vw, 100px);
  display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
  gap: clamp(32px, 4vw, 70px); align-items: end;
}
.fh-ct-hero .fh-ct-hero-split > .et_pb_column,
.fh-ct-quote .fh-ct-quote-split > .et_pb_column,
.fh-ct-reasons .et_pb_row > .et_pb_column,
.fh-ct-after .fh-ct-after-split > .et_pb_column,
.fh-ct-faq .fh-ct-faq-split > .et_pb_column,
.fh-ct-cta .fh-ct-cta-row > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-ct-h1 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(38px, 5.4vw, 80px); line-height: 1.02; letter-spacing: -.022em;
  max-width: 14ch; margin-bottom: 28px; text-wrap: balance;
}
.fh .fh-ct-h1 em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-ct-lead {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(18px, 1.6vw, 23px); line-height: 1.6; color: #DCE5EF;
  max-width: 52ch; text-wrap: pretty;
}
.fh .fh-ct-actions { display: flex; flex-direction: column; gap: 14px; }
.fh .fh-ct-action {
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  padding: 22px 26px; text-decoration: none;
}
.fh .fh-ct-action.is-call {
  background: var(--fh-accent); color: #08192C;
  transition: background .4s, transform .4s;
}
.fh .fh-ct-action.is-call:hover { background: #E2B664; color: #08192C; transform: translateY(-2px); }
.fh .fh-ct-action.is-mail {
  border: 1px solid rgba(247, 242, 232, .3); color: #F7F2E8;
  background: rgba(10, 32, 56, .5);
  transition: background .4s, border-color .4s;
}
.fh .fh-ct-action.is-mail:hover {
  background: rgba(10, 32, 56, .8); border-color: rgba(226, 182, 100, .6); color: #F7F2E8;
}
.fh .fh-ct-action-l {
  display: block; font-size: 10px; letter-spacing: .28em; text-transform: uppercase;
  font-weight: 700; margin-bottom: 6px;
}
.fh .fh-ct-action.is-mail .fh-ct-action-l { color: var(--fh-accent-soft); }
.fh .fh-ct-action-v {
  display: block; font-family: Newsreader, Georgia, serif;
  font-size: clamp(24px, 2.4vw, 32px); line-height: 1;
}
.fh .fh-ct-action.is-mail .fh-ct-action-v {
  font-size: clamp(17px, 1.6vw, 22px); line-height: 1.2; word-break: break-word;
}
.fh .fh-ct-action [data-arrow] { font-size: 20px; }

/* ---- quote form ---- */
.fh.fh-ct-quote { background: #F7F2E8; }
.fh-ct-quote .et_pb_row.fh-ct-quote-split {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(66px, 8vw, 120px) clamp(16px, 2.2vw, 34px);
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(32px, 4.5vw, 74px); align-items: start;
}
.fh .fh-ct-quote-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(28px, 3.4vw, 48px); line-height: 1.06; letter-spacing: -.02em;
  color: #0B2340; margin-bottom: 22px;
}
.fh .fh-ct-quote-h2 em { font-style: italic; color: #8A6A22; }
.fh .fh-ct-quote-p {
  font-size: clamp(15px, 1.2vw, 17px); line-height: 1.85; color: #4A4535;
  max-width: 50ch; margin-bottom: 30px; text-wrap: pretty;
}
.fh .fh-ct-map {
  position: relative; background: #0E2744; overflow: hidden;
  aspect-ratio: 16 / 10; display: flex; align-items: center; justify-content: center;
  margin-bottom: 28px;
}
.fh .fh-ct-map-radial {
  position: absolute; inset: 0;
  background: radial-gradient(60% 70% at 50% 50%, rgba(200,145,47,.16), transparent 70%);
}
.fh .fh-ct-ring {
  position: absolute; width: 44%; aspect-ratio: 1;
  border: 1px solid rgba(226, 182, 100, .45); border-radius: 50%;
  animation: fh-ring 6s ease-out infinite;
}
.fh .fh-ct-ring.r2 { animation-delay: 2s; }
.fh .fh-ct-ring.r3 { animation-delay: 4s; }
.fh .fh-ct-map-center { position: relative; text-align: center; color: #F7F2E8; }
.fh .fh-ct-map-center img {
  height: clamp(56px, 7vw, 84px); width: auto;
  margin: 0 auto 14px; display: block; opacity: .95;
}
.fh .fh-ct-map-city { font-family: Newsreader, Georgia, serif; font-size: clamp(19px, 2vw, 26px); }
.fh .fh-ct-map-state {
  font-size: 11px; letter-spacing: .3em; text-transform: uppercase;
  color: var(--fh-accent-soft); margin-top: 5px;
}
.fh .fh-ct-info {
  display: flex; flex-wrap: wrap; gap: 30px;
  border-top: 1px solid rgba(11, 35, 64, .14); padding-top: 26px;
}
.fh .fh-ct-info-l {
  font-size: 11px; letter-spacing: .26em; text-transform: uppercase;
  color: #6F6142; margin-bottom: 8px;
}
.fh .fh-ct-info-v { font-size: 15px; line-height: 1.6; color: #0B2340; }
.fh .fh-ct-info-tel { font-size: 15px; color: #0B2340; display: block; margin-bottom: 4px; }
.fh .fh-ct-info-mail { font-size: 15px; color: #8A6A22; }

.fh .fh-ct-form {
  background: #0E2744; color: #F7F2E8;
  padding: clamp(26px, 3vw, 44px);
  display: flex; flex-direction: column; gap: 16px;
}
.fh .fh-ct-form-title {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(24px, 2.4vw, 32px); line-height: 1.15; margin-bottom: 4px;
}
.fh .fh-ct-form-note { font-size: 14px; line-height: 1.7; color: #BDCDDE; margin-bottom: 8px; }
.fh .fh-ct-form input,
.fh .fh-ct-form select,
.fh .fh-ct-form textarea {
  background: rgba(10, 32, 56, .6);
  border: 1px solid rgba(247, 242, 232, .2);
  color: #F7F2E8; padding: 15px 16px; font-size: 15px;
  outline: none; transition: border-color .3s;
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif;
}
.fh .fh-ct-form textarea { resize: vertical; }
.fh .fh-ct-form input:focus, .fh .fh-ct-form select:focus, .fh .fh-ct-form textarea:focus { border-color: #C8912F; }
.fh .fh-ct-form input::placeholder, .fh .fh-ct-form textarea::placeholder { color: #A3B6CA; opacity: 1; }
.fh .fh-ct-form button[type="submit"] {
  display: inline-flex; align-items: center; justify-content: center; gap: 12px;
  background: var(--fh-accent); color: #08192C;
  font-size: 14px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  padding: 18px 26px; border: 0; cursor: pointer;
  transition: background .4s, transform .4s;
}
.fh .fh-ct-form button[type="submit"]:hover { background: #E2B664; transform: translateY(-2px); }
.fh .fh-ct-formnote { font-size: 12.5px; line-height: 1.6; color: #A3B6CA; }

/* ---- reasons to reach out ---- */
.fh.fh-ct-reasons { background: #FFFDF8; }
.fh-ct-reasons .et_pb_row.fh-ct-reasons-row {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(66px, 8vw, 120px) clamp(16px, 2.2vw, 34px);
}
.fh .fh-ct-reasons-eyebrow { margin-bottom: 26px; }
.fh .fh-ct-reasons-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(28px, 3.6vw, 52px); line-height: 1.06; letter-spacing: -.02em;
  color: #0B2340; max-width: 20ch; margin-bottom: clamp(36px, 4vw, 58px); text-wrap: balance;
}
.fh .fh-ct-reasons-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
  gap: 0; border-top: 1px solid rgba(11, 35, 64, .14);
}
.fh .fh-ct-reason {
  border-bottom: 1px solid rgba(11, 35, 64, .14);
  padding: clamp(24px, 2.4vw, 34px) clamp(20px, 2vw, 30px);
}
/* the source zeroes the outer gutter on the first and last column of each row */
.fh .fh-ct-reason:nth-child(3n+1) { padding-left: 0; }
.fh .fh-ct-reason:nth-child(3n+3) { padding-right: 0; }
.fh .fh-ct-reason.is-cta { display: flex; align-items: center; }
.fh .fh-ct-reason-n {
  font-family: Newsreader, Georgia, serif; font-size: 14px; letter-spacing: .18em;
  color: #8A6A22; margin-bottom: 14px;
}
.fh .fh-ct-reason-p {
  font-size: clamp(16px, 1.35vw, 19px); line-height: 1.6; color: #0B2340; text-wrap: pretty;
}

/* ---- after you reach out ---- */
.fh.fh-ct-after { background: #143255; color: #F7F2E8; position: relative; overflow: hidden; }
.fh .fh-ct-after-radial {
  position: absolute; inset: 0;
  background: radial-gradient(80% 110% at 85% 10%, rgba(200,145,47,.14), transparent 60%);
}
.fh-ct-after .et_pb_row.fh-ct-after-split {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(66px, 8vw, 120px) clamp(16px, 2.2vw, 34px);
  display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
  gap: clamp(32px, 4.5vw, 74px); align-items: center;
}
.fh .fh-ct-after-eyebrow { margin-bottom: 26px; }
.fh .fh-ct-after-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 300;
  font-size: clamp(28px, 3.8vw, 54px); line-height: 1.1; letter-spacing: -.02em;
  margin-bottom: 26px; max-width: 18ch; text-wrap: balance;
}
.fh .fh-ct-after-h2 em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-ct-after-p {
  font-size: clamp(15px, 1.2vw, 17px); line-height: 1.85; color: #C3D0DE;
  max-width: 58ch; text-wrap: pretty;
}
.fh .et_pb_image.fh-ct-after-tile { height: clamp(280px, 32vw, 440px); }

/* ---- contact FAQ ---- */
.fh.fh-ct-faq { background: #FFFDF8; border-top: 1px solid rgba(11, 35, 64, .08); }
.fh-ct-faq .et_pb_row.fh-ct-faq-split {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(66px, 8vw, 120px) clamp(16px, 2.2vw, 34px);
  display: grid; grid-template-columns: minmax(0, .6fr) minmax(0, 1.4fr);
  gap: clamp(30px, 4vw, 70px); align-items: start;
}
.fh .fh-ct-faq-aside { position: sticky; top: 120px; }
.fh .fh-ct-faq-eyebrow { margin-bottom: 22px; }
.fh .fh-ct-faq-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(26px, 3.2vw, 44px); line-height: 1.06; letter-spacing: -.02em;
  color: #0B2340;
}
.fh .fh-ct-faq-btn { padding: 24px 0; }
.fh .fh-ct-faq-a { padding: 0 0 24px; }

/* ---- contact CTA ---- */
.fh.fh-ct-cta { position: relative; background: #0A2038; color: #F7F2E8; overflow: hidden; }
.fh .et_pb_image.fh-ct-cta-bg {
  position: absolute; top: -8%; left: 0; right: 0; height: 116%; opacity: .32;
  margin: 0 !important; line-height: 0; width: 100%;
}
.fh .et_pb_image.fh-ct-hero-bg .et_pb_image_wrap,
.fh .et_pb_image.fh-ct-cta-bg .et_pb_image_wrap { display: block; width: 100%; height: 100%; }
.fh .et_pb_image.fh-ct-hero-bg .et_pb_image_wrap img,
.fh .et_pb_image.fh-ct-cta-bg .et_pb_image_wrap img {
  width: 100%; height: 100%; object-fit: cover; object-position: center; display: block;
}
.fh .fh-ct-cta-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(100deg, #0A2038 26%, rgba(10, 32, 56,.86) 58%, rgba(10, 32, 56,.52) 100%);
}
.fh .fh-ct-cta-radial {
  position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(70% 100% at 82% 50%, rgba(200,145,47,.16), transparent 62%);
}
.fh .fh-tw-ctc1 { top: 26%; right: 24%; width: 3px; height: 3px; background: #E2B664; animation-duration: 7s; }
.fh .fh-tw-ctc2 { bottom: 24%; right: 13%; width: 2px; height: 2px; background: #F7F2E8; animation-duration: 9s; animation-delay: 1.6s; }
.fh-ct-cta .et_pb_row.fh-ct-cta-row {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(72px, 8.5vw, 130px) clamp(16px, 2.2vw, 34px);
}
.fh .fh-ct-cta-flex {
  display: flex; flex-wrap: wrap; align-items: flex-end;
  justify-content: space-between; gap: 30px;
}
.fh .fh-ct-cta-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(28px, 3.6vw, 50px); line-height: 1.08; letter-spacing: -.02em;
  max-width: 22ch; text-wrap: balance;
}
.fh .fh-ct-cta-h2 em { font-style: italic; color: var(--fh-accent-soft); }


/* ==========================================================================
   SERVICE TEMPLATE (Installation / Backyard / Custom Design)
   ========================================================================== */
.fh.fh-sv-hero { position: relative; background: #0E2744; color: #F7F2E8; overflow: hidden; }
.fh .et_pb_image.fh-sv-hero-bg {
  position: absolute; top: -6%; left: 0; right: 0; height: 112%; opacity: .4;
  margin: 0 !important; line-height: 0; width: 100%;
}
.fh .et_pb_image.fh-sv-hero-bg .et_pb_image_wrap,
.fh .et_pb_image.fh-sv-cta-bg .et_pb_image_wrap { display: block; width: 100%; height: 100%; }
.fh .et_pb_image.fh-sv-hero-bg .et_pb_image_wrap img,
.fh .et_pb_image.fh-sv-cta-bg .et_pb_image_wrap img {
  width: 100%; height: 100%; object-fit: cover; object-position: center; display: block;
}
.fh .fh-sv-hero-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(102deg, rgba(10, 32, 56,.88) 12%, rgba(14, 39, 68,.74) 54%, rgba(14, 39, 68,.5) 100%);
}
.fh .fh-tw-sv1 { top: 28%; right: 14%; width: 3px; height: 3px; background: #E2B664; animation-duration: 6s; }
.fh-sv-hero .et_pb_row.fh-sv-hero-row {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(135px, 15vh, 195px) clamp(16px, 2.2vw, 34px) clamp(56px, 7vw, 105px);
}
.fh .fh-sv-crumbs { flex-wrap: wrap; }
.fh .fh-sv-h1 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(34px, 4.8vw, 74px); line-height: 1.04; letter-spacing: -.022em;
  max-width: 20ch; margin-bottom: 28px; text-wrap: balance;
}
.fh .fh-sv-h1 em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-sv-lead {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(18px, 1.6vw, 23px); line-height: 1.6; color: #DCE5EF;
  max-width: 56ch; margin-bottom: 34px; text-wrap: pretty;
}
.fh .fh-sv-herocta { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.fh .fh-sv-telline { font-size: 14.5px; color: #DCE5EF; letter-spacing: .02em; }
.fh .fh-sv-telline:hover { color: #DCE5EF; }

/* ---- what it is ---- */
.fh.fh-sv-what { background: #F7F2E8; }
.fh-sv-what .et_pb_row.fh-sv-what-split {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(66px, 8vw, 124px) clamp(16px, 2.2vw, 34px);
  display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
  gap: clamp(32px, 4.5vw, 74px); align-items: center;
}
.fh-sv-what .fh-sv-what-split > .et_pb_column,
.fh-sv-signs .et_pb_row > .et_pb_column,
.fh-sv-helps .et_pb_row > .et_pb_column,
.fh-sv-other .et_pb_row > .et_pb_column,
.fh-sv-expect .et_pb_row > .et_pb_column,
.fh-sv-why .fh-sv-why-split > .et_pb_column,
.fh-sv-faq .fh-sv-faq-split > .et_pb_column,
.fh-sv-cta .fh-sv-cta-row > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-sv-eyebrow { margin-bottom: 24px; }
.fh .fh-sv-eyebrow-26 { margin-bottom: 26px; }
.fh .fh-sv-what-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(28px, 3.6vw, 52px); line-height: 1.06; letter-spacing: -.02em;
  color: #0B2340; margin-bottom: 26px; max-width: 18ch; text-wrap: balance;
}
.fh .fh-sv-what-p {
  font-size: clamp(15px, 1.2vw, 17px); line-height: 1.85; color: #4A4535;
  max-width: 60ch; margin-bottom: 20px; text-wrap: pretty;
}
.fh .fh-sv-what-p.is-last { margin-bottom: 0; }
.fh .et_pb_column.fh-sv-what-figure { position: relative; }
.fh .et_pb_image.fh-sv-what-tile { height: clamp(320px, 38vw, 540px); }
.fh .fh-sv-offset {
  position: absolute; inset: 0; pointer-events: none;
  border: 1px solid rgba(11, 35, 64, .2); transform: translate(16px, 16px);
}

/* ---- signs you need this ---- */
.fh.fh-sv-signs { background: #143255; color: #F7F2E8; position: relative; overflow: hidden; }
.fh .fh-sv-signs-radial {
  position: absolute; inset: 0;
  background: radial-gradient(80% 110% at 88% 8%, rgba(200,145,47,.13), transparent 60%);
}
.fh-sv-signs .et_pb_row.fh-sv-signs-row,
.fh-sv-helps .et_pb_row.fh-sv-helps-row,
.fh-sv-expect .et_pb_row.fh-sv-expect-row {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(66px, 8vw, 124px) clamp(16px, 2.2vw, 34px);
}
.fh .fh-sv-signs-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 300;
  font-size: clamp(28px, 3.8vw, 54px); line-height: 1.08; letter-spacing: -.02em;
  max-width: 18ch; margin-bottom: clamp(38px, 4.4vw, 62px); text-wrap: balance;
}
.fh .fh-sv-signs-h2 em { font-style: italic; color: var(--fh-accent-soft); }
/* The source gives these six cells a three-column edge pattern - 1st flush
   left, 3rd flush right, repeating - but lays them out with
   `auto-fit, minmax(280px, 1fr)`, which yields four columns at 1440 and six on
   a wide screen. The pattern then lands on the wrong cells: item 3 loses its
   right padding while item 4 loses its left, so the two blurbs run together
   with no gutter at all. The column count is pinned to the three the pattern
   describes (6 items = 2 even rows), and the flush rules follow it as the grid
   steps down. */
.fh .fh-sv-signs-grid {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0; border-top: 1px solid rgba(247, 242, 232, .16);
}
.fh .fh-sv-sign {
  border-bottom: 1px solid rgba(247, 242, 232, .16);
  padding: clamp(22px, 2.2vw, 32px) clamp(20px, 2vw, 30px);
  min-width: 0;
}
.fh .fh-sv-sign:nth-child(3n+1) { padding-left: 0; }
.fh .fh-sv-sign:nth-child(3n+3) { padding-right: 0; }

@media (max-width: 1000px) {
  .fh .fh-sv-signs-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fh .fh-sv-signs-grid > .fh-sv-sign {
    padding-left: clamp(20px, 2vw, 30px); padding-right: clamp(20px, 2vw, 30px);
  }
  .fh .fh-sv-signs-grid > .fh-sv-sign:nth-child(2n+1) { padding-left: 0; }
  .fh .fh-sv-signs-grid > .fh-sv-sign:nth-child(2n) { padding-right: 0; }
}
@media (max-width: 640px) {
  .fh .fh-sv-signs-grid { grid-template-columns: minmax(0, 1fr); }
  .fh .fh-sv-signs-grid > .fh-sv-sign:nth-child(n) { padding-left: 0; padding-right: 0; }
}
.fh .fh-sv-sign.is-cta { display: flex; align-items: center; }
.fh .fh-sv-sign-n {
  font-family: Newsreader, Georgia, serif; font-size: 14px; letter-spacing: .18em;
  color: var(--fh-accent-soft); margin-bottom: 14px;
}
.fh .fh-sv-sign-p {
  font-size: clamp(15.5px, 1.3vw, 18px); line-height: 1.65; color: #DCE5EF; text-wrap: pretty;
}

/* ---- what it helps with ---- */
.fh.fh-sv-helps { background: #EFE7D8; position: relative; overflow: hidden; }
.fh .fh-sv-helps-hair {
  position: absolute; top: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(200,145,47,.5), transparent);
}
.fh .fh-sv-helps-head {
  display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
  gap: clamp(28px, 4vw, 70px); align-items: end;
  margin-bottom: clamp(36px, 4.2vw, 62px);
}
.fh .fh-sv-helps-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(30px, 4vw, 58px); line-height: 1.03; letter-spacing: -.022em;
  color: #0B2340; max-width: 20ch; text-wrap: balance;
}
.fh .fh-sv-helps-aside {
  border-left: 1px solid rgba(11, 35, 64, .18);
  padding-left: clamp(20px, 2vw, 30px);
}
.fh .fh-sv-helps-aside p {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(17px, 1.6vw, 22px); line-height: 1.55; color: #3E3A2C;
  margin-bottom: 16px; text-wrap: pretty;
}
.fh .fh-sv-helps-aside .fh-link { font-size: 12.5px; }
.fh .fh-capgrid {
  display: grid; grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: clamp(14px, 1.6vw, 24px);
}
.fh .fh-cap {
  grid-column: span 2; display: flex; flex-direction: column;
  background: #FFFDF8; border: 1px solid rgba(11, 35, 64, .1); overflow: hidden;
  text-decoration: none; color: inherit;
  transition: transform .6s var(--fh-ease), box-shadow .6s, border-color .6s;
}
.fh .fh-cap.is-wide { grid-column: span 3; }
.fh .fh-cap:hover {
  transform: translateY(-8px);
  box-shadow: 0 28px 64px rgba(11, 35, 64, .16);
  border-color: rgba(200, 145, 47, .5);
}
.fh .fh-cap-media { position: relative; overflow: hidden; height: clamp(180px, 15vw, 220px); }
.fh .fh-cap.is-wide .fh-cap-media { height: clamp(230px, 20vw, 300px); }
.fh .fh-cap-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(10, 32, 56,.42) 0%, transparent 42%);
}
.fh .fh-cap-num {
  position: absolute; top: 0; left: 0;
  display: flex; align-items: center; justify-content: center;
  width: 52px; height: 52px; background: #0E2744;
  font-family: Newsreader, Georgia, serif; font-size: 17px;
  color: var(--fh-accent-soft); letter-spacing: .06em; z-index: 1;
}
.fh .fh-cap-body {
  padding: clamp(22px, 2.2vw, 32px); display: flex; flex-direction: column; flex: 1;
}
.fh .fh-cap-h3 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(19px, 1.6vw, 23px); color: #0B2340;
  margin-bottom: 12px; line-height: 1.24; text-wrap: balance;
}
.fh .fh-cap.is-wide .fh-cap-h3 { font-size: clamp(21px, 1.9vw, 27px); }
.fh .fh-cap-p { font-size: 14.5px; line-height: 1.8; color: #6A6353; text-wrap: pretty; }
.fh .fh-cap.is-wide .fh-cap-p { font-size: 15px; }

.fh .fh-sv-widegrid {
  display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, .7fr);
  gap: clamp(20px, 2.4vw, 34px); margin-top: clamp(18px, 2vw, 26px);
}
.fh .fh-sv-wide { position: relative; overflow: hidden; height: clamp(260px, 28vw, 400px); }
.fh .fh-sv-wide-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, transparent 40%, rgba(10, 32, 56,.82));
}
.fh .fh-sv-wide-cap {
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: clamp(22px, 2.4vw, 34px); pointer-events: none;
}
.fh .fh-sv-wide-l {
  font-size: 10px; letter-spacing: .3em; text-transform: uppercase;
  color: var(--fh-accent-soft); margin-bottom: 8px;
}
.fh .fh-sv-wide-q {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(19px, 2vw, 28px); line-height: 1.3; color: #F7F2E8;
  max-width: 30ch; text-wrap: pretty;
}
.fh .fh-sv-stat {
  background: #0E2744; color: #F7F2E8; padding: clamp(24px, 2.6vw, 38px);
  display: flex; flex-direction: column; justify-content: center;
}
.fh .fh-sv-stat-l {
  font-size: 10px; letter-spacing: .3em; text-transform: uppercase;
  color: var(--fh-accent-soft); margin-bottom: 14px;
}
.fh .fh-sv-stat-v {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(34px, 3.6vw, 52px); line-height: 1; margin-bottom: 14px;
}
.fh .fh-sv-stat-p { font-size: 14.5px; line-height: 1.8; color: #BDCDDE; text-wrap: pretty; }

/* ---- other services ---- */
.fh.fh-sv-other { background: #F7F2E8; }
.fh-sv-other .et_pb_row.fh-sv-other-row {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(50px, 6vw, 90px) clamp(16px, 2.2vw, 34px);
}
.fh .fh-sv-other-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr));
  gap: clamp(16px, 2vw, 26px);
}
.fh .fh-sv-othercard {
  display: block; border: 1px solid rgba(11, 35, 64, .14);
  padding: clamp(24px, 2.6vw, 36px); background: #FFFDF8;
  text-decoration: none; color: inherit;
  transition: transform .6s var(--fh-ease), border-color .6s, box-shadow .6s;
}
.fh .fh-sv-othercard:hover {
  transform: translateY(-6px); border-color: rgba(200, 145, 47, .5);
  box-shadow: 0 22px 50px rgba(11, 35, 64, .12); color: inherit;
}
.fh .fh-sv-othercard-l {
  font-size: 11px; letter-spacing: .28em; text-transform: uppercase;
  color: #6F6142; margin-bottom: 14px;
}
.fh .fh-sv-othercard-h3 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(20px, 1.9vw, 26px); color: #0B2340;
  margin-bottom: 12px; line-height: 1.25;
}
.fh .fh-sv-othercard-p {
  font-size: 14.5px; line-height: 1.75; color: #6A6353; margin-bottom: 18px;
}
.fh .fh-sv-othercard-cta {
  display: inline-flex; align-items: center; gap: 10px;
  font-size: 12.5px; font-weight: 700; letter-spacing: .12em;
  text-transform: uppercase; color: #8A6A22;
}

/* ---- what to expect ---- */
.fh.fh-sv-expect { background: #0E2744; color: #F7F2E8; position: relative; overflow: hidden; }
.fh .fh-sv-expect-radial {
  position: absolute; inset: 0;
  background: radial-gradient(80% 100% at 18% 0%, rgba(200,145,47,.12), transparent 55%);
}
.fh .fh-sv-expect-head { max-width: 640px; margin-bottom: clamp(40px, 5vw, 72px); }
.fh .fh-sv-expect-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(28px, 3.6vw, 52px); line-height: 1.06; letter-spacing: -.02em;
  text-wrap: balance;
}
.fh .fh-sv-expect-h2 em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-sv-step-h3 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(20px, 1.9vw, 26px); margin-bottom: 12px;
}

/* ---- why falconhurst ---- */
.fh.fh-sv-why { background: #F7F2E8; }
.fh-sv-why .et_pb_row.fh-sv-why-split {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(66px, 8vw, 124px) clamp(16px, 2.2vw, 34px);
  display: grid; grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr);
  gap: clamp(32px, 4.5vw, 74px); align-items: center;
}
.fh .et_pb_image.fh-sv-why-tile { height: clamp(320px, 38vw, 520px); }
.fh .fh-sv-why-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(28px, 3.4vw, 48px); line-height: 1.07; letter-spacing: -.02em;
  color: #0B2340; margin-bottom: 24px; max-width: 20ch; text-wrap: balance;
}
.fh .fh-sv-why-h2 em { font-style: italic; color: #8A6A22; }
.fh .fh-sv-why-p {
  font-size: clamp(15px, 1.2vw, 17px); line-height: 1.85; color: #4A4535;
  max-width: 56ch; margin-bottom: 20px; text-wrap: pretty;
}
.fh .fh-sv-why-p.is-last { margin-bottom: 28px; }

/* ---- service FAQ ---- */
.fh.fh-sv-faq { background: #FFFDF8; border-top: 1px solid rgba(11, 35, 64, .08); }
.fh-sv-faq .et_pb_row.fh-sv-faq-split {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(66px, 8vw, 124px) clamp(16px, 2.2vw, 34px);
  display: grid; grid-template-columns: minmax(0, .62fr) minmax(0, 1.38fr);
  gap: clamp(30px, 4vw, 70px); align-items: start;
}
.fh .fh-sv-faq-aside { position: sticky; top: 120px; }
.fh .fh-sv-faq-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(26px, 3.2vw, 44px); line-height: 1.06; letter-spacing: -.02em;
  color: #0B2340; margin-bottom: 18px;
}
.fh .fh-sv-faq-note { font-size: 15px; line-height: 1.8; color: #6A6353; max-width: 32ch; }

/* ---- service CTA ---- */
.fh.fh-sv-cta { position: relative; background: #0A2038; color: #F7F2E8; overflow: hidden; }
.fh .et_pb_image.fh-sv-cta-bg {
  position: absolute; inset: 0; opacity: .3;
  margin: 0 !important; line-height: 0; width: 100%;
}
.fh .fh-sv-cta-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(100deg, #0A2038 32%, rgba(10, 32, 56,.7) 100%);
}
.fh-sv-cta .et_pb_row.fh-sv-cta-row {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(62px, 8vw, 120px) clamp(16px, 2.2vw, 34px);
}
.fh .fh-sv-cta-flex {
  display: flex; flex-wrap: wrap; align-items: flex-end;
  justify-content: space-between; gap: 32px;
}
.fh .fh-sv-cta-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(30px, 4vw, 56px); line-height: 1.05; letter-spacing: -.022em;
  max-width: 20ch; margin-bottom: 16px; text-wrap: balance;
}
.fh .fh-sv-cta-h2 em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-sv-cta-p { font-size: 15.5px; color: #BDCDDE; }

/* ---- service responsive (source breakpoints) ---- */
@media (max-width: 1240px) {
  .fh .fh-capgrid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
  .fh .fh-capgrid > .fh-cap { grid-column: span 2 !important; }
}
@media (max-width: 700px) {
  .fh .fh-capgrid { grid-template-columns: 1fr !important; }
  .fh .fh-capgrid > .fh-cap { grid-column: span 1 !important; }
}
@media (max-width: 860px) {
  .fh .fh-sv-helps-head,
  .fh .fh-sv-widegrid { grid-template-columns: 1fr !important; }
}


/* ==========================================================================
   LEGAL (Privacy Policy / Terms of Service)
   ========================================================================== */
.fh.fh-lg-hero { background: #0E2744; color: #F7F2E8; }
.fh-lg-hero .et_pb_row.fh-lg-hero-row {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(125px, 14vh, 175px) clamp(16px, 2.2vw, 34px) clamp(44px, 5vw, 72px);
}
.fh .fh-lg-crumbs { margin-bottom: 26px; }
.fh .fh-lg-h1 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(36px, 5vw, 72px); line-height: 1.03; letter-spacing: -.022em;
  margin-bottom: 18px;
}
.fh .fh-lg-eff { font-size: 14px; letter-spacing: .06em; color: #BDCDDE; }

.fh.fh-lg-body { background: #F7F2E8; }
.fh-lg-body .et_pb_row.fh-legal-split {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(50px, 6vw, 90px) clamp(16px, 2.2vw, 34px) clamp(70px, 9vw, 130px);
  display: grid; grid-template-columns: minmax(0, .34fr) minmax(0, 1fr);
  gap: clamp(30px, 4vw, 80px); align-items: start;
}
.fh-lg-body .fh-legal-split > .et_pb_column {
  width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; float: none !important;
}
.fh .fh-toc { position: sticky; top: 120px; }
.fh .fh-toc-label {
  font-size: 11px; letter-spacing: .3em; text-transform: uppercase;
  color: #6F6142; margin-bottom: 18px;
}
.fh .fh-toc ul {
  display: flex; flex-direction: column; gap: 10px;
  border-left: 1px solid rgba(11, 35, 64, .16); padding-left: 18px;
}
.fh .fh-toc a { font-size: 14px; color: #4A4535; }
.fh .fh-toc a:hover { color: #4A4535; }

.fh .fh-legal-article { max-width: 78ch; }
/* The phone and email links in the legal copy were inheriting Divi's
   default link blue (#2EA3F2) — off-brand and only 2.46:1 on the cream.
   They now use the same gold as the other inline links on cream. */
.fh .fh-legal-article a { color: #8A6A22; }
.fh .fh-legal-article a:hover { color: #6F551B; text-decoration: underline; }
.fh .fh-legal-lead {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(18px, 1.7vw, 23px); line-height: 1.65; color: #0B2340;
  text-wrap: pretty;
}
.fh .fh-legal-p { font-size: 16px; line-height: 1.85; color: #4A4535; }
.fh .fh-legal-p.is-emph { color: #0B2340; font-weight: 600; }
.fh .fh-legal-p strong { color: #0B2340; }
.fh .fh-legal-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(23px, 2.2vw, 31px); color: #0B2340;
}
.fh .fh-legal-ul { display: flex; flex-direction: column; gap: 10px; }
.fh .fh-legal-ul li {
  font-size: 16px; line-height: 1.8; color: #4A4535;
  padding-left: 20px; border-left: 2px solid rgba(200, 145, 47, .4);
}
.fh .fh-legal-xlink {
  border-top: 1px solid rgba(11, 35, 64, .14); padding-top: 30px;
}

/* per-block spacing utilities — emitted from the source's computed values */
.fh .fh-mb0  { margin-bottom: 0; }
.fh .fh-mb14 { margin-bottom: 14px; }
.fh .fh-mb16 { margin-bottom: 16px; }
.fh .fh-mb20 { margin-bottom: 20px; }
.fh .fh-mb40 { margin-bottom: 40px; }
.fh .fh-mb46 { margin-bottom: 46px; }
.fh .fh-pt8  { padding-top: 8px; }

/* the effective-date line is a native divi/text module */
.fh .fh-lg-eff-mod { margin: 0 !important; }
.fh .fh-lg-eff-mod .et_pb_text_inner p {
  font-size: 14px; letter-spacing: .06em; color: #BDCDDE;
  margin: 0; padding: 0; line-height: normal;
}

/* footer email (added on request; not in the source design) — matches the
   sibling tel link, and wraps rather than overflowing the narrowest column */
.fh .fh-footer-addr a.fh-footer-mail {
  color: #C3D0DE;
  overflow-wrap: anywhere;
  display: inline-block;
}
.fh .fh-footer-addr a.fh-footer-mail:hover { color: var(--fh-accent-soft); }

/* Honeypot — the only element added to the source markup. It must never be
   seen or focusable; display:none is avoided because some bots skip those. */
.fh .fh-hp {
  position: absolute !important;
  left: -9999px !important;
  top: auto !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  border: 0 !important;
  opacity: 0 !important;
  pointer-events: none !important;
}


/* ==========================================================================
   QUOTE FORM — labels, select, validation
   ========================================================================== */

/* Each label+control pair is one flex item, so the form's own gap:16px keeps
   applying BETWEEN fields exactly as before; the label sits inside the pair. */
.fh .fh-field {
  display: flex;
  flex-direction: column;
  width: 100%;
}
.fh .fh-label {
  font-size: 11px;
  letter-spacing: .26em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--fh-accent-soft);
  margin-bottom: 8px;
  line-height: 1.4;
}
.fh .fh-label .fh-opt {
  letter-spacing: .12em;
  font-weight: 400;
  text-transform: none;
  color: #A3B6CA;
}

/* select: identical box to the inputs, with a caret drawn in the accent so the
   native OS arrow (dark on dark) is not relied on */
.fh .fh-quoteform select,
.fh .fh-ct-form select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  border-radius: 0;
  cursor: pointer;
  padding-right: 44px;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='%23D7B069' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 16px center;
  background-size: 12px 8px;
}
/* the dropdown list itself is OS-rendered; these keep it legible on Windows */
.fh .fh-quoteform select option,
.fh .fh-ct-form select option {
  background: #0E2744;
  color: #F7F2E8;
}
/* placeholder option reads like the input placeholders */
.fh .fh-quoteform select.is-placeholder,
.fh .fh-ct-form select.is-placeholder { color: #A3B6CA; }

/* inline validation message — empty by default so it occupies no space */
.fh .fh-err {
  font-size: 12.5px;
  line-height: 1.5;
  color: #E2B664;
  margin-top: 6px;
}
.fh .fh-err:empty { display: none; }

.fh .fh-quoteform [aria-invalid="true"],
.fh .fh-ct-form [aria-invalid="true"] {
  border-color: rgba(226, 182, 100, .75);
}

/* select min-content fix */
.fh .fh-field { min-width: 0; max-width: 100%; }
.fh .fh-quoteform select,
.fh .fh-ct-form select {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  text-overflow: ellipsis;
}
.fh .fh-quoteform input,
.fh .fh-quoteform textarea,
.fh .fh-ct-form input,
.fh .fh-ct-form textarea {
  width: 100%;
  max-width: 100%;
  min-width: 0;
}


/* ==========================================================================
   FLUENT FORMS — quote forms
   The panel chrome lives on .fh-formpanel (the Divi code module wrapper); the
   fieldset FF renders becomes the flex column that used to be the form itself.
   ========================================================================== */

/* ---- panel chrome (was .fh-quoteform / .fh-ct-form) ---- */
.fh .fh-formpanel.is-home {
  background: rgba(247, 242, 232, .06);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(247, 242, 232, .16);
  padding: clamp(24px, 3vw, 40px);
}
.fh .fh-formpanel.is-contact {
  background: #0E2744;
  color: #F7F2E8;
  padding: clamp(26px, 3vw, 44px);
}

/* FF wrapper + form must add no geometry of their own */
.fh .fh-formpanel .fluentform,
.fh .fh-formpanel .frm-fluent-form { margin: 0; padding: 0; background: none; border: 0; }

/* the fieldset is the flex column the original form was */
.fh .fh-formpanel .frm-fluent-form fieldset {
  display: flex;
  flex-direction: column;
  gap: 16px;
  min-inline-size: 0;
}

/* each field row: label tight above its control, gap handles the rhythm */
.fh .fh-formpanel .ff-el-group {
  display: flex;
  flex-direction: column;
  margin: 0 !important;
  min-width: 0;
  max-width: 100%;
}
.fh .fh-formpanel .ff-el-input--content { min-width: 0; }

/* ---- labels ---- */
.fh .fh-formpanel .ff-el-input--label { margin: 0; padding: 0; line-height: 1.4; }
.fh .fh-formpanel .ff-el-input--label label {
  display: block;
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif;
  font-size: 11px;
  letter-spacing: .26em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--fh-accent-soft);
  margin: 0 0 8px;
  line-height: 1.4;
  padding: 0;
}
/* the original marks optional fields with a real <span> inside the <label>, so
   the word is part of the accessible name; the FF label value carries it too */
.fh .fh-formpanel .ff-el-input--label label .fh-opt {
  letter-spacing: .12em;
  font-weight: 400;
  text-transform: none;
  color: #A3B6CA;
}
/* the original shows no required asterisk */
.fh .fh-formpanel .ff-el-is-required > label:after,
.fh .fh-formpanel .ff-el-input--label.asterisk-right label:after { content: none !important; }
.fh .fh-formpanel .ff-el-is-required.asterisk-right > label:after { display: none !important; }

/* ---- controls ---- */
.fh .fh-formpanel .ff-el-form-control,
.fh .fh-formpanel input.ff-el-form-control,
.fh .fh-formpanel select.ff-el-form-control,
.fh .fh-formpanel textarea.ff-el-form-control {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
  background: rgba(10, 32, 56, .4);
  border: 1px solid rgba(247, 242, 232, .2);
  border-radius: 0;
  color: #F7F2E8;
  padding: 15px 16px;
  font-size: 15px;
  line-height: normal;
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif;
  font-weight: 400;
  outline: none;
  box-shadow: none;
  transition: border-color .3s;
  height: auto;
}
/* background-color, not the shorthand: this rule outranks the select rule
   below, and `background` would reset its caret image to none */
.fh .fh-formpanel.is-contact .ff-el-form-control { background-color: rgba(10, 32, 56, .6); }
.fh .fh-formpanel .ff-el-form-control:focus { border-color: #C8912F; box-shadow: none; outline: none; }
.fh .fh-formpanel .ff-el-form-control::placeholder { color: #A3B6CA; opacity: 1; }
/* FF ships textarea{min-height:90px}, which overrides a rows=3 box */
.fh .fh-formpanel textarea.ff-el-form-control { resize: vertical; min-height: 0; }

/* select: identical box plus the accent caret, native control retained */
.fh .fh-formpanel select.ff-el-form-control {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  cursor: pointer;
  padding-right: 44px;
  text-overflow: ellipsis;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='%23D7B069' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 16px center;
  background-size: 12px 8px;
}
.fh .fh-formpanel select.ff-el-form-control option { background: #0E2744; color: #F7F2E8; }
.fh .fh-formpanel select.ff-el-form-control.is-placeholder { color: #A3B6CA; }

/* ---- custom_html blocks (title / intro / bottom note) ---- */
.fh .fh-formpanel .ff-custom_html { padding: 0; }
.fh .fh-formpanel .ff-custom_html:focus { outline: none; }
.fh .fh-formpanel .fh-ff-title .fh-quoteform-title {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(21px, 2vw, 26px);
  margin-bottom: 4px;
  color: #F7F2E8;
}
.fh .fh-formpanel .fh-ff-title .fh-ct-form-title {
  font-family: Newsreader, Georgia, serif;
  font-size: clamp(24px, 2.4vw, 32px);
  line-height: 1.15;
  margin-bottom: 4px;
  color: #F7F2E8;
}
.fh .fh-formpanel .fh-ff-intro .fh-ct-form-note {
  font-size: 14px; line-height: 1.7; color: #BDCDDE; margin-bottom: 8px;
}
.fh .fh-formpanel .fh-ff-bottomnote p {
  font-size: 12.5px; line-height: 1.6; color: #A3B6CA; margin: 0;
}

/* FF always renders the submit button last in the DOM; the original puts the
   note below it, so flex order restores that without touching the markup. */
.fh .fh-formpanel .ff-el-form-bottom { order: 1; }
.fh .fh-formpanel .fh-ff-bottomnote { order: 2; }

/* ---- submit button ---- */
.fh .fh-formpanel .ff-el-form-bottom { margin: 0 !important; padding: 0; text-align: left; }
.fh .fh-formpanel .ff-btn-submit,
.fh .fh-formpanel button.ff-btn.ff-btn-submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  width: 100%;
  background: var(--fh-accent);
  background-image: none;
  color: #08192C;
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  line-height: normal;
  padding: 18px 26px;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  cursor: pointer;
  transition: background .4s, transform .4s;
  min-width: 0;
  height: auto;
}
.fh .fh-formpanel button.ff-btn.ff-btn-submit:hover {
  background: #E2B664;
  color: #08192C;
  transform: translateY(-2px);
}
/* the original button carries a right arrow that travels 7px on hover */
.fh .fh-formpanel button.ff-btn.ff-btn-submit [data-arrow] {
  display: inline-block;
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif;
  font-size: 14px;
  line-height: 1;
  transition: transform .45s var(--fh-ease);
}
.fh .fh-formpanel button.ff-btn.ff-btn-submit:hover [data-arrow] { transform: translateX(7px); }

/* ---- validation + confirmation ---- */
.fh .fh-formpanel .ff-el-form-control.ff-el-is-error,
.fh .fh-formpanel .ff-el-form-control[aria-invalid="true"] {
  border-color: rgba(226, 182, 100, .75);
}
.fh .fh-formpanel .error.text-danger,
.fh .fh-formpanel .ff-el-is-error .error {
  font-size: 12.5px;
  line-height: 1.5;
  color: #E2B664;
  margin-top: 6px;
  display: block;
}
.fh .fh-formpanel .ff-el-group.ff-el-is-error .ff-el-form-control { border-color: rgba(226, 182, 100, .75); }

.fh .fh-formpanel .ff-message-success,
.fh .fh-formpanel .ff_submitting_msg,
.fh .fh-formpanel .ff-errors-in-stack {
  font-family: Karla, 'Helvetica Neue', Helvetica, sans-serif;
  font-size: 14px;
  line-height: 1.7;
  color: #E2B664;
  background: none;
  border: 0;
  padding: 0;
  margin: 0;
}
.fh .fh-formpanel .ff-message-success p { margin: 0; color: #E2B664; }

/* FF's own loading overlay should not tint the panel */
.fh .fh-formpanel .ff-form-loading_svg { stroke: var(--fh-accent-soft); }


/* ==========================================================================
   GALLERY PAGE
   ========================================================================== */

/* ---- hero: same construction as the About hero ---- */
.fh.fh-gal-hero { position: relative; background: #0E2744; color: #F7F2E8; overflow: hidden; }
/* The photo is a divi/image module, so Divi inserts .et_pb_image_wrap
   between the module and the <img>. Without stretching that wrapper it keeps
   the photo intrinsic width (1440px) and the hero shows a bare navy strip to
   its right on any viewport wider than that. Every other hero background on
   the site carries this same pair of rules. */
.fh .fh-gal-hero-bg {
  position: absolute !important; inset: 0 !important;
  width: 100%; height: 118%; top: -9% !important;
}
.fh .et_pb_image.fh-gal-hero-bg .et_pb_image_wrap { display: block; width: 100%; height: 100%; }
.fh .et_pb_image.fh-gal-hero-bg .et_pb_image_wrap img {
  width: 100%; height: 100%; object-fit: cover; object-position: center 42%; display: block;
}
.fh .fh-gal-hero-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(105deg, rgba(10, 32, 56, .9) 10%, rgba(14, 39, 68, .78) 50%, rgba(14, 39, 68, .54) 100%);
}
.fh .fh-tw-gal1 { top: 26%; right: 14%; width: 3px; height: 3px; background: #E2B664; animation-duration: 6.4s; }
.fh-gal-hero .et_pb_row.fh-gal-hero-row {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(140px, 16vh, 200px) clamp(16px, 2.2vw, 34px) clamp(60px, 8vw, 110px);
}
.fh .fh-gal-h1 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(38px, 5.6vw, 84px); line-height: 1.02; letter-spacing: -.022em;
  max-width: 16ch; margin-bottom: 30px; text-wrap: balance;
}
.fh .fh-gal-h1 em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-gal-lead {
  font-family: Newsreader, Georgia, serif; font-size: clamp(18px, 1.7vw, 24px);
  line-height: 1.6; color: #DCE5EF; max-width: 58ch; text-wrap: pretty;
}

/* ---- section head ---- */
.fh.fh-gal-grid-sec { background: var(--fh-cream-3); }
.fh-gal-grid-sec .et_pb_row.fh-gal-head {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(66px, 8vw, 118px) clamp(16px, 2.2vw, 34px) clamp(34px, 4vw, 54px);
}
.fh .fh-gal-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(30px, 4vw, 56px); line-height: 1.05; letter-spacing: -.022em;
  color: #0B2340; max-width: 20ch; text-wrap: balance;
}
.fh .fh-gal-h2 em { font-style: italic; color: #8A6A22; }

/* ---- the photo grid: the service-card chrome, one photo per card ---- */
.fh-gal-grid-sec .et_pb_row.fh-gal-grid {
  max-width: 1760px; width: 100%; margin: 0 auto;
  padding: 0 clamp(16px, 2.2vw, 34px) clamp(70px, 9vw, 130px);
}
.fh .fh-gal-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr));
  gap: clamp(18px, 2vw, 28px);
  align-items: stretch;
}
.fh .fh-gal-card {
  display: flex; flex-direction: column; margin: 0;
  background: #FFFDF8; border: 1px solid rgba(11, 35, 64, .1);
  position: relative; overflow: hidden;
  transition: transform .6s var(--fh-ease), box-shadow .6s, border-color .6s;
}
.fh .fh-gal-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 26px 60px rgba(11, 35, 64, .14);
  border-color: rgba(200, 145, 47, .5);
}
.fh .fh-gal-media { position: relative; overflow: hidden; height: clamp(260px, 26vw, 400px); }
/* .fh-gal-body removed: gallery captions dropped on request */
.fh .fh-gal-cap {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(20px, 1.8vw, 25px); line-height: 1.2;
  color: #0B2340; margin-bottom: 10px;
}
.fh .fh-gal-note {
  font-size: 14.5px; line-height: 1.75; color: #6A6353; margin: 0; text-wrap: pretty;
}

/* ---- closing CTA: same construction as the service-page CTA ---- */
.fh.fh-gal-cta { position: relative; background: #0A2038; color: #F7F2E8; overflow: hidden; }
.fh .fh-gal-cta-bg {
  position: absolute !important; inset: 0 !important;
  width: 100%; height: 118%; top: -9% !important;
}
.fh .et_pb_image.fh-gal-cta-bg .et_pb_image_wrap { display: block; width: 100%; height: 100%; }
.fh .et_pb_image.fh-gal-cta-bg .et_pb_image_wrap img {
  width: 100%; height: 100%; object-fit: cover; object-position: center 45%; display: block;
}
.fh .fh-gal-cta-scrim {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(100deg, #0A2038 30%, rgba(10, 32, 56, .74) 100%);
}
.fh-gal-cta .et_pb_row.fh-gal-cta-row {
  position: relative; max-width: 1760px; width: 100%; margin: 0 auto;
  padding: clamp(70px, 9vw, 130px) clamp(16px, 2.2vw, 34px);
}
.fh .fh-gal-cta-h2 {
  font-family: Newsreader, Georgia, serif; font-weight: 400;
  font-size: clamp(30px, 4vw, 56px); line-height: 1.05; letter-spacing: -.022em;
  max-width: 20ch; margin-bottom: 16px; text-wrap: balance;
}
.fh .fh-gal-cta-h2 em { font-style: italic; color: var(--fh-accent-soft); }
.fh .fh-gal-cta-p {
  font-size: clamp(15px, 1.3vw, 18px); line-height: 1.75;
  color: #BDCDDE; max-width: 52ch; margin-bottom: 30px; text-wrap: pretty;
}
.fh .fh-gal-cta-btns { display: flex; flex-wrap: wrap; gap: 14px; }

/* ---- the homepage rail's link through to this page ----
   The shell becomes a column so the track still spans it and the link can sit
   under the right-hand end, where the next arrow already is. */
.fh .fh-railbar-shell { display: flex; flex-direction: column; }
.fh .fh-railbar-shell .fh-railtrack { align-self: stretch; }
.fh .fh-raillink {
  align-self: flex-end; margin-top: 16px; white-space: nowrap;
}
@media (max-width: 640px) {
  .fh .fh-raillink { align-self: flex-start; }
}


