/* BANUA Environmental Lab — functional motion only.
   Animation visual muncul saat learner berinteraksi / simulasi berjalan. */

.sim-running {
  box-shadow: 0 0 0 2px rgba(63,125,93,.09), var(--shadow-2, 0 8px 24px rgba(40,60,46,.08));
}

.run-state {
  animation: statePulse 1.8s ease-in-out infinite;
}

.text-enter {
  animation: textRise .38s cubic-bezier(.2,.72,.2,1) both;
}

.alert-pop {
  animation: alertPop .34s ease both;
}

.chart-draw {
  animation: chartIn .45s ease both;
}

.marker-blink {
  animation: markerBlink 1.4s ease-in-out infinite;
}

.water-flow {
  stroke-dasharray: 10 9;
  animation: waterFlow .7s linear infinite;
}

.rain-streak {
  animation: rainFall .55s linear infinite;
}

@keyframes statePulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(63,125,93,0); }
  50% { box-shadow: 0 0 0 5px rgba(63,125,93,.08); }
}

@keyframes textRise {
  from { opacity: 0; transform: translateY(5px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes alertPop {
  from { opacity: 0; transform: translateY(4px) scale(.98); }
  to { opacity: 1; transform: none; }
}

@keyframes chartIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes markerBlink {
  0%, 100% { opacity: .45; }
  50% { opacity: 1; }
}

@keyframes waterFlow {
  to { stroke-dashoffset: -38; }
}

@keyframes rainFall {
  from { opacity: .1; transform: translateY(-5px); }
  to { opacity: .7; transform: translateY(15px); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
}
