:root {
  /* Brand — blue (Tailwind blue-600 family) */
  --color-brand: #2563eb;
  --color-brand-hover: #1d4ed8;
  --color-brand-muted: #eaf1ff;
  --color-brand-rgb: 37, 99, 235;

  /* Hero — Stripe-style deep blue gradient */
  --hero-navy: #0a1a4a;
  --hero-indigo: #0f2a8f;
  --hero-blue: #1d4ed8;
  --hero-glow: #3b68fc;

  /* Surfaces */
  --color-bg: #f3f5f7;
  --color-surface: #ffffff;
  --color-border: #d8dee6;
  --color-border-strong: #b8c2ce;

  /* Text */
  --color-text: #15202b;
  --color-text-secondary: #4b5968;
  --color-text-muted: #6b7785;
  --color-on-brand: #ffffff;

  /* Semantic */
  --color-success: #1a7f4f;
  --color-warning: #b45309;
  --color-error: #c0392b;
  --color-info: #1d6fa5;

  /* Ad slot */
  --color-ad-bg: #eef1f4;
  --color-ad-label: #8a95a3;

  /* Typography */
  --font-sans: system-ui, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;
  --text-display: 2.25rem;
  --text-h1: 1.75rem;
  --text-h2: 1.375rem;
  --text-h3: 1.125rem;
  --text-body: 1rem;
  --text-caption: 0.875rem;
  --text-result-xl: 2rem;
  --leading-tight: 1.25;
  --leading-body: 1.6;

  /* Layout */
  --content-max: 1160px;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
  --radius: 8px;
  --radius-sm: 6px;
  --header-h: 56px;
  --shadow-sm: 0 1px 2px rgba(21, 32, 43, 0.06);
  --shadow-card-hover: 0 10px 28px -8px rgba(21, 32, 43, 0.18), 0 2px 6px rgba(21, 32, 43, 0.06);

  /* Ad heights */
  --ad-h-mobile: 100px;
  --ad-h-desktop: 90px;
}

@media (min-width: 768px) {
  :root {
    --text-display: 2.75rem;
    --text-h1: 2rem;
    --text-result-xl: 2.25rem;
    --header-h: 64px;
  }
}
