/* ==========================================================================
   Contracts (CLM) — area identity colors

   Thirteen places inside one contract. Without color they are thirteen
   identical white pages and a person cannot tell Obligations from Evidence
   at a glance. Each area carries a hue, used in four places and no more:

     the icon chip beside the section title
     the active tab underline and its icon
     a 3px accent bar on the area's lead panel
     the tinted ground of that area's header band

   Deliberately NOT used for: body text, large fills, or anything that
   carries meaning on its own. Area color says where you are. Semantic
   color (success, warning, danger) says what is happening. Keeping those
   two jobs apart is what stops a colorful interface becoming an unreadable
   one.

   Cyan 205 is reserved for AI and is not available to any area, because a
   person must always be able to tell what a machine proposed from what a
   person decided.

   Every value is oklch. Lightness is held at 0.48 to 0.52 for the accent
   so that all thirteen have the same weight against the page, and the
   contrast against their own soft tint is even across hues.
   ========================================================================== */

:root {
  /* Contract mode */
  --a-overview:      oklch(0.47 0.16 258);   /* indigo, the spine */
  --a-overview-soft: oklch(0.958 0.026 258);
  --a-overview-line: oklch(0.86 0.06 258);

  --a-analysis:      oklch(0.49 0.17 295);   /* violet */
  --a-analysis-soft: oklch(0.962 0.028 295);
  --a-analysis-line: oklch(0.86 0.06 295);

  --a-documents:     oklch(0.48 0.11 230);   /* blue */
  --a-documents-soft:oklch(0.958 0.026 230);
  --a-documents-line:oklch(0.85 0.055 230);

  --a-requests:      oklch(0.51 0.16 8);     /* rose */
  --a-requests-soft: oklch(0.962 0.026 8);
  --a-requests-line: oklch(0.87 0.06 8);

  --a-activity:      oklch(0.47 0.07 250);   /* slate blue */
  --a-activity-soft: oklch(0.955 0.016 250);
  --a-activity-line: oklch(0.86 0.03 250);

  --a-file:          oklch(0.42 0.07 268);   /* deep indigo */
  --a-file-soft:     oklch(0.955 0.02 268);
  --a-file-line:     oklch(0.85 0.04 268);

  /* Administration mode */
  --a-plan:          oklch(0.48 0.15 275);   /* blue violet */
  --a-plan-soft:     oklch(0.96 0.026 275);
  --a-plan-line:     oklch(0.86 0.055 275);

  --a-obligations:   oklch(0.49 0.16 318);   /* purple */
  --a-obligations-soft: oklch(0.963 0.028 318);
  --a-obligations-line: oklch(0.87 0.06 318);

  --a-deliverables:  oklch(0.47 0.10 187);   /* teal */
  --a-deliverables-soft: oklch(0.955 0.03 187);
  --a-deliverables-line: oklch(0.83 0.06 187);

  --a-evidence:      oklch(0.50 0.12 68);    /* amber */
  --a-evidence-soft: oklch(0.962 0.04 68);
  --a-evidence-line: oklch(0.85 0.08 68);

  --a-money:         oklch(0.46 0.12 152);   /* green */
  --a-money-soft:    oklch(0.955 0.035 152);
  --a-money-line:    oklch(0.83 0.07 152);

  --a-performance:   oklch(0.51 0.14 40);    /* orange */
  --a-performance-soft: oklch(0.962 0.035 40);
  --a-performance-line: oklch(0.86 0.07 40);

  --a-closeout:      oklch(0.44 0.07 210);   /* steel */
  --a-closeout-soft: oklch(0.955 0.02 210);
  --a-closeout-line: oklch(0.85 0.04 210);

  /* AI. Reserved. Not an area. */
  --a-ai:            oklch(0.50 0.11 205);
  --a-ai-soft:       oklch(0.963 0.024 205);
  --a-ai-line:       oklch(0.80 0.075 205);
  --a-ai-strong:     oklch(0.40 0.10 205);

  /* Chart series. Six hues, evenly spaced, all at one lightness so no
     series reads as more important than another. */
  --c1: oklch(0.55 0.16 258);
  --c2: oklch(0.55 0.15 190);
  --c3: oklch(0.55 0.14 150);
  --c4: oklch(0.58 0.13 70);
  --c5: oklch(0.56 0.16 25);
  --c6: oklch(0.55 0.16 310);
}

/* Dark. The accents lift to 0.70 to 0.74 so they hold against a dark
   ground, and the soft tints become dark tinted surfaces rather than
   near-white ones. Redefined under both the media query and the explicit
   stamp so the toggle wins in both directions. */

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --a-overview: oklch(0.74 0.13 262);      --a-overview-soft: oklch(0.29 0.045 262);      --a-overview-line: oklch(0.42 0.07 262);
    --a-analysis: oklch(0.75 0.13 297);      --a-analysis-soft: oklch(0.295 0.045 297);     --a-analysis-line: oklch(0.43 0.07 297);
    --a-documents: oklch(0.74 0.10 232);     --a-documents-soft: oklch(0.29 0.04 232);      --a-documents-line: oklch(0.42 0.06 232);
    --a-requests: oklch(0.76 0.12 10);       --a-requests-soft: oklch(0.30 0.045 10);       --a-requests-line: oklch(0.44 0.07 10);
    --a-activity: oklch(0.76 0.055 252);     --a-activity-soft: oklch(0.29 0.025 252);      --a-activity-line: oklch(0.42 0.035 252);
    --a-file: oklch(0.73 0.08 268);          --a-file-soft: oklch(0.285 0.035 268);         --a-file-line: oklch(0.41 0.05 268);
    --a-plan: oklch(0.75 0.12 277);          --a-plan-soft: oklch(0.295 0.045 277);         --a-plan-line: oklch(0.43 0.07 277);
    --a-obligations: oklch(0.76 0.13 320);   --a-obligations-soft: oklch(0.30 0.045 320);   --a-obligations-line: oklch(0.44 0.07 320);
    --a-deliverables: oklch(0.74 0.10 187);  --a-deliverables-soft: oklch(0.29 0.04 187);   --a-deliverables-line: oklch(0.42 0.06 187);
    --a-evidence: oklch(0.79 0.12 70);       --a-evidence-soft: oklch(0.30 0.045 70);       --a-evidence-line: oklch(0.45 0.07 70);
    --a-money: oklch(0.74 0.13 152);         --a-money-soft: oklch(0.29 0.045 152);         --a-money-line: oklch(0.42 0.07 152);
    --a-performance: oklch(0.77 0.13 45);    --a-performance-soft: oklch(0.30 0.045 45);    --a-performance-line: oklch(0.44 0.07 45);
    --a-closeout: oklch(0.74 0.07 212);      --a-closeout-soft: oklch(0.29 0.03 212);       --a-closeout-line: oklch(0.42 0.045 212);
    --a-ai: oklch(0.76 0.11 205);            --a-ai-soft: oklch(0.29 0.04 205);
    --a-ai-line: oklch(0.44 0.07 205);       --a-ai-strong: oklch(0.86 0.09 205);
    --c1: oklch(0.72 0.14 258); --c2: oklch(0.72 0.13 190); --c3: oklch(0.72 0.13 150);
    --c4: oklch(0.76 0.12 70);  --c5: oklch(0.72 0.14 25);  --c6: oklch(0.72 0.14 310);
  }
}

:root[data-theme="dark"] {
  --a-overview: oklch(0.74 0.13 262);      --a-overview-soft: oklch(0.29 0.045 262);      --a-overview-line: oklch(0.42 0.07 262);
  --a-analysis: oklch(0.75 0.13 297);      --a-analysis-soft: oklch(0.295 0.045 297);     --a-analysis-line: oklch(0.43 0.07 297);
  --a-documents: oklch(0.74 0.10 232);     --a-documents-soft: oklch(0.29 0.04 232);      --a-documents-line: oklch(0.42 0.06 232);
  --a-requests: oklch(0.76 0.12 10);       --a-requests-soft: oklch(0.30 0.045 10);       --a-requests-line: oklch(0.44 0.07 10);
  --a-activity: oklch(0.76 0.055 252);     --a-activity-soft: oklch(0.29 0.025 252);      --a-activity-line: oklch(0.42 0.035 252);
  --a-file: oklch(0.73 0.08 268);          --a-file-soft: oklch(0.285 0.035 268);         --a-file-line: oklch(0.41 0.05 268);
  --a-plan: oklch(0.75 0.12 277);          --a-plan-soft: oklch(0.295 0.045 277);         --a-plan-line: oklch(0.43 0.07 277);
  --a-obligations: oklch(0.76 0.13 320);   --a-obligations-soft: oklch(0.30 0.045 320);   --a-obligations-line: oklch(0.44 0.07 320);
  --a-deliverables: oklch(0.74 0.10 187);  --a-deliverables-soft: oklch(0.29 0.04 187);   --a-deliverables-line: oklch(0.42 0.06 187);
  --a-evidence: oklch(0.79 0.12 70);       --a-evidence-soft: oklch(0.30 0.045 70);       --a-evidence-line: oklch(0.45 0.07 70);
  --a-money: oklch(0.74 0.13 152);         --a-money-soft: oklch(0.29 0.045 152);         --a-money-line: oklch(0.42 0.07 152);
  --a-performance: oklch(0.77 0.13 45);    --a-performance-soft: oklch(0.30 0.045 45);    --a-performance-line: oklch(0.44 0.07 45);
  --a-closeout: oklch(0.74 0.07 212);      --a-closeout-soft: oklch(0.29 0.03 212);       --a-closeout-line: oklch(0.42 0.045 212);
  --a-ai: oklch(0.76 0.11 205);            --a-ai-soft: oklch(0.29 0.04 205);
  --a-ai-line: oklch(0.44 0.07 205);       --a-ai-strong: oklch(0.86 0.09 205);
  --c1: oklch(0.72 0.14 258); --c2: oklch(0.72 0.13 190); --c3: oklch(0.72 0.13 150);
  --c4: oklch(0.76 0.12 70);  --c5: oklch(0.72 0.14 25);  --c6: oklch(0.72 0.14 310);
}

/* Each area exposes its three values under one set of names, so a component
   writes var(--area) and never needs to know which area it is in. The area
   is set once, on a wrapper, with data-area. */

.clm[data-area="overview"], .clm [data-area="overview"]     { --area: var(--a-overview);     --area-soft: var(--a-overview-soft);     --area-line: var(--a-overview-line); }
.clm[data-area="analysis"], .clm [data-area="analysis"]     { --area: var(--a-analysis);     --area-soft: var(--a-analysis-soft);     --area-line: var(--a-analysis-line); }
.clm[data-area="documents"], .clm [data-area="documents"]    { --area: var(--a-documents);    --area-soft: var(--a-documents-soft);    --area-line: var(--a-documents-line); }
.clm[data-area="requests"], .clm [data-area="requests"]     { --area: var(--a-requests);     --area-soft: var(--a-requests-soft);     --area-line: var(--a-requests-line); }
.clm[data-area="activity"], .clm [data-area="activity"]     { --area: var(--a-activity);     --area-soft: var(--a-activity-soft);     --area-line: var(--a-activity-line); }
.clm[data-area="file"], .clm [data-area="file"]         { --area: var(--a-file);         --area-soft: var(--a-file-soft);         --area-line: var(--a-file-line); }
.clm[data-area="plan"], .clm [data-area="plan"]         { --area: var(--a-plan);         --area-soft: var(--a-plan-soft);         --area-line: var(--a-plan-line); }
.clm[data-area="obligations"], .clm [data-area="obligations"]  { --area: var(--a-obligations);  --area-soft: var(--a-obligations-soft);  --area-line: var(--a-obligations-line); }
.clm[data-area="deliverables"], .clm [data-area="deliverables"] { --area: var(--a-deliverables); --area-soft: var(--a-deliverables-soft); --area-line: var(--a-deliverables-line); }
.clm[data-area="evidence"], .clm [data-area="evidence"]     { --area: var(--a-evidence);     --area-soft: var(--a-evidence-soft);     --area-line: var(--a-evidence-line); }
.clm[data-area="money"], .clm [data-area="money"]        { --area: var(--a-money);        --area-soft: var(--a-money-soft);        --area-line: var(--a-money-line); }
.clm[data-area="performance"], .clm [data-area="performance"]  { --area: var(--a-performance);  --area-soft: var(--a-performance-soft);  --area-line: var(--a-performance-line); }
.clm[data-area="closeout"], .clm [data-area="closeout"]     { --area: var(--a-closeout);     --area-soft: var(--a-closeout-soft);     --area-line: var(--a-closeout-line); }
.clm[data-area="ai"], .clm [data-area="ai"]           { --area: var(--a-ai);           --area-soft: var(--a-ai-soft);           --area-line: var(--a-ai-line); }

/* Default, so a component outside any area still resolves. */
.clm { --area: var(--a-overview); --area-soft: var(--a-overview-soft); --area-line: var(--a-overview-line); }
