*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: 'Plus Jakarta Sans', sans-serif;
  color: #0F172A;
  background: #fff;
}

img { display: block; }

a { text-decoration: none; color: inherit; }

/* Offset anchor targets so the sticky nav doesn't cover section tops */
section[id] { scroll-margin-top: 84px; }

@keyframes floatUp {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}
@keyframes floatRight {
  0%, 100% { transform: translateY(0) rotate(-3deg); }
  50% { transform: translateY(-8px) rotate(2deg); }
}
@keyframes pulse {
  0%, 100% { transform: scale(1); opacity: 0.6; }
  50% { transform: scale(1.15); opacity: 1; }
}
@keyframes slideMarquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
@keyframes countUp {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes iconSpin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
@keyframes dataStream {
  from { stroke-dashoffset: 40; }
  to { stroke-dashoffset: 0; }
}

/* Subtle hover lift on cards */
.kv-card { transition: transform .2s ease, box-shadow .2s ease; }
.kv-card:hover { transform: translateY(-4px); }

/* Clickable text affordances */
.kv-link { cursor: pointer; transition: color .15s ease; }
.kv-link:hover { color: #1B3FA0; }

.kv-btn { cursor: pointer; transition: transform .15s ease, box-shadow .15s ease; }
.kv-btn:hover { transform: translateY(-2px); }

/* ── Responsive: collapse the desktop grids on smaller screens ── */
@media (max-width: 980px) {
  .kv-cols-2, .kv-cols-3, .kv-cols-4 { grid-template-columns: 1fr !important; }
  .kv-gap-lg { gap: 40px !important; }
  .kv-hero-visual { display: none !important; }
  .kv-pad { padding-left: 22px !important; padding-right: 22px !important; }
  .kv-nav-links { display: none !important; }
  .kv-span-2 { grid-column: auto !important; }
}

@media (max-width: 640px) {
  .kv-cols-4 { grid-template-columns: 1fr 1fr !important; }
  h1 { font-size: 36px !important; }
}
