/**
 * Nexpoise Design Tokens v1.0
 * ─────────────────────────────────────────────
 * Brand: Nexpoise OSINT / Attack Surface Intelligence
 * Logo:  Prism (02) — violet parallelogram mark
 * Fonts: IBM Plex Sans (UI/Body) · IBM Plex Mono (Daten/Code) — self-hosted,
 *        siehe fonts.css. Space Grotesk ist nur für die Wortmarke reserviert.
 * ─────────────────────────────────────────────
 */

:root {

  /* ── Typefaces ─────────────────────────── */
  --nex-font-sans: 'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;
  --nex-font-mono: 'IBM Plex Mono', 'Courier New', monospace;
  --nex-font-wordmark: 'Space Grotesk', 'Helvetica Neue', Arial, sans-serif;

  /* ── Dark Surfaces (Web) ───────────────── */
  --nex-bg:             #07070f;   /* page background          */
  --nex-bg-raised:      #0d0d1a;   /* cards, sidebar           */
  --nex-bg-overlay:     #131326;   /* modals, dropdowns        */
  --nex-border:         #1a1a32;   /* subtle dividers          */
  --nex-border-strong:  #2e2e50;   /* visible borders          */

  --nex-text-primary:   #e8e8f8;   /* headings, key content    */
  --nex-text-body:      #c4c4dc;   /* body copy                */
  --nex-text-dim:       #6868a0;   /* captions, meta           */
  --nex-text-faint:     #3a3a5c;   /* disabled, placeholders   */

  /* ── Light Surfaces (PDF / Reports) ───── */
  --nex-bg-l:           #f4f3f8;
  --nex-bg-raised-l:    #ffffff;
  --nex-border-l:       #e0ddf0;
  --nex-border-strong-l:#c8c3e8;

  --nex-text-primary-l: #12102a;
  --nex-text-body-l:    #3a3560;
  --nex-text-dim-l:     #8888aa;

  /* ── Brand: Violet (Primary) ───────────── */
  --nex-violet:         #9b6dff;
  --nex-violet-hover:   #b08dff;
  --nex-violet-active:  #7a4ce0;
  --nex-violet-faint:   rgba(155, 109, 255, 0.10);
  --nex-violet-border:  rgba(155, 109, 255, 0.28);

  /* ── Brand: Teal (Found · Low Risk) ───── */
  --nex-teal:           #00c9a7;
  --nex-teal-faint:     rgba(0, 201, 167, 0.10);

  /* ── Brand: Amber (Warning · Medium) ──── */
  --nex-amber:          #f5a623;
  --nex-amber-faint:    rgba(245, 166, 35, 0.10);

  /* ── Brand: Red (Critical · High Risk) ── */
  --nex-red:            #ff4060;
  --nex-red-faint:      rgba(255, 64, 96, 0.10);

  /* ── Type Scale ────────────────────────── */
  --nex-text-xs:        11px;
  --nex-text-sm:        13px;
  --nex-text-base:      15px;
  --nex-text-md:        18px;
  --nex-text-lg:        24px;
  --nex-text-xl:        32px;
  --nex-text-2xl:       48px;
  --nex-text-3xl:       72px;

  /* ── Spacing (base-4) ──────────────────── */
  --nex-s1:   4px;
  --nex-s2:   8px;
  --nex-s3:  12px;
  --nex-s4:  16px;
  --nex-s5:  24px;
  --nex-s6:  32px;
  --nex-s7:  48px;
  --nex-s8:  64px;
  --nex-s9:  96px;
  --nex-s10: 128px;

  /* ── Border Radius ─────────────────────── */
  --nex-r-sm:   3px;
  --nex-r-md:   6px;
  --nex-r-lg:  10px;
  --nex-r-xl:  16px;
  --nex-r-full: 9999px;

  /* ── Shadows ───────────────────────────── */
  --nex-shadow-sm:   0 1px 3px rgba(0, 0, 0, 0.40);
  --nex-shadow-md:   0 4px 16px rgba(0, 0, 0, 0.50);
  --nex-shadow-lg:   0 8px 32px rgba(0, 0, 0, 0.60);
  --nex-shadow-glow: 0 0 24px rgba(155, 109, 255, 0.15);

  /* ── Z-index ───────────────────────────── */
  --nex-z-base:    0;
  --nex-z-raised:  10;
  --nex-z-overlay: 100;
  --nex-z-modal:   200;
  --nex-z-toast:   300;

  /* ── Transitions ───────────────────────── */
  --nex-transition-fast:   0.10s ease;
  --nex-transition-base:   0.15s ease;
  --nex-transition-slow:   0.25s ease;
}
