/* v947 – Lebendiges Dorf (reduziert): glitzerndes Wasser.
   Alle Elemente liegen im 1600x900-Dorfkoordinatensystem über dem Hintergrund
   und unter den Klickzonen; sie fangen keine Klicks ab. */
#villageLifeV944 {
  position: absolute;
  inset: 0;
  z-index: 1;
  overflow: hidden;
  pointer-events: none;
}
#villageLifeV944 * { pointer-events: none; }
#villageScene[aria-hidden="true"] #villageLifeV944 { display: none; }

/* ---------- Glitzerndes Wasser ---------- */
.vl-sparkle-v944 {
  position: absolute;
  width: 14px;
  height: 14px;
  margin: -7px 0 0 -7px;
  opacity: 0;
  background:
    linear-gradient(transparent 45%, #fff 45%, #fff 55%, transparent 55%),
    linear-gradient(90deg, transparent 45%, #fff 45%, #fff 55%, transparent 55%);
  border-radius: 50%;
  filter: drop-shadow(0 0 3px rgba(190, 240, 255, .95));
  animation: vlTwinkleV944 var(--dur, 2.4s) ease-in-out infinite;
  animation-delay: var(--delay, 0s);
}
.vl-sparkle-v944.dot {
  width: 5px;
  height: 5px;
  margin: -2.5px 0 0 -2.5px;
  background: #fff;
}
/* Fluss dezenter: kleiner und schwächer */
.vl-sparkle-v944.river { --peak: .72; }
.vl-sparkle-v944.river:not(.dot) { width: 11px; height: 11px; margin: -5.5px 0 0 -5.5px; }
@keyframes vlTwinkleV944 {
  0%, 62%, 100% { opacity: 0; transform: scale(.3) rotate(0deg); }
  72% { opacity: var(--peak, .95); transform: scale(1) rotate(25deg); }
  84% { opacity: calc(var(--peak, .95) * .35); transform: scale(.7) rotate(45deg); }
}
.vl-spray-v944 {
  position: absolute;
  width: 4px;
  height: 4px;
  margin: -2px 0 0 -2px;
  border-radius: 50%;
  background: #dff8ff;
  box-shadow: 0 0 4px rgba(170, 230, 255, .9);
  opacity: 0;
  animation: vlSprayV944 var(--dur, 1.6s) ease-out infinite;
  animation-delay: var(--delay, 0s);
}
@keyframes vlSprayV944 {
  0% { opacity: 0; transform: translate(0, 0); }
  12% { opacity: .95; }
  50% { transform: translate(calc(var(--dx) * .6), -26px); }
  100% { opacity: 0; transform: translate(var(--dx), 4px); }
}
.vl-mist-v944 {
  position: absolute;
  width: 70px;
  height: 34px;
  margin: -17px 0 0 -35px;
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(255, 255, 255, .6), rgba(255, 255, 255, 0) 70%);
  animation: vlMistV944 3.2s ease-in-out infinite;
}
@keyframes vlMistV944 {
  0%, 100% { opacity: .35; transform: scale(.9); }
  50% { opacity: .75; transform: scale(1.12); }
}

/* ---------- Fackeln am Wildnis-Tor ---------- */
.vl-fire-glow-v947 {
  position: absolute;
  width: 90px;
  height: 90px;
  margin: -45px 0 0 -45px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 205, 100, .7) 0, rgba(255, 150, 40, .38) 30%, rgba(255, 120, 20, 0) 70%);
  animation: vlFireGlowV947 4.2s ease-in-out infinite;
}
@keyframes vlFireGlowV947 {
  0%, 100% { opacity: .8; transform: scale(1); }
  30% { opacity: 1; transform: scale(1.05); }
  55% { opacity: .72; transform: scale(.97); }
  80% { opacity: .92; transform: scale(1.02); }
}
.vl-fire-tongue-v947 {
  position: absolute;
  width: 14px;
  height: 24px;
  margin: -24px 0 0 -7px;
  border-radius: 50% 50% 45% 45% / 65% 65% 35% 35%;
  background: radial-gradient(ellipse at 50% 75%, rgba(255, 250, 200, .95) 0, rgba(255, 200, 70, .85) 35%, rgba(255, 120, 20, .55) 65%, rgba(255, 90, 0, 0) 100%);
  transform-origin: 50% 100%;
  animation: vlFlameV947 2s ease-in-out infinite;
}
@keyframes vlFlameV947 {
  0%, 100% { transform: scale(1, 1) skewX(0deg); opacity: .8; }
  25% { transform: scale(.95, 1.08) skewX(-3deg); opacity: .9; }
  50% { transform: scale(1.03, .96) skewX(2deg); opacity: .78; }
  75% { transform: scale(.97, 1.05) skewX(3deg); opacity: .88; }
}
.vl-ember-v947 {
  position: absolute;
  width: 3px;
  height: 3px;
  margin: -1.5px 0 0 -1.5px;
  border-radius: 50%;
  background: #ffd36b;
  box-shadow: 0 0 4px 1px rgba(255, 150, 40, .9);
  opacity: 0;
  animation: vlEmberV947 var(--dur, 2s) ease-out infinite;
  animation-delay: var(--delay, 0s);
}
@keyframes vlEmberV947 {
  0% { opacity: 0; transform: translate(0, 0); }
  15% { opacity: 1; }
  100% { opacity: 0; transform: translate(var(--dx, 0), -32px); }
}

/* ---------- Blaue Kristall-Laterne ---------- */
.vl-crystal-glow-v947,
.vl-crystal-core-v947 {
  position: absolute;
  border-radius: 50%;
  opacity: 0;
}
.vl-crystal-glow-v947 {
  width: 120px;
  height: 120px;
  margin: -60px 0 0 -60px;
  background: radial-gradient(circle, rgba(140, 225, 255, .75) 0, rgba(60, 170, 255, .38) 28%, rgba(40, 140, 255, 0) 68%);
}
.vl-crystal-core-v947 {
  width: 26px;
  height: 32px;
  margin: -16px 0 0 -13px;
  background: radial-gradient(ellipse, rgba(235, 252, 255, .95) 0, rgba(150, 230, 255, .7) 40%, rgba(80, 190, 255, 0) 75%);
}
.vl-crystal-glow-v947.pulse { animation: vlCrystalGlowV947 2.4s ease-in-out; }
.vl-crystal-core-v947.pulse { animation: vlCrystalCoreV947 2.4s ease-in-out; }
@keyframes vlCrystalGlowV947 {
  0% { opacity: 0; transform: scale(.6); }
  35% { opacity: 1; transform: scale(1.1); }
  55% { opacity: .85; transform: scale(1); }
  100% { opacity: 0; transform: scale(1.25); }
}
@keyframes vlCrystalCoreV947 {
  0% { opacity: 0; }
  30% { opacity: 1; }
  60% { opacity: .8; }
  100% { opacity: 0; }
}

/* ---------- Boot schaukelt ganz leicht ---------- */
.vl-boat-v955 {
  position: absolute;
  background-repeat: no-repeat;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  animation: vlBoatV955 5.5s ease-in-out infinite;
}
@keyframes vlBoatV955 {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-.5px) rotate(.35deg); }
  50% { transform: translateY(.3px) rotate(0deg); }
  75% { transform: translateY(-.3px) rotate(-.35deg); }
}

@media (prefers-reduced-motion: reduce) {
  .vl-sparkle-v944, .vl-spray-v944, .vl-mist-v944,
  .vl-fire-glow-v947, .vl-fire-tongue-v947, .vl-ember-v947,
  .vl-crystal-glow-v947, .vl-crystal-core-v947, .vl-boat-v955 { animation: none !important; }
}

/* ---------- v980: Wasserfall ---------- */
.vl-fall-v980 {
  position: absolute;
  overflow: hidden;
  /* Form des Wasserfalls: oben etwas schmaler (Abbruchkante), unten breiter */
  clip-path: polygon(14% 0, 100% 0, 96% 100%, 0 100%);
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 12%, #000 86%, transparent 100%);
  mask-image: linear-gradient(180deg, transparent 0, #000 12%, #000 86%, transparent 100%);
}
.vl-fall-v980 i {
  position: absolute;
  top: 0;
  width: 2px;
  border-radius: 2px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(235, 250, 255, .95) 55%, rgba(255, 255, 255, 0));
  animation: vlFallV980 var(--dur, 1s) linear infinite;
  animation-delay: var(--delay, 0s);
}
@keyframes vlFallV980 {
  0% { transform: translateY(-24px); }
  100% { transform: translateY(70px); }
}
.vl-foam-v980 {
  position: absolute;
  width: 12px;
  height: 6px;
  margin: -3px 0 0 -6px;
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(255, 255, 255, .9) 0, rgba(230, 248, 255, .5) 50%, rgba(255, 255, 255, 0) 75%);
  animation: vlFoamV980 var(--dur, 1.4s) ease-in-out infinite;
  animation-delay: var(--delay, 0s);
}
@keyframes vlFoamV980 {
  0%, 100% { opacity: .25; transform: scale(.7); }
  50% { opacity: .9; transform: scale(1.25); }
}
@media (prefers-reduced-motion: reduce) {
  .vl-fall-v980 i, .vl-foam-v980 { animation: none !important; }
}

/* ---------- v990: Brunnen am Marktplatz ---------- */
.vl-fwater-v990 {
  position: absolute;
  width: 58px;
  height: 22px;
  margin: -11px 0 0 -29px;
  border-radius: 50%;
  overflow: hidden;
}
.vl-fwater-v990 i {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 58px;
  height: 22px;
  margin: -11px 0 0 -29px;
  border-radius: 50%;
  border: 2px solid rgba(225, 248, 255, .85);
  box-shadow: 0 0 3px rgba(170, 230, 255, .6);
  box-sizing: border-box;
  opacity: 0;
  animation: vlRippleV990 4.8s ease-out infinite;
}
@keyframes vlRippleV990 {
  0% { opacity: 0; transform: scale(.35); }
  18% { opacity: .8; }
  100% { opacity: 0; transform: scale(1); }
}
.vl-fwater-v990 b {
  position: absolute;
  inset: -4px -30px;
  background: linear-gradient(100deg, transparent 35%, rgba(230, 250, 255, .36) 48%, transparent 60%);
  animation: vlShimmerV990 6.5s ease-in-out infinite;
}
@keyframes vlShimmerV990 {
  0% { transform: translateX(-40px); }
  50% { transform: translateX(40px); }
  100% { transform: translateX(-40px); }
}
.vl-gemwrap-v990 {
  position: absolute;
  animation: vlGemFloatV990 4.6s ease-in-out infinite;
}
@keyframes vlGemFloatV990 {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}
.vl-gem-v990 {
  position: absolute;
  inset: 0;
  background-repeat: no-repeat;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
}
.vl-gem-v990.shine { animation: vlGemShineV990 2.6s ease-in-out; }
@keyframes vlGemShineV990 {
  0%, 100% { filter: brightness(1) saturate(1); }
  40% { filter: brightness(1.45) saturate(1.2); }
  60% { filter: brightness(1.3) saturate(1.15); }
}
.vl-fglow-v990 {
  position: absolute;
  width: 110px;
  height: 110px;
  margin: -55px 0 0 -55px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(150, 230, 255, .7) 0, rgba(70, 180, 255, .32) 30%, rgba(40, 140, 255, 0) 68%);
  opacity: 0;
}
.vl-fglow-v990.shine { animation: vlFGlowV990 2.6s ease-in-out; }
@keyframes vlFGlowV990 {
  0% { opacity: 0; transform: scale(.7); }
  40% { opacity: .9; transform: scale(1.05); }
  60% { opacity: .75; transform: scale(1); }
  100% { opacity: 0; transform: scale(1.15); }
}
@media (prefers-reduced-motion: reduce) {
  .vl-fwater-v990 i, .vl-fwater-v990 b, .vl-gemwrap-v990, .vl-gem-v990.shine, .vl-fglow-v990.shine { animation: none !important; }
}
