/* ============================================================
   AMERICANA FINANCIAL GROUP — design system
   "The engraved standard": stock-certificate craft, modern editorial
   Palette: parchment ivory / presidential navy / old gold / oxblood
   Type: Libre Caslon Display (display) · Libre Franklin (text)
   ============================================================ */

:root {
  /* --- color tokens --- */
  --ivory:        #FFFFFF;
  --ivory-bright: #FFFFFF;
  --ivory-deep:   #F4F5F7;
  --navy:         #102743;
  --navy-deep:    #0A1B31;
  --navy-soft:    #1B3A5F;
  --ink:          #1B2536;
  --ink-soft:     #4A5468;
  --gold:         #B8912F;
  --gold-bright:  #D9B65C;
  --gold-deep:    #7F6318;
  --gold-pale:    #E9D9A8;
  --fed-blue:     #1E5F98;
  --carmine:      #9E2B33;
  --carmine-deep: #7C1F28;
  --cream:        #F6F1E4;   /* warm text tone, on navy only */
  --line:         rgba(27, 37, 54, .13);
  --line-gold:    rgba(184, 145, 47, .45);
  --line-ivory:   rgba(246, 241, 228, .18);

  /* --- type --- */
  --f-display: "Libre Caslon Display", "Libre Caslon Text", Georgia, serif;
  --f-serif:   "Libre Caslon Text", Georgia, serif;
  --f-sans:    "Libre Franklin", "Helvetica Neue", Arial, sans-serif;

  --fs-hero:  clamp(2.6rem, 1.2rem + 5.2vw, 5.4rem);
  --fs-h1:    clamp(2.3rem, 1.4rem + 3.2vw, 4rem);
  --fs-h2:    clamp(1.9rem, 1.2rem + 2.4vw, 3rem);
  --fs-h3:    clamp(1.35rem, 1.1rem + .9vw, 1.8rem);
  --fs-h4:    1.15rem;
  --fs-body:  1.0625rem;
  --fs-small: .9rem;
  --fs-micro: .6875rem;

  /* --- rhythm --- */
  --space-section: clamp(4.5rem, 3rem + 6vw, 8.5rem);
  --wrap: 1240px;
  --wrap-wide: 1400px;
  --nav-h: 78px;
  --topbar-h: 34px;

  --ease-out: cubic-bezier(.19, 1, .22, 1);
  --ease-swift: cubic-bezier(.65, 0, .35, 1);
  --shadow-card: 0 1px 2px rgba(16, 39, 67, .06), 0 12px 40px -12px rgba(16, 39, 67, .18);
  --shadow-pop:  0 2px 6px rgba(10, 27, 49, .12), 0 24px 70px -18px rgba(10, 27, 49, .35);
}

/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  font-family: var(--f-sans);
  font-size: var(--fs-body);
  line-height: 1.65;
  color: var(--ink);
  background: var(--ivory);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img, svg, video, canvas { display: block; max-width: 100%; }
input, button, textarea, select { font: inherit; color: inherit; }
a { color: inherit; }
button { cursor: pointer; background: none; border: 0; }
ul[class], ol[class] { list-style: none; padding: 0; }

::selection { background: var(--gold); color: var(--navy-deep); }

.skip-link {
  position: absolute;
  left: 1rem; top: -100px;
  z-index: 200;
  background: var(--navy-deep);
  color: var(--gold-bright);
  padding: .8em 1.4em;
  font-size: .8rem;
  letter-spacing: .1em;
  text-decoration: none;
  transition: top .3s;
}
.skip-link:focus { top: 1rem; }

:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 3px;
  border-radius: 2px;
}

/* ---------- typography ---------- */
h1, h2, h3, .display {
  font-family: var(--f-display);
  font-weight: 400;
  line-height: 1.08;
  letter-spacing: -.01em;
  color: var(--navy);
  text-wrap: balance;
}
h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); }
h4 { font-family: var(--f-sans); font-weight: 600; font-size: var(--fs-h4); color: var(--navy); }
.display-italic { font-style: italic; }

p { max-width: 68ch; }
.lede {
  font-size: clamp(1.1rem, 1rem + .5vw, 1.3rem);
  line-height: 1.6;
  color: var(--ink-soft);
  max-width: 56ch;
}

/* certificate microprint — the utility voice */
.eyebrow {
  font-family: var(--f-sans);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: .32em;
  text-transform: uppercase;
  color: var(--gold-deep);
  display: flex;
  align-items: center;
  gap: .9em;
}
.eyebrow::before {
  content: "";
  width: 34px; height: 2px;
  background: linear-gradient(90deg, var(--carmine) 0 45%, var(--gold) 45% 100%);
  flex: none;
}
.eyebrow--center { justify-content: center; }
.eyebrow--center::after {
  content: "";
  width: 34px; height: 2px;
  background: linear-gradient(90deg, var(--gold) 0 55%, var(--carmine) 55% 100%);
  flex: none;
}
.eyebrow--onnavy { color: var(--gold-bright); }

.microprint {
  font-size: var(--fs-micro);
  letter-spacing: .22em;
  text-transform: uppercase;
  font-weight: 500;
}

/* ---------- layout ---------- */
.wrap { width: min(100% - 3rem, var(--wrap)); margin-inline: auto; }
.wrap--wide { width: min(100% - 3rem, var(--wrap-wide)); margin-inline: auto; }
.section { padding-block: var(--space-section); position: relative; }
.section--navy {
  background: var(--navy);
  color: rgba(246, 241, 228, .88);
}
.section--navy h1, .section--navy h2, .section--navy h3,
.section--deep h1, .section--deep h2, .section--deep h3 { color: var(--ivory-bright); }
.section--navy .lede, .section--deep .lede { color: rgba(246, 241, 228, .84); }
.section--deep { background: var(--navy-deep); color: rgba(246, 241, 228, .88); }
.section--tint { background: var(--ivory-deep); }

.section-head { max-width: 720px; margin-bottom: clamp(2.5rem, 2rem + 2vw, 4rem); }
.section-head .eyebrow { margin-bottom: 1.1rem; }
.section-head h2 { margin-bottom: 1rem; }
.section-head--center { margin-inline: auto; text-align: center; }
.section-head--center p { margin-inline: auto; }

/* gold hairline between sections, like a certificate rule */
.rule-band {
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--line-gold) 18%, var(--line-gold) 82%, transparent);
  position: relative;
}
.rule-band::after {
  content: "";
  position: absolute;
  left: 50%; top: 50%;
  width: 22px; height: 22px;
  translate: -50% -50%;
  background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20100%20100%22%3E%3Cdefs%3E%3Cpath%20id%3D%22b%22%20d%3D%22M49%2047%20C36%2036%2038%2014%2057%203%20C73%2018%2068%2041%2052%2049%20Z%22/%3E%3Cmask%20id%3D%22s%22%3E%3Crect%20width%3D%22100%22%20height%3D%22100%22%20fill%3D%22%23fff%22/%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M50%2032%20L54.4%2044.6%20L67.7%2044.9%20L57%2052.9%20L60.9%2065.7%20L50%2058.1%20L39.1%2065.7%20L43%2052.9%20L32.3%2044.9%20L45.6%2044.6%20Z%22/%3E%3C/mask%3E%3C/defs%3E%3Cg%20mask%3D%22url%28%23s%29%22%3E%3Cuse%20href%3D%22%23b%22%20fill%3D%22%23EE4A55%22/%3E%3Cuse%20href%3D%22%23b%22%20fill%3D%22%2339B0DE%22%20transform%3D%22rotate%2872%2050%2050%29%22/%3E%3Cuse%20href%3D%22%23b%22%20fill%3D%22%236DCFF6%22%20transform%3D%22rotate%28144%2050%2050%29%22/%3E%3Cuse%20href%3D%22%23b%22%20fill%3D%22%231B8FCE%22%20transform%3D%22rotate%28216%2050%2050%29%22/%3E%3Cuse%20href%3D%22%23b%22%20fill%3D%22%23EE4A55%22%20transform%3D%22rotate%28288%2050%2050%29%22/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat;
}

/* ---------- buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .6em;
  font-family: var(--f-sans);
  font-size: .82rem;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 1.05em 1.9em;
  border: 1px solid transparent;
  position: relative;
  transition: transform .45s var(--ease-out), box-shadow .45s var(--ease-out),
              background-color .3s, color .3s, border-color .3s;
  white-space: nowrap;
}
.btn:hover { transform: translateY(-2px); }
.btn:active { transform: translateY(0); }

.btn--gold {
  background: linear-gradient(160deg, var(--gold-bright), var(--gold) 55%, var(--gold-deep));
  color: var(--navy-deep);
  box-shadow: 0 1px 0 rgba(255,255,255,.35) inset, 0 10px 26px -10px rgba(140, 109, 31, .7);
}
.btn--gold:hover { box-shadow: 0 1px 0 rgba(255,255,255,.4) inset, 0 16px 34px -10px rgba(140, 109, 31, .8); }

.btn--line {
  border-color: var(--line);
  color: var(--navy);
  background: transparent;
}
.btn--line:hover { border-color: var(--gold); color: var(--gold-deep); }

.btn--line-light {
  border-color: rgba(246,241,228,.35);
  color: var(--ivory-bright);
  background: transparent;
}
.btn--line-light:hover { border-color: var(--gold-bright); color: var(--gold-bright); }

.btn--navy { background: var(--navy); color: var(--ivory-bright); }
.btn--navy:hover { background: var(--navy-soft); }

.btn .btn-arrow { transition: transform .35s var(--ease-out); }
.btn:hover .btn-arrow { transform: translateX(4px); }

/* text link with gold underline draw */
.link-gold {
  font-weight: 600;
  font-size: .85rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--gold-deep);
  padding-bottom: .35em;
  background: linear-gradient(var(--gold), var(--gold)) left bottom / 0% 1px no-repeat;
  transition: background-size .5s var(--ease-out);
}
.link-gold:hover { background-size: 100% 1px; }

/* ============================================================
   NAVIGATION
   ============================================================ */
.topbar {
  background: var(--navy-deep);
  color: rgba(246, 241, 228, .8);
  height: var(--topbar-h);
  display: flex;
  align-items: center;
  position: relative;
  z-index: 60;
}
.topbar .wrap--wide {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}
.topbar .microprint { font-size: .625rem; letter-spacing: .26em; }
.topbar a { text-decoration: none; transition: color .3s; }
.topbar a:hover { color: var(--gold-bright); }
.topbar-right { display: flex; align-items: center; gap: 2em; }
.topbar .microprint { white-space: nowrap; }
/* the topbar is a single 34px rail — shed items rather than wrap */
@media (max-width: 1180px) {
  .topbar > .wrap--wide > .microprint:first-child { display: none; }
  .topbar .wrap--wide { justify-content: flex-end; }
  .topbar-right { gap: 1.5em; }
}
@media (max-width: 860px) { .topbar .tb-mail { display: none; } }
.tb-mail { text-transform: none; letter-spacing: .1em; }
.tb-social {
  display: flex;
  align-items: center;
  gap: 1.05em;
  padding-left: 1.6em;
  border-left: 1px solid rgba(246,241,228,.22);
}
.tb-social a {
  display: grid;
  place-items: center;
  color: rgba(246,241,228,.72);
  transition: color .3s, transform .3s var(--ease-out);
}
.tb-social svg { width: 13px; height: 13px; display: block; }
.tb-social a:hover { color: var(--gold-bright); transform: translateY(-1px); }

.nav {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(255, 255, 255, .92);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--line-gold);
  transition: box-shadow .4s;
}
.nav.is-scrolled { box-shadow: 0 10px 40px -18px rgba(16, 39, 67, .35); }
.scroll-progress {
  position: absolute;
  left: 0; bottom: -1px;
  height: 2px;
  width: 100%;
  background: linear-gradient(90deg, var(--carmine), var(--gold-deep) 45%, var(--gold-bright));
  transform: scaleX(var(--progress, 0));
  transform-origin: left;
  z-index: 2;
}
.nav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  height: var(--nav-h);
  transition: height .4s var(--ease-out);
}
.nav.is-scrolled .nav-inner { height: 64px; }

.brand {
  display: flex;
  align-items: center;
  gap: .8rem;
  text-decoration: none;
  flex: none;
}
.brand-mark { width: 44px; height: 44px; transition: transform .8s var(--ease-out); }
.brand:hover .brand-mark { transform: rotate(72deg); }
.brand-word { line-height: 1.05; }
.brand-word .top {
  font-family: var(--f-sans);
  font-weight: 700;
  font-size: 1.02rem;
  letter-spacing: .12em;
  color: var(--navy);
  display: block;
}
.brand-word .bottom {
  color: var(--gold-deep);
  font-family: var(--f-serif);
  font-style: italic;
  font-size: .8rem;
  color: var(--gold-deep);
  display: block;
  letter-spacing: .05em;
}

.nav-links {
  display: flex;
  align-items: center;
  gap: clamp(1rem, .5rem + 1.2vw, 2.1rem);
}
.nav-links > li { position: relative; }
.nav-links a.nav-link {
  font-size: .84rem;
  font-weight: 500;
  letter-spacing: .08em;
  text-decoration: none;
  color: var(--ink);
  padding: .5em 0;
  background: linear-gradient(var(--gold), var(--gold)) left bottom / 0% 1.5px no-repeat;
  transition: background-size .45s var(--ease-out), color .3s;
}
.nav-links a.nav-link:hover,
.nav-links a.nav-link.is-active { background-size: 100% 1.5px; color: var(--navy); }
.nav-links a.nav-link.is-active { font-weight: 600; }

/* dropdown */
.has-drop > .nav-link { display: inline-flex; align-items: center; gap: .4em; }
.has-drop .caret { width: 8px; height: 8px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translateY(-2px); transition: transform .3s; }
.drop {
  position: absolute;
  top: calc(100% + 14px);
  left: 50%;
  translate: -50% 0;
  min-width: 300px;
  background: var(--ivory-bright);
  border: 1px solid var(--line-gold);
  box-shadow: var(--shadow-pop);
  padding: .6rem;
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: opacity .3s var(--ease-out), transform .3s var(--ease-out), visibility .3s;
}
.drop::before { /* hover bridge */
  content: ""; position: absolute; inset: -16px 0 auto; height: 16px;
}
.has-drop:hover .drop, .has-drop:focus-within .drop {
  opacity: 1; visibility: visible; transform: translateY(0);
}
.has-drop:hover .caret { transform: rotate(225deg) translateY(-2px); }
.drop a {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  text-decoration: none;
  padding: .8em 1em;
  font-size: .9rem;
  font-weight: 500;
  transition: background .25s, color .25s;
}
.drop a:hover { background: var(--ivory-deep); color: var(--navy); }
.drop a .microprint { color: var(--gold-deep); font-size: .55rem; }
.drop a.drop-all { border-top: 1px solid var(--line); margin-top: .4rem; color: var(--gold-deep); font-style: italic; font-family: var(--f-serif); }

.nav-cta { display: flex; align-items: center; gap: 1.4rem; flex: none; }
.nav-phone {
  text-align: right;
  text-decoration: none;
  line-height: 1.25;
  transition: opacity .3s;
}
.nav-phone:hover { opacity: .75; }
.nav-phone .microprint { color: var(--ink-soft); font-size: .58rem; display: block; }
.nav-phone .num { font-family: var(--f-serif); font-size: 1.05rem; color: var(--navy); font-weight: 400; letter-spacing: .02em; }
.nav .btn { padding: .95em 1.5em; font-size: .72rem; }

/* burger */
.burger { display: none; width: 44px; height: 44px; position: relative; z-index: 80; }
.burger span {
  position: absolute; left: 10px; right: 10px; height: 2px;
  background: var(--navy);
  transition: transform .4s var(--ease-swift), opacity .3s, background .3s;
}
.burger span:nth-child(1) { top: 15px; }
.burger span:nth-child(2) { top: 21px; }
.burger span:nth-child(3) { top: 27px; }
body.menu-open .burger span { background: var(--ivory); }
body.menu-open .burger span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
body.menu-open .burger span:nth-child(2) { opacity: 0; }
body.menu-open .burger span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* mobile menu */
.mobile-menu {
  position: fixed; inset: 0; z-index: 70;
  background: var(--navy-deep);
  color: var(--ivory);
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 5.5rem 2rem 2.5rem;
  opacity: 0; visibility: hidden;
  transition: opacity .45s var(--ease-out), visibility .45s;
  overflow-y: auto;
}
body.menu-open .mobile-menu { opacity: 1; visibility: visible; }
.mobile-menu nav a {
  display: block;
  font-family: var(--f-display);
  font-size: clamp(1.7rem, 6vw, 2.4rem);
  color: var(--ivory);
  text-decoration: none;
  padding: .32em 0;
  border-bottom: 1px solid var(--line-ivory);
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .5s var(--ease-out), transform .5s var(--ease-out), color .3s;
}
.mobile-menu nav a:hover { color: var(--gold-bright); }
body.menu-open .mobile-menu nav a { opacity: 1; transform: none; }
.mobile-menu nav a:nth-child(1) { transition-delay: .08s; }
.mobile-menu nav a:nth-child(2) { transition-delay: .13s; }
.mobile-menu nav a:nth-child(3) { transition-delay: .18s; }
.mobile-menu nav a:nth-child(4) { transition-delay: .23s; }
.mobile-menu nav a:nth-child(5) { transition-delay: .28s; }
.mobile-menu nav a:nth-child(6) { transition-delay: .33s; }
.mobile-menu nav a:nth-child(7) { transition-delay: .38s; }
.mobile-menu .mm-foot { margin-top: 2rem; display: flex; flex-direction: column; gap: 1rem; }
.mobile-menu .mm-foot .btn { align-self: flex-start; }
.mobile-menu .mm-phones { display: flex; gap: 2.5rem; color: rgba(246,241,228,.82); font-size: .95rem; }
.mobile-menu .mm-phones a { color: var(--gold-bright); text-decoration: none; font-family: var(--f-serif); }

/* ============================================================
   HERO — home
   ============================================================ */
.hero {
  position: relative;
  min-height: calc(100svh - var(--nav-h) - var(--topbar-h));
  display: flex;
  align-items: center;
  background: var(--navy-deep);
  color: var(--ivory);
  overflow: hidden;
  isolation: isolate;
}
.hero-media { position: absolute; inset: 0; z-index: -3; }
.hero-media img, .hero-media video {
  width: 100%; height: 100%; object-fit: cover;
  opacity: .55;
  transform: scale(1.06);
  animation: heroDrift 26s var(--ease-out) forwards;
}
@keyframes heroDrift { to { transform: scale(1) translateY(-1.5%); } }
.hero-scrim {
  position: absolute; inset: 0; z-index: -2;
  background:
    linear-gradient(100deg, rgba(10,27,49,.92) 8%, rgba(10,27,49,.55) 46%, rgba(10,27,49,.25) 75%),
    linear-gradient(0deg, var(--navy-deep) 0%, transparent 30%);
}
.hero-guilloche {
  position: absolute; z-index: -1;
  right: -12vw; top: 50%;
  translate: 0 -50%;
  width: min(58vw, 900px);
  aspect-ratio: 1;
  opacity: .5;
  pointer-events: none;
}

.hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(2.5rem, 5vw, 6rem);
  align-items: center;
  padding-block: clamp(4.5rem, 9vh, 8rem);
}
/* single-column hero: let the statement run, cap the supporting copy */
.hero-grid > div { max-width: 62ch; }
.hero-grid .lede { max-width: 54ch; }

/* lead-capture band sitting at the fold, just under the hero */
.hero-strip {
  background: var(--ivory-deep);
  border-bottom: 1px solid var(--line-gold);
  padding-block: clamp(2rem, 1.4rem + 2vw, 3rem);
}
.hero-strip .consult-strip { margin-top: 0; }
.hero h1 {
  font-size: var(--fs-hero);
  color: var(--ivory-bright);
  margin: 1.4rem 0 1.6rem;
}
.hero h1 em {
  font-style: italic;
  color: var(--gold-bright);
}
.hero .lede { color: rgba(246,241,228,.88); }
.hero-ctas { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 2.4rem; }
.hero-meta {
  display: flex;
  gap: 2.6rem;
  margin-top: 3.2rem;
  padding-top: 1.6rem;
  border-top: 1px solid var(--line-ivory);
}
.hero-meta div { line-height: 1.4; }
.hero-meta .microprint { color: var(--gold-bright); font-size: .58rem; display: block; margin-bottom: .35em; }
.hero-meta .val { font-family: var(--f-serif); font-size: 1.02rem; color: var(--ivory-bright); }

/* headline word-reveal */
.reveal-lines .line { display: block; overflow: hidden; }
.reveal-lines .line > span {
  display: block;
  transform: translateY(110%);
  transition: transform 1.1s var(--ease-out);
}
.is-loaded .reveal-lines .line > span { transform: none; }
.is-loaded .reveal-lines .line:nth-child(2) > span { transition-delay: .12s; }
.is-loaded .reveal-lines .line:nth-child(3) > span { transition-delay: .24s; }

/* ============================================================
   LEAD CARD — the certificate
   ============================================================ */
.lead-card {
  background: var(--ivory-bright);
  color: var(--ink);
  box-shadow: var(--shadow-pop);
  position: relative;
  padding: 2rem 1.9rem 1.9rem;
}
/* double certificate border */
.lead-card::before {
  content: "";
  position: absolute; inset: 7px;
  border: 1px solid var(--line-gold);
  pointer-events: none;
}
.lead-card::after {
  content: "";
  position: absolute; inset: 10px;
  border: 1px solid rgba(184,145,47,.2);
  pointer-events: none;
}
.lead-card .lc-head { text-align: center; margin-bottom: 1.4rem; }
.lead-card .lc-head .microprint { color: var(--gold-deep); font-size: .58rem; }
.lead-card .lc-head h3 { font-size: 1.5rem; margin-top: .4rem; }
.lead-card .lc-serial {
  position: absolute;
  top: 16px; right: 20px;
  font-size: .55rem;
  letter-spacing: .18em;
  color: var(--carmine);
  font-weight: 600;
}

/* ---------- forms ---------- */
.field { position: relative; margin-bottom: 1rem; }
.field label {
  display: block;
  font-size: .62rem;
  font-weight: 600;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-bottom: .45em;
}
.field input, .field select, .field textarea {
  width: 100%;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--line);
  padding: .55em 0;
  font-size: .98rem;
  font-family: var(--f-sans);
  color: var(--ink);
  border-radius: 0;
  transition: border-color .3s;
  appearance: none;
}
.field textarea { resize: vertical; min-height: 74px; }
.field input:focus, .field select:focus, .field textarea:focus {
  outline: none;
  border-bottom-color: var(--gold);
  box-shadow: 0 1px 0 var(--gold);
}
.field select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238C6D1F' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .2em center;
  padding-right: 1.4em;
  cursor: pointer;
}
.field.is-invalid input, .field.is-invalid select, .field.is-invalid textarea {
  border-bottom-color: var(--carmine);
  box-shadow: 0 1px 0 var(--carmine);
}
.field .err {
  display: none;
  font-size: .68rem;
  color: var(--carmine);
  letter-spacing: .04em;
  padding-top: .3em;
}
.field.is-invalid .err { display: block; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1.2rem; }
.form-note {
  font-size: .68rem;
  color: var(--ink-soft);
  letter-spacing: .03em;
  line-height: 1.5;
  margin-top: .9rem;
  text-align: center;
}
.form-success {
  display: none;
  text-align: center;
  padding: 2.2rem .5rem;
}
.form-success.is-shown { display: block; }
.form-success .seal-check { width: 62px; height: 62px; margin: 0 auto 1.1rem; }
.form-success h4 { font-family: var(--f-display); font-size: 1.4rem; font-weight: 400; }
.form-success p { font-size: .9rem; color: var(--ink-soft); margin: .6rem auto 0; }
form.is-done .form-fields { display: none; }

/* dark form variant (on navy) */
.form--dark .field label { color: rgba(246,241,228,.72); }
.form--dark .field input, .form--dark .field select, .form--dark .field textarea {
  color: var(--ivory-bright);
  border-bottom-color: var(--line-ivory);
}
.form--dark .field select option { color: var(--ink); }
.form--dark .form-note { color: rgba(246,241,228,.62); }
.form--dark .form-success h4 { color: var(--ivory-bright); }
.form--dark .form-success p { color: rgba(246,241,228,.78); }

/* ============================================================
   PAGE HERO (interior pages) + CONSULT STRIP
   ============================================================ */
.page-hero {
  background: var(--navy);
  color: var(--ivory);
  position: relative;
  overflow: hidden;
  isolation: isolate;
  padding: clamp(3.5rem, 4rem + 2vw, 7rem) 0 clamp(2.5rem, 3vw, 4rem);
}
.page-hero .hero-guilloche { right: -18vw; width: min(52vw, 720px); opacity: .35; }
.page-hero .eyebrow { color: var(--gold-bright); margin-bottom: 1.2rem; }
.page-hero h1 { color: var(--ivory-bright); max-width: 16ch; }
.page-hero h1 em { color: var(--gold-bright); font-style: italic; }
.page-hero .lede { margin-top: 1.4rem; color: rgba(246,241,228,.9); }
.page-hero-media {
  position: absolute; inset: 0; z-index: -2;
}
.page-hero-media img { width: 100%; height: 100%; object-fit: cover; opacity: .22; }
.page-hero-media::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(100deg, var(--navy) 30%, rgba(16,39,67,.6) 70%, rgba(16,39,67,.35));
}

/* consult strip: lead capture within first scroll on interior pages */
.consult-strip {
  background: var(--ivory-bright);
  border: 1px solid var(--line-gold);
  box-shadow: var(--shadow-pop);
  position: relative;
  margin-top: clamp(2.5rem, 4vw, 4rem);
  padding: 1.5rem 1.75rem;
}
.consult-strip::before {
  content: "";
  position: absolute; inset: 6px;
  border: 1px solid rgba(184,145,47,.22);
  pointer-events: none;
}
.consult-strip .cs-label {
  position: absolute;
  top: -0.7em; left: 1.6rem;
  background: var(--ivory-bright);
  padding: 0 .9em;
  font-size: .6rem;
  font-weight: 700;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--gold-deep);
}
.consult-strip form {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.2rem 1.6rem;
  align-items: end;
}
.consult-strip .btn { justify-self: start; }
.consult-strip .field { margin-bottom: 0; }
.consult-strip .btn { padding: .9em 1.4em; font-size: .68rem; }
.consult-strip .cs-or {
  font-family: var(--f-serif);
  font-style: italic;
  font-size: .85rem;
  color: var(--ink-soft);
  padding-bottom: .8em;
}

/* ============================================================
   HOME SECTIONS
   ============================================================ */

/* trust band under hero */
.trust-band {
  background: var(--navy-deep);
  border-top: 1px solid var(--line-ivory);
  color: var(--ivory);
  padding: 1.6rem 0;
}
.trust-band .wrap {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 2rem;
  flex-wrap: wrap;
}
.trust-band .microprint { color: rgba(246,241,228,.72); }
.trust-band .microprint b { color: var(--gold-bright); font-weight: 600; }

/* --- stats --- */
.stats {
  display: grid;
  /* auto-fit so the band stays even whether there are three stats or four */
  grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
  border-block: 1px solid var(--line);
}
.stat {
  padding: 2.4rem 2rem;
  border-left: 1px solid var(--line);
  position: relative;
}
.stat:first-child { border-left: 0; }
.stat .num {
  font-family: var(--f-display);
  font-size: clamp(2.6rem, 2rem + 2.4vw, 4.2rem);
  color: var(--navy);
  line-height: 1;
  display: flex;
  align-items: baseline;
}
.stat .num .suffix { font-size: .45em; color: var(--gold-deep); margin-left: .08em; }
.stat .cap { margin-top: .7rem; font-size: .8rem; color: var(--ink-soft); letter-spacing: .06em; max-width: 22ch; }

/* --- service cards: policy documents --- */
.svc-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.4rem;
}
/* five-card grids (services overview, P&C coverages) flow 3+2 */
.svc-grid:has(> :nth-child(5)) { grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }
.svc-card {
  position: relative;
  background: var(--ivory-bright);
  border: 1px solid var(--line);
  box-shadow: 0 1px 2px rgba(16,39,67,.05);
  padding: 2.2rem 1.8rem 1.9rem;
  text-decoration: none;
  display: flex;
  flex-direction: column;
  min-height: 380px;
  transition: transform .6s var(--ease-out), box-shadow .6s var(--ease-out), border-color .4s;
  overflow: hidden;
}
.svc-card::before { /* top ledger rule */
  content: "";
  position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, var(--gold-deep), var(--gold-bright), var(--gold-deep));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .7s var(--ease-out);
}
.svc-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-pop); border-color: var(--line-gold); }
.svc-card:hover::before { transform: scaleX(1); }
.svc-card .form-no {
  font-size: .55rem;
  font-weight: 600;
  letter-spacing: .22em;
  color: var(--carmine);
  margin-bottom: 1.6rem;
}
.svc-card .svc-glyph { height: 54px; width: 54px; margin-bottom: 1.5rem; color: var(--gold-deep); transition: color .4s, transform .6s var(--ease-out); }
.svc-card:hover .svc-glyph { color: var(--gold); transform: translateY(-3px); }
.svc-card h3 { font-size: 1.42rem; margin-bottom: .8rem; }
.svc-card p { font-size: .92rem; color: var(--ink-soft); line-height: 1.6; flex: 1; }
.svc-card .svc-foot {
  margin-top: 1.6rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--line);
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--gold-deep);
}
.svc-card .svc-foot .btn-arrow { transition: transform .4s var(--ease-out); }
.svc-card:hover .svc-foot .btn-arrow { transform: translateX(5px); }

.svc-more {
  margin-top: 2.6rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .7rem 1rem;
}
.svc-more .microprint { color: var(--ink-soft); margin-right: .6rem; }
.chip {
  font-size: .78rem;
  font-weight: 500;
  letter-spacing: .05em;
  border: 1px solid var(--line);
  padding: .5em 1.1em;
  border-radius: 100px;
  background: var(--ivory-bright);
  color: var(--ink-soft);
  transition: border-color .3s, color .3s, transform .3s;
}
.chip:hover { border-color: var(--gold); color: var(--gold-deep); transform: translateY(-1px); }

/* --- mission quote band --- */
.mission {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  text-align: center;
}
.mission .guilloche-bg {
  position: absolute; z-index: -1;
  left: 50%; top: 50%;
  translate: -50% -50%;
  width: min(120vw, 1300px);
  aspect-ratio: 1;
  opacity: .16;
  pointer-events: none;
}
.mission-mark {
  position: absolute; z-index: 0;
  left: 50%; top: 50%;
  translate: -50% -50%;
  width: min(52vw, 460px);
  height: auto;
  opacity: .07;
  pointer-events: none;
}
.mission .wrap { position: relative; z-index: 1; }

.mission-eagle {
  position: absolute; z-index: -1;
  left: 50%; top: 50%;
  translate: -50% -50%;
  width: min(64vw, 620px);
  opacity: .12;
  filter: invert(1);
  mix-blend-mode: screen;
  pointer-events: none;
  -webkit-mask-image: radial-gradient(closest-side, #000 55%, transparent 96%);
  mask-image: radial-gradient(closest-side, #000 55%, transparent 96%);
}
.mission blockquote {
  font-family: var(--f-display);
  font-size: clamp(1.7rem, 1.1rem + 2.6vw, 3.2rem);
  line-height: 1.28;
  color: var(--ivory-bright);
  max-width: 21ch;
  margin: 1.8rem auto;
}
.mission blockquote em { color: var(--gold-bright); font-style: italic; }
.mission .attr {
  font-size: .72rem;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: rgba(246,241,228,.66);
}
.mission .attr b { color: var(--gold-bright); font-weight: 600; }

/* --- process: the ledger line --- */
.process { counter-reset: step; }
.process-track {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 0;
  position: relative;
  margin-top: 3rem;
}
.process-track::before { /* spine */
  content: "";
  position: absolute;
  top: 27px; left: 3%; right: 3%;
  height: 1px;
  background: var(--line-gold);
}
.p-step { position: relative; padding: 0 1.1rem; }
.p-step .dot {
  counter-increment: step;
  width: 54px; height: 54px;
  border-radius: 50%;
  border: 1px solid var(--line-gold);
  background: var(--ivory);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--f-display);
  font-size: 1.25rem;
  color: var(--gold-deep);
  position: relative;
  z-index: 1;
  transition: background .4s, color .4s, transform .5s var(--ease-out), border-color .4s;
}
.p-step .dot::before { content: counter(step, decimal-leading-zero); }
.p-step:hover .dot { background: var(--navy); color: var(--gold-bright); border-color: var(--navy); transform: scale(1.08); }
.p-step h4 { margin: 1.3rem 0 .5rem; font-size: .98rem; }
.p-step p { font-size: .84rem; color: var(--ink-soft); line-height: 1.55; }

/* --- team medallions --- */
.team-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 2.2rem 1.6rem;
}
.medallion { text-align: center; }
.medallion .coin {
  width: min(100%, 150px);
  aspect-ratio: 1;
  margin: 0 auto 1.2rem;
  border-radius: 50%;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(circle at 32% 28%, #16324f, var(--navy-deep) 72%);
  color: var(--gold-bright);
  font-family: var(--f-display);
  font-size: 2rem;
  letter-spacing: .04em;
  /* cameo mount — hairline gold, ivory gap, outer gold rule, then the drop */
  box-shadow:
    0 0 0 1px rgba(184,145,47,.65),
    0 0 0 6px var(--ivory),
    0 0 0 7px rgba(184,145,47,.32),
    0 16px 34px -16px rgba(10,27,49,.5);
  transition: transform .6s var(--ease-out), box-shadow .6s var(--ease-out);
}
/* real headshot sits on top of the initials, which stay as the fallback
   if an image is ever missing */
.medallion .coin img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: 50% 12%;        /* headshots — hold the face, not the chin */
  border-radius: 50%;
  z-index: 1;
}
/* lift only — a portrait should never tilt */
.medallion:hover .coin {
  transform: translateY(-5px);
  box-shadow:
    0 0 0 1px rgba(184,145,47,.9),
    0 0 0 6px var(--ivory),
    0 0 0 7px rgba(184,145,47,.5),
    0 24px 44px -18px rgba(10,27,49,.6);
}
.medallion h4 { font-size: .98rem; }
.medallion .role { font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--gold-deep); margin-top: .3em; }
.medallion .contact { font-size: .78rem; color: var(--ink-soft); margin-top: .5em; line-height: 1.5; }
.medallion .contact a { text-decoration: none; transition: color .3s; }
.medallion .contact a:hover { color: var(--gold-deep); }

/* --- split feature (image + copy) --- */
.split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2.5rem, 5vw, 5.5rem);
  align-items: center;
}
.split-media {
  position: relative;
  overflow: hidden;
}
.split-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s var(--ease-out); }
.split-media:hover img { transform: scale(1.04); }
.split-media .frame {
  position: absolute; inset: 14px;
  border: 1px solid rgba(246,241,228,.55);
  mix-blend-mode: overlay;
  pointer-events: none;
}
.split-media .plate {
  position: absolute;
  left: 0; bottom: 0;
  border-left: 3px solid var(--carmine);
  background: var(--navy-deep);
  color: var(--gold-bright);
  font-size: .6rem;
  font-weight: 600;
  letter-spacing: .28em;
  text-transform: uppercase;
  padding: .8em 1.4em;
}
.split-copy .eyebrow { margin-bottom: 1.1rem; }
.split-copy h2 { margin-bottom: 1.2rem; }
.split-copy p + p { margin-top: 1em; }
.split-copy .lede { margin-bottom: 1rem; }

/* checklist with seal ticks */
.sealed-list { margin-top: 1.6rem; display: grid; gap: .85rem; }
.sealed-list li {
  display: flex;
  gap: .9rem;
  align-items: baseline;
  font-size: .97rem;
  color: var(--ink-soft);
}
.sealed-list li::before {
  content: "✦";
  color: var(--gold);
  font-size: .8em;
  flex: none;
  translate: 0 -1px;
}
.section--navy .sealed-list li { color: rgba(246,241,228,.86); }

/* --- locations band --- */
.loc-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.6rem;
}
.loc-card {
  position: relative;
  min-height: 430px;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  text-decoration: none;
  isolation: isolate;
}
.loc-card img {
  position: absolute; inset: 0; z-index: -2;
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 1.6s var(--ease-out);
}
.loc-card:hover img { transform: scale(1.05); }
.loc-card::after {
  content: "";
  position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(10deg, rgba(10,27,49,.92) 12%, rgba(10,27,49,.35) 55%, rgba(10,27,49,.12));
  transition: background .5s;
}
.loc-card .loc-body { padding: 2.2rem; color: var(--ivory); width: 100%; }
.loc-card .microprint { color: var(--gold-bright); }
.loc-card h3 { color: var(--ivory-bright); font-size: 1.8rem; margin: .5rem 0 .6rem; }
.loc-card address { font-style: normal; font-size: .92rem; color: rgba(246,241,228,.86); line-height: 1.6; }
.loc-card .loc-tel {
  display: inline-block;
  margin-top: .9rem;
  font-family: var(--f-serif);
  font-size: 1.1rem;
  color: var(--gold-bright);
  text-decoration: none;
}
.loc-card .loc-tel:hover { text-decoration: underline; }
.loc-card .frame {
  position: absolute; inset: 12px;
  border: 1px solid rgba(246,241,228,.28);
  pointer-events: none;
  transition: inset .5s var(--ease-out);
}
.loc-card:hover .frame { inset: 18px; }

/* --- resource cards --- */
.res-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.4rem;
}
/* the reading room reads as gilt-edged parchment */
.res-card {
  background: linear-gradient(165deg, #FBF3DC 0%, #F3E4BC 55%, #EBD69F 100%);
  border: 1px solid var(--gold);
  padding: 1.9rem 1.7rem;
  text-decoration: none;
  display: flex;
  flex-direction: column;
  gap: .8rem;
  position: relative;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(140,109,31,.12);
  transition: transform .5s var(--ease-out), box-shadow .5s var(--ease-out), border-color .3s;
}
.res-card::before {   /* inner gilt rule */
  content: "";
  position: absolute; inset: 6px;
  border: 1px solid rgba(140,109,31,.28);
  pointer-events: none;
}
.res-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 14px 40px -14px rgba(140,109,31,.5);
  border-color: var(--gold-deep);
}
.res-card .microprint { color: var(--carmine-deep); position: relative; }
.res-card h3 { font-size: 1.22rem; line-height: 1.25; color: var(--navy-deep); position: relative; }
.res-card p { font-size: .88rem; color: #5A4A22; flex: 1; position: relative; }
.res-card .read {
  font-size: .72rem; font-weight: 700; letter-spacing: .2em;
  text-transform: uppercase; color: var(--navy);
  position: relative;
}

/* --- reading-room PDF capture (email or phone) --- */
.pdf-grab {
  margin-top: 1.4rem;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: clamp(1.2rem, 3vw, 2.4rem);
  background: linear-gradient(160deg, var(--navy-soft), var(--navy-deep) 72%);
  border: 1px solid var(--gold);
  padding: clamp(1.4rem, 1rem + 2vw, 2.2rem) clamp(1.5rem, 1rem + 2vw, 2.6rem);
  position: relative;
}
.pdf-grab::before {
  content: "";
  position: absolute; inset: 7px;
  border: 1px solid rgba(184,145,47,.25);
  pointer-events: none;
}
.pg-seal {
  width: clamp(46px, 6vw, 62px);
  color: var(--gold-bright);
  flex: none;
  position: relative;
}
.pg-copy { position: relative; }
.pg-copy .microprint { color: var(--gold-bright); font-size: .58rem; }
.pg-copy h3 {
  color: var(--ivory-bright);
  font-size: clamp(1.05rem, .95rem + .6vw, 1.4rem);
  margin: .3em 0 .25em;
}
.pg-copy p { font-size: .84rem; color: rgba(246,241,228,.75); max-width: 46ch; }
.pdf-grab form {
  display: flex;
  gap: .7rem;
  align-items: flex-start;
  position: relative;
}
.pdf-grab .field { margin: 0; min-width: clamp(180px, 20vw, 250px); }
.pdf-grab .field label { color: rgba(246,241,228,.72); }
.pdf-grab .field input {
  border-bottom-color: rgba(246,241,228,.3);
  color: var(--ivory-bright);
}
.pdf-grab .field input:focus { border-bottom-color: var(--gold-bright); }
.pdf-grab .btn { white-space: nowrap; }
.pdf-grab .magnet-unlocked { display: none; }
.pdf-grab.is-unlocked form { display: none; }
.pdf-grab.is-unlocked .magnet-unlocked {
  display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; position: relative;
}
.pdf-grab .magnet-unlocked p { font-size: .84rem; color: rgba(246,241,228,.8); }
.pdf-grab .magnet-unlocked b { color: var(--ivory-bright); }
@media (max-width: 980px) {
  .pdf-grab { grid-template-columns: 1fr; }
  .pg-seal { display: none; }
  .pdf-grab form { flex-direction: column; align-items: stretch; }
}

/* --- video briefings --- */
.video-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.4rem;
}
.video-card {
  background: var(--ivory-bright);
  border: 1px solid var(--line);
  text-decoration: none;
  display: flex;
  flex-direction: column;
  gap: .7rem;
  padding-bottom: 1.7rem;
  transition: transform .5s var(--ease-out), box-shadow .5s var(--ease-out), border-color .3s;
}
.video-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-card); border-color: var(--line-gold); }
.video-card .vc-media {
  position: relative;
  display: block;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border-bottom: 1px solid var(--line);
}
.video-card .vc-media img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 1.2s var(--ease-out);
}
.video-card:hover .vc-media img { transform: scale(1.04); }
.video-card .vc-play {
  position: absolute;
  left: 50%; top: 50%;
  translate: -50% -50%;
  width: 58px; height: 58px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: rgba(10, 27, 49, .72);
  color: var(--gold-bright);
  border: 1px solid rgba(217, 182, 92, .55);
  backdrop-filter: blur(4px);
  transition: transform .45s var(--ease-out), background-color .3s;
}
.video-card .vc-play svg { width: 26px; height: 26px; margin-left: 3px; }
.video-card:hover .vc-play { transform: scale(1.1); background: rgba(10, 27, 49, .88); }
.video-card .microprint { color: var(--carmine); padding-inline: 1.7rem; }
.video-card h3 { font-size: 1.22rem; line-height: 1.25; padding-inline: 1.7rem; }
.video-card p { font-size: .88rem; color: var(--ink-soft); padding-inline: 1.7rem; }

/* --- calculator ledger list --- */
.tool-list {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid var(--line);
}
.tool-list li { border-bottom: 1px solid var(--line); }
.tool-list a {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  padding: .85rem .2rem;
  text-decoration: none;
  font-size: .98rem;
  color: var(--navy);
  transition: color .25s, padding-left .35s var(--ease-out);
}
.tool-list a::after { content: "→"; color: var(--gold-deep); opacity: 0; transition: opacity .25s; }
.tool-list a:hover { color: var(--gold-deep); padding-left: .6rem; }
.tool-list a:hover::after { opacity: 1; }
.tool-list .tool-more a { font-weight: 600; color: var(--gold-deep); letter-spacing: .06em; }
.tool-list .tool-more a::after { content: none; }

/* --- library shelf tiles --- */
.shelf-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.4rem;
}
.shelf-card {
  border: 1px solid var(--line);
  background: var(--ivory-bright);
  padding: 1.7rem 1.5rem;
  text-decoration: none;
  display: flex;
  flex-direction: column;
  gap: .55rem;
  transition: transform .5s var(--ease-out), box-shadow .5s var(--ease-out), border-color .3s;
}
.shelf-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-card); border-color: var(--line-gold); }
.shelf-card .microprint { color: var(--carmine); }
.shelf-card h3 { font-size: 1.15rem; }
.shelf-card p { font-size: .85rem; color: var(--ink-soft); }

/* --- CTA band --- */
.cta-band {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  text-align: center;
}
.cta-band .guilloche-bg {
  position: absolute; z-index: -1;
  left: 50%; top: 50%;
  translate: -50% -50%;
  width: min(110vw, 1200px);
  aspect-ratio: 1;
  opacity: .14;
}
.cta-band h2 { max-width: 20ch; margin: 1.2rem auto 1rem; }
.cta-band .lede { margin: 0 auto 2.2rem; }
.cta-band .hero-ctas { justify-content: center; margin-top: 0; }
.cta-phones {
  margin-top: 2.6rem;
  display: flex;
  justify-content: center;
  gap: 3.5rem;
  flex-wrap: wrap;
}
.cta-phones div { text-align: center; }
.cta-phones .microprint { color: rgba(246,241,228,.68); display: block; margin-bottom: .4em; }
.cta-phones a {
  font-family: var(--f-serif);
  font-size: 1.35rem;
  color: var(--gold-bright);
  text-decoration: none;
}
.cta-phones a:hover { text-decoration: underline; }

/* ============================================================
   FOOTER
   ============================================================ */
.footer {
  background: var(--navy-deep);
  color: rgba(246,241,228,.8);
  position: relative;
  overflow: hidden;
}
.footer-eagle {
  position: absolute;
  right: -60px; bottom: -80px;
  width: 420px;
  opacity: .2;
  pointer-events: none;
  filter: invert(1);
  mix-blend-mode: screen;
  -webkit-mask-image: radial-gradient(closest-side, #000 45%, transparent 95%);
  mask-image: radial-gradient(closest-side, #000 45%, transparent 95%);
}
.footer-main {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1.2fr;
  gap: 3rem;
  padding: 4.5rem 0 3.5rem;
}
.footer h5 {
  font-size: .66rem;
  font-weight: 700;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--gold-bright);
  margin-bottom: 1.3rem;
}
.footer-brand .brand-word .top { color: var(--ivory-bright); }
.footer-brand p { font-size: .9rem; line-height: 1.7; margin-top: 1.2rem; max-width: 34ch; }
.footer-brand .brand { margin-bottom: .4rem; }
.footer ul { display: grid; gap: .65rem; list-style: none; padding: 0; margin: 0; }
.footer ul a {
  font-size: .9rem;
  text-decoration: none;
  transition: color .3s;
}
.footer ul a:hover { color: var(--gold-bright); }
.footer address { font-style: normal; font-size: .88rem; line-height: 1.7; }
.footer address + address { margin-top: 1.4rem; }
.footer address b { color: var(--ivory-bright); font-weight: 600; display: block; margin-bottom: .2em; }
.footer address a { color: var(--gold-bright); text-decoration: none; }
.footer address a:hover { text-decoration: underline; }
.footer-legal {
  border-top: 1px solid var(--line-ivory);
  padding: 1.6rem 0 2rem;
  font-size: .72rem;
  line-height: 1.7;
  color: rgba(246,241,228,.76);
}
.footer-legal .wrap {
  display: flex;
  justify-content: space-between;
  gap: 2rem;
  flex-wrap: wrap;
}
.footer-legal a { color: rgba(246,241,228,.76); }
.footer-legal a:hover { color: var(--gold-bright); }

/* ============================================================
   CONSULT OVERLAY (global) — form + booking
   ============================================================ */
.consult-overlay {
  position: fixed; inset: 0; z-index: 100;
  display: flex;
  justify-content: flex-end;
  visibility: hidden;
  pointer-events: none;
}
.consult-overlay.is-open { visibility: visible; pointer-events: auto; }
.consult-backdrop {
  position: absolute; inset: 0;
  background: rgba(10, 27, 49, .55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  opacity: 0;
  transition: opacity .5s var(--ease-out);
}
.consult-overlay.is-open .consult-backdrop { opacity: 1; }
.consult-panel {
  position: relative;
  width: min(1020px, 100%);
  height: 100%;
  background: var(--ivory);
  color: var(--ink);
  transform: translateX(100%);
  transition: transform .65s var(--ease-swift);
  overflow-y: auto;
  overscroll-behavior: contain;
  border-left: 1px solid var(--line-gold);
}
/* the brand mark, held large and faint behind the panel */
.consult-panel::before {
  content: "";
  position: absolute;
  right: -8%; top: 50%;
  translate: 0 -50%;
  width: min(52%, 440px);
  aspect-ratio: 1;
  background: url("../assets/afg-mark-silhouette-navy.png") center / contain no-repeat;
  opacity: .045;
  pointer-events: none;
  z-index: 0;
}
.consult-overlay.is-open .consult-panel { transform: none; }
.consult-close {
  position: absolute;
  top: 22px; right: 26px;
  width: 46px; height: 46px;
  border: 1px solid var(--line);
  border-radius: 50%;
  color: var(--ink-soft);
  background: var(--ivory);
  font-size: 1.1rem;
  display: flex; align-items: center; justify-content: center;
  transition: border-color .3s, color .3s, transform .4s var(--ease-out);
  z-index: 3;
}
.consult-close:hover { border-color: var(--gold); color: var(--gold-deep); transform: rotate(90deg); }
.consult-inner { padding: clamp(2.5rem, 5vw, 4.5rem); position: relative; z-index: 1; }
.consult-mark { width: 54px; height: 54px; object-fit: contain; display: block; margin-bottom: 1.4rem; }
.consult-inner .eyebrow { color: var(--gold-deep); margin-bottom: 1rem; }
.consult-inner h2 { color: var(--navy-deep); margin-bottom: .6rem; }
.consult-inner > p { color: var(--ink-soft); font-size: .98rem; }
.consult-cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 4vw, 4rem);
  margin-top: 2.6rem;
}
.consult-col h3 {
  color: var(--navy-deep);
  font-size: 1.25rem;
  padding-bottom: .9rem;
  margin-bottom: 1.4rem;
  border-bottom: 1px solid var(--line-gold);
  display: flex;
  align-items: baseline;
  gap: .8em;
}
.consult-col h3 .microprint { color: var(--gold-deep); font-size: .55rem; }
.consult-phones {
  margin-top: 2rem;
  padding-top: 1.4rem;
  border-top: 1px solid var(--line);
  display: flex;
  gap: 2.4rem;
  font-size: .85rem;
}
.consult-phones .microprint { color: var(--ink-soft); display: block; margin-bottom: .3em; }
.consult-phones a { color: var(--gold-deep); text-decoration: none; font-family: var(--f-serif); font-size: 1.05rem; }

/* the booking widget also lives on the light panel — scoped so the
   dark one on the contact page keeps its ivory treatment */
.consult-panel .booking-badge { color: var(--ink-soft); border: 1px dashed var(--line-gold); }
.consult-panel .cal-head .cal-month { color: var(--navy-deep); }
.consult-panel .cal-nav button { border: 1px solid var(--line); color: var(--ink-soft); }
.consult-panel .cal-nav button:hover:not(:disabled) { border-color: var(--gold); color: var(--gold-deep); }
.consult-panel .cal-grid .dow { color: var(--ink-soft); }
.consult-panel .cal-day { color: var(--ink); }
.consult-panel .cal-day:disabled { color: rgba(27,37,54,.38); }
.consult-panel .cal-day.is-avail { border-color: var(--line-gold); }
.consult-panel .cal-day.is-avail:hover { border-color: var(--gold); color: var(--gold-deep); }
.consult-panel .cal-day.is-selected { background: var(--gold); border-color: var(--gold); color: var(--navy-deep); }
.consult-panel .cal-slots .microprint { color: var(--ink-soft); }
.consult-panel .slot { border: 1px solid var(--line); color: var(--ink); }
.consult-panel .slot:hover { border-color: var(--gold); color: var(--gold-deep); }
.consult-panel .slot.is-selected { background: var(--gold); border-color: var(--gold); color: var(--navy-deep); }
.consult-panel .cal-type { color: var(--ink-soft); border: 1px solid var(--line); }
.consult-panel .cal-type:hover { border-color: var(--gold); color: var(--gold-deep); }
.consult-panel .cal-type.is-selected { background: var(--gold); border-color: var(--gold); color: var(--navy-deep); }
.consult-panel .booking .form-note,
.consult-panel .booking-note { color: var(--ink-soft); }

/* ---------- booking placeholder ---------- */
.booking { position: relative; max-width: 460px; }
.booking-badge {
  display: inline-flex;
  align-items: center;
  gap: .6em;
  font-size: .6rem;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: rgba(246,241,228,.66);
  border: 1px dashed rgba(246,241,228,.3);
  padding: .5em 1em;
  margin-bottom: 1.3rem;
}
.booking-badge::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--gold-bright); }
.cal-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1rem;
}
.cal-head .cal-month { font-family: var(--f-display); font-size: 1.2rem; color: var(--ivory-bright); }
.cal-nav { display: flex; gap: .5rem; }
.cal-nav button {
  width: 34px; height: 34px;
  border: 1px solid var(--line-ivory);
  color: var(--ivory);
  border-radius: 50%;
  transition: border-color .3s, color .3s;
}
.cal-nav button:hover:not(:disabled) { border-color: var(--gold-bright); color: var(--gold-bright); }
.cal-nav button:disabled { opacity: .3; cursor: default; }
.cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
  text-align: center;
}
.cal-grid .dow {
  font-size: .58rem;
  font-weight: 700;
  letter-spacing: .12em;
  color: rgba(246,241,228,.76);
  padding: .5em 0;
  text-transform: uppercase;
}
.cal-day {
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .85rem;
  color: var(--ivory);
  border-radius: 50%;
  border: 1px solid transparent;
  transition: border-color .25s, background .25s, color .25s;
}
.cal-day:disabled { color: rgba(246,241,228,.45); cursor: default; }
.cal-day.is-avail { border-color: var(--line-ivory); }
.cal-day.is-avail:hover { border-color: var(--gold-bright); color: var(--gold-bright); }
.cal-day.is-selected { background: var(--gold); border-color: var(--gold); color: var(--navy-deep); font-weight: 700; }
.cal-slots { margin-top: 1.3rem; }
.cal-slots .microprint { color: rgba(246,241,228,.68); display: block; margin-bottom: .8em; }
.slot-row { display: flex; flex-wrap: wrap; gap: .55rem; }
.slot {
  font-size: .78rem;
  letter-spacing: .06em;
  border: 1px solid var(--line-ivory);
  color: var(--ivory);
  padding: .55em 1em;
  transition: border-color .25s, background .25s, color .25s;
}
.slot:hover { border-color: var(--gold-bright); color: var(--gold-bright); }
.slot.is-selected { background: var(--gold); border-color: var(--gold); color: var(--navy-deep); font-weight: 600; }
.booking-confirm { margin-top: 1.5rem; }
.booking-confirm .btn { width: 100%; }
.booking-note {
  font-size: .68rem;
  color: rgba(246,241,228,.62);
  margin-top: .9rem;
  line-height: 1.6;
}

/* ============================================================
   INTERIOR PAGE COMPONENTS
   ============================================================ */

/* policy schedule table */
.sched {
  width: 100%;
  border-collapse: collapse;
  font-size: .92rem;
  background: var(--ivory-bright);
  border: 1px solid var(--line);
}
.sched caption {
  caption-side: top;
  text-align: left;
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--carmine);
  padding-bottom: .9em;
}
.sched th, .sched td {
  text-align: left;
  padding: 1em 1.3em;
  border: 1px solid var(--line);
  vertical-align: top;
}
.sched th {
  font-family: var(--f-sans);
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--navy);
  background: var(--ivory-deep);
  white-space: nowrap;
}
.sched td { color: var(--ink-soft); }
.sched td b { color: var(--navy); font-weight: 600; }

/* accordion */
.acc { border-top: 1px solid var(--line); }
.acc-item { border-bottom: 1px solid var(--line); }
.acc-item summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 2rem;
  padding: 1.4rem .2rem;
  font-family: var(--f-display);
  font-size: 1.18rem;
  color: var(--navy);
  transition: color .3s;
}
.acc-item summary::-webkit-details-marker { display: none; }
.acc-item summary:hover { color: var(--gold-deep); }
.acc-item summary .acc-x {
  flex: none;
  width: 15px; height: 15px;
  position: relative;
  translate: 0 2px;
}
.acc-item summary .acc-x::before,
.acc-item summary .acc-x::after {
  content: "";
  position: absolute;
  background: var(--gold-deep);
  transition: transform .4s var(--ease-out);
}
.acc-item summary .acc-x::before { left: 0; right: 0; top: 7px; height: 1.5px; }
.acc-item summary .acc-x::after { top: 0; bottom: 0; left: 7px; width: 1.5px; }
.acc-item[open] summary .acc-x::after { transform: scaleY(0); }
.acc-item .acc-body { padding: 0 .2rem 1.6rem; color: var(--ink-soft); font-size: .95rem; max-width: 62ch; }
.acc-item .acc-body p + p { margin-top: .8em; }

/* calculator */
.calc {
  background: var(--navy);
  color: var(--ivory);
  padding: clamp(2rem, 4vw, 3.5rem);
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.calc::before {
  content: "";
  position: absolute; inset: 10px;
  border: 1px solid var(--line-ivory);
  pointer-events: none;
}
.calc-grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(2rem, 4vw, 4rem); }
.calc h3 { color: var(--ivory-bright); margin-bottom: .4rem; }
.calc .calc-sub { font-size: .85rem; color: rgba(246,241,228,.72); margin-bottom: 2rem; }
.calc-field { margin-bottom: 1.5rem; }
.calc-field .cf-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: .5em;
}
.calc-field label {
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: rgba(246,241,228,.76);
}
.calc-field output {
  font-family: var(--f-serif);
  font-size: 1.05rem;
  color: var(--gold-bright);
}
input[type="range"] {
  width: 100%;
  appearance: none;
  -webkit-appearance: none;
  height: 2px;
  background: linear-gradient(90deg, var(--gold) var(--fill, 50%), rgba(246,241,228,.2) var(--fill, 50%));
  border-radius: 2px;
  outline-offset: 6px;
}
input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 20px; height: 20px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, var(--gold-bright), var(--gold-deep));
  border: 1px solid var(--gold-deep);
  box-shadow: 0 2px 8px rgba(0,0,0,.4);
  cursor: grab;
}
input[type="range"]::-moz-range-thumb {
  width: 20px; height: 20px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, var(--gold-bright), var(--gold-deep));
  border: 1px solid var(--gold-deep);
  cursor: grab;
}
.calc-out { display: flex; flex-direction: column; }
.calc-readout { display: flex; gap: 3rem; margin-bottom: 1.6rem; flex-wrap: wrap; }
.calc-readout .microprint { color: rgba(246,241,228,.68); display: block; margin-bottom: .3em; }
.calc-readout .big {
  font-family: var(--f-display);
  font-size: clamp(1.9rem, 1.4rem + 1.6vw, 2.9rem);
  color: var(--gold-bright);
  line-height: 1;
}
.calc-readout .big.alt { color: var(--ivory-bright); }
.calc-chart { flex: 1; min-height: 220px; width: 100%; }
.calc-note { font-size: .66rem; color: rgba(246,241,228,.76); margin-top: 1.2rem; line-height: 1.6; }

/* glossary */
.glossary dt {
  font-family: var(--f-display);
  font-size: 1.15rem;
  color: var(--navy);
  padding-top: 1.4rem;
}
.glossary dd {
  margin: .4rem 0 1.4rem;
  padding-bottom: 1.4rem;
  border-bottom: 1px solid var(--line);
  color: var(--ink-soft);
  font-size: .95rem;
  max-width: 62ch;
}

/* compliance prose */
.prose { max-width: 72ch; }
.prose h3 { margin: 2.4rem 0 .8rem; font-size: 1.3rem; }
.prose p { color: var(--ink-soft); font-size: .96rem; }
.prose p + p { margin-top: 1em; }
.prose ul { margin: 1em 0; padding-left: 1.2em; color: var(--ink-soft); font-size: .96rem; }
.prose li + li { margin-top: .5em; }

/* contact page */
.contact-grid {
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: clamp(2rem, 4vw, 4.5rem);
  align-items: start;
}
.contact-aside .lead-card { position: sticky; top: calc(var(--nav-h) + 2rem); }

/* office detail rows */
.office-row {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: clamp(2rem, 4vw, 4.5rem);
  align-items: center;
}
.office-row + .office-row { margin-top: var(--space-section); }
.office-row:nth-child(even) .split-media { order: 2; }
.office-facts {
  margin-top: 1.8rem;
  display: grid;
  gap: 0;
  border-top: 1px solid var(--line);
}
.office-facts div {
  display: flex;
  justify-content: space-between;
  gap: 2rem;
  padding: .95em .2em;
  border-bottom: 1px solid var(--line);
  font-size: .92rem;
}
.office-facts .k {
  font-size: .64rem;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--gold-deep);
  padding-top: .35em;
  flex: none;
}
.office-facts .v { text-align: right; color: var(--ink-soft); }
.office-facts .v a { color: var(--navy); text-decoration: none; font-weight: 600; }
.office-facts .v a:hover { color: var(--gold-deep); }

/* ============================================================
   MOTION — scroll reveals
   ============================================================ */
[data-reveal] {
  opacity: 0;
  transform: translateY(34px);
  transition: opacity 1s var(--ease-out), transform 1s var(--ease-out);
  transition-delay: var(--rd, 0s);
  will-change: opacity, transform;
}
[data-reveal].is-in { opacity: 1; transform: none; }
[data-reveal="fade"] { transform: none; }
[data-reveal="left"] { transform: translateX(-40px); }
[data-reveal="right"] { transform: translateX(40px); }
[data-reveal="scale"] { transform: scale(.94); }

/* tilt cards */
[data-tilt] { transform-style: preserve-3d; }
[data-tilt].is-tilting { transition: box-shadow .45s var(--ease-out), border-color .3s, background-color .3s; }

/* marquee of trust words */
.marquee {
  overflow: hidden;
  border-block: 1px solid var(--line-gold);
  padding: 1.1rem 0;
  background: var(--ivory);
  user-select: none;
}
.marquee-track {
  display: flex;
  gap: 4rem;
  width: max-content;
  animation: marquee 38s linear infinite;
}
.marquee:hover .marquee-track { animation-play-state: paused; }
.marquee span {
  font-family: var(--f-display);
  font-size: 1.05rem;
  color: var(--navy);
  display: flex;
  align-items: center;
  gap: 4rem;
  white-space: nowrap;
}
.marquee span::after { content: "✦"; color: var(--gold); font-size: .7em; }
@keyframes marquee { to { transform: translateX(-50%); } }

/* ============================================================
   NAVIGATION AIDS — breadcrumbs + service pager
   ============================================================ */
.crumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .9em;
  margin-bottom: 1.7rem;
  font-size: .64rem;
  font-weight: 600;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: rgba(246,241,228,.6);
}
.crumbs a {
  color: rgba(246,241,228,.78);
  text-decoration: none;
  padding-bottom: .3em;
  background: linear-gradient(var(--gold-bright), var(--gold-bright)) left bottom / 0% 1px no-repeat;
  transition: color .3s, background-size .4s var(--ease-out);
}
.crumbs a:hover { color: var(--gold-bright); background-size: 100% 1px; }
.crumbs .sep { color: var(--gold); opacity: .7; }
.crumbs [aria-current] { color: var(--gold-bright); }

.svc-pager {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: stretch;
  border-block: 1px solid var(--line-gold);
  background: var(--ivory-bright);
}
.svc-pager a { text-decoration: none; transition: background-color .35s; }
.svc-pager a:hover { background: var(--ivory-deep); }
.sp-prev, .sp-next {
  display: grid;
  gap: .55rem;
  align-content: center;
  padding: 2.2rem clamp(1.5rem, 4vw, 3.5rem);
}
.sp-next { justify-items: end; text-align: right; }
.sp-prev .microprint, .sp-next .microprint { color: var(--gold-deep); font-size: .6rem; }
.sp-name {
  font-family: var(--f-display);
  font-size: clamp(1.15rem, 1rem + 1vw, 1.7rem);
  color: var(--navy);
}
.sp-all {
  display: grid;
  place-items: center;
  border-inline: 1px solid var(--line-gold);
  padding: 1rem 2rem;
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .26em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.sp-all:hover { color: var(--gold-deep); }
@media (max-width: 700px) {
  .svc-pager { grid-template-columns: 1fr 1fr; }
  .sp-all { grid-column: 1 / -1; grid-row: 2; border-inline: 0; border-top: 1px solid var(--line-gold); }
  .sp-prev, .sp-next { padding: 1.6rem 1.4rem; }
}

/* ============================================================
   HOME — OUR PROCESS
   ============================================================ */
.hp-track {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.4rem;
  list-style: none;
  padding: 0;
  counter-reset: none;
}
.hp-step {
  position: relative;
  background: var(--ivory-bright);
  border: 1px solid var(--line);
  border-left: 3px solid var(--gold);
  padding: 1.9rem 1.6rem 1.7rem;
  transition: transform .5s var(--ease-out), box-shadow .5s var(--ease-out), border-left-color .35s;
}
.hp-step:first-child { border-left-color: var(--carmine); }
.hp-step:hover { transform: translateY(-4px); box-shadow: var(--shadow-card); border-left-color: var(--carmine); }
.hp-num {
  font-family: var(--f-display);
  font-size: 2.1rem;
  color: var(--gold-deep);
  line-height: 1;
  display: block;
  margin-bottom: .7rem;
}
.hp-step:first-child .hp-num { color: var(--carmine); }
.hp-step h3 { font-size: 1.2rem; margin-bottom: .5rem; }
.hp-step p { font-size: .88rem; color: var(--ink-soft); }
.hp-cta {
  margin-top: clamp(2.2rem, 2rem + 1.5vw, 3.2rem);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.4rem;
  flex-wrap: wrap;
}
.hp-cta .microprint { color: var(--ink-soft); }
@media (max-width: 980px) { .hp-track { grid-template-columns: 1fr 1fr; } }
@media (max-width: 620px) { .hp-track { grid-template-columns: 1fr; } }

/* --- process: connector rail, reassurance row, closing note --- */
.home-process .hp-track { position: relative; margin-top: 2.6rem; }
/* hairline spine running behind the three cards */
.home-process .hp-track::before {
  content: "";
  position: absolute;
  left: 8%; right: 8%; top: 2.9rem;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--line-gold) 12%, var(--line-gold) 88%, transparent);
  z-index: 0;
}
.home-process .hp-step { z-index: 1; }
.home-process .hp-num {
  position: relative;
  display: inline-flex; align-items: center; justify-content: center;
  width: 2.6rem; height: 2.6rem;
  font-size: 1.15rem;
  background: var(--ivory-bright);
  border: 1px solid var(--line-gold);
  border-radius: 50%;
  margin-bottom: 1rem;
  transition: background-color .4s var(--ease-out), color .4s, border-color .4s;
}
.home-process .hp-step:hover .hp-num {
  background: var(--gold); color: var(--ivory-bright); border-color: var(--gold);
}
.home-process .hp-step:first-child:hover .hp-num {
  background: var(--carmine); border-color: var(--carmine);
}

.hp-assure {
  list-style: none; padding: 0;
  margin: clamp(2rem, 1.6rem + 1.4vw, 2.8rem) auto 0;
  display: flex; flex-wrap: wrap;
  align-items: center; justify-content: center;
  gap: .7rem 1.6rem;
}
.hp-assure li {
  position: relative;
  padding-left: 1.5rem;
  font-size: .82rem;
  color: var(--ink-soft);
}
/* small gold check */
.hp-assure li::before {
  content: "";
  position: absolute; left: 0; top: .34em;
  width: .62rem; height: .34rem;
  border-left: 2px solid var(--gold);
  border-bottom: 2px solid var(--gold);
  rotate: -45deg;
}
.hp-cta-note {
  margin-top: 1rem;
  text-align: center;
  font-size: var(--fs-micro);
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
@media (max-width: 900px) { .home-process .hp-track::before { display: none; } }

/* --- three-step conversion layout (About + Home) --- */
.process-track--three {
  grid-template-columns: repeat(3, 1fr);
  gap: 1.4rem;
  margin-top: 2.6rem;
}
.process-track--three::before { display: none; }   /* no spine on cards */
.process-track--three .p-step {
  background: var(--ivory-bright);
  border: 1px solid var(--line);
  border-top: 3px solid var(--gold);
  padding: 1.9rem 1.6rem 1.7rem;
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: .6rem;
  box-shadow: 0 1px 2px rgba(16,39,67,.05);
  transition: transform .5s var(--ease-out), box-shadow .5s var(--ease-out), border-top-color .35s;
}
.process-track--three .p-step:first-child { border-top-color: var(--carmine); }
.process-track--three .p-step:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-card);
  border-top-color: var(--carmine);
}
.process-track--three .p-step .dot { display: none; }
.p-badge, .hp-meta, .p-meta {
  font-size: .6rem;
  font-weight: 700;
  letter-spacing: .26em;
  text-transform: uppercase;
}
.p-badge { color: var(--gold-deep); }
.process-track--three .p-step:first-child .p-badge { color: var(--carmine); }
.process-track--three .p-step h4 {
  font-family: var(--f-display);
  font-weight: 400;
  font-size: clamp(1.15rem, 1rem + .7vw, 1.45rem);
  color: var(--navy);
}
.process-track--three .p-step p { font-size: .9rem; color: var(--ink-soft); flex: 1; }
.p-meta, .hp-meta {
  margin-top: .5rem;
  padding-top: .8rem;
  border-top: 1px solid var(--line-gold);
  color: var(--gold-deep);
  letter-spacing: .18em;
}
/* home variant sits on the same three-up rhythm */
.hp-track--three { grid-template-columns: repeat(3, 1fr); }
.hp-step { display: flex; flex-direction: column; }
.hp-step p { flex: 1; }
@media (max-width: 900px) {
  .process-track--three, .hp-track--three { grid-template-columns: 1fr; }
}

/* ============================================================
   COMMUNITY EVENTS
   ============================================================ */
.evt-list { display: grid; gap: 1.2rem; }
.evt-card {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: clamp(1.2rem, 3vw, 2.4rem);
  background: var(--ivory-bright);
  border: 1px solid var(--line);
  border-left: 3px solid var(--carmine);
  padding: 1.6rem 1.7rem;
  box-shadow: 0 1px 2px rgba(16,39,67,.05);
  transition: transform .45s var(--ease-out), box-shadow .45s var(--ease-out);
}
.evt-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-card); }
.evt-date {
  display: grid; place-items: center; gap: .1rem;
  min-width: 76px;
  padding: .8rem 1rem;
  background: var(--navy-deep);
  color: var(--gold-bright);
}
.evt-mo { font-size: .6rem; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; }
.evt-day { font-family: var(--f-display); font-size: 1.6rem; line-height: 1; color: var(--ivory-bright); }
.evt-body .microprint { color: var(--gold-deep); }
.evt-body h3 { font-size: clamp(1.1rem, 1rem + .6vw, 1.4rem); margin: .35em 0 .4em; }
.evt-body p { font-size: .9rem; color: var(--ink-soft); }
.evt-cta .btn { white-space: nowrap; }
@media (max-width: 820px) {
  .evt-card { grid-template-columns: auto 1fr; }
  .evt-cta { grid-column: 1 / -1; }
}

/* ============================================================
   HOME — FAQ
   ============================================================ */
.faq-list {
  max-width: 900px;
  border-top: 1px solid var(--line-gold);
}
.faq-item { border-bottom: 1px solid var(--line-gold); }
.faq-item summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 1.35rem .2rem;
  cursor: pointer;
  list-style: none;
  font-family: var(--f-display);
  font-size: clamp(1.02rem, .95rem + .4vw, 1.24rem);
  color: var(--navy);
  transition: color .3s;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary:hover { color: var(--gold-deep); }
.faq-mark {
  position: relative;
  width: 15px; height: 15px;
  flex: none;
}
.faq-mark::before, .faq-mark::after {
  content: "";
  position: absolute;
  left: 50%; top: 50%;
  background: var(--carmine);
  translate: -50% -50%;
  transition: transform .4s var(--ease-out), background-color .3s;
}
.faq-mark::before { width: 15px; height: 2px; }
.faq-mark::after  { width: 2px; height: 15px; }
.faq-item[open] .faq-mark::after { transform: scaleY(0); }
.faq-item[open] summary { color: var(--gold-deep); }
.faq-body {
  padding: 0 3rem 1.5rem .2rem;
  animation: faqOpen .45s var(--ease-out);
}
.faq-body p { font-size: .93rem; color: var(--ink-soft); max-width: 68ch; }
.faq-body a { color: var(--gold-deep); font-weight: 600; }
@keyframes faqOpen { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .faq-body { animation: none; } }

/* ============================================================
   BLOG — index cards + article typography
   ============================================================ */
.bp-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.6rem;
}
/* --- recurring insight series (weekly / monthly / annual) --- */
.series-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.4rem;
}
.series-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: .8rem;
  padding: 2rem 1.7rem 1.7rem;
  text-decoration: none;
  background: linear-gradient(160deg, var(--navy-soft), var(--navy-deep) 74%);
  border: 1px solid rgba(184,145,47,.45);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  transition: transform .5s var(--ease-out), box-shadow .5s var(--ease-out), border-color .35s;
}
.series-card::before {          /* cadence stripe */
  content: "";
  position: absolute; left: 0; right: 0; top: 0; height: 3px;
  background: var(--gold);
}
.series-card--weekly::before  { background: var(--carmine); }
.series-card--monthly::before { background: var(--fed-blue); }
.series-card--annual::before  { background: var(--gold); }
.series-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-pop);
  border-color: var(--gold-bright);
}
.series-tag {
  font-family: var(--f-display);
  font-size: clamp(1.2rem, 1.05rem + .8vw, 1.6rem);
  color: var(--ivory-bright);
}
.series-blurb { font-size: .87rem; color: rgba(246,241,228,.8); flex: 1; }
.series-latest {
  display: grid;
  gap: .3rem;
  padding-top: .9rem;
  border-top: 1px solid rgba(184,145,47,.35);
}
.series-latest .microprint { color: var(--gold-bright); font-size: .56rem; }
.series-latest b {
  font-family: var(--f-serif);
  font-weight: 400;
  font-size: .95rem;
  color: var(--ivory-bright);
  line-height: 1.35;
}
.series-card .read { color: var(--gold-bright); font-size: .68rem; font-weight: 700;
  letter-spacing: .2em; text-transform: uppercase; }
@media (max-width: 900px) { .series-grid { grid-template-columns: 1fr; } }

.bp-card {
  position: relative;
  background: var(--ivory-bright);
  border: 1px solid var(--line);
  text-decoration: none;
  display: flex;
  flex-direction: column;
  gap: .7rem;
  padding: 1.7rem 1.6rem 1.6rem;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(16,39,67,.05);
  transition: transform .5s var(--ease-out), box-shadow .5s var(--ease-out), border-color .3s;
}
.bp-card::before {
  content: "";
  position: absolute; left: 0; right: 0; top: 0; height: 3px; z-index: 3;
  background: linear-gradient(90deg, var(--carmine) 0 33%, var(--fed-blue) 33% 66%, var(--gold) 66% 100%);
  transition: height .4s var(--ease-out);
}
.bp-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-card); border-color: var(--line-gold); }
.bp-card:hover::before { height: 5px; }
.bp-thumb {
  display: block;
  margin: -1.7rem -1.6rem .4rem;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--navy-deep);
}
.bp-thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.1s var(--ease-out); }
.bp-card:hover .bp-thumb img { transform: scale(1.05); }
.bp-meta { display: flex; align-items: center; gap: .6em; }
.bp-meta .microprint { color: var(--carmine-deep); font-size: .6rem; }
.bp-meta .bp-dot { color: var(--gold); }
.bp-meta .microprint:last-child { color: var(--ink-soft); }
.bp-card h3 { font-size: 1.28rem; line-height: 1.25; color: var(--navy); }
.bp-card p { font-size: .89rem; color: var(--ink-soft); flex: 1; }
.bp-card .read {
  font-size: .7rem; font-weight: 700; letter-spacing: .2em;
  text-transform: uppercase; color: var(--gold-deep);
}
/* first post runs full width as the lead story */
.bp-card--featured { grid-column: 1 / -1; display: grid; grid-template-columns: 1.15fr 1fr; align-items: stretch; gap: 0; padding: 0; }
.bp-card--featured .bp-thumb { margin: 0; aspect-ratio: auto; height: 100%; min-height: 320px; grid-row: span 4; }
.bp-card--featured .bp-meta { padding: 2.2rem 2.2rem 0; }
.bp-card--featured h3 { font-size: clamp(1.5rem, 1.2rem + 1.4vw, 2.1rem); padding-inline: 2.2rem; margin-top: .5rem; }
.bp-card--featured p { padding-inline: 2.2rem; font-size: .95rem; margin-top: .6rem; }
.bp-card--featured .read { padding: 0 2.2rem 2.2rem; }
@media (max-width: 980px) {
  .bp-grid { grid-template-columns: 1fr 1fr; }
  .bp-card--featured { grid-template-columns: 1fr; }
  .bp-card--featured .bp-thumb { grid-row: auto; min-height: 220px; }
}
@media (max-width: 640px) { .bp-grid { grid-template-columns: 1fr; } }

.page-hero--article h1 { max-width: 22ch; }
.bp-byline { margin-top: 1.2rem; font-size: .82rem; color: rgba(246,241,228,.8); }
.bp-byline b { color: var(--gold-bright); font-weight: 600; }

/* article body */
.article { max-width: 68ch; margin-inline: auto; }
.article h2 {
  font-size: clamp(1.5rem, 1.3rem + 1vw, 2rem);
  margin: 2.6rem 0 .9rem;
}
.article h3 { font-size: 1.24rem; margin: 2rem 0 .7rem; }
.article p { font-size: 1.06rem; line-height: 1.85; color: var(--ink); margin-bottom: 1.15rem; }
.article p + p { margin-top: 0; }
.article a { color: var(--gold-deep); font-weight: 600; }
.article ul, .article ol { margin: 1.2rem 0 1.6rem; display: grid; gap: .6rem; }
.article ol { padding-left: 1.3rem; }
.article ol li { font-size: 1.02rem; color: var(--ink); line-height: 1.7; }
.article blockquote {
  margin: 2rem 0;
  padding: 1.3rem 1.6rem;
  border-left: 3px solid var(--carmine);
  background: var(--ivory-deep);
}
.article blockquote p {
  font-family: var(--f-serif);
  font-style: italic;
  font-size: 1.16rem;
  color: var(--navy);
  margin: 0;
}
.article .rule-band { margin: 2.4rem 0; }
.article code {
  font-size: .92em;
  background: var(--ivory-deep);
  padding: .12em .4em;
  border: 1px solid var(--line);
}
.article-note {
  margin-top: 2.8rem;
  padding-top: 1.4rem;
  border-top: 1px solid var(--line-gold);
  font-size: .8rem !important;
  color: var(--ink-soft) !important;
  font-style: italic;
}

/* ============================================================
   FINRA BROKERCHECK BAND + DEVELOPER CREDIT
   ============================================================ */
.brokercheck {
  background: var(--navy-deep);
  border-top: 1px solid rgba(184,145,47,.3);
  padding-block: 1.6rem;
}
.bc-inner {
  display: flex;
  align-items: center;
  gap: clamp(1.2rem, 3vw, 2.4rem);
  flex-wrap: wrap;
}
.bc-badge {
  display: inline-flex;
  align-items: center;
  gap: .8rem;
  flex: none;
  text-decoration: none;
  color: var(--gold-bright);
  border: 1px solid rgba(184,145,47,.5);
  padding: .7em 1.1em;
  transition: background-color .35s, color .35s, border-color .35s;
}
.bc-badge:hover { background: var(--gold); color: var(--navy-deep); border-color: var(--gold); }
.bc-shield { width: 26px; flex: none; }
.bc-words { display: grid; line-height: 1.15; }
.bc-mark { font-family: var(--f-display); font-size: 1.08rem; letter-spacing: .01em; }
.bc-by { font-size: .54rem; font-weight: 700; letter-spacing: .28em; text-transform: uppercase; opacity: .8; }
.bc-copy {
  font-size: .78rem;
  color: rgba(246,241,228,.68);
  max-width: 74ch;
  line-height: 1.7;
}
.bc-copy a { color: var(--gold-bright); text-decoration: none; border-bottom: 1px solid rgba(217,182,92,.4); }
.bc-copy a:hover { color: var(--ivory-bright); }
.footer-credit { opacity: .85; }
.footer-credit a { color: var(--gold-bright); }

/* ============================================================
   GUIDE LIBRARY — two-guide magnet (site-wide partial)
   ============================================================ */
.guide-lib { padding-block: clamp(3.4rem, 2.4rem + 4vw, 6rem); }
.magnet--library { grid-template-columns: auto 1fr; }
.magnet-shelf {
  display: flex;
  align-items: flex-end;
  gap: -10px;
  position: relative;
  width: clamp(140px, 17vw, 196px);
}
.magnet-shelf .magnet-doc { transform: rotate(-4deg); }
.magnet-shelf .magnet-doc--two { transform: rotate(3.5deg) translate(-22px, -10px); }
.magnet:hover .magnet-shelf .magnet-doc { transform: rotate(-6deg) translateY(-3px); }
.magnet:hover .magnet-shelf .magnet-doc--two { transform: rotate(5deg) translate(-26px, -14px); }
.magnet-dl-row { display: flex; gap: .8rem; flex-wrap: wrap; }
.magnet-dl-row .btn { padding: .85em 1.3em; font-size: .68rem; }
@media (max-width: 700px) {
  .magnet--library { grid-template-columns: 1fr; }
  .magnet-shelf { display: none; }
}

/* ============================================================
   HERO SLIDES — colonnade film · Chicago · Las Vegas
   ============================================================ */
.hero-slide {
  position: absolute; inset: 0;
  opacity: 0;
  transition: opacity 1.6s var(--ease-out);
}
.hero-slide.is-active { opacity: 1; }
.hero-slide > img,
.hero-slide > video {
  width: 100%; height: 100%;
  object-fit: cover;
}
.hero-slide.is-active > img { animation: heroDrift 18s ease-out forwards; }

.hero-slide-nav {
  position: absolute;
  right: clamp(1.5rem, 4vw, 3.5rem);
  bottom: clamp(1.4rem, 3vw, 2.6rem);
  z-index: 4;
  display: flex;
  align-items: center;
  gap: 1.2rem;
  pointer-events: auto;
}
.hs-label {
  font-size: .6rem;
  font-weight: 600;
  letter-spacing: .26em;
  text-transform: uppercase;
  color: rgba(246,241,228,.72);
  transition: opacity .5s;
}
.hs-dots { display: flex; gap: .55rem; }
.hs-dot {
  width: 26px; height: 2px;
  background: rgba(246,241,228,.3);
  transition: background-color .5s;
  padding: 0;
}
.hs-dot.is-active { background: var(--gold-bright); }
@media (max-width: 900px) { .hs-label { display: none; } }

/* ============================================================
   WELCOME VIDEO
   ============================================================ */
.welcome-video {
  background: var(--ivory);
  position: relative;
  overflow: hidden;
}
.welcome-video .section-head { margin-inline: auto; text-align: center; }
.welcome-video .eyebrow { color: var(--gold-deep); }
.welcome-video .eyebrow::before,
.welcome-video .eyebrow::after { background: var(--gold); }
.welcome-video h2 { color: var(--navy-deep); }
.welcome-video .lede { color: var(--ink-soft); margin-inline: auto; }

.wv-frame {
  margin: clamp(2.4rem, 2rem + 2vw, 3.6rem) auto 0;
  max-width: 940px;
  border: 1px solid var(--line-gold);
  padding: 10px;
  background: #FBF8F1;
  box-shadow: 0 26px 60px -30px rgba(10,27,49,.42);
  position: relative;
}
.wv-frame::before {
  content: "";
  position: absolute; inset: 3px;
  border: 1px solid rgba(184,145,47,.22);
  pointer-events: none;
  z-index: 3;
}
.wv-stage {
  position: relative;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--navy-deep);
}
.wv-poster { width: 100%; height: 100%; object-fit: cover; filter: saturate(.8); }
.wv-scrim {
  position: absolute; inset: 0;
  background:
    radial-gradient(60% 60% at 50% 50%, rgba(10,27,49,.45), rgba(10,27,49,.82) 100%);
}
.wv-stage iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.wv-play {
  position: absolute;
  left: 50%; top: 50%;
  translate: -50% -50%;
  width: clamp(78px, 11vw, 108px);
  color: var(--gold-bright);
  padding: 0;
  transition: transform .5s var(--ease-out), color .4s;
}
.wv-play svg { width: 100%; display: block; }
.wv-play:hover { transform: scale(1.06); color: var(--ivory-bright); }
.wv-frame:hover .wv-play { transform: scale(1.04); }
.wv-badge {
  position: absolute;
  left: 1.2rem; bottom: 1.1rem;
  background: rgba(10,27,49,.7);
  border: 1px solid rgba(184,145,47,.4);
  color: var(--gold-bright);
  padding: .5em 1em;
  font-size: .56rem;
}
.wv-frame figcaption {
  display: flex;
  justify-content: space-between;
  gap: 1.4rem;
  padding: 1rem .3rem .2rem;
  flex-wrap: wrap;
}
.wv-frame figcaption .microprint { color: var(--gold-deep); font-size: .58rem; }
.wv-cap-note { font-size: .78rem; color: var(--ink-soft); font-style: italic; font-family: var(--f-serif); }
.wv-frame.is-playing .wv-play,
.wv-frame.is-playing .wv-scrim,
.wv-frame.is-playing .wv-poster,
.wv-frame.is-playing .wv-badge { display: none; }

/* signature flag bar — red · blue · gold, top edge of the cards */
.svc-card::before,
.persona-card::before {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 0;
  height: 3px;
  z-index: 3;
  background: linear-gradient(90deg,
    var(--carmine) 0 33%, var(--fed-blue) 33% 66%, var(--gold) 66% 100%);
  transform: none;              /* persistent — overrides the old hover-draw */
  transition: height .4s var(--ease-out);
}
.svc-card:hover::before,
.persona-card:hover::before { height: 5px; transform: none; }
.persona-card { position: relative; }

/* ============================================================
   CARD THUMBNAILS — service & persona photography
   ============================================================ */
.card-thumb {
  display: block;
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  margin: -2rem -1.7rem 1.4rem;   /* bleed to the card edges */
  background: var(--navy-deep);
}
.svc-card .card-thumb { margin: -2.2rem -2rem 1.5rem; }
.card-thumb img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 1.1s var(--ease-out), filter .6s;
  filter: saturate(1);
}
.card-thumb::after {
  content: "";
  position: absolute; inset: 0;
  /* grounding shadow at the lower edge only — seats the gold glyph without
     washing the whole photograph in brand navy */
  background: linear-gradient(180deg, rgba(10,27,49,0) 52%, rgba(10,27,49,.30));
  transition: opacity .5s;
}
.svc-card:hover .card-thumb img,
.persona-card:hover .card-thumb img { transform: scale(1.05); filter: saturate(1.04); }
.svc-card:hover .card-thumb::after,
.persona-card:hover .card-thumb::after { opacity: .72; }
/* glyph rides over the photo as a small gold seal */
.card-thumb .svc-glyph,
.card-thumb .persona-glyph {
  position: absolute;
  right: 1rem; bottom: 1rem;
  width: 42px; height: 42px;
  color: var(--gold-bright);
  background: rgba(10,27,49,.76);
  border: 1px solid rgba(184,145,47,.55);
  padding: 7px;
  z-index: 2;
  transition: color .4s, background-color .4s;
}
.svc-card:hover .card-thumb .svc-glyph,
.persona-card:hover .card-thumb .persona-glyph {
  color: var(--navy-deep);
  background: var(--gold-bright);
}
.svc-card, .persona-card { overflow: hidden; }

/* ============================================================
   DUAL-OFFICE NAV PHONE + MEETING-TYPE CHIPS
   ============================================================ */
.nav-phone--dual { display: grid; gap: .15rem; }
.nav-phone--dual a {
  display: flex;
  align-items: baseline;
  gap: .5em;
  text-decoration: none;
  color: var(--navy);
  line-height: 1.15;
}
.nav-phone--dual .pfx {
  font-size: .56rem;
  font-weight: 700;
  letter-spacing: .2em;
  color: var(--gold-deep);
}
.nav-phone--dual .num {
  font-family: var(--f-serif);
  font-size: .92rem;
}
.nav-phone--dual a:hover .num { color: var(--gold-deep); }

.cal-types {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin-bottom: 1.4rem;
}
.cal-type {
  font-size: .62rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(246,241,228,.72);
  border: 1px solid rgba(246,241,228,.3);
  padding: .6em 1em;
  transition: color .3s, border-color .3s, background-color .3s;
}
.cal-type:hover { border-color: var(--gold-bright); color: var(--gold-bright); }
.cal-type.is-selected {
  background: var(--gold);
  border-color: var(--gold);
  color: var(--navy-deep);
  font-weight: 700;
}

/* ============================================================
   TEAM — specialties, locations, per-agent booking
   ============================================================ */
.medallion .spec {
  font-size: .72rem;
  color: var(--ink-soft);
  letter-spacing: .08em;
  display: flex;
  align-items: center;
  gap: .7em;
  flex-wrap: wrap;
  justify-content: center;
}
.loc-chip {
  font-size: .56rem;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--navy);
  border: 1px solid var(--line-gold);
  background: var(--ivory-bright);
  padding: .3em .8em;
}
.agent-profile,
.agent-cal {
  display: inline-block;
  margin-top: .6rem;
  font-size: .66rem;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--gold-deep);
  text-decoration: none;
  border-bottom: 1px solid var(--gold);
  padding-bottom: .25em;
  transition: color .3s;
}
.agent-profile:hover,
.agent-cal:hover { color: var(--navy); }
.agent-profile .btn-arrow,
.agent-cal .btn-arrow { display: inline-block; transition: transform .35s var(--ease-out); }
.agent-cal:hover .btn-arrow { transform: translateX(4px); }

/* specialist desk */
/* auto-fit so the row stays balanced whether there are two specialists or four */
.spec-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); gap: 1.5rem; }
.spec-card {
  background: var(--ivory-bright);
  border: 1px solid var(--line);
  border-top: 2px solid var(--gold);
  padding: 2.2rem 2rem;
  display: flex;
  flex-direction: column;
  gap: .8rem;
  transition: transform .5s var(--ease-out), box-shadow .5s var(--ease-out);
}
.spec-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-card); }
.spec-card .coin {
  width: 74px; height: 74px;
  border-radius: 50%;
  display: grid; place-items: center;
  background: linear-gradient(160deg, var(--navy-soft), var(--navy-deep));
  color: var(--gold-bright);
  font-family: var(--f-display);
  font-size: 1.5rem;
  border: 1px solid var(--line-gold);
}
.spec-card .spec-tag { color: var(--gold-deep); }
.spec-card h3 { font-size: 1.5rem; }
.spec-card p { font-size: .92rem; color: var(--ink-soft); }
.spec-card .contact { font-size: .82rem; }
.spec-card .contact a { color: var(--navy); }
.spec-card .btn { margin-top: auto; align-self: start; }
@media (max-width: 900px) { .spec-grid { grid-template-columns: 1fr; } }

/* department desk on service pages */
.ds-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.4rem; }
.ds-card {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1.2rem;
  align-items: center;
  background: var(--ivory-bright);
  border: 1px solid var(--line);
  padding: 1.6rem 1.7rem;
}
.ds-card .coin {
  width: 60px; height: 60px;
  border-radius: 50%;
  display: grid; place-items: center;
  background: linear-gradient(160deg, var(--navy-soft), var(--navy-deep));
  color: var(--gold-bright);
  font-family: var(--f-display);
  font-size: 1.15rem;
  border: 1px solid var(--line-gold);
}
.ds-card h4 { font-size: 1.05rem; }
.ds-card .role { font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--gold-deep); font-weight: 600; margin-top: .2em; }
.ds-card .contact { font-size: .78rem; color: var(--ink-soft); margin-top: .4em; overflow-wrap: anywhere; }
.ds-card .contact a { color: var(--navy); }
.ds-card .agent-cal { grid-column: 1 / -1; margin-top: .2rem; }

/* carrier wall */
.carrier-wall {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid var(--line-gold);
  border-left: 1px solid var(--line-gold);
}
.carrier-wall li {
  list-style: none;
  border-right: 1px solid var(--line-gold);
  border-bottom: 1px solid var(--line-gold);
  padding: 1.6rem 1rem;
  text-align: center;
  font-family: var(--f-serif);
  font-size: clamp(.9rem, .8rem + .5vw, 1.15rem);
  color: var(--navy);
  background: var(--ivory-bright);
  transition: background-color .3s, color .3s;
}
.carrier-wall li:hover { background: var(--navy); color: var(--gold-bright); }
.carrier-note { display: block; text-align: center; margin-top: 1.6rem; color: var(--ink-soft); }
@media (max-width: 900px) { .carrier-wall { grid-template-columns: repeat(2, 1fr); } }

/* office interior stack on locations */
.office-stack { display: grid; gap: 1.2rem; align-content: start; }
.office-interior { border: 1px solid var(--line-gold); box-shadow: var(--shadow-card); }

/* ============================================================
   RIGHTCAPITAL — onboarding CTAs
   ============================================================ */
.persona-rc {
  align-self: start;
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .1em;
  color: var(--fed, #1E5F98);
  text-decoration: none;
  margin-top: .5rem;
  padding-bottom: .3em;
  background: linear-gradient(currentColor, currentColor) left bottom / 0% 1px no-repeat;
  transition: background-size .4s var(--ease-out);
}
.persona-rc:hover { background-size: 100% 1px; }
.persona-rc .btn-arrow { display: inline-block; transition: transform .35s var(--ease-out); }
.persona-rc:hover .btn-arrow { transform: translateX(4px); }

.rc-band {
  background: linear-gradient(160deg, var(--navy-soft), var(--navy-deep) 75%);
  border-block: 1px solid var(--line-gold);
  padding-block: clamp(3rem, 2rem + 3.5vw, 5rem);
  color: rgba(246,241,228,.88);
}
.rc-inner {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
}
.rc-band h2 { color: var(--ivory-bright); margin-block: .8rem .8rem; }
.rc-band .lede { color: rgba(246,241,228,.8); }
.rc-cta { display: grid; gap: 1rem; justify-items: start; }
.rc-cta .microprint { color: rgba(246,241,228,.66); font-size: .6rem; }
@media (max-width: 900px) {
  .rc-inner { grid-template-columns: 1fr; }
}

/* ============================================================
   INSTITUTIONAL BACKING — LPL band
   ============================================================ */
.inst-band {
  background: var(--ivory-deep);
  border-block: 1px solid var(--line-gold);
  padding-block: clamp(3rem, 2rem + 3.5vw, 5rem);
  text-align: center;
}
.inst-lede {
  font-family: var(--f-serif);
  font-size: clamp(1.05rem, .95rem + .6vw, 1.35rem);
  color: var(--ink);
  max-width: 52ch;
  margin: 1.1rem auto 0;
}
.inst-lede b { color: var(--navy); }
.inst-figures {
  display: flex;
  justify-content: center;
  margin-top: clamp(1.8rem, 1.2rem + 2vw, 3rem);
}
.inst-figures > div {
  padding-inline: clamp(1.6rem, 4vw, 3.5rem);
  display: grid;
  gap: .45rem;
}
.inst-figures > div + div { border-left: 1px solid var(--line-gold); }
.inst-figures .num {
  font-family: var(--f-display);
  font-size: clamp(1.9rem, 1.4rem + 2vw, 3rem);
  color: var(--navy);
  line-height: 1;
}
.inst-figures .cap {
  font-size: .72rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-soft);
  max-width: 22ch;
  margin-inline: auto;
}
.inst-note {
  margin: 2rem auto 0;
  font-size: .62rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gold-deep);
}
@media (max-width: 700px) {
  .inst-figures { flex-direction: column; gap: 1.6rem; }
  .inst-figures > div + div { border-left: 0; border-top: 1px solid var(--line-gold); padding-top: 1.6rem; }
}

/* ============================================================
   WHO WE SERVE — persona cards
   ============================================================ */
.persona-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.4rem;
}
.persona-card {
  background: var(--ivory-bright);
  border: 1px solid var(--line);
  box-shadow: 0 1px 2px rgba(16,39,67,.05);
  padding: 2rem 1.7rem 1.6rem;
  display: flex;
  flex-direction: column;
  gap: .8rem;
  transition: transform .5s var(--ease-out), box-shadow .5s var(--ease-out), border-color .3s;
}
.persona-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-card);
  border-color: var(--line-gold);
}
.persona-glyph { width: 44px; color: var(--navy-soft); transition: color .4s; }
.persona-card:hover .persona-glyph { color: var(--gold); }
.persona-card h3 { font-size: 1.35rem; }
.persona-sub {
  font-family: var(--f-serif);
  font-style: italic;
  font-size: .92rem;
  color: var(--ink-soft);
  min-height: 2.6em;
}
.persona-card .sealed-list { display: grid; gap: .55rem; margin-block: .3rem .6rem; }
.persona-card .sealed-list li { font-size: .88rem; padding-left: 1.5rem; }
.persona-cta {
  margin-top: auto;
  align-self: start;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--gold-deep);
  padding: .35em 0;
  border-bottom: 1px solid transparent;
  transition: border-color .3s;
}
.persona-cta:hover { border-color: var(--gold); }
.persona-cta .btn-arrow { display: inline-block; transition: transform .35s var(--ease-out); }
.persona-cta:hover .btn-arrow { transform: translateX(4px); }
@media (max-width: 1100px) { .persona-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) { .persona-grid { grid-template-columns: 1fr; } }

/* ============================================================
   MARKET & NEWS TICKER
   ============================================================ */
.ticker {
  display: flex;
  align-items: stretch;
  background: var(--navy);
  border-block: 1px solid rgba(184,145,47,.4);
  overflow: hidden;
}
.ticker-tag {
  flex: none;
  display: grid;
  place-items: center;
  padding: .72em 1.3em;
  background: var(--gold);
  color: var(--navy-deep);
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .26em;
  text-transform: uppercase;
  white-space: nowrap;
}
.ticker-viewport { overflow: hidden; flex: 1; display: flex; align-items: center; }
.ticker-track {
  display: flex;
  flex: none;
  animation: marquee 90s linear infinite;
}
.ticker:hover .ticker-track { animation-play-state: paused; }
.tk-seq { display: flex; align-items: center; flex: none; padding-right: 0; }
.tk-seq > span { display: inline-flex; align-items: baseline; gap: .5em; white-space: nowrap; }
.tk-quote, .tk-news {
  font-size: .8rem;
  color: rgba(246,241,228,.85);
  letter-spacing: .02em;
}
.tk-quote b { color: var(--ivory-bright); font-weight: 600; }
.tk-quote em { font-style: normal; font-size: .74rem; letter-spacing: .04em; }
.tk-up { color: #8FC49A; }
.tk-down { color: #E29B9B; }
.tk-news i { font-style: normal; color: var(--gold-bright); font-size: .66rem; letter-spacing: .18em; text-transform: uppercase; margin-right: .3em; }
.tk-sep { color: var(--gold); font-size: .6rem; padding-inline: 1.6em; }
@media (prefers-reduced-motion: reduce) {
  .ticker-track { animation: none; }
  .ticker-viewport { overflow-x: auto; }
}

/* ============================================================
   LEAD MAGNET — free PDF via email
   ============================================================ */
.magnet {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: clamp(1.6rem, 4vw, 3rem);
  align-items: center;
  background: var(--ivory-bright);
  border: 1px solid var(--line-gold);
  box-shadow: var(--shadow-card);
  padding: clamp(1.6rem, 1rem + 3vw, 2.8rem);
  position: relative;
}
.magnet::before {
  content: "";
  position: absolute; inset: 7px;
  border: 1px solid rgba(184,145,47,.22);
  pointer-events: none;
}
.magnet-doc {
  width: clamp(78px, 10vw, 104px);
  aspect-ratio: .78;
  background: linear-gradient(165deg, var(--navy-soft), var(--navy-deep));
  border: 1px solid var(--gold);
  display: grid;
  place-content: center;
  gap: .45rem;
  text-align: center;
  padding: .7rem;
  position: relative;
  transform: rotate(-2.5deg);
  box-shadow: 8px 12px 24px -10px rgba(10,27,49,.5);
  transition: transform .6s var(--ease-out);
}
.magnet:hover .magnet-doc { transform: rotate(-.5deg) translateY(-3px); }
.magnet-doc .microprint { color: var(--gold-bright); font-size: .44rem; }
.magnet-doc strong {
  font-family: var(--f-display);
  font-weight: 400;
  color: var(--ivory-bright);
  font-size: .78rem;
  line-height: 1.3;
}
.magnet-doc .magnet-pdf-chip {
  position: absolute;
  bottom: -9px; right: -12px;
  background: var(--carmine);
  color: var(--ivory-bright);
  font-size: .5rem;
  font-weight: 700;
  letter-spacing: .18em;
  padding: .45em .8em;
}
.magnet h3 { font-size: clamp(1.2rem, 1rem + 1vw, 1.6rem); margin-bottom: .3em; }
.magnet > div > p { font-size: .95rem; color: var(--ink-soft); max-width: 58ch; }
.magnet form {
  display: flex;
  gap: .9rem;
  margin-top: 1.2rem;
  align-items: end;
  max-width: 560px;
}
.magnet form .field { flex: 1; margin: 0; }
.magnet .form-note { margin-top: .7rem; font-size: .72rem; color: var(--ink-soft); }
.magnet-unlocked { display: none; }
.magnet.is-unlocked form, .magnet.is-unlocked .form-note { display: none; }
.magnet.is-unlocked .magnet-unlocked {
  display: flex;
  align-items: center;
  gap: 1.2rem;
  margin-top: 1.2rem;
  flex-wrap: wrap;
}
.magnet-unlocked .seal-check { width: 38px; flex: none; }
.magnet-unlocked p { font-size: .88rem; color: var(--ink-soft); }
@media (max-width: 700px) {
  .magnet { grid-template-columns: 1fr; }
  .magnet-doc { display: none; }
  .magnet form { flex-direction: column; align-items: stretch; }
}

/* ============================================================
   FLIPBOOK — the field guide
   ============================================================ */
.fb-note { color: var(--gold-deep); text-align: center; margin-bottom: 2rem; }
.flipbook { max-width: 1040px; margin-inline: auto; }
.fb-stage {
  perspective: 2800px;
  position: relative;
  padding-right: 34px; /* room for thumb tabs */
}
.fb-book {
  position: relative;
  width: 100%;
  /* taller leaves — the guides run nine chapters and .fb-page clips overflow */
  aspect-ratio: 2 / 1.54;
  transform-style: preserve-3d;
}
.fb-board {
  position: absolute; inset: -10px -12px -14px;
  background: linear-gradient(160deg, var(--navy-soft), var(--navy-deep) 70%);
  border: 1px solid rgba(184,145,47,.5);
  box-shadow: var(--shadow-pop), 0 30px 60px -20px rgba(10,27,49,.5);
}
.fb-spine {
  position: absolute; left: 50%; top: 0; bottom: 0;
  width: 1px; translate: -50% 0;
  background: linear-gradient(180deg, transparent, var(--gold) 20%, var(--gold) 80%, transparent);
  opacity: .55;
}
.fb-leaf {
  position: absolute;
  left: 50%; top: 0;
  width: 50%; height: 100%;
  transform-origin: left center;
  transform-style: preserve-3d;
  transition: transform 1.05s var(--ease-swift);
}
.fb-leaf.is-flipped { transform: rotateY(-180deg); }
.fb-page {
  position: absolute; inset: 0;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  background:
    radial-gradient(120% 100% at 0% 50%, rgba(10,27,49,.08), transparent 14%),
    var(--ivory-bright);
  border: 1px solid var(--line-gold);
  padding: clamp(1.3rem, 1rem + 2.4vw, 2.8rem);
  /* scroll rather than clip — a hidden overflow silently deletes copy when a
     reader enlarges their type or lands on a narrow phone */
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  display: flex;
  flex-direction: column;
  gap: .62rem;
}
.fb-page--back {
  transform: rotateY(180deg);
  background:
    radial-gradient(120% 100% at 100% 50%, rgba(10,27,49,.08), transparent 14%),
    var(--ivory-bright);
}
.fb-page p { font-size: clamp(.8rem, .7rem + .46vw, .94rem); line-height: 1.52; }
.fb-page .sealed-list { gap: .38rem; display: grid; }
.fb-page .sealed-list li { font-size: clamp(.76rem, .68rem + .42vw, .89rem); padding-left: 1.5rem; line-height: 1.45; }
.fb-callout {
  margin-top: auto;
  border-left: 2px solid var(--gold);
  background: rgba(184,145,47,.08);
  padding: .8em 1.1em;
  font-family: var(--f-serif);
  font-style: italic;
  font-size: clamp(.8rem, .72rem + .4vw, .95rem);
  color: var(--navy);
}
.fb-cover {
  background: linear-gradient(165deg, var(--navy-soft), var(--navy-deep) 75%);
  color: var(--ivory);
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 1.1rem;
}
.fb-cover .microprint { color: var(--gold-bright); }
/* brand lockup — real mark + wordmark, on every guide cover */
.fb-brand { display: flex; flex-direction: column; align-items: center; gap: .6rem; }
.fb-brand img { width: clamp(44px, 6.5vw, 66px); height: auto; object-fit: contain; }
.fb-brand-txt { display: flex; flex-direction: column; align-items: center; line-height: 1.15; }
.fb-brand-txt b {
  font-size: clamp(.58rem, .48rem + .34vw, .72rem);
  letter-spacing: .3em; text-indent: .3em;
  color: var(--ivory-bright); font-weight: 700;
}
.fb-brand-txt i {
  font-family: var(--f-serif); font-style: italic;
  font-size: clamp(.56rem, .48rem + .3vw, .7rem);
  color: var(--gold-bright);
}
/* back-cover credit on the closing page */
.fb-closing .fb-endmark { width: 34px; height: 34px; object-fit: contain; opacity: .9; }
.fb-cover h2 { color: var(--ivory-bright); font-size: clamp(1.5rem, 1rem + 2.4vw, 2.7rem); }
.fb-cover-sub { color: rgba(246,241,228,.8); font-family: var(--f-serif); font-style: italic; max-width: 30ch; }
.fb-cover-rule { width: 44px; height: 1px; background: var(--gold); }
.fb-seal { width: clamp(40px, 6vw, 60px); color: var(--gold-bright); opacity: .9; }
.fb-cover-cta { color: rgba(246,241,228,.62); letter-spacing: .3em; }
.fb-opener {
  align-items: flex-start;
  justify-content: center;
  gap: .6rem;
  background:
    radial-gradient(120% 100% at 100% 50%, rgba(10,27,49,.08), transparent 14%),
    var(--ivory-deep);
}
.fb-numeral {
  font-family: var(--f-display);
  font-size: clamp(2.6rem, 2rem + 3vw, 4.6rem);
  color: var(--gold);
  line-height: 1;
}
.fb-opener h3 { font-size: clamp(1.2rem, 1rem + 1.2vw, 1.9rem); }
.fb-opener p { font-family: var(--f-serif); font-style: italic; color: var(--ink-soft); }
.fb-opener-inline { display: none; }
.fb-closing { align-items: flex-start; justify-content: center; gap: 1rem; }
.fb-closing .seal-check { width: 44px; }
.fb-closing .btn { margin-top: .4rem; }
.fb-tabs {
  position: absolute;
  right: 0; top: 8%;
  display: grid;
  gap: 6px;
  z-index: 30;
}
.fb-tab {
  writing-mode: vertical-rl;
  padding: .85em .38em;
  font-family: var(--f-serif);
  font-size: .72rem;
  letter-spacing: .1em;
  color: var(--ivory-bright);
  background: var(--navy-soft);
  border: 1px solid rgba(184,145,47,.4);
  border-left: 0;
  transition: background-color .3s, padding .3s, color .3s;
}
.fb-tab:hover { background: var(--navy); padding-right: .55em; }
.fb-tab.is-active { background: var(--gold); color: var(--navy-deep); font-weight: 700; }
.fb-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(1rem, 4vw, 2.5rem);
  margin-top: 2.2rem;
}
.fb-controls [data-fb-label] { color: var(--gold-deep); min-width: 12ch; text-align: center; }
.fb-controls .btn:disabled { opacity: .35; pointer-events: none; }

@media (max-width: 820px) {
  /* one page at a time on phones — give it real portrait height so the
     nine-chapter guides read without scrolling inside the page */
  .fb-book { aspect-ratio: 1 / 1.95; }
  .fb-page { padding: clamp(1.1rem, .9rem + 1.8vw, 1.6rem); }
  .fb-leaf { left: 0; width: 100%; }
  .fb-spine { display: none; }
  .fb-opener-inline {
    display: block;
    font-family: var(--f-sans);
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .28em;
    text-transform: uppercase;
    color: var(--gold-deep);
    border-bottom: 1px solid var(--line-gold);
    padding-bottom: .8em;
  }
  .fb-opener-inline span {
    font-family: var(--f-display);
    font-size: 1.1em;
    margin-right: .6em;
  }
  .fb-stage { padding-right: 26px; }
  .fb-tab { font-size: .62rem; padding: .7em .3em; }
}

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

/* ============================================================
   RESOURCES — featured guide card
   ============================================================ */
.guide-feature {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: clamp(1.5rem, 4vw, 3.5rem);
  background: linear-gradient(160deg, var(--navy-soft), var(--navy-deep) 72%);
  border: 1px solid rgba(184,145,47,.5);
  padding: clamp(1.6rem, 1rem + 3vw, 3rem);
  color: rgba(246,241,228,.85);
  box-shadow: var(--shadow-pop);
  text-decoration: none;
  position: relative;
  overflow: hidden;
}
.guide-feature::before {
  content: "";
  position: absolute; inset: 8px;
  border: 1px solid rgba(184,145,47,.25);
  pointer-events: none;
}
.guide-feature h3 { color: var(--ivory-bright); font-size: clamp(1.3rem, 1.1rem + 1vw, 1.9rem); margin: .35em 0 .4em; }
.guide-feature .microprint { color: var(--gold-bright); }
.guide-feature p { color: rgba(246,241,228,.78); font-size: .95rem; }
.gf-book {
  width: clamp(86px, 12vw, 120px);
  aspect-ratio: .72;
  background: linear-gradient(165deg, var(--navy), var(--navy-deep));
  border: 1px solid var(--gold);
  border-left: 4px solid var(--gold);
  display: grid;
  place-content: center;
  gap: .5rem;
  text-align: center;
  padding: .8rem;
  transform: perspective(700px) rotateY(-14deg);
  transition: transform .7s var(--ease-out);
  box-shadow: 12px 16px 30px -12px rgba(10,27,49,.6);
}
.guide-feature:hover .gf-book { transform: perspective(700px) rotateY(-4deg) translateY(-3px); }
.gf-book .microprint { font-size: .48rem; }
.gf-book strong {
  font-family: var(--f-display);
  font-weight: 400;
  color: var(--ivory-bright);
  font-size: clamp(.7rem, .6rem + .5vw, .9rem);
  line-height: 1.25;
}
.gf-book svg { width: 22px; margin-inline: auto; color: var(--gold-bright); }
.guide-feature > .btn { justify-self: end; }
@media (max-width: 820px) {
  .guide-feature { grid-template-columns: 1fr; }
  .gf-book { display: none; }
  .guide-feature > .btn { justify-self: start; }
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 1240px) {
  .nav-inner { gap: 1.1rem; }
  .nav .btn { padding: .85em 1.15em; font-size: .66rem; }
  .nav-phone--dual .num { font-size: .82rem; }
  .nav-phone--dual .pfx { font-size: .5rem; }
  .nav-cta { gap: .9rem; }
  .brand-mark { width: 38px; height: 38px; }
}

@media (max-width: 1100px) {
  .svc-grid { grid-template-columns: repeat(2, 1fr); }
  .svc-card { min-height: 320px; }
  .team-grid { grid-template-columns: repeat(3, 1fr); }
  .process-track { grid-template-columns: repeat(3, 1fr); gap: 2.5rem 0; }
  .process-track::before { display: none; }
  .footer-main { grid-template-columns: 1fr 1fr; }
  .consult-strip form { grid-template-columns: 1fr 1fr; }
  .consult-strip .btn { grid-column: 1; }
  .consult-strip .field:nth-child(1) { grid-column: 1 / -1; }
  .consult-strip .btn { grid-column: 1; justify-self: start; }
  .consult-strip .cs-or { display: block; padding-bottom: 0; align-self: center; }
  .stats { grid-template-columns: repeat(2, 1fr); }
  .stat:nth-child(3) { border-left: 0; }
  .stat { border-top: 1px solid var(--line); }
  .stat:nth-child(-n+2) { border-top: 0; }
}

@media (max-width: 900px) {
  .nav-links, .nav-phone { display: none; }
  .burger { display: block; }
  .nav .btn { padding: .8em 1.1em; font-size: .62rem; }
  .nav-cta { gap: .5rem; }
  .hero-grid { grid-template-columns: 1fr; gap: 3rem; }
  .hero { min-height: 0; }
  .hero-guilloche { display: none; }
  .split, .office-row, .calc-grid, .contact-grid, .consult-cols { grid-template-columns: 1fr; }
  .office-row:nth-child(even) .split-media { order: 0; }
  .loc-grid { grid-template-columns: 1fr; }
  .res-grid { grid-template-columns: 1fr; }
  .video-grid { grid-template-columns: 1fr; }
  .shelf-grid { grid-template-columns: 1fr 1fr; }
  .contact-aside .lead-card { position: static; }
  .consult-panel { width: 100%; border-left: 0; }
}

@media (max-width: 640px) {
  .svc-grid { grid-template-columns: 1fr; }
  .svc-card { min-height: 0; }
  .team-grid { grid-template-columns: repeat(2, 1fr); }
  .process-track { grid-template-columns: 1fr; gap: 2rem; }
  .form-row { grid-template-columns: 1fr; gap: 0; }
  .consult-strip form { grid-template-columns: 1fr; gap: 1rem; }
  .stats { grid-template-columns: 1fr; }
  .stat { border-left: 0; border-top: 1px solid var(--line); }
  .stat:first-child { border-top: 0; }
  .hero-meta { flex-wrap: wrap; gap: 1.4rem; }
  .footer-main { grid-template-columns: 1fr; gap: 2.4rem; }
  .cta-phones { gap: 1.8rem; }
  .topbar .wrap--wide { justify-content: center; }
  .topbar > .wrap--wide > .microprint:first-child { display: none; }
  .topbar .tb-mail { display: none; }
  .tb-social { padding-left: 1em; gap: .85em; }
  .topbar-right { gap: 1.1em; }
  .topbar .microprint { letter-spacing: .12em; font-size: .6rem; white-space: nowrap; }
  .nav .btn .btn-hide-sm { display: none; }
}

/* ============================================================
   ACCESSIBILITY / MOTION PREFERENCES
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
  [data-reveal] { opacity: 1; transform: none; }
  .reveal-lines .line > span { transform: none; }
  .hero-media img, .hero-media video { animation: none; transform: none; }
}

/* ============================================================
   CALCULATOR SUITE — grid, cards, and the working panel
   ============================================================ */
.cx-intro { max-width: 68ch; margin-bottom: clamp(2.4rem, 2rem + 2vw, 3.6rem); }
.cx-intro p { color: var(--ink-soft); }
.cx-intro .microprint {
  display: block; margin-top: 1rem; line-height: 1.7;
  letter-spacing: .04em; text-transform: none; font-size: .72rem;
  padding-left: 1rem; border-left: 2px solid var(--line-gold);
}

.cx-grid { display: grid; gap: clamp(2.4rem, 2rem + 2vw, 3.4rem); }
.cx-cat-h {
  display: flex; align-items: baseline; gap: .8rem;
  font-family: var(--f-display); font-weight: 400;
  font-size: clamp(1.2rem, 1rem + .9vw, 1.6rem);
  color: var(--navy-deep);
  padding-bottom: .7rem; margin-bottom: 1.4rem;
  border-bottom: 1px solid var(--line-gold);
}
.cx-count {
  font-family: var(--f-sans); font-size: .58rem; font-weight: 700;
  letter-spacing: .2em; color: var(--gold-deep);
  border: 1px solid var(--line-gold); padding: .25em .7em;
}
.cx-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.1rem; }

.cx-card {
  display: flex; flex-direction: column; align-items: flex-start; gap: .45rem;
  text-align: left; padding: 1.3rem 1.4rem 1.15rem;
  background: var(--ivory-bright);
  border: 1px solid var(--line);
  border-left: 3px solid var(--gold);
  cursor: pointer;
  transition: transform .45s var(--ease-out), box-shadow .45s var(--ease-out),
              border-left-color .35s;
}
.cx-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-card);
  border-left-color: var(--carmine);
}
.cx-name { font-family: var(--f-display); font-size: 1.06rem; color: var(--navy-deep); }
.cx-blurb { font-size: .82rem; color: var(--ink-soft); line-height: 1.5; flex: 1; }
.cx-go {
  font-size: .6rem; font-weight: 700; letter-spacing: .22em;
  text-transform: uppercase; color: var(--gold-deep); margin-top: .3rem;
}

/* ---------- modal ---------- */
.cx-modal {
  position: fixed; inset: 0; z-index: 100;
  display: flex; align-items: center; justify-content: center;
  padding: clamp(.8rem, 3vw, 2.4rem);
  visibility: hidden; pointer-events: none;
}
.cx-modal.is-open { visibility: visible; pointer-events: auto; }
.cx-backdrop {
  position: absolute; inset: 0;
  background: rgba(10,27,49,.62);
  opacity: 0; transition: opacity .4s var(--ease-out);
}
.cx-modal.is-open .cx-backdrop { opacity: 1; }
.cx-panel {
  position: relative;
  width: min(920px, 100%); max-height: 92vh;
  display: flex; flex-direction: column;
  background: var(--ivory);
  border: 1px solid var(--line-gold);
  box-shadow: 0 40px 90px -30px rgba(10,27,49,.7);
  transform: translateY(14px) scale(.985); opacity: 0;
  transition: transform .45s var(--ease-swift), opacity .35s;
}
.cx-modal.is-open .cx-panel { transform: none; opacity: 1; }
.cx-close {
  position: absolute; top: 14px; right: 16px;
  width: 40px; height: 40px; border-radius: 50%;
  border: 1px solid var(--line); background: var(--ivory);
  color: var(--ink-soft); font-size: .85rem; z-index: 3;
  display: flex; align-items: center; justify-content: center;
  transition: border-color .3s, color .3s, transform .4s var(--ease-out);
}
.cx-close:hover { border-color: var(--gold); color: var(--gold-deep); transform: rotate(90deg); }

.cx-head {
  display: flex; gap: 1rem; align-items: center;
  padding: 1.5rem clamp(1.3rem, 3vw, 2.2rem) 1.2rem;
  border-bottom: 1px solid var(--line-gold);
}
.cx-mark { width: 42px; height: 42px; object-fit: contain; flex: none; }
.cx-head h2 { font-size: clamp(1.15rem, 1rem + .8vw, 1.5rem); color: var(--navy-deep); }
.cx-head p { font-size: .82rem; color: var(--ink-soft); margin-top: .18em; }

.cx-scroll { overflow-y: auto; padding: clamp(1.3rem, 3vw, 2.2rem); display: grid;
             grid-template-columns: 1fr 1fr; gap: clamp(1.4rem, 3vw, 2.6rem); }
.cx-form { display: grid; gap: .85rem; align-content: start; }
.cx-field label {
  display: block; font-size: .6rem; font-weight: 600; letter-spacing: .18em;
  text-transform: uppercase; color: var(--ink-soft); margin-bottom: .35em;
}
.cx-input { position: relative; display: flex; align-items: center; }
.cx-input input, .cx-field select {
  width: 100%; background: var(--ivory-bright);
  border: 1px solid var(--line); border-radius: 0;
  padding: .6em .7em; font-size: .95rem; color: var(--ink);
  font-family: var(--f-sans);
  transition: border-color .3s, box-shadow .3s;
}
.cx-input.has-pre input { padding-left: 1.5em; }
.cx-input.has-suf input { padding-right: 3.4em; }
.cx-input input:focus, .cx-field select:focus {
  outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(184,145,47,.16);
}
.cx-pre, .cx-suf {
  position: absolute; color: var(--ink-soft); font-size: .82rem; pointer-events: none;
}
.cx-pre { left: .65em; }
.cx-suf { right: .7em; }

.cx-results { align-content: start; }
.cx-out { display: grid; gap: .1rem; }
.cx-row {
  display: flex; justify-content: space-between; align-items: baseline; gap: 1rem;
  padding: .6rem .9rem; background: var(--ivory-bright);
  border-bottom: 1px solid var(--line);
}
.cx-row.is-primary {
  background: linear-gradient(160deg, var(--navy-soft), var(--navy-deep) 80%);
  border-bottom: 0; padding: 1.1rem 1.1rem; margin-bottom: .5rem;
}
.cx-row.is-primary .cx-k { color: var(--gold-bright); }
.cx-row.is-primary .cx-v {
  color: var(--ivory-bright); font-family: var(--f-display);
  font-size: clamp(1.4rem, 1.1rem + 1.4vw, 2rem); line-height: 1.1;
}
.cx-k { font-size: .74rem; color: var(--ink-soft); letter-spacing: .02em; }
.cx-v { font-size: .95rem; font-weight: 600; color: var(--navy-deep); text-align: right; }
.cx-year, .cx-note {
  margin-top: .9rem; font-size: .7rem; line-height: 1.6; color: var(--ink-soft);
  padding-left: .85rem; border-left: 2px solid var(--line-gold);
}
.cx-year { color: var(--gold-deep); font-weight: 600; letter-spacing: .06em; }

.cx-foot {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; flex-wrap: wrap;
  padding: 1rem clamp(1.3rem, 3vw, 2.2rem);
  border-top: 1px solid var(--line);
  background: var(--ivory-deep);
}
.cx-foot .microprint { color: var(--ink-soft); }

@media (max-width: 980px) { .cx-cards { grid-template-columns: 1fr 1fr; } }
@media (max-width: 860px) { .cx-scroll { grid-template-columns: 1fr; } }
@media (max-width: 620px) {
  .cx-cards { grid-template-columns: 1fr; }
  .cx-foot { flex-direction: column; align-items: stretch; }
  .cx-foot .btn { width: 100%; }
}

/* ============================================================
   TEAM PROFILE PAGES
   ============================================================ */
.tp-grid {
  display: grid;
  grid-template-columns: minmax(280px, 340px) 1fr;
  gap: clamp(2.2rem, 4vw, 4.5rem);
  align-items: start;
}
.tp-card {
  position: sticky;
  top: calc(var(--nav-h, 76px) + 1.6rem);
  background: var(--ivory-bright);
  border: 1px solid var(--line);
  border-top: 3px solid var(--gold);
  padding: 1.9rem 1.7rem 2rem;
  box-shadow: 0 24px 50px -34px rgba(10,27,49,.5);
  text-align: center;
}
.tp-photo {
  width: min(100%, 210px);
  aspect-ratio: 1;
  margin: 0 auto 1.3rem;
  border-radius: 50%;
  overflow: hidden;
  position: relative;
  box-shadow: 0 0 0 1px rgba(184,145,47,.55), 0 0 0 7px var(--ivory-bright),
              0 0 0 8px rgba(184,145,47,.28), 0 18px 32px -18px rgba(10,27,49,.5);
}
.tp-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 12%; }
.tp-card h2 { font-size: 1.35rem; color: var(--navy-deep); line-height: 1.2; }
.tp-role {
  font-size: .66rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase;
  color: var(--gold-deep); margin-top: .45em;
}
.tp-meta { margin: 1.5rem 0 1.6rem; text-align: left; display: grid; gap: .7rem; }
.tp-meta > div { display: grid; gap: .1rem; padding-bottom: .7rem; border-bottom: 1px solid var(--line); }
.tp-meta > div:last-child { border-bottom: 0; padding-bottom: 0; }
.tp-meta dt {
  font-size: .58rem; font-weight: 700; letter-spacing: .22em;
  text-transform: uppercase; color: var(--ink-soft);
}
.tp-meta dd { font-size: .88rem; color: var(--ink); word-break: break-word; }
.tp-meta dd a { color: var(--navy); text-decoration: none; transition: color .3s; }
.tp-meta dd a:hover { color: var(--gold-deep); }
.tp-card .btn { width: 100%; justify-content: center; }
.tp-cal {
  display: inline-block; margin-top: .9rem;
  font-size: .74rem; font-weight: 600; letter-spacing: .1em;
  color: var(--gold-deep); text-decoration: none;
}
.tp-cal:hover { color: var(--navy); }

.tp-body > p { margin-bottom: 1.15rem; font-size: 1rem; line-height: 1.75; color: var(--ink-soft); }
.tp-body > p:first-child::first-letter {
  font-family: var(--f-display); font-size: 3.1rem; line-height: .85;
  float: left; padding: .06em .12em 0 0; color: var(--gold-deep);
}
.tp-body h3 {
  margin-top: 2.2rem; margin-bottom: .9rem;
  font-size: 1.15rem; color: var(--navy-deep);
  padding-bottom: .6rem; border-bottom: 1px solid var(--line-gold);
}
.tp-disc { margin-top: 1.8rem; color: var(--ink-soft); font-size: .68rem; line-height: 1.6; letter-spacing: .02em; text-transform: none; }

.tp-others { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.1rem; }
.tp-other {
  display: flex; align-items: center; gap: .9rem;
  background: var(--ivory-bright); border: 1px solid var(--line);
  padding: .85rem 1rem; text-decoration: none;
  transition: transform .4s var(--ease-out), box-shadow .4s, border-color .3s;
}
.tp-other:hover { transform: translateY(-3px); box-shadow: var(--shadow-card); border-color: var(--line-gold); }
.tp-other img {
  width: 48px; height: 48px; border-radius: 50%; object-fit: cover;
  object-position: 50% 12%; flex: none;
  box-shadow: 0 0 0 1px rgba(184,145,47,.5);
}
.tp-other span { display: flex; flex-direction: column; line-height: 1.3; min-width: 0; }
.tp-other b { font-size: .84rem; color: var(--navy-deep); }
.tp-other i {
  font-style: normal; font-size: .6rem; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase; color: var(--gold-deep); margin-top: .2em;
}

@media (max-width: 900px) {
  .tp-grid { grid-template-columns: 1fr; }
  .tp-card { position: static; max-width: 420px; margin-inline: auto; }
  .tp-others { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  .tp-others { grid-template-columns: 1fr; }
}

/* the medallion portrait is itself a link to the full profile */
.coin-link { display: block; text-decoration: none; }
.coin-link .coin { transition: transform .5s var(--ease-out), box-shadow .5s var(--ease-out); }
.coin-link:hover .coin,
.coin-link:focus-visible .coin {
  transform: translateY(-5px);
  box-shadow: 0 0 0 1px rgba(184,145,47,.7), 0 0 0 6px var(--ivory-bright),
              0 0 0 7px rgba(184,145,47,.45), 0 24px 42px -18px rgba(10,27,49,.6);
}
.coin-link:focus-visible { outline: 2px solid var(--gold); outline-offset: 6px; }

/* ============================================================
   OFFICE MAPS — click-to-load Google embed
   The iframe is only injected on request, so no Google cookies
   are set on visitors who never ask for the map.
   ============================================================ */
.map-embed {
  position: relative;
  aspect-ratio: 16 / 10;
  border: 1px solid var(--line-gold);
  background: linear-gradient(165deg, var(--navy-soft), var(--navy-deep) 74%);
  overflow: hidden;
  margin-top: 1.6rem;
}
.map-embed::after {
  content: "";
  position: absolute; inset: 8px;
  border: 1px solid rgba(184,145,47,.28);
  pointer-events: none;
  z-index: 3;
}
.map-embed.is-live::after { display: none; }
.map-load {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: .7rem;
  padding: 1.4rem;
  background: none;
  color: var(--cream);
  text-align: center;
  cursor: pointer;
  transition: background-color .4s;
}
.map-load:hover { background: rgba(184,145,47,.08); }
.map-load svg { width: 40px; height: 40px; color: var(--gold-bright); }
.map-load-t {
  font-size: .82rem; font-weight: 600; letter-spacing: .04em;
  color: var(--ivory-bright); max-width: 30ch; line-height: 1.45;
}
.map-load-s {
  font-size: var(--fs-micro); letter-spacing: .2em; text-transform: uppercase;
  color: rgba(233,217,168,.72);
}
.map-embed iframe {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  border: 0;
  z-index: 2;
}
.map-embed.is-live .map-load { display: none; }
.map-note {
  margin-top: .7rem;
  font-size: var(--fs-micro);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.map-note a { color: var(--gold-deep); text-decoration: none; font-weight: 600; }
.map-note a:hover { color: var(--navy); }
/* on the deep-navy contact column the note needs lifting */
.section--deep .map-note, .contact-main .map-note { color: rgba(246,241,228,.66); }
.section--deep .map-note a, .contact-main .map-note a { color: var(--gold-bright); }
/* two maps side by side on the contact page */
.map-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 1.4rem; margin-top: 2.2rem; }
.map-pair .map-embed { aspect-ratio: 4 / 3; margin-top: 0; }
@media (max-width: 720px) { .map-pair { grid-template-columns: 1fr; } }

/* video briefings awaiting production — not clickable, clearly labelled */
.video-card.is-soon { cursor: default; }
.video-card.is-soon:hover { transform: none; }
.video-card.is-soon .vc-play { opacity: .35; }
.vc-soon {
  position: absolute; left: .9rem; top: .9rem; z-index: 3;
  background: rgba(10,27,49,.82);
  border: 1px solid rgba(184,145,47,.5);
  color: var(--gold-bright);
  padding: .42em .85em;
  font-size: var(--fs-micro);
  font-weight: 600; letter-spacing: .2em; text-transform: uppercase;
}

/* mobile menu — indented sub-items under a parent section */
.mobile-menu .mm-sub {
  padding-left: 1.6rem;
  font-size: .92em;
  opacity: .82;
  position: relative;
}
.mobile-menu .mm-sub::before {
  content: "";
  position: absolute; left: .5rem; top: 50%;
  width: .6rem; height: 1px;
  background: var(--gold);
  opacity: .6;
}

/* ============================================================
   FINRA BrokerCheck — Rule 2210(d)(8)
   A "readily apparent" reference + hyperlink is required on the
   initial retail-facing page and on any page carrying a registered
   person's professional profile. FINRA has stated footer placement
   generally does NOT satisfy this, so this component sits inline in
   content, at body-copy size with full contrast.
   ============================================================ */
.bc-line {
  display: flex;
  align-items: center;
  gap: .85rem;
  flex-wrap: wrap;
  background: var(--ivory-bright);
  border: 1px solid var(--line);
  border-left: 3px solid var(--fed-blue);
  padding: .95rem 1.15rem;
  border-radius: 2px;
}
.bc-line svg { width: 26px; height: 30px; color: var(--fed-blue); flex: none; }
.bc-line p {
  margin: 0;
  font-size: .92rem;
  line-height: 1.5;
  color: var(--ink);
  flex: 1 1 22rem;
}
.bc-line a {
  color: var(--fed-blue);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.bc-line a:hover { color: var(--navy-deep); }
/* on navy grounds */
.section--deep .bc-line,
.hero-strip .bc-line {
  background: rgba(246,241,228,.06);
  border-color: rgba(246,241,228,.2);
  border-left-color: var(--gold-bright);
}
.section--deep .bc-line p,
.hero-strip .bc-line p { color: var(--cream); }
.section--deep .bc-line a,
.hero-strip .bc-line a { color: var(--gold-bright); }
.section--deep .bc-line svg,
.hero-strip .bc-line svg { color: var(--gold-bright); }
/* profile-page variant sits inside the contact card */
.tp-card .bc-line {
  margin-top: 1.2rem;
  padding: .8rem .9rem;
  text-align: left;
  gap: .6rem;
}
.tp-card .bc-line p { font-size: .78rem; flex: 1 1 100%; }
.tp-card .bc-line svg { width: 20px; height: 23px; }

/* BrokerCheck band — sits flush beneath the hero, deliberately compact.
   Held at .82rem rather than microprint: FINRA asks for a font size
   "comparable to other information on the page", so this is the floor. */
.bc-band {
  background: var(--ivory-deep);
  border-bottom: 1px solid var(--line);
}
.bc-band .bc-line {
  background: none;
  border: 0;
  border-left: 2px solid var(--fed-blue);
  padding: .62rem 0 .62rem .8rem;
  gap: .6rem;
  align-items: center;
}
.bc-band .bc-line svg { width: 17px; height: 20px; }
.bc-band .bc-line p { font-size: .82rem; line-height: 1.45; flex: 1 1 20rem; }
@media (max-width: 620px) {
  .bc-band .bc-line p { font-size: .78rem; }
}

/* ============================================================
   CONTACT — one decision, two equal paths
   The old layout put a calendar and a 7-field form side by side
   in an asymmetric grid, so the shorter column left a long dead
   gutter and neither path read as "the" way to start. These are
   equal-height siblings with an explicit "or" between them.
   ============================================================ */
.choice-grid {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 0;
  align-items: stretch;          /* equal heights — no dead gutter */
  margin-top: clamp(2rem, 1.6rem + 1.6vw, 3rem);
}
.choice-card {
  display: flex;
  flex-direction: column;
  padding: clamp(1.6rem, 1.2rem + 1.6vw, 2.4rem);
  border: 1px solid var(--line);
  position: relative;
}
.choice-card--book {
  background: linear-gradient(168deg, var(--navy-soft), var(--navy-deep) 76%);
  border-color: var(--line-gold);
  color: var(--cream);
}
.choice-card--call { background: var(--ivory-bright); }

.choice-tag {
  font-size: .6rem; font-weight: 700; letter-spacing: .24em;
  text-transform: uppercase; margin: 0 0 .7rem;
}
.choice-card--book .choice-tag { color: var(--gold-bright); }
.choice-card--call .choice-tag { color: var(--gold-deep); }
.choice-card h3 {
  font-size: clamp(1.2rem, 1rem + .8vw, 1.55rem);
  margin: 0 0 .5rem; line-height: 1.2;
}
.choice-card--book h3 { color: var(--ivory-bright); }
.choice-card--call h3 { color: var(--navy-deep); }
.choice-sub {
  font-size: .9rem; line-height: 1.55;
  margin: 0 0 1.5rem; padding-bottom: 1.2rem;
  border-bottom: 1px solid;
}
.choice-card--book .choice-sub { color: rgba(246,241,228,.78); border-color: rgba(217,182,92,.3); }
.choice-card--call .choice-sub { color: var(--ink-soft); border-color: var(--line); }
.choice-card form, .choice-card .booking { margin-top: auto; }
.choice-card .btn { width: 100%; justify-content: center; }

/* the "or" makes it a choice rather than a checklist */
.choice-or {
  align-self: center;
  display: grid; place-items: center;
  width: 2.9rem; height: 2.9rem;
  margin-inline: -1.45rem;        /* straddles the seam */
  z-index: 2;
  border-radius: 50%;
  background: var(--ivory);
  border: 1px solid var(--line-gold);
  font-family: var(--f-serif); font-style: italic;
  font-size: .88rem; color: var(--ink-soft);
}
.field .opt {
  text-transform: none; letter-spacing: .02em;
  font-weight: 400; opacity: .6; font-size: .92em;
}
.choice-alt {
  margin-top: 1.6rem; text-align: center;
  font-size: .88rem; color: var(--ink-soft);
}
.choice-alt a { color: var(--gold-deep); font-weight: 600; text-decoration: none;
  border-bottom: 1px solid var(--line-gold); }
.choice-alt a:hover { color: var(--navy); }
.choice-alt-note { display: block; margin-top: .25rem; font-size: var(--fs-micro);
  letter-spacing: .18em; text-transform: uppercase; opacity: .75; }

@media (max-width: 880px) {
  .choice-grid { grid-template-columns: 1fr; }
  .choice-or { margin: -1.45rem auto; }
}

/* ============================================================
   ACCESSIBILITY WIDGET
   Built in-house rather than dropping in a third-party overlay:
   no subscription, no external script, and nothing about the
   visitor leaves the page. Preferences persist in localStorage.
   ============================================================ */
.a11y-fab {
  position: fixed;
  right: clamp(.9rem, 2vw, 1.6rem);
  bottom: clamp(.9rem, 2vw, 1.6rem);
  z-index: 90;
  width: 52px; height: 52px;
  display: grid; place-items: center;
  border-radius: 50%;
  background: var(--navy-deep);
  border: 1px solid var(--gold);
  color: var(--gold-bright);
  box-shadow: 0 10px 28px -10px rgba(10,27,49,.6);
  cursor: pointer;
  transition: transform .3s var(--ease-out), background-color .3s;
}
.a11y-fab:hover { transform: translateY(-2px); background: var(--navy); }
.a11y-fab:focus-visible { outline: 3px solid var(--gold-bright); outline-offset: 3px; }
.a11y-fab svg { width: 26px; height: 26px; }

.a11y-panel {
  position: fixed;
  right: clamp(.9rem, 2vw, 1.6rem);
  bottom: calc(clamp(.9rem, 2vw, 1.6rem) + 62px);
  z-index: 91;
  width: min(310px, calc(100vw - 2rem));
  max-height: min(70vh, 560px);
  overflow-y: auto;
  background: var(--ivory-bright);
  border: 1px solid var(--line-gold);
  box-shadow: 0 26px 60px -20px rgba(10,27,49,.5);
  padding: 1.2rem 1.2rem 1rem;
  display: none;
}
.a11y-panel.is-open { display: block; }
.a11y-panel h2 {
  font-size: 1.02rem; color: var(--navy-deep); margin: 0 0 .2rem;
}
.a11y-panel .a11y-sub {
  font-size: .74rem; color: var(--ink-soft); margin: 0 0 1rem;
  padding-bottom: .8rem; border-bottom: 1px solid var(--line);
}
.a11y-row { display: flex; flex-direction: column; gap: .5rem; }
.a11y-opt {
  display: flex; align-items: center; justify-content: space-between; gap: .8rem;
  width: 100%; text-align: left;
  background: none; border: 1px solid var(--line);
  padding: .6rem .75rem; cursor: pointer;
  font-size: .82rem; color: var(--ink);
  transition: border-color .25s, background-color .25s;
}
.a11y-opt:hover { border-color: var(--line-gold); background: rgba(184,145,47,.05); }
.a11y-opt:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.a11y-opt[aria-pressed="true"] { border-color: var(--gold); background: rgba(184,145,47,.11); font-weight: 600; }
.a11y-state {
  font-size: .58rem; letter-spacing: .16em; text-transform: uppercase;
  font-weight: 700; color: var(--ink-soft); flex: none;
}
.a11y-opt[aria-pressed="true"] .a11y-state { color: var(--gold-deep); }
.a11y-reset {
  margin-top: .9rem; width: 100%;
  background: none; border: 0; border-top: 1px solid var(--line);
  padding-top: .8rem; cursor: pointer;
  font-size: .7rem; letter-spacing: .16em; text-transform: uppercase;
  font-weight: 600; color: var(--ink-soft);
}
.a11y-reset:hover { color: var(--carmine); }

/* ---- the effects themselves ---- */
html.a11y-text-lg   body { font-size: 112.5%; }
html.a11y-text-xl   body { font-size: 125%; }
html.a11y-spacing   body { letter-spacing: .02em; word-spacing: .08em; line-height: 1.85; }
html.a11y-links a:not(.btn):not(.coin-link) { text-decoration: underline; text-underline-offset: 3px; }
html.a11y-nomotion *, html.a11y-nomotion *::before, html.a11y-nomotion *::after {
  animation-duration: .001ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: .001ms !important;
  scroll-behavior: auto !important;
}
html.a11y-contrast {
  --ink: #000000; --ink-soft: #24303f;
  --gold-deep: #5C4712; --line: rgba(0,0,0,.4); --line-gold: rgba(92,71,18,.7);
}
html.a11y-contrast .lede,
html.a11y-contrast p, html.a11y-contrast li { color: var(--ink); }
html.a11y-contrast .section--deep p,
html.a11y-contrast .hero p, html.a11y-contrast .footer p { color: #FFFFFF; }
/* readable face for dyslexia — system stack, nothing to download */
html.a11y-readable, html.a11y-readable body,
html.a11y-readable h1, html.a11y-readable h2, html.a11y-readable h3,
html.a11y-readable h4, html.a11y-readable .lede, html.a11y-readable p,
html.a11y-readable li, html.a11y-readable a, html.a11y-readable label {
  font-family: Verdana, "DejaVu Sans", Tahoma, sans-serif !important;
  font-style: normal !important;
}
@media print { .a11y-fab, .a11y-panel { display: none !important; } }

/* form outcome — the error state must not look like a receipt */
.form-success.is-error { border-color: var(--carmine); }
.form-success.is-error h4 { color: var(--carmine); }
.form-success .fs-lines {
  display: grid; gap: .3rem; margin-top: .9rem;
  font-size: .9rem;
}
.form-success .fs-lines a { color: var(--gold-deep); font-weight: 600; text-decoration: none;
  border-bottom: 1px solid var(--line-gold); justify-self: start; }
.form-success .fs-lines a:hover { color: var(--navy); }
.form-success .fs-lines span {
  font-size: var(--fs-micro); letter-spacing: .18em; text-transform: uppercase;
  color: var(--ink-soft); margin-bottom: .35rem;
}
.form--dark .form-success .fs-lines a { color: var(--gold-bright); }
.form--dark .form-success .fs-lines span { color: rgba(246,241,228,.6); }

/* live explainer videos — two-up, real players */
.video-grid--two { grid-template-columns: 1fr 1fr; }
.video-card.is-live { display: flex; flex-direction: column; cursor: default; }
.video-card.is-live:hover { transform: none; }
.video-card.is-live .vc-media { aspect-ratio: 16 / 9; background: var(--navy-deep); }
.video-card.is-live video { width: 100%; height: 100%; display: block; object-fit: cover; }
.video-card.is-live figcaption { padding-top: 1.1rem; display: flex; flex-direction: column; }
.vc-more {
  margin-top: .9rem; align-self: flex-start;
  font-size: .72rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase;
  color: var(--gold-deep); text-decoration: none;
  border-bottom: 1px solid var(--line-gold); padding-bottom: .25em;
}
.vc-more:hover { color: var(--navy); }
@media (max-width: 820px) { .video-grid--two { grid-template-columns: 1fr; } }
.tp-tel-note {
  font-size: var(--fs-micro); letter-spacing: .18em; text-transform: uppercase;
  color: var(--ink-soft); margin-left: .35em;
}

/* ============================================================
   AD LANDING PAGES  (body.lp)
   Stripped chrome — one destination, one action. Nav links are
   removed so paid traffic has nowhere to wander.
   ============================================================ */
body.lp .nav-links,
body.lp .nav-burger,
body.lp .topbar .microprint:first-child { display: none; }
body.lp .footer-cols { display: none; }

.lp-hero {
  background: linear-gradient(158deg, var(--navy-soft), var(--navy-deep) 74%);
  color: var(--cream);
  padding: clamp(2.6rem, 2rem + 4vw, 5rem) 0 clamp(3rem, 2.4rem + 3vw, 5rem);
  position: relative;
  overflow: hidden;
}
.lp-hero::after {
  content: "";
  position: absolute; right: -6%; top: 50%; translate: 0 -50%;
  width: min(46%, 420px); aspect-ratio: 1;
  background: url("../assets/afg-mark-silhouette-navy.png") center/contain no-repeat;
  opacity: .06; pointer-events: none;
}
.lp-hero-grid {
  display: grid; grid-template-columns: 1.1fr .9fr;
  gap: clamp(2rem, 4vw, 4rem); align-items: start;
  position: relative; z-index: 1;
}
.lp-hero h1 {
  color: var(--ivory-bright);
  font-size: clamp(2rem, 1.4rem + 3.2vw, 3.4rem);
  line-height: 1.08; margin: .4rem 0 1rem;
}
.lp-hero h1 em { color: var(--gold-bright); }
.lp-hero .lede { color: rgba(246,241,228,.86); max-width: 46ch; }
.lp-hero .lede b { color: var(--ivory-bright); }

.lp-ticks { list-style: none; padding: 0; margin: 1.6rem 0 2rem; display: grid; gap: .55rem; }
.lp-ticks li {
  position: relative; padding-left: 1.7rem;
  font-size: .95rem; color: rgba(246,241,228,.9);
}
.lp-ticks li::before {
  content: ""; position: absolute; left: .1rem; top: .42em;
  width: .62rem; height: .34rem;
  border-left: 2px solid var(--gold-bright);
  border-bottom: 2px solid var(--gold-bright);
  rotate: -45deg;
}
.lp-trust {
  margin-top: 1.6rem; font-size: var(--fs-micro);
  letter-spacing: .18em; text-transform: uppercase;
  color: rgba(233,217,168,.72);
}

/* form card floats on the hero */
.lp-card {
  background: var(--ivory-bright); color: var(--ink);
  padding: clamp(1.5rem, 1.2rem + 1.4vw, 2.2rem);
  border-top: 3px solid var(--gold);
  box-shadow: 0 30px 60px -24px rgba(0,0,0,.55);
}
.lp-card .microprint { color: var(--gold-deep); }
.lp-card h2 { font-size: clamp(1.25rem, 1.05rem + .8vw, 1.6rem); color: var(--navy-deep); margin: .35rem 0 .5rem; }
.lp-card-sub { font-size: .88rem; color: var(--ink-soft); margin-bottom: 1.3rem;
  padding-bottom: 1.1rem; border-bottom: 1px solid var(--line); }
.lp-card .btn { width: 100%; justify-content: center; }

/* ---- cost comparison: the anchor ---- */
.lp-cost-table {
  margin-top: clamp(1.8rem, 1.4rem + 1.6vw, 2.8rem);
  border: 1px solid var(--line); background: var(--ivory-bright);
  overflow: hidden;
}
.lp-cost-row {
  display: grid; grid-template-columns: 1.1fr .7fr 2fr;
  gap: 1.2rem; padding: 1.05rem 1.3rem;
  border-bottom: 1px solid var(--line); align-items: baseline;
}
.lp-cost-row:last-child { border-bottom: 0; }
.lp-cost-row--head {
  background: var(--ivory-deep);
  font-size: .6rem; font-weight: 700; letter-spacing: .2em;
  text-transform: uppercase; color: var(--ink-soft);
}
.lp-cost-what { font-weight: 600; color: var(--navy-deep); font-size: .95rem; }
.lp-cost-num {
  font-family: var(--f-display); font-size: 1.15rem; color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.lp-cost-note { font-size: .86rem; color: var(--ink-soft); line-height: 1.55; }
.lp-cost-row--ours {
  background: linear-gradient(90deg, rgba(184,145,47,.12), rgba(184,145,47,.05));
  border-left: 3px solid var(--gold);
}
.lp-cost-row--ours .lp-cost-num { color: var(--gold-deep); font-size: 1.5rem; font-weight: 700; }
.lp-cost-row--ours .lp-cost-what { color: var(--navy-deep); }
.lp-fineprint {
  margin-top: 1.3rem; font-size: .82rem; line-height: 1.65;
  color: var(--ink-soft); max-width: 78ch;
}

/* ---- why plans fail ---- */
.lp-fail-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.3rem; margin-top: 2.4rem; }
.lp-fail {
  background: var(--ivory-bright); border: 1px solid var(--line);
  border-top: 3px solid var(--carmine); padding: 1.6rem 1.5rem;
}
.lp-fail h3 { font-size: 1.05rem; color: var(--navy-deep); margin-bottom: .6rem; line-height: 1.3; }
.lp-fail p { font-size: .9rem; color: var(--ink-soft); line-height: 1.6; }
.lp-pull {
  margin-top: 2.2rem; padding: 1.3rem 1.6rem;
  border-left: 3px solid var(--gold);
  background: rgba(184,145,47,.08);
  font-family: var(--f-serif); font-style: italic;
  font-size: 1.05rem; color: var(--navy); max-width: 74ch;
}

.lp-disclose { padding-top: 0; }
.lp-disclose .microprint {
  text-transform: none; letter-spacing: .01em; line-height: 1.7;
  font-size: .72rem; color: var(--ink-soft); max-width: 90ch;
}

/* ---- unresolved claims: loud on purpose, so this cannot ship ---- */
.lp-flag {
  display: inline-block;
  background: #FFF3CD; color: #6B4E00;
  border: 1px dashed #B8912F;
  padding: .15em .5em; margin: .15em 0;
  font-family: var(--f-mono, ui-monospace, monospace);
  font-size: .78em; font-style: normal; letter-spacing: 0;
  text-transform: none; line-height: 1.5;
}

@media (max-width: 900px) {
  .lp-hero-grid { grid-template-columns: 1fr; }
  .lp-fail-grid { grid-template-columns: 1fr; }
  .lp-cost-row { grid-template-columns: 1fr; gap: .35rem; }
  .lp-cost-row--head { display: none; }
  .lp-cost-note { font-size: .84rem; }
}

/* Carrier wall grouped by line of business — added 2026-08-28 when the real
   roster replaced the placeholder list. Each group keeps the existing tile
   treatment; only the grouping and its label are new. */
.carrier-group { margin-bottom: 2.2rem; }
.carrier-group:last-of-type { margin-bottom: 0; }
.carrier-group .eyebrow { text-align: center; margin-bottom: 1rem; }

/* Booking link-out — Microsoft "Book with me" pages refuse to be framed
   (frame-ancestors is limited to Microsoft hosts), so instead of an empty
   iframe the panel invites the visitor out to the real booking page. */
.booking-linkout {
  display: flex; flex-direction: column; align-items: flex-start; gap: .9rem;
  padding: clamp(1.6rem, 1.2rem + 1.5vw, 2.4rem);
  border: 1px solid var(--line-gold, rgba(184,145,47,.35));
  border-radius: 4px;
  background: var(--paper, #fff);
}
.booking-linkout .bl-copy {
  margin: 0; max-width: 46ch;
  color: var(--ink, #131c2b);
  font-size: 1.05rem; line-height: 1.6;
}
.booking-linkout .btn { margin-top: .35rem; }
/* The panel sits on a light card inside a navy section, so the note needs an
   explicit dark colour — inheriting the section's light-on-navy text made it
   almost invisible. */
.booking-linkout .bl-note {
  margin: .2rem 0 0;
  color: var(--ink-soft, #3c4759);
  opacity: .9;
}

/* Welcome film on the About page. Native controls, no third-party player —
   nothing loads until the visitor presses play (preload="metadata"). */
.welcome-video .wv-frame { margin: 0; }
.welcome-video .wv-video {
  display: block; width: 100%; height: auto;
  border-radius: 3px; background: var(--navy-deep, #0A1B31);
  box-shadow: 0 24px 64px -24px rgba(10,27,49,.55);
}
.welcome-video figcaption { margin-top: 1rem; text-align: center; }

/* Closed flipbook — show the cover as a closed book, not an open spread.
   Leaves live on the right half (left:50%; width:50%), so before the first
   turn the left half is an empty page and the book reads as already open.
   While closed we slide the book right-half into the centre, pull the board
   in behind it, and hide the spine. Opening reverses all three. */
.fb-book { transition: transform .8s var(--ease-swift); }
.fb-book.is-closed { transform: translateX(-25%); }
.fb-book.is-closed .fb-board { left: 50%; transition: left .8s var(--ease-swift); }
.fb-book.is-closed .fb-spine { opacity: 0; }
.fb-board { transition: left .8s var(--ease-swift); }
.fb-spine { transition: opacity .5s ease; }
@media (prefers-reduced-motion: reduce) {
  .fb-book, .fb-board, .fb-spine { transition: none; }
}

/* Guide cover art — a duotoned photograph and a ghosted numeral behind the
   lockup. The cover is a flex column, so the art layer is taken out of flow
   and pinned; everything else keeps its existing stacking. */
/* keep .fb-page's absolute inset:0 — overriding position here collapsed the
   cover to content height and exposed the page behind it. */
.fb-cover { overflow: hidden; isolation: isolate; }
.fb-cover-art { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.fb-cover-art img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  /* duotone: crush to grey, then let the navy ground tint it back */
  filter: grayscale(.72) contrast(1.22) brightness(.78) sepia(.18);
  mix-blend-mode: luminosity; opacity: .70;
}
.fb-cover-art::after {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(168deg, rgba(27,58,95,.52), rgba(10,27,49,.86) 78%),
    radial-gradient(130% 95% at 50% 8%, rgba(184,145,47,.30), transparent 62%);
}
.fb-cover-numeral {
  position: absolute; right: -.06em; bottom: -.30em;
  font-family: "Libre Caslon Display", Georgia, serif;
  font-size: clamp(7rem, 4rem + 16vw, 15rem); line-height: .8;
  color: rgba(217,182,92,.22);
  letter-spacing: -.02em; user-select: none;
}
/* keep the real cover content above the art */
.fb-cover > *:not(.fb-cover-art) { position: relative; z-index: 1; }

/* ── Flipbook fit & scroll ─────────────────────────────────────────────────
   Two linked problems: the book was 801px tall at full width (taller than a
   laptop fold, so the reader never saw it whole), and .fb-page is an
   overflow-y:auto scroller — whenever its copy overflowed, the wheel was
   captured and the document stopped moving.

   Both are the same fix. Cap the book to the viewport so it is visible in
   one go, and scale the page type to the height available so the copy fits
   without overflowing. A non-overflowing overflow:auto element does not
   capture the wheel, so scroll passes straight through to the page. The
   scroller stays as a safety net for the longest chapters. */
.flipbook { --fb-chrome: 15rem; }           /* nav + note + controls + breathing */
.fb-book {
  max-height: calc(100svh - var(--fb-chrome));
  width: min(100%, calc((100svh - var(--fb-chrome)) * 2 / 1.54));
  margin-inline: auto;
}
.fb-page {
  /* type tracks the height actually available, not just the width */
  font-size: clamp(.72rem, .44rem + .66vh + .30vw, .94rem);
  scrollbar-width: thin;
}
.fb-page h3 { font-size: clamp(.95rem, .62rem + 1.02vh, 1.42rem); margin-bottom: .5em; }
.fb-page p, .fb-page li { line-height: 1.45; }
.fb-page p + p, .fb-page ul, .fb-page ol { margin-top: .62em; }

@media (max-width: 820px) {
  /* portrait phone: the single page is tall by design; let it scroll and give
     the wheel/touch back to the document at the ends */
  .flipbook { --fb-chrome: 12rem; }
  .fb-book { width: 100%; max-height: none; }
  .fb-page { font-size: clamp(.82rem, .74rem + .5vw, .98rem); }
}

/* The copy itself is sized by `.fb-page p` / `.fb-page .sealed-list li`, which
   outrank the container rule above — so scaling `.fb-page` alone changed
   nothing. These match that specificity and add the height term, which is what
   stops the longest chapters from overflowing into an inner scroller. */
.fb-page p { font-size: clamp(.74rem, .58rem + .52vh + .30vw, .92rem); }
.fb-page .sealed-list li { font-size: clamp(.71rem, .56rem + .48vh + .28vw, .87rem); }
@media (max-width: 820px) {
  .fb-page p { font-size: clamp(.82rem, .74rem + .5vw, .95rem); }
  .fb-page .sealed-list li { font-size: clamp(.79rem, .72rem + .45vw, .9rem); }
}

/* Last 20–30px on three chapter pages. Tightening rhythm rather than shrinking
   type again — below ~14px the guides stop being comfortable to read. */
.fb-page { padding-block: clamp(.9rem, .6rem + 1.4vh, 2.2rem); }
.fb-page .fb-opener-inline { margin-bottom: .55em; }
.fb-page .fb-callout { margin-top: .7em; padding: .7em .85em; }
.fb-page .sealed-list { margin-block: .5em; }
.fb-page .sealed-list li + li { margin-top: .3em; }

/* A floor on the book. Capping purely to the viewport made short laptop
   screens shrink the pages until the copy overflowed again, which is the wheel
   trap coming back by another route. Below this height the book stops
   shrinking and simply extends past the fold — the page scroll then carries
   the reader, which is the behaviour that never feels stuck. */
.fb-book { min-height: 34rem; }
@media (max-width: 820px) { .fb-book { min-height: 0; } }

/* One clamped height drives both dimensions. Previously the width was computed
   from raw viewport height, so a short screen produced a NARROW book — which
   made the copy taller and brought the overflow back. Deriving width from the
   same clamped height keeps the spread proportional at every screen size. */
.flipbook { --fb-h: clamp(34rem, calc(100svh - var(--fb-chrome)), 50rem); }
.fb-book {
  aspect-ratio: auto;
  height: var(--fb-h);
  min-height: 0;
  max-height: none;
  width: min(100%, calc(var(--fb-h) * 2 / 1.54));
}
@media (max-width: 820px) {
  .flipbook { --fb-h: auto; }
  .fb-book { aspect-ratio: 1 / 1.95; height: auto; width: 100%; }
}
