/* ============================================================
   ScooterDoc Widerruf – Extra Micro-Animations
   Auto-included via frontend.css @import (or enqueued separately)
   ============================================================ */

/* Shake (validation error feedback) */
@keyframes sdwShake {
  0%, 100% { transform: translateX(0); }
  15%       { transform: translateX(-6px); }
  30%       { transform: translateX(6px); }
  45%       { transform: translateX(-4px); }
  60%       { transform: translateX(4px); }
  75%       { transform: translateX(-2px); }
  90%       { transform: translateX(2px); }
}

.sdw-shake {
  animation: sdwShake .45s cubic-bezier(.36,.07,.19,.97) both;
}

/* Pulse (draw attention to button) */
@keyframes sdwPulse {
  0%   { box-shadow: 0 0 0 0 rgba(230, 57, 70, .4); }
  70%  { box-shadow: 0 0 0 12px rgba(230, 57, 70, 0); }
  100% { box-shadow: 0 0 0 0 rgba(230, 57, 70, 0); }
}

.sdw-btn-withdraw {
  animation: sdwPulse 2.5s ease-in-out 1s 2;
}

/* Ripple click effect */
.sdw-btn-withdraw,
.sdw-btn-submit {
  position: relative;
  overflow: hidden;
}

.sdw-ripple {
  position: absolute;
  border-radius: 50%;
  background: rgba(255, 255, 255, .35);
  transform: scale(0);
  animation: sdwRipple .55s linear;
  pointer-events: none;
}

@keyframes sdwRipple {
  to { transform: scale(4); opacity: 0; }
}

/* SVG Checkmark draw animation */
@keyframes sdwDrawCheck {
  to { stroke-dashoffset: 0; }
}

.sdw-success__icon svg circle {
  stroke-dasharray: 166;
  stroke-dashoffset: 166;
  animation: sdwDrawCheck .6s cubic-bezier(.65, 0, .45, 1) .3s forwards;
}

.sdw-success__icon svg path {
  stroke-dasharray: 48;
  stroke-dashoffset: 48;
  animation: sdwDrawCheck .3s cubic-bezier(.65, 0, .45, 1) .8s forwards;
}

/* Slide-down for form alerts */
@keyframes sdwSlideDown {
  from { opacity: 0; max-height: 0; padding-top: 0; padding-bottom: 0; }
  to   { opacity: 1; max-height: 80px; }
}

.sdw-form__alert {
  animation: sdwSlideDown .2s ease forwards;
  overflow: hidden;
}

/* Spinner animation */
@keyframes sdwSpin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

.sdw-spinner {
  animation: sdwSpin .9s linear infinite;
}

/* Days bar fill */
@keyframes sdwFillBar {
  from { width: 0; }
}

.sdw-days-bar__fill {
  animation: sdwFillBar .8s cubic-bezier(.4, 0, .2, 1) .3s both;
}

/* Badge pop-in */
@keyframes sdwPopIn {
  0%   { opacity: 0; transform: scale(.6); }
  80%  { transform: scale(1.08); }
  100% { opacity: 1; transform: scale(1); }
}

.sdw-badge {
  animation: sdwPopIn .35s cubic-bezier(.34, 1.56, .64, 1) both;
}

/* Stat card number count-up (JS handles values, CSS just shows element) */
.sdw-stat-card__num {
  display: block;
  will-change: contents;
}

/* Admin table row hover */
.sdw-admin-table tbody tr {
  transition: background .12s ease;
}

/* Filter tab transition */
.sdw-filter-tab {
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}

/* Modal scrollbar */
.sdw-modal {
  scrollbar-width: thin;
  scrollbar-color: #e5e7eb transparent;
}
