/* Rapport visual language — CSS token layer (green-lead system).
   Derived from the token source of truth. Every value below is a ROLE, not a raw colour:
   consume the roles, never the hex.

   THE STANDING PRINCIPLE: no colour is chrome; every saturated hue is a named data channel.
     --green  = your progress, affirmed (and, as the brand lead, primary action + identity)
     --warmth = earned relational warmth (amber) — never chrome
     --sky    = the forward coaching look (provisional) — never chrome
   Structure is --slate; attention is --clay (small only); safeguarding is --safeguard-blue.
   Any use of green-as-data, amber or sky must NAME the data it encodes, or it is not that
   channel. Dark base: cream is ink + the record chip, never a page-card fill. */

:root {
  /* -- GROUND · the dark base ------------------------------------------------------- */
  --bg:                 #06110D;        /* the desk */
  --surface-page:       #0F2119;     /* page-card (journal register) */
  --surface-page-foot:  #0A1712;/* foot of the one sanctioned subtle page gradient */
  --surface-instrument: #111C24;/* instrument-card (cartographic register) */
  --surface-instr-foot: #0C141B;
  --edge-page:          #1B3327;        /* page-card hairline */
  --edge-instrument:    #243743;  /* instrument hairline (cooler) */

  /* -- INK · green-tinted neutrals --------------------------------------------------- */
  --ink:                #EEF6F0;              /* primary text on the dark base */
  --ink-muted:          #9FB6AA;        /* secondary text */
  --ink-faint:          #6F8A7D;        /* tertiary, section keys, quiet meta */

  /* -- GREEN · THE LEAD · identity + primary action + progress-affirmed -------------- */
  /* As DATA it means: progress you have made, affirmed. As the brand lead it is also the
     primary-action chrome. The ONE hue permitted to be chrome. */
  --green:              #10B981;            /* lead / brand / primary-action base */
  --green-hover:        #2CC996;      /* primary-action hover (lift) */
  --green-press:        #0E8F66;      /* primary-action press; also quiet confirm */
  --green-bright:       #34D399;     /* small accents on dark (eyebrow, tick) */
  --green-soft:         #0E2A20;       /* tinted panel behind green content */
  --green-ink:          #04170E;        /* text/glyph on a green fill */
  --sage:               #6F8F6B;             /* CONFIRMATION · muted system-truth green, kept DISTINCT from the lead green */
  --confirm:            #6F8F6B;          /* == --sage; a confirmation never reads as the lead/action green */

  /* -- WARMTH · RATIONED · earned relational warmth ONLY (amber) --------------------- */
  /* Never chrome. Three-step ramp = a relationship's temperature. */
  --warmth-1:           #6A5A44;         /* just-warming */
  --warmth-2:           #A9762C;         /* warming */
  --warmth-3:           #D97706;         /* hot — full earned warmth (marks/fills) */
  --warmth-text:        #E8A24C;      /* lifted amber for small warmth TEXT on dark */
  --warmth-soft:        #241D0A;      /* dark amber panel behind a warmth entry */

  /* -- SKY · the FORWARD COACHING LOOK (ruled third semantic) ------------------------ */
  /* Never chrome. Provisional, swappable. Any sky use must name the coaching data it encodes. */
  --sky:                #7DD3FC;              /* the channel — focus label, if/then rule */
  --sky-text:           #BDE6FF;         /* emphasized coaching text (the if/then pivots) */
  --sky-soft:           #0C1F2E;         /* coaching panel fill (flat; C1 inner-glow stripped) */
  --sky-edge:           #1C3A52;         /* coaching panel border */

  /* -- SLATE · STRUCTURE / neutral ink (NOT a data channel) -------------------------- */
  --slate:              #334155;
  --slate-dark:         #26323F;      /* one step darker — safeguarding panel + deep grounds */
  --slate-light:        #64748B;      /* secondary ink, neutral marks, outline star */

  /* -- ATTENTION · needs-attention / missed / stale --------------------------------- */
  --clay:               #A9604A;             /* small dot or label ONLY — never a filled banner */
  --clay-dot:           #C97D68;         /* lifted clay for a small dot on dark */

  /* -- RESERVED · safeguarding surface ONLY ----------------------------------------- */
  --safeguard-blue:     #35507A;   /* used nowhere else */
  --safeguard-blue-ink: #8FA9CE;/* legible tint for the SAFEGUARDING label (never a card-edge stripe) */

  /* -- PAPER · cream = ink + the record/badge chip (NOT a page-card fill on dark) ---- */
  --cream:              #FFF8F0;            /* badge/record chip ground; print paper */
  --cream-rule:         #E7DCC9;       /* 1px rule under an entry line on a cream chip */

  /* -- INTERACTIVE · chrome. Primary = the GREEN lead; secondary = neutral slate ----- */
  /* Amber and sky are NEVER interactive chrome. */
  --interactive:            #10B981;
  --interactive-hover:      #2CC996;
  --interactive-active:     #0E8F66;
  --interactive-ink:        #04170E;
  --interactive-2-ink:      #9FB6AA;    /* ghost/secondary label */
  --interactive-2-border:   #234034; /* ghost/secondary border */
  --interactive-2-hover:    #2F5343;  /* ghost border on hover */

  /* -- GLYPH CRAFT ------------------------------------------------------------------- */
  /* Action-icons are single NEUTRAL light ink by default. An icon may take its channel's
     semantic colour ONLY when it marks that channel's data (win-tick green, warmth mark
     amber); never decoratively. */
  --icon-stroke:        2px;
  --icon-ink:           #9FB6AA;

  /* -- MOTION · four moves, fire-once, ceiling 300ms (clock is the only ambient) --- */
  /* STRIPPED from the exemplar (all fail the discipline): breathing dot, shine sweep, waving
     hand, glow/inner-glow shadows. The look stays; the motion does not. */
  --motion-settle:      180ms;   /* a drained item compresses, its glyph fills */
  --motion-page-in:     200ms;  /* fade + 4px rise for any card */
  --motion-max:         300ms;      /* hard ceiling for any single move */
  /* backfill = generated tiles cross-fade in once (bounded by --motion-max; no skeleton shimmer).
     clock    = ambient countdown only; the sole looping motion. Neither loops elsewhere. */
}
