/*
 * NetworkTechGuy design tokens and fonts - one file for the public site and the admin.
 * The values are design/ntg-design-system_v1/tokens.css (generated from its tokens.json): change them there,
 * then copy the block below again. Fonts: IBM Plex Sans / Mono (SIL OFL 1.1, assets/fonts/LICENSE-IBM-Plex-OFL.txt),
 * served by the blog itself - no font requests to other sites.
 */
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: italic; font-weight: 400; font-display: swap; src: url("/assets/fonts/ibm-plex-sans-latin-400-italic.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap; src: url("/assets/fonts/ibm-plex-sans-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("/assets/fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("/assets/fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2"); }


:root, [data-theme="dark"] {
  --bg: #0a0d12;
  --surface: #10151c;
  --surface-raised: #161c25;
  --surface-hover: #1c2430;
  --line: #222b37;
  --line-strong: #627187;
  --ink: #e7ecf2;
  --ink-muted: #a0abb9;
  --ink-subtle: #7f8b9c;
  --signal: #34d3bb;
  --signal-strong: #6ee7d4;
  --signal-soft: #0c2724;
  --on-signal: #04201b;
  --amber: #f2b84b;
  --amber-soft: #2a2010;
  --coral: #ff8a7a;
  --coral-soft: #2e1514;
  --link: var(--signal);
  --focus: var(--signal);
  --syn-keyword: var(--amber);
  --syn-string: #9fdc8a;
  --syn-func: #7cc7ff;
  --syn-number: var(--coral);
  --syn-comment: var(--ink-subtle);
  --syn-prompt: var(--signal);
  --shadow-pop: 0 12px 32px rgba(0, 0, 0, 0.5), 0 0 0 1px #222b37;
  --shadow-focus: 0 0 0 2px #0a0d12, 0 0 0 4px #34d3bb;
}

:root {
  --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;
  --radius-sm: 2px;
  --radius-md: 3px;
  --radius-lg: 4px;
  --radius-pill: 999px;
  --width-page: 1200px;
  --width-prose: 720px;
  --width-wide: 880px;
  --font-sans: "IBM Plex Sans", ui-sans-serif, system-ui, "Segoe UI", sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
}

.display { font-family: var(--font-sans); font-size: 64px; line-height: 68px; font-weight: 600; letter-spacing: -0.025em; }
.h1 { font-family: var(--font-sans); font-size: 40px; line-height: 46px; font-weight: 600; letter-spacing: -0.015em; }
.h2 { font-family: var(--font-sans); font-size: 28px; line-height: 34px; font-weight: 600; letter-spacing: -0.01em; }
.h3 { font-family: var(--font-sans); font-size: 20px; line-height: 28px; font-weight: 600; letter-spacing: -0.005em; }
.lead { font-family: var(--font-sans); font-size: 19px; line-height: 30px; font-weight: 400; }
.body { font-family: var(--font-sans); font-size: 17px; line-height: 28px; font-weight: 400; }
.body-sm { font-family: var(--font-sans); font-size: 15px; line-height: 24px; font-weight: 400; }
.label { font-family: var(--font-sans); font-size: 14px; line-height: 20px; font-weight: 500; }
.eyebrow { font-family: var(--font-mono); font-size: 12px; line-height: 16px; font-weight: 500; letter-spacing: 0.08em; }
.meta { font-family: var(--font-mono); font-size: 13px; line-height: 20px; font-weight: 400; }
.code { font-family: var(--font-mono); font-size: 14px; line-height: 22px; font-weight: 400; }
