/* ============================================================
   Base — Minimalist + Flat, professional
   Shared tokens + motion utilities
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@300;400;500;600;700&family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&display=swap');

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: 'Inter', system-ui, sans-serif;
  font-feature-settings: 'ss01' on, 'cv11' on;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
button { font-family: inherit; cursor: pointer; }
a { color: inherit; }

/* ===== App shell ===== */
.v2-shell { min-height: 100vh; background: #f5f5f4; color: #0a0a0a; }

/* ===== Reveal-on-scroll utility ===== */
.reveal {
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.7s cubic-bezier(.2,.6,.2,1), transform 0.7s cubic-bezier(.2,.6,.2,1);
}
.reveal.in {
  opacity: 1;
  transform: translateY(0);
}
.reveal.d1 { transition-delay: 0.06s; }
.reveal.d2 { transition-delay: 0.12s; }
.reveal.d3 { transition-delay: 0.18s; }
.reveal.d4 { transition-delay: 0.24s; }

/* Slow draw-in for an accent line */
@keyframes drawLine {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}
.draw-line { transform-origin: left; animation: drawLine 1.2s cubic-bezier(.2,.6,.2,1) both; }

/* Subtle count-up cue (just a fade-up; CSS only) */
@keyframes statRise {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.stat-rise { animation: statRise 0.6s cubic-bezier(.2,.6,.2,1) both; }

/* Page-fade when switching internal pages */
.v2-page-fade {
  animation: pageFade 0.35s cubic-bezier(.2,.6,.2,1) both;
}
@keyframes pageFade {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: translateY(0); }
}
