/* Base */
:root {
  --gov-blue: #003366;
  --gov-blue-light: #0066cc;
  --gov-blue-deep: #0a1f3d;
  --gov-accent: #00aaff;
  --gov-red: #c62828;
  --gov-red-dark: #b71c1c;
  --gov-green: #0a7d3a;
}

html { -webkit-tap-highlight-color: transparent; scroll-behavior: smooth; }
body {
  font-family: 'Inter', 'Source Sans 3', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  color: #1a1a1a;
  background: #fff;
}

/* Animations */
@keyframes v0-fade-in {
  from { opacity: 0; } to { opacity: 1; }
}
@keyframes v0-slide-up {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes v0-scale-in {
  from { opacity: 0; transform: scale(0.96) translateY(8px); }
  to { opacity: 1; transform: scale(1) translateY(0); }
}
@keyframes v0-soft-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(234, 67, 53, 0.45); }
  50% { box-shadow: 0 0 0 14px rgba(234, 67, 53, 0); }
}
@keyframes v0-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
@keyframes v0-pulse-soft {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

.animate-fade-in    { animation: v0-fade-in 280ms ease-out both; }
.animate-slide-up   { animation: v0-slide-up 360ms cubic-bezier(0.22, 1, 0.36, 1) both; }
.animate-scale-in   { animation: v0-scale-in 320ms cubic-bezier(0.22, 1, 0.36, 1) both; }
.animate-soft-pulse { animation: v0-soft-pulse 2.4s ease-out infinite; }
.animate-spin       { animation: v0-spin 1s linear infinite; }
.animate-pulse      { animation: v0-pulse-soft 2s ease-in-out infinite; }

/* Premium shadows */
.shadow-soft {
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 4px 12px rgba(15, 23, 42, 0.06);
}
.shadow-soft-xl {
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 12px 32px rgba(15, 23, 42, 0.10), 0 32px 64px -16px rgba(15, 23, 42, 0.16);
}
.shadow-card-hero {
  box-shadow: 0 14px 36px -12px rgba(10, 31, 61, 0.22);
}
.shadow-cta-red {
  box-shadow: 0 6px 16px -4px rgba(198, 40, 40, 0.45);
}
.shadow-cta-red:hover {
  box-shadow: 0 8px 20px -4px rgba(198, 40, 40, 0.55);
}
.shadow-cta-blue {
  box-shadow: 0 1px 2px rgba(66, 133, 244, 0.18), 0 10px 24px -8px rgba(66, 133, 244, 0.40);
}
.shadow-modal {
  box-shadow: 0 25px 60px -15px rgba(0, 0, 0, 0.25);
}

/* Text balance */
.text-balance { text-wrap: balance; }
.text-pretty { text-wrap: pretty; }

/* Selection */
::selection { background-color: rgba(66, 133, 244, 0.18); color: #1a1a1a; }

/* Focus reset for mouse users */
:focus:not(:focus-visible) { outline: none; box-shadow: none !important; }

/* Spinner ring for loaders */
.spinner-ring {
  border: 4px solid rgba(0, 51, 102, 0.1);
  border-top-color: #003366;
  border-radius: 9999px;
  animation: v0-spin 1s linear infinite;
}
.spinner-ring.green {
  border-color: rgba(34, 197, 94, 0.1);
  border-top-color: #16a34a;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}
