/* Aevrix Studio — Self-hosted variable type system
   Fraunces (display serif, optical sizing) · Inter (body grotesque) · JetBrains Mono (code/metadata)
   Subset: Latin + Latin-Ext. Total transfer ~189KB woff2. font-display: swap. */

@font-face {
  font-family: "Fraunces";
  src: url("/fonts/Fraunces-Variable.woff2") format("woff2-variations"),
       url("/fonts/Fraunces-Variable.woff2") format("woff2");
  font-weight: 300 800;
  font-stretch: 75% 125%;
  font-style: normal;
  font-display: swap;
  font-optical-sizing: auto;
}

@font-face {
  font-family: "Inter";
  src: url("/fonts/Inter-Variable.woff2") format("woff2-variations"),
       url("/fonts/Inter-Variable.woff2") format("woff2");
  font-weight: 300 800;
  font-style: normal;
  font-display: swap;
  font-optical-sizing: auto;
}

@font-face {
  font-family: "JetBrains Mono";
  src: url("/fonts/JetBrainsMono-Variable.woff2") format("woff2-variations"),
       url("/fonts/JetBrainsMono-Variable.woff2") format("woff2");
  font-weight: 400 600;
  font-style: normal;
  font-display: swap;
}

/* Design tokens — type system + fluid scale + motion */
:root {
  /* Type stacks */
  --font-serif: "Fraunces", "Iowan Old Style", "Apple Garamond", Georgia, "Times New Roman", serif;
  --font-sans:  "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, sans-serif;
  --font-mono:  "JetBrains Mono", "SFMono-Regular", "Cascadia Code", "Liberation Mono", ui-monospace, monospace;

  /* Fluid display scale */
  --text-mono-meta: 12px;
  --text-body:      clamp(1rem, 0.94rem + 0.3vw, 1.0625rem);
  --text-lead:      clamp(1.125rem, 1rem + 0.7vw, 1.375rem);
  --text-h3:        clamp(1.375rem, 1.1rem + 1.1vw, 1.75rem);
  --text-h2:        clamp(2.25rem, 1.4rem + 3.4vw, 3.75rem);
  --text-h1:        clamp(3.5rem, 1.4rem + 7.5vw, 8rem);

  /* Optical tuning */
  --serif-tracking-display: -0.03em;
  --serif-tracking-h2:      -0.025em;
  --serif-tracking-h3:      -0.015em;
  --sans-tracking-body:     -0.005em;
  --sans-tracking-meta:     0.18em;

  /* Motion tokens */
  --ease-out-soft:  cubic-bezier(0.22, 1, 0.36, 1);
  --ease-out-expo:  cubic-bezier(0.16, 1, 0.3, 1);
  --dur-fast:       180ms;
  --dur-base:       320ms;
  --dur-slow:       640ms;
}

/* Global base typography (applies wherever this stylesheet is loaded) */
html {
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-family: var(--font-sans);
  font-size: var(--text-body);
  letter-spacing: var(--sans-tracking-body);
  font-feature-settings: "kern", "calt", "liga", "ss01", "cv11";
}

/* Editorial display defaults */
h1, h2, h3, .display {
  font-family: var(--font-serif);
  font-optical-sizing: auto;
  text-wrap: balance;
}

code, kbd, samp, pre, .mono {
  font-family: var(--font-mono);
  font-feature-settings: "kern", "liga", "calt";
}
