/* Voyager Benefits Alliance voyagerba.com
   White ground, navy structure. Gold is a hairline accent only, never a fill.
   Navy tokens match edinburg.voyagerba.com so the two sites read as one firm. */

:root{
  /* Brand */
  --navy:#16305f;
  --navy-ink:#0f2247;
  --navy-soft:#2c4a86;
  --navy-line:#c9d4e8;
  --gold:#c99a3f;

  /* Ground */
  --white:#ffffff;
  --wash:#f7f9fc;
  --wash-2:#eef2f9;
  --line:#e3e8f0;
  --line-strong:#cdd6e4;

  /* Ink */
  --ink:#101725;
  --muted:#59637a;
  --muted-light:#68718a;

  --font-head:"Source Serif 4", Georgia, "Times New Roman", serif;
  --font-body:"Public Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

  /* Type scale, real contrast between steps */
  --step--2:clamp(.75rem,.73rem + .1vw,.8125rem);
  --step--1:clamp(.875rem,.85rem + .12vw,.9375rem);
  --step-0:clamp(1rem,.97rem + .15vw,1.0625rem);
  --step-1:clamp(1.125rem,1.06rem + .3vw,1.3125rem);
  --step-2:clamp(1.4375rem,1.3rem + .7vw,1.875rem);
  --step-3:clamp(1.875rem,1.6rem + 1.4vw,2.75rem);
  --step-4:clamp(2.375rem,1.9rem + 2.4vw,4rem);

  --maxw:74rem;
  --prose:38rem;
  --gutter:clamp(1.25rem,5vw,3.5rem);

  --ease-out:cubic-bezier(.23,1,.32,1);
  --ease-in-out:cubic-bezier(.77,0,.175,1);

  --radius:10px;
  --radius-sm:6px;
}

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

html{color-scheme:light;-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}

body{
  margin:0;
  background:var(--white);
  color:var(--ink);
  font-family:var(--font-body);
  font-size:var(--step-0);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img,svg,video{max-width:100%;height:auto;display:block}

h1,h2,h3{
  font-family:var(--font-head);
  font-weight:600;
  color:var(--navy-ink);
  line-height:1.12;
  letter-spacing:-.015em;
  margin:0 0 .5em;
  text-wrap:balance;
}
h1{font-size:var(--step-4)}
h2{font-size:var(--step-3)}
h3{font-size:var(--step-1);letter-spacing:-.005em}

p{margin:0 0 1.1em;max-width:var(--prose)}
p:last-child{margin-bottom:0}

a{color:var(--navy);text-decoration-thickness:1px;text-underline-offset:.2em}

:where(a,button,summary,input,select,textarea):focus-visible{
  outline:2px solid var(--gold);
  outline-offset:3px;
  border-radius:3px;
}

.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Eyebrow: the one repeating label device */
.eyebrow{
  font-size:var(--step--2);
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--navy-soft);
  margin:0 0 1rem;
  display:flex;
  align-items:center;
  gap:.7rem;
}
.eyebrow::before{
  content:"";
  width:22px;
  height:1px;
  background:var(--gold);
  flex:none;
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.5rem;
  min-height:48px;
  padding:.8rem 1.4rem;
  border-radius:var(--radius-sm);
  font-family:var(--font-body);
  font-size:var(--step--1);
  font-weight:700;
  letter-spacing:.01em;
  text-decoration:none;
  border:1.5px solid transparent;
  cursor:pointer;
  transition:transform 160ms var(--ease-out),background-color 160ms ease,border-color 160ms ease,color 160ms ease;
}
.btn:active{transform:scale(.975)}
.btn-primary{background:var(--navy);color:var(--white);border-color:var(--navy)}
.btn-ghost{background:transparent;color:var(--navy);border-color:var(--line-strong)}
.btn-onnavy{background:var(--white);color:var(--navy-ink);border-color:var(--white)}
@media (hover:hover) and (pointer:fine){
  .btn-primary:hover{background:var(--navy-ink);border-color:var(--navy-ink)}
  .btn-ghost:hover{border-color:var(--navy);background:var(--wash)}
  .btn-onnavy:hover{background:var(--wash-2);border-color:var(--wash-2)}
}

/* ---------- Header ---------- */
.top{
  position:sticky;top:0;z-index:40;
  background:rgba(255,255,255,.92);
  backdrop-filter:saturate(1.6) blur(8px);
  border-bottom:1px solid var(--line);
}
.top > .wrap{display:flex;align-items:center;gap:1rem;min-height:74px}
.brand{display:flex;align-items:center;text-decoration:none;flex:none}
.brand img{width:auto;height:38px}
@media (max-width:520px){.brand img{height:30px}}

.nav{margin-left:auto;display:none;align-items:center;gap:1.6rem}
@media (min-width:1120px){.nav{display:flex;gap:2rem}}
.nav a{
  color:var(--ink);
  text-decoration:none;
  font-size:var(--step--1);
  font-weight:600;
  padding:.35rem 0;
  white-space:nowrap;
  border-bottom:2px solid transparent;
  transition:color 160ms ease,border-color 160ms ease;
}
@media (hover:hover) and (pointer:fine){
  .nav a:hover{color:var(--navy);border-bottom-color:var(--gold)}
}

.top-cta{margin-left:auto;display:flex;align-items:center;gap:.9rem}
@media (min-width:1120px){.top-cta{margin-left:2rem}}
.top-phone{
  display:none;
  font-size:var(--step--1);
  font-weight:700;
  color:var(--navy-ink);
  text-decoration:none;
  white-space:nowrap;
}
@media (min-width:640px){.top-phone{display:inline-flex;align-items:center;gap:.45rem}}
.top-phone svg{width:16px;height:16px;flex:none;color:var(--navy-soft)}
.top-cta .btn{min-height:42px;padding:.55rem 1.05rem;white-space:nowrap}
/* Small screens already have the sticky call bar, so don't crowd the wordmark. */
@media (max-width:760px){.top-cta .btn{display:none}}
@media (max-width:639px){.top-cta{margin-left:auto}}

/* Mobile menu */
.menu-btn{
  margin-left:auto;
  display:inline-flex;align-items:center;justify-content:center;
  width:48px;height:48px;
  background:transparent;border:1px solid var(--line-strong);border-radius:var(--radius-sm);
  color:var(--navy-ink);cursor:pointer;
  transition:transform 160ms var(--ease-out),background-color 160ms ease;
}
.menu-btn:active{transform:scale(.96)}
@media (min-width:1120px){.menu-btn{display:none}}
.menu-btn svg{width:22px;height:22px}
.menu-btn .x{display:none}
.menu-btn[aria-expanded="true"] .x{display:block}
.menu-btn[aria-expanded="true"] .bars{display:none}

.drawer{
  display:none;
  border-top:1px solid var(--line);
  background:var(--white);
}
.drawer[data-open="true"]{display:block}
@media (min-width:1120px){.drawer{display:none!important}}
.drawer ul{list-style:none;margin:0;padding:.5rem 0 1.25rem}
.drawer li+li{border-top:1px solid var(--line)}
.drawer ul a{
  display:flex;
  align-items:center;
  padding:.95rem 0;
  min-height:48px;
  color:var(--ink);
  text-decoration:none;
  font-weight:600;
}
.drawer .phone-row{
  margin-top:.75rem;
  display:flex;gap:.6rem;flex-wrap:wrap;
}
.drawer .phone-row .btn{flex:1 1 12rem}

/* ---------- Hero ---------- */
.hero{position:relative;padding:clamp(3rem,8vw,6.5rem) 0 clamp(2.5rem,6vw,4.5rem);overflow:hidden}
.hero-rose{
  position:absolute;
  top:46%;left:44%;
  transform:translate(-50%,-50%);
  width:min(44rem,115vw);
  color:var(--navy);
  opacity:.075;
  pointer-events:none;
  z-index:0;
}
@media (max-width:860px){.hero-rose{width:40rem;opacity:.06}}
.hero .wrap{position:relative;z-index:1}

.hero-grid{display:grid;gap:clamp(2rem,5vw,3.5rem);align-items:center}
@media (min-width:900px){.hero-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr)}}
.hero-copy{max-width:46rem}

/* The character. Beside the headline, never inside it. */
.hero-figure{margin:0;display:flex;justify-content:center}
.hero-figure img{
  width:min(17rem,62%);
  filter:drop-shadow(0 20px 36px rgba(15,34,71,.16));
}
/* A soft white pool so the character reads cleanly over the rose behind it. */
.hero-figure::before{
  content:"";
  position:absolute;
  inset:-8% -6%;
  background:radial-gradient(closest-side, rgba(255,255,255,.92), rgba(255,255,255,0));
  z-index:-1;
}
.hero-figure{position:relative}
@media (min-width:900px){.hero-figure img{width:min(19rem,100%)}}
@media (max-width:899px){.hero-figure{order:-1;justify-content:flex-start}.hero-figure img{width:9rem}}

.hero h1{margin-bottom:.35em;max-width:15ch}
.hero .lead{
  font-size:var(--step-1);
  color:var(--muted);
  max-width:52ch;
  line-height:1.55;
}
.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2.25rem}
.hero-meta{
  margin:clamp(2.5rem,6vw,4rem) 0 0;
  padding-top:1.75rem;
  border-top:1px solid var(--line);
  display:grid;gap:1.75rem 2.5rem;
}
@media (min-width:720px){.hero-meta{grid-template-columns:repeat(3,minmax(0,1fr));gap:2.5rem}}
.hero-meta dt{
  font-size:var(--step--2);
  font-weight:700;
  letter-spacing:.11em;
  text-transform:uppercase;
  color:var(--muted-light);
  margin-bottom:.3rem;
}
.hero-meta dd{margin:0;font-size:var(--step--1);color:var(--ink);line-height:1.45}
.hero-meta dd b{font-family:var(--font-head);font-size:var(--step-1);font-weight:600;color:var(--navy);display:block;line-height:1.1;margin-bottom:.15rem}

/* ---------- Office band ---------- */
.shopfront figure{margin:0}
.shopfront img{width:100%;object-fit:cover;aspect-ratio:1600/549}
@media (max-width:640px){.shopfront img{aspect-ratio:16/11;object-position:50% 36%}}
.shopfront figcaption{
  background:var(--navy);
  color:#dde5f2;
  font-size:var(--step--1);
  padding-block:1rem;
  padding-inline:max(var(--gutter), calc((100% - var(--maxw)) / 2));
  max-width:none;
  display:flex;flex-wrap:wrap;gap:.35rem 2rem;align-items:baseline;justify-content:space-between;
}
.shopfront figcaption b{color:var(--white);font-weight:700}

/* ---------- Section frame ---------- */
.band{padding:clamp(3.5rem,8vw,6rem) 0;border-top:1px solid var(--line)}
.band.wash{background:var(--wash);border-top-color:var(--line)}
.band-head{max-width:34rem;margin-bottom:clamp(2rem,4vw,3rem)}
.band-head p{color:var(--muted);font-size:var(--step-1);line-height:1.5;margin-bottom:0}

/* ---------- Two doors ---------- */
.doors{display:grid;gap:0;border-top:1px solid var(--line-strong)}
@media (min-width:860px){
  .doors{grid-template-columns:1fr 1fr}
  .doors > *:first-child{border-right:1px solid var(--line-strong);padding-right:clamp(2rem,4vw,3.5rem)}
  .doors > *:last-child{padding-left:clamp(2rem,4vw,3.5rem)}
}
.door{padding:clamp(2rem,4vw,2.75rem) 0;position:relative}
@media (max-width:859px){.door+.door{border-top:1px solid var(--line-strong)}}
.door h3{font-size:var(--step-2);margin-bottom:.4em}
.door > p{color:var(--muted);margin-bottom:1.5rem}
.door ul{list-style:none;margin:0 0 1.75rem;padding:0;display:grid;gap:.85rem}
.door li{position:relative;padding-left:1.7rem;font-size:var(--step--1);line-height:1.5}
.door li svg{position:absolute;left:0;top:.28em;width:18px;height:18px;color:var(--navy-soft)}
.door-link{
  display:inline-flex;align-items:center;gap:.5rem;
  font-weight:700;font-size:var(--step--1);
  color:var(--navy);text-decoration:none;
  min-height:44px;
  border-bottom:2px solid var(--navy-line);
  padding-bottom:.15rem;
  transition:border-color 180ms ease,gap 180ms var(--ease-out);
}
.door-link svg{width:16px;height:16px;transition:transform 180ms var(--ease-out)}
@media (hover:hover) and (pointer:fine){
  .door-link:hover{border-color:var(--navy)}
  .door-link:hover svg{transform:translateX(3px)}
}

/* ---------- Services: numbered editorial rows, not a card grid ---------- */
.rows{border-top:1px solid var(--line)}
.row{
  display:grid;
  gap:.5rem 2.5rem;
  padding:clamp(1.75rem,3.5vw,2.5rem) 0;
  border-bottom:1px solid var(--line);
}
@media (min-width:860px){
  .row{grid-template-columns:4.5rem minmax(0,20rem) minmax(0,1fr);align-items:baseline}
}
.row-num{
  font-family:var(--font-head);
  font-size:var(--step-1);
  color:var(--navy-line);
  font-weight:600;
  font-variant-numeric:tabular-nums;
}
.row h3{margin-bottom:0}
.row p{color:var(--muted);margin-bottom:0;max-width:44ch}
.row .row-note{
  display:block;margin-top:.85rem;
  font-size:var(--step--1);color:var(--navy-soft);font-weight:600;
}

/* ---------- Fixed-account band ---------- */
.rate{background:var(--navy-ink);color:var(--white);border-top:0}
.rate h2{color:var(--white)}
.rate-grid{display:grid;gap:clamp(1.75rem,4vw,3rem);align-items:center}
@media (min-width:860px){.rate-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr)}}
.rate .eyebrow{color:#a9bce0}
.rate-figure{
  border:1px solid rgba(255,255,255,.22);
  border-radius:var(--radius);
  padding:clamp(1.5rem,3.5vw,2.25rem);
  background:rgba(255,255,255,.045);
}
.rate-num{
  font-family:var(--font-head);
  font-size:clamp(3rem,9vw,4.75rem);
  font-weight:600;
  line-height:.95;
  letter-spacing:-.02em;
  color:var(--white);
  display:block;
}
.rate-num sup{font-size:.4em;vertical-align:super;margin-left:.06em;letter-spacing:0}
.rate-label{
  display:block;margin-top:.6rem;
  font-size:var(--step--1);font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#a9bce0;
}
.rate-figure hr{border:0;border-top:1px solid rgba(255,255,255,.2);margin:1.35rem 0}
.rate-points{list-style:none;margin:0;padding:0;display:grid;gap:.7rem}
.rate-points li{position:relative;padding-left:1.6rem;font-size:var(--step--1);color:#dde5f2}
.rate-points svg{position:absolute;left:0;top:.3em;width:17px;height:17px;color:var(--gold)}
.rate p{color:#c3cfe4}
.rate .btn{margin-top:1.5rem}
.rate-disclosure{
  margin-top:2.25rem;padding-top:1.35rem;
  border-top:1px solid rgba(255,255,255,.18);
  font-size:var(--step--2);
  line-height:1.6;
  color:#9fadc7;
  max-width:70ch;
}

/* ---------- Contact ---------- */
.contact-grid{display:grid;gap:clamp(2rem,5vw,3.5rem)}
@media (min-width:860px){.contact-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.contact-list{list-style:none;margin:0;padding:0;display:grid;gap:1.6rem}
.contact-list dt{
  font-size:var(--step--2);font-weight:700;letter-spacing:.11em;text-transform:uppercase;
  color:var(--muted-light);margin-bottom:.3rem;
}
.contact-list dd{margin:0;font-size:var(--step-0);line-height:1.5}
.contact-list dd a{font-weight:600;text-decoration:none;border-bottom:1px solid var(--navy-line)}
@media (hover:hover) and (pointer:fine){.contact-list dd a:hover{border-bottom-color:var(--navy)}}
.contact-big{
  font-family:var(--font-head);
  font-size:var(--step-2);
  font-weight:600;
  color:var(--navy);
  text-decoration:none;
  letter-spacing:-.01em;
  display:inline-block;
  min-height:44px;
}

.map-card{
  border:1px solid var(--line-strong);
  border-radius:var(--radius);
  overflow:hidden;
  background:var(--wash);
}
.map-card iframe{display:block;width:100%;height:320px;border:0;filter:saturate(.75)}
.map-card .map-foot{
  padding:1rem 1.25rem;
  border-top:1px solid var(--line-strong);
  background:var(--white);
  font-size:var(--step--1);
  display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;justify-content:space-between;
}
.map-card .map-foot a{font-weight:700;text-decoration:none;border-bottom:1px solid var(--navy-line);min-height:44px;display:inline-flex;align-items:center}

/* ---------- Footer ---------- */
.foot{background:var(--navy-ink);color:#c3cfe4;padding:clamp(3rem,6vw,4rem) 0 2rem}
.foot-grid{display:grid;gap:2.5rem;padding-bottom:2.5rem;border-bottom:1px solid rgba(255,255,255,.14)}
@media (min-width:760px){.foot-grid{grid-template-columns:minmax(0,1.3fr) repeat(2,minmax(0,1fr))}}
.foot img{height:34px;width:auto;filter:brightness(0) invert(1);opacity:.95}
.foot p{color:#9fadc7;font-size:var(--step--1);margin-top:1.1rem;max-width:32ch}
.foot h4{
  font-family:var(--font-body);
  font-size:var(--step--2);font-weight:700;letter-spacing:.11em;text-transform:uppercase;
  color:#8296b8;margin:0 0 1rem;
}
.foot ul{list-style:none;margin:0;padding:0;display:grid;gap:.7rem}
.foot a{color:#dde5f2;text-decoration:none;font-size:var(--step--1);display:inline-flex;align-items:center;min-height:32px}
@media (hover:hover) and (pointer:fine){.foot a:hover{color:var(--white);text-decoration:underline}}
.foot-bottom{
  padding-top:1.75rem;
  display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;justify-content:space-between;
  font-size:var(--step--2);color:#8296b8;
}
.foot-bottom p{margin:0;color:#8296b8;max-width:none}

/* ---------- Sticky call bar (small screens) ---------- */
.callbar{
  position:fixed;left:0;right:0;bottom:0;z-index:50;
  background:var(--navy);
  padding:.6rem var(--gutter) calc(.6rem + env(safe-area-inset-bottom));
  display:flex;gap:.6rem;
  border-top:1px solid var(--navy-soft);
}
.callbar .btn{flex:1;min-height:48px}
@media (min-width:640px){.callbar{display:none}}
@media (max-width:639px){body{padding-bottom:5rem}}

/* ---------- Reveal ---------- */
.reveal{opacity:0;transform:translateY(14px);transition:opacity 560ms var(--ease-out),transform 560ms var(--ease-out)}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}}

/* ---------- Review mode ----------
   OFF by default. Nothing below renders unless site.js adds .review to <body>,
   which only happens for ?review=1. If this ever ships, the public sees the
   clean page. */
body.review .vq{
  background:#fdf3d8;
  box-shadow:0 0 0 2px #fdf3d8;
  border-bottom:2px dotted #9a5b00;
  border-radius:2px;
}
body.review .vq::after{
  content:attr(data-vq);
  display:inline-block;
  margin-left:.3em;
  min-width:1.15em;
  padding:0 .28em;
  border-radius:999px;
  background:#9a5b00;
  color:#fff;
  font-family:var(--font-body);
  font-size:.62em;
  font-weight:700;
  line-height:1.5;
  vertical-align:super;
  text-transform:none;
  letter-spacing:0;
}
/* On the navy band the highlight has to invert or it blinds the number. */
body.review .rate .vq{
  background:rgba(253,243,216,.14);
  box-shadow:0 0 0 3px rgba(253,243,216,.14);
  border-bottom-color:#e7c98a;
}

body.review .review-panel{display:block}
.review-panel{background:#fffaf0;border-top:2px solid #9a5b00}
.review-panel .eyebrow{color:#9a5b00}
.review-panel .eyebrow::before{background:#9a5b00}
.vq-list{margin:2rem 0 0;padding-left:1.4rem;display:grid;gap:1.1rem;max-width:56rem}
.vq-list li{font-size:var(--step--1);line-height:1.6}
.vq-list li::marker{color:#9a5b00;font-weight:700}
.vq-list b{color:var(--navy-ink)}

.review-flag{
  position:fixed;top:0;left:0;right:0;z-index:60;
  background:#9a5b00;color:#fff;
  font-size:var(--step--2);font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  padding:.45rem var(--gutter);
  display:flex;gap:1rem;align-items:center;justify-content:space-between;
}
.review-flag a{color:#fff;text-decoration:underline;min-height:32px;display:inline-flex;align-items:center}
body.review{padding-top:2.2rem}
body.review .top{top:2.2rem}

/* ---- Inquiry page (/inquire/) ---- */
.inq h1{font-size:var(--step-3);max-width:20ch}
.inq-grid{display:grid;gap:clamp(2rem,5vw,3.5rem)}
@media (min-width:860px){.inq-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:start}}
.inq-form{display:grid;gap:1.1rem;max-width:36rem}
.inq-form fieldset{border:1px solid var(--line);border-radius:10px;padding:1rem 1.1rem;margin:0;display:grid;gap:.6rem}
.inq-form legend{font-weight:600;color:var(--navy-ink);padding:0 .3rem}
.inq-form label{display:grid;gap:.35rem;font-weight:600;color:var(--navy-ink);font-size:var(--step--1)}
.inq-form label.choice{display:flex;gap:.6rem;align-items:center;font-weight:400;color:var(--ink);font-size:var(--step-0);min-height:44px}
.inq-form .opt{font-weight:400;color:var(--muted)}
.inq-form input:not([type=radio]),.inq-form select,.inq-form textarea{font:inherit;font-weight:400;font-size:var(--step-0);color:var(--ink);background:var(--white);border:1px solid var(--line-strong);border-radius:8px;padding:.7rem .8rem;min-height:44px;width:100%;box-sizing:border-box}
.inq-form input[type=radio]{flex:none;width:1.15rem;height:1.15rem;margin:0;accent-color:var(--navy)}
.inq-form .btn{justify-self:start}
.inq-note{font-size:var(--step--1);color:var(--muted);margin:0}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
