/* ==========================================================================
   Nextgen Finance — Design tokens (fonts · colors · typography · spacing · base)
   Single consumer file. Generated from the design-system handoff bundle.
   ========================================================================== */

/* ---- Webfonts (free Google Fonts: Montserrat ≈ Brandon Grotesque, Mulish ≈ Avenir) ---- */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800;900&family=Mulish:wght@300;400;500;600;700;800&display=swap');

:root {
  /* ====================== Color ====================== */
  /* Brand: Lime (primary) */
  --lime-700: #5e9707;   /* pressed / deep */
  --lime-600: #74b022;   /* hover */
  --lime-500: #8bc540;   /* PRIMARY — the logo swoosh */
  --lime-300: #b6dd87;
  --lime-100: #e9f4d7;   /* tint surface */
  --lime-50:  #f4f9ec;

  /* Brand: Sage (secondary / heritage) */
  --sage-700: #5d6a48;
  --sage-600: #73825c;
  --sage-500: #86976c;
  --sage-200: #cfd6c0;
  --sage-100: #eceee4;

  /* Ink & neutrals */
  --ink-900: #141a1b;
  --ink-800: #17252a;
  --ink-700: #2c3539;
  --gray-600: #5c6063;
  --gray-500: #757474;
  --gray-400: #9aa0a0;
  --gray-300: #c9cdcd;
  --gray-200: #e4e7e6;
  --gray-100: #f1f3f2;
  --gray-50:  #f8faf9;
  --white:    #ffffff;

  /* Status */
  --success: #5e9707;
  --warning: #e8a33d;
  --danger:  #d2453b;
  --info:    #3d7ea8;

  /* Semantic aliases */
  --brand:            var(--lime-500);
  --brand-hover:      var(--lime-600);
  --brand-pressed:    var(--lime-700);
  --brand-contrast:   var(--ink-900);

  --text-strong:      var(--ink-900);
  --text-body:        var(--gray-600);
  --text-muted:       var(--gray-400);
  --text-on-dark:     var(--white);
  --text-on-brand:    var(--ink-900);
  --text-link:        var(--sage-600);
  --text-link-hover:  var(--lime-600);

  --surface-page:     var(--white);
  --surface-subtle:   var(--gray-50);
  --surface-card:     var(--white);
  --surface-tint:     var(--lime-50);
  --surface-dark:     var(--ink-800);
  --surface-inverse:  var(--ink-900);

  --border-subtle:    var(--gray-200);
  --border-default:   var(--gray-300);
  --border-strong:    var(--ink-900);
  --border-brand:     var(--lime-500);

  --focus-ring:       color-mix(in srgb, var(--lime-500) 55%, transparent);

  /* ====================== Typography ====================== */
  --font-display: "Montserrat", system-ui, sans-serif;
  --font-body:    "Mulish", system-ui, sans-serif;
  --font-accent:  "Montserrat", system-ui, sans-serif;

  --fw-light: 300;
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-bold: 700;
  --fw-black: 900;

  --text-xs:   0.75rem;
  --text-sm:   0.875rem;
  --text-base: 1rem;
  --text-md:   1.125rem;
  --text-lg:   1.375rem;
  --text-xl:   1.75rem;
  --text-2xl:  2.25rem;
  --text-3xl:  3rem;
  --text-4xl:  4rem;
  --text-5xl:  5.5rem;

  --leading-tight: 1.08;
  --leading-snug: 1.25;
  --leading-normal: 1.45;
  --leading-relaxed: 1.6;

  --tracking-tight: -0.01em;
  --tracking-normal: 0;
  --tracking-wide: 0.06em;
  --tracking-overline: 0.22em;
  --tracking-lulo: 0.12em;

  /* ====================== Spacing / radii / shadows / motion ====================== */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 3rem;
  --space-8: 4rem;
  --space-9: 6rem;
  --space-10: 8rem;

  --section-y: 5.625rem;     /* 90px */
  --section-y-md: 3.75rem;   /* 60px */
  --section-y-sm: 1.875rem;  /* 30px */
  --container-max: 1232px;

  --radius-sm: 6px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  --radius-pill: 999px;

  --border-width: 1px;
  --border-width-strong: 2px;

  --shadow-xs: 0 1px 2px rgba(20, 26, 27, 0.06);
  --shadow-sm: 0 2px 6px rgba(20, 26, 27, 0.07);
  --shadow-md: 0 8px 24px rgba(20, 26, 27, 0.09);
  --shadow-lg: 0 20px 48px rgba(20, 26, 27, 0.12);
  --shadow-brand: 0 10px 28px color-mix(in srgb, var(--lime-500) 34%, transparent);

  --ease-standard: cubic-bezier(0.22, 0.61, 0.36, 1);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --duration-fast: 140ms;
  --duration-base: 220ms;
  --duration-slow: 360ms;
}

/* ====================== Base element styles ====================== */
* { box-sizing: border-box; }

html, body { margin: 0; background: var(--white); }

body {
  font-family: var(--font-body);
  font-weight: var(--fw-regular);
  font-size: var(--text-md);
  line-height: var(--leading-relaxed);
  color: var(--text-body);
  background: var(--surface-page);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  color: var(--text-strong);
  font-weight: var(--fw-bold);
  line-height: var(--leading-tight);
  margin: 0 0 var(--space-4);
  text-wrap: balance;
}

h1 { font-size: var(--text-4xl); letter-spacing: var(--tracking-tight); }
h2 { font-size: var(--text-3xl); letter-spacing: var(--tracking-tight); }
h3 { font-size: var(--text-2xl); }
h4 { font-size: var(--text-xl); }
h5 { font-size: var(--text-lg); }
h6 { font-size: var(--text-md); }

p { margin: 0 0 var(--space-4); text-wrap: pretty; }

a { color: var(--text-link); text-decoration: none; transition: color var(--duration-fast) var(--ease-standard); }
a:hover { color: var(--text-link-hover); }

strong { font-weight: var(--fw-bold); color: var(--text-strong); }

.overline {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-overline);
  font-size: var(--text-sm);
  color: var(--brand);
}

::selection { background: var(--lime-300); color: var(--ink-900); }

:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 2px; }
