/* =========================================================
   HARBOURSTONE MORTGAGE SPECIALISTS
   One stylesheet for the whole site.
   Colours: Charcoal and Limestone base, Sea Grass secondary accent,
   Harbour for primary buttons. Type: Raleway headings, Lato body.
   ========================================================= */

/* ---------------- FONTS (self-hosted) ---------------- */
@font-face { font-family: 'Raleway'; font-style: normal; font-weight: 300; font-display: swap; src: url('/fonts/raleway-latin-300-normal.woff2') format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Raleway'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/raleway-latin-400-normal.woff2') format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Raleway'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/raleway-latin-600-normal.woff2') format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Raleway'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/raleway-latin-700-normal.woff2') format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Raleway'; font-style: normal; font-weight: 300; font-display: swap; src: url('/fonts/raleway-latin-ext-300-normal.woff2') format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: 'Raleway'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/raleway-latin-ext-400-normal.woff2') format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: 'Raleway'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/raleway-latin-ext-600-normal.woff2') format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: 'Raleway'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/raleway-latin-ext-700-normal.woff2') format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: 'Lato'; font-style: normal; font-weight: 300; font-display: swap; src: url('/fonts/lato-latin-300-normal.woff2') format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Lato'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/lato-latin-400-normal.woff2') format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Lato'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/lato-latin-700-normal.woff2') format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Lato'; font-style: normal; font-weight: 300; font-display: swap; src: url('/fonts/lato-latin-ext-300-normal.woff2') format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: 'Lato'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/lato-latin-ext-400-normal.woff2') format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: 'Lato'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/lato-latin-ext-700-normal.woff2') format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
/* Raleway's numerals sit above and below the line. Headings draw digits,
   $, % and + from Lato instead, so figures line up. */
@font-face { font-family: 'HS Figures'; font-style: normal; font-weight: 300; font-display: swap; src: url('/fonts/lato-latin-300-normal.woff2') format('woff2'); unicode-range: U+0030-0039, U+0024, U+0025, U+002B; }
@font-face { font-family: 'HS Figures'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/lato-latin-400-normal.woff2') format('woff2'); unicode-range: U+0030-0039, U+0024, U+0025, U+002B; }
@font-face { font-family: 'HS Figures'; font-style: normal; font-weight: 600 700; font-display: swap; src: url('/fonts/lato-latin-700-normal.woff2') format('woff2'); unicode-range: U+0030-0039, U+0024, U+0025, U+002B; }

/* ---------------- TOKENS ---------------- */
:root {
  /* Brand palette */
  --hs-charcoal: #4A4744;
  --hs-harbour: #A96C4A;
  --hs-slate: #5E7179;
  --hs-sea-grass: #667160;
  --hs-limestone: #E6DED4;
  --hs-ink: #1C1A19;
  --hs-white: #FFFFFF;

  /* Tints */
  --hs-limestone-50: #F3EFE9;
  --hs-stone: #D8CFC3;
  --hs-hairline: #D4CCC1;
  --hs-hairline-dark: #3A3835;

  /* Accessible variants: brand colours adjusted to pass WCAG 2.2 AA
     where they carry text. See the handover notes. */
  --hs-harbour-btn: #985E3F;
  --hs-harbour-btn-hover: #7F4E33;
  --hs-harbour-text: #85502F;
  --hs-harbour-light: #C9A98C;
  --hs-slate-text: #4A5A61;
  --hs-sea-grass-text: #505A4B;
  --hs-sage-light: #B9C4AF;

  /* Roles */
  --fg-1: var(--hs-ink);
  --bg-canvas: var(--hs-limestone);
  --bg-surface: var(--hs-limestone-50);
  --bg-paper: var(--hs-white);
  --focus: var(--hs-sea-grass-text);

  /* Type */
  --font-display: 'HS Figures', 'Raleway', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --font-body: 'Lato', -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;

  /* Layout */
  --container: 1180px;
  --pad-x: clamp(24px, 5vw, 64px);
  --hdr-h: 164px;

  /* Hewn-stone corners: harbour stones are never perfectly square */
  --r-sm: 6px;
  --r-md: 10px;
  --r-lg: 14px;

  --ease-standard: cubic-bezier(.2, .6, .2, 1);
  --ease-entrance: cubic-bezier(.16, .84, .32, 1);
}
@media (max-width: 1100px) { :root { --hdr-h: 96px; } }
@media (max-width: 600px) { :root { --hdr-h: 76px; } }

/* ---------------- BASE ---------------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--hdr-h) + 16px); }
html, body { margin: 0; }
body {
  background: var(--bg-canvas); color: var(--fg-1);
  font-family: var(--font-body); font-size: 16px; line-height: 1.62;
  -webkit-font-smoothing: antialiased;
}
p { font-size: 16px; line-height: 1.55; color: var(--fg-1); text-wrap: pretty; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--hs-harbour-text); text-decoration: none; }
a:hover { color: var(--hs-charcoal); }
a[href^="tel:"] { white-space: nowrap; }
h1, h2, h3 { font-family: var(--font-display); color: var(--hs-charcoal); line-height: 1.28; }
strong { font-weight: 700; }
main:focus { outline: none; }

:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
.hs-hero, .hs-section--dark, .hs-section--seagrass, .hs-ftr, .hs-mobile-menu, .js body:not(.nav-solid) .hs-hdr:not(.is-solid) { --focus: var(--hs-white); }

.hs-skip {
  position: fixed; left: 16px; top: 16px; z-index: 200;
  padding: 12px 20px; border-radius: var(--r-sm);
  background: var(--hs-ink); color: var(--hs-white);
  font-weight: 700; transform: translateY(-200%);
}
.hs-skip:focus { transform: none; color: var(--hs-white); --focus: var(--hs-white); }
.hs-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.gtm-ns { display: none; visibility: hidden; }

/* ---------------- HEADER / NAV ---------------- */
.hs-hdr {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  height: var(--hdr-h);
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 var(--pad-x);
  background: rgba(230, 222, 212, 0.96);
  border-bottom: 1px solid var(--hs-hairline);
  backdrop-filter: saturate(1.2) blur(8px);
  transition: background 240ms ease, border-color 240ms ease;
}
/* Transparent over the hero until the page scrolls (needs JavaScript) */
.js body:not(.nav-solid) .hs-hdr:not(.is-solid) { background: transparent; border-bottom-color: transparent; backdrop-filter: none; }
.hs-hdr__logo { display: block; }
.hs-hdr__logo img { height: 129px; width: auto; transition: filter 240ms; }
.js body:not(.nav-solid) .hs-hdr:not(.is-solid) .hs-hdr__logo img { filter: brightness(0) invert(1); }

.hs-nav { display: flex; align-items: center; gap: 4px; align-self: stretch; }
.hs-nav__item { position: relative; height: 100%; display: flex; align-items: center; }
.hs-nav__link {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--font-body); font-size: 16px; font-weight: 400;
  letter-spacing: 0.02em; color: var(--hs-charcoal);
  padding: 10px 16px; border: 0; background: none; cursor: pointer;
  transition: color 200ms;
}
.js body:not(.nav-solid) .hs-hdr:not(.is-solid) .hs-nav__link { color: var(--hs-white); }
.hs-nav__link:hover, .js body:not(.nav-solid) .hs-hdr:not(.is-solid) .hs-nav__link:hover { color: var(--hs-sea-grass); }
.hs-nav__link[aria-current="page"] { color: var(--hs-harbour-text); }
.hs-nav__link .chev { width: 8px; height: 8px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translateY(-2px); transition: transform 200ms; }
.hs-nav__item:hover .chev, .hs-nav__item:focus-within .chev, .hs-nav__item.is-open .chev { transform: rotate(45deg) translateY(1px); }

.hs-nav__menu {
  position: absolute; top: 100%; left: 50%; transform: translateX(-50%);
  min-width: 268px; background: var(--bg-paper);
  border: 1px solid var(--hs-hairline); border-top: 2px solid var(--hs-sea-grass);
  border-radius: var(--r-md);
  box-shadow: 0 16px 48px rgba(28, 26, 25, 0.16);
  padding: 8px; z-index: 120;
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity 160ms ease, visibility 0s linear 220ms;
  --focus: var(--hs-sea-grass-text);
}
/* Bridge the gap so the menu stays open while the pointer moves down */
.hs-nav__menu::before { content: ''; position: absolute; left: 0; right: 0; top: -16px; height: 16px; }
.hs-nav__item:hover .hs-nav__menu, .hs-nav__item:focus-within .hs-nav__menu, .hs-nav__item.is-open .hs-nav__menu {
  opacity: 1; visibility: visible; pointer-events: auto;
  transition: opacity 160ms ease, visibility 0s;
}
.hs-nav__item.is-closed .hs-nav__menu { opacity: 0; visibility: hidden; pointer-events: none; }
.hs-nav__menu a {
  display: block; padding: 11px 14px; font-size: 15px; color: var(--hs-charcoal);
  border-radius: var(--r-sm); transition: background 140ms, color 140ms;
}
.hs-nav__menu a:hover { background: var(--bg-canvas); color: var(--hs-harbour-text); }
.hs-nav__menu a[aria-current="page"] { color: var(--hs-harbour-text); }
.hs-nav__menu a.hub {
  font-family: var(--font-display); font-weight: 600;
  border-bottom: 1px solid var(--hs-hairline); margin-bottom: 4px;
  border-radius: var(--r-sm) var(--r-sm) 0 0;
}
.hs-nav__menu a.hub span { display: block; font-family: var(--font-body); font-weight: 400; font-size: 12px; color: var(--hs-slate); margin-top: 2px; }

.hs-cta {
  font-family: var(--font-display); font-weight: 600; font-size: 12px;
  letter-spacing: 0.12em; text-transform: uppercase;
  background: var(--hs-harbour-btn); color: var(--hs-white);
  padding: 12px 22px; border-radius: var(--r-sm);
  white-space: nowrap; transition: background 200ms;
}
.hs-cta:hover { background: var(--hs-harbour-btn-hover); color: var(--hs-white); }

.hs-hdr__right { display: flex; align-items: center; gap: 20px; }

.hs-li { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 700; color: var(--hs-harbour-text); }
.hs-li svg { flex: none; }
.hs-li--hdr { width: 40px; height: 40px; justify-content: center; border-radius: 50%; color: var(--hs-charcoal); transition: color 200ms, background 200ms; }
.js body:not(.nav-solid) .hs-hdr:not(.is-solid) .hs-li--hdr { color: var(--hs-white); }
.hs-li--hdr:hover, .js body:not(.nav-solid) .hs-hdr:not(.is-solid) .hs-li--hdr:hover { background: rgba(102, 113, 96, 0.14); color: var(--hs-sea-grass); }

.hs-burger { display: none; width: 30px; height: 18px; position: relative; background: none; border: 0; padding: 0; cursor: pointer; }
.hs-burger::after { content: ''; position: absolute; left: -8px; right: -8px; top: -13px; bottom: -13px; }
.hs-burger span { position: absolute; left: 0; right: 0; height: 1.5px; background: var(--hs-charcoal); transition: background 240ms, transform 240ms, opacity 240ms; }
.js body:not(.nav-solid) .hs-hdr:not(.is-solid) .hs-burger span { background: var(--hs-white); }
.hs-burger span:nth-child(1) { top: 0; }
.hs-burger span:nth-child(2) { top: 8px; }
.hs-burger span:nth-child(3) { top: 16px; }
.hs-burger[aria-expanded="true"] span:nth-child(1) { transform: rotate(45deg) translate(4px, 5px); }
.hs-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.hs-burger[aria-expanded="true"] span:nth-child(3) { transform: rotate(-45deg) translate(4px, -5px); }

@media (max-width: 1440px) {
  .hs-hdr__logo img { height: 96px; }
  .hs-nav { gap: 0; }
  .hs-nav__link { font-size: 15px; padding: 10px; }
  .hs-hdr__right { gap: 12px; }
  .hs-cta { padding: 11px 16px; }
}
@media (max-width: 1180px) { .hs-hdr__logo img { height: 72px; } }
@media (max-width: 1100px) {
  .hs-hdr__logo img { height: 60px; }
  .hs-nav, .hs-hdr__right .hs-cta, .hs-li--hdr { display: none; }
  .hs-burger { display: block; }
}
@media (max-width: 600px) {
  .hs-hdr__logo img { height: 46px; }
  .hs-burger { width: 28px; }
}

/* Mobile menu panel */
.hs-mobile-menu {
  position: fixed; inset: var(--hdr-h) 0 0 0; z-index: 95;
  background: var(--hs-charcoal); color: var(--hs-limestone);
  padding: 24px var(--pad-x) 48px; overflow-y: auto;
  transform: translateX(100%); visibility: hidden;
  transition: transform 280ms var(--ease-standard), visibility 0s linear 280ms;
}
body.menu-open .hs-mobile-menu { transform: none; visibility: visible; transition: transform 280ms var(--ease-standard), visibility 0s; }
body.menu-open { overflow: hidden; }
@media (min-width: 1101px) { .hs-mobile-menu { display: none; } }
.hs-mobile-menu__group { border-bottom: 1px solid var(--hs-hairline-dark); }
.hs-mobile-menu__group > a, .hs-mm-toggle {
  width: 100%; display: flex; align-items: center; justify-content: space-between;
  padding: 20px 0; font-family: var(--font-display); font-weight: 600; font-size: 20px; line-height: 1.28;
  color: var(--hs-white); background: none; border: 0; text-align: left; cursor: pointer;
}
.hs-mm-sub { display: none; padding-bottom: 12px; }
.hs-mm-sub.open { display: block; }
.hs-mm-sub a { display: flex; align-items: center; min-height: 44px; padding: 10px 0 10px 16px; font-size: 15px; color: rgba(255, 255, 255, 0.8); border-left: 1px solid var(--hs-hairline-dark); }
.hs-mm-sub a:hover, .hs-mm-sub a[aria-current="page"] { color: var(--hs-sage-light); }
.hs-mobile-menu .hs-cta { display: inline-block; margin-top: 32px; padding: 16px 28px; }
.hs-mm-plus { color: var(--hs-sage-light); font-size: 22px; font-weight: 300; }
.hs-li--mm { margin-top: 24px; color: var(--hs-limestone); font-size: 15px; min-height: 44px; }

/* ---------------- LAYOUT ---------------- */
.hs-section { padding: clamp(64px, 9vw, 120px) var(--pad-x); }
.hs-section--paper { background: var(--bg-paper); }
.hs-section--surface { background: var(--bg-surface); }
.hs-section--dark { background: var(--hs-charcoal); color: var(--hs-limestone); }
.hs-section--seagrass { background: var(--hs-sea-grass); color: var(--hs-white); }
.hs-container { max-width: var(--container); margin: 0 auto; }
.hs-container--narrow { max-width: 820px; margin: 0 auto; }

/* ---------------- TYPE ---------------- */
.hs-display {
  font-family: var(--font-display); font-weight: 300;
  font-size: clamp(38px, 5.4vw, 62px); line-height: 1.07; letter-spacing: -0.015em;
  color: var(--hs-charcoal); margin: 0; text-wrap: balance;
}
.hs-h2 {
  font-family: var(--font-display); font-weight: 300;
  font-size: clamp(26px, 3.2vw, 40px); line-height: 1.14; letter-spacing: -0.008em;
  color: var(--hs-charcoal); margin: 0; text-wrap: balance;
}
.hs-display strong, .hs-h2 strong { font-weight: 700; color: var(--hs-sea-grass); }
.hs-h3 { font-family: var(--font-display); font-weight: 600; font-size: clamp(19px, 2vw, 23px); line-height: 1.28; color: var(--hs-charcoal); margin: 0; }
.hs-lead { font-size: clamp(17px, 1.6vw, 20px); line-height: 1.6; color: var(--fg-1); margin: 0; max-width: 58ch; text-wrap: pretty; }
.hs-lead--on-dark { color: rgba(255, 255, 255, 0.84); }
.on-dark { color: var(--hs-white); }
.hs-section--dark .hs-h2 strong { color: var(--hs-sage-light); }
.hs-section--seagrass .hs-display strong, .hs-section--seagrass .hs-h2 strong { color: var(--hs-white); }
.hs-section--seagrass .hs-lead--on-dark { color: rgba(255, 255, 255, 0.92); }

/* ---------------- BUTTONS AND LINKS ---------------- */
.hs-btn {
  font-family: var(--font-display); font-weight: 600; font-size: 12px;
  letter-spacing: 0.14em; text-transform: uppercase;
  padding: 16px 30px; border-radius: var(--r-sm); border: 0; cursor: pointer;
  display: inline-flex; align-items: center; gap: 10px;
  transition: background 200ms, color 200ms;
}
.hs-btn--harbour { background: var(--hs-harbour-btn); color: var(--hs-white); }
.hs-btn--harbour:hover { background: var(--hs-harbour-btn-hover); color: var(--hs-white); }
/* On the Sea Grass band the brown button blends in, so it goes dark */
.hs-section--seagrass .hs-btn--harbour { background: var(--hs-ink); }
.hs-section--seagrass .hs-btn--harbour:hover { background: var(--hs-charcoal); }

.hs-arrow {
  font-family: var(--font-body); font-weight: 700; font-size: 14px;
  letter-spacing: 0.04em; color: var(--hs-sea-grass-text);
  display: inline-flex; align-items: center; gap: 8px;
  border-bottom: 1px solid transparent; padding-bottom: 2px;
  transition: border-color 180ms, gap 180ms;
}
.hs-arrow:hover { border-bottom-color: var(--hs-sea-grass); gap: 12px; color: var(--hs-charcoal); }
.hs-section--dark .hs-arrow { color: var(--hs-sage-light); }
.hs-section--dark .hs-arrow:hover { color: var(--hs-white); }

/* ---------------- HERO ---------------- */
.hs-hero {
  position: relative; min-height: min(92vh, 820px);
  display: flex; align-items: flex-end; color: var(--hs-white);
  background: var(--hs-charcoal); overflow: hidden;
}
/* The photo file is already darkened, so it needs no filter here */
.hs-hero__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.hs-hero__scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(28, 26, 25, 0.42) 0%, rgba(28, 26, 25, 0) 34%, rgba(28, 26, 25, 0.66) 100%); }
.hs-hero__inner {
  position: relative; z-index: 2; width: 100%; max-width: var(--container); margin: 0 auto;
  padding: calc(var(--hdr-h) + 60px) var(--pad-x) clamp(56px, 8vw, 96px);
}
.hs-hero__h1 {
  font-family: var(--font-display); font-weight: 300;
  font-size: clamp(38px, 6vw, 72px); line-height: 1.05; letter-spacing: -0.02em;
  color: var(--hs-white); margin: 0 0 24px; max-width: 17ch; text-wrap: balance;
}
.hs-hero__h1 strong { font-weight: 700; color: var(--hs-sage-light); }
.hs-hero__lead { font-size: clamp(16px, 1.6vw, 19px); line-height: 1.6; color: rgba(255, 255, 255, 0.86); max-width: 52ch; margin: 0 0 32px; }
.hs-hero__ctas { display: flex; gap: 12px; flex-wrap: wrap; }
/* Short laptop screens: keep the button above the fold */
@media (max-height: 780px) and (min-width: 700px) {
  .hs-hero { min-height: 100svh; }
  .hs-hero__inner { padding-top: calc(var(--hdr-h) + 24px); padding-bottom: 40px; }
  .hs-hero__h1 { font-size: clamp(34px, 4.6vw, 56px); margin-bottom: 18px; }
}
@media (max-width: 600px) {
  .hs-hero { min-height: auto; }
  .hs-hero__inner { padding-top: calc(var(--hdr-h) + 48px); padding-bottom: 48px; }
  .hs-hero__h1 { font-size: clamp(34px, 9vw, 44px); }
  .hs-hero__ctas .hs-btn { width: 100%; justify-content: center; }
}

/* ---------------- CREDIBILITY BAR ---------------- */
.hs-credbar { background: var(--bg-paper); border-top: 3px solid var(--hs-sea-grass); border-bottom: 1px solid var(--hs-hairline); padding: 0 var(--pad-x); }
.hs-credbar__inner { max-width: var(--container); margin: 0 auto; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.hs-credbar__item { padding: 28px 24px 26px; border-right: 1px solid var(--hs-hairline); }
.hs-credbar__item:last-child { border-right: 0; }
.hs-credbar__n { display: block; font-family: var(--font-display); font-weight: 300; font-size: clamp(26px, 3vw, 34px); color: var(--hs-charcoal); letter-spacing: -0.01em; line-height: 1; margin-bottom: 8px; }
.hs-credbar__n strong { color: var(--hs-sea-grass); }
.hs-credbar__l { display: block; font-size: 14px; line-height: 1.45; color: var(--hs-slate); }
@media (max-width: 1100px) and (min-width: 861px) {
  .hs-credbar__n { font-size: 26px; }
  .hs-credbar__item { padding: 24px 18px; }
}
@media (max-width: 860px) {
  .hs-credbar__inner { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hs-credbar__item:nth-child(2n) { border-right: 0; }
  .hs-credbar__item:nth-child(-n+4) { border-bottom: 1px solid var(--hs-hairline); }
  .hs-credbar__item:last-child { grid-column: 1 / -1; }
}
/* On narrow phones "Independent" is wider than half the screen, so the
   proof points stack in one column. */
@media (max-width: 480px) {
  .hs-credbar__inner { grid-template-columns: 1fr; }
  .hs-credbar__item, .hs-credbar__item:nth-child(n) { padding: 20px 0; border-right: 0; border-bottom: 1px solid var(--hs-hairline); }
  .hs-credbar__item:last-child { border-bottom: 0; }
}

/* ---------------- TWO COLUMNS ---------------- */
.hs-two { display: grid; grid-template-columns: 1fr 1.35fr; gap: clamp(40px, 6vw, 88px); align-items: start; }
.hs-two--even { grid-template-columns: 1fr 1fr; align-items: center; }
.hs-two--top { align-items: start; }
@media (max-width: 820px) { .hs-two, .hs-two--even { grid-template-columns: 1fr; gap: 32px; } }
.hs-intro__lead { margin-top: 24px; }
.hs-intro__body { margin: 16px 0 24px; line-height: 1.7; }

/* ---------------- SECTION HEAD ---------------- */
.hs-shead { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 5vw, 72px); align-items: end; margin-bottom: clamp(40px, 5vw, 60px); }
.hs-shead--single { display: block; max-width: 760px; margin-bottom: clamp(36px, 5vw, 56px); }
@media (max-width: 820px) { .hs-shead { grid-template-columns: 1fr; gap: 20px; } }

/* ---------------- SERVICE CARDS ---------------- */
.hs-grid {
  display: grid; gap: 1px; background: var(--hs-hairline);
  border: 1px solid var(--hs-hairline); border-radius: var(--r-lg); overflow: hidden;
}
.hs-svc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 760px) { .hs-svc-grid { grid-template-columns: 1fr; } }
.hs-card {
  background: var(--bg-paper); padding: 34px 28px 28px;
  display: flex; flex-direction: column; gap: 12px;
  color: inherit; box-shadow: inset 0 3px 0 transparent;
  transition: background 200ms, box-shadow 200ms;
}
.hs-card:hover { background: var(--bg-surface); box-shadow: inset 0 3px 0 var(--hs-sea-grass); color: inherit; }
.hs-card:focus-visible { outline-offset: -4px; }
.hs-card__title { font-family: var(--font-display); font-weight: 600; font-size: 22px; line-height: 1.28; color: var(--hs-charcoal); margin: 0; }
.hs-card__body { font-size: 16px; line-height: 1.6; color: var(--fg-1); margin: 0; }
.hs-card__link { margin-top: auto; }
.hs-card:hover .hs-arrow { color: var(--hs-charcoal); }

/* ---------------- PROCESS ---------------- */
.hs-process-sec { background: var(--bg-canvas); }
.hs-process { list-style: none; margin: 40px 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.hs-process li {
  background: var(--hs-white); border-radius: var(--r-lg); border-top: 3px solid var(--hs-sea-grass);
  padding: 28px 24px 26px;
  display: grid; grid-template-rows: subgrid; grid-row: span 3; row-gap: 10px;
}
.hs-process span { font-family: var(--font-display); font-weight: 600; font-size: 15px; color: var(--hs-harbour-text); letter-spacing: 0.06em; }
.hs-process h3 { margin: 0; font-weight: 600; font-size: 22px; }
.hs-process p { margin: 0; font-size: 16px; line-height: 1.55; }
@media (max-width: 980px) { .hs-process { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .hs-process { grid-template-columns: 1fr; } .hs-process li { grid-row: auto; display: flex; flex-direction: column; } }

/* ---------------- PHOTOS ---------------- */
.hs-photo { background: #6B6864; border-radius: var(--r-lg); overflow: hidden; }
.hs-photo--portrait { width: 100%; max-width: 420px; aspect-ratio: 4 / 5; object-fit: cover; object-position: center top; justify-self: end; }
@media (max-width: 820px) { .hs-photo--portrait { justify-self: start; max-width: 360px; } }

/* ---------------- DECLINED CASE ---------------- */
.hs-case { margin-top: 12px; align-items: stretch; }
.hs-case__media { position: relative; min-height: 300px; }
.hs-case__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hs-case__quote { background: var(--hs-ink); border-radius: var(--r-lg); padding: clamp(28px, 4vw, 44px); display: flex; flex-direction: column; justify-content: center; }
.hs-pullquote { margin: 0; }
.hs-pullquote p { font-family: var(--font-display); font-weight: 300; font-size: clamp(20px, 2.4vw, 28px); line-height: 1.32; letter-spacing: -0.01em; color: var(--hs-white); margin: 0; }

/* ---------------- TESTIMONIAL WALL ---------------- */
.hs-wall { background: var(--bg-paper); border-top: 1px solid var(--hs-hairline); padding: clamp(64px, 8vw, 112px) 0; overflow: hidden; }
.hs-wall__head { padding: 0 var(--pad-x); margin-bottom: clamp(32px, 4vw, 48px); }
.hs-wall__head .hs-h2 { max-width: 22ch; }
.hs-wall__static { columns: 2; column-gap: 14px; padding: 0 var(--pad-x); }
@media (min-width: 1101px) { .hs-wall__static { columns: 3; } }
@media (max-width: 760px) { .hs-wall__static { columns: 1; } }
.hs-stone {
  display: flex; flex-direction: column; justify-content: space-between; gap: 18px;
  width: 100%; margin: 0 0 14px; break-inside: avoid;
  padding: 36px 36px 30px;
  box-shadow: inset 0 -3px 0 rgba(28, 26, 25, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.06);
}
@media (max-width: 760px) { .hs-stone { padding: 28px 26px 24px; } }
.hs-stone blockquote { margin: 0; }
.hs-stone blockquote p { margin: 0; font-family: var(--font-display); font-weight: 400; font-size: 18px; line-height: 1.55; color: inherit; }
.hs-stone figcaption { font-size: 14px; line-height: 1.4; }
.hs-stone--charcoal { background: var(--hs-charcoal); color: var(--hs-white); }
.hs-stone--charcoal figcaption { color: var(--hs-limestone); }
.hs-stone--sage { background: var(--hs-sea-grass); color: var(--hs-white); }
.hs-stone--paper { background: var(--hs-limestone); color: var(--hs-ink); box-shadow: inset 0 -3px 0 rgba(28, 26, 25, 0.06); }
.hs-stone--paper figcaption { color: var(--hs-slate-text); }
.hs-stone--stone { background: var(--hs-stone); color: var(--hs-ink); }
.hs-stone--stone figcaption { color: #3E4A50; }
/* Each stone is cut a little differently */
.hs-stone--s0 { border-radius: 14px 9px 16px 11px; }
.hs-stone--s1 { border-radius: 10px 15px 9px 14px; }
.hs-stone--s2 { border-radius: 16px 11px 13px 8px; }
.hs-stone--s3 { border-radius: 9px 13px 15px 12px; }
.hs-stone--s4 { border-radius: 12px 8px 11px 16px; }
.hs-stone--s5 { border-radius: 15px 12px 9px 13px; }

/* ---------------- CLOSING BAND ---------------- */
.hs-close { text-align: center; }
.hs-close .hs-lead { margin-left: auto; margin-right: auto; }

/* ---------------- FOOTER ---------------- */
.hs-ftr { background: var(--hs-ink); color: rgba(255, 255, 255, 0.72); padding: clamp(56px, 7vw, 88px) var(--pad-x) 36px; }
.hs-ftr p { color: rgba(255, 255, 255, 0.72); }
.hs-ftr__top { max-width: var(--container); margin: 0 auto; display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 44px; padding-bottom: 44px; border-bottom: 1px solid var(--hs-hairline-dark); }
.hs-ftr__brand img { height: 84px; width: auto; max-width: 100%; object-fit: contain; object-position: left; filter: brightness(0) invert(1); margin-bottom: 24px; }
.hs-ftr__brand p { font-size: 15px; line-height: 1.6; max-width: 30ch; margin: 0; }
.hs-ftr__contact { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; margin-top: 24px; }
.hs-ftr__contact a { font-family: var(--font-display); font-size: 18px; color: var(--hs-white); }
.hs-ftr__contact a:hover { color: var(--hs-harbour-light); }
.hs-ftr__contact .hs-ftr__cta { margin-top: 12px; font-family: var(--font-body); font-size: 14px; font-weight: 700; color: var(--hs-sage-light); border-bottom: 1px solid currentColor; padding-bottom: 2px; }
.hs-ftr__contact .hs-li--ftr { margin-top: 14px; font-family: var(--font-body); font-size: 14px; }
.hs-ftr__col h2 { font-family: var(--font-body); font-weight: 700; font-size: 12px; line-height: 1.62; letter-spacing: 0.18em; text-transform: uppercase; color: var(--hs-sage-light); margin: 0 0 18px; }
.hs-ftr__col a { display: block; font-size: 15px; color: rgba(255, 255, 255, 0.78); margin-bottom: 10px; line-height: 1.5; }
.hs-ftr__col a:hover { color: var(--hs-harbour-light); }
.hs-ftr__legal { max-width: var(--container); margin: 32px auto 0; font-size: 13px; line-height: 1.7; }
.hs-ftr__legal p { margin: 0 0 14px; max-width: 78ch; }
.hs-ftr__licence { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin: 0 0 14px; }
.hs-ftr__licence p { margin: 0; }
.hs-ftr__finsure { flex: none; display: flex; align-items: center; background: var(--hs-white); border-radius: var(--r-md); padding: 10px 14px; --focus: var(--hs-white); }
.hs-ftr__finsure img { height: 34px; width: auto; }
.hs-ftr__links { display: flex; flex-wrap: wrap; gap: 8px 20px; margin: 18px 0; }
.hs-ftr__links a { color: rgba(255, 255, 255, 0.85); }
.hs-ftr__links a:hover { color: var(--hs-harbour-light); }
.hs-ftr__meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--hs-hairline-dark); color: rgba(255, 255, 255, 0.72); }
.hs-ftr__meta--plain { border: 0; margin-top: 24px; padding-top: 4px; }
@media (max-width: 860px) {
  .hs-ftr__top { grid-template-columns: 1fr 1fr; gap: 32px; }
  .hs-ftr__brand { grid-column: 1 / -1; }
  .hs-ftr__col a { display: flex; align-items: center; min-height: 44px; margin-bottom: 0; }
  .hs-ftr__contact { gap: 0; }
  .hs-ftr__contact a { display: inline-flex; align-items: center; min-height: 44px; }
  .hs-ftr__links { gap: 0 20px; }
  .hs-ftr__links a { display: inline-flex; align-items: center; min-height: 44px; }
}
@media (max-width: 600px) {
  .hs-ftr__brand img { height: 64px; }
  .hs-ftr__licence { flex-direction: column; align-items: flex-start; gap: 14px; }
}

/* ---------------- REVEAL ON SCROLL ---------------- */
@media (prefers-reduced-motion: no-preference) {
  .js .reveal { opacity: 0; transform: translateY(18px); transition: opacity 700ms var(--ease-entrance), transform 700ms var(--ease-entrance); }
  .js .reveal.in { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: 0.01ms !important; }
}

/* ---------------- UTILITIES ---------------- */
.mt-2 { margin-top: 16px; }
.mt-3 { margin-top: 24px; }
.mt-4 { margin-top: 32px; }
.mt-5 { margin-top: 40px; }

/* ---------------- PAGE HEADINGS ---------------- */
.hs-h1 {
  font-family: var(--font-display); font-weight: 300;
  font-size: clamp(32px, 4.4vw, 52px); line-height: 1.1; letter-spacing: -0.012em;
  color: var(--hs-charcoal); margin: 0; text-wrap: balance;
}
.hs-h1 strong { font-weight: 700; color: var(--hs-sea-grass); }

/* ---------------- 404 ---------------- */
.hs-404 { padding-top: calc(var(--hdr-h) + 80px); min-height: 70vh; }
.hs-404__links { list-style: none; padding: 0; border-top: 1px solid var(--hs-hairline); }
.hs-404__links a { display: block; padding: 24px 0; border-bottom: 1px solid var(--hs-hairline); color: var(--hs-charcoal); }
.hs-404__links .hs-h3 { display: block; }
.hs-404__links small { display: block; margin-top: 4px; font-size: 16px; line-height: 1.5; color: var(--hs-slate-text); }

/* ---------------- TESTIMONIALS ON PHONES: SWIPE ROW ---------------- */
@media (max-width: 760px) {
  .hs-wall__static {
    columns: auto; display: flex; gap: 12px; align-items: flex-start;
    overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding: 0 var(--pad-x);
    padding-bottom: 8px; scrollbar-width: none; -webkit-overflow-scrolling: touch;
  }
  .hs-wall__static::-webkit-scrollbar { display: none; }
  .hs-wall__static::after { content: ''; flex: 0 0 calc(var(--pad-x) - 12px); }
  .hs-stone { flex: 0 0 84%; margin: 0; scroll-snap-align: start; }
  .hs-wall__static:focus-visible { outline-offset: -2px; }
}

/* ---------------- INNER PAGE HEADER ---------------- */
.hs-page-hero { padding: calc(var(--hdr-h) + clamp(48px, 8vw, 96px)) var(--pad-x) clamp(48px, 6vw, 72px); background: var(--bg-canvas); }
.hs-page-hero--flush { padding-bottom: 0; }
.hs-breadcrumb ol { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 28px; padding: 0; list-style: none; font-size: 12px; letter-spacing: 0.04em; color: var(--hs-slate-text); }
.hs-breadcrumb li + li::before { content: '/'; margin-right: 8px; opacity: 0.5; }
.hs-breadcrumb a { color: var(--hs-slate-text); }
.hs-breadcrumb a:hover { color: var(--hs-harbour-text); }
.hs-breadcrumb [aria-current="page"] { color: var(--hs-charcoal); }
.hs-section--flush-top { padding-top: clamp(24px, 3vw, 40px); }

/* ---------------- SPEAK TO CARL ---------------- */
.hs-speak { display: flex; align-items: center; gap: 18px; margin-top: 36px; }
.hs-speak__img { width: 76px; height: 76px; border-radius: 50%; object-fit: cover; object-position: center 20%; flex: none; }
.hs-speak strong { display: block; font-family: var(--font-display); font-weight: 600; font-size: 18px; color: var(--hs-charcoal); }
.hs-speak span { display: block; font-size: 15px; color: var(--hs-slate-text); margin-top: 2px; }
.hs-speak .hs-li { margin-top: 6px; }
@media (max-width: 860px) { .hs-speak .hs-li { min-height: 44px; } }

/* ---------------- CONTACT DETAILS ---------------- */
.hs-contact-list { margin-top: 40px; border-bottom: 1px solid var(--hs-hairline); }
.hs-contact-list > div { padding: 22px 0; border-top: 1px solid var(--hs-hairline); }
.hs-contact-list__main { font-family: var(--font-display); font-weight: 300; font-size: 24px; line-height: 1.62; color: var(--hs-charcoal); }
.hs-contact-list > div:not(:last-child) small { line-height: 26px; }
.hs-contact-list small { display: block; font-size: 12px; line-height: 1.55; color: var(--hs-slate-text); }
.hs-contact-note { font-size: 13px; color: var(--hs-slate-text); }

/* ---------------- FORM ---------------- */
.hs-form-card { background: var(--bg-paper); border: 1px solid var(--hs-hairline); border-radius: var(--r-lg); padding: clamp(28px, 4vw, 44px); }
.hs-form-card__title { font-size: 24px; }
.hs-form-card__intro { color: var(--hs-slate-text); font-size: 14px; margin: 8px 0 24px; }
.hs-form { display: grid; gap: 16px; }
.hs-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 560px) { .hs-form__row { grid-template-columns: 1fr; } }
.hs-field { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 0; border: 0; min-width: 0; }
.hs-field > label, .hs-field legend { padding: 0; font-size: 12px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--hs-slate-text); }
.hs-field legend { margin-bottom: 8px; }
.hs-field input, .hs-field textarea {
  font-family: var(--font-body); font-size: 15px; padding: 14px 16px;
  background: var(--hs-white); color: var(--fg-1);
  border: 1px solid #8C8985; border-radius: var(--r-sm); transition: border-color 160ms;
}
.hs-field input:focus, .hs-field textarea:focus { border-color: var(--hs-sea-grass); }
.hs-field textarea { resize: vertical; }
.hs-segment { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.hs-segment label { position: relative; }
.hs-segment input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.hs-segment span {
  display: block; padding: 14px 0; text-align: center; cursor: pointer; line-height: 1.2;
  background: var(--bg-canvas); color: var(--hs-charcoal); border: 1px solid #8C8985; border-radius: var(--r-sm);
  font-family: var(--font-display); font-weight: 600; font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase;
  transition: background 160ms, color 160ms;
}
.hs-segment input:checked + span, .hs-segment span:hover { background: var(--hs-charcoal); color: var(--hs-white); border-color: var(--hs-charcoal); }
.hs-segment input:focus-visible + span { outline: 2px solid var(--focus); outline-offset: 3px; }
.hs-privacy-note { font-size: 14px; line-height: 1.5; color: var(--hs-slate-text); background: var(--bg-canvas); border-left: 2px solid var(--hs-sea-grass); border-radius: var(--r-md); padding: 12px 16px; margin: 0; }
.hs-form .hs-btn { justify-content: center; }
.hs-honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

/* ---------------- DISCLAIMER AND NOTES ---------------- */
.hs-disclaimer { background: var(--bg-surface); border: 1px solid var(--hs-hairline); border-radius: var(--r-md); padding: 24px 28px; font-size: 15px; line-height: 1.6; color: var(--hs-slate-text); }
.hs-disclaimer strong { color: var(--hs-charcoal); }
.hs-disclaimer__links { display: flex; flex-wrap: wrap; gap: 20px; margin-top: 16px; }
.hs-confirm { background: rgba(169, 108, 74, 0.08); border: 1px dashed #B9825F; color: var(--hs-harbour-text); padding: 1px 7px; border-radius: 3px; font-size: 0.92em; font-style: normal; }
.hs-muted { color: var(--hs-slate-text); }

/* ---------------- SIMPLE PAGES (thank-you) ---------------- */
.hs-simple { padding-top: calc(var(--hdr-h) + 80px); min-height: 78vh; }

/* ---------------- SERVICE PAGES ---------------- */
.hs-page-hero__text { max-width: 880px; }
.hs-page-hero__text .hs-lead { max-width: 60ch; }
.hs-svc-img { padding: 0 var(--pad-x); margin-top: -8px; margin-bottom: clamp(8px, 2vw, 24px); }
.hs-svc-img__frame { position: relative; width: 100%; aspect-ratio: 21 / 8; border-radius: var(--r-lg); overflow: hidden; background: #EAE3D9; }
@media (max-width: 700px) { .hs-svc-img__frame { aspect-ratio: 4 / 3; } }
.hs-svc-img__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hs-section--svc-top { padding-top: clamp(32px, 4vw, 56px); }
.hs-svc-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: clamp(48px, 6vw, 96px); align-items: start; }
.hs-svc-layout > .hs-prose { max-width: none; }
.hs-svc-aside { margin-top: 8px; }
@media (max-width: 980px) {
  .hs-svc-layout { grid-template-columns: 1fr; gap: 40px; }
  .hs-svc-aside { position: static; order: -1; margin-top: 0; }
}

/* Long-form copy */
.hs-prose { max-width: 68ch; }
.hs-prose > * + * { margin-top: 20px; }
.hs-prose p { font-size: 16px; line-height: 1.68; color: var(--fg-1); }
.hs-prose h2 { font-family: var(--font-display); font-weight: 300; font-size: clamp(24px, 3vw, 34px); line-height: 1.16; letter-spacing: -0.01em; color: var(--hs-charcoal); margin-top: 56px; }
.hs-prose h2:first-child { margin-top: 0; }
.hs-prose h3 { font-family: var(--font-display); font-weight: 600; font-size: 20px; color: var(--hs-charcoal); margin-top: 36px; }
.hs-prose h2 + p, .hs-prose h3 + p { margin-top: 14px; }
.hs-prose strong { color: var(--hs-charcoal); }
.hs-prose ul { margin: 8px 0 0; padding: 0; list-style: none; }
.hs-prose ul li { position: relative; padding-left: 26px; margin-bottom: 14px; font-size: 16px; line-height: 26px; }
.hs-prose ul li::before { content: ''; position: absolute; left: 0; top: 12px; width: 12px; height: 0; border-top: 2px solid var(--hs-sea-grass); }
.hs-prose ul li > strong:first-child { display: block; font-family: var(--font-display); font-weight: 600; font-size: 18px; line-height: 24px; color: var(--hs-charcoal); margin-bottom: 4px; }
.hs-prose ul li:has(> strong:first-child) { margin-bottom: 22px; }
.hs-prose ul li:has(> strong:first-child)::before { top: 11px; }
.hs-prose ol { margin: 8px 0 0; padding: 0; list-style: none; counter-reset: step; }
.hs-prose ol li { position: relative; padding-left: 44px; margin-bottom: 20px; font-size: 16px; line-height: 1.6; counter-increment: step; }
.hs-prose ol li::before { content: counter(step, decimal-leading-zero); position: absolute; left: 0; top: 1px; font-family: var(--font-display); font-weight: 600; font-size: 13px; letter-spacing: 0.06em; color: var(--hs-harbour-text); }
.hs-prose ol li strong { display: block; }
.hs-prose__lead-h { margin: 0 0 20px; max-width: 22ch; }

/* Side panel */
.hs-aside {
  position: sticky; top: calc(var(--hdr-h) + 24px);
  background: var(--hs-charcoal); color: var(--hs-white); padding: 36px 32px;
  border-top: 2px solid var(--hs-sea-grass); border-radius: var(--r-lg); overflow: hidden;
  --focus: var(--hs-white);
}
.hs-aside h3 { font-family: var(--font-display); font-size: 20px; font-weight: 600; color: var(--hs-white); margin: 0 0 20px; }
.hs-aside ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.hs-aside ul li { display: flex; gap: 12px; font-size: 16px; line-height: 24px; color: var(--hs-white); }
.hs-aside ul li::before { content: ''; flex: none; align-self: flex-start; width: 12px; height: 0; margin-top: 11px; border-top: 2px solid var(--hs-sage-light); }
.hs-aside .hs-btn { margin-top: 28px; width: 100%; justify-content: center; }
.hs-aside__links a { color: var(--hs-white); border-bottom: 1px solid rgba(255, 255, 255, 0.3); }
.hs-aside__links a:hover { color: var(--hs-sage-light); border-bottom-color: currentColor; }
@media (max-width: 820px) { .hs-aside { position: static; } }

/* Questions */
.hs-faq-sec { background: var(--bg-canvas); }
.hs-faq { display: grid; grid-template-columns: minmax(0, 0.7fr) minmax(0, 1.3fr); gap: clamp(32px, 5vw, 72px); align-items: start; }
.hs-faq .hs-h2 { position: sticky; top: calc(var(--hdr-h) + 24px); }
.hs-faq__list { display: flex; flex-direction: column; gap: 10px; }
.hs-faq__item { background: var(--hs-white); border-radius: var(--r-md); }
.hs-faq__item summary { list-style: none; cursor: pointer; position: relative; padding: 20px 56px 20px 24px; font-family: var(--font-display); font-weight: 600; font-size: 18px; line-height: 1.4; color: var(--hs-charcoal); border-radius: var(--r-md); }
.hs-faq__item summary::-webkit-details-marker { display: none; }
.hs-faq__item summary::after { content: ''; position: absolute; right: 24px; top: 50%; width: 10px; height: 10px; border-right: 2px solid var(--hs-sea-grass); border-bottom: 2px solid var(--hs-sea-grass); transform: translateY(-70%) rotate(45deg); transition: transform 200ms; }
.hs-faq__item[open] summary::after { transform: translateY(-30%) rotate(-135deg); }
.hs-faq__item summary:focus-visible { outline-offset: 2px; }
.hs-faq__a { padding: 0 24px 22px; }
.hs-faq__a p { margin: 0; font-size: 16px; line-height: 1.65; color: var(--fg-1); max-width: 64ch; }
@media (max-width: 860px) { .hs-faq { grid-template-columns: 1fr; gap: 24px; } .hs-faq .hs-h2 { position: static; } }

/* Related links */
.hs-related { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.hs-related__label { font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; color: var(--hs-slate-text); margin-right: 8px; }
.hs-related a { font-size: 15px; color: var(--hs-charcoal); border: 1px solid var(--hs-hairline); padding: 8px 16px; border-radius: 999px; transition: border-color 180ms, color 180ms; }
.hs-related a:hover { border-color: var(--hs-harbour); color: var(--hs-harbour-text); }

/* Hub cards */
.hs-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 640px) { .hs-grid--2 { grid-template-columns: 1fr; } }
.hs-card:not(.hs-svc) { min-height: 240px; }
.hs-card__eye { font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; color: var(--hs-slate-text); }
.hs-card[data-tier="commercial"] .hs-card__eye { color: var(--hs-sea-grass); }
.hs-section--dark .hs-card__eye { color: var(--hs-sage-light); }

/* Sticky call to action on phones and tablets */
.hs-sticky-cta { position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; display: none; padding: 12px var(--pad-x); background: var(--hs-charcoal); border-top: 2px solid var(--hs-sea-grass); --focus: var(--hs-white); }
.hs-sticky-cta .hs-btn { display: flex; justify-content: center; }
@media (max-width: 1080px) {
  .has-sticky-cta .hs-sticky-cta { display: block; }
  .has-sticky-cta .hs-ftr { padding-bottom: 110px; }
}

/* ---------------- UTILITIES (replace one-off inline styles) ---------------- */
.u-pt-md { padding-top: clamp(40px, 5vw, 64px) !important; }
.u-pb-md { padding-bottom: clamp(40px, 5vw, 64px) !important; }
.u-pt-lg { padding-top: clamp(48px, 6vw, 72px) !important; }
.u-pb-lg { padding-bottom: clamp(48px, 6vw, 72px) !important; }
.u-on-dark-84 { color: rgba(255, 255, 255, 0.84) !important; }
.u-mw-20 { max-width: 20ch !important; }
.u-mw-22 { max-width: 22ch !important; }
.u-mw-24 { max-width: 24ch !important; }
.u-mw-60 { max-width: 60ch !important; }
.u-mw-62 { max-width: 62ch !important; }
.u-span-all { grid-column: 1 / -1 !important; }
.u-white { color: var(--hs-white) !important; }
.u-ink { color: var(--fg-1) !important; }
.u-ar-5-4 { aspect-ratio: 5 / 4 !important; }
.u-mt-0 { margin-top: 0 !important; }
.u-accent-600 { color: var(--hs-harbour-text) !important; font-weight: 600 !important; }
.u-align-center { align-items: center !important; }
.u-btn-row { display: flex !important; gap: 16px; justify-content: center; flex-wrap: wrap; }
.hs-muted { color: var(--hs-slate-text) !important; }

/* A two-column block whose left column is only a heading stacks instead */
.hs-two:has(> div:first-child > .hs-h2:only-child),
.hs-two:has(> div:first-child > .hs-h2:first-child + .hs-arrow:last-child) { grid-template-columns: minmax(0, 1fr); gap: 24px; max-width: 880px; }
.hs-two:has(> div:first-child > .hs-h2:only-child) > div:first-child .hs-h2 { max-width: 24ch; margin-top: 0; }
.hs-two:has(> div:first-child > .hs-h2:only-child) > .hs-prose { max-width: 68ch; }
.hs-two:has(> div:first-child > .hs-h2:only-child) > .hs-prose > p:first-child { font-size: 19px; line-height: 1.6; }
.hs-prose .lede { font-family: var(--font-display); font-weight: 300; font-size: clamp(18px, 2vw, 22px); line-height: 1.5; color: var(--hs-charcoal); }

/* ---------------- STONE PHOTO BLOCKS ---------------- */
.hs-photo { position: relative; background-size: cover; background-position: center; }
.hs-photo--bastion { background-image: url('/img/stone-bastion-800.webp'); }
.hs-about-photo.hs-photo--bastion { background-image: url('/img/stone-bastion-1200.webp'); }
.hs-photo--seagrass::after { content: ''; position: absolute; inset: 0; background: linear-gradient(140deg, rgba(102, 113, 96, 0.34), rgba(28, 26, 25, 0.16)); mix-blend-mode: multiply; }
.hs-about-photo { height: clamp(300px, 46vw, 560px); }

/* Dark regulated-advice notice (commercial pages) */
.hs-disclaimer.hs-card--ink { background: var(--hs-ink); border-color: var(--hs-hairline-dark); color: rgba(255, 255, 255, 0.72); --focus: var(--hs-white); }
.hs-disclaimer.hs-card--ink .hs-arrow { color: var(--hs-sage-light); }
.hs-card--ink .hs-confirm, .hs-section--dark .hs-confirm { color: var(--hs-harbour-light); border-color: var(--hs-harbour-light); }
.hs-container--narrow.hs-prose { max-width: 820px; }
.hs-container--narrow.hs-prose > * { max-width: 68ch; }

/* ---------------- ABOUT, CARL, PARTNERS ---------------- */
.hs-card__num { font-family: var(--font-display); font-weight: 300; font-size: 13px; letter-spacing: 0.18em; color: var(--hs-harbour-text); }
.hs-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.hs-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 980px) { .hs-grid--3, .hs-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .hs-grid--3, .hs-grid--4 { grid-template-columns: 1fr; } }
/* Cards whose titles and body copy line up across a row */
.hs-grid--align { grid-auto-rows: auto; row-gap: 1px; }
.hs-grid--align .hs-card { display: grid; grid-row: span 3; grid-template-rows: subgrid; row-gap: 12px; align-content: start; }
.hs-grid--align .hs-card__title { line-height: 1.3; align-self: start; }
.hs-grid--align .hs-card__body { align-self: start; }

.hs-portrait { aspect-ratio: 4 / 5; width: 100%; object-fit: cover; object-position: center top; }
.hs-portrait--340 { max-width: 340px; }
.hs-portrait--carl { max-width: 360px; max-height: min(460px, 62vh); justify-self: end; }

/* What independence means */
.hs-ind { display: grid; grid-template-columns: 1fr; gap: 40px; }
.hs-ind__intro { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(24px, 5vw, 72px); align-items: end; }
.hs-ind__intro .hs-h2 { max-width: 18ch; }
.hs-ind__intro .hs-lead { max-width: 40ch; margin: 0; }
.hs-ind__rows { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.hs-ind__row { display: grid; grid-template-columns: 1fr; grid-template-rows: auto 1fr; gap: 12px; padding: 28px 26px; background: var(--bg-surface); border-radius: var(--r-lg); }
.hs-ind__row p { margin: 0; font-size: 16px; line-height: 1.6; color: var(--fg-1); }
.hs-ind__label { font-family: var(--font-display); font-weight: 600; font-size: 18px; line-height: 1.4; color: var(--hs-charcoal); }
.hs-ind__row--us { background: var(--hs-sea-grass); }
.hs-ind__row--us p, .hs-ind__row--us .hs-ind__label { color: var(--hs-white); }
@media (max-width: 860px) { .hs-ind__intro { grid-template-columns: 1fr; align-items: start; } }
@media (max-width: 760px) { .hs-ind__rows { grid-template-columns: 1fr; } }

/* Stats on dark */
.hs-stats { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid #6B6864; margin-top: 52px; }
.hs-stats--3 { grid-template-columns: repeat(3, 1fr); }
.hs-stat { padding: 34px 24px 30px; border-right: 1px solid #6B6864; }
.hs-stat:last-child { border-right: 0; }
.hs-stat__rule { width: 24px; height: 2px; background: var(--hs-sage-light); border: 0; margin: 0 0 18px; }
.hs-stat__n { font-family: var(--font-display); font-weight: 300; font-size: clamp(40px, 5vw, 54px); line-height: 1; letter-spacing: -0.02em; color: var(--hs-white); margin-bottom: 10px; }
.hs-stat__n strong { font-weight: 700; }
.hs-stat__l { font-size: 14px; line-height: 1.5; color: var(--hs-limestone); max-width: 22ch; }
@media (max-width: 720px) {
  .hs-stats { grid-template-columns: repeat(2, 1fr); }
  .hs-stat:nth-child(2n) { border-right: 0; }
  .hs-stat:nth-child(-n+2) { border-bottom: 1px solid #6B6864; }
  .hs-stats--3 { grid-template-columns: 1fr; }
  .hs-stats--3 .hs-stat { border-right: 0; border-bottom: 1px solid #6B6864; }
}

/* Registration numbers */
.hs-fsp { display: flex; flex-wrap: wrap; gap: 12px 40px; margin-top: 40px; font-size: 15px; color: var(--hs-limestone); }
.hs-fsp span { display: block; font-family: var(--font-display); font-weight: 600; font-size: 20px; color: var(--hs-white); margin-bottom: 2px; }

/* Ghost button */
.hs-btn--ghost { background: transparent; color: var(--hs-white); border: 1px solid rgba(255, 255, 255, 0.45); }
.hs-btn--ghost:hover { border-color: var(--hs-white); background: rgba(255, 255, 255, 0.08); color: var(--hs-white); }
.hs-section--seagrass .hs-btn--ghost { border-color: rgba(255, 255, 255, 0.7); }

/* Professional partners */
.hs-pp-hero { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: clamp(40px, 6vw, 88px); align-items: center; }
.hs-pp-hero .hs-h1 { max-width: 20ch; }
.hs-pp-card { background: var(--hs-white); border-radius: var(--r-lg); overflow: hidden; box-shadow: 0 1px 0 var(--hs-hairline), 0 16px 40px rgba(28, 26, 25, 0.08); }
.hs-pp-card__img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; object-position: center 22%; }
.hs-pp-card__body { padding: 24px 26px 26px; display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.hs-pp-card__body strong { font-family: var(--font-display); font-weight: 600; font-size: 20px; color: var(--hs-charcoal); }
.hs-pp-card__body span { font-size: 15px; line-height: 1.55; color: var(--fg-1); }
.hs-pp-card__body .hs-btn { margin-top: 8px; width: 100%; justify-content: center; }
@media (max-width: 900px) { .hs-pp-hero { grid-template-columns: 1fr; } .hs-pp-card { max-width: 420px; } }
.hs-pp-steps { list-style: none; margin: 40px 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.hs-pp-steps li { background: var(--hs-ink); border-radius: var(--r-lg); padding: 28px 24px; display: grid; grid-template-rows: subgrid; grid-row: span 3; row-gap: 12px; }
.hs-pp-steps span { width: 36px; height: 36px; border-radius: 50%; border: 2px solid var(--hs-sage-light); color: var(--hs-sage-light); display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-weight: 600; font-size: 15px; }
.hs-pp-steps h3 { margin: 0; font-weight: 600; font-size: 19px; line-height: 1.3; color: var(--hs-white); }
.hs-pp-steps p { margin: 0; font-size: 16px; line-height: 1.55; color: var(--hs-limestone); }
@media (max-width: 980px) { .hs-pp-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .hs-pp-steps { grid-template-columns: 1fr; } .hs-pp-steps li { grid-row: auto; display: flex; flex-direction: column; } }
.hs-pp-promise { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 4vw, 56px); margin-top: 48px; padding-top: 36px; border-top: 1px solid #6B6864; }
.hs-pp-promise p { margin: 0; font-size: 18px; line-height: 1.6; color: var(--hs-limestone); }
.hs-pp-promise strong { display: block; font-family: var(--font-display); font-weight: 600; font-size: 20px; color: var(--hs-white); margin-bottom: 6px; }
@media (max-width: 760px) { .hs-pp-promise { grid-template-columns: 1fr; } }
.hs-pp-terms { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 5vw, 72px); align-items: start; }
.hs-pp-terms p { font-size: 16px; line-height: 1.65; color: var(--fg-1); margin: 0; max-width: 60ch; }
.hs-pp-terms .mt-3 { margin-top: 12px; }
@media (max-width: 860px) { .hs-pp-terms { grid-template-columns: 1fr; } }
.hs-pp-stays { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 760px) { .hs-pp-stays { grid-template-columns: 1fr; } }
@media (max-width: 860px) { .hs-li--page { min-height: 44px; } }
@media (max-width: 380px) { .hs-segment { grid-template-columns: 1fr; } }

/* ---------------- LEGAL PAGES ---------------- */
.hs-lender-list { columns: 3; column-gap: 32px; }
.hs-lender-list li { break-inside: avoid; }
@media (max-width: 640px) { .hs-lender-list { columns: 2; } }
.hs-legal-updated { margin-top: 48px; font-size: 14px; color: var(--hs-slate-text); }
.hs-legal-nav { display: flex; flex-wrap: wrap; gap: 10px 24px; margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--hs-hairline); font-size: 15px; font-weight: 700; }

/* ---------------- OUR PARTNERS ---------------- */
.hs-partners { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
@media (max-width: 760px) { .hs-partners { grid-template-columns: 1fr; } }
.hs-partner { display: flex; flex-direction: column; gap: 12px; padding: 34px 28px 28px; background: var(--bg-surface); border-radius: var(--r-lg); border-top: 3px solid var(--hs-sea-grass); }
.hs-partner__logo { height: 56px; width: auto; max-width: 100%; align-self: flex-start; object-fit: contain; object-position: left; margin-bottom: 8px; }
.hs-partner__name { margin: 0; font-family: var(--font-display); font-weight: 600; font-size: 22px; line-height: 1.3; color: var(--hs-charcoal); }
.hs-partner__desc { margin: 0; font-size: 16px; line-height: 1.6; }
.hs-partner__link { margin-top: auto; }
.hs-partners__refer { margin: 40px 0 0; }
