/* ==========================================================================
   NeuroHype — Design Tokens
   Source of truth: repos/assets/NeuroHype_Visual_System_LOCKED_FINAL.pdf
   Human-readable provenance: repos/assets/VISUAL_SYSTEM_EXTRACT.md

   These values are LOCKED. They are not suggestions, defaults, or a starting
   palette. "Colors carry meaning, never decoration. Never swapped."
   Changing a value here is a founder decision, not a styling decision.
   ========================================================================== */

:root {
  /* --- Mode colors — locked, never swapped -------------------------------- */
  --nh-boost:    #EF9E33;
  --nh-control:  #32C9E4;
  --nh-restore:  #7E58E3;

  /* --- Identity blue -------------------------------------------------------
     Founder ruling 2026-07-28: recovered canon, not an amendment. #32C9E4 is
     ALSO the NeuroHype identity colour — the founder's lifelong colour, worn at
     TEDx, the wordmark's true shade. It was lost in the freeze by omission
     rather than by decision. Pending Visual System v1.1 errata.

     TWO REGISTERS, SAME HEX, STRICTLY SCOPED. They are separate tokens on
     purpose: if either register's value ever moves, the other must not follow.

       --nh-identity  wordmark, logo lockups, brand marks ONLY
       --nh-control   the Control mode — meters, mode cards, chips, all product UI

     The identity register NEVER appears inside the instrument. No blue headers,
     washes or UI tints: blue inside the instrument reads as Control and breaks
     mode legibility. If you are tinting UI, you want --nh-control or nothing. */
  --nh-identity: #32C9E4;

  /* --- nico pink ---------------------------------------------------------
     AI layer and CTAs ONLY. Pink means "the AI is talking."
     Using this for decoration breaks the signal — including on a wordmark. */
  --nh-nico-pink: #EA198E;

  /* --- Surfaces — DARK ONLY ----------------------------------------------
     "Kill every light background, including light-gradient section covers."
     lint-brand errors on any light background color. */
  --nh-bg:      #1D1D1B;
  --nh-card-1:  #252523;
  --nh-card-2:  #2C2C2A;
  --nh-card-3:  #323230;

  /* --- White text ladder — 100 / 84 / 50 / 32 / 9% ------------------------ */
  --nh-text-100: rgba(255, 255, 255, 1);
  --nh-text-84:  rgba(255, 255, 255, 0.84);
  --nh-text-50:  rgba(255, 255, 255, 0.50);
  --nh-text-32:  rgba(255, 255, 255, 0.32);
  --nh-text-09:  rgba(255, 255, 255, 0.09);

  /* --- Gradient heart — rebuilt from the exact hexes ----------------------
     The PDF flags current draft values as "close but wrong". These are right. */
  --nh-gradient-heart: linear-gradient(
    90deg,
    var(--nh-boost)   0%,
    var(--nh-control) 50%,
    var(--nh-restore) 100%
  );

  /* --- Type stack --------------------------------------------------------
     Anton + DM Sans + DM Mono. Final.
     League Gothic and Helvetica Neue are retired — do not carry forward.
     No Inter, Roboto, or system fonts.
     Generic families below are last-resort fallbacks only, not a second stack. */
  --nh-font-display: "Anton", sans-serif;    /* headlines, mode names, hooks — UPPERCASE */
  --nh-font-body:    "DM Sans", sans-serif;  /* body — 1–3 sentence blocks */
  --nh-font-mono:    "DM Mono", monospace;   /* labels, metadata, tickers, system text */

  /* --- Component constants ----------------------------------------------- */
  --nh-mode-card-border: 3px;  /* mode card left border, in the mode color */

  /* --- Motion ------------------------------------------------------------
     "Transitions are the thesis" — colors flow like the waveform, bars rise
     and settle, dial sweeps. No bounces, no confetti, no pulse-glow. */
  --nh-ease-signal: cubic-bezier(0.4, 0.0, 0.2, 1);
  --nh-dur-settle:  420ms;
  --nh-dur-sweep:   680ms;
}

/* --- Mode scoping ---------------------------------------------------------
   Set --nh-mode on a container; children read one variable instead of
   branching per mode. Keeps mode color from being hardcoded at call sites. */
[data-mode="boost"]   { --nh-mode: var(--nh-boost); }
[data-mode="control"] { --nh-mode: var(--nh-control); }
[data-mode="restore"] { --nh-mode: var(--nh-restore); }

/* --- Base ---------------------------------------------------------------- */
html {
  background: var(--nh-bg);
  color: var(--nh-text-84);
  font-family: var(--nh-font-body);
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}
