/* =============================================================
   Clutch Events — Foundations
   Colors + Type tokens
   ============================================================= */

/* ---------- Webfonts ---------- */
@font-face {
  font-family: "PP Neue Montreal";
  src: url("fonts/PPNeueMontreal-Thin.otf") format("opentype");
  font-weight: 100; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "PP Neue Montreal";
  src: url("fonts/PPNeueMontreal-Book.otf") format("opentype");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "PP Neue Montreal";
  src: url("fonts/PPNeueMontreal-Italic.otf") format("opentype");
  font-weight: 400; font-style: italic; font-display: swap;
}
@font-face {
  font-family: "PP Neue Montreal";
  src: url("fonts/PPNeueMontreal-Medium.otf") format("opentype");
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "PP Neue Montreal";
  src: url("fonts/PPNeueMontreal-SemiBoldItalic.otf") format("opentype");
  font-weight: 600; font-style: italic; font-display: swap;
}
@font-face {
  font-family: "PP Neue Montreal";
  src: url("fonts/PPNeueMontreal-Bold.otf") format("opentype");
  font-weight: 700; font-style: normal; font-display: swap;
}

@font-face {
  font-family: "IBM Plex Mono";
  src: url("fonts/IBMPlexMono-Light.ttf") format("truetype");
  font-weight: 300; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("fonts/IBMPlexMono-Regular.ttf") format("truetype");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("fonts/IBMPlexMono-Italic.ttf") format("truetype");
  font-weight: 400; font-style: italic; font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("fonts/IBMPlexMono-Medium.ttf") format("truetype");
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("fonts/IBMPlexMono-SemiBold.ttf") format("truetype");
  font-weight: 600; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("fonts/IBMPlexMono-Bold.ttf") format("truetype");
  font-weight: 700; font-style: normal; font-display: swap;
}

/* ---------- Tokens ---------- */
:root {
  /* Brand color — the signature Clutch red-orange.
     Sampled from the website hero "Get In Touch" CTA + accent dot in logo. */
  --clutch-red: #FF3B1F;          /* Primary brand accent */
  --clutch-red-hover: #FF5638;    /* Hover (slightly lighter) */
  --clutch-red-press: #E0301A;    /* Pressed (slightly darker) */
  --clutch-red-tint: #2A0E08;     /* Red tinted near-black for badges on dark */

  /* Neutrals — the brand is built on near-black + paper white */
  --black: #000000;          /* Page background — true black */
  --ink: #0A0A0A;            /* Primary surface */
  --surface-1: #111111;      /* Card surface */
  --surface-2: #1A1A1A;      /* Elevated card */
  --surface-3: #232323;      /* Hover surface */
  --hairline: #2A2A2A;       /* Dividers / 1px borders on dark */
  --hairline-strong: #3A3A3A;

  /* Foreground on dark */
  --fg-1: #FFFFFF;           /* Primary text */
  --fg-2: #C7C7C7;           /* Secondary text — body copy */
  --fg-3: #8A8A8A;           /* Tertiary — meta, timestamps */
  --fg-4: #5A5A5A;           /* Quaternary — disabled */

  /* Foreground on light (for occasional inverted surfaces) */
  --fg-on-light-1: #0A0A0A;
  --fg-on-light-2: #4A4A4A;
  --fg-on-light-3: #8A8A8A;

  /* Light surfaces (rare; used in CTAs and badges) */
  --paper: #FFFFFF;
  --paper-2: #F4F4F4;

  /* Semantic */
  --success: #2E9E6A;
  --warning: #E0A33A;
  --danger:  var(--clutch-red);
  --info:    #4A90E2;

  /* ---------- Type families ---------- */
  --font-display: "PP Neue Montreal", "Inter", system-ui, -apple-system, sans-serif;
  --font-body:    "PP Neue Montreal", "Inter", system-ui, -apple-system, sans-serif;
  --font-mono:    "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;

  /* ---------- Type scale ---------- */
  /* Display sizes are huge — Clutch's headlines are oversize and tight */
  --fs-display-1: clamp(56px, 7vw, 112px);  /* Hero headlines */
  --fs-display-2: clamp(44px, 5.5vw, 80px); /* Section heroes */
  --fs-h1: clamp(36px, 3.6vw, 56px);
  --fs-h2: clamp(28px, 2.8vw, 40px);
  --fs-h3: 24px;
  --fs-h4: 20px;
  --fs-body-lg: 18px;
  --fs-body:    16px;
  --fs-body-sm: 14px;
  --fs-caption: 12px;

  /* Eyebrow / mono label — the "SERVICES" / "CASE STUDIES" red mono labels */
  --fs-eyebrow: 12px;

  /* Line heights */
  --lh-tight: 1.0;     /* Display headlines */
  --lh-snug: 1.1;      /* H1/H2 */
  --lh-normal: 1.4;
  --lh-body: 1.55;
  --lh-loose: 1.7;

  /* Letter spacing */
  --ls-tight: -0.02em;   /* Display */
  --ls-snug:  -0.01em;   /* Headlines */
  --ls-normal: 0;
  --ls-mono:   0.04em;   /* Mono labels */
  --ls-mono-loose: 0.12em; /* Eyebrows in mono — wide-tracked */

  /* ---------- Spacing scale ---------- */
  --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;
  --space-11: 160px;

  /* ---------- Radii ---------- */
  --radius-xs: 2px;
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  --radius-2xl: 32px;
  --radius-pill: 999px;

  /* Cards on website use a generous ~12-16px radius;
     CTAs use a tighter ~10-12px radius;
     buttons in primary CTA position use a 10px radius */
  --radius-card: 14px;
  --radius-button: 10px;

  /* ---------- Shadows ---------- */
  /* The brand is mostly flat on black; shadows used sparingly,
     mostly for floating panels over imagery */
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
  --shadow-md: 0 8px 24px rgba(0, 0, 0, 0.45);
  --shadow-lg: 0 24px 60px rgba(0, 0, 0, 0.55);
  --shadow-cta: 0 6px 20px rgba(255, 59, 31, 0.25);

  /* ---------- Motion ---------- */
  --ease-standard: cubic-bezier(0.2, 0.6, 0.2, 1);
  --ease-out:      cubic-bezier(0, 0, 0.2, 1);
  --ease-in-out:   cubic-bezier(0.4, 0, 0.2, 1);
  --dur-fast: 120ms;
  --dur-base: 200ms;
  --dur-slow: 360ms;

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

/* =============================================================
   Semantic typography classes
   ============================================================= */
html, body {
  background: var(--black);
  color: var(--fg-1);
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

.display-1, h1.display, .hero-headline {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--fs-display-1);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
}
.display-2 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--fs-display-2);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
}

h1, .h1 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--fs-h1);
  line-height: var(--lh-snug);
  letter-spacing: var(--ls-snug);
}
h2, .h2 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--fs-h2);
  line-height: var(--lh-snug);
  letter-spacing: var(--ls-snug);
}
h3, .h3 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--fs-h3);
  line-height: var(--lh-normal);
}
h4, .h4 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--fs-h4);
  line-height: var(--lh-normal);
}

p, .p {
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--fg-2);
  text-wrap: pretty;
}
.p-lg { font-size: var(--fs-body-lg); }
.p-sm { font-size: var(--fs-body-sm); }

/* The signature mono label — used as section eyebrow,
   tags, navigation small print, breadcrumbs.
   Always uppercase, wide-tracked, in red on dark. */
.eyebrow, .mono-label {
  font-family: var(--font-mono);
  font-size: var(--fs-eyebrow);
  font-weight: 400;
  letter-spacing: var(--ls-mono-loose);
  text-transform: uppercase;
  color: var(--clutch-red);
}
.mono {
  font-family: var(--font-mono);
  letter-spacing: var(--ls-mono);
}

/* Code */
code, pre, .code {
  font-family: var(--font-mono);
  font-size: 0.9em;
}

/* Links */
a {
  color: inherit;
  text-decoration: none;
  transition: opacity var(--dur-fast) var(--ease-standard);
}
a:hover { opacity: 0.7; }

/* Selection */
::selection {
  background: var(--clutch-red);
  color: var(--fg-1);
}
