/* Gentle movement stays on composited layers; geography and pins share one plane. */
.map-svg{transform-origin:0 0}
.map-zoom-previous{pointer-events:none}
.motion-enabled .map-canvas.is-zooming{animation-play-state:paused!important}
.is-zooming .map-svg path{vector-effect:non-scaling-stroke}
.is-zooming .map-svg text{opacity:0}
.map-canvas{animation:trail-map-drift 14s ease-in-out infinite alternate;transform-origin:30% 51%}
.place-preview>img{animation:trail-preview-drift 18s ease-in-out infinite alternate;will-change:transform}
.map-pin .dot{position:relative}
.map-pin.active .dot::after{content:"";position:absolute;inset:-7px;border:1px solid #d6b78c99;border-radius:50%;pointer-events:none;animation:trail-pin-pulse 3.6s ease-out infinite}
.map-pin .pin-label{transition:color .2s ease,opacity .2s ease}
.map-pin:hover .pin-label,.map-pin:focus-visible .pin-label{color:var(--paper)}
.world-stage::before{animation:none}
.cartography::after{mix-blend-mode:normal;animation:map-light-drift 18s ease-in-out infinite alternate}
.motion-paused *,.motion-paused::before,.motion-paused ::after{animation-play-state:paused!important}
@keyframes trail-map-drift{from{transform:translate(-.45%,.2%) scale(1.015)}to{transform:translate(.6%,-.35%) scale(1.045)}}
@keyframes trail-preview-drift{from{transform:translate(-.3%,.1%) scale(1.025)}to{transform:translate(.5%,-.3%) scale(1.065)}}
@keyframes trail-pin-pulse{0%{opacity:.65;transform:scale(.6)}85%,100%{opacity:0;transform:scale(1.6)}}
@media (hover:hover){.map-canvas:has(.map-pin:hover),.map-canvas:has(.map-pin:focus-visible){animation-play-state:paused}}
@media (max-width:760px){.map-canvas{transform-origin:45% 51%}.place-preview>img{animation-duration:22s}}
@media (prefers-reduced-motion:reduce){.world-stage *,.world-stage::before,.world-stage ::after{animation:none!important;transition:none!important}}
/* A deliberate opt-in may enable motion when the system preference reduces it. */
.motion-enabled .map-canvas{animation:trail-map-drift 14s ease-in-out infinite alternate!important}
.motion-enabled .place-preview>img{animation:trail-preview-drift 18s ease-in-out infinite alternate!important}
.motion-enabled .map-pin.active .dot::after{animation:trail-pin-pulse 3.6s ease-out infinite!important}
.motion-enabled .cartography::after{animation:map-light-drift 18s ease-in-out infinite alternate!important}
.motion-disabled *,.motion-disabled ::after{animation:none!important}
.map-footer{flex-wrap:wrap;column-gap:16px;row-gap:8px}
.map-footer>span{margin-right:auto}
@media (hover:hover){.motion-enabled .map-canvas:has(.map-pin:hover),.motion-enabled .map-canvas:has(.map-pin:focus-visible){animation-play-state:paused!important}}
