/* ── Base Reset ── */
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { font-family: 'DM Sans', sans-serif; background: #060e1a; color: #e2e8f0; overflow-x: hidden; }

/* ── Keyframes ── */
@keyframes fadeUp { from { opacity: 0; transform: translateY(40px); } to { opacity: 1; transform: translateY(0); } }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }
@keyframes shimmer { 0% { background-position: -200% center; } 100% { background-position: 200% center; } }
@keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 20px rgba(1,128,245,0.15); } 50% { box-shadow: 0 0 40px rgba(1,128,245,0.3); } }
@keyframes slide-in-right { from { opacity: 0; transform: translateX(60px); } to { opacity: 1; transform: translateX(0); } }

/* ── Animation Utility Classes ── */
.animate-fade-up { animation: fadeUp 0.8s ease-out forwards; opacity: 0; }
.animate-fade-in { animation: fadeIn 0.6s ease-out forwards; opacity: 0; }
.animate-float { animation: float 6s ease-in-out infinite; }
.animate-slide-right { animation: slide-in-right 0.8s ease-out forwards; opacity: 0; }
.delay-100 { animation-delay: 0.1s; }
.delay-200 { animation-delay: 0.2s; }
.delay-300 { animation-delay: 0.3s; }
.delay-400 { animation-delay: 0.4s; }
.delay-500 { animation-delay: 0.5s; }
.delay-600 { animation-delay: 0.6s; }
.delay-700 { animation-delay: 0.7s; }

/* ── Gradient Text ── */
.gradient-text {
  background: linear-gradient(135deg, #ffffff 0%, #0180f5 50%, #22c55e 100%);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent;
  background-clip: text;
}
.shimmer-text {
  background: linear-gradient(90deg, #e2e8f0 0%, #0180f5 25%, #22c55e 50%, #0180f5 75%, #e2e8f0 100%);
  background-size: 200% auto;
  -webkit-background-clip: text; -webkit-text-fill-color: transparent;
  animation: shimmer 4s linear infinite;
}

/* ── Glass Effects ── */
.glass { background: rgba(15, 33, 55, 0.6); backdrop-filter: blur(20px); border: 1px solid rgba(255,255,255,0.06); }
.glass-light { background: rgba(255,255,255,0.03); backdrop-filter: blur(12px); border: 1px solid rgba(255,255,255,0.05); }

/* ── Background Patterns ── */
.grid-bg {
  background-image: linear-gradient(rgba(1,128,245,0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(1,128,245,0.04) 1px, transparent 1px);
  background-size: 60px 60px;
}
.dot-pattern {
  background-image: radial-gradient(circle, rgba(1,128,245,0.08) 1px, transparent 1px);
  background-size: 30px 30px;
}

/* ── Glow Effects ── */
.glow-blue { position: absolute; border-radius: 50%; background: radial-gradient(circle, rgba(1,128,245,0.15), transparent 70%); pointer-events: none; }
.glow-green { position: absolute; border-radius: 50%; background: radial-gradient(circle, rgba(34,197,94,0.08), transparent 70%); pointer-events: none; }

/* ── Card Styles ── */
.feature-card { transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); }
.feature-card:hover { transform: translateY(-4px); border-color: rgba(1,128,245,0.3); box-shadow: 0 20px 60px rgba(1,128,245,0.1); }

/* ── Button Styles ── */
.btn-cta {
  background: linear-gradient(135deg, #0180f5, #0166d4);
  transition: all 0.3s ease;
  box-shadow: 0 4px 20px rgba(1,128,245,0.3);
}
.btn-cta:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 30px rgba(1,128,245,0.4);
}

/* ── Nav Styles ── */
.nav-scrolled { background: rgba(6,14,26,0.9); backdrop-filter: blur(20px); border-bottom: 1px solid rgba(255,255,255,0.05); }

/* ── Stat Number ── */
.stat-number { font-variant-numeric: tabular-nums; }

/* ── Workflow Connector ── */
.workflow-connector { position: relative; }
.workflow-connector::after {
  content: '';
  position: absolute;
  top: 50%;
  right: -1.5rem;
  width: 3rem;
  height: 2px;
  background: linear-gradient(90deg, rgba(1,128,245,0.4), rgba(34,197,94,0.4));
}
@media (max-width: 767px) {
  .workflow-connector::after { display: none; }
}

/* ── Advanced Scroll Animations ── */
@keyframes slideInLeft { from { opacity: 0; transform: translateX(-60px); } to { opacity: 1; transform: translateX(0); } }
@keyframes slideInRight { from { opacity: 0; transform: translateX(60px); } to { opacity: 1; transform: translateX(0); } }
@keyframes scaleIn { from { opacity: 0; transform: scale(0.85); } to { opacity: 1; transform: scale(1); } }
@keyframes rotateIn { from { opacity: 0; transform: rotate(-5deg) scale(0.9); } to { opacity: 1; transform: rotate(0) scale(1); } }
@keyframes blurIn { from { opacity: 0; filter: blur(10px); transform: translateY(20px); } to { opacity: 1; filter: blur(0); transform: translateY(0); } }
@keyframes counterUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }

/* ── Reveal Variants ── */
.reveal { opacity: 0; transform: translateY(40px); transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.reveal.visible { opacity: 1; transform: translateY(0); }

.reveal-left { opacity: 0; transform: translateX(-60px); transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.reveal-left.visible { opacity: 1; transform: translateX(0); }

.reveal-right { opacity: 0; transform: translateX(60px); transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.reveal-right.visible { opacity: 1; transform: translateX(0); }

.reveal-scale { opacity: 0; transform: scale(0.85); transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.reveal-scale.visible { opacity: 1; transform: scale(1); }

.reveal-blur { opacity: 0; filter: blur(10px); transform: translateY(20px); transition: all 0.9s cubic-bezier(0.16, 1, 0.3, 1); }
.reveal-blur.visible { opacity: 1; filter: blur(0); transform: translateY(0); }

.reveal-rotate { opacity: 0; transform: rotate(-3deg) translateY(30px); transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.reveal-rotate.visible { opacity: 1; transform: rotate(0) translateY(0); }

/* ── Stagger Children ── */
.stagger-children > * { opacity: 0; transform: translateY(25px); transition: all 0.6s cubic-bezier(0.16, 1, 0.3, 1); }
.stagger-children.visible > *:nth-child(1) { transition-delay: 0s; opacity: 1; transform: translateY(0); }
.stagger-children.visible > *:nth-child(2) { transition-delay: 0.08s; opacity: 1; transform: translateY(0); }
.stagger-children.visible > *:nth-child(3) { transition-delay: 0.08s; opacity: 1; transform: translateY(0); }
.stagger-children.visible > *:nth-child(4) { transition-delay: 0.24s; opacity: 1; transform: translateY(0); }
.stagger-children.visible > *:nth-child(5) { transition-delay: 0.32s; opacity: 1; transform: translateY(0); }
.stagger-children.visible > *:nth-child(6) { transition-delay: 0.4s; opacity: 1; transform: translateY(0); }
.stagger-children.visible > *:nth-child(7) { transition-delay: 0.48s; opacity: 1; transform: translateY(0); }
.stagger-children.visible > *:nth-child(8) { transition-delay: 0.56s; opacity: 1; transform: translateY(0); }
.stagger-children.visible > *:nth-child(9) { transition-delay: 0.64s; opacity: 1; transform: translateY(0); }
.stagger-children.visible > *:nth-child(10) { transition-delay: 0.72s; opacity: 1; transform: translateY(0); }
.stagger-children.visible > *:nth-child(11) { transition-delay: 0.8s; opacity: 1; transform: translateY(0); }
.stagger-children.visible > *:nth-child(12) { transition-delay: 0.88s; opacity: 1; transform: translateY(0); }

/* ── Parallax Glow ── */
.parallax-glow { transition: transform 0.3s ease-out; }

/* ── Counter Animation ── */
.count-up { font-variant-numeric: tabular-nums; }

/* ── Progress Bar ── */
.progress-reveal { width: 0; transition: width 1.5s cubic-bezier(0.16, 1, 0.3, 1); }
.progress-reveal.visible { width: 100%; }

/* ── Hover Lift ── */
.hover-lift { transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1); }
.hover-lift:hover { transform: translateY(-8px); box-shadow: 0 25px 60px rgba(1,128,245,0.15); }

/* ── Particle System ── */
.particles { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.particle { position: absolute; border-radius: 50%; opacity: 0; animation: particleFloat linear infinite; }
@keyframes particleFloat {
  0% { opacity: 0; transform: translateY(100vh) scale(0); }
  10% { opacity: 0.6; }
  90% { opacity: 0.6; }
  100% { opacity: 0; transform: translateY(-100px) scale(1); }
}

/* ── Scroll Progress Bar ── */
.scroll-progress { position: fixed; top: 0; left: 0; height: 3px; background: linear-gradient(90deg, #0180f5, #22c55e); z-index: 9999; width: 0; }

/* ── 3D Tilt Card ── */
.tilt-card { transform-style: preserve-3d; }

/* ── Typing Cursor ── */
.typing-cursor::after { content: '|'; animation: blink 0.8s infinite; color: #0180f5; font-weight: 300; }
@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }

/* ── Gradient Border Spin ── */
@property --angle { syntax: '<angle>'; initial-value: 0deg; inherits: false; }
.gradient-border { position: relative; }
.gradient-border::before { content: ''; position: absolute; inset: -2px; border-radius: inherit; background: conic-gradient(from var(--angle), #0180f5, #22c55e, #8b5cf6, #0180f5); z-index: -1; opacity: 0; transition: opacity 0.5s; }
.gradient-border:hover::before { opacity: 1; animation: rotateBorder 3s linear infinite; }
@keyframes rotateBorder { to { --angle: 360deg; } }
