:root {
  /* Text */
  --color-text-primary: hsl(0 0% 9%);
  --color-text-secondary: #475467;
  --color-text-muted: hsl(0 0% 43.5%);
  --color-text-faint: #9ca3af;
  --color-text-inverse: #ffffff;
  --color-text-brand: #804eec;
  --color-text-brand-hover: #6f3fd4;
  --color-text-brand-strong: #7c3aed;
  --color-text-brand-accent: #7f56d9;
  --color-text-heading-alt: #1f2937;
  --color-text-body-subtle: #374151;
  --color-text-google: #1f1f1f;
  --color-text-overlay: #344054;
  --color-text-disabled: #667085;

  /* Surfaces */
  --color-surface-page: hsl(0 0% 100%);
  --color-surface-default: #ffffff;
  --color-surface-card: rgba(255, 255, 255, 0.8);
  --color-surface-subtle: hsl(0 0% 96.1%);
  --color-surface-muted: #f3f4f6;
  --color-surface-muted-hover: #e5e7eb;
  --color-surface-muted-active: #d1d5db;
  --color-surface-muted-inverse: #111827;
  --color-surface-elevated: rgba(255, 255, 255, 0.92);
  --color-surface-elevated-strong: rgba(255, 255, 255, 0.95);
  --color-surface-elevated-soft: rgba(255, 255, 255, 0.9);
  --color-surface-overlay: rgba(255, 255, 255, 0.88);
  --color-surface-overlay-strong: rgba(255, 255, 255, 0.96);
  --color-surface-brand-soft: #ede9fe;
  --color-surface-brand-soft-hover: #ddd6fe;
  --color-surface-brand-soft-active: #c4b5fd;
  --color-surface-brand-muted: #f4f3ff;
  --color-surface-neutral-hover: rgba(249, 250, 251, 0.9);
  --color-surface-page-tint: #f8f7ff;
  --color-surface-page-tint-alt: #f4f7fb;

  /* Borders */
  --color-border-default: hsl(0 0% 90.9%);
  --color-border-strong: #d1d5db;
  --color-border-muted: #e5e7eb;
  --color-border-subtle: #d0d5dd;
  --color-border-google: #747775;
  --color-border-panel: rgba(30, 27, 46, 0.08);
  --color-border-panel-muted: rgba(107, 114, 128, 0.22);
  --color-border-panel-strong: rgba(107, 114, 128, 0.35);
  --color-border-overlay: rgba(148, 163, 184, 0.22);
  --color-border-overlay-strong: rgba(148, 163, 184, 0.3);

  /* Brand and focus */
  --color-brand-ink: #1e1b2e;
  --color-brand-primary: #804eec;
  --color-brand-primary-hover: #6d28d9;
  --color-brand-primary-active: #5b21b6;
  --color-brand-secondary: #a855f7;
  --color-brand-accent: #3b82f6;
  --color-focus-ring: rgba(124, 58, 237, 0.2);
  --color-focus-ring-strong: rgba(139, 92, 246, 0.16);
  --color-ring-subtle: rgba(30, 27, 46, 0.35);

  /* Status: info */
  --color-status-info-soft-bg: #eff6ff;
  --color-status-info-soft-border: #bfdbfe;
  --color-status-info-foreground: #2563eb;

  /* Status: warning */
  --color-status-warning-soft-bg: #fff4e2;
  --color-status-warning-soft-border: #db9729;
  --color-status-warning-foreground: #db9729;
  --color-status-warning-strong: #db9729;
  --color-status-warning-strong-hover: #c37f12;
  --color-status-warning-strong-active: #a9670c;
  --color-status-warning-strong-foreground: #ffffff;
  --color-status-warning-soft-foreground-strong: #b86e00;
  --color-status-warning-soft-bg-hover: #fee6b7;
  --color-status-warning-soft-bg-active: #fdd58e;
  --color-status-warning-emphasis-bg: #fffbeb;
  --color-status-warning-emphasis-border: #fde68a;
  --color-status-warning-emphasis-foreground: #ca8a04;

  /* Status: success */
  --color-status-success-soft-bg: #ecfdf3;
  --color-status-success-soft-border: #bbf7d0;
  --color-status-success-foreground: #16a34a;
  --color-status-success-strong: #16a34a;
  --color-status-success-strong-hover: #15803d;
  --color-status-success-strong-active: #166534;
  --color-status-success-strong-foreground: #ffffff;
  --color-status-success-soft-foreground-strong: #15803d;
  --color-status-success-soft-bg-hover: #d1fadf;
  --color-status-success-soft-bg-active: #a6f4c5;
  --color-status-success-banner-bg: hsl(143 85% 96%);
  --color-status-success-banner-border: hsl(145 92% 87%);
  --color-status-success-banner-foreground: hsl(140 100% 27%);

  /* Status: danger */
  --color-status-danger-soft-bg: #fef2f2;
  --color-status-danger-soft-bg-alt: #fef3f2;
  --color-status-danger-soft-border: #fecaca;
  --color-status-danger-foreground: #dc2626;
  --color-status-danger-strong: #dc2626;
  --color-status-danger-strong-hover: #b91c1c;
  --color-status-danger-strong-active: #991b1b;
  --color-status-danger-strong-foreground: #ffffff;
  --color-status-danger-soft-foreground-strong: #b42318;
  --color-status-danger-soft-bg-hover: #fee4e2;
  --color-status-danger-soft-bg-active: #fecdca;
  --color-status-danger-icon-hover: #ef4444;
  --color-status-danger-banner-bg: hsl(359 100% 97%);
  --color-status-danger-banner-border: hsl(359 100% 94%);
  --color-status-danger-banner-foreground: hsl(360 100% 45%);

  /* Effects */
  --overlay-backdrop-default: rgba(17, 24, 39, 0.52);
  --overlay-dark-soft: rgba(30, 27, 46, 0.05);
  --overlay-dark-soft-alt: rgba(30, 27, 46, 0.06);
  --overlay-dark-border: rgba(30, 27, 46, 0.08);
  --overlay-dark-strong: rgba(30, 27, 46, 0.14);
  --overlay-brand-soft: rgba(124, 58, 237, 0.1);
  --overlay-brand-soft-strong: rgba(124, 58, 237, 0.14);
  --overlay-brand-muted: rgba(128, 78, 236, 0.08);
  --overlay-brand-faint: rgba(128, 78, 236, 0.04);
  --overlay-brand-glow: rgba(128, 78, 236, 0.1);
  --overlay-google-state: #303030;
  --shadow-auth-card: 0 20px 45px rgba(0, 0, 0, 0.1);
  --shadow-surface-sm: 0 10px 30px rgba(15, 23, 42, 0.05);
  --shadow-surface-md: 0 10px 30px rgba(15, 23, 42, 0.06);
  --shadow-surface-hover: 0 12px 30px rgba(15, 23, 42, 0.08);
  --shadow-surface-lg: 0 24px 48px rgba(15, 23, 42, 0.18);
  --shadow-surface-xl: 0 32px 70px rgba(15, 23, 42, 0.12);
  --shadow-sidebar: 20px 0 45px rgba(30, 27, 46, 0.06);
  --shadow-floating-control: 0 10px 24px rgba(30, 27, 46, 0.14);
  --shadow-google-button:
    0 1px 2px 0 rgba(60, 64, 67, 0.3),
    0 1px 3px 1px rgba(60, 64, 67, 0.15);
  --shadow-brand-action: 0 18px 35px rgba(124, 58, 237, 0.25);
  --gradient-shell:
    linear-gradient(135deg, var(--overlay-brand-muted), transparent 30%),
    linear-gradient(160deg, var(--overlay-dark-soft), transparent 42%),
    linear-gradient(to bottom right, var(--overlay-dark-border), var(--color-surface-page), var(--overlay-brand-faint));
  --gradient-card-glow:
    linear-gradient(to bottom right, rgba(30, 27, 46, 0.1), var(--overlay-dark-soft), var(--overlay-brand-glow));
  --gradient-overview-badge:
    linear-gradient(to right, var(--color-brand-secondary), var(--color-brand-accent));
  --gradient-app-surface:
    linear-gradient(180deg, var(--color-surface-overlay-strong) 0%, var(--color-surface-default) 100%);
  --gradient-not-found-bg:
    radial-gradient(circle at top, var(--overlay-brand-soft-strong), transparent 35%),
    linear-gradient(180deg, var(--color-surface-page-tint) 0%, var(--color-surface-page-tint-alt) 100%);
  --gradient-not-found-primary:
    linear-gradient(135deg, var(--color-text-brand-strong) 0%, var(--color-status-info-foreground) 100%);

  /* Runtime fallbacks */
  --color-project-fallback: #3b82f6;
  --color-project-accent-purple: #a855f7;
  --color-project-accent-red: #ef4444;

  /* Legacy aliases */
  --background: var(--color-surface-page);
  --foreground: var(--color-text-primary);
  --muted-foreground: var(--color-text-muted);
  --border: var(--color-border-default);
  --input: var(--color-border-default);
  --card: var(--color-surface-card);
  --accent: var(--color-surface-subtle);
  --primary: var(--color-brand-ink);
  --primary-foreground: var(--color-text-inverse);
  --secondary: var(--color-brand-primary);
  --ring: var(--color-ring-subtle);
}

* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  min-height: 100%;
}

body {
  background: var(--background);
  color: var(--foreground);
  font-family:
    ui-sans-serif,
    system-ui,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    sans-serif;
}

a {
  color: inherit;
  text-decoration: none;
}

button,
input {
  font: inherit;
}

.light-only {
  display: block;
}

.dark-only {
  display: none;
}

.visually-hidden {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
}
