/* ============================================================
   GRITAP AI - Animations & Transitions
   ============================================================ */

/* === KEYFRAMES === */
@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.6; transform: scale(0.9); }
}

@keyframes scrollLine {
  0% { transform: scaleY(0); transform-origin: top; opacity: 1; }
  50% { transform: scaleY(1); transform-origin: top; opacity: 1; }
  100% { transform: scaleY(1); transform-origin: bottom; opacity: 0; }
}

@keyframes bounceIn {
  0% { transform: scale(0.3); opacity: 0; }
  50% { transform: scale(1.1); opacity: 0.8; }
  70% { transform: scale(0.95); }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes typingBounce {
  0%, 60%, 100% { transform: translateY(0); }
  30% { transform: translateY(-8px); }
}

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

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

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

@keyframes slideInRight {
  from { opacity: 0; transform: translateX(40px); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-12px); }
}

@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

@keyframes rotate {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

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

@keyframes glowPulse {
  0%, 100% { box-shadow: 0 0 20px rgba(78, 212, 198, 0.1); }
  50% { box-shadow: 0 0 40px rgba(78, 212, 198, 0.3); }
}

@keyframes drawLine {
  from { stroke-dashoffset: 100; }
  to { stroke-dashoffset: 0; }
}

@keyframes particleFloat {
  0% { transform: translateY(0) rotate(0deg); opacity: 1; }
  100% { transform: translateY(-100vh) rotate(360deg); opacity: 0; }
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

/* === SCROLL REVEAL BASE === */
.reveal {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.7s cubic-bezier(0.4, 0, 0.2, 1), transform 0.7s cubic-bezier(0.4, 0, 0.2, 1);
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}
.reveal-left {
  opacity: 0;
  transform: translateX(-40px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal-left.visible { opacity: 1; transform: translateX(0); }
.reveal-right {
  opacity: 0;
  transform: translateX(40px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal-right.visible { opacity: 1; transform: translateX(0); }

/* Stagger delays */
.delay-1 { transition-delay: 0.1s !important; }
.delay-2 { transition-delay: 0.2s !important; }
.delay-3 { transition-delay: 0.3s !important; }
.delay-4 { transition-delay: 0.4s !important; }
.delay-5 { transition-delay: 0.5s !important; }

/* === HERO LINE REVEAL === */
.line-reveal {
  opacity: 0;
  transform: translateY(24px);
  animation: fadeInUp 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
  animation-delay: 0.2s;
}
.line-reveal.delay-1 { animation-delay: 0.4s; }
.line-reveal.delay-2 { animation-delay: 0.6s; }
.line-reveal.delay-3 { animation-delay: 0.8s; }
.line-reveal.delay-4 { animation-delay: 1.0s; }

/* === FLOATING ELEMENTS === */
.float-animate {
  animation: float 6s ease-in-out infinite;
}
.about-float-card {
  animation: float 4s ease-in-out infinite;
}

/* === GLOW EFFECTS === */
.glow-card:hover {
  animation: glowPulse 2s ease-in-out infinite;
}

/* === LOADING SPINNER === */
.spinner {
  width: 20px;
  height: 20px;
  border: 2px solid rgba(255,255,255,0.3);
  border-top-color: #fff;
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
  display: inline-block;
}

.spinner-green {
  border-color: rgba(78, 212, 198, 0.2);
  border-top-color: #4ed4c6;
}

/* === PAGE TRANSITION === */
.page-transition {
  animation: fadeIn 0.4s ease;
}

/* === GRADIENT TEXT ANIMATION === */
.gradient-text-anim {
  background: linear-gradient(90deg, #4ed4c6, #006755, #4ed4c6);
  background-size: 200% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: shimmer 3s linear infinite;
}

/* === COUNTER ANIMATION === */
.counter-animate {
  animation: counterUp 0.5s ease forwards;
}

/* === PARTICLE CANVAS === */
#heroCanvas {
  animation: fadeIn 2s ease forwards;
}

/* === MOBILE MENU ANIMATION === */
.hamburger.open span:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); }
.hamburger.open span:nth-child(2) { opacity: 0; transform: translateX(-10px); }
.hamburger.open span:nth-child(3) { transform: rotate(-45deg) translate(5px, -5px); }

/* === BLOG CARD IMAGE ZOOM === */
.blog-card-image { overflow: hidden; }
.blog-card-image img {
  transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}
.blog-card:hover .blog-card-image img {
  transform: scale(1.08);
}

/* === FEATURE CARD HOVER BORDER === */
.feature-card {
  position: relative;
  overflow: hidden;
}
.feature-card::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(135deg, transparent, rgba(78,212,198,0.3), transparent);
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity: 0;
  transition: opacity 0.3s ease;
  pointer-events: none;
}
.feature-card:hover::before { opacity: 1; }

/* === SMOOTH TRANSITION FOR THEME === */
body, .navbar, .footer, .feature-card, .blog-card, .donate-card,
.newsletter-form-area, .chatbot-panel, .submenu {
  transition: background 0.4s ease, color 0.4s ease, border-color 0.4s ease;
}

/* === CUSTOM SCROLLBAR === */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: var(--primary); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--accent); }

/* === SELECTION === */
::selection { background: rgba(78, 212, 198, 0.25); color: var(--accent); }
