:root {
  /* ---------- Brand (macOS systemBlue) ---------- */
  --color-brand-50:  #f0f7ff;
  --color-brand-100: #dcedff;
  --color-brand-200: #b8dbff;
  --color-brand-300: #8ac2ff;
  --color-brand-400: #4aa3ff;
  --color-brand-500: #007aff;
  --color-brand-600: #0066cc;
  --color-brand-700: #0055ab;
  --color-brand-800: #004488;
  --color-brand-900: #003466;

  /* ---------- Neutrals (Apple) ---------- */
  --color-neutral-0:   #ffffff;
  --color-neutral-50:  #f5f5f7;
  --color-neutral-100: #e8e8ed;
  --color-neutral-200: #d2d2d7;
  --color-neutral-300: #b8b8bf;
  --color-neutral-400: #86868b;
  --color-neutral-500: #6e6e73;
  --color-neutral-600: #515154;
  --color-neutral-700: #424245;
  --color-neutral-800: #2d2d30;
  --color-neutral-900: #1d1d1f;
  --color-neutral-950: #0f0f10;

  /* ---------- Semantic ---------- */
  --color-success-100: #e6f7ea;
  --color-success-500: #34c759;
  --color-success-600: #248a3d;
  --color-success-700: #1a6b2f;
  --color-warning-100: #fff3e0;
  --color-warning-500: #ff9500;
  --color-warning-600: #ad6200;
  --color-warning-700: #8a4f00;
  --color-danger-100:  #ffe5e5;
  --color-danger-500:  #ff3b30;
  --color-danger-600:  #d70015;
  --color-danger-700:  #a80011;
  --color-info-100:    #e0f4fc;
  --color-info-500:    #32ade6;
  --color-info-600:    #0e7fb0;
  --color-info-700:    #0a6389;

  /* ---------- Labels ----------
     A categorical palette for labels that carry no state (ticket category, contract and
     component kind, role). It is kept apart from the semantic hues above: a bug is not an
     error and an add-on is not a warning, so no label borrows red, amber, green or the
     brand/info blues. Each hue has a tint base and a readable ink; dark mode lightens the ink. */
  --color-label-violet:     #8e5cf0;
  --color-label-violet-ink: #5a2fb0;
  --color-label-pink:       #d6409f;
  --color-label-pink-ink:   #9c1f70;
  --color-label-indigo:     #5b5bd6;
  --color-label-indigo-ink: #3a3aa6;
  --color-label-teal:       #14a38b;
  --color-label-teal-ink:   #0b6b5b;

  /* ---------- Chart series ---------- */
  /* The budget curve reads red for koszty and green for przychody, but NOT the
     semantic success green: #248a3d against #d70015 separates by only ΔE ≈ 5
     under deuteranopia, so for a red-green reader the two measures collapse into
     one line. These greens are pulled toward blue-green until the pair clears the
     colour-vision floor with room to spare (ΔE ≈ 11 deutan, ≈ 35 tritan) while
     still reading plainly as green. Plan vs. wykonanie is carried by the stroke
     (dashed vs. solid) and never by hue, so both series of one measure share a
     colour. */
  --color-chart-cost:    var(--color-danger-600);
  --color-chart-revenue: #0f9d76;

  /* ---------- Workload heatmap ---------- */
  /* Load bands: low (free capacity), ok, full, over. The part of a bar above 100% uses the
     deeper red so it separates from the band colour of an overloaded cell. */
  --color-workload-low:  var(--color-info-500);
  --color-workload-ok:   var(--color-chart-revenue);
  --color-workload-full: var(--color-warning-500);
  --color-workload-over: var(--color-danger-600);
  --color-workload-low-tint:  color-mix(in srgb, var(--color-workload-low) 14%, transparent);
  --color-workload-ok-tint:   color-mix(in srgb, var(--color-workload-ok) 14%, transparent);
  --color-workload-full-tint: color-mix(in srgb, var(--color-workload-full) 18%, transparent);
  --color-workload-over-tint: color-mix(in srgb, var(--color-workload-over) 14%, transparent);
  --color-workload-low-text:  var(--color-info-700);
  --color-workload-ok-text:   #0a6b50;
  --color-workload-full-text: var(--color-warning-700);
  --color-workload-over-text: var(--color-danger-700);
  --color-workload-over-deep: var(--color-danger-700);
  --color-workload-track:  rgba(0, 0, 0, 0.08);
  --color-workload-marker: var(--color-neutral-600);
  --color-workload-absence-hatch: rgba(0, 0, 0, 0.06);
  /* Project palette for the bar split by project. */
  --color-workload-p1: #4e79a7;
  --color-workload-p2: #f28e2b;
  --color-workload-p3: #76b7b2;
  --color-workload-p4: #b07aa1;
  --color-workload-p5: #edc948;
  --color-workload-p6: #9c755f;
  --color-workload-p7: #ff9da7;
  --color-workload-p8: #59a14f;

  /* ---------- Surface ---------- */
  --color-bg-base:     var(--color-neutral-50);
  --color-bg-surface:  var(--color-neutral-0);
  --color-bg-raised:   var(--color-neutral-0);
  --color-bg-sunken:   #efeff1;
  --color-bg-overlay:  rgba(0, 0, 0, 0.25);

  --color-border-subtle: rgba(0, 0, 0, 0.08);
  --color-border-base:   rgba(0, 0, 0, 0.13);
  --color-border-strong: rgba(0, 0, 0, 0.22);

  --color-text-primary:   #1d1d1f;
  --color-text-secondary: #6e6e73;
  --color-text-tertiary:  #86868b;
  --color-text-disabled:  #b8b8bf;
  --color-text-inverse:   var(--color-neutral-0);
  --color-text-brand:     var(--color-brand-600);

  /* ---------- Spacing (4px base) ---------- */
  --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-none: 0;
  --radius-sm:   4px;
  --radius-md:   6px;
  --radius-lg:   10px;
  --radius-xl:   12px;
  --radius-full: 9999px;

  /* ---------- Shadows ---------- */
  --shadow-xs: 0 0 0 0.5px rgba(0,0,0,0.05), 0 1px 2px rgba(0,0,0,0.08);
  --shadow-sm: 0 0 0 0.5px rgba(0,0,0,0.04), 0 1px 3px rgba(0,0,0,0.07);
  --shadow-md: 0 0 0 0.5px rgba(0,0,0,0.05), 0 4px 12px rgba(0,0,0,0.10);
  --shadow-lg: 0 0 0 0.5px rgba(0,0,0,0.05), 0 10px 30px rgba(0,0,0,0.12);
  --shadow-xl: 0 0 0 0.5px rgba(0,0,0,0.06), 0 24px 60px rgba(0,0,0,0.20);

  /* ---------- Typography ---------- */
  --font-sans: "Hanken Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: ui-monospace, "JetBrains Mono", "Fira Code", monospace;

  --text-xs:   0.6875rem;
  --text-sm:   0.8125rem;
  --text-base: 0.9375rem;
  --text-lg:   1.0625rem;
  --text-xl:   1.375rem;
  --text-2xl:  1.625rem;
  --text-3xl:  1.875rem;
  --text-4xl:  2.25rem;

  --leading-tight:   1.25;
  --leading-normal:  1.5;
  --leading-relaxed: 1.625;

  --weight-normal:   400;
  --weight-medium:   500;
  --weight-semibold: 600;
  --weight-bold:     700;

  /* ---------- Z-index ---------- */
  --z-base:     0;
  --z-dropdown: 1000;
  --z-sticky:   1100;
  --z-drawer:   1200;
  --z-dialog:   1300;
  --z-popover:  1400;
  --z-toast:    1500;
  --z-tooltip:  1600;
  --z-takeover: 1700; /* Blocking full-tab overlay — above every other layer, incl. tooltips/toasts */

  /* ---------- Motion ---------- */
  --duration-fast: 150ms;
  --duration-base: 200ms;
  --duration-slow: 300ms;
  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);

  /* ---------- Layout ---------- */
  --sidebar-width:           16rem;
  --sidebar-width-collapsed:  4rem;
  --topbar-height:            3rem;

  /* ---------- Materials ----------
     Toolbar mirrors the sidebar exactly (same tint + alpha + solid fallback) so
     the frosted top bar reads as a horizontal continuation of the sidebar over
     the same wallpaper. */
  --material-sidebar:  rgba(246, 246, 247, 0.72);
  --material-toolbar:  rgba(246, 246, 247, 0.72);
  --material-menu:     rgba(255, 255, 255, 0.93);
  --material-blur:     20px;
  --material-saturate: 1.8;
  --material-sidebar-solid: #f2f2f4;
  --material-toolbar-solid: #f2f2f4;
  --material-menu-solid:    #ffffff;

  /* ---------- Blueprint (public landing) — LIGHT: "papier kreślarski" ---------- */
  /* dark ink on cool drafting paper; @theme bridges --bp-c-* to bp-* utilities */
  --bp-c-950:  #dde8f3;  /* deepest surface — sticky header / sunken input */
  --bp-c-900:  #edf3fa;  /* sheet base */
  --bp-c-850:  #e6eef7;
  --bp-c-800:  #dceaf6;  /* raised / hover tint */
  --bp-c-700:  #cdddee;
  --bp-c-line: #a9c6e1;  /* grid + hairlines */
  --bp-c-edge: #7fa9cf;  /* section separators — a stronger, clearly visible rule */
  --bp-c-ink:  #0e2c49;  /* primary lines / text */
  --bp-c-dim:  #466688;  /* secondary text */
  --bp-c-cyan: #1668a8;  /* accent */
  --bp-c-rev:  #cf4a26;  /* revision markup */
  --bp-c-amber:#8a5a0e;  /* TBD / highlight */

  --bp-grid:         rgba(22, 104, 168, 0.065);
  --bp-grid-major:   rgba(22, 104, 168, 0.11);
  --bp-panel-bg:     rgba(255, 255, 255, 0.60);
  --bp-vignette:     rgba(40, 72, 110, 0.10);
  --bp-hatch:        rgba(22, 104, 168, 0.14);
  --bp-stamp-shadow: rgba(22, 104, 168, 0.20);
  --bp-fill:         rgba(22, 104, 168, 0.06);
  --bp-grain-opacity: 0.22;
}

.dark {
  --color-brand-400: #409cff;
  --color-brand-500: #0a84ff;
  --color-bg-base:     var(--color-neutral-900);
  --color-bg-surface:  var(--color-neutral-800);
  --color-bg-raised:   var(--color-neutral-700);
  --color-bg-sunken:   var(--color-neutral-900);
  --color-bg-overlay:  rgba(0, 0, 0, 0.7);

  /* Lighter steps on the dark surface — the light-mode pair drops below 3:1 there. */
  --color-chart-cost:    var(--color-danger-500);
  --color-chart-revenue: #13a37d;

  --color-label-violet-ink: #b99af5;
  --color-label-pink-ink:   #f08cc8;
  --color-label-indigo-ink: #a8a8f7;
  --color-label-teal-ink:   #5fd6c0;

  --color-workload-low:  #5ac8fa;
  --color-workload-ok:   #30c48d;
  --color-workload-full: #ffb340;
  --color-workload-over: #ff6961;
  --color-workload-low-tint:  color-mix(in srgb, var(--color-workload-low) 20%, transparent);
  --color-workload-ok-tint:   color-mix(in srgb, var(--color-workload-ok) 20%, transparent);
  --color-workload-full-tint: color-mix(in srgb, var(--color-workload-full) 22%, transparent);
  --color-workload-over-tint: color-mix(in srgb, var(--color-workload-over) 22%, transparent);
  --color-workload-low-text:  #8fdcfc;
  --color-workload-ok-text:   #6fdcb2;
  --color-workload-full-text: #ffc978;
  --color-workload-over-text: #ff9a94;
  --color-workload-over-deep: var(--color-danger-600);
  --color-workload-track:  rgba(255, 255, 255, 0.12);
  --color-workload-marker: var(--color-neutral-300);
  --color-workload-absence-hatch: rgba(255, 255, 255, 0.07);
  --color-workload-p1: #7aa6d6;
  --color-workload-p2: #ffaa55;
  --color-workload-p3: #95d3ce;
  --color-workload-p4: #d09ec3;
  --color-workload-p5: #f5da73;
  --color-workload-p6: #c49a82;
  --color-workload-p7: #ffbcc4;
  --color-workload-p8: #7fc475;

  --color-border-subtle: var(--color-neutral-700);
  --color-border-base:   var(--color-neutral-700);
  --color-border-strong: var(--color-neutral-600);

  --color-text-primary:   var(--color-neutral-50);
  --color-text-secondary: var(--color-neutral-300);
  --color-text-tertiary:  var(--color-neutral-400);
  --color-text-disabled:  var(--color-neutral-600);
  --color-text-brand:     var(--color-brand-400);

  --material-sidebar:  rgba(25, 28, 36, 0.72);
  --material-toolbar:  rgba(25, 28, 36, 0.72);
  --material-menu:     rgba(30, 33, 41, 0.93);
  --material-sidebar-solid: #191c24;
  --material-toolbar-solid: #191c24;
  --material-menu-solid:    #1e2129;

  /* ---------- Blueprint (public landing) — DARK: "Deep Sea" (test palette) ----------
     Test swap of the cyanotype for the Deep Sea palette:
       #011f4b  #03396c  #005b96  #6497b1  #b3cde0
     Surfaces step from the two deep navies up toward #005b96 (raised); #6497b1
     is the steel mid (secondary text + grid base); #b3cde0 is the pale ink
     (primary text). The accent is a brightened deep-sea blue (palette has no
     bright accent) so badges / active nav still pop. Warm rev/amber kept so
     revision markup + error highlights stay legible. */
  --bp-c-950:  #011f4b;  /* deepest surface — canvas / main space */
  --bp-c-900:  #03396c;  /* sheet base — sidebar / topbar / dropdowns */
  --bp-c-850:  #02447a;  /* nav hover — a step up toward #005b96 */
  --bp-c-800:  #015088;  /* nav active / raised tint */
  --bp-c-700:  #005b96;  /* strongest raised surface */
  --bp-c-line: #357aa3;  /* grid + hairlines — between #005b96 and steel #6497b1 */
  --bp-c-edge: #0e4a7d;  /* section separators — muted dark rule */
  --bp-c-ink:  #b3cde0;  /* primary text — palette pale (≈10:1 on the navy) */
  --bp-c-dim:  #6497b1;  /* secondary text — palette steel */
  --bp-c-cyan: #6aa9d8;  /* accent — brightened deep-sea blue */
  --bp-c-rev:  #ff7d5c;  /* revision markup (warm — kept) */
  --bp-c-amber:#ffd27a;  /* TBD / highlight (warm — kept) */

  --bp-grid:         rgba(100, 151, 177, 0.06);
  --bp-grid-major:   rgba(100, 151, 177, 0.11);
  --bp-panel-bg:     rgba(3, 57, 108, 0.55);
  --bp-vignette:     rgba(1, 12, 30, 0.62);
  --bp-hatch:        rgba(100, 151, 177, 0.16);
  --bp-stamp-shadow: rgba(106, 169, 216, 0.28);
  --bp-fill:         rgba(100, 151, 177, 0.05);
  --bp-grain-opacity: 0.5;
}
