/* City illustration motion guarantee: animation happens on SVG parts, never the card. */
/* Enqueued after older city styles to prevent legacy rules from overriding motion. */
.ngcity .nght-hero-visual,
.ngcity .ngcp-hero-visual,
.ngcity .nght-hero-visual > img,
.ngcity .ngcp-hero-visual > img{animation:none!important;transform:none!important}
@media(prefers-reduced-motion:no-preference){
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene .ngcp-hero-water-detail,
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene .ngcity-motion-ripples{
  animation:ngAllCityFlow 2.8s ease-in-out infinite!important;
 }
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene .ngcp-hero-nature-detail,
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene .ngcity-motion-birds,
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene .ngcity-motion-clouds,
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene .ngcity-scenery-cloud{
  animation:ngAllCityDrift 4.4s ease-in-out infinite alternate!important;
 }
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene .ngcp-hero-metro-detail,
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene .ngcp-hero-heritage-detail,
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene .ngcity-motion-lights,
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene .ngcity-motion-signal,
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene .ngcity-scenery-glint{
  animation:ngAllCitySparkle 2.7s ease-in-out infinite!important;
 }
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene .ngcity-scenery-leaves{
  animation:ngAllCityBreeze 4.6s ease-in-out infinite!important;
  transform-box:view-box;transform-origin:50% 12%;
 }
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene:is(.ngcp-type-rocket,.ngcp-type-aircraft,.ngcp-type-ship,.ngcp-type-train,.ngcp-type-rail-carrollton,.ngcp-type-rail-temple,.ngcp-type-rail-leander,.ngcp-type-coaster,.ngcp-type-butterfly) .ngcp-animated-landmark{
  animation:ngAllCityFly 4.2s ease-in-out infinite!important;
  transform-box:view-box;transform-origin:50% 66%;
 }
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene:is(.ngcp-type-oak,.ngcp-type-pine,.ngcp-type-pecan,.ngcp-type-palm,.ngcp-type-palm-mcallen,.ngcp-type-rose,.ngcp-type-pear) .ngcp-animated-landmark{
  animation:ngAllCityBreeze 5s ease-in-out infinite!important;
  transform-box:view-box;transform-origin:50% 76%;
 }
 /* Buildings keep their foundations still: only highlights, foreground and atmosphere move. */
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene:not(.ngcp-type-rocket):not(.ngcp-type-aircraft):not(.ngcp-type-ship):not(.ngcp-type-train):not(.ngcp-type-coaster):not(.ngcp-type-butterfly) .ngcp-animated-landmark{
  animation:ngAllCityFacade 5s ease-in-out infinite!important;
  transform:none!important;
 }
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene.ngcp-type-stadium .ngcp-arlington-football-flight{
  animation:ngAllCityFootball 3.2s ease-in-out infinite!important;transform-box:view-box;transform-origin:50% 65%;
 }
}
@keyframes ngAllCityFlow{0%,100%{transform:translateX(-14px);opacity:.5}50%{transform:translateX(23px);opacity:1}}
@keyframes ngAllCityDrift{0%{transform:translate(-14px,5px);opacity:.6}100%{transform:translate(28px,-9px);opacity:1}}
@keyframes ngAllCitySparkle{0%,100%{opacity:.3;filter:brightness(.96)}50%{opacity:1;filter:brightness(1.35)}}
@keyframes ngAllCityBreeze{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
@keyframes ngAllCityFly{0%,100%{transform:translateY(0)}50%{transform:translateY(-19px)}}
@keyframes ngAllCityFacade{0%,100%{filter:brightness(1)}50%{filter:brightness(1.2)}}
@keyframes ngAllCityFootball{0%,100%{transform:translate(-28px,12px) rotate(-16deg)}50%{transform:translate(34px,-25px) rotate(21deg)}}
@media(prefers-reduced-motion:reduce){
 .ngcity.ngcp .ngcp-hero-visual svg.ngcp-signature-scene *{animation:none!important;transform:none!important;transition:none!important;}
}
