/* type.css — the house type system, "Didone Atelier".
 *
 * Adopted from giladkenan.art (assets/css/type.css, built by its
 * tools/build-fonts.py) so that the studio and the platform speak in one voice.
 * The faces, the weights and the stack ORDER are theirs; this file carries the
 * Latin half only, because fabricai.art ships one edition today.
 *
 * WHAT THIS REPLACED: three render-blocking requests to fonts.googleapis.com /
 * fonts.gstatic.com on the critical path, plus two preconnects. Self-hosted
 * woff2 is one origin, cached once, and cannot be taken away by a third party.
 * 183 KB of font, served from the same edge as the page.
 *
 * WHEN fabric GOES TRILINGUAL, DO NOT INVENT NEW STACKS. Copy the he/ar blocks
 * from giladkenan.art verbatim, including their rule: every RTL stack names the
 * brand Latin face SECOND, because the Hebrew and Arabic subsets carry no Latin
 * codepoints and "RAL 9005" inside a Hebrew sentence otherwise falls through to
 * a system font and looks almost right. Their Hebrew roles are settled by
 * Gilad's ruling R3 — Frank Ruhl Libre for display, Heebo for body/UI.
 *
 * Licences and subset ranges: assets/fonts/FONTS.md (all OFL).
 */

@font-face{font-family:'Bodoni Moda';src:url(/assets/fonts/bodoni-moda-latin.woff2)format('woff2');
  font-weight:400 700;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122,U+2191-2193,U+2212,U+00D7,U+FEFF,U+FFFD}
@font-face{font-family:'Bodoni Moda';src:url(/assets/fonts/bodoni-moda-italic-latin.woff2)format('woff2');
  font-weight:400 700;font-style:italic;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122,U+2191-2193,U+2212,U+00D7,U+FEFF,U+FFFD}
@font-face{font-family:'Space Grotesk';src:url(/assets/fonts/space-grotesk-latin.woff2)format('woff2');
  font-weight:300 700;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122,U+2191-2193,U+2212,U+00D7,U+FEFF,U+FFFD}
@font-face{font-family:'JetBrains Mono';src:url(/assets/fonts/jetbrains-mono-400-latin.woff2)format('woff2');
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'JetBrains Mono';src:url(/assets/fonts/jetbrains-mono-600-latin.woff2)format('woff2');
  font-weight:600;font-style:normal;font-display:swap}

/* The canonical house names. Use THESE in new work. */
:root{
  --display:'Bodoni Moda', Georgia, serif;
  --ui:'Space Grotesk', system-ui, -apple-system, sans-serif;
  --mono:'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
}

/* Western tabular numerals — giladkenan.art ruling R2. Dimensions, gauges and
   tolerances must line up in a column and read identically in every edition.
   On this site that is the whole engineering readout. */
body{ font-variant-numeric: tabular-nums lining-nums; }

/* ---------- Hebrew + Arabic — copied from giladkenan.art, per this file's own
   instruction: DO NOT INVENT NEW STACKS. Their rules ride along:
   the brand Latin face is named SECOND in every RTL stack (the subsets carry
   no Latin codepoints, and "R4.2" inside a Hebrew line must fall through to
   Space Grotesk, not Arial), and emphasis in RTL steps WEIGHT, never italic. */
@font-face{font-family:'Frank Ruhl Libre';src:url(/assets/fonts/frank-ruhl-libre-hebrew.woff2)format('woff2');
  font-weight:300 900;font-style:normal;font-display:swap;
  unicode-range:U+0590-05FF,U+FB1D-FB4F,U+200C-2010,U+20AA,U+25CC}
@font-face{font-family:'Heebo';src:url(/assets/fonts/heebo-hebrew.woff2)format('woff2');
  font-weight:100 900;font-style:normal;font-display:swap;
  unicode-range:U+0590-05FF,U+FB1D-FB4F,U+200C-2010,U+20AA,U+25CC}
@font-face{font-family:'Amiri';src:url(/assets/fonts/amiri-400-arabic.woff2)format('woff2');
  font-weight:400;font-style:normal;font-display:swap;
  unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E,U+2010-2011}
@font-face{font-family:'Amiri';src:url(/assets/fonts/amiri-700-arabic.woff2)format('woff2');
  font-weight:700;font-style:normal;font-display:swap;
  unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E,U+2010-2011}
@font-face{font-family:'Plex Arabic';src:url(/assets/fonts/plex-arabic-400.woff2)format('woff2');
  font-weight:400;font-style:normal;font-display:swap;
  unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E,U+2010-2011}
@font-face{font-family:'Plex Arabic';src:url(/assets/fonts/plex-arabic-500.woff2)format('woff2');
  font-weight:500;font-style:normal;font-display:swap;
  unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E,U+2010-2011}
@font-face{font-family:'Plex Arabic';src:url(/assets/fonts/plex-arabic-600.woff2)format('woff2');
  font-weight:600;font-style:normal;font-display:swap;
  unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E,U+2010-2011}
/* alias — the stack names IBM Plex Sans Arabic first; a family-name mismatch
   is how three self-hosted faces become unreachable while every gate stays
   green (their lesson, kept verbatim) */
@font-face{font-family:'IBM Plex Sans Arabic';src:url(/assets/fonts/plex-arabic-400.woff2)format('woff2');
  font-weight:400;font-style:normal;font-display:swap;
  unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E,U+2010-2011}
@font-face{font-family:'IBM Plex Sans Arabic';src:url(/assets/fonts/plex-arabic-500.woff2)format('woff2');
  font-weight:500;font-style:normal;font-display:swap;
  unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E,U+2010-2011}
@font-face{font-family:'IBM Plex Sans Arabic';src:url(/assets/fonts/plex-arabic-600.woff2)format('woff2');
  font-weight:600;font-style:normal;font-display:swap;
  unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E,U+2010-2011}

:root:lang(he), [lang="he"]{
  --display:'Frank Ruhl Libre', 'Bodoni Moda', 'Noto Serif Hebrew', serif;
  --ui:'Heebo', 'Space Grotesk', 'Arial Hebrew', sans-serif;
}
:root:lang(ar), [lang="ar"]{
  --display:'Amiri', 'Bodoni Moda', 'Noto Naskh Arabic', serif;
  --ui:'IBM Plex Sans Arabic', 'Plex Arabic', 'Space Grotesk', sans-serif;
}
[lang="he"] em, [lang="he"] i, [lang="ar"] em, [lang="ar"] i{
  font-style:normal; font-weight:600;
}
