* { margin: 0; padding: 0; box-sizing: border-box; }

::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: rgba(15, 23, 42, 0.5); }
::-webkit-scrollbar-thumb { background: rgba(99, 102, 241, 0.4); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: rgba(99, 102, 241, 0.7); }

.taildrop-gradient {
  background: linear-gradient(135deg, #818cf8, #6366f1, #a78bfa, #7c3aed);
  background-size: 300% 300%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: gradientShift 4s ease-in-out infinite;
}

@keyframes gradientShift {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}

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

@keyframes slideInLeft {
  from { opacity: 0; transform: translateX(-16px); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes pulseGlow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(99, 102, 241, 0); }
  50% { box-shadow: 0 0 20px 4px rgba(99, 102, 241, 0.15); }
}

@keyframes toastIn {
  from { opacity: 0; transform: translateX(100%); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes toastOut {
  from { opacity: 1; transform: translateX(0); }
  to { opacity: 0; transform: translateX(100%); }
}

.fade-in-up { animation: fadeInUp 0.3s ease-out forwards; }
.slide-in-left { animation: slideInLeft 0.25s ease-out forwards; }
.pulse-glow { animation: pulseGlow 2s ease-in-out infinite; }

.comp-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.comp-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 0 0 1px rgba(99, 102, 241, 0.5), 0 4px 12px rgba(99, 102, 241, 0.15);
}

.canvas-component {
  transition: box-shadow 0.15s ease, transform 0.15s ease;
  position: relative;
}
.canvas-component:hover {
  box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.3);
}
.canvas-component.selected {
  box-shadow: 0 0 0 2px #6366f1, 0 0 16px rgba(99, 102, 241, 0.2);
}

.drag-over {
  background: rgba(99, 102, 241, 0.05);
  box-shadow: inset 0 0 0 2px rgba(99, 102, 241, 0.4);
}

.empty-canvas-pattern {
  background-image: radial-gradient(circle, rgba(99, 102, 241, 0.08) 1px, transparent 1px);
  background-size: 24px 24px;
}

.panel-transition {
  transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease;
}

.toast-enter { animation: toastIn 0.3s ease-out forwards; }
.toast-exit { animation: toastOut 0.3s ease-in forwards; }

.code-block {
  tab-size: 2;
  -moz-tab-size: 2;
}

.drop-indicator {
  height: 3px;
  background: linear-gradient(90deg, transparent, #6366f1, transparent);
  border-radius: 2px;
  margin: 2px 0;
  transition: opacity 0.15s ease;
}