/* FILE-MAP:
purpose: >
  Self-hosted @font-face for the Ezon DS faces (Sora headings + Montserrat body).
  Replaces the Google Fonts <link>: the talk runs on venue wi-fi, and a failed
  CDN fetch would drop the deck to system fallbacks mid-presentation. Files are
  served from the Worker's own assets, so the deck renders correctly offline
  once loaded. TTF (not woff2) because no converter is installed and adding a
  build dependency for this is not worth it — Cloudflare compresses at the edge.
depends_on: []
used_by:
  - ./index.html
  - ./form.html
  - ../src/editor.js
touches:
  db_tables: []
  env: []
  config_files: []
  cache_keys: []
effects: []
invariants:
  - Sora and Montserrat are the DS faces; substituting either is an anti-pattern
  - font-display: swap keeps text visible while the face loads
END-FILE-MAP */

/* Sora — variable weight axis (400..800), used for every heading */
@font-face {
  font-family: "Sora";
  src: url("/assets/fonts/Sora-Variable.ttf") format("truetype-variations"),
       url("/assets/fonts/Sora-Variable.ttf") format("truetype");
  font-weight: 100 800;
  font-style: normal;
  font-display: swap;
}

/* Montserrat — static weights actually used by the deck (400/500/600/700) */
@font-face {
  font-family: "Montserrat";
  src: url("/assets/fonts/Montserrat-Regular.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Montserrat";
  src: url("/assets/fonts/Montserrat-Medium.ttf") format("truetype");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Montserrat";
  src: url("/assets/fonts/Montserrat-SemiBold.ttf") format("truetype");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Montserrat";
  src: url("/assets/fonts/Montserrat-Bold.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
