/* Bilhon Design System — runtime font profiles (registry v1).
 * Assets are self-hosted under /fonts; runtime has no Google Fonts egress. */
@font-face {
  font-family: "Inter";
  src: url("../fonts/inter/inter-latin-wght-normal.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Mono";
  src: url("../fonts/ibm-plex-mono/IBMPlexMono-Regular.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Mono";
  src: url("../fonts/ibm-plex-mono/IBMPlexMono-Medium.woff2") format("woff2");
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Mono";
  src: url("../fonts/ibm-plex-mono/IBMPlexMono-SemiBold.woff2") format("woff2");
  font-style: normal;
  font-weight: 600;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Mono";
  src: url("../fonts/ibm-plex-mono/IBMPlexMono-Bold.woff2") format("woff2");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}

@font-face {
  font-family: "Geist";
  src: url("../fonts/geist/Geist-Variable.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}

@font-face {
  font-family: "Geist Mono";
  src: url("../fonts/geist/GeistMono-Variable.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}

@font-face {
  font-family: "Space Mono";
  src: url("../fonts/space-mono/space-mono-latin-400-normal.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "Space Mono";
  src: url("../fonts/space-mono/space-mono-latin-700-normal.woff2") format("woff2");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}

@font-face {
  font-family: "JetBrains Mono";
  src: url("../fonts/jetbrains-mono/jetbrains-mono-latin-wght-normal.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
}

:root,
[data-font="gavi-mono"] {
  --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-mono: "IBM Plex Mono", "SF Mono", monospace;
  --bl-font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --bl-font-mono: "IBM Plex Mono", "SF Mono", monospace;
}

[data-font="clean"],
.font-clean {
  --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-mono: "Geist", "Inter", -apple-system, sans-serif;
  --bl-font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --bl-font-mono: "Geist", "Inter", -apple-system, sans-serif;
  font-variant-numeric: tabular-nums;
}

[data-font="geist"],
.font-geist {
  --font-sans: "Geist", "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
  --font-mono: "Geist Mono", "Geist", monospace;
  --bl-font-sans: "Geist", "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
  --bl-font-mono: "Geist Mono", "Geist", monospace;
  font-variant-numeric: tabular-nums;
}

[data-font="space-mono"],
.font-space-mono {
  --font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
  --font-mono: "Space Mono", "IBM Plex Mono", monospace;
  --bl-font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
  --bl-font-mono: "Space Mono", "IBM Plex Mono", monospace;
}

[data-font="jetbrains"],
.font-jetbrains {
  --font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
  --font-mono: "JetBrains Mono", "IBM Plex Mono", monospace;
  --bl-font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
  --bl-font-mono: "JetBrains Mono", "IBM Plex Mono", monospace;
}

html[data-theme-effect="void-grid"] body {
  background-color: var(--bl-bg-primary);
  background-image:
    radial-gradient(ellipse 80% 60% at 50% -10%, rgba(var(--bl-accent-rgb), 0.12), transparent 60%),
    linear-gradient(color-mix(in srgb, var(--bl-border) 60%, transparent) 1px, transparent 1px),
    linear-gradient(90deg, color-mix(in srgb, var(--bl-border) 60%, transparent) 1px, transparent 1px);
  background-size: 100% 100%, 32px 32px, 32px 32px;
  background-attachment: fixed;
}

html[data-theme-effect="synthwave-grid"] body {
  background-color: var(--bl-bg-primary);
  background-image:
    linear-gradient(180deg, transparent 0%, rgba(var(--bl-accent-rgb), 0.1) 70%, rgba(var(--bl-accent-rgb), 0.22) 100%),
    linear-gradient(color-mix(in srgb, var(--bl-border) 80%, transparent) 1px, transparent 1px),
    linear-gradient(90deg, color-mix(in srgb, var(--bl-border) 80%, transparent) 1px, transparent 1px);
  background-size: 100% 100%, 32px 32px, 32px 32px;
  background-attachment: fixed;
}

html[data-theme-effect="terminal-scanlines"] body {
  background-color: var(--bl-bg-primary);
  background-image:
    radial-gradient(ellipse 100% 100% at 50% 50%, transparent 70%, color-mix(in srgb, var(--bl-border) 40%, transparent) 100%),
    repeating-linear-gradient(0deg, rgba(var(--bl-accent-rgb), 0.06) 0, rgba(var(--bl-accent-rgb), 0.06) 1px, transparent 1px, transparent 3px);
  background-attachment: fixed;
}

@media (prefers-reduced-motion: reduce) {
  html[data-theme-effect] body {
    background-attachment: scroll;
  }
}
