:root{
  --navy:#0b3a6d;
  --navy-deep:#083d70;
  --ink:#213547;
  --body:#2c3e50;
  --muted:#4a5c6b;
  --band:#eaf3f8;
  --footer:#edf7fb;
  --line:#c9d8e6;
  --card-border:#e2ebf3;
  --serif:"Source Serif 4", Georgia, "Times New Roman", serif;
  --display:"Playfair Display", Georgia, serif;
  --sans:"Lato", "Helvetica Neue", Arial, sans-serif;
  --maxw:1024px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:#fff;
  color:var(--body);
  font-family:var(--serif);
  font-size:16px;
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
a{color:inherit}
.ico{width:22px;height:22px;fill:var(--navy);flex:none}
.ico--sm{width:15px;height:15px}
.ico[fill="none"]{fill:none;stroke:currentColor}
.ico--lg{width:40px;height:40px;fill:none;stroke:var(--navy)}
.bar{color:#9fb4c8;margin:0 .55em;font-weight:400}

/* ---------------- HERO ---------------- */
.hero{
  position:relative;
  overflow:hidden;
  background:linear-gradient(180deg,#fdfeff 0%,#fbfdfe 55%,#f6fafc 100%);
  padding:0;
  isolation:isolate;
}
.hero__photo{
  position:absolute;top:0;bottom:0;
  background-repeat:no-repeat;
  z-index:0;
  pointer-events:none;
}
.hero__photo--left{
  left:0;width:31%;
  background-image:url("assets/hero-left.png");
  background-size:auto 100%;background-position:right center;
}
.hero__photo--right{
  right:0;width:30%;
  background-image:url("assets/hero-right.png");
  background-size:auto 100%;background-position:left center;
}
.hero__inner{
  position:relative;z-index:2;
  max-width:var(--maxw);
  margin:0 auto;
  padding:2.0rem 1rem 0.6rem;
  text-align:center;
}
.hero__title{
  font-family:var(--display);
  font-weight:700;
  color:var(--navy);
  font-size:clamp(2.4rem,6.3vw,4.05rem);
  line-height:1.02;
  margin:0 0 .35rem;
  letter-spacing:.005em;
}
.hero__subtitle{
  font-family:var(--display);
  color:var(--navy);
  font-size:clamp(1rem,2.1vw,1.42rem);
  letter-spacing:.34em;
  text-indent:.34em;
  text-transform:uppercase;
  margin:0 0 1.05rem;
  font-weight:500;
}
.hero__tagline{
  font-family:var(--display);
  font-style:italic;
  color:var(--navy);
  font-size:clamp(1rem,2.15vw,1.45rem);
  margin:0 0 1.05rem;
  font-weight:500;
}
.hero__pills{
  display:inline-block;
  border-top:1px solid #bfd3e4;
  border-bottom:1px solid #bfd3e4;
  padding:.5rem 0;
  margin:0 auto;
  font-family:var(--sans);
  font-size:clamp(.62rem,1.1vw,.76rem);
  letter-spacing:.2em;
  text-transform:uppercase;
  color:#2f4f6d;
  max-width:min(430px,86%);
  width:100%;
}
.hero__wedge{
  position:absolute;left:0;right:0;bottom:0;
  height:26%;
  background:#fff;
  clip-path:polygon(0 0,100% 100%,0 100%);
  z-index:1;
}
.hero__features{
  position:relative;z-index:2;
  list-style:none;
  margin:0 auto;
  padding:1.15rem 1rem 1.55rem;
  max-width:var(--maxw);
  display:flex;
  justify-content:center;
  gap:clamp(1.2rem,5.5vw,4.4rem);
  flex-wrap:wrap;
}
.hero__features li{
  display:flex;align-items:center;gap:.6rem;
  font-family:var(--sans);
  font-size:clamp(.72rem,1.25vw,.86rem);
  color:#20415f;
  line-height:1.35;
}
.hero__features .ico{width:30px;height:30px}

/* ---------------- SECTIONS ---------------- */
.section{max-width:var(--maxw);margin:0 auto;padding:2.35rem 1rem 0}
.section__title{
  font-family:var(--display);
  font-weight:700;
  color:var(--navy);
  font-size:clamp(1.65rem,3.6vw,2.35rem);
  text-align:center;
  margin:0 0 .5rem;
  display:flex;align-items:center;justify-content:center;gap:1.1rem;
}
.section__title .rule{
  height:1px;background:#12457c;width:clamp(48px,11vw,118px);display:inline-block;opacity:.85;
}
.section__eyebrow{
  text-align:center;
  font-family:var(--sans);
  font-size:clamp(.66rem,1.15vw,.78rem);
  letter-spacing:.2em;
  text-transform:uppercase;
  color:#3c5670;
  margin:0 0 2.0rem;
}

/* ---------------- PROVIDERS ---------------- */
.providers__grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:2.9rem;
  padding-bottom:1.9rem;
}
.provider{display:flex;gap:1.5rem;align-items:flex-start}
.provider__photo{
  width:44%;
  max-width:218px;
  aspect-ratio:218/305;
  object-fit:cover;
  border-radius:3px;
  box-shadow:0 2px 12px rgba(16,50,86,.14);
}
.provider__body{flex:1;min-width:0}
.provider__name{
  font-family:var(--display);
  font-weight:700;
  color:var(--navy);
  font-size:clamp(1.15rem,2.2vw,1.55rem);
  line-height:1.16;
  margin:.25rem 0 .5rem;
}
.provider__role{
  font-family:var(--sans);
  font-size:clamp(.6rem,1.05vw,.72rem);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:#3c5670;
  margin:0 0 1rem;
}
.provider__divider{display:block;width:44px;height:1px;background:#9fb6cb;margin:0 0 1rem}
.provider__bio{
  margin:0;
  font-size:clamp(.88rem,1.35vw,.98rem);
  line-height:1.52;
  color:#31424f;
}

/* ---------------- SERVICES ---------------- */
.services{max-width:var(--maxw);margin:0 auto;padding:0 1rem}
.services__list{
  list-style:none;margin:0;padding:1.5rem .4rem;
  background:var(--band);
  border-radius:6px;
  display:grid;
  grid-template-columns:repeat(4,1fr);
}
.services__list li{
  display:flex;flex-direction:column;align-items:center;text-align:center;
  padding:0 .7rem;
  gap:.55rem;
  border-right:1px solid #cfe0ec;
  justify-content:flex-start;
}
.services__list li:last-child{border-right:0}
.services__label{
  max-width:11em;
  font-family:var(--sans);
  font-weight:700;
  color:#153e69;
  font-size:clamp(.68rem,1.2vw,.85rem);
  line-height:1.25;
}
.services__sub{
  font-family:var(--sans);
  color:#37536e;
  font-size:clamp(.64rem,1.1vw,.79rem);
  line-height:1.3;
}

/* ---------------- LOCATIONS ---------------- */
.locations__grid{
  display:grid;grid-template-columns:1fr 1fr;gap:1.7rem;padding-bottom:2.4rem;
}
.loc{
  border:1px solid var(--card-border);
  border-radius:6px;
  background:#fff;
  box-shadow:0 2px 10px rgba(16,50,86,.05);
  padding:1.1rem;
  display:grid;
  grid-template-columns:auto 1fr;
  grid-template-areas:"photo body" "btn body";
  column-gap:1.15rem;
  align-content:start;
}
.loc__photo{
  grid-area:photo;
  width:218px;max-width:100%;
  aspect-ratio:218/294;
  object-fit:cover;
  border-radius:4px;
}
.loc__body{grid-area:body;min-width:0}
.loc__name{
  font-family:var(--display);
  font-weight:700;color:var(--navy);
  font-size:clamp(1.1rem,2.1vw,1.42rem);
  margin:.15rem 0 .65rem;
}
.loc__line,.loc__contact{
  display:flex;align-items:flex-start;gap:.5rem;
  margin:0 0 .55rem;
  font-size:clamp(.82rem,1.3vw,.95rem);
  color:#2f4050;
  line-height:1.38;
}
.loc__contact{align-items:center;margin-bottom:.4rem}
.loc__contact a{
  color:var(--navy);font-weight:600;text-decoration:none;
  font-size:clamp(.9rem,1.45vw,1.06rem);
}
.loc__contact a:hover{text-decoration:underline}
.loc__contact--muted span{color:#5b6b79}
.loc__hr{border:0;border-top:1px solid #dbe6ef;margin:.85rem 0 .7rem}
.loc__hoursTitle{
  display:flex;align-items:center;gap:.45rem;
  margin:0 0 .5rem;font-weight:600;color:var(--navy);
  font-family:var(--sans);font-size:clamp(.78rem,1.25vw,.9rem);
}
.hours{
  width:100%;border-collapse:collapse;
  font-size:clamp(.76rem,1.2vw,.87rem);
  color:#36474f;
}
.hours th{
  text-align:left;font-weight:400;padding:.1rem 1rem .1rem 0;white-space:nowrap;
}
.hours td{padding:.1rem 0;white-space:nowrap}
.btn{
  grid-area:btn;
  margin-top:1rem;
  align-self:end;
  display:inline-flex;align-items:center;justify-content:center;gap:.45rem;
  background:var(--navy-deep);
  color:#fff;text-decoration:none;
  font-family:var(--sans);font-weight:700;
  font-size:clamp(.78rem,1.2vw,.88rem);
  padding:.72rem 1rem;border-radius:4px;
  transition:background .18s ease, transform .18s ease;
  width:218px;max-width:100%;
}
.btn .ico{fill:#fff}
.btn:hover{background:#0a4b87;transform:translateY(-1px)}

/* ---------------- FOOTER ---------------- */
.footer{background:var(--footer);margin-top:1.2rem}
.footer__inner{
  max-width:var(--maxw);margin:0 auto;
  padding:1.9rem 1rem 2.1rem;
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:1rem;
}
.footer__leaf{justify-self:center}
.footer__leaf svg{width:64px;height:64px}
.footer__center{text-align:center}
.footer__slogan{
  font-family:var(--display);font-style:italic;
  color:var(--navy);
  font-size:clamp(1.05rem,2.1vw,1.42rem);
  margin:0 0 .75rem;
}
.footer__rule{height:1px;background:#bcd2e2;margin:0 auto .7rem;max-width:500px}
.footer__links{
  margin:0;font-family:var(--sans);
  font-size:clamp(.62rem,1.1vw,.75rem);
  letter-spacing:.18em;text-transform:uppercase;color:#2f4f6d;
}
.footer__thanks{
  font-family:"Caveat",cursive;
  color:#2b5b86;
  font-size:clamp(1.05rem,2.1vw,1.42rem);
  line-height:1.25;
  margin:0;
  text-align:center;
  justify-self:center;
  transform:rotate(-4deg);
}
.footer__thanks .heart{font-family:var(--serif)}

/* ---------------- REVEAL ANIMATION ---------------- */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}
.reveal.is-visible{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
  .btn{transition:none}
}

/* ---------------- RESPONSIVE ---------------- */
@media (max-width:900px){
  .services__list{grid-template-columns:repeat(2,1fr);row-gap:1.6rem}
  .services__list li:nth-child(2n){border-right:0}
}
@media (max-width:820px){
  .providers__grid{grid-template-columns:1fr;gap:2.1rem}
  .locations__grid{grid-template-columns:1fr}
  .hero__photo--left{width:34%}
  .hero__photo--right{width:32%}
  .hero__inner{padding-top:1.4rem}
}
@media (max-width:640px){
  .hero__photo{opacity:.55}
  .hero__features{gap:1.1rem;flex-direction:column;align-items:flex-start;padding-left:1.4rem}
  .section__title .rule{width:34px}
  .services__list{grid-template-columns:repeat(2,1fr);row-gap:1.8rem}
  .services__list li{border-right:0}
  .provider{flex-direction:column;align-items:center;text-align:center}
  .provider__photo{width:70%;max-width:260px}
  .provider__divider{margin-left:auto;margin-right:auto}
  .loc{grid-template-columns:1fr;grid-template-areas:"photo" "body" "btn";row-gap:1rem}
  .loc__photo{width:100%;aspect-ratio:16/11}
  .btn{width:100%}
  .footer__inner{grid-template-columns:1fr;gap:1.4rem}
  .hours th{padding-right:.6rem}
}
