:root{--blue:#3B82F6;--navy:#0B1120;--slate:#0F172A;--teal:#0D9488;--indigo:#6366F1;--slate-600:#475569}
html{scroll-behavior:smooth}
.reveal{opacity:0;transform:translateY(16px);transition:opacity .4s cubic-bezier(.25,.46,.45,.94),transform .4s cubic-bezier(.25,.46,.45,.94)}
.reveal.visible{opacity:1;transform:translateY(0)}
.reveal-left{opacity:0;transform:translateX(-20px);transition:opacity .4s cubic-bezier(.25,.46,.45,.94),transform .4s cubic-bezier(.25,.46,.45,.94)}
.reveal-left.visible{opacity:1;transform:translateX(0)}
.reveal-right{opacity:0;transform:translateX(20px);transition:opacity .4s cubic-bezier(.25,.46,.45,.94),transform .4s cubic-bezier(.25,.46,.45,.94)}
.reveal-right.visible{opacity:1;transform:translateX(0)}
.stagger>*:nth-child(1){transition-delay:.03s}.stagger>*:nth-child(2){transition-delay:.09s}.stagger>*:nth-child(3){transition-delay:.15s}.stagger>*:nth-child(4){transition-delay:.21s}
#site-nav{position:fixed;top:0;width:100%;z-index:50;transition:box-shadow .3s,background .3s;background:#ffffff;border-bottom:1px solid #e2e8f0}
#site-nav.scrolled{box-shadow:0 1px 12px rgba(0,0,0,.06)}
#mobile-menu{display:none}#mobile-menu.open{display:block}
.card-lift{transition:transform .3s,box-shadow .3s}.card-lift:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,.08)}
#services-dd{display:none;position:absolute;top:calc(100%+8px);left:50%;transform:translateX(-50%);width:260px;background:#0F172A;border:1px solid rgba(255,255,255,.08);border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.3);z-index:200}
#services-dd.open{display:block}
@keyframes fadeInUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.fade-up{animation:fadeInUp .4s cubic-bezier(.25,.46,.45,.94) both}.fade-up-2{animation:fadeInUp .4s cubic-bezier(.25,.46,.45,.94) .08s both}.fade-up-3{animation:fadeInUp .4s cubic-bezier(.25,.46,.45,.94) .16s both}
@keyframes bgSlide{0%{opacity:0;transform:scale(1.05)}20%{opacity:.6}80%{opacity:.6}100%{opacity:0;transform:scale(1)}}
.hero-img{animation:bgSlide 5s ease-in-out both}
details summary{cursor:pointer;list-style:none}details summary::-webkit-details-marker{display:none}
details[open] .chevron{transform:rotate(180deg)}.chevron{transition:transform .3s}
.faq-card{scroll-margin-top:110px}
@keyframes mapPulse{0%,100%{opacity:.4;r:8}50%{opacity:0;r:18}}
@keyframes mapPulseActive{0%,100%{opacity:.5;r:10}50%{opacity:.1;r:22}}
@keyframes dashMove{to{stroke-dashoffset:0}}
.map-marker-dot{cursor:pointer;transition:fill .2s,r .2s}
.map-marker-dot:hover{filter:brightness(1.3)}
.map-marker-group.active .map-marker-dot{r:8}
.map-marker-group .pulse-ring{animation:mapPulse 2.5s ease-in-out infinite}
.map-marker-group.active .pulse-ring{animation:mapPulseActive 2s ease-in-out infinite}
.map-connection{stroke-dasharray:6 4;stroke-dashoffset:100;opacity:0}
.map-connection.animate{opacity:1;animation:dashMove 1.5s ease forwards}
.map-label{font-size:11px;font-weight:600;fill:#94A3B8;pointer-events:none;transition:fill .2s}
.map-marker-group.active .map-label{fill:#F1F5F9}
#city-panel{transition:opacity .3s ease,transform .3s ease;min-height:340px}
#city-panel.fade-out{opacity:0;transform:translateY(8px)}
#city-panel.fade-in{opacity:1;transform:translateY(0)}
.region-card{scroll-margin-top:110px}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .reveal,.reveal-left,.reveal-right{opacity:1;transform:none}
}
