:root {
  /* Brand Colors (WL Brand Guidelines, July 2020) */
  --wl-blue: #3A84B6;
  --wl-blue-dark: #2D6A94;
  --wl-blue-deeper: #1E4F73;
  --wl-blue-light: #EDF4FA;
  --wl-blue-border: #B5D4F4;
  --wl-red: #E82C2A;
  --wl-yellow: #eee824;
  --wl-purple: #823F98;

  /* Status Colors */
  --wl-status-green: #2E7D52;
  --wl-status-green-bg: #E8F5EE;
  --wl-status-green-border: #B8DFC9;
  --wl-status-amber: #8B6914;
  --wl-status-amber-bg: #FEF8E0;
  --wl-status-amber-border: #F5E06E;
  --wl-status-red: #991B1B;
  --wl-status-red-bg: #FEF2F2;
  --wl-status-red-border: #FECACA;

  /* Avatar Palette (7 variants, assigned by person ID hash) */
  --wl-avatar-blue-bg: #E6F1FB;     --wl-avatar-blue-fg: #185FA5;
  --wl-avatar-teal-bg: #E1F5EE;     --wl-avatar-teal-fg: #0F6E56;
  --wl-avatar-coral-bg: #FAECE7;    --wl-avatar-coral-fg: #993C1D;
  --wl-avatar-purple-bg: #EEEDFE;   --wl-avatar-purple-fg: #534AB7;
  --wl-avatar-pink-bg: #FBEAF0;     --wl-avatar-pink-fg: #993556;
  --wl-avatar-amber-bg: #FAEEDA;    --wl-avatar-amber-fg: #854F0B;
  --wl-avatar-green-bg: #EAF3DE;    --wl-avatar-green-fg: #3B6D11;

  /* Semantic Colors */
  --wl-primary: var(--wl-blue);
  --wl-destructive: var(--wl-red);
  --wl-success: var(--wl-status-green);
  --wl-warning: var(--wl-yellow);

  /* Neutral Scale */
  --wl-neutral-50: #F8F9FB;
  --wl-neutral-100: #F0F2F5;
  --wl-neutral-200: #E2E5EA;
  --wl-neutral-300: #CDD1D9;
  --wl-neutral-400: #9CA3AF;
  --wl-neutral-500: #6B7280;
  --wl-neutral-600: #4B5563;
  --wl-neutral-700: #374151;
  --wl-neutral-800: #111827;
  --wl-neutral-900: #111827;

  /* Typography */
  --wl-font-family: "Mulish", "Muli", Arial, sans-serif;
  --wl-font-size-base: 14px;
  --wl-font-size-sm: 12px;
  --wl-font-size-xs: 11px;
  --wl-font-size-lg: 16px;
  --wl-font-size-xl: 20px;
  --wl-font-size-2xl: 24px;
  --wl-font-size-3xl: 30px;
  --wl-font-weight-regular: 400;
  --wl-font-weight-medium: 500;
  --wl-font-weight-semibold: 600;
  --wl-font-weight-bold: 700;
  --wl-font-weight-extrabold: 800;

  /* Spacing */
  --wl-space-1: 4px;
  --wl-space-2: 8px;
  --wl-space-3: 12px;
  --wl-space-4: 16px;
  --wl-space-5: 20px;
  --wl-space-6: 24px;
  --wl-space-8: 32px;
  --wl-space-10: 40px;

  /* Borders & Radii */
  --wl-radius-sm: 4px;
  --wl-radius-md: 8px;
  --wl-radius-lg: 12px;
  --wl-radius-pill: 20px;
  --wl-radius-full: 9999px;
  --wl-border-color: var(--wl-neutral-200);

  /* Shadows */
  --wl-shadow-sm: 0 1px 3px rgba(30, 79, 115, 0.06);
  --wl-shadow-md: 0 4px 14px rgba(30, 79, 115, 0.08);
  --wl-shadow-lg: 0 8px 24px rgba(30, 79, 115, 0.12);

  /* Topbar (dark header) */
  --wl-topbar-bg: var(--wl-blue-deeper);
  --wl-topbar-text: #fff;
  --wl-topbar-text-muted: rgba(255, 255, 255, 0.65);
  --wl-topbar-text-faint: rgba(255, 255, 255, 0.5);
  --wl-topbar-icon: rgba(255, 255, 255, 0.6);
  --wl-topbar-icon-hover: #fff;
  --wl-topbar-separator: rgba(255, 255, 255, 0.18);
  --wl-topbar-input-bg: rgba(255, 255, 255, 0.1);
  --wl-topbar-input-border: rgba(255, 255, 255, 0.14);
  --wl-topbar-input-text: rgba(255, 255, 255, 0.8);
  --wl-topbar-input-placeholder: rgba(255, 255, 255, 0.4);
  --wl-topbar-btn-bg: rgba(255, 255, 255, 0.08);
  --wl-topbar-btn-bg-hover: rgba(255, 255, 255, 0.15);
  --wl-topbar-avatar-border: rgba(255, 255, 255, 0.25);

  /* Layout */
  --wl-sidebar-width: 240px;
  --wl-sidebar-collapsed-width: 0px;
  --wl-topbar-height: 58px;

  /*
   * Breakpoints & Viewport Targets (WL-43)
   *
   * Minimum supported mobile viewport width: 360px
   * Accessibility target: 320px (WCAG 2.1 SC 1.4.10 reflow width)
   *
   * Note: CSS custom properties cannot be used inside @media queries,
   * so these tokens serve as the single source of truth for documentation
   * and JavaScript access. Always use the literal pixel values in @media rules.
   */
  --wl-breakpoint-nav-collapse: 1024px;
  --wl-breakpoint-mobile-layout: 768px;
  --wl-breakpoint-mobile-tight: 480px;

  --wl-viewport-min-supported: 360px;
  --wl-viewport-min-accessibility-target: 320px;
}
