/* ============================================================================
   JULES  ·  TOKEN OVERRIDES  ·  layer 3  ·  return 2, 16 Aug 2026

   Load order, and it matters:
     1  _ds/kin.../styles.css      Kin master tokens + kin.css component layer
     2  jules-tokens.css           THIS FILE
     3  jules-components.css       the j- component layer, token references only

   THIS IS THE ONLY FILE IN JULES THAT MAY CARRY A LITERAL COLOUR.
   Everything below is either a Fusion Line brand literal, lifted verbatim from
   the Fusion Line system, or an alias onto a Kin token. The palette gate keeps
   app CSS token only.

   The colour law, unchanged and load bearing:
     graphite  grounds, always. No ground is ever tinted toward an accent.
     lime      live or actionable. Nothing else, ever.
     amber     asks for attention.
     clay      failed or destructive. Never marks a person.
     teal      a human subject, and the Fusion Line brand. Never live state.
   ========================================================================== */

:root {

  /* --- Fusion Line brand literals, verbatim from the Fusion Line system ---- */
  --fl-navy:        #0A1D37;   /* the Fusion Line field. A PLATE in Jules, never a ground */
  --fl-navy-deep:   #071426;   /* plate on void */
  --fl-teal:        #6AD2C7;   /* the Fusion Line signal */
  --fl-teal-pale:   #9EECE2;   /* seam core highlight */
  --fl-teal-deep:   #15897E;   /* teal on light surfaces only */

  /* --- The human layer. Teal, but named for its meaning, not its brand. ---- */
  --human:          #6AD2C7;   /* a person is the subject. 11.2:1 on --ink */
  --human-08:       rgba(106, 210, 199, 0.08);
  --human-14:       rgba(106, 210, 199, 0.14);
  --human-24:       rgba(106, 210, 199, 0.24);
  --human-38:       rgba(106, 210, 199, 0.38);

  /* --- The seam. One per composition, where the two companies meet. ------- */
  --seam-core:      #6AD2C7;
  --seam-halo:      rgba(106, 210, 199, 0.30);
  --seam-bloom:     rgba(106, 210, 199, 0.10);

  /* --- The operator plate: how Fusion Line is present on a graphite page. -- */
  --plate:          #0A1D37;
  --plate-line:     rgba(106, 210, 199, 0.18);
  --plate-label:    #9EECE2;   /* 12.4:1 on --plate */

  /* --- Attendance chip set, unchanged from return 1 ----------------------- */
  --att-worked:     var(--sage);        /* the quiet default */
  --att-extra:      var(--olive-lift);  /* time credited */
  --att-short:      var(--sand);        /* A FACT, NOT A FAULT. NEVER CLAY */
  --att-covered:    var(--human);       /* a human stepped in, always named */
  --att-review:     var(--amber);       /* one open question */

  /* --- Lifecycle step states. Six, and two of them are what people look for */
  --st-pending:     var(--sage);        /* not started. Quiet, not empty */
  --st-running:     var(--signal);      /* live, and only running is live */
  --st-done:        var(--olive-lift);
  --st-failed:      var(--clay);        /* the provider refused. Never the person */
  --st-skipped:     var(--edge);        /* recorded, deliberate, needs a reason */
  --st-human:       var(--amber);       /* waiting on a named person */

  /* --- Access reconciliation. The second axis, and it is not a status. ---- */
  --rc-present:     var(--sand);        /* a fact: the account is there */
  --rc-absent:      var(--sand);        /* a fact: the account is not there */
  --rc-mismatch:    var(--amber);       /* the two records disagree */
  --rc-unknown:     var(--edge);        /* AN HONEST BLANK. Not warning, not success */
  --rc-unknown-ink: var(--sage);        /* the label on a blank, 4.6:1 on --ink */

  /* --- Verdict rules. The row edge, set by the PAIR, never by one axis. --- */
  --vd-settled:     transparent;        /* nothing to do. No edge at all */
  --vd-ask:         var(--amber);       /* somebody has to look */
  --vd-open:        var(--clay);        /* asked for, still there. The loud row */
  --vd-blank:       var(--edge);        /* Jules cannot see. Different owner */

  /* --- Capture flow --------------------------------------------------------
     Recording IS live, so the record dot is lime. There is no red in Jules. */
  --rec:            var(--signal);
  --rec-ring:       rgba(196, 238, 79, 0.22);
  --take-left:      var(--olive-lift);
  --take-used:      var(--edge);

  /* --- Portal measure and rhythm ----------------------------------------- */
  --portal-max:     620px;   /* the worker portal column. One thumb, one read */
  --portal-pad:     20px;
  --door-aperture:  520px;   /* front door aperture cap, bounded by 62vh */

  /* --- Focus, restated so it survives an override ------------------------- */
  --focus-ring:     0 0 0 3px rgba(196, 238, 79, 0.30);
}

@media (max-width: 768px) {
  :root { --portal-pad: 16px; }
}

/* ---------------------------------------------------------------------------
   Kept from return 1, because return 2 does not redesign the surfaces that use
   them. Not part of the approved return, and not to be extended: anything new
   uses the tokens above.
     --human-40   the person-record seam gradient in jules-app.css
   ------------------------------------------------------------------------- */
:root {
  --human-40: rgba(106, 210, 199, 0.40);
}
