/* GENERATED by krunal-design-system/tokens/sync_site.py from tokens.json + tokens/site_extras.css. Edit those, not this file. */
@font-face{font-family:"Public Sans";font-weight:400;font-style:normal;font-display:swap;src:url("../../fonts-site/PublicSans-400.woff2") format("woff2")}
@font-face{font-family:"Public Sans";font-weight:500;font-style:normal;font-display:swap;src:url("../../fonts-site/PublicSans-500.woff2") format("woff2")}
@font-face{font-family:"Public Sans";font-weight:600;font-style:normal;font-display:swap;src:url("../../fonts-site/PublicSans-600.woff2") format("woff2")}
@font-face{font-family:"Public Sans";font-weight:700;font-style:normal;font-display:swap;src:url("../../fonts-site/PublicSans-700.woff2") format("woff2")}
@font-face{font-family:"Public Sans";font-weight:400;font-style:italic;font-display:swap;src:url("../../fonts-site/PublicSans-400i.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-weight:400;font-style:normal;font-display:swap;src:url("../../fonts-site/IBMPlexMono-400.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-weight:500;font-style:normal;font-display:swap;src:url("../../fonts-site/IBMPlexMono-500.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-weight:600;font-style:normal;font-display:swap;src:url("../../fonts-site/IBMPlexMono-600.woff2") format("woff2")}
@font-face{font-family:"Spectral";font-weight:400;font-style:normal;font-display:swap;src:url("../../fonts-site/Spectral-400.woff2") format("woff2")}
@font-face{font-family:"Spectral";font-weight:400;font-style:italic;font-display:swap;src:url("../../fonts-site/Spectral-400i.woff2") format("woff2")}
@font-face{font-family:"Spectral";font-weight:500;font-style:italic;font-display:swap;src:url("../../fonts-site/Spectral-500i.woff2") format("woff2")}

/* GENERATED by tokens/build.py - edit tokens.json, not this file */
:root, :root[data-theme="dark"] {
  --bg: #0e1116;
  --panel: #151a21;
  --panel2: #1b222b;
  --border: #29313c;
  --field: #10151b;
  --text: #e4eaf0;
  --muted: #93a1b0;
  --faint: #808b9a;
  --teal: #2dd4bf;
  --amber: #f5a524;
  --rose: #fb7185;
  --sky: #60a5fa;
  --on-accent: #062520;
  --on-accent2: #241605;
  --viewport: #0b0e12;
  --grid: #1f2731;
  --accent-tint: #13302c;
  --teal-text: #2dd4bf;
  --amber-text: #f5a524;
  --rose-text: #fb7185;
  --sky-text: #60a5fa;
}
:root[data-theme="light"] {
  --bg: #f4f6f8;
  --panel: #ffffff;
  --panel2: #eef1f4;
  --border: #d9dee5;
  --field: #f7f9fb;
  --text: #17202b;
  --muted: #5d6b7a;
  --faint: #636c75;
  --teal: #0f9f8f;
  --amber: #c7780a;
  --rose: #d9465f;
  --sky: #2f7fd6;
  --on-accent: #04201c;
  --on-accent2: #241605;
  --viewport: #ffffff;
  --grid: #e3e8ee;
  --accent-tint: #e2f5f2;
  --teal-text: #0c7a6e;
  --amber-text: #9b5e08;
  --rose-text: #bd3d53;
  --sky-text: #286db8;
}
@media (prefers-color-scheme: light) {
:root:not([data-theme="dark"]) {
  --bg: #f4f6f8;
  --panel: #ffffff;
  --panel2: #eef1f4;
  --border: #d9dee5;
  --field: #f7f9fb;
  --text: #17202b;
  --muted: #5d6b7a;
  --faint: #636c75;
  --teal: #0f9f8f;
  --amber: #c7780a;
  --rose: #d9465f;
  --sky: #2f7fd6;
  --on-accent: #04201c;
  --on-accent2: #241605;
  --viewport: #ffffff;
  --grid: #e3e8ee;
  --accent-tint: #e2f5f2;
  --teal-text: #0c7a6e;
  --amber-text: #9b5e08;
  --rose-text: #bd3d53;
  --sky-text: #286db8;
}
}
:root {
  --font-ui: 'Public Sans', system-ui, sans-serif;
  --font-mono: 'IBM Plex Mono', 'DejaVu Sans Mono', Consolas, monospace;
  --font-prose: Spectral, Georgia, 'Iowan Old Style', serif;
  --font-print: 'Liberation Serif', 'STIX Two Text', serif;
  --text-xs: 11px;
  --text-sm: 12.5px;
  --text-base: 13.5px;
  --text-md: 16px;
  --text-lg: 20px;
  --text-xl: 27px;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --radius-input: 7px;
  --radius-button: 8px;
  --radius-card: 11px;
  --radius-overlay: 10px;
  --radius-pill: 999px;
  --topbar-h: 44px;
  --panel-w: 318px;
  --t-fast: 0.12s;
  --t-base: 0.18s;
}
.glass { background: color-mix(in srgb, var(--panel) 88%, transparent); backdrop-filter: blur(6px); border-radius: var(--radius-overlay); box-shadow: 0 6px 24px rgba(0,0,0,.35); }

/* ---- site extras ---- */
:root{
  --font-serif-accent:"Spectral",Georgia,"Iowan Old Style",serif;
  --page-max:1180px; --measure:72ch;
  --cat-combustion:var(--amber); --cat-optimization:var(--teal); --cat-uq:var(--sky); --cat-sciml:var(--rose);
  --cat-cfd:#a78bfa; --cat-experimental:#a3e635;
  --edge:color-mix(in srgb,var(--border) 55%,#000); --lift:rgba(0,0,0,.38); --contact:rgba(0,0,0,.30); --hi:rgba(255,255,255,.07); --plate:#000;
  --raised:inset 0 1px 0 var(--hi),0 5px 0 var(--edge),0 6px 0 var(--contact),0 14px 28px -6px var(--lift),0 28px 48px -20px var(--lift);
  --raised-hover:inset 0 1px 0 var(--hi),0 8px 0 var(--edge),0 9px 0 var(--contact),0 22px 36px -6px var(--lift),0 40px 60px -22px var(--lift);
  --raised-press:inset 0 1px 0 var(--hi),0 2px 0 var(--edge),0 3px 0 var(--contact),0 6px 12px -4px var(--lift);
  --on-accent-tint:var(--accent-tint);
}
:root[data-theme="light"]{
  --cat-cfd:#7c5cd6; --cat-experimental:#5d8a1f;
  --edge:color-mix(in srgb,var(--border) 70%,#4a5a6a); --lift:rgba(30,45,65,.20); --contact:rgba(30,45,65,.16); --hi:rgba(255,255,255,.9); --plate:#e9edf1;
}
@media (prefers-color-scheme: light){
  :root:not([data-theme="dark"]){
    --cat-cfd:#7c5cd6; --cat-experimental:#5d8a1f;
    --edge:color-mix(in srgb,var(--border) 70%,#4a5a6a); --lift:rgba(30,45,65,.20); --contact:rgba(30,45,65,.16); --hi:rgba(255,255,255,.9); --plate:#e9edf1;
  }
}
