/* ============================================================
   KINETIC UI KIT · kernel.css · v1.0.0
   One kernel. Every Kinetic surface imports this file.
   Tokens are law. Drift is a bug. Do not restate these values.
   ============================================================ */

:root{
  /* ink scale */
  --fg:#E9E7E2;
  --muted:#9BA1A8;
  --dim:#5E666D;
  --faint:#3A424A;

  /* signal (one green, house-wide) */
  --green:#3CB44B;
  --green-b:#5BD86B;
  --green-dim:rgba(60,180,75,.10);

  /* alerts */
  --amber:#C9A44D;
  --red:#B96B5E;

  /* voices */
  --serif:'Cormorant Garamond',serif;
  --sans:'Satoshi',sans-serif;
  --mono:'Geist Mono',monospace;

  /* spacing scale (4px base, use these, never arbitrary values) */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px; --s8:64px;

  /* motion (Active Theory: style states are CSS-only, GPU-safe) */
  --t-fast:120ms; --t-base:180ms; --t-slow:300ms;
  --ease:cubic-bezier(.25,.1,.25,1);

  /* z-scale (never invent a z-index) */
  --z-nav:50; --z-gate:60; --z-modal:70; --z-toast:80;

  /* legacy aliases (fleet compatibility, do not use in new work) */
  --ink:var(--fg); --ink-2:var(--muted); --ink-3:var(--dim);
  --accent:var(--green); --accent-b:var(--green-b);
  --sig:var(--green); --sig-2:var(--green-b); --sig-dim:var(--green-dim);
}

*{margin:0;padding:0;box-sizing:border-box}
body{color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased}
::selection{background:rgba(60,180,75,.25)}

/* keyboard focus is law (Apple: a control without visible focus does not exist) */
:focus-visible{outline:1px solid var(--green);outline-offset:3px;border-radius:1px}
:focus:not(:focus-visible){outline:none}

/* three voices: serif states, mono proves, sans explains */
.mono{font-family:var(--mono)}
.kicker,.lbl{font-family:var(--mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--dim)}

/* screen-reader only */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* keyboard hint */
kbd{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;color:var(--dim);border:1px solid var(--faint);border-radius:3px;padding:2px 6px}

/* skeleton loading (shared shimmer, both screen registers) */
.skel{display:inline-block;background:var(--faint);opacity:.35;border-radius:2px;animation:k-skel 1.4s var(--ease) infinite;color:transparent!important;pointer-events:none;user-select:none}
@keyframes k-skel{0%,100%{opacity:.22}50%{opacity:.42}}

/* live pulse (data feels alive, signal only) */
.pulse{animation:k-pulse 2.2s var(--ease) infinite}
@keyframes k-pulse{0%,100%{opacity:1}50%{opacity:.45}}

/* reduced motion: everything still works with motion off */
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* scrollbars, quiet */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--faint);border-radius:5px}
::-webkit-scrollbar-track{background:transparent}
