* { box-sizing: border-box; margin: 0; padding: 0; }
body { overflow-x: hidden; }

@keyframes pulse-border {
  0%, 100% { border-color: rgba(20, 184, 166, 0.3); }
  50% { border-color: rgba(20, 184, 166, 0.8); }
}
@keyframes glow-blue { 0%,100%{ box-shadow: 0 0 8px rgba(59,130,246,0.3); } 50%{ box-shadow: 0 0 24px rgba(59,130,246,0.7); } }
@keyframes glow-purple { 0%,100%{ box-shadow: 0 0 8px rgba(139,92,246,0.3); } 50%{ box-shadow: 0 0 24px rgba(139,92,246,0.7); } }
@keyframes glow-amber { 0%,100%{ box-shadow: 0 0 8px rgba(245,158,11,0.3); } 50%{ box-shadow: 0 0 24px rgba(245,158,11,0.7); } }

.pulse-border { animation: pulse-border 2s ease-in-out infinite; }
.glow-blue { animation: glow-blue 2s ease-in-out infinite; }
.glow-purple { animation: glow-purple 2s ease-in-out infinite; }
.glow-amber { animation: glow-amber 2s ease-in-out infinite; }

@keyframes typewriter { from { width: 0; } to { width: 100%; } }
@keyframes blink-caret { 0%,100% { border-color: transparent; } 50% { border-color: #14B8A6; } }

@keyframes stamp-slam {
  0% { transform: scale(3) rotate(-15deg); opacity: 0; }
  60% { transform: scale(1) rotate(0deg); opacity: 1; }
  70% { transform: scale(1.1) rotate(1deg); }
  100% { transform: scale(1) rotate(0deg); opacity: 1; }
}
.stamp-animate { animation: stamp-slam 0.5s cubic-bezier(0.36, 0.07, 0.19, 0.97) forwards; }

@keyframes confetti-fall {
  0% { transform: translateY(-100vh) rotate(0deg); opacity: 1; }
  100% { transform: translateY(100vh) rotate(720deg); opacity: 0; }
}
.confetti-piece {
  position: fixed;
  top: -10px;
  width: 10px;
  height: 10px;
  animation: confetti-fall 3s ease-in forwards;
  z-index: 9999;
  pointer-events: none;
}

@keyframes fade-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
.fade-in { animation: fade-in 0.5s ease-out forwards; }

@keyframes slide-up { from { opacity:0; transform: translateY(20px); } to { opacity:1; transform: translateY(0); } }
.slide-up { animation: slide-up 0.4s ease-out forwards; }

.gradient-line {
  height: 2px;
  background: linear-gradient(90deg, #3B82F6, #14B8A6, #8B5CF6, #F59E0B);
}

.dropzone-idle { border: 2px dashed rgba(20,184,166,0.4); }
.dropzone-hover { border: 2px solid #14B8A6; box-shadow: 0 0 30px rgba(20,184,166,0.3); }

.glass { background: rgba(30,41,59,0.7); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }

.scrollbar-thin::-webkit-scrollbar { width: 4px; }
.scrollbar-thin::-webkit-scrollbar-track { background: transparent; }
.scrollbar-thin::-webkit-scrollbar-thumb { background: #475569; border-radius: 4px; }

@keyframes progress-fill { from { width: 0%; } }
.progress-fill { animation: progress-fill 0.6s ease-out; }

.code-line-appear { animation: fade-in 0.15s ease-out forwards; opacity: 0; }

@keyframes spin { to { transform: rotate(360deg); } }
.spinner { animation: spin 1s linear infinite; }

@media print {
  body { background: white !important; color: black !important; }
  .no-print { display: none !important; }
}