:root {
    --color-primary: #2f7df6;
    --color-primary-strong: #1f62d6;
    --color-primary-soft: #dcecff;
    --color-secondary: #5d7db7;
    --color-success: #2d8a57;
    --color-success-soft: rgba(45, 138, 87, 0.1);
    --color-warning: #d97706;
    --color-warning-soft: rgba(217, 119, 6, 0.12);
    --color-reward: #c88118;
    --color-reward-soft: rgba(243, 178, 60, 0.16);
    --color-neutral-accent: #5f6f84;
    --color-neutral-accent-soft: rgba(95, 111, 132, 0.12);
    --color-danger: #d14d63;
    --color-danger-soft: rgba(209, 77, 99, 0.1);
    --color-text: #14294b;
    --color-text-muted: #4d647d;
    --color-text-soft: #60748f;
    --color-background-page: #f4f8ff;
    --color-background-soft: #edf4ff;
    --color-background-soft-2: #f7fbff;
    --color-surface: #ffffff;
    --color-surface-soft: #f7fbff;
    --color-surface-muted: #eef3f8;
    --color-line: #d7e6f7;
    --color-line-strong: #bfd8f5;
    --color-focus: #0d56c8;

    --space-xs: 4px;
    --space-sm: 8px;
    --space-md: 16px;
    --space-lg: 24px;
    --space-xl: 32px;
    --space-2xl: 40px;

    --font-body: "Inter", sans-serif;
    --font-brand: "Plus Jakarta Sans", sans-serif;
    --font-heading: "Sora", "Plus Jakarta Sans", "Inter", sans-serif;
    --font-size-xs: 0.75rem;
    --font-size-sm: 0.875rem;
    --font-size-base: 1rem;
    --font-size-lg: 1.125rem;
    --font-size-xl: 1.25rem;
    --font-size-2xl: 1.5rem;
    --font-weight-regular: 400;
    --font-weight-medium: 500;
    --font-weight-semibold: 600;
    --font-weight-bold: 700;
    --font-weight-extrabold: 800;
    --line-height-tight: 1.1;
    --line-height-snug: 1.35;
    --line-height-body: 1.65;
    --line-height-relaxed: 1.8;

    --shadow-elevation-soft: 0 8px 22px rgba(22, 55, 112, 0.06);
    --shadow-elevation-medium: 0 14px 38px rgba(30, 80, 159, 0.08);
    --shadow-elevation-strong: 0 24px 70px rgba(78, 119, 191, 0.13);

    --radius-sm: 12px;
    --radius-md: 18px;
    --radius-lg: 24px;
    --radius-xl: 28px;
    --radius-pill: 999px;
    --border-width-thin: 1px;
    --border-width-thick: 2px;

    --breakpoint-phone: 320px;
    --breakpoint-mobile: 480px;
    --breakpoint-tablet: 768px;
    --breakpoint-desktop: 1024px;
    --breakpoint-wide: 1280px;

    --page-max: 1100px;
    --page-max-wide: 1140px;
    --page-gutter-mobile: 16px;
    --page-gutter-desktop: 32px;
    --page-font-body: var(--font-body);
    --page-font-heading: var(--font-heading);
    --transition-fast: 0.18s ease;
    --transition-base: 0.22s ease;

    --bg: var(--color-background-page);
    --bg-soft: var(--color-background-soft);
    --surface: var(--color-surface);
    --surface-soft: var(--color-surface-soft);
    --text: var(--color-text);
    --text-muted: var(--color-text-muted);
    --text-soft: var(--color-text-soft);
    --primary: var(--color-primary);
    --primary-strong: var(--color-primary-strong);
    --primary-soft: var(--color-primary-soft);
    --line: var(--color-line);
    --line-strong: var(--color-line-strong);
    --success: var(--color-success);
    --success-soft: var(--color-success-soft);
    --warning: var(--color-warning);
    --warning-soft: var(--color-warning-soft);
    --reward: var(--color-reward);
    --reward-soft: var(--color-reward-soft);
    --neutral-accent: var(--color-neutral-accent);
    --neutral-accent-soft: var(--color-neutral-accent-soft);
    --danger: var(--color-danger);
    --danger-soft: var(--color-danger-soft);
    --muted-fill: var(--color-surface-muted);
    --shadow-soft: var(--shadow-elevation-soft);
    --shadow: var(--shadow-elevation-medium);
    --shadow-strong: var(--shadow-elevation-strong);
    --focus-ring: var(--color-focus);
}

body.theme-landing,
body.exam-page {
    --page-font-body: var(--font-brand);
    --page-font-heading: var(--font-heading);
}
