/* 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 AiAD 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: Heebo for everything,
 * headings included (his S1063 there, 10 Sep; his pick here, S440, 5 Oct). R3's
 * Frank Ruhl Libre for display is history on both sites.
 *
 * 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.
   S440 — --brand IS THE LOGO'S NAME, AND IT NEVER CHANGES WITH THE LANGUAGE. The lockups
   (header, menu, footer, the home's big one) drew "AiAD" through --serif, which is
   --display, which each language replaces. When the Hebrew headings moved to Heebo
   (his pick, 5 Oct), "AiAD" beside the mark would have fallen to Space Grotesk on every
   /he/ and /ar/ page. A logo does not mirror (site-head.css) and does not change face. */
:root{
  --brand:'Bodoni Moda', Georgia, serif;
  --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;
  /* S410 — BODONI'S HAIRLINES, HELD OPEN. Bodoni Moda is a variable font with
     an optical-size axis (6–96), and a browser sets it from the font size on
     its own: at a 120 px heading it picks 96, the display cut, whose thin
     strokes are finer than a screen pixel. He saw it twice — the wordmark
     reading "ΛiΛD" on the front page, then "some pages still have thin lines
     hard to see" on /software — and picked 24 from four settings side by side.
     Set here, on the body, so every page inherits it and no heading is fixed
     one at a time. A font without the axis ignores it. */
  font-variation-settings: 'opsz' 24; }

/* ---------- 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}

/* S440 — HEEBO FOR THE HEBREW HEADINGS TOO: his pick at the design sitting, 5 Oct 2026, the
   same as his gallery ruling of 10 Sep (giladkenan.art type.css, S1063): of the Frank Ruhl
   headings, "these are the fonts of hebrew i dont like"; of Heebo, "i want this hebrew font
   in all site everywhere". Copied from the gallery's block verbatim, mono stack included:
   without Heebo in it, every /he/ eyebrow fell to the system monospace (their S896). The
   Frank Ruhl @font-face above stays declared and is never reached by Hebrew text; a face is
   fetched only when a stack reaches it. Never restore Frank Ruhl here without his word. */
:root:lang(he), [lang="he"]{
  --display:'Heebo', 'Space Grotesk', 'IBM Plex Sans Arabic', 'Arial Hebrew', sans-serif;
  --ui:'Heebo', 'Space Grotesk', 'IBM Plex Sans Arabic', 'Arial Hebrew', sans-serif;
  --mono:'JetBrains Mono', 'Heebo', 'IBM Plex Sans Arabic', ui-monospace, Menlo, monospace;
}
/* S630 — THE ARABIC MONO STACK NAMES ITS SCRIPT'S FACE, as the Hebrew one names Heebo (found in the /plans render of 12 Oct):
   without it every Arabic eyebrow, label and mono button on /ar/ fell to the system's Courier, its Arabic set in fixed widths,
   the joins broken. The script faces are limited to their own ranges (unicode-range above), so a Latin run inside an Arabic
   line ("RAL 9005", "AIAD STUDIO") still draws in JetBrains Mono, and the order of the two names cannot change a glyph. */
:root:lang(ar), [lang="ar"]{
  --display:'Amiri', 'Bodoni Moda', 'Noto Naskh Arabic', serif;
  --ui:'IBM Plex Sans Arabic', 'Plex Arabic', 'Space Grotesk', sans-serif;
  --mono:'JetBrains Mono', 'IBM Plex Sans Arabic', ui-monospace, Menlo, monospace;
}
[lang="he"] em, [lang="he"] i, [lang="ar"] em, [lang="ar"] i{
  font-style:normal; font-weight:600;
}
