/* Individual painted-grass layer: one canvas inside .painting, before .sky-veil.
   Own file (grass worker). Parent includes with <link rel="stylesheet" href="grass.css">.
   The live canvas paints above the base landscapes but below the sky veil and the
   night wash (.painting::after), so it inherits the same day/night tint as the base.
   Static PNG crops (.grass-fallback) show only until grass-data.json is ready. */

.grass-live, .terrain-live, .river-live {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  user-select: none;
}

/* Static fallback: transparent edge crops of the original painting, same geometry
   as the base .landscape stretch (shares the mobile 140% .painting frame). */
.grass-fallback {
  position: absolute;
  pointer-events: none;
  user-select: none;
}

.grass-fallback.golden { opacity: 1; transition: opacity 1.8s ease; }
.grass-fallback.evening { opacity: 0; transition: opacity 1.8s ease; }
.world.is-evening .grass-fallback.golden { opacity: 0; }
.world.is-evening .grass-fallback.evening { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  .grass-fallback { transition: none !important; }
}
