:root {
  /* Brand */
  --color-brand-50: #eef4ff;
  --color-brand-100: #dbe8ff;
  --color-brand-200: #bdd3ff;
  --color-brand-300: #91b5ff;
  --color-brand-400: #5e8cff;
  --color-brand-500: #3568f0;
  --color-brand-600: #2454d6;
  --color-brand-700: #1f45ae;
  --color-brand-800: #203d89;
  --color-brand-900: #21376c;
  --color-brand-950: #162447;

  --color-secondary-50: #ecfdf9;
  --color-secondary-100: #cff8ef;
  --color-secondary-200: #a3efdf;
  --color-secondary-300: #67dfc9;
  --color-secondary-400: #31c7af;
  --color-secondary-500: #16a892;
  --color-secondary-600: #0f8677;
  --color-secondary-700: #106b61;
  --color-secondary-800: #11564f;
  --color-secondary-900: #114741;

  /* Neutrals */
  --color-white: #ffffff;
  --color-black: #0a0d12;
  --neutral-0: #ffffff;
  --neutral-25: #fbfcfd;
  --neutral-50: #f7f8fa;
  --neutral-100: #eef1f4;
  --neutral-200: #dde2e8;
  --neutral-300: #c7ced7;
  --neutral-400: #98a2b0;
  --neutral-500: #6b7480;
  --neutral-600: #4d5662;
  --neutral-700: #343b45;
  --neutral-800: #232830;
  --neutral-900: #171b21;
  --neutral-950: #0f1217;

  /* Semantic */
  --success-solid: #16865a;
  --success-tint: #e8f7f0;
  --warning-solid: #b86a00;
  --warning-tint: #fff3dd;
  --danger-solid: #c53c49;
  --danger-tint: #fdecef;
  --info-solid: #2563eb;
  --info-tint: #eaf1ff;

  /* Status */
  --status-overdue: #c53c49;
  --status-overdue-tint: #fdecef;
  --status-today: #c35a12;
  --status-today-tint: #fff0e4;
  --status-upcoming: #2563eb;
  --status-upcoming-tint: #eaf1ff;
  --status-done: #16865a;
  --status-done-tint: #e8f7f0;
  --status-expiring: #a56a00;
  --status-expiring-tint: #fff5d8;
  --status-expired: #8b2d46;
  --status-expired-tint: #fae8ee;

  /* Visibility */
  --visibility-private: #5b6572;
  --visibility-private-tint: #eef1f4;
  --visibility-household: #0f8677;
  --visibility-household-tint: #e2f7f2;
  --visibility-specific: #6d4bd2;
  --visibility-specific-tint: #efeafd;

  /* Life area colours */
  --area-personal: #3568f0;
  --area-personal-tint: #eaf0ff;
  --area-home: #0f9f78;
  --area-home-tint: #e2f6f0;
  --area-vehicles: #d65b31;
  --area-vehicles-tint: #fff0ea;
  --area-finance: #8c5bd7;
  --area-finance-tint: #f2ebff;
  --area-health: #cf3e6d;
  --area-health-tint: #fdebf1;
  --area-family: #e19216;
  --area-family-tint: #fff4de;
  --area-work: #246f9e;
  --area-work-tint: #e5f2f9;
  --area-racers: #6c7a1f;
  --area-racers-tint: #f0f3dc;
  --area-midas: #b74d86;
  --area-midas-tint: #faeaf3;
  --area-events: #8e5a32;
  --area-events-tint: #f6ece4;
  --area-admin: #5867c8;
  --area-admin-tint: #eceefe;
  --area-travel: #198f9c;
  --area-travel-tint: #e2f4f6;

  /* Person colours — intentionally brighter/different luminance from area palette */
  --person-1: #1d8fd6;
  --person-2: #e06a1b;
  --person-3: #7a55e7;
  --person-4: #19a36d;
  --person-5: #d43f78;
  --person-6: #c48a12;
  --person-7: #5b6bd5;
  --person-8: #008c9e;

  /* Text-on-tint variants (AA-safe) */
  --success-text: #147951;
  --warning-text: #a15d00;
  --danger-text: #c03946;
  --info-text: #1e5eea;
  --status-overdue-text: #c03946;
  --status-today-text: #ae5010;
  --status-upcoming-text: #1e5eea;
  --status-done-text: #147951;
  --status-expiring-text: #966000;
  --status-expired-text: #8b2d46;
  --visibility-private-text: #5b6572;
  --visibility-household-text: #0d786b;
  --visibility-specific-text: #6d4bd2;
  --area-personal-text: #275def;
  --area-home-text: #0b7558;
  --area-vehicles-text: #b54924;
  --area-finance-text: #7f49d3;
  --area-health-text: #bf2f5e;
  --area-family-text: #94600f;
  --area-work-text: #246f9e;
  --area-racers-text: #616e1c;
  --area-midas-text: #a9447a;
  --area-events-text: #8e5a32;
  --area-admin-text: #5262c6;
  --area-travel-text: #157782;
  --person-1-on: #0f1217;
  --person-2-on: #0f1217;
  --person-3-on: #ffffff;
  --person-4-on: #0f1217;
  --person-5-on: #0f1217;
  --person-6-on: #0f1217;
  --person-7-on: #ffffff;
  --person-8-on: #0f1217;

  /* Surfaces and text */
  --bg-canvas: #f6f7f9;
  --bg-surface: #ffffff;
  --bg-subtle: #f7f8fa;
  --bg-elevated: #ffffff;
  --bg-inverse: #171b21;
  --text-strong: #171b21;
  --text-body: #343b45;
  --text-muted: #6b7480;
  --text-faint: #6f7987;
  --text-inverse: #ffffff;
  --border-subtle: #e4e8ed;
  --border-strong: #cbd2db;
  --focus-ring: rgba(53, 104, 240, .32);
  --scrim: rgba(13, 17, 23, .52);

  /* Typography */
  --font-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-md: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;
  --leading-tight: 1.2;
  --leading-snug: 1.35;
  --leading-normal: 1.5;
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;

  /* Spacing */
  --space-0: 0;
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;

  /* Radius */
  --radius-xs: 6px;
  --radius-sm: 10px;
  --radius-md: 14px;
  --radius-lg: 18px;
  --radius-xl: 24px;
  --radius-pill: 999px;

  /* Shadows */
  --shadow-xs: 0 1px 2px rgba(16, 24, 40, .05);
  --shadow-sm: 0 1px 3px rgba(16, 24, 40, .08), 0 1px 2px rgba(16, 24, 40, .04);
  --shadow-md: 0 8px 24px rgba(16, 24, 40, .10);
  --shadow-lg: 0 18px 45px rgba(16, 24, 40, .14);

  /* Motion */
  --duration-fast: 120ms;
  --duration-base: 180ms;
  --duration-slow: 260ms;
  --ease-standard: cubic-bezier(.2, 0, 0, 1);

  /* Z-index */
  --z-base: 0;
  --z-sticky: 20;
  --z-nav: 40;
  --z-fab: 50;
  --z-overlay: 80;
  --z-modal: 90;
  --z-toast: 100;

  /* Layout */
  --content-max: 1440px;
  --sidebar-width: 264px;
  --topbar-height: 64px;
  --bottom-nav-height: 72px;
  --tap-target: 44px;

  color-scheme: light dark;
}

:root[data-theme="dark"],
.theme-dark {
  --bg-canvas: #0f1217;
  --bg-surface: #171b21;
  --bg-subtle: #1f242c;
  --bg-elevated: #20262f;
  --bg-inverse: #f7f8fa;
  --text-strong: #f7f8fa;
  --text-body: #dde2e8;
  --text-muted: #aeb6c1;
  --text-faint: #7f8996;
  --text-inverse: #171b21;
  --border-subtle: #2c333d;
  --border-strong: #3b4552;
  --focus-ring: rgba(91, 138, 255, .38);
  --scrim: rgba(0, 0, 0, .64);

  --success-tint: #173a2d;
  --warning-tint: #432d13;
  --danger-tint: #402129;
  --info-tint: #1b2f5b;
  --status-overdue-tint: #402129;
  --status-today-tint: #472719;
  --status-upcoming-tint: #1b2f5b;
  --status-done-tint: #173a2d;
  --status-expiring-tint: #3e3215;
  --status-expired-tint: #3e202c;

  --visibility-private-tint: #252b33;
  --visibility-household-tint: #173933;
  --visibility-specific-tint: #2b2347;

  --area-personal-tint: #1d2b52;
  --area-home-tint: #173b31;
  --area-vehicles-tint: #43271f;
  --area-finance-tint: #302548;
  --area-health-tint: #40202d;
  --area-family-tint: #443118;
  --area-work-tint: #1b3342;
  --area-racers-tint: #2d321b;
  --area-midas-tint: #3e2332;
  --area-events-tint: #34271f;
  --area-admin-tint: #272b4a;
  --area-travel-tint: #18363a;

  --shadow-xs: 0 1px 2px rgba(0, 0, 0, .22);
  --shadow-sm: 0 3px 10px rgba(0, 0, 0, .22);
  --shadow-md: 0 12px 30px rgba(0, 0, 0, .28);
  --shadow-lg: 0 24px 60px rgba(0, 0, 0, .34);

  --success-text: #1eb479;
  --warning-text: #e68400;
  --danger-text: #d77780;
  --info-text: #729af2;
  --status-overdue-text: #d77780;
  --status-today-text: #ec7b2e;
  --status-upcoming-text: #729af2;
  --status-done-text: #1eb479;
  --status-expiring-text: #db8c00;
  --status-expired-text: #d3778f;
  --visibility-private-text: #8d97a4;
  --visibility-household-text: #14b6a2;
  --visibility-specific-text: #9a82e0;
  --area-personal-text: #6e93f4;
  --area-home-text: #11b488;
  --area-vehicles-text: #df7f5e;
  --area-finance-text: #aa86e2;
  --area-health-text: #dd7597;
  --area-family-text: #e19216;
  --area-work-text: #4fa2d7;
  --area-racers-text: #92a52a;
  --area-midas-text: #cb7ea7;
  --area-events-text: #c48758;
  --area-admin-text: #8691d7;
  --area-travel-text: #1eadbd;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg-canvas: #0f1217;
    --bg-surface: #171b21;
    --bg-subtle: #1f242c;
    --bg-elevated: #20262f;
    --bg-inverse: #f7f8fa;
    --text-strong: #f7f8fa;
    --text-body: #dde2e8;
    --text-muted: #aeb6c1;
    --text-faint: #7f8996;
    --text-inverse: #171b21;
    --border-subtle: #2c333d;
    --border-strong: #3b4552;
    --focus-ring: rgba(91, 138, 255, .38);
    --scrim: rgba(0, 0, 0, .64);
  
    --success-tint: #173a2d;
    --warning-tint: #432d13;
    --danger-tint: #402129;
    --info-tint: #1b2f5b;
    --status-overdue-tint: #402129;
    --status-today-tint: #472719;
    --status-upcoming-tint: #1b2f5b;
    --status-done-tint: #173a2d;
    --status-expiring-tint: #3e3215;
    --status-expired-tint: #3e202c;
  
    --visibility-private-tint: #252b33;
    --visibility-household-tint: #173933;
    --visibility-specific-tint: #2b2347;
  
    --area-personal-tint: #1d2b52;
    --area-home-tint: #173b31;
    --area-vehicles-tint: #43271f;
    --area-finance-tint: #302548;
    --area-health-tint: #40202d;
    --area-family-tint: #443118;
    --area-work-tint: #1b3342;
    --area-racers-tint: #2d321b;
    --area-midas-tint: #3e2332;
    --area-events-tint: #34271f;
    --area-admin-tint: #272b4a;
    --area-travel-tint: #18363a;
  
    --shadow-xs: 0 1px 2px rgba(0, 0, 0, .22);
    --shadow-sm: 0 3px 10px rgba(0, 0, 0, .22);
    --shadow-md: 0 12px 30px rgba(0, 0, 0, .28);
    --shadow-lg: 0 24px 60px rgba(0, 0, 0, .34);
  
    --success-text: #1eb479;
    --warning-text: #e68400;
    --danger-text: #d77780;
    --info-text: #729af2;
    --status-overdue-text: #d77780;
    --status-today-text: #ec7b2e;
    --status-upcoming-text: #729af2;
    --status-done-text: #1eb479;
    --status-expiring-text: #db8c00;
    --status-expired-text: #d3778f;
    --visibility-private-text: #8d97a4;
    --visibility-household-text: #14b6a2;
    --visibility-specific-text: #9a82e0;
    --area-personal-text: #6e93f4;
    --area-home-text: #11b488;
    --area-vehicles-text: #df7f5e;
    --area-finance-text: #aa86e2;
    --area-health-text: #dd7597;
    --area-family-text: #e19216;
    --area-work-text: #4fa2d7;
    --area-racers-text: #92a52a;
    --area-midas-text: #cb7ea7;
    --area-events-text: #c48758;
    --area-admin-text: #8691d7;
    --area-travel-text: #1eadbd;
  }
}

@media (prefers-reduced-motion: reduce) {
  :root { --duration-fast: 0ms; --duration-base: 0ms; --duration-slow: 0ms; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
