@font-face{font-family:"Source Serif";font-weight:600;src:url(fonts/source-serif-600.woff2) format("woff2");font-display:swap}
@font-face{font-family:"Hanken Grotesk";font-weight:400 800;src:url(fonts/hanken-grotesk.woff2) format("woff2");font-display:swap}

:root{
  --navy:#0c2445;--b:#0b4f8a;--b2:#0a3d6b;--lt:#e9f2fa;--gold:#f2b632;--gold-dk:#dda01c;
  --foot:#0a2440;--sky:#2a7cc7;--text:#0f172a;--body:#1c2533;--line:#8fb0d1;--rule:#0a3d6b;--max:1200px;
  --serif:"Hanken Grotesk","Helvetica Neue",Helvetica,Arial,sans-serif;
  --head:"Hanken Grotesk","Helvetica Neue",Helvetica,Arial,sans-serif
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:90px}
body{margin:0;font-family:var(--serif);font-size:17px;line-height:1.65;color:var(--body);background:#fff;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--b)}
.wrap{max-width:var(--max);margin:0 auto;padding:0 28px}
h1,h2,h3,h4{margin:0;color:var(--text);font-family:var(--head);text-wrap:balance}
p{margin:0 0 14px;text-wrap:pretty}
h2{font-size:clamp(30px,3.6vw,42px);line-height:1.08;color:var(--b2);font-weight:700;letter-spacing:-.025em}
h3{font-size:20px;line-height:1.25;font-weight:700;letter-spacing:-.01em}
.lede{font-size:17px;max-width:700px;margin:14px 0 36px;color:var(--body)}
section{padding:88px 0}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:700 15px/1 var(--serif);text-decoration:none;padding:16px 26px;border-radius:8px;border:2px solid transparent;cursor:pointer;transition:transform .15s,background .15s,box-shadow .15s}
.btn:hover{transform:translateY(-1px)}
.btn-gold{background:var(--gold);color:#111}
.btn-gold:hover{background:var(--gold-dk);box-shadow:0 6px 18px rgba(0,0,0,.15)}
.btn-line{border-color:#fff;color:#fff}
.btn-line:hover{background:rgba(255,255,255,.12)}
.btn-blue{background:var(--b);color:#fff}
.btn-blue:hover{background:var(--b2)}
a:focus-visible,.btn:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--gold);outline-offset:3px}

/* top bar + header */
.masthead{position:fixed;top:0;left:0;right:0;z-index:30}
.topbar{background:var(--sky);color:#fff;font-size:14.5px;max-height:80px;overflow:hidden;transition:max-height .3s ease}
.masthead.scrolled .topbar{max-height:0}
.topbar .wrap{display:flex;justify-content:center;align-items:center;gap:8px 32px;flex-wrap:wrap;padding-top:8px;padding-bottom:8px}
.topbar .it{display:inline-flex;align-items:center;gap:9px;color:#fff;text-decoration:none;font-weight:600}
.topbar .ico{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:1.5px solid rgba(255,255,255,.9);border-radius:50%;flex:none}
.topbar a.it:hover{text-decoration:underline}
.topbar svg{flex:none}
header.site{position:relative;background:#fff;border-bottom:1px solid var(--line);transition:box-shadow .3s}
.masthead.scrolled header.site{box-shadow:0 6px 18px rgba(12,36,69,.10)}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;height:104px;gap:20px;transition:height .3s ease}
.masthead.scrolled header.site .wrap{height:70px}
.logo img{height:88px;width:auto;transition:height .3s ease}
.masthead.scrolled .logo img{height:54px}
.nav{display:flex;align-items:center;gap:14px}
.nav .btn{margin-left:14px}
.nav a{font-family:var(--serif);font-weight:400;font-size:15px;color:var(--text);text-decoration:none}
.nav a:hover,.nav a[aria-current="page"]{color:var(--b)}
.nav a[aria-current="page"]{font-weight:700}
.nav .btn{color:#111;padding:13px 20px;font-size:14px;font-weight:700}
.menu{display:none;background:none;border:0;padding:8px;cursor:pointer}
.menu span{display:block;width:26px;height:3px;background:var(--navy);margin:5px 0;border-radius:2px}

/* hero */
.hero{position:relative;color:#fff;background:var(--b2) url(img/hero-beach.jpg) 70% 55%/cover no-repeat}
.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(9,52,92,.86) 0%,rgba(9,52,92,.78) 45%,rgba(11,79,138,.62) 100%)}
.hero .wrap{position:relative;padding-top:124px;padding-bottom:118px;text-align:center;display:flex;flex-direction:column;align-items:center}
.hero h1{font-size:clamp(40px,5.8vw,66px);line-height:1.02;color:#fff;font-weight:700;max-width:760px;letter-spacing:-.03em}
.hero p{font:600 clamp(20px,2.2vw,26px)/1.35 var(--head);max-width:610px;margin:18px 0 34px;color:#eef4fb;letter-spacing:-.01em}
.hero .ctas{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.hero h1,.hero p{margin-left:auto;margin-right:auto}

/* trust strip */
.trust{background:#fff}
.trust .wrap{display:flex;flex-wrap:wrap;gap:12px 26px;justify-content:center;padding-top:20px;padding-bottom:20px}
.trust span{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:700;color:var(--b2)}
.trust svg{flex:none}

/* coverage tiles */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.tile{border:2px solid var(--b2);border-radius:14px;background:#fff;overflow:hidden;display:flex;flex-direction:column;transition:transform .18s ease-out,box-shadow .18s ease-out,border-color .18s ease-out}
.tile:hover{transform:scale(1.035);box-shadow:0 12px 24px rgba(10,61,107,.18);border-color:var(--b);position:relative;z-index:2}
.tile .pic{height:170px;overflow:hidden}
.tile .pic img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease-out}
.tile:hover .pic img{transform:scale(1.1)}
.tile .in{padding:22px 22px 24px;display:flex;flex-direction:column;flex:1}
.ic{width:46px;height:46px;border-radius:10px;background:var(--lt);display:flex;align-items:center;justify-content:center;margin-bottom:14px;color:var(--b);transition:transform .28s}
.tile:hover .ic{transform:scale(1.1)}
.tile h3{margin:0 0 8px}
.tile p{font-size:15px;margin:0 0 14px;flex:1}
.tile a.more{font-size:14px;font-weight:700;text-decoration:none;color:var(--b)}
.tile a.more:hover{text-decoration:underline}
.more-lines{margin-top:22px}
h2 + .grid{margin-top:34px}

/* why */
.why{background:var(--lt)}
.why .tile{border:0}
.quote-line{font-size:20px;font-weight:500;color:var(--b2);margin:14px 0 36px}

/* steps */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;counter-reset:s}
.step{padding:24px;border-top:4px solid var(--b);background:#fff}
.step::before{counter-increment:s;content:counter(s);display:inline-flex;width:38px;height:38px;border-radius:50%;background:var(--b);color:#fff;font:700 17px var(--head);align-items:center;justify-content:center;margin-bottom:12px}
.step h3{margin:0 0 6px}
.step p{margin:0;font-size:15px}

/* about */
.about{border-top:1px solid var(--line)}
.about .cols{display:grid;grid-template-columns:1fr 1.15fr;gap:52px;align-items:center}
.about .photo{border-radius:16px;overflow:hidden;aspect-ratio:4/3;background:#111 url(img/aj-ryan-headshot.jpg) center/cover}
.one-line{white-space:nowrap;font-size:clamp(22px,2.5vw,36px)}
.phead h1.one-line{font-size:clamp(26px,4.4vw,56px)}
.stats{display:grid;grid-template-columns:1fr 1fr;margin:24px 0 24px;border:3px solid var(--rule);border-radius:12px;overflow:hidden}
.stat{padding:20px 16px;text-align:center}
.stat+.stat{border-left:3px solid var(--rule)}
.stat b{display:inline-block;font:700 46px/1 var(--head);color:var(--b2);letter-spacing:-.03em;font-variant-numeric:tabular-nums;transform-origin:center center}
.stat span{display:block;margin:8px auto 0;font-size:14px;font-weight:700;line-height:1.4;max-width:240px;color:var(--text)}
.num.pop{animation:pop .5s cubic-bezier(.2,1.6,.4,1)}
@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.28);color:var(--b)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.num.pop{animation:none}}
.story{padding-top:64px}
.chapter{display:grid;grid-template-columns:220px 1fr;gap:40px;padding:36px 0;border-top:1px solid var(--line)}
.chapter:first-child{border-top:0}
.chapter .yr{font:700 30px/1.1 var(--head);color:var(--b);letter-spacing:-.02em}
.chapter h2{margin-bottom:12px}
.chapter p{max-width:760px;font-size:17px}

/* band */
.band{background:var(--b);color:#fff;text-align:center;padding:68px 0}
.band h2{color:#fff}
.band p{margin:12px 0 26px;color:#eef4fb;font-size:17px}

/* quote form */
.quote{background:#f6f8fb}
.quote .cols{display:grid;grid-template-columns:.85fr 1.15fr;gap:48px;align-items:start}
.quote .sub{font:600 22px/1.35 var(--head);color:var(--text);margin:12px 0 28px;letter-spacing:-.01em}
.contact-card{background:var(--b2);color:#fff;border-radius:16px;padding:30px}
.contact-card h3{color:#fff;margin-bottom:16px;font-size:22px}
.contact-card .row{display:flex;gap:14px;align-items:flex-start;padding:13px 0;border-top:1px solid rgba(255,255,255,.22)}
.contact-card .row:first-of-type{border-top:0}
.contact-card .row svg{flex:none;margin-top:2px;color:var(--gold)}
.contact-card a{color:#fff;font-weight:700;text-decoration:none}
.contact-card a:hover{text-decoration:underline}
.contact-card small{display:block;color:#d6e6f6;font-size:13px}
form.qf{background:#fff;border:1px solid var(--line);border-radius:16px;padding:30px}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.full{grid-column:1/-1}
label{display:block;font-size:14px;font-weight:700;color:var(--text);margin-bottom:6px}
input,select,textarea{width:100%;font:15px var(--serif);color:var(--text);padding:12px 14px;border:1.5px solid #5b7fa6;border-radius:8px;background:#fff}
textarea{min-height:110px;resize:vertical}
fieldset{border:0;padding:0;margin:0}
.cond{display:none;grid-column:1/-1;border-top:1px solid var(--line);padding-top:18px}
.cond.on{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.cond legend{font:700 18px var(--head);color:var(--b2);margin-bottom:12px;grid-column:1/-1;padding:0}
.req{color:#b42318}
.form-note{font-size:13px;margin:14px 0 0}
.hp{position:absolute;left:-9999px}

/* footer */
footer.site{background:var(--foot);color:#eef3f9;font-size:15px}
footer.site .cols{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:28px;padding-top:58px;padding-bottom:42px}
footer.site h4{color:#fff;font-size:18px;font-weight:700;margin-bottom:12px}
footer.site a{color:#eef3f9;text-decoration:none}
footer.site a:hover{color:#fff;text-decoration:underline}
footer.site ul{list-style:none;margin:0;padding:0}
footer.site li{margin:0 0 7px}
footer.site .flogo{height:76px;width:auto;margin-bottom:18px}
footer.site .ci{display:flex;gap:10px;align-items:flex-start;margin:0 0 9px}
footer.site .ci svg{flex:none;margin-top:4px;color:var(--gold)}
.legal{border-top:1px solid rgba(255,255,255,.2);font-size:13px;color:#d4dfec}
.legal .wrap{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-top:20px;padding-bottom:26px}
.legal p{margin:0}

/* services page */
.phead{position:relative;color:#fff;background:var(--b2) url(img/services-hero.jpg) center 60%/cover no-repeat}
.phead::before{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgba(9,52,92,.96),rgba(11,79,138,.82) 60%,rgba(11,79,138,.55))}
.phead .wrap{position:relative;padding-top:80px;padding-bottom:70px}
.phead h1{color:#fff;font-size:clamp(36px,5vw,56px);line-height:1.04;letter-spacing:-.03em;max-width:820px}
.phead p{color:#eef4fb;font-size:17px;max-width:680px;margin:18px 0 24px}
.jump{display:flex;gap:10px;flex-wrap:wrap}
.jump a{background:#fff;color:var(--b2);border-radius:999px;padding:9px 18px;font-size:14px;font-weight:700;text-decoration:none}
.jump a:hover{background:var(--gold);color:#111}
.svc-body{display:grid;grid-template-columns:230px 1fr;gap:48px;padding-top:60px;padding-bottom:76px}
.side{position:sticky;top:100px;align-self:start}
.side a{display:block;border-left:3px solid var(--line);padding:6px 0 6px 14px;font-size:15px;color:var(--text);text-decoration:none;margin-bottom:4px}
.side a:hover,.side a.on{border-left-color:var(--b);color:var(--b);font-weight:700}
.side .btn{display:flex;margin-top:20px;color:#111;border-left:0;padding:14px 16px;font-size:14px;font-weight:700;justify-content:center}
.side .btn:hover{color:#111}
.group{scroll-margin-top:120px}
.group+.group{margin-top:56px}
.group .ghead{display:flex;align-items:center;gap:18px;margin-bottom:10px}
.group .gpic{width:88px;height:88px;border-radius:12px;background-size:cover;background-position:center;flex:none}
.group .gintro{font-size:16px;margin:6px 0 8px}
.item{display:grid;grid-template-columns:1.3fr 1fr auto;gap:24px;padding:22px 0;border-top:1px solid var(--line);align-items:start}
.item h3{margin:0 0 4px}
.item p{margin:0;font-size:15px}
.item .who{font-size:15px}
.item .who b{display:block;font-size:14px;font-weight:700;color:var(--b);margin-bottom:2px}
.item .btn{padding:12px 16px;font-size:14px;white-space:nowrap}
.fine{margin-top:44px;background:var(--lt);padding:20px 22px;border-radius:12px;font-size:15px}

/* thank you */
.thanks{min-height:60vh;display:flex;align-items:center}
.thanks .wrap{padding-top:90px;padding-bottom:90px;max-width:760px}

/* responsive */
@media (max-width:1000px){
  .grid{grid-template-columns:repeat(2,1fr)}
  footer.site .cols{grid-template-columns:1fr 1fr}
  .quote .cols,.about .cols{grid-template-columns:1fr}
}
@media (max-width:820px){
  .menu{display:block}
  .nav{display:none;position:absolute;top:100%;left:0;right:0;background:#fff;flex-direction:column;align-items:stretch;gap:0;border-bottom:1px solid var(--line);padding:8px 20px 20px;box-shadow:0 12px 24px rgba(0,0,0,.08)}
  .nav.open{display:flex}
  .nav a{padding:14px 4px;border-bottom:1px solid var(--line);font-size:17px}
  .nav .btn{margin-top:14px;border-bottom:0;padding:16px;font-size:16px}
  .svc-body{grid-template-columns:1fr;gap:0}
  .side{display:none}
  .item{grid-template-columns:1fr;gap:10px}
  .item .btn{justify-self:start}
}
@media (max-width:640px){
  body{font-size:15.5px}
  .wrap{padding:0 20px}
  section{padding:62px 0}
  .topbar{font-size:13px}
  .topbar .wrap{gap:6px 18px;padding-top:8px;padding-bottom:8px}
  .topbar .ico{width:22px;height:22px}
  header.site .wrap{height:84px}
  .logo img{height:66px}
  .masthead.scrolled header.site .wrap{height:64px}
  .masthead.scrolled .logo img{height:46px}
  .topbar{max-height:90px}
  .hero{background-position:62% 50%}
  .hero::before{background:linear-gradient(180deg,rgba(9,52,92,.95) 0%,rgba(11,79,138,.86) 70%,rgba(11,79,138,.7) 100%)}
  .hero .wrap{padding-top:66px;padding-bottom:62px}
  .hero p{font-size:16.5px}
  .hero .ctas .btn{flex:1 1 100%}
  .trust .wrap{justify-content:flex-start;flex-direction:column;gap:10px}
  .grid,.steps,.fields,.cond.on,footer.site .cols{grid-template-columns:1fr}
  .chapter{grid-template-columns:1fr;gap:8px;padding:28px 0}
  .stat b{font-size:38px}
  .stat{padding:16px 10px}
  .tile:hover{transform:scale(1.02)}
  .tile .pic{height:180px}
  form.qf,.contact-card{padding:22px}
  .phead .wrap{padding-top:54px;padding-bottom:50px}
  .legal .wrap{flex-direction:column}
}

/* contact page */
.contact-page{padding-top:72px}
.contact-page h1{font-size:clamp(36px,5vw,56px);line-height:1.04;letter-spacing:-.03em;color:var(--b2)}

/* arrows on buttons */
.btn .arr{flex:none;transition:transform .2s ease,width .2s ease,opacity .2s ease,margin .2s ease}
.btn-hero{font-size:17px;padding:18px 30px;gap:10px}
.hero .btn-hero{font-size:20px;padding:22px 38px;border-radius:10px}
.hero .btn-hero .arr{width:22px;height:22px}
.btn-hero:hover .arr{transform:scale(1.4) translateX(2px)}
.btn-head .arr{width:0;opacity:0;margin-left:-8px}
.btn-head:hover{background:var(--sky);color:#fff}
.nav .btn-head:hover{color:#fff}
.btn-head:hover .arr{width:18px;opacity:1;margin-left:0}

/* whole tile clickable */
a.tile{color:inherit;text-decoration:none;cursor:pointer}
a.tile:focus-visible{outline:3px solid var(--gold);outline-offset:3px}

/* hand drawn green checks */
.hcheck{flex:none}
.hcheck path{stroke:#15803d;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round;fill:none}
.hcheck .k{stroke-width:2.8;stroke-dasharray:24;stroke-dashoffset:24}
.hcheck .c{stroke-dasharray:90;stroke-dashoffset:90}
.trust.in .hcheck .k{animation:draw .35s ease-out forwards}
.trust.in .hcheck .c{animation:draw .7s ease-out forwards}
.trust.in span:nth-child(1) .k{animation-delay:.05s}.trust.in span:nth-child(1) .c{animation-delay:.35s}
.trust.in span:nth-child(2) .k{animation-delay:.3s}.trust.in span:nth-child(2) .c{animation-delay:.6s}
.trust.in span:nth-child(3) .k{animation-delay:.55s}.trust.in span:nth-child(3) .c{animation-delay:.85s}
.trust.in span:nth-child(4) .k{animation-delay:.8s}.trust.in span:nth-child(4) .c{animation-delay:1.1s}
@keyframes draw{to{stroke-dashoffset:0}}
@media (prefers-reduced-motion:reduce){.hcheck .k,.hcheck .c{stroke-dashoffset:0;animation:none}}
.trust span{gap:10px}

/* header hover growth */
.logo{display:inline-block;transition:transform .14s ease-out}
.logo:hover{transform:scale(1.06)}
.nav a:not(.btn){font-size:17px;font-weight:700;display:inline-block;position:relative;padding:8px 12px;transition:transform .14s ease-out,color .14s ease-out}
.nav a:not(.btn):hover{transform:scale(1.1)}
.nav .btn-head{font-size:16px;padding:14px 22px;transition:transform .14s ease-out,background .14s ease-out,color .14s ease-out}
.nav .btn-head:hover{transform:scale(1.06)}
@media (max-width:820px){.nav a:not(.btn):hover{transform:none}}

input::placeholder,textarea::placeholder{color:#4a6584}

/* service timeline */
.tl-lede{font-size:18px;max-width:760px;margin:14px 0 40px;color:var(--text)}
.timeline{position:relative;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(4,auto);gap:46px 60px}
.tl-lines{position:absolute;left:0;top:0;z-index:0;overflow:visible;pointer-events:none}
.tl-lines path{fill:none;stroke:#0b4f8a;stroke-width:11;stroke-linecap:round;stroke-linejoin:round;transition:stroke-dashoffset .5s linear}
.tl-node{position:relative;z-index:1;background:#fff;border:0;border-radius:0;padding:44px 30px 32px;text-align:center;box-shadow:12px 12px 0 #2a7cc7;opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}
.tl-node.on{opacity:1;transform:none}
.tl-node h3{font:600 27px/1.2 "Source Serif",Georgia,serif;color:#0c2445;margin:0 0 14px;letter-spacing:0}
.tl-node p{margin:0;font-size:17px;line-height:1.6;color:#14233a}
.tl-node .ic{background:var(--lt)}
.n1{grid-column:1;grid-row:1}
.n2{grid-column:3;grid-row:2}
.n3{grid-column:1;grid-row:2}
.n4{grid-column:1;grid-row:3}
.n5{grid-column:3;grid-row:3}
.n6{grid-column:2;grid-row:4}
@media (max-width:820px){
  .timeline{grid-template-columns:1fr;grid-template-rows:none;gap:34px}
  .n1,.n2,.n3,.n4,.n5,.n6{grid-column:1;grid-row:auto}
}
@media (prefers-reduced-motion:reduce){.tl-node{opacity:1;transform:none;transition:none}}

/* drawn box on nav hover */
@media (min-width:821px){
.nav a:not(.btn)::before,.nav a:not(.btn)::after{content:"";position:absolute;width:0;height:0;border:2px solid transparent;box-sizing:border-box;pointer-events:none}
.nav a:not(.btn)::before{top:0;left:0}
.nav a:not(.btn)::after{bottom:0;right:0}
.nav a:not(.btn):hover::before{width:100%;height:100%;border-top-color:var(--b);border-right-color:var(--b);transition:width .15s ease-out,height .15s ease-out .15s}
.nav a:not(.btn):hover::after{width:100%;height:100%;border-bottom-color:var(--b);border-left-color:var(--b);transition:border-color 0s linear .3s,width .15s ease-out .3s,height .15s ease-out .45s}
}
/* bigger trust strip */
.trust .wrap{padding-top:26px;padding-bottom:26px;gap:14px 30px;max-width:1320px}
.trust span{font-size:16px;gap:10px;white-space:nowrap}
.hcheck{width:38px;height:38px}
.hcheck path{stroke-width:2.2}
.hcheck .k{stroke-width:2.8}
@media (max-width:640px){.trust span{font-size:16px}.hcheck{width:34px;height:34px}}




.tl-sec h2,.tl-lede{text-align:center;margin-left:auto;margin-right:auto}
#coverage h2{text-align:center}
.tile .in{text-align:center;align-items:center}

/* six lines in one box */
.lines-box{display:grid;grid-template-columns:repeat(6,1fr);margin-top:24px;border:2px solid var(--b2);border-radius:14px;overflow:hidden;background:#fff}
.line-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:26px 12px;text-align:center;text-decoration:none;color:var(--text);font-weight:700;font-size:16px;transition:background .2s,color .2s}
.line-cell+.line-cell{border-left:2px solid var(--b2)}
.line-cell .ic{margin:0;transition:transform .25s}
.line-cell:hover{background:var(--lt);color:var(--b)}
.line-cell:hover .ic{transform:scale(1.15)}
@media (max-width:1000px){.lines-box{grid-template-columns:repeat(3,1fr)}.line-cell+.line-cell{border-left:0}.line-cell:nth-child(3n+2),.line-cell:nth-child(3n+3){border-left:2px solid var(--b2)}.line-cell:nth-child(n+4){border-top:2px solid var(--b2)}}
@media (max-width:640px){.lines-box{grid-template-columns:1fr 1fr}.line-cell:nth-child(n){border-left:0;border-top:0}.line-cell:nth-child(even){border-left:2px solid var(--b2)}.line-cell:nth-child(n+3){border-top:2px solid var(--b2)}.line-cell{padding:18px 10px;font-size:15px}}

/* button hovers */
.btn-hero:hover{background:var(--sky);color:#fff}
.btn-more .arr{width:0;opacity:0;margin-left:-8px}
.btn-more:hover{background:var(--gold);color:#111}
.btn-more:hover .arr{width:18px;opacity:1;margin-left:0}

/* about teaser: centered text, photo spans full height */
.about .cols{align-items:stretch}
.about .photo{aspect-ratio:auto;min-height:360px;height:100%}
#about .cols > div:last-child{text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}
#about .cols > div:last-child p{margin-bottom:22px}
.stat span{max-width:none;font-size:14px}
@media (max-width:1000px){.about .photo{aspect-ratio:4/3;height:auto;min-height:0}}
.band h2{margin-bottom:26px}
@media (max-width:820px){.nav{text-align:center}.nav a:not(.btn){display:block;padding:14px 4px}.nav .btn{justify-content:center}}
.m-only{display:none}
@media (max-width:1000px){
  #about .m-only{display:block;text-align:center;margin-bottom:-28px}
  #about .d-only{display:none}
  #about .cols > div:last-child{align-items:center;text-align:center}
}
@media (max-width:640px){
  .trust .wrap{display:grid;grid-template-columns:1fr 1fr;gap:18px 12px;padding-top:24px;padding-bottom:10px}
  .trust span{white-space:normal;flex-direction:column;text-align:center;justify-content:flex-start;font-size:15px;line-height:1.3;gap:8px}.trust span:last-child:nth-child(odd){grid-column:1/-1;justify-self:center}
  #coverage{padding-top:34px}
  #about .m-only{margin-bottom:-36px;font-size:28px}
  .btn-more{align-self:center}
}
.stat span,.trust span,.tile p,.line-cell .nm{text-wrap:balance}
@media (max-width:1000px){#about .cols{gap:26px}}
.legal{border-top:1px solid #fff}
@media (max-width:640px){
  footer.site .cols{grid-template-columns:1fr 1fr;text-align:center;gap:30px 16px}
  footer.site .cols > div:first-child,footer.site .cols > div:last-child{grid-column:1/-1}
  footer.site .flogo{margin:0 auto 18px}
  footer.site .ci{justify-content:center;text-align:left}
  .legal .wrap{text-align:center;align-items:center}
}

/* century word ticker */
.tick{display:inline-block;position:relative;vertical-align:bottom;white-space:nowrap;text-align:center}
.tick .w{display:inline-block;color:var(--gold)}
.tick .w.in{animation:tickin .45s cubic-bezier(.2,1.2,.4,1)}
@keyframes tickin{from{transform:translateY(60%);opacity:0}to{transform:none;opacity:1}}
.tick::after{content:"";position:absolute;left:2%;right:2%;bottom:-.06em;height:.1em;background:var(--gold);border-radius:6px;transform:scaleX(0);transform-origin:left;transition:transform .55s ease}
.tick.land::after{transform:scaleX(1)}
.tick-meas{position:absolute;visibility:hidden;white-space:nowrap;left:-9999px;top:0;font:inherit}
.group .gintro{margin-bottom:14px}
.group .g-items > .item:first-child{border-top:3px solid var(--b2)}
.item{border-top-width:1.5px}

/* band button white outline on hover */
.band .btn-hero:hover{border-color:#fff;box-shadow:0 0 0 3px #fff}
/* submit button hover */
.btn-submit{font-size:17px;padding:17px 28px}
.btn-submit .arr{width:0;opacity:0;margin-left:-8px}
.btn-submit:hover{background:var(--sky);color:#fff;transform:scale(1.04)}
.btn-submit:hover .arr{width:18px;opacity:1;margin-left:0}
/* current page keeps its box */
@media (min-width:821px){
  .nav a[aria-current="page"]{box-shadow:inset 0 0 0 2px var(--b)}
}
@media (max-width:820px){.nav a[aria-current="page"]{color:var(--b);outline:2px solid var(--b);outline-offset:-2px;border-radius:6px}}
/* about chapter labels */
.chapter .yr img{width:150px;height:auto}
/* footer column headers with white rule */
footer.site .cols > div:not(:first-child){width:max-content;max-width:100%}
footer.site h4{border-bottom:3px solid #fff;padding-bottom:8px;margin-bottom:14px}
@media (max-width:640px){footer.site .cols > div:not(:first-child){justify-self:center}}
.tl-canvas{position:absolute;left:0;top:0;z-index:0;pointer-events:none}

#about h3.founder{font-size:26px;color:var(--navy);margin:26px 0 10px;text-align:center}

.tl-sec{background:#0c2445!important}
.tl-sec h2{color:#fff}.tl-sec .tl-lede{color:#e6eef7}
.tl-num{position:absolute;top:-22px;left:50%;margin-left:-22px;width:44px;height:44px;background:#f2b632;color:#0c2445;font-weight:800;font-size:20px;line-height:44px;text-align:center}

/* headshot as a real image (Safari safe) */
.about .photo{position:relative;background:#111;border-radius:16px;overflow:hidden;aspect-ratio:auto;min-height:360px;height:auto}
.about .photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
@media (max-width:1000px){.about .photo{min-height:0}.about .photo img{position:static;height:auto}}

@media (max-width:640px){.wrap.svc-body{padding-top:44px;padding-bottom:56px}}

.why h2.center{text-align:center}
.chapter{grid-template-columns:250px 1fr}
.chapter .yr{white-space:nowrap}
@media (max-width:820px){.chapter{grid-template-columns:1fr}}
.tl-node{transition:opacity .45s ease,transform .45s ease}

.tl-sec h2{margin-bottom:60px}
.tl-node{display:flex;flex-direction:column;justify-content:center}
@media (max-width:640px){.tl-sec h2{margin-bottom:44px}}

/* about page: centered vertical story with bubbles */
.vtl{display:flex;flex-direction:column;align-items:center;text-align:center;padding-top:20px;padding-bottom:30px}
.vstep{display:flex;flex-direction:column;align-items:center;max-width:720px}
.bub{width:220px;height:220px;border-radius:50%;border:4px solid var(--navy);background:#fff;display:flex;align-items:center;justify-content:center;white-space:nowrap;
  font:700 21px/1.25 var(--head);color:var(--navy);padding:10px;box-sizing:border-box;opacity:0;transform:scale(.6);transition:opacity .45s ease,transform .5s cubic-bezier(.2,1.4,.4,1)}
.bub.logo img{width:130px;height:auto}
.vtext{margin-top:26px;opacity:0;transform:translateY(16px);transition:opacity .5s ease .15s,transform .5s ease .15s}
.vtext h2{margin-bottom:12px}
.vtext p{font-size:17px;margin:0 auto}
.vstep.on .bub{opacity:1;transform:none}
.vstep.on .vtext{opacity:1;transform:none}
.vline{width:4px;height:120px;background:transparent;margin:28px 0;position:relative;overflow:hidden}
.vline span{position:absolute;inset:0;background:var(--navy);transform-origin:top;transform:scaleY(0)}
@media (max-width:640px){.bub{width:176px;height:176px;font-size:17px}.bub.logo img{width:104px}.vline{height:80px;margin:22px 0}}
@media (prefers-reduced-motion:reduce){.bub,.vtext{opacity:1;transform:none;transition:none}.vline span{transform:none}}

/* timeline: two column snake, 1 > 2, down to 3, < 4, down to 5, > 6 */
@media (min-width:821px){
  .timeline{grid-template-columns:repeat(2,minmax(0,360px));grid-template-rows:repeat(3,auto);justify-content:center;column-gap:clamp(90px,14vw,220px);row-gap:64px}
  .n1{grid-column:1;grid-row:1}.n2{grid-column:2;grid-row:1}
  .n3{grid-column:2;grid-row:2}.n4{grid-column:1;grid-row:2}
  .n5{grid-column:1;grid-row:3}.n6{grid-column:2;grid-row:3}
}
.tl-node{padding:40px 26px 26px}
.tl-node h3{font-size:23px;margin-bottom:10px}
.tl-node p{font-size:16px;line-height:1.55}
.tl-sec h2{margin-bottom:76px}
@media (max-width:640px){.tl-sec h2{margin-bottom:52px}}

.tl-node.n2,.tl-node.n4,.tl-node.n6{transition-delay:.25s}

/* pinned timeline on desktop: the section locks in place while the steps play */
.tl-sec.pinned{padding:0}
.tl-sec.pinned .tl-stage{position:sticky;display:flex;flex-direction:column;justify-content:center;overflow:hidden}
.tl-sec.pinned .tl-in{transform-origin:top center}
.tl-sec.pinned h2{margin-bottom:48px}
.tl-sec.pinned .timeline{row-gap:48px}
.tl-sec.pinned .tl-node{transition-delay:0s;transition:opacity .4s ease,transform .4s ease}

/* fixed header: the spacer keeps the page from jumping when the header shrinks */
.mh-spacer{height:147px}
@media (max-width:820px){.mh-spacer{height:150px}}
.logo img{will-change:height}

/* roomier pinned timeline with smaller cards */
.tl-sec.pinned .tl-stage{padding-top:clamp(28px,7vh,72px);padding-bottom:clamp(32px,8vh,80px);box-sizing:border-box}
.tl-sec.pinned h2{margin-bottom:clamp(40px,8vh,84px)}
.tl-sec.pinned .timeline{row-gap:clamp(34px,5.5vh,52px)}
@media (min-width:821px){
  .timeline{grid-template-columns:repeat(2,minmax(0,330px))}
  .tl-node{padding:34px 22px 22px}
  .tl-node h3{font-size:20px;margin-bottom:8px}
  .tl-node p{font-size:15px;line-height:1.5}
  .tl-num{width:38px;height:38px;line-height:38px;font-size:17px;top:-19px;margin-left:-19px}
  .tl-sec:not(.pinned){padding-top:96px;padding-bottom:110px}
  .tl-sec:not(.pinned) h2{margin-bottom:84px}
}
/* stats box in the lighter blue */
.stats{border-color:var(--sky)}
.stat+.stat{border-left-color:var(--sky)}
.stat b{color:var(--sky)}

/* ---------- mobile cleanup ---------- */
.g-toggle{display:none}
.mbr{display:none}
.vline{overflow:visible}
.vline .arw{position:absolute;left:50%;top:calc(var(--f,0) * 100% - 2px);width:0;height:0;margin-left:-11px;border-left:11px solid transparent;border-right:11px solid transparent;border-top:14px solid var(--navy);opacity:calc(var(--f,0) * 20)}
@media (max-width:820px){
  header.site .wrap{display:grid;grid-template-columns:1fr auto 1fr}
  header.site .logo{grid-column:2;justify-self:center}
  header.site .menu{grid-column:3;justify-self:end}
  .topbar .wrap{gap:6px 18px}
  .topbar .it-addr{order:3;flex-basis:100%;justify-content:center}
}
@media (max-width:640px){
  .hero .wrap{padding-top:40px;padding-bottom:44px}
  .hero .ctas{margin-top:18px}
  .mbr{display:inline}
  .cov-h{font-size:25px;line-height:1.2}
  /* about teaser order: header, stats, photo, president */
  #about .cols{display:flex;flex-direction:column;gap:22px}
  #about .cols > div:last-child{display:contents}
  #about .m-only{order:1;margin:0}
  #about .stats{order:2;margin:0;width:100%}
  #about .photo{order:3;width:100%}
  #about h3.founder{order:4;margin:6px 0 0}
  #about .cols p{order:5;margin:0}
  #about .btn-more{order:6}
  /* footer contact lines start at one edge */
  footer.site .cis{display:inline-flex;flex-direction:column;align-items:flex-start;text-align:left}
  footer.site .ci{justify-content:flex-start}
  footer.site .cols > div:first-child{text-align:center}
  /* services page */
  .svc .phead .wrap,.phead .wrap{text-align:center}
  .phead h1,.phead p{margin-left:auto;margin-right:auto}
  .jump{justify-content:center}
  .jump a[href="#associations"]{order:4}
  .group .ghead{flex-direction:column;justify-content:center;text-align:center;gap:12px}
  .group .gintro{text-align:center}
  .g-toggle{display:flex;align-items:center;justify-content:center;gap:10px;margin:14px auto 0;background:var(--b2);color:#fff;border:0;border-radius:10px;padding:13px 20px;font:700 15px var(--head);cursor:pointer}
  .g-toggle .chev{width:9px;height:9px;border-right:2.5px solid #fff;border-bottom:2.5px solid #fff;transform:rotate(45deg) translateY(-2px);transition:transform .25s}
  .group.open .g-toggle .chev{transform:rotate(-135deg) translate(-2px,0)}
  .g-items{display:none;margin-top:18px}
  .group.open .g-items{display:block}
  .group+.group{margin-top:40px}
  .fine{text-align:center}
}

/* more breathing room in the timeline section */
.tl-sec.pinned .tl-stage{padding-top:clamp(40px,10vh,104px);padding-bottom:clamp(48px,12vh,120px)}
@media (min-width:821px){.tl-sec:not(.pinned){padding-top:110px;padding-bottom:130px}}
@media (max-width:820px){.tl-sec{padding-top:72px;padding-bottom:96px}}

/* ===== pinned timeline v2: big cards placed around the stage ===== */
.tl-sec.pinned .tl-stage{padding-top:clamp(28px,6vh,64px);padding-bottom:clamp(32px,7vh,72px)}
.tl-sec.pinned h2{margin-bottom:clamp(28px,5vh,56px)}
.tl-sec.pinned .timeline{display:block;position:relative}
.tl-sec.pinned .tl-node{position:absolute;width:min(34%,460px);padding:44px 32px 32px;opacity:0;transform:translateY(16px);
  transition:opacity .45s ease,transform .45s ease,background-color .45s ease,box-shadow .45s ease}
.tl-sec.pinned .tl-node.on{opacity:1;transform:none}
.tl-sec.pinned .tl-node h3{font-size:27px;margin-bottom:12px;transition:opacity .3s ease}
.tl-sec.pinned .tl-node p{font-size:18px;line-height:1.55;transition:opacity .3s ease}
.tl-sec.pinned .tl-node .tl-num{width:46px;height:46px;line-height:46px;font-size:20px;top:-23px;margin-left:-23px}
.tl-sec.pinned .tl-node.past{background-color:transparent;box-shadow:0 0 0 transparent}
.tl-sec.pinned .tl-node.past h3,.tl-sec.pinned .tl-node.past p{opacity:0}
.tl-sec.pinned .n1{left:2%;top:24px}
.tl-sec.pinned .n2{right:2%;bottom:0}
.tl-sec.pinned .n3{left:2%;bottom:0}
.tl-sec.pinned .n4{right:2%;top:24px}
.tl-sec.pinned .n5{left:calc(50% - min(17%,230px));top:24px}
.tl-sec.pinned .n6{width:min(46%,600px);left:calc(50% - min(23%,300px));top:30%;padding:54px 40px 40px}
.tl-sec.pinned .n6 h3{font-size:34px}
.tl-sec.pinned .n6 p{font-size:20px}

/* ===== about page bubbles: hand drawn ring with an icon ===== */
.bub{border:0;background:transparent;position:relative;flex-direction:column;gap:8px;white-space:normal;text-align:center}
.bub .ring{position:absolute;inset:-8px;width:calc(100% + 16px);height:calc(100% + 16px);overflow:visible}
.bub .ring path{fill:none;stroke:var(--navy);stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.1s ease}
.vstep.on .bub .ring path{stroke-dashoffset:0}
.bub .bic{color:var(--sky);display:block;line-height:0;position:relative}
.bub .blab{position:relative;white-space:nowrap}
.bub.logo img{position:relative}
@media (max-width:640px){.bub .bic svg{width:32px;height:32px}}
@media (prefers-reduced-motion:reduce){.bub .ring path{stroke-dashoffset:0;transition:none}}

/* ===== mobile tweaks round 2 ===== */
@media (max-width:640px){
  .hero .wrap{padding-top:28px;padding-bottom:31px}
  #about{padding-bottom:31px}
  #about .btn-more{margin-top:-11px}
  /* services: each group is a box with its toggle built in */
  .group{border:2px solid var(--navy);border-radius:14px;padding:22px 18px 0;overflow:hidden;background:#fff}
  .group+.group{margin-top:22px}
  .group .ghead{margin-bottom:6px}
  .g-toggle{width:calc(100% + 36px);margin:16px -18px 0;border-radius:0;background:var(--lt);color:var(--navy);border-top:2px solid var(--navy);padding:15px 18px;font-size:15.5px}
  .g-toggle .chev{border-color:var(--navy)}
  .group.open .g-toggle{background:var(--navy);color:#fff}
  .group.open .g-toggle .chev{border-color:#fff}
  .g-items{margin:0 0 6px}
  .group .g-items > .item:first-child{border-top:0}
  /* contact */
  .quote .btn-submit{display:flex;margin-left:auto;margin-right:auto}
  .form-note{text-align:center}
}
.tl-sec.pinned .tl-node{width:min(38%,500px);padding:48px 36px 36px}
.tl-sec.pinned .tl-node h3{font-size:30px}
.tl-sec.pinned .tl-node p{font-size:19px}
.tl-sec.pinned .n5{left:calc(50% - min(19%,250px))}
.tl-sec.pinned .n6{width:min(50%,640px);left:calc(50% - min(25%,320px));top:26%;padding:58px 44px 44px}
.tl-sec.pinned .n6 h3{font-size:36px}
.tl-sec.pinned .n6 p{font-size:21px}
.tl-sec.pinned .tl-node{padding:clamp(32px,5vh,48px) 34px clamp(22px,3.6vh,36px)}
.tl-sec.pinned .tl-node h3{font-size:clamp(22px,3.3vh,30px)}
.tl-sec.pinned .tl-node p{font-size:clamp(15.5px,2.1vh,19px)}
.tl-sec.pinned .n6{padding:clamp(40px,6vh,58px) 44px clamp(28px,4.4vh,44px)}
.tl-sec.pinned .n6 h3{font-size:clamp(26px,4vh,36px)}
.tl-sec.pinned .n6 p{font-size:clamp(17px,2.35vh,21px)}

.tl-sec.pinned .n6{width:min(46%,600px);left:calc(50% - min(23%,300px));top:19%}

/* pinned v3: only the current card shows */
.tl-sec.pinned .n5{left:2%;top:24px}
/* even line lengths in secondary text */
.phead p,.vtext p,.why .tile p,.quote .sub,.tl-node p,.gintro,.fine,.band p{text-wrap:balance}
@media (max-width:640px){
  #about .m-only{white-space:nowrap;font-size:5.3vw}
  #about .m-only br{display:none}
  .contact-page h1,.contact-page .sub{text-align:center}
  .contact-card h3{text-align:center}
}

@media (max-width:640px){#about .m-only{font-size:min(calc((100vw - 22px) / 15.9),30px);letter-spacing:-.025em;margin-left:-9px;margin-right:-9px;text-align:center}}
.bub .bic svg{width:52px;height:52px}
@media (max-width:640px){.bub .bic svg{width:42px;height:42px}}

/* stats labels: fixed line breaks so both sides always match */
.stat span.lw,.stat span.ln{white-space:nowrap}
.stat span.ln{display:none}
@media (max-width:999px){.stat span.lw{display:none}.stat span.ln{display:block}}
@media (max-width:640px){.stat{padding-left:6px;padding-right:6px}}
/* bigger Florida outline */
.bub .bic.fl svg{width:62px;height:62px}
@media (max-width:640px){.bub .bic.fl svg{width:50px;height:50px}}
