/* NXT GEN WEB · distinct city scene families. All movement is within SVG layers. */
.ngcity .nght-hero-visual img.nght-corn-art,
.ngcity .ngcp-hero-visual img.ngcp-signature-art,
.ngcity .nglv-visual>img,
.ngcity .ngar-hero-visual>img {animation:none!important;transform:none!important;will-change:auto!important;}
.ngcity .ngcp-signature-scene .ngcity-stage {pointer-events:none}
@media(prefers-reduced-motion:no-preference){
 .ngcity .ngcp-signature-scene .ngcity-scenery-cloud {animation:cityCloudDrift 14s ease-in-out infinite alternate;}
 .ngcity .ngcp-signature-scene .ngcity-scenery-leaves {transform-box:view-box;transform-origin:50% 10%;animation:cityLeafSway 6s ease-in-out infinite;}
 .ngcity .ngcp-signature-scene .ngcity-scenery-water {animation:cityWaterShimmer 5s ease-in-out infinite;}
 .ngcity .ngcp-signature-scene .ngcity-scenery-stars {animation:cityTwinkle 3.7s ease-in-out infinite;}
 .ngcity .ngcp-signature-scene .ngcity-scenery-banner {transform-box:view-box;transform-origin:50% 15%;animation:cityLeafSway 7s ease-in-out infinite;}
 .ngcity .ngcp-signature-scene .ngcity-scenery-trail {animation:cityTrailGlimmer 9s ease-in-out infinite;}
 .ngcity .ngcp-signature-scene .ngcity-scenery-glint {animation:cityTwinkle 4.8s ease-in-out infinite;}
 .ngcity .ngcp-signature-scene .ngcp-animated-landmark {animation:citySubjectLight 6.8s ease-in-out infinite;}
 .ngcity .ngcp-signature-scene:is(.ngcp-type-rocket,.ngcp-type-aircraft,.ngcp-type-airport,.ngcp-type-ship,.ngcp-type-train,.ngcp-type-rail-carrollton,.ngcp-type-rail-temple,.ngcp-type-rail-leander,.ngcp-type-coaster,.ngcp-type-horse,.ngcp-type-mustang,.ngcp-type-longhorn,.ngcp-type-longhorn-mesquite,.ngcp-type-butterfly) .ngcp-animated-landmark{
 animation:citySubjectLift 6.7s ease-in-out infinite;transform-box:view-box;transform-origin:50% 65%;
 }
 .ngcity .ngcp-signature-scene:is(.ngcp-type-oak,.ngcp-type-palm,.ngcp-type-palm-mcallen,.ngcp-type-pine,.ngcp-type-pecan,.ngcp-type-rose,.ngcp-type-pear) .ngcp-animated-landmark{
 animation:citySubjectSway 6.4s ease-in-out infinite;transform-box:view-box;transform-origin:50% 78%;
 }
 .ngcity .ngcp-signature-scene:is(.ngcp-type-waterfall,.ngcp-type-river,.ngcp-type-lake,.ngcp-type-coast,.ngcp-type-water-allen,.ngcp-type-water-grand-prairie,.ngcp-type-lake-league-city,.ngcp-type-river-san-angelo,.ngcp-type-dam) .ngcp-animated-landmark{
 animation:cityWaterShimmer 5.2s ease-in-out infinite;
 }
 .ngcity .ngcp-signature-scene .ngcity-scenery-identifier{animation:cityTwinkle 7s ease-in-out infinite}
}
@keyframes cityCloudDrift{from{transform:translateX(-7px)}to{transform:translateX(11px)}}
@keyframes cityLeafSway{0%,100%{transform:rotate(-1.5deg)}50%{transform:rotate(1.5deg)}}
@keyframes cityWaterShimmer{0%,100%{opacity:.74;filter:brightness(1)}50%{opacity:1;filter:brightness(1.14)}}
@keyframes cityTwinkle{0%,100%{opacity:.45}50%{opacity:.94}}
@keyframes cityTrailGlimmer{0%,100%{opacity:.62}50%{opacity:.97}}
@keyframes citySubjectLight{0%,100%{filter:brightness(1)}50%{filter:brightness(1.075)}}
@keyframes citySubjectLift{0%,100%{transform:translateY(0) rotate(-.3deg)}50%{transform:translateY(-9px) rotate(.35deg)}}
@keyframes citySubjectSway{0%,100%{transform:rotate(-1.6deg)}50%{transform:rotate(1.6deg)}}
@media(prefers-reduced-motion:reduce){.ngcity .ngcp-signature-scene *{animation:none!important;transform:none!important;transition:none!important}}
/* Arlington: motion inside the AT&T Stadium illustration, not the card. */
@media (prefers-reduced-motion:no-preference) {
 /* Stadium movement is applied to SVG artwork, never the surrounding card. */
 .ngcity.ngcp .ngcp-signature-scene.ngcp-type-stadium .ngcp-animated-landmark {animation:ngarlington-stadium-rise 3.6s ease-in-out infinite!important; transform-box:view-box;transform-origin:50% 65%;}
 .ngcity.ngcp .ngcp-signature-scene.ngcp-type-stadium .ngcp-arlington-star path {animation:ngarlington-star-light 2s ease-in-out infinite!important;}
 .ngcity.ngcp .ngcp-signature-scene.ngcp-type-stadium .ngcp-arlington-star circle {animation:ngarlington-star-halo 2s ease-in-out infinite!important;}
 .ngcity.ngcp .ngcp-signature-scene.ngcp-type-stadium .ngcp-animated-landmark>g:first-child>path:last-child {animation:ngarlington-roof-lights 2.7s ease-in-out infinite!important;}
 .ngcity.ngcp .ngcp-signature-scene.ngcp-type-stadium .ngcity-scenery-cloud {animation:cityCloudDrift 7s ease-in-out infinite alternate!important;}
}
@keyframes ngarlington-stadium-rise {0%,100%{transform:translateY(0)}50%{transform:translateY(-20px)}}
@keyframes ngarlington-star-light {0%,100%{fill:#C7DAE0;stroke:#AEC5C9}50%{fill:#FFFFFF;stroke:#FFFFFF}}
@keyframes ngarlington-star-halo {0%,100%{fill:#536F7B}50%{fill:#7FA6B5}}
@keyframes ngarlington-roof-lights {0%,100%{stroke:#93BEC6;stroke-width:17}50%{stroke:#F5FBFF;stroke-width:22}}

/* Visible SVG-layer movement, with the enclosing illustration card fixed */
@media (prefers-reduced-motion:no-preference) {
.ngcity.ngcp .ngcp-hero-visual .ngcp-signature-scene:is(.ngcp-type-rocket,.ngcp-type-aircraft,.ngcp-type-airport,.ngcp-type-ship,.ngcp-type-train,.ngcp-type-coaster,.ngcp-type-butterfly) .ngcp-animated-landmark {
 animation:ngVisibleCityFloat 3.3s ease-in-out infinite!important;transform-box:view-box;transform-origin:50% 65%;
}
.ngcity.ngcp .ngcp-hero-visual .ngcp-signature-scene:is(.ngcp-type-oak,.ngcp-type-palm,.ngcp-type-pine,.ngcp-type-pecan,.ngcp-type-rose,.ngcp-type-pear) .ngcp-animated-landmark {
 animation:ngVisibleCitySway 3.6s ease-in-out infinite!important;transform-box:view-box;transform-origin:50% 78%;
}
.ngcity.ngcp .ngcp-hero-visual .ngcp-signature-scene .ngcity-motion-clouds,
.ngcity.ngcp .ngcp-hero-visual .ngcp-signature-scene .ngcity-motion-birds,
.ngcity.ngcp .ngcp-hero-visual .ngcp-signature-scene .ngcity-scenery-cloud {
 animation:ngVisibleCityDrift 4s ease-in-out infinite alternate!important;
}
.ngcity.ngcp .ngcp-hero-visual .ngcp-signature-scene .ngcity-motion-lights,
.ngcity.ngcp .ngcp-hero-visual .ngcp-signature-scene .ngcity-motion-signal {
 animation:ngVisibleCityLights 1.9s ease-in-out infinite!important;
}
.ngcity.ngcp .ngcp-hero-visual .ngcp-signature-scene .ngcity-motion-ripples {animation:ngVisibleCityRipple 2.5s ease-in-out infinite!important;}
.ngcity.ngcp .ngcp-hero-visual .ngcp-signature-scene .ngcity-scenery-leaves {
 animation:ngVisibleCitySway 3.8s ease-in-out infinite!important;transform-box:view-box;transform-origin:50% 12%;
}
}
@keyframes ngVisibleCityFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-28px)}}
@keyframes ngVisibleCitySway{0%,100%{transform:rotate(-2.7deg)}50%{transform:rotate(2.9deg)}}
@keyframes ngVisibleCityDrift{from{transform:translateX(-12px)}to{transform:translateX(28px)}}
@keyframes ngVisibleCityLights{0%,100%{opacity:.35;filter:brightness(.9)}50%{opacity:1;filter:brightness(1.3)}}
@keyframes ngVisibleCityRipple{0%,100%{transform:translateX(0);opacity:.5}50%{transform:translateX(22px);opacity:1}}

/* All cities: continuously animate the actual subject rather than its outer card.
   Landmark families have distinct restrained movement suited to their physical form. */
@media (prefers-reduced-motion:no-preference) {
  /* Architecture should not bob up and down: sunlight washes across the facades. */
  .ngcity.ngcp .ngcp-signature-scene:is(
    .ngcp-type-arch,.ngcp-type-tower,.ngcp-type-dome,.ngcp-type-courthouse,
    .ngcp-type-cathedral,.ngcp-type-mission,.ngcp-type-monument,.ngcp-type-mansion,
    .ngcp-type-campus,.ngcp-type-medical,.ngcp-type-gate,.ngcp-type-hangar,
    .ngcp-type-storefront,.ngcp-type-pavilion,.ngcp-type-spanishhouse,
    .ngcp-type-tech,.ngcp-type-civic,.ngcp-type-texas,.ngcp-type-oil
  ) .ngcp-animated-landmark {
    animation:ngCityFacadeLight 4.8s ease-in-out infinite!important;
  }
  /* Street / transport scenes get kinetic detail without moving the frame. */
  .ngcity.ngcp .ngcp-signature-scene:is(
    .ngcp-type-rail-carrollton,.ngcp-type-rail-temple,.ngcp-type-rail-leander,
    .ngcp-type-train,.ngcp-type-ship,.ngcp-type-horse,.ngcp-type-mustang,
    .ngcp-type-longhorn,.ngcp-type-longhorn-mesquite,.ngcp-type-coaster,
    .ngcp-type-aircraft,.ngcp-type-airport,.ngcp-type-rocket
  ) .ngcp-animated-landmark {
    animation:ngCityTransportMove 4.3s ease-in-out infinite!important;
    transform-box:view-box;transform-origin:50% 66%;
  }
  /* Botanical and coastal illustrations breathe with slow natural movement. */
  .ngcity.ngcp .ngcp-signature-scene:is(
    .ngcp-type-oak,.ngcp-type-palm,.ngcp-type-palm-mcallen,.ngcp-type-pine,
    .ngcp-type-pecan,.ngcp-type-rose,.ngcp-type-pear,.ngcp-type-butterfly
  ) .ngcp-animated-landmark {
    animation:ngCityBreeze 4.6s ease-in-out infinite!important;
    transform-box:view-box;transform-origin:50% 80%;
  }
  .ngcity.ngcp .ngcp-signature-scene:is(
    .ngcp-type-waterfall,.ngcp-type-river,.ngcp-type-lake,.ngcp-type-coast,
    .ngcp-type-water-allen,.ngcp-type-water-grand-prairie,
    .ngcp-type-lake-league-city,.ngcp-type-river-san-angelo,.ngcp-type-dam
  ) .ngcp-animated-landmark {
    animation:ngCityWaterLight 3.8s ease-in-out infinite!important;
  }
  .ngcity.ngcp .ngcp-signature-scene .ngcity-scenery-identifier {
    animation:ngCityDetailGlow 3.2s ease-in-out infinite alternate!important;
  }
}
@keyframes ngCityFacadeLight {
  0%,100%{filter:brightness(1) saturate(1)}
  50%{filter:brightness(1.18) saturate(1.10)}
}
@keyframes ngCityTransportMove {
  0%,100%{transform:translateY(0) rotate(-.25deg)}
  50%{transform:translateY(-15px) rotate(.35deg)}
}
@keyframes ngCityBreeze {
  0%,100%{transform:rotate(-2.0deg)}
  50%{transform:rotate(2.3deg)}
}
@keyframes ngCityWaterLight {
  0%,100%{filter:brightness(1) saturate(1)}
  50%{filter:brightness(1.2) saturate(1.15)}
}
@keyframes ngCityDetailGlow {
  0%{opacity:.25}100%{opacity:.75}
}
/* Hero illustration kinetic details: scenery animates, never the card or text. */
@media (prefers-reduced-motion:no-preference) {
 .ngcity .ngcp-signature-scene .ngcp-hero-water-detail {
   animation:ngCityHeroCurrent 3.7s ease-in-out infinite;
 }
 .ngcity .ngcp-signature-scene .ngcp-hero-nature-detail {
   animation:ngCityHeroBirds 6.5s ease-in-out infinite;
 }
 .ngcity .ngcp-signature-scene .ngcp-hero-metro-detail {
   animation:ngCityHeroMetroLights 2.7s ease-in-out infinite;
 }
 .ngcity .ngcp-signature-scene .ngcp-hero-heritage-detail {
   animation:ngCityHeroSunFlecks 5.1s ease-in-out infinite;
 }
 /* The most common generic scene types also get recognizably moving subjects. */
 .ngcity.ngcp .ngcp-signature-scene:not(.ngcp-type-stadium)
    .ngcp-animated-landmark {
    animation:ngCityHeroGentleMotion 5.4s ease-in-out infinite;
    transform-box:view-box;
    transform-origin:50% 70%;
 }
}
@keyframes ngCityHeroCurrent {
  0%,100%{transform:translateX(-15px);opacity:.55}
  50%{transform:translateX(24px);opacity:1}
}
@keyframes ngCityHeroBirds {
  0%,100%{transform:translate(-20px,7px);opacity:.55}
  50%{transform:translate(40px,-12px);opacity:1}
}
@keyframes ngCityHeroMetroLights {
  0%,100%{opacity:.25;transform:translateY(4px)}
  50%{opacity:1;transform:translateY(-6px)}
}
@keyframes ngCityHeroSunFlecks {
  0%,100%{opacity:.35;transform:translate(-10px,8px)}
  50%{opacity:1;transform:translate(12px,-9px)}
}
@keyframes ngCityHeroGentleMotion {
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-7px)}
}
/* Arlington: one centered navy Cowboys star in the sky, with animated football.
   Remove the earlier decorative blue stadium star so only the sky star appears. */
.ngcity .ngcp-signature-scene.ngcp-type-stadium .ngcp-arlington-star{
  display:none!important;
}
.ngcity .ngcp-signature-scene.ngcp-type-stadium .ngcp-cowboys-sky-star{
  filter:drop-shadow(0 5px 5px rgba(12,35,64,.22));
}
@media (prefers-reduced-motion:no-preference){
 .ngcity .ngcp-signature-scene.ngcp-type-stadium .ngcp-cowboys-sky-star{
   animation:ngArlingtonSkyStar 5.4s ease-in-out infinite;
   transform-box:view-box;
   transform-origin:450px 229px;
 }
 .ngcity .ngcp-signature-scene.ngcp-type-stadium .ngcp-arlington-football{
   animation:ngArlingtonBallFlight 3.9s ease-in-out infinite;
   transform-box:fill-box;
   transform-origin:center;
   filter:drop-shadow(1px 4px 3px rgba(25,41,38,.24));
 }
}
@keyframes ngArlingtonSkyStar{
  0%,100%{opacity:.94;filter:drop-shadow(0 5px 5px rgba(12,35,64,.22))}
  50%{opacity:1;filter:drop-shadow(0 6px 10px rgba(12,35,64,.38))}
}
@keyframes ngArlingtonBallFlight{
  0%,100%{transform:translate(0,0) rotate(-13deg)}
  25%{transform:translate(35px,-20px) rotate(5deg)}
  50%{transform:translate(100px,-32px) rotate(23deg)}
  75%{transform:translate(148px,-15px) rotate(40deg)}
}
@media(prefers-reduced-motion:reduce){
 .ngcity .ngcp-signature-scene.ngcp-type-stadium .ngcp-cowboys-sky-star,
 .ngcity .ngcp-signature-scene.ngcp-type-stadium .ngcp-arlington-football{
   animation:none!important;
 }
}


