/* Shared brand: Syne wordmark + IBM Plex Sans body/headers */

@font-face {
  font-family: "Syne";
  src: url("/fonts/Syne-Bold.woff2") format("woff2"),
       url("/fonts/Syne-Bold.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Sans";
  src: url("/fonts/IBMPlexSans-Var.woff2") format("woff2");
  font-weight: 100 700;
  font-style: normal;
  font-display: swap;
}

/* ---- Headers + body → IBM Plex Sans ----
   Keep the Syne wordmark rules below this block so they win on specificity. */
body,
[data-framer-root],
[data-framer-root] .framer-text,
[data-framer-root] p,
[data-framer-root] h1,
[data-framer-root] h2,
[data-framer-root] h3,
[data-framer-root] h4,
[data-framer-root] h5,
[data-framer-root] h6,
[data-framer-root] li,
[data-framer-root] a,
[data-framer-root] span.framer-text,
[data-framer-component-type="RichTextContainer"],
[data-framer-component-type="Text"],
.framer-GWQSz .framer-styles-preset-151kx53,
.framer-GWQSz a.framer-styles-preset-151kx53,
.suppliflex-root,
.suppliflex-root p,
.suppliflex-root h1,
.suppliflex-root h2,
.suppliflex-root h3,
.suppliflex-root a {
  --framer-font-family: "IBM Plex Sans", sans-serif !important;
  font-family: "IBM Plex Sans", sans-serif !important;
}

/* Nav links (desktop + mobile dropdown) — every link except the Syne wordmark */
.framer-GWQSz .framer-1p0fhlt .framer-text,
.framer-GWQSz .framer-1pfc1zr .framer-text,
.framer-GWQSz .framer-x1lpln .framer-text,
.framer-GWQSz .framer-roggtf .framer-text,
.framer-GWQSz .framer-1rxrfyw .framer-text,
.framer-GWQSz .framer-1oxvoic .framer-text,
.framer-GWQSz .framer-1sdf3yn .framer-text,
.framer-GWQSz .framer-1lqvglm .framer-text,
.framer-GWQSz .framer-15wuc88 .framer-text,
.framer-GWQSz .framer-s9sfrz .framer-text,
.framer-GWQSz .framer-o3i2su .framer-text,
.framer-GWQSz .framer-qi3ng .framer-text,
.framer-GWQSz .framer-1p0fhlt a,
.framer-GWQSz .framer-1pfc1zr a,
.framer-GWQSz .framer-x1lpln a,
.framer-GWQSz .framer-roggtf a,
.framer-GWQSz .framer-1rxrfyw a,
.framer-GWQSz .framer-1oxvoic a,
.framer-GWQSz .framer-1sdf3yn a,
.framer-GWQSz .framer-1lqvglm a,
.framer-GWQSz .framer-15wuc88 a,
.framer-GWQSz .framer-s9sfrz a,
.framer-GWQSz .framer-o3i2su a,
.framer-GWQSz .framer-qi3ng a,
.framer-GWQSz .framer-1p0fhlt span,
.framer-GWQSz .framer-1pfc1zr span,
.framer-GWQSz .framer-x1lpln span,
.framer-GWQSz .framer-roggtf span,
.framer-GWQSz .framer-1rxrfyw span,
.framer-GWQSz .framer-1oxvoic span,
.framer-GWQSz .framer-1sdf3yn span,
.framer-GWQSz .framer-1lqvglm span,
.framer-GWQSz .framer-15wuc88 span,
.framer-GWQSz .framer-s9sfrz span,
.framer-GWQSz .framer-o3i2su span,
.framer-GWQSz .framer-qi3ng span {
  --framer-font-family: "IBM Plex Sans", sans-serif !important;
  font-family: "IBM Plex Sans", sans-serif !important;
}

/* Project card tags / pills */
.framer-qff6D,
.framer-qff6D .framer-text,
.framer-qff6D span,
.framer-qff6D p,
.portfolio-card-slot .framer-qff6D,
.portfolio-card-slot .framer-qff6D .framer-text,
.portfolio-card-slot .portfolio-cascade-tag,
.portfolio-card-slot .portfolio-cascade-tag .framer-text,
.portfolio-section-title,
.portfolio-section-subtitle {
  --framer-font-family: "IBM Plex Sans", sans-serif !important;
  font-family: "IBM Plex Sans", sans-serif !important;
}

/* Terminal keeps its monospace face */
#terminal-hero-root,
#terminal-hero-root * {
  --framer-font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace !important;
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace !important;
}

/* ---- Syne wordmark (nav + footer) ---- */

.framer-GWQSz .framer-1kjijf .framer-text,
.framer-GWQSz .framer-1kjijf a,
.framer-GWQSz .framer-1kjijf a.framer-styles-preset-151kx53,
.framer-GWQSz .framer-1kjijf span,
.framer-GWQSz .framer-1kjijf p {
  --framer-font-family: "Syne", sans-serif !important;
  font-family: "Syne", sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: -0.03em;
}

/* Footer logo wordmark (Bottom Nav). After hydration the label is often a
   nested <span role="link"> rather than an <a>. */
.framer-fIgD6 .framer-1rawow6,
.framer-fIgD6 .framer-1rawow6 .framer-text,
.framer-fIgD6 .framer-1rawow6 a,
.framer-fIgD6 .framer-1rawow6 span,
.framer-fIgD6 .framer-1rawow6 p,
.framer-17sxs0h .framer-1rawow6,
.framer-17sxs0h .framer-1rawow6 .framer-text,
.framer-17sxs0h .framer-1rawow6 a,
.framer-17sxs0h .framer-1rawow6 span,
.framer-17sxs0h .framer-1rawow6 p {
  --framer-font-family: "Syne", sans-serif !important;
  font-family: "Syne", sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: -0.03em;
}

/* Suppliflex (and any hand-built nav) wordmark */
.site-topnav--desktop .framer-1kjijf a,
.site-topnav--mobile .framer-1kjijf a,
.site-topnav--desktop .framer-1kjijf p,
.site-topnav--mobile .framer-1kjijf p {
  --framer-font-family: "Syne", sans-serif !important;
  font-family: "Syne", sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: -0.03em;
}
