/* Nouvelle Vague — Design tokens (colors, typography, spacing, effects, fonts).
   Single file: avoids a chain of @import / <link> requests for a handful of small files. */

@import url("https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,100..900;1,100..900&family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap");

/* ---- Colors ---- */
:root {
  /* Base brand palette */
  --nv-coral: #FF6B5B;        /* Corail Décisif — urgency, the decisive moment */
  --nv-violet: #5E3AAE;       /* Violet Profond — movement, singularity */
  --nv-blue: #102A4A;         /* Bleu Nuit — depth, structure */
  --nv-slate: #11161D;        /* Ardoise — the principal ground, gravity */
  --nv-ivory: #F4F2ED;        /* Ivoire — clarity, breathing room */

  /* Coral scale (accent) */
  --nv-coral-100: #FFE4DF;
  --nv-coral-300: #FFA495;
  --nv-coral-500: #FF6B5B;
  --nv-coral-600: #F0533F;
  --nv-coral-700: #D23B29;

  /* Violet scale */
  --nv-violet-300: #9A7BD6;
  --nv-violet-500: #5E3AAE;
  --nv-violet-700: #452782;

  /* Deep neutral scale (built around Ardoise / Bleu Nuit) */
  --nv-ink-950: #0B0F14;      /* deepest, near-black */
  --nv-ink-900: #11161D;      /* Ardoise */
  --nv-ink-800: #171E28;      /* raised surface on dark */
  --nv-ink-700: #1F2A38;      /* borders / hairlines on dark */
  --nv-ink-600: #2C3A4C;
  --nv-navy-900: #102A4A;     /* Bleu Nuit */
  --nv-navy-700: #1B3A63;

  /* Ivory / light neutral scale */
  --nv-paper: #F4F2ED;        /* Ivoire */
  --nv-paper-200: #E7E3DA;    /* ivory borders */
  --nv-paper-300: #D6D1C6;
  --nv-mist: #FBFAF7;         /* lightest paper */

  /* Cool greys for muted text */
  --nv-grey-400: #8A94A3;
  --nv-grey-500: #6A7484;
  --nv-grey-600: #4C5563;

  /* Impact green — use ONLY punctually for proof-of-impact data */
  --nv-impact: #3FB98A;

  /* ================= Semantic aliases ================= */
  /* Surfaces */
  --surface-base: var(--nv-ink-900);      /* default dark page */
  --surface-raised: var(--nv-ink-800);    /* cards on dark */
  --surface-sunken: var(--nv-ink-950);
  --surface-navy: var(--nv-navy-900);     /* institutional deep panels */
  --surface-paper: var(--nv-paper);       /* editorial light sections */
  --surface-paper-raised: var(--nv-mist); /* cards on paper */

  /* Text on dark */
  --text-strong: var(--nv-ivory);
  --text-body: #C9CFD8;
  --text-muted: var(--nv-grey-400);
  /* Text on paper */
  --text-strong-ink: #14181F;
  --text-body-ink: #3A414D;
  --text-muted-ink: var(--nv-grey-500);

  /* Accent roles */
  --accent: var(--nv-coral);
  --accent-hover: var(--nv-coral-600);
  --accent-press: var(--nv-coral-700);
  --accent-contrast: #FFFFFF;

  /* Borders */
  --border-dark: var(--nv-ink-700);
  --border-dark-strong: var(--nv-ink-600);
  --border-paper: var(--nv-paper-200);
  --focus-ring: var(--nv-coral);

  /* Feedback */
  --danger: #FF6B5B;
  --success: var(--nv-impact);
}

/* ---- Typography ---- */
:root {
  --font-serif: "Playfair Display", "Iowan Old Style", Georgia, serif;
  --font-sans: "Inter", -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;

  /* Display / editorial titles — Playfair */
  --font-display: var(--font-serif);
  --font-body: var(--font-sans);

  /* Type scale (px) — editorial, generous */
  --text-display: 76px;   /* hero */
  --text-h1: 56px;
  --text-h2: 40px;
  --text-h3: 28px;
  --text-h4: 22px;
  --text-lead: 20px;      /* intro paragraphs */
  --text-base: 16px;
  --text-sm: 14px;
  --text-xs: 12px;
  --text-eyebrow: 12px;   /* tracked labels / section kickers */

  /* Line heights */
  --lh-tight: 1.05;
  --lh-snug: 1.2;
  --lh-normal: 1.55;      /* body copy */
  --lh-relaxed: 1.7;

  /* Weights */
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;

  /* Letter spacing */
  --tracking-eyebrow: 0.22em;  /* the tracked kickers seen across the brand */
  --tracking-tight: -0.02em;   /* large serif */
  --tracking-normal: 0;
}

/* ---- Spacing & sizing ---- */
:root {
  /* Scale seen on the brand sheet: 4, 8, 16, 24, 32, 48, 64 */
  --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;

  /* Border radii (px): 4, 8, 12, 16, 24 */
  --radius-xs: 4px;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  --radius-pill: 999px;

  /* Layout */
  --container-max: 1200px;
  --gutter: 24px;
}

/* ---- Effects: gradients, light, shadows, motion ---- */
:root {
  /* Signature gradients */
  --gradient-brand: linear-gradient(90deg, #FF6B5B 0%, #5E3AAE 52%, #2A4FD8 100%);
  --gradient-brand-135: linear-gradient(135deg, #FF6B5B 0%, #5E3AAE 52%, #2A4FD8 100%);
  --gradient-coral-violet: linear-gradient(120deg, #FF6B5B 0%, #5E3AAE 100%);
  --gradient-violet-blue: linear-gradient(120deg, #5E3AAE 0%, #102A4A 100%);
  --gradient-depth: linear-gradient(180deg, #102A4A 0%, #11161D 100%);
  --gradient-night: radial-gradient(120% 120% at 50% -10%, #1A2233 0%, #11161D 55%, #0B0F14 100%);

  /* Ambient light — a faint incandescent halo / point of light */
  --glow-coral: radial-gradient(50% 50% at 50% 50%, rgba(255,107,91,0.55) 0%, rgba(255,107,91,0) 70%);
  --glow-brand: radial-gradient(60% 60% at 50% 50%, rgba(94,58,174,0.45) 0%, rgba(42,79,216,0.12) 45%, rgba(255,107,91,0) 75%);

  /* Shadows (dark-first) */
  --shadow-soft: 0 4px 20px rgba(0,0,0,0.35);
  --shadow-medium: 0 8px 30px rgba(0,0,0,0.5);
  --shadow-high: 0 16px 60px rgba(0,0,0,0.65);
  /* Coral signal glow — for the luminous point / decisive marker */
  --shadow-glow-coral: 0 0 24px rgba(255,107,91,0.5), 0 0 4px rgba(255,107,91,0.9);
  /* Soft shadow for cards on paper */
  --shadow-paper: 0 8px 30px rgba(17,22,29,0.10);

  /* Motion */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-fast: 140ms;
  --dur: 240ms;
  --dur-slow: 500ms;

  /* Hairline used for the trajectory / inflection lines */
  --line-coral: 1.5px;
}
