/* ── Buttons ── */
.btn {
  display: inline-flex; align-items: center; gap: 0.4rem;
  padding: 0.6rem 1.25rem; border-radius: var(--radius-sm);
  font-size: 0.9375rem; font-weight: 600; cursor: pointer;
  border: 1.5px solid transparent;
  transition: all 0.2s ease; text-decoration: none; white-space: nowrap;
}
.btn:active { transform: translateY(0) !important; }
.btn-primary { background: var(--primary); color: #fff; border-color: var(--primary); }
.btn-primary:hover { background: var(--primary-dark); border-color: var(--primary-dark); transform: translateY(-1px); box-shadow: 0 4px 14px rgba(79,70,229,0.3); }
.btn-ghost { background: transparent; color: var(--text-muted); border-color: transparent; }
.btn-ghost:hover { color: var(--text); background: var(--bg-subtle); }
.btn-outline { background: transparent; color: var(--text); border-color: var(--border); }
.btn-outline:hover { border-color: var(--primary); color: var(--primary); }
.btn-lg { padding: 0.875rem 2rem; font-size: 1rem; border-radius: var(--radius); }

/* ── Badges ── */
.badge {
  display: inline-flex; align-items: center; gap: 0.3rem;
  padding: 0.2rem 0.6rem; border-radius: 100px;
  font-size: 0.75rem; font-weight: 600; white-space: nowrap;
}
.badge-success { background: var(--success-light); color: #065f46; }
.badge-warning { background: var(--warning-light); color: #92400e; }
.badge-primary { background: var(--primary-light); color: var(--primary); }
.badge-purple { background: var(--purple-light); color: var(--purple); }
.badge-pending { background: #fef3c7; color: #92400e; }

/* ── Section helpers ── */
.section-label {
  display: inline-block; font-size: 0.75rem; font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--primary); margin-bottom: 0.5rem;
}
.section-title {
  font-size: clamp(1.5rem, 3vw, 2rem); font-weight: 700;
  letter-spacing: -0.025em; line-height: 1.2; margin-bottom: 0.75rem;
}
.section-sub { font-size: 1rem; color: var(--text-muted); line-height: 1.7; max-width: 540px; }
.section-header { margin-bottom: 3rem; }
.section-header.centered { text-align: center; }
.section-header.centered .section-sub { margin: 0 auto; }

/* ── Reveal — progressive enhancement ── */
/* Without JS: all elements visible (no opacity:0 in CSS).
   JS adds .js-reveal to <html>, which hides .reveal elements.
   IntersectionObserver (+ timeout fallback) then adds .visible. */
.reveal { transition: opacity 0.55s ease, transform 0.55s ease; }
html.js-reveal .reveal { opacity: 0; transform: translateY(20px); }
.reveal.visible { opacity: 1 !important; transform: translateY(0) !important; }
.reveal-d1 { transition-delay: 0.1s; }
.reveal-d2 { transition-delay: 0.2s; }
.reveal-d3 { transition-delay: 0.3s; }
.reveal-d4 { transition-delay: 0.4s; }

@media (prefers-color-scheme: dark) {
  .badge-success { color: #34d399; }
  .badge-warning { color: #fbbf24; }
  .badge-pending { background: rgba(245,158,11,0.15); color: #fbbf24; }
  .badge-primary { color: #818cf8; }
  .badge-purple  { color: #a78bfa; }
}
