/* hero map animation (preview). Decorative motion only: every dot is a real yard, the count is the live count. */
.mapcard .cam{position:absolute;inset:-4%;transform:scale(1.0);will-change:transform}
.mapcard .cam > *{position:absolute;inset:0;width:100%;height:100%}
.mapcard .cam svg{will-change:transform}
.ha .cam{animation:ha-cam 28s ease-in-out infinite alternate}
@keyframes ha-cam{0%{transform:translate3d(-1.2%,.6%,0) scale(1.04)}100%{transform:translate3d(1.2%,-.8%,0) scale(1.07)}}
.ha .l-grid{animation:ha-par 28s ease-in-out infinite alternate}
@keyframes ha-par{0%{transform:translate3d(.9%,-.5%,0)}100%{transform:translate3d(-.9%,.6%,0)}}
.ha .l-lab{animation:ha-par2 28s ease-in-out infinite alternate}
@keyframes ha-par2{0%{transform:translate3d(-.35%,.2%,0)}100%{transform:translate3d(.35%,-.25%,0)}}
/* grid: fades in, then a soft light drifts across it */
.ha .l-grid{opacity:0;animation:ha-par 28s ease-in-out infinite alternate,ha-in 1.6s .1s ease-out forwards}
@keyframes ha-in{to{opacity:1}}
.mapcard .shim{background:radial-gradient(38% 30% at 50% 50%,rgba(54,178,111,.16),rgba(54,178,111,0) 70%);mix-blend-mode:screen;opacity:.0;pointer-events:none}
.ha .shim{animation:ha-shim 16s ease-in-out infinite alternate,ha-in2 2s 1s forwards}
@keyframes ha-shim{0%{transform:translate3d(-25%,20%,0)}100%{transform:translate3d(25%,5%,0)}}
@keyframes ha-in2{to{opacity:1}}
/* coastline draws in */
.mapcard .map .coast{vector-effect:none;stroke-width:calc(1.2px * var(--u))}
.ha .map .coast{stroke-dasharray:1 1;stroke-dashoffset:1;animation:ha-draw 2.6s cubic-bezier(.6,0,.2,1) .2s forwards}
@keyframes ha-draw{to{stroke-dashoffset:0}}
.ha .map .land{opacity:0;animation:ha-in 1.8s 1.2s ease-out forwards}
.ha .map .borders{opacity:0;animation:ha-in 1.4s 2s ease-out forwards}
.ha .map .sea{opacity:0;animation:ha-in 1.4s 2.2s ease-out forwards}
/* scan sweep: purely decorative */
.mapcard .sweep{inset:0 auto 0 0;width:22%;background:linear-gradient(90deg,rgba(54,178,111,0),rgba(54,178,111,.07) 70%,rgba(160,240,190,.22) 99%,rgba(54,178,111,0));transform:translate3d(-110%,0,0);pointer-events:none;mix-blend-mode:screen}
.ha .sweep{animation:ha-sweep 9s cubic-bezier(.45,0,.55,1) 1.2s infinite}
@keyframes ha-sweep{0%{transform:translate3d(-110%,0,0)}55%,100%{transform:translate3d(560%,0,0)}}
/* real yards light up west to east, then breathe */
.ha .l-dots .yard{opacity:0;animation:ha-dot .6s ease-out forwards;animation-delay:var(--d,0s)}
@keyframes ha-dot{0%{opacity:0}40%{opacity:1;fill:#B9F5D2}100%{opacity:1}}
.mapcard .l-dots .halo{fill:none;stroke:var(--green-night);stroke-width:calc(1px * var(--u));opacity:0}
.ha .l-dots .halo{animation:ha-halo 4.8s ease-in-out infinite;animation-delay:var(--d,0s)}
@keyframes ha-halo{0%,100%{opacity:0}50%{opacity:.32}}
/* city labels glow */
.mapcard .l-lab .city text{filter:drop-shadow(0 0 calc(4px * var(--u)) rgba(54,178,111,.45))}
.ha .l-lab .city,.ha .l-lab .region{opacity:0;animation:ha-in 1s ease-out forwards;animation-delay:var(--d,2.4s)}
.mapcard.paused *,.mapcard.paused{animation-play-state:paused!important}
@media (prefers-reduced-motion:reduce){.mapcard *,.mapcard .cam{animation:none!important;opacity:1!important;stroke-dashoffset:0!important}.mapcard .l-dots .halo{opacity:0!important}.mapcard .sweep,.mapcard .shim{display:none}.mapcard .cam{transform:scale(1.05)}}
/* phones: South Louisiana sits on Port Arthur, so it is hidden at small widths */
@media (max-width:560px){.mapcard .region[x="596.6"]{display:none}}
