/* ============================================================
   tokens.css — Design tokens (single source of truth)
   Enterprise white-based system: white surfaces, slate neutrals,
   one indigo accent. Light + dark themes. No pink anywhere.
   ============================================================ */

:root {
  /* ---- Brand / accent (indigo) ---- */
  --c-accent-50:  #eef2ff;
  --c-accent-100: #e0e7ff;
  --c-accent-200: #c7d2fe;
  --c-accent-300: #a5b4fc;
  --c-accent-400: #818cf8;
  --c-accent-500: #6366f1;
  --c-accent-600: #4f46e5;  /* primary */
  --c-accent-700: #4338ca;
  --c-accent-800: #3730a3;

  /* ---- Neutrals (slate) ---- */
  --c-slate-50:  #f8fafc;
  --c-slate-100: #f1f5f9;
  --c-slate-200: #e2e8f0;
  --c-slate-300: #cbd5e1;
  --c-slate-400: #94a3b8;
  --c-slate-500: #64748b;
  --c-slate-600: #475569;
  --c-slate-700: #334155;
  --c-slate-800: #1e293b;
  --c-slate-900: #0f172a;
  --c-slate-950: #020617;

  /* ---- Semantic colors ---- */
  --c-success: #059669;
  --c-success-bg: #ecfdf5;
  --c-success-border: #a7f3d0;
  --c-warning: #d97706;
  --c-warning-bg: #fffbeb;
  --c-warning-border: #fde68a;
  --c-danger: #dc2626;
  --c-danger-bg: #fef2f2;
  --c-danger-border: #fecaca;
  --c-info: #0284c7;
  --c-info-bg: #f0f9ff;
  --c-info-border: #bae6fd;

  /* ---- Surfaces & text (light theme defaults) ---- */
  --bg: #ffffff;
  --bg-subtle: var(--c-slate-50);
  --bg-muted: var(--c-slate-100);
  --surface: #ffffff;
  --surface-2: var(--c-slate-50);
  --border: var(--c-slate-200);
  --border-strong: var(--c-slate-300);
  --text: var(--c-slate-900);
  --text-secondary: var(--c-slate-600);
  --text-muted: var(--c-slate-500);
  --text-on-accent: #ffffff;
  --accent: var(--c-accent-600);
  --accent-hover: var(--c-accent-700);
  --accent-soft: var(--c-accent-50);
  --accent-soft-border: var(--c-accent-200);
  --ring: var(--c-accent-500);

  /* ---- Difficulty levels ---- */
  --lvl-1: #0d9488; /* beginner - teal */
  --lvl-1-bg: #f0fdfa;
  --lvl-2: #2563eb; /* intermediate - blue */
  --lvl-2-bg: #eff6ff;
  --lvl-3: #7c3aed; /* advanced - violet */
  --lvl-3-bg: #f5f3ff;
  --lvl-4: #b45309; /* expert - amber-brown */
  --lvl-4-bg: #fffbeb;

  /* ---- Typography ---- */
  --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
               "Helvetica Neue", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;
  --font-mono: "SFMono-Regular", ui-monospace, "Cascadia Code", "JetBrains Mono",
               Consolas, "Liberation Mono", Menlo, monospace;

  --fs-xs: 0.75rem;    /* 12 */
  --fs-sm: 0.8125rem;  /* 13 */
  --fs-base: 0.9375rem;/* 15 */
  --fs-md: 1rem;       /* 16 */
  --fs-lg: 1.125rem;   /* 18 */
  --fs-xl: 1.375rem;   /* 22 */
  --fs-2xl: 1.75rem;   /* 28 */
  --fs-3xl: 2.25rem;   /* 36 */
  --fs-4xl: 2.875rem;  /* 46 */

  --lh-tight: 1.25;
  --lh-snug: 1.4;
  --lh-normal: 1.6;
  --lh-relaxed: 1.75;

  --fw-normal: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;
  --fw-extrabold: 800;

  /* ---- Spacing scale (4px base) ---- */
  --sp-1: 0.25rem;
  --sp-2: 0.5rem;
  --sp-3: 0.75rem;
  --sp-4: 1rem;
  --sp-5: 1.25rem;
  --sp-6: 1.5rem;
  --sp-8: 2rem;
  --sp-10: 2.5rem;
  --sp-12: 3rem;
  --sp-16: 4rem;

  /* ---- Radii ---- */
  --r-sm: 6px;
  --r-md: 10px;
  --r-lg: 14px;
  --r-xl: 20px;
  --r-full: 999px;

  /* ---- Shadows (soft, enterprise) ---- */
  --shadow-xs: 0 1px 2px rgba(15, 23, 42, 0.04);
  --shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04);
  --shadow-md: 0 4px 12px rgba(15, 23, 42, 0.08);
  --shadow-lg: 0 12px 28px rgba(15, 23, 42, 0.12);
  --shadow-focus: 0 0 0 3px var(--c-accent-200);

  /* ---- Layout ---- */
  --sidebar-w: 280px;
  --topbar-h: 60px;
  --content-max: 920px;
  --z-base: 1;
  --z-sticky: 50;
  --z-drawer: 80;
  --z-overlay: 90;
  --z-modal: 100;
  --z-toast: 120;

  /* ---- Motion ---- */
  --t-fast: 120ms ease;
  --t-base: 200ms ease;
  --t-slow: 360ms cubic-bezier(0.16, 1, 0.3, 1);
}

/* ============================================================
   Dark theme — toggled by [data-theme="dark"] on <html>
   ============================================================ */
[data-theme="dark"] {
  --bg: #0b1120;
  --bg-subtle: #0f172a;
  --bg-muted: #1e293b;
  --surface: #0f172a;
  --surface-2: #131c31;
  --border: #1e293b;
  --border-strong: #334155;
  --text: #e2e8f0;
  --text-secondary: #cbd5e1;
  --text-muted: #94a3b8;
  --accent: var(--c-accent-400);
  --accent-hover: var(--c-accent-300);
  --accent-soft: rgba(99, 102, 241, 0.14);
  --accent-soft-border: rgba(129, 140, 248, 0.35);
  --ring: var(--c-accent-400);

  --success-bg: rgba(5, 150, 105, 0.14);
  --c-success-bg: rgba(5, 150, 105, 0.14);
  --c-warning-bg: rgba(217, 119, 6, 0.14);
  --c-danger-bg: rgba(220, 38, 38, 0.14);
  --c-info-bg: rgba(2, 132, 199, 0.14);

  --lvl-1-bg: rgba(13, 148, 136, 0.14);
  --lvl-2-bg: rgba(37, 99, 235, 0.14);
  --lvl-3-bg: rgba(124, 58, 237, 0.16);
  --lvl-4-bg: rgba(180, 83, 9, 0.16);

  --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.4);
  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.45);
  --shadow-md: 0 6px 16px rgba(0, 0, 0, 0.5);
  --shadow-lg: 0 16px 36px rgba(0, 0, 0, 0.55);
  --shadow-focus: 0 0 0 3px rgba(99, 102, 241, 0.4);
}

/* Respect OS preference on first load (no stored choice).
   main.js sets data-theme explicitly once the user chooses. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    color-scheme: dark;
  }
}
