/* ============================================
   DeGids Design Tokens
   Material Design 2 Dark Theme compliant.
   Elevation = lighter surfaces (white overlay).
   Contrast ratios: WCAG AA minimum 4.5:1.
   ============================================ */

:root {
  /* ── Typography ── */
  --font-heading: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace;

  /* Type scale — fluid clamp for responsive */
  --text-display: clamp(36px, 5vw, 56px);
  --lh-display: 1.15;
  --fw-display: 800;

  --text-h1: clamp(28px, 4vw, 40px);
  --lh-h1: 1.2;
  --fw-h1: 700;

  --text-h2: clamp(22px, 3vw, 32px);
  --lh-h2: 1.25;
  --fw-h2: 700;

  --text-h3: clamp(18px, 2.5vw, 24px);
  --lh-h3: 1.3;
  --fw-h3: 600;

  --text-h4: clamp(16px, 2vw, 20px);
  --lh-h4: 1.35;
  --fw-h4: 600;

  --text-body: 16px;
  --lh-body: 1.6;
  --fw-body: 400;

  --text-small: 14px;
  --lh-small: 1.5;

  --text-caption: 12px;
  --lh-caption: 1.4;

  --text-overline: 11px;
  --lh-overline: 1.5;
  --fw-overline: 600;
  --ls-overline: 0.08em;

  /* ── Spacing (4pt base, 8pt grid) ── */
  --space-0: 0;
  --space-px: 1px;
  --space-0-5: 2px;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-7: 32px;
  --space-8: 40px;
  --space-9: 48px;
  --space-10: 56px;
  --space-11: 64px;
  --space-12: 80px;
  --space-13: 96px;
  --space-14: 128px;

  /* ── Border Radii ── */
  --radius-xs: 4px;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  --radius-full: 9999px;

  /* ── Motion (Material standard) ── */
  --dur-fast: 100ms;
  --dur-normal: 200ms;
  --dur-slow: 300ms;
  --dur-modal: 400ms;
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-decelerate: cubic-bezier(0, 0, 0.2, 1);
  --ease-accelerate: cubic-bezier(0.4, 0, 1, 1);
  --ease-in: cubic-bezier(0.4, 0, 1, 1);
  --ease-out: cubic-bezier(0, 0, 0.2, 1);
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);

  /* ── Layout ── */
  --container-max: 1600px;
  --container-content: 1280px;
  --container-narrow: 800px;
  --gutter: clamp(16px, 4vw, 32px);

  /* ── Z-index scale ── */
  --z-base: 0;
  --z-dropdown: 100;
  --z-sticky: 200;
  --z-fixed: 300;
  --z-overlay: 400;
  --z-modal: 500;
  --z-toast: 600;
  --z-max: 9999;
}

/* ============================================
   DARK THEME — Material Design 2 Compliant
   
   Surface elevation via white overlay:
   0dp  = #121212 (background)
   1dp  = 5% white overlay  → #1E1E1E
   2dp  = 7% white overlay  → #222222
   3dp  = 8% white overlay  → #242424
   4dp  = 9% white overlay  → #272727
   6dp  = 11% white overlay → #2C2C2C
   8dp  = 12% white overlay → #2E2E2E
   12dp = 14% white overlay → #333333
   16dp = 15% white overlay → #353535
   24dp = 16% white overlay → #383838
   
   Text on dark: High=87% (#DEDEDE), Med=60% (#9E9E9E), Low=38% (#616161)
   Primary: Desaturated for dark surfaces (200 tone)
   Error: #CF6679 (desaturated Material error)
   ============================================ */

[data-theme="dark"] {
  color-scheme: dark;

  /* ── SAITS Brand Colors (matching saits.online screenshot) ── */
  --color-primary: #A855F7;
  --color-primary-hover: #C084FC;
  --color-primary-active: #9333EA;
  --color-primary-subtle: rgba(168, 85, 247, 0.14);
  --color-primary-muted: rgba(168, 85, 247, 0.40);
  --color-on-primary: #FFFFFF;

  --color-secondary: #06B6D4;
  --color-secondary-hover: #22D3EE;
  --color-secondary-subtle: rgba(6, 182, 212, 0.14);
  --color-on-secondary: #121212;

  --color-accent: #F472B6;
  --color-accent-subtle: rgba(244, 114, 182, 0.14);

  /* ── SAITS Orange CTA (from screenshot) ── */
  --color-orange: #F97316;
  --color-orange-hover: #FB923C;
  --color-orange-active: #EA580C;
  --color-orange-subtle: rgba(249, 115, 22, 0.16);
  --color-orange-muted: rgba(249, 115, 22, 0.45);

  /* ── Step card colors (from screenshot: orange, purple, teal) ── */
  --color-step-1: #F97316;
  --color-step-2: #A855F7;
  --color-step-3: #14B8A6;

  /* ── Topic-tinted block backgrounds (Material: color with accents) ── */
  --block-tint-opacity: 0.10;
  --block-tint-strong: 0.16;
  --block-border-tint: 0.20;

  /* ── Semantic Colors ── */
  --color-success: #66BB6A;
  --color-success-subtle: rgba(102, 187, 106, 0.12);
  --color-warning: #FFA726;
  --color-warning-subtle: rgba(255, 167, 38, 0.12);
  --color-error: #CF6679;
  --color-error-subtle: rgba(207, 102, 121, 0.12);
  --color-info: #64B5F6;
  --color-info-subtle: rgba(100, 181, 246, 0.12);

  /* ── Surfaces (SAITS deep navy from screenshot) ── */
  --surface-bg: #0B0F1A;
  --surface-01dp: #111827;
  --surface-02dp: #151C2C;
  --surface-03dp: #1A2236;
  --surface-04dp: #1E2740;
  --surface-06dp: #243049;
  --surface-08dp: #283752;
  --surface-12dp: #30405E;
  --surface-16dp: #374968;
  --surface-24dp: #3F5275;

  /* Semantic surface aliases */
  --surface-card: var(--surface-01dp);
  --surface-card-hover: var(--surface-04dp);
  --surface-elevated: var(--surface-03dp);
  --surface-nav: var(--surface-08dp);
  --surface-dialog: var(--surface-24dp);
  --surface-tooltip: var(--surface-16dp);
  --surface-input: var(--surface-01dp);
  --surface-input-hover: var(--surface-03dp);

  /* ── Borders (boosted visibility) ── */
  --surface-border: rgba(255, 255, 255, 0.15);
  --surface-border-subtle: rgba(255, 255, 255, 0.08);
  --surface-border-strong: rgba(255, 255, 255, 0.24);
  --surface-divider: rgba(255, 255, 255, 0.10);

  /* ── Text (WCAG AA boosted) ── */
  --text-primary: rgba(255, 255, 255, 0.92);
  --text-secondary: rgba(255, 255, 255, 0.72);
  --text-muted: rgba(255, 255, 255, 0.62);
  --text-disabled: rgba(255, 255, 255, 0.30);
  --text-inverse: #121212;
  --text-on-primary: #121212;
  --text-link: var(--color-primary);
  --text-link-hover: var(--color-primary-hover);

  /* ── Shadows (softer for dark theme) ── */
  --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.5);
  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.5), 0 1px 2px rgba(0, 0, 0, 0.4);
  --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.4), 0 2px 4px rgba(0, 0, 0, 0.3);
  --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.4), 0 4px 6px rgba(0, 0, 0, 0.3);
  --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.5), 0 8px 10px rgba(0, 0, 0, 0.3);
  --shadow-glow: 0 0 24px rgba(168, 85, 247, 0.20);
  --shadow-glow-sm: 0 0 12px rgba(168, 85, 247, 0.12);
  --shadow-glow-orange: 0 0 20px rgba(249, 115, 22, 0.25);
  --shadow-glow-teal: 0 0 20px rgba(20, 184, 166, 0.20);

  /* ── Overlays (boosted hover) ── */
  --overlay-scrim: rgba(0, 0, 0, 0.60);
  --overlay-hover: rgba(255, 255, 255, 0.06);
  --overlay-focus: rgba(255, 255, 255, 0.10);
  --overlay-pressed: rgba(255, 255, 255, 0.14);
  --overlay-selected: rgba(168, 85, 247, 0.10);
  --overlay-dragged: rgba(255, 255, 255, 0.16);

  /* ── Gradients (SAITS screenshot style — vivid accents on dark) ── */
  --gradient-hero: linear-gradient(135deg, #1E1B4B 0%, #312E81 25%, #4338CA 50%, #0E7490 75%, #0F766E 100%);
  --gradient-cta: linear-gradient(135deg, #F97316 0%, #FB923C 100%);
  --gradient-cta-hover: linear-gradient(135deg, #EA580C 0%, #F97316 100%);
  --gradient-purple: linear-gradient(135deg, #7C3AED 0%, #A855F7 50%, #C084FC 100%);
  --gradient-surface: linear-gradient(180deg, #0B0F1A 0%, #111827 100%);
  --gradient-card: linear-gradient(145deg, var(--surface-02dp) 0%, var(--surface-01dp) 100%);
  --gradient-accent: linear-gradient(135deg, #A855F7 0%, #06B6D4 100%);
  --gradient-step-1: linear-gradient(135deg, #F97316 0%, #FB923C 100%);
  --gradient-step-2: linear-gradient(135deg, #7C3AED 0%, #A855F7 100%);
  --gradient-step-3: linear-gradient(135deg, #0D9488 0%, #14B8A6 100%);

  /* ── Section accent backgrounds (dark: subtle color wash) ── */
  --section-accent-purple: linear-gradient(135deg, rgba(124,58,237,0.08) 0%, rgba(168,85,247,0.04) 100%);
  --section-accent-orange: linear-gradient(135deg, rgba(249,115,22,0.08) 0%, rgba(251,146,60,0.04) 100%);
  --section-accent-teal: linear-gradient(135deg, rgba(20,184,166,0.08) 0%, rgba(6,182,212,0.04) 100%);
  --section-accent-pink: linear-gradient(135deg, rgba(236,72,153,0.08) 0%, rgba(244,114,182,0.04) 100%);
  --section-accent-blue: linear-gradient(135deg, rgba(59,130,246,0.08) 0%, rgba(96,165,250,0.04) 100%);

  /* ── Scrollbar ── */
  --scrollbar-track: transparent;
  --scrollbar-thumb: rgba(255, 255, 255, 0.15);
  --scrollbar-thumb-hover: rgba(255, 255, 255, 0.25);

  /* ── Focus ring ── */
  --focus-ring: 0 0 0 2px var(--surface-bg), 0 0 0 4px var(--color-primary);
}

/* ============================================
   LIGHT THEME — Material Design 2 Compliant
   
   Surface elevation via shadow (not color).
   Background: #FAFAFA (slightly warm grey)
   Surface: #FFFFFF
   Text: High=87% on white (#212121), Med=60% (#666666)
   Primary: Full saturation on light surfaces
   ============================================ */

[data-theme="light"] {
  color-scheme: light;

  /* ── SAITS Brand Colors (vibrant purple/magenta) ── */
  --color-primary: #7C3AED;
  --color-primary-hover: #6D28D9;
  --color-primary-active: #5B21B6;
  --color-primary-subtle: rgba(124, 58, 237, 0.10);
  --color-primary-muted: rgba(124, 58, 237, 0.28);
  --color-on-primary: #FFFFFF;

  --color-secondary: #0891B2;
  --color-secondary-hover: #0E7490;
  --color-secondary-subtle: rgba(8, 145, 178, 0.10);
  --color-on-secondary: #FFFFFF;

  --color-accent: #DB2777;
  --color-accent-subtle: rgba(219, 39, 119, 0.10);

  /* ── Semantic Colors ── */
  --color-success: #2E7D32;
  --color-success-subtle: rgba(46, 125, 50, 0.08);
  --color-warning: #E65100;
  --color-warning-subtle: rgba(230, 81, 0, 0.08);
  --color-error: #B00020;
  --color-error-subtle: rgba(176, 0, 32, 0.08);
  --color-info: #1565C0;
  --color-info-subtle: rgba(21, 101, 192, 0.08);

  /* ── Surfaces (warm tinted for vibrancy) ── */
  --surface-bg: #F8F7FC;
  --surface-01dp: #FFFFFF;
  --surface-02dp: #FAFAFF;
  --surface-03dp: #F5F3FF;
  --surface-04dp: #F0EDFF;
  --surface-06dp: #EBE8FF;
  --surface-08dp: #E8E4FF;
  --surface-12dp: #E2DEFF;
  --surface-16dp: #DDD8FF;
  --surface-24dp: #D8D2FF;

  /* Semantic surface aliases */
  --surface-card: #FFFFFF;
  --surface-card-hover: #F5F3FF;
  --surface-elevated: #FAFAFF;
  --surface-nav: rgba(255,255,255,0.92);
  --surface-dialog: #FFFFFF;
  --surface-tooltip: #4A3580;
  --surface-input: #FFFFFF;
  --surface-input-hover: #F8F7FC;

  /* ── Topic-tinted block backgrounds (light: stronger tints) ── */
  --block-tint-opacity: 0.07;
  --block-tint-strong: 0.12;
  --block-border-tint: 0.18;

  /* ── Borders ── */
  --surface-border: rgba(0, 0, 0, 0.12);
  --surface-border-subtle: rgba(0, 0, 0, 0.06);
  --surface-border-strong: rgba(0, 0, 0, 0.20);
  --surface-divider: rgba(0, 0, 0, 0.08);

  /* ── Text ── */
  --text-primary: rgba(0, 0, 0, 0.87);
  --text-secondary: rgba(0, 0, 0, 0.60);
  --text-muted: rgba(0, 0, 0, 0.46);
  --text-disabled: rgba(0, 0, 0, 0.25);
  --text-inverse: #FFFFFF;
  --text-on-primary: #FFFFFF;
  --text-link: var(--color-primary);
  --text-link-hover: var(--color-primary-hover);

  /* ── Shadows (visible on light) ── */
  --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.06);
  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.10), 0 1px 2px rgba(0, 0, 0, 0.06);
  --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.06);
  --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.10), 0 4px 6px rgba(0, 0, 0, 0.05);
  --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.10), 0 8px 10px rgba(0, 0, 0, 0.04);
  --shadow-glow: 0 0 24px rgba(124, 58, 237, 0.12);
  --shadow-glow-sm: 0 0 12px rgba(124, 58, 237, 0.08);

  /* ── Overlays ── */
  --overlay-scrim: rgba(0, 0, 0, 0.32);
  --overlay-hover: rgba(0, 0, 0, 0.04);
  --overlay-focus: rgba(0, 0, 0, 0.08);
  --overlay-pressed: rgba(0, 0, 0, 0.12);
  --overlay-selected: rgba(124, 58, 237, 0.10);
  --overlay-dragged: rgba(0, 0, 0, 0.16);

  /* ── Gradients (vibrant for light theme) ── */
  --gradient-hero: linear-gradient(135deg, #7C3AED 0%, #A855F7 30%, #EC4899 70%, #F472B6 100%);
  --gradient-cta: linear-gradient(135deg, #7C3AED 0%, #A855F7 50%, #EC4899 100%);
  --gradient-cta-hover: linear-gradient(135deg, #6D28D9 0%, #7C3AED 100%);
  --gradient-surface: linear-gradient(180deg, #F8F7FC 0%, #EDE9FE 100%);
  --gradient-card: linear-gradient(145deg, #FFFFFF 0%, #F5F3FF 100%);
  --gradient-accent: linear-gradient(135deg, #7C3AED 0%, #0891B2 100%);
  --gradient-step-1: linear-gradient(135deg, #F97316 0%, #FB923C 100%);
  --gradient-step-2: linear-gradient(135deg, #7C3AED 0%, #A855F7 100%);
  --gradient-step-3: linear-gradient(135deg, #0D9488 0%, #14B8A6 100%);

  /* ── Section accent backgrounds (light: visible color wash) ── */
  --section-accent-purple: linear-gradient(135deg, rgba(124,58,237,0.06) 0%, rgba(168,85,247,0.02) 100%);
  --section-accent-orange: linear-gradient(135deg, rgba(249,115,22,0.06) 0%, rgba(251,146,60,0.02) 100%);
  --section-accent-teal: linear-gradient(135deg, rgba(20,184,166,0.06) 0%, rgba(6,182,212,0.02) 100%);
  --section-accent-pink: linear-gradient(135deg, rgba(236,72,153,0.06) 0%, rgba(244,114,182,0.02) 100%);
  --section-accent-blue: linear-gradient(135deg, rgba(59,130,246,0.06) 0%, rgba(96,165,250,0.02) 100%);

  --shadow-glow-orange: 0 0 20px rgba(249, 115, 22, 0.15);

  /* ── Scrollbar ── */
  --scrollbar-track: transparent;
  --scrollbar-thumb: rgba(0, 0, 0, 0.15);
  --scrollbar-thumb-hover: rgba(0, 0, 0, 0.30);

  /* ── Focus ring ── */
  --focus-ring: 0 0 0 2px #FFFFFF, 0 0 0 4px var(--color-primary);
}

/* ============================================
   AUTO THEME — System preference detection
   ============================================ */

@media (prefers-color-scheme: dark) {
  [data-theme="auto"] {
    color-scheme: dark;
    --color-primary: #A855F7;
    --color-primary-hover: #C084FC;
    --color-primary-active: #9333EA;
    --color-primary-subtle: rgba(168, 85, 247, 0.14);
    --color-primary-muted: rgba(168, 85, 247, 0.40);
    --color-on-primary: #FFFFFF;
    --color-secondary: #06B6D4;
    --color-secondary-hover: #22D3EE;
    --color-secondary-subtle: rgba(6, 182, 212, 0.14);
    --color-on-secondary: #121212;
    --color-accent: #F472B6;
    --color-accent-subtle: rgba(244, 114, 182, 0.14);
    --color-success: #66BB6A;
    --color-success-subtle: rgba(102, 187, 106, 0.12);
    --color-warning: #FFA726;
    --color-warning-subtle: rgba(255, 167, 38, 0.12);
    --color-error: #CF6679;
    --color-error-subtle: rgba(207, 102, 121, 0.12);
    --color-info: #64B5F6;
    --color-info-subtle: rgba(100, 181, 246, 0.12);
    --surface-bg: #0F0F1A;
    --surface-01dp: #1A1A2E;
    --surface-02dp: #1E1E33;
    --surface-03dp: #212137;
    --surface-04dp: #25253D;
    --surface-06dp: #2A2A45;
    --surface-08dp: #2E2E4A;
    --surface-12dp: #353550;
    --surface-16dp: #3A3A58;
    --surface-24dp: #404060;
    --surface-card: var(--surface-01dp);
    --surface-card-hover: var(--surface-04dp);
    --surface-elevated: var(--surface-03dp);
    --surface-nav: var(--surface-08dp);
    --surface-dialog: var(--surface-24dp);
    --surface-tooltip: var(--surface-16dp);
    --surface-input: var(--surface-01dp);
    --surface-input-hover: var(--surface-03dp);
    --surface-border: rgba(255, 255, 255, 0.15);
    --surface-border-subtle: rgba(255, 255, 255, 0.08);
    --surface-border-strong: rgba(255, 255, 255, 0.24);
    --surface-divider: rgba(255, 255, 255, 0.10);
    --text-primary: rgba(255, 255, 255, 0.92);
    --text-secondary: rgba(255, 255, 255, 0.72);
    --text-muted: rgba(255, 255, 255, 0.62);
    --text-disabled: rgba(255, 255, 255, 0.30);
    --text-inverse: #121212;
    --text-on-primary: #121212;
    --text-link: var(--color-primary);
    --text-link-hover: var(--color-primary-hover);
    --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.5);
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.5), 0 1px 2px rgba(0, 0, 0, 0.4);
    --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.4), 0 2px 4px rgba(0, 0, 0, 0.3);
    --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.4), 0 4px 6px rgba(0, 0, 0, 0.3);
    --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.5), 0 8px 10px rgba(0, 0, 0, 0.3);
    --shadow-glow: 0 0 24px rgba(168, 85, 247, 0.20);
    --shadow-glow-sm: 0 0 12px rgba(168, 85, 247, 0.12);
    --overlay-scrim: rgba(0, 0, 0, 0.60);
    --overlay-hover: rgba(255, 255, 255, 0.06);
    --overlay-focus: rgba(255, 255, 255, 0.10);
    --overlay-pressed: rgba(255, 255, 255, 0.14);
    --overlay-selected: rgba(168, 85, 247, 0.10);
    --overlay-dragged: rgba(255, 255, 255, 0.16);
    --gradient-hero: linear-gradient(135deg, #7C3AED 0%, #A855F7 30%, #EC4899 70%, #F472B6 100%);
    --gradient-cta: linear-gradient(135deg, #7C3AED 0%, #A855F7 50%, #EC4899 100%);
    --gradient-surface: linear-gradient(180deg, #0F0F1A 0%, #1A1A2E 100%);
    --gradient-card: linear-gradient(145deg, var(--surface-02dp) 0%, var(--surface-01dp) 100%);
    --gradient-accent: linear-gradient(135deg, #A855F7 0%, #06B6D4 100%);
    --scrollbar-track: transparent;
    --scrollbar-thumb: rgba(255, 255, 255, 0.15);
    --scrollbar-thumb-hover: rgba(255, 255, 255, 0.25);
    --focus-ring: 0 0 0 2px var(--surface-bg), 0 0 0 4px var(--color-primary);
  }
}

@media (prefers-color-scheme: light) {
  [data-theme="auto"] {
    color-scheme: light;
    --color-primary: #7C3AED;
    --color-primary-hover: #6D28D9;
    --color-primary-active: #5B21B6;
    --color-primary-subtle: rgba(124, 58, 237, 0.10);
    --color-primary-muted: rgba(124, 58, 237, 0.28);
    --color-on-primary: #FFFFFF;
    --color-secondary: #0891B2;
    --color-secondary-hover: #0E7490;
    --color-secondary-subtle: rgba(8, 145, 178, 0.10);
    --color-on-secondary: #FFFFFF;
    --color-accent: #DB2777;
    --color-accent-subtle: rgba(219, 39, 119, 0.10);
    --color-success: #2E7D32;
    --color-success-subtle: rgba(46, 125, 50, 0.08);
    --color-warning: #E65100;
    --color-warning-subtle: rgba(230, 81, 0, 0.08);
    --color-error: #B00020;
    --color-error-subtle: rgba(176, 0, 32, 0.08);
    --color-info: #1565C0;
    --color-info-subtle: rgba(21, 101, 192, 0.08);
    --surface-bg: #FAFAFA;
    --surface-01dp: #FFFFFF;
    --surface-02dp: #FFFFFF;
    --surface-03dp: #FFFFFF;
    --surface-04dp: #FFFFFF;
    --surface-06dp: #FFFFFF;
    --surface-08dp: #FFFFFF;
    --surface-12dp: #FFFFFF;
    --surface-16dp: #FFFFFF;
    --surface-24dp: #FFFFFF;
    --surface-card: #FFFFFF;
    --surface-card-hover: #F5F5F5;
    --surface-elevated: #FFFFFF;
    --surface-nav: #FFFFFF;
    --surface-dialog: #FFFFFF;
    --surface-tooltip: #616161;
    --surface-input: #FFFFFF;
    --surface-input-hover: #F5F5F5;
    --surface-border: rgba(0, 0, 0, 0.12);
    --surface-border-subtle: rgba(0, 0, 0, 0.06);
    --surface-border-strong: rgba(0, 0, 0, 0.20);
    --surface-divider: rgba(0, 0, 0, 0.08);
    --text-primary: rgba(0, 0, 0, 0.87);
    --text-secondary: rgba(0, 0, 0, 0.60);
    --text-muted: rgba(0, 0, 0, 0.46);
    --text-disabled: rgba(0, 0, 0, 0.25);
    --text-inverse: #FFFFFF;
    --text-on-primary: #FFFFFF;
    --text-link: var(--color-primary);
    --text-link-hover: var(--color-primary-hover);
    --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.06);
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.10), 0 1px 2px rgba(0, 0, 0, 0.06);
    --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.06);
    --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.10), 0 4px 6px rgba(0, 0, 0, 0.05);
    --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.10), 0 8px 10px rgba(0, 0, 0, 0.04);
    --shadow-glow: 0 0 24px rgba(124, 58, 237, 0.12);
    --shadow-glow-sm: 0 0 12px rgba(124, 58, 237, 0.08);
    --overlay-scrim: rgba(0, 0, 0, 0.32);
    --overlay-hover: rgba(0, 0, 0, 0.04);
    --overlay-focus: rgba(0, 0, 0, 0.08);
    --overlay-pressed: rgba(0, 0, 0, 0.12);
    --overlay-selected: rgba(124, 58, 237, 0.10);
    --overlay-dragged: rgba(0, 0, 0, 0.16);
    --gradient-hero: linear-gradient(135deg, #7C3AED 0%, #A855F7 30%, #EC4899 70%, #F472B6 100%);
    --gradient-cta: linear-gradient(135deg, #7C3AED 0%, #A855F7 50%, #EC4899 100%);
    --gradient-surface: linear-gradient(180deg, #FAFAFA 0%, #F3F0FF 100%);
    --gradient-card: linear-gradient(145deg, #FFFFFF 0%, #FAF5FF 100%);
    --gradient-accent: linear-gradient(135deg, #7C3AED 0%, #0891B2 100%);
    --scrollbar-track: transparent;
    --scrollbar-thumb: rgba(0, 0, 0, 0.15);
    --scrollbar-thumb-hover: rgba(0, 0, 0, 0.30);
    --focus-ring: 0 0 0 2px #FFFFFF, 0 0 0 4px var(--color-primary);
  }
}

/* ============================================
   Global base styles
   ============================================ */

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  scroll-behavior: smooth;
  font-size: 16px;
  tab-size: 4;
}

body {
  font-family: var(--font-body);
  font-size: var(--text-body);
  line-height: var(--lh-body);
  font-weight: var(--fw-body);
  color: var(--text-primary);
  background-color: var(--surface-bg);
  min-height: 100vh;
  overflow-x: hidden;
  transition: background-color var(--dur-slow) var(--ease-standard),
              color var(--dur-slow) var(--ease-standard);
}

/* Custom scrollbar */
::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

::-webkit-scrollbar-track {
  background: var(--scrollbar-track);
}

::-webkit-scrollbar-thumb {
  background: var(--scrollbar-thumb);
  border-radius: 4px;
}

::-webkit-scrollbar-thumb:hover {
  background: var(--scrollbar-thumb-hover);
}

/* Selection */
::selection {
  background: var(--color-primary-muted);
  color: var(--text-primary);
}

/* Focus visible */
:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

/* Links */
a {
  color: var(--text-link);
  text-decoration: none;
  transition: color var(--dur-fast) var(--ease-standard);
}

a:hover {
  color: var(--text-link-hover);
}

/* Images */
img, svg, video {
  display: block;
  max-width: 100%;
  height: auto;
}

/* Smooth theme transition for all surfaces */
.top-nav, .article-sidebar, .article-rsidebar, .rsidebar__section,
.toc, .author-box, .related-card, .share-btn, .article-card,
.topic-card, .sub-card, .footer, .ad {
  transition: background-color var(--dur-slow) var(--ease-standard),
              border-color var(--dur-slow) var(--ease-standard),
              color var(--dur-slow) var(--ease-standard),
              box-shadow var(--dur-slow) var(--ease-standard);
}
