.plant-card {
  position: relative;
  overflow: hidden;
  transition: transform .25s ease, box-shadow .25s ease;
}
.plant-card:hover {
  transform: translateY(-2px);
}
.plant-card .ring-glow {
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  background: linear-gradient(135deg, var(--accent) 0%, transparent 60%);
  opacity: 0;
  transition: opacity .25s ease;
  pointer-events: none;
}
.plant-card:hover .ring-glow {
  opacity: .12;
}

.status-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 9999px;
  box-shadow: 0 0 0 3px rgba(255,255,255,.8);
}
.status-due { background: #ef4444; animation: pulse 1.8s ease-in-out infinite; }
.status-soon { background: #f59e0b; }
.status-ok { background: #22c55e; }

@keyframes pulse {
  0%, 100% { box-shadow: 0 0 0 3px rgba(255,255,255,.85), 0 0 0 0 rgba(239,68,68,.6); }
  50% { box-shadow: 0 0 0 3px rgba(255,255,255,.85), 0 0 0 8px rgba(239,68,68,0); }
}

.toast-enter { opacity: 0; transform: translateY(8px); }
.toast-enter-active { opacity: 1; transform: translateY(0); transition: all .25s ease; }
.toast-exit-active { opacity: 0; transform: translateY(8px); transition: all .25s ease; }

.skeleton {
  background: linear-gradient(90deg, #f1f5f4 0%, #e7eeec 50%, #f1f5f4 100%);
  background-size: 200% 100%;
  animation: shimmer 1.2s linear infinite;
}
@keyframes shimmer {
  to { background-position: -200% 0; }
}

select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23166534'%3E%3Cpath fill-rule='evenodd' d='M5.23 7.21a.75.75 0 011.06.02L10 11.06l3.71-3.83a.75.75 0 111.08 1.04l-4.25 4.39a.75.75 0 01-1.08 0L5.21 8.27a.75.75 0 01.02-1.06z' clip-rule='evenodd'/%3E%3C/svg%3E");
  background-position: right .55rem center;
  background-repeat: no-repeat;
  background-size: 1.1em;
  padding-right: 2rem;
  appearance: none;
}
