/* ============================================================
   BRAHVO.AI — Foundations
   Colors + Typography as CSS variables.
   Import this file into any page that uses the brand.
   ============================================================ */

/* ------------------------------------------------------------
   Fonts
   - Headings/Logo: NOFEX (commercial, not bundled) →
     FALLBACK: Anton (Google Fonts) — closest free match:
     condensed, all-caps, heavy display sans.
     ⚠ If you have the NOFEX font file, drop it in /fonts/ and
        swap the @font-face src below.
   - Accent: Caveat 700 (Google Fonts) — always paints on #B3FF00.
   - Body/Interface: Barlow Condensed 300/500 (Google Fonts).
   ------------------------------------------------------------ */
@import url('https://fonts.googleapis.com/css2?family=Anton&family=Barlow+Condensed:wght@300;400;500;600;700&family=Caveat:wght@400;500;600;700&display=swap');

/* If you ship a real NOFEX.woff2, uncomment:
@font-face {
  font-family: 'NOFEX';
  src: url('./fonts/NOFEX.woff2') format('woff2');
  font-weight: 900;
  font-style: normal;
  font-display: swap;
}
*/

:root {
  /* ----------------------------------------------------------
     COLORS — base palette
     ---------------------------------------------------------- */
  /* Brand signature */
  --brahvo-lime:        #B3FF00;   /* HERO accent — use sparingly, impact */
  --brahvo-lime-ink:    #0D0D0D;   /* Ink that lives on lime */

  /* Ink / neutrals */
  --ink-000:            #000000;
  --ink-900:            #0D0D0D;   /* Near-black — primary surface */
  --ink-800:            #151515;
  --ink-700:            #1C1C1C;   /* Card bg on black */
  --ink-600:            #2A2A2A;   /* Border on black */
  --ink-500:            #3D3D3D;   /* Divider */
  --ink-400:            #6B6B6B;   /* Muted text */
  --ink-300:            #9A9A9A;
  --ink-200:            #C9C9C9;
  --ink-100:            #E8E8E8;
  --ink-050:            #F3F3F3;
  --ink-000-paper:      #FFFFFF;

  /* Lime variations — for hovers, accents, states */
  --lime-500:           #B3FF00;   /* canonical */
  --lime-400:           #C7FF4D;   /* hover/lighter */
  --lime-600:           #95D600;   /* pressed/darker */
  --lime-dim:           rgba(179, 255, 0, 0.15);  /* halos, highlight bg */
  --lime-glow:          rgba(179, 255, 0, 0.35);

  /* Semantic */
  --success:            #B3FF00;
  --danger:             #FF3B2F;
  --warning:            #FFB020;
  --info:               #4DA3FF;

  /* ----------------------------------------------------------
     SURFACES — named roles
     ---------------------------------------------------------- */
  --bg-primary:         var(--ink-900);
  --bg-secondary:       var(--ink-800);
  --bg-raised:          var(--ink-700);
  --bg-accent:          var(--lime-500);
  --bg-inverse:         var(--ink-000-paper);

  --fg-primary:         var(--ink-000-paper);
  --fg-secondary:       var(--ink-200);
  --fg-muted:           var(--ink-400);
  --fg-accent:          var(--lime-500);
  --fg-on-accent:       var(--ink-900);
  --fg-on-paper:        var(--ink-900);

  --border-subtle:      var(--ink-600);
  --border-strong:      var(--ink-500);
  --border-accent:      var(--lime-500);

  /* ----------------------------------------------------------
     TYPOGRAPHY — families
     ---------------------------------------------------------- */
  --font-display:       'NOFEX', 'Anton', 'Arial Black', sans-serif;
  --font-accent:        'Caveat', 'Brush Script MT', cursive;
  --font-body:          'Barlow Condensed', 'Oswald', 'Arial Narrow', sans-serif;

  /* Sizes — scaled for impact-heavy display */
  --fs-display-xl:      clamp(4rem, 10vw, 9rem);      /* hero lockup */
  --fs-display-lg:      clamp(3rem, 6vw, 5.5rem);
  --fs-display-md:      clamp(2rem, 4vw, 3.5rem);
  --fs-h1:              2.75rem;    /* 44px */
  --fs-h2:              2rem;       /* 32px */
  --fs-h3:              1.5rem;     /* 24px */
  --fs-h4:              1.25rem;    /* 20px */
  --fs-body:            1rem;       /* 16px */
  --fs-body-lg:         1.125rem;   /* 18px */
  --fs-small:           0.875rem;   /* 14px */
  --fs-label:           0.75rem;    /* 12px — uppercase labels */
  --fs-accent-md:       2rem;       /* Caveat display */
  --fs-accent-lg:       3.25rem;

  /* Line heights */
  --lh-tight:           0.92;
  --lh-snug:            1.05;
  --lh-normal:          1.2;
  --lh-relaxed:         1.45;

  /* Tracking (letter-spacing) */
  --ls-display:         -0.01em;    /* NOFEX/Anton is already tight */
  --ls-body:            0.04em;     /* 1-2px at 16px — brand rule */
  --ls-label:           0.14em;     /* Uppercase labels */
  --ls-button:          0.1em;

  /* ----------------------------------------------------------
     SPACING SCALE — 4px base
     ---------------------------------------------------------- */
  --space-0:  0;
  --space-1:  4px;
  --space-2:  8px;
  --space-3:  12px;
  --space-4:  16px;
  --space-5:  24px;
  --space-6:  32px;
  --space-7:  48px;
  --space-8:  64px;
  --space-9:  96px;
  --space-10: 128px;

  /* ----------------------------------------------------------
     RADII — Brahvo runs SHARP. Mostly 0 or tiny.
     ---------------------------------------------------------- */
  --radius-0:  0;
  --radius-1:  2px;
  --radius-2:  4px;
  --radius-3:  8px;
  --radius-pill: 999px;

  /* ----------------------------------------------------------
     SHADOWS / GLOWS
     ---------------------------------------------------------- */
  --shadow-sm:   0 2px 6px rgba(0,0,0,0.35);
  --shadow-md:   0 8px 24px rgba(0,0,0,0.45);
  --shadow-lg:   0 20px 60px rgba(0,0,0,0.55);
  --shadow-lime: 0 0 0 2px var(--lime-500), 0 0 32px var(--lime-glow);
  --shadow-lime-hard: 6px 6px 0 var(--lime-500);  /* offset hard shadow */

  /* ----------------------------------------------------------
     MOTION
     ---------------------------------------------------------- */
  --ease-out-expo:  cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out:    cubic-bezier(0.65, 0, 0.35, 1);
  --dur-fast:       120ms;
  --dur-base:       220ms;
  --dur-slow:       420ms;
}

/* ============================================================
   SEMANTIC TYPE STYLES — use these as classes or @extend-equivalent
   ============================================================ */

.display-xl, .display-lg, .display-md, h1, h2, h3, h4,
.brahvo-display {
  font-family: var(--font-display);
  font-weight: 400;         /* Anton is already black; NOFEX is heavy */
  text-transform: uppercase;
  letter-spacing: var(--ls-display);
  line-height: var(--lh-tight);
  color: var(--fg-primary);
}

.display-xl { font-size: var(--fs-display-xl); }
.display-lg { font-size: var(--fs-display-lg); }
.display-md { font-size: var(--fs-display-md); }

h1 { font-size: var(--fs-h1); line-height: var(--lh-snug); }
h2 { font-size: var(--fs-h2); line-height: var(--lh-snug); }
h3 { font-size: var(--fs-h3); line-height: var(--lh-normal); }
h4 { font-size: var(--fs-h4); line-height: var(--lh-normal); }

p, body, .body {
  font-family: var(--font-body);
  font-weight: 300;
  font-size: var(--fs-body);
  line-height: var(--lh-relaxed);
  letter-spacing: var(--ls-body);
  color: var(--fg-secondary);
}

.body-strong { font-weight: 500; color: var(--fg-primary); }
.body-lg     { font-size: var(--fs-body-lg); }
.body-sm     { font-size: var(--fs-small); }

/* Uppercase interface labels — the Brahvo signature */
.label, .eyebrow, .overline {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: var(--fs-label);
  text-transform: uppercase;
  letter-spacing: var(--ls-label);
  color: var(--fg-muted);
}

/* Accent — Caveat, ALWAYS lime */
.accent, .brahvo-accent {
  font-family: var(--font-accent);
  font-weight: 700;
  color: var(--lime-500);
  font-size: var(--fs-accent-md);
  line-height: 1;
  transform: rotate(-3deg);     /* handwritten tilt */
  display: inline-block;
}
.accent-lg { font-size: var(--fs-accent-lg); }

/* Monospace for tech/code */
code, pre, .mono {
  font-family: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;
  font-size: 0.95em;
  letter-spacing: 0;
  color: var(--lime-500);
  background: var(--ink-800);
  padding: 2px 6px;
  border-radius: var(--radius-1);
}

/* Links */
a {
  color: var(--lime-500);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color var(--dur-base) var(--ease-out-expo);
}
a:hover { border-bottom-color: var(--lime-500); }

/* Helpers */
.text-lime   { color: var(--lime-500); }
.text-muted  { color: var(--fg-muted); }
.text-paper  { color: var(--fg-primary); }
.bg-ink      { background: var(--bg-primary); }
.bg-lime     { background: var(--lime-500); color: var(--fg-on-accent); }
.bg-paper    { background: var(--bg-inverse); color: var(--fg-on-paper); }
