@font-face{font-family:"Archivo";src:url("/assets/fonts/archivo-latin.woff2") format("woff2");font-weight:100 900;font-stretch:62% 125%;font-display:swap;}
@font-face{font-family:"Source Sans 3";src:url("/assets/fonts/source-sans-3-latin.woff2") format("woff2");font-weight:200 900;font-display:swap;}

/* Tokens */
:root{
  --navy:#01224B; --ice:#BDD6EE; --sky:#6998CA; --paper:#F5F8FC; --white:#FFFFFF;
  --ink:#0B1628; --slate:#5B6B80; --signal:#E8702A;
  --font-head: Archivo, "Helvetica Neue", Arial, sans-serif;
  --font-body: "Source Sans 3", system-ui, sans-serif;
  --wrap: 1120px; --gutter: 20px;
  --r-btn: 4px; --r-card: 6px; --r-photo: 4px;
}

/* Base */
*,*::before,*::after{box-sizing:border-box;}
body{margin:0;}
img{max-width:100%; height:auto;}

body{
  font-family:var(--font-body);
  font-size:17px;
  line-height:1.6;
  color:var(--ink);
  background:var(--paper);
  padding-bottom:0;
}
h1,h2,h3{
  font-family:var(--font-head);
  color:var(--navy);
  font-weight:700;
}
h1{
  font-weight:800;
  font-stretch:118%;
  text-transform:uppercase;
  letter-spacing:.03em;
  font-size:clamp(2rem, 6vw, 3.4rem);
  line-height:1.05;
}
h2{
  font-size:clamp(1.5rem, 4vw, 2.1rem);
  line-height:1.15;
}
h3{ font-size:1.2rem; }
p, li{ max-width:68ch; }
a{ color:var(--sky); text-decoration:underline; }
.eyebrow{
  font-family:var(--font-body);
  font-weight:600;
  font-size:.85rem;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--sky);
  margin-bottom:.5rem;
}
.wrap{ max-width:var(--wrap); margin:0 auto; padding:0 var(--gutter); }
.skip{
  position:absolute;
  left:-9999px;
  top:0;
  background:var(--white);
  color:var(--navy);
  padding:.75rem 1rem;
  z-index:100;
}
.skip:focus{ left:0; }
.visually-hidden{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}
:focus-visible{ outline:2px solid var(--sky); outline-offset:2px; }

/* Header */
.site-header{ background:var(--white); border-bottom:1px solid var(--ice); }
.site-header__inner{
  display:flex;
  align-items:center;
  gap:1rem;
  height:64px;
}
.logo{ display:block; }
.logo img{ height:44px; width:auto; display:block; }
.nav{ display:none; }
.nav > ul{ display:flex; gap:1.5rem; list-style:none; margin:0; padding:0; }
.nav a{
  color:var(--navy);
  font-family:var(--font-body);
  font-weight:600;
  text-decoration:none;
}
.nav a:hover{ text-decoration:underline; }
.has-menu{ position:relative; }
.menu{
  position:absolute;
  top:100%;
  left:0;
  display:none;
  background:var(--white);
  border:1px solid var(--ice);
  border-radius:6px;
  padding:.5rem 0;
  min-width:300px;
  list-style:none;
  margin:0;
}
.has-menu:hover .menu,
.has-menu:focus-within .menu{ display:block; }
.menu a{ display:block; padding:.5rem 1rem; }
.site-header .site-header__call{ padding:.5rem .75rem; font-size:.95rem; }
.nav-toggle{
  display:inline-block;
  margin-left:auto;
  background:var(--white);
  color:var(--navy);
  border:1px solid var(--navy);
  border-radius:4px;
  padding:.4rem .8rem;
  font-family:var(--font-body);
  font-weight:600;
  cursor:pointer;
}

/* Mobile nav */
.mobile-nav{
  position:fixed;
  inset:0;
  z-index:50;
  background:var(--white);
  padding:1rem var(--gutter) 5rem;
  overflow-y:auto;
}
.mobile-nav[hidden]{ display:none; }
.mobile-nav > a:not(.btn),
.mobile-nav summary{
  display:block;
  color:var(--navy);
  font-family:var(--font-head);
  font-weight:700;
  font-size:1.25rem;
  padding:.85rem 0;
  border-bottom:1px solid var(--ice);
  text-decoration:none;
  cursor:pointer;
}
.mobile-nav summary{ display:list-item; list-style:disclosure-closed inside; }
.mobile-nav details[open] summary{ list-style-type:disclosure-open; }
.mobile-nav details ul{ list-style:none; padding-left:1rem; margin:0; }
.mobile-nav details li a{
  color:var(--navy);
  text-decoration:none;
  display:block;
  font-family:var(--font-body);
  font-weight:600;
  font-size:1.05rem;
  padding:.6rem 0;
  border-bottom:0;
}
.mobile-nav__top{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin-bottom:1rem;
}
.mobile-nav__label{ font-family:var(--font-head); font-weight:700; color:var(--navy); }
.nav-close{
  display:inline-block;
  background:var(--white);
  color:var(--navy);
  border:1px solid var(--navy);
  border-radius:4px;
  padding:.4rem .8rem;
  font-family:var(--font-body);
  font-weight:600;
  cursor:pointer;
}
.mobile-nav .btn-block{ margin:0 0 1rem; }
body.nav-open{ overflow:hidden; }

/* Buttons */
.btn{
  display:inline-block;
  font-family:var(--font-body);
  font-weight:600;
  font-size:1.05rem;
  padding:.8rem 1.25rem;
  border-radius:var(--r-btn);
  text-decoration:none;
  line-height:1.2;
  border:1px solid transparent;
}
.btn-call{ background:var(--signal); color:var(--white); border-color:var(--signal); }
.btn-secondary{ background:transparent; color:var(--navy); border-color:var(--sky); }
.btn-block{ display:block; width:100%; text-align:center; }
.btn-lg{ font-size:1.25rem; padding:1rem 1.5rem; }

/* Hero */
.hero{
  background:var(--navy);
  color:var(--white);
  padding:2.5rem 0 3rem;
  text-align:left;
}
.hero .eyebrow{ color:var(--ice); }
.hero h1{ color:var(--white); margin:0 0 1rem; }
.hero h1 a{ color:var(--white); text-decoration:none; }
.hero p{ color:var(--white); font-size:1.1rem; max-width:60ch; }
.hero__call{ margin:1.25rem 0 1rem; }
.hero__area{ color:var(--ice); font-size:1rem; margin:0; }

/* Sections */
.section{ padding:3rem 0; }
.section--ice{ background:var(--ice); }
.section--navy{ background:var(--navy); color:var(--white); }
.section--navy h2{ color:var(--white); }
.section--navy .eyebrow{ color:var(--ice); }
.section--white{ background:var(--white); }
.section h2{ margin:0 0 1rem; }
.lead{ font-size:1.15rem; }

/* Components */
.service-row{ display:grid; gap:1.25rem; margin-bottom:2.5rem; }
.service-row:last-child{ margin-bottom:0; }
.service-row h3{ margin:0 0 .5rem; }
.service-row p{ margin:0 0 .75rem; }
.service-row a.more{
  font-family:var(--font-body);
  font-weight:600;
  color:var(--sky);
  text-decoration:underline;
}

.photo-ph{
  background:var(--ice);
  border:1px solid var(--sky);
  border-radius:var(--r-photo);
  aspect-ratio:4/3;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:1rem;
  text-align:center;
  color:var(--navy);
  font-family:var(--font-body);
  font-weight:600;
  font-size:.95rem;
  letter-spacing:.02em;
}
.section--ice .photo-ph{ background:var(--white); }

.two-col{ display:grid; gap:1.5rem; }

.nap{ font-style:normal; line-height:1.6; }
.nap strong{ font-family:var(--font-head); font-weight:700; color:var(--navy); }
.nap a{ color:var(--signal); font-weight:600; }
.nap-card{
  background:var(--white);
  border:1px solid var(--ice);
  border-radius:var(--r-card);
  padding:1.25rem 1.5rem;
}

.map{
  width:100%;
  aspect-ratio:4/3;
  border:1px solid var(--ice);
  border-radius:var(--r-photo);
  display:block;
}
.map iframe{ width:100%; height:100%; border:0; }

.plain-list{ list-style:disc; padding-left:1.25rem; }
.plain-list li{ margin-bottom:.5rem; }

.service-list{ list-style:none; padding:0; }
.service-list li{ padding:1rem 0; border-top:1px solid var(--sky); }
.service-list li:last-child{ border-bottom:1px solid var(--sky); }
.service-list li a{
  font-family:var(--font-head);
  font-weight:700;
  font-size:1.15rem;
  color:var(--navy);
  text-decoration:none;
  display:block;
  margin-bottom:.25rem;
}
.service-list li a:hover{ text-decoration:underline; }
.service-list li h3{ margin:0 0 .25rem; font-size:1.15rem; }
.service-list li p{ margin:0; color:var(--ink); }

.call-block h2{ margin-bottom:1rem; }
.call-block p.small{ color:var(--ice); margin-top:1rem; font-size:1rem; }

.fill{
  background:var(--ice);
  color:var(--navy);
  padding:0 .3em;
  font-family:var(--font-body);
  font-weight:600;
  border-radius:4px;
}

.offices{ display:grid; gap:1.25rem; }
.office{
  background:var(--white);
  border:1px solid var(--ice);
  border-radius:var(--r-card);
  padding:1.25rem 1.5rem;
}
.office h3{ margin:0 0 .75rem; }
.office h3 a{ color:var(--navy); text-decoration:none; }
.office h3 a:hover{ text-decoration:underline; }
.office p{ margin:.75rem 0 0; }
.office p.status{ color:var(--slate); font-weight:600; }
.office .nap{ margin:0; }

.city-list{ list-style:none; padding:0; margin:0; columns:2; column-gap:2rem; }
.city-list li{ break-inside:avoid; padding:.35rem 0; border-bottom:1px solid var(--sky); max-width:none; }

.proof{ background:var(--white); border-bottom:1px solid var(--ice); padding:1rem 0; }
.proof ul{ list-style:none; margin:0; padding:0; display:grid; gap:.4rem; }
.proof li{ max-width:none; font-family:var(--font-body); font-weight:600; color:var(--navy); font-size:.95rem; padding-left:.9rem; border-left:2px solid var(--sky); }

.reviews-ph{ background:var(--white); border:1px solid var(--ice); border-radius:var(--r-card); padding:1.25rem 1.5rem; margin-top:2rem; }
.reviews-ph p{ margin:0; }
.reviews-ph .eyebrow{ margin-bottom:.5rem; }

/* Footer */
.site-footer{ background:var(--navy); color:var(--white); padding:2.5rem 0 5rem; border-top:1px solid var(--sky); }
.site-footer a{ color:var(--ice); }
.site-footer .nap strong{ color:var(--white); }
.site-footer a.fill{ color:var(--navy); }
.site-footer .nap a{ color:var(--signal); }
.site-footer__row{ display:grid; gap:1.5rem; }
.site-footer p{ margin:0 0 .5rem; color:var(--ice); }
.site-footer__links{
  margin-top:2rem;
  padding-top:1.25rem;
  border-top:1px solid var(--sky);
  display:flex;
  flex-wrap:wrap;
  gap:.5rem 1.25rem;
  font-size:.95rem;
}

/* Call bar */
.call-bar{
  position:fixed;
  bottom:0;
  left:0;
  right:0;
  z-index:40;
  background:var(--signal);
  color:var(--white);
  text-align:center;
  font-family:var(--font-head);
  font-weight:700;
  font-size:1.15rem;
  padding:1rem;
  text-decoration:none;
  display:block;
}

/* Desktop */
@media (min-width: 900px){
  body{ font-size:18px; line-height:1.65; }
  .site-header__inner{ height:80px; }
  .logo img{ height:60px; }
  .nav{ display:flex; margin-left:auto; }
  .site-header .site-header__call{ padding:.8rem 1.25rem; font-size:1.05rem; }
  .nav-toggle{ display:none; }

  .hero{ padding:4.5rem 0 5rem; }
  .section{ padding:4.5rem 0; }

  .service-row{ grid-template-columns:1fr 1fr; gap:2.5rem; align-items:center; }
  .service-row:nth-child(even) .photo-ph{ order:2; }

  .two-col{ grid-template-columns:1fr 1fr; gap:3rem; align-items:start; }
  .wrap > .photo-ph{ max-width:560px; }
  .offices{ grid-template-columns:repeat(3, 1fr); gap:2rem; align-items:start; }
  .city-list{ columns:4; }
  .proof ul{ grid-template-columns:repeat(4, 1fr); gap:1.5rem; }
  .proof li{ font-size:1rem; }

  .site-footer{ padding:2.5rem 0; }
  .site-footer__row{ grid-template-columns:1fr 1fr; gap:3rem; }

  .call-bar{ display:none; }
}
