/*
  STORYME — shared design tokens for the editor surfaces (accounts, workspaces, settings, billing).

  SOURCE OF TRUTH: docs/design/EDITOR_UX_v2/Tokens.csv — the Founder-supplied Figma design system
  export (designer Rania; v2 dated 2026-07-28; see docs/design/EDITOR_UX_v2/INTAKE_NOTE.md for full
  provenance). The Founder's ruling, quoted in that intake note: «عمل يدوي وليس AI — احترمه وقدره»
  (this is handmade work, not AI-generated — respect and value it as such) and «واجعل امكانية التعديل
  لاحقاً سهلة» (make later modification easy). This file is the direct answer to the second
  instruction: it is the ONE place a future screen's colour, spacing or type changes, because every
  screen that consumes these custom properties changes with it.

  DERIVATION RULE — every declaration below traces to exactly one row of Tokens.csv:
    - colour:      value  = the CSV row's hex, byte-for-byte; comment = the CSV row's usage, verbatim.
    - spacing:     value  = the CSV row's px value, byte-for-byte; the CSV carries no usage text for
                   spacing rows (the column is empty for all ten), so no usage comment is attached.
    - typography:  each CSV row becomes TWO properties, "-size" and "-weight". "-size" copies the
                   CSV value's trailing "NNpx" run. "-weight" translates the CSV value's weight word
                   to the standard numeric font-weight that Geist and Cairo both publish as a named
                   instance on Google Fonts — Light 300, Regular 400, Medium 500, Bold 700 (Geist
                   carries a wght axis 100–900; Cairo carries wght 200–1000; all four sit inside
                   both) — not a number invented for this file. Both properties of a pair carry the
                   same usage comment, verbatim.
  Property names are chosen for legibility (var(--color-primary-text), not var(--color-dark-gray-main))
  but the CSV row order is preserved exactly, category by category, so every property's position ties
  it to one CSV row. app/shared/storyme-tokens.test.mjs checks this from the bytes of both files, in
  both directions, and is the guard that keeps this claim true as either file changes.

  TYPEFACE — FOUNDER RULING (r6, 2026-09-12), quoted verbatim:
    «قرار نهائي بخصوص الفونت: إعتمد هذه الخطوط وهي مرخصة من جوجل. واستبدل الخطوط الحالية.
     * الإنجليزية : Geist
     * العربية : Cairo
     قرار مؤسس.»
  Geist for Latin, Cairo for Arabic; both are Google Fonts under the SIL Open Font License 1.1, so
  the licence question that stood against the previously named face is closed. The ruling names two
  faces by script, so ONE family property is no longer enough: --font-family-latin and
  --font-family-arabic each declare their face first with an honest, metric-differing fallback stack
  ending in a generic, and --font-family-display — the property every screen actually reads — is
  resolved to the Latin stack by default and re-resolved to the Arabic stack by the :root:lang(ar)
  block that follows the token block. The screens set lang and dir together from one table, so the
  document being Arabic is exactly the condition under which the Arabic face applies; no script
  runs and no screen carries a family literal. --font-family-mono is the monospace stack the screens
  read for identifiers, seals and refusal codes, declared here so that no family literal exists on
  any screen.

  VENDORED UNDER OFL 1.1, NOT LINKED (r7, 2026-09-12). Both ruled families are SERVED FROM THIS
  REPOSITORY. The Founder settled the licence in the ruling itself («وهي مرخصة من جوجل»); the
  mechanical step was taken under DECISION 5 of the controller's delegated decisions of 2026-09-12
  (recorded in the controller's receipts outside this repository, ACCORD-2026-09-12-delegated-
  decisions.md, reversible by the Founder at any time): vendor, do not link. Twelve woff2 files live
  under app/shared/fonts/ — Geist Latin, Cairo Arabic and Cairo Latin, four weights each (300, 400,
  500, 700: exactly the four the delivered type scale uses) — and are declared by the @font-face
  block at the foot of this file, with relative url() paths and font-display: swap; six fallback
  declarations after them (c367) map local faces onto the served faces' metrics, so a swap moves
  nothing on a screen. Both families
  are licensed under the SIL Open Font License 1.1 (OFL 1.1), which expressly permits
  redistribution; the full licence text of each ships beside the files (GEIST-OFL-1.1.txt,
  CAIRO-OFL-1.1.txt). Upstream projects: The Geist Project Authors (github vercel/geist-font) and
  The Cairo Project Authors (github Gue3bara/Cairo), as each licence text names them. The packages
  @fontsource/geist@5.3.0 and @fontsource/cairo@5.3.0 were used ONLY AS A DELIVERY CHANNEL: fetched
  with npm pack into a scratch directory, the woff2 files extracted, and the @font-face declarations
  DERIVED from the packages' own stylesheets — only the src path is rewritten, and the vendor's
  .woff fallback is neither vendored nor declared, so no declaration points at a file that is not
  here. NOTHING WAS ADDED TO package.json OR package-lock.json; nothing installs at build or run
  time; NO THIRD-PARTY REQUEST is made at run time — no font host, no @import, no external
  stylesheet. Cairo's Latin subset is vendored so Latin runs inside an Arabic page are set in Cairo
  rather than dropping to a system face. The guard is app/shared/vendored-typefaces.test.mjs: every
  declared src resolves to a file whose sha256 is pinned, the files on disk equal the files declared,
  both OFL texts are present and carry the OFL 1.1 marker, no external font reference exists in this
  sheet or either screen, and neither package file names a font package. Reversal is mechanical:
  delete app/shared/fonts/, drop the @font-face block and the .woff2 MIME entry in
  tools/dev-server.mjs, and the type system returns to declaring the families without serving them.

  PLAIN CSS ONLY. No preprocessor, no build step, no dependency, no @import. Servable as-is by
  tools/dev-server.mjs under /app/, exactly like every other file in app/; the font files are served
  from the same static root (/app/shared/fonts/) with the font/woff2 media type.

  CONSUMERS (r5). The editor screens — app/accounts/ui.html and app/workspaces/ui.html — link this
  sheet and declare no colour, type size, family or spacing of their own: every such value on those
  screens is var(--…) resolved here. app/shared/editor-screens-consume-tokens.test.mjs is the guard
  that keeps that true (no colour literal, no raw font-size, no family literal, the one link present
  and no other stylesheet or @import, no :root block, every var() a real property here), so editing
  Tokens.csv, then this file, reaches every screen at once.

  CONTROLLER ADDITIONS (r5, 2026-09-12). Three rows of Tokens.csv are NOT the designer's: they are
  marked "(controller addition r5)" in the token column, carry their measured contrast ratio and
  reason in the usage column, and are recorded for the designer's ruling in
  docs/design/EDITOR_UX_v2/ACCESSIBILITY_ADDENDUM.md. They exist because the delivered palette
  fails WCAG 2.2 AA at four pairs and the delivered body size sits under the repository's own
  BODY_SIZE 16 floor. Two of those four pairs resolve from the designer's own hover and pressed
  tokens (white on #E0003D 4.96:1 for filled buttons; #C4002E 6.20:1 for red carrying text); the
  other two, and the body size, are the additions. Each is derived here by the same rule as every
  other row, so the guard treats it exactly as it treats a designer row.
  RATIFICATION (r6, 2026-09-12): Rania accepted #15803D (Active Status – On Light); that row now
  records it as proposed by the controller and accepted by the designer. Control Border – On Light
  (#8C8383) and Body 16 remain pending her ruling.
*/

:root {
  /* ==========================================================================================
     COLOUR — Tokens.csv category=color, 18 rows (16 designer rows + 2 controller additions, r5),
     CSV row order preserved exactly.
     ========================================================================================== */
  --color-surface-primary: #FFFFFF; /* Primary surface / Cards */
  --color-primary-text: #333333; /* Primary text */
  --color-border: #E6E6E6; /* Borders & Dividers */
  --color-secondary-accent: #ED3150; /* Secondary accent */
  --color-page-background: #F5F5F5; /* Page background */
  --color-secondary-text: #5F5454; /* Secondary text */
  --color-secondary-accent-light: #FEF1F3; /* Secondary accent (light variant) */
  --color-dark-theme-surface: #312B2D; /* Dark theme surface */
  --color-status-active: #22C55E; /* Success / Active status */
  --color-dropdown-background: #FFFFFF; /* Dropdown menus */
  --color-state-pressed: #C4002E; /* Pressed state */
  --color-skeleton: #E7E8E8; /* Loading placeholders */
  --color-state-hover: #E0003D; /* Hover state */
  --color-state-pressed-light: #FFE4E6; /* Pressed state (light variant) */
  --color-highlight: #FBBF24; /* Highlight / Badge */
  --color-success-light: #DCFCE7; /* Success / Confirmation */
  --color-status-active-on-light: #15803D; /* Success / Active status carried as text or a status rule on light surfaces — controller addition 2026-09-12 not a designer token: #22C55E measures 2.28:1 on white against the 4.5 text bar; #15803D measures 5.02:1 on white and 4.60:1 on #F5F5F5 and 4.57:1 on #DCFCE7; #22C55E stays as delivered on the dark surface; accepted by the designer Rania 2026-09-12 */
  --color-control-border: #8C8383; /* Border of a control that the border alone identifies (inputs / selects / outlined buttons) on light surfaces — controller addition 2026-09-12 not a designer token: #E6E6E6 measures 1.25:1 on white against the 3.0 non-text bar; #8C8383 measures 3.69:1 on white and 3.39:1 on #F5F5F5 and keeps the warm hue of #5F5454; dividers keep #E6E6E6; pending designer ruling */

  /* ==========================================================================================
     SPACING — Tokens.csv category=spacing, 10 rows, CSV row order preserved exactly, 4px to 80px.
     No usage comment: Tokens.csv's usage column is empty for every spacing row.
     ========================================================================================== */
  --space-4: 4px;
  --space-8: 8px;
  --space-12: 12px;
  --space-16: 16px;
  --space-24: 24px;
  --space-32: 32px;
  --space-48: 48px;
  --space-64: 64px;
  --space-72: 72px;
  --space-80: 80px;

  /* ==========================================================================================
     TYPOGRAPHY — Tokens.csv category=typography, 22 rows (21 designer rows + 1 controller
     addition, r5), CSV row order preserved exactly.
     Each row below is a "-size" / "-weight" pair carrying the same usage comment. Weight numbers
     are the standard instances Geist and Cairo both publish: Light=300, Regular=400, Medium=500,
     Bold=700 (r6 Founder ruling; the family word in every CSV row is "Geist / Cairo").
     ========================================================================================== */
  --type-h1-size: 48px; /* Primary page heading */
  --type-h1-weight: 700; /* Primary page heading */
  --type-h2-size: 40px; /* Section heading */
  --type-h2-weight: 500; /* Section heading */
  --type-h3-size: 32px; /* Subsection heading */
  --type-h3-weight: 500; /* Subsection heading */
  --type-h4-size: 28px; /* Content heading */
  --type-h4-weight: 500; /* Content heading */
  --type-h5-x-btn-size: 17px; /* Large button label / Small heading */
  --type-h5-x-btn-weight: 500; /* Large button label / Small heading */
  --type-paragraph-1-s-btn-size: 15px; /* Primary body text / Small button label */
  --type-paragraph-1-s-btn-weight: 400; /* Primary body text / Small button label */
  --type-paragraph-2-size: 13px; /* Secondary body text */
  --type-paragraph-2-weight: 400; /* Secondary body text */
  --type-caption-size: 12px; /* Caption text */
  --type-caption-weight: 400; /* Caption text */
  --type-caption-small-size: 10px; /* Small caption */
  --type-caption-small-weight: 400; /* Small caption */
  --type-button-1-bold-size: 16px; /* Primary button label */
  --type-button-1-bold-weight: 700; /* Primary button label */
  --type-button-2-bold-size: 14px; /* Secondary button label */
  --type-button-2-bold-weight: 700; /* Secondary button label */
  --type-paragraph-2-bold-size: 13px; /* Emphasized body text */
  --type-paragraph-2-bold-weight: 700; /* Emphasized body text */
  --type-web-huge-size: 55px; /* Large desktop display */
  --type-web-huge-weight: 400; /* Large desktop display */
  --type-h3-bold-size: 32px; /* Highlighted subsection heading */
  --type-h3-bold-weight: 700; /* Highlighted subsection heading */
  --type-web-medium-size: 26px; /* Medium desktop display */
  --type-web-medium-weight: 400; /* Medium desktop display */
  --type-mobile-huge-size: 26px; /* Mobile display heading */
  --type-mobile-huge-weight: 400; /* Mobile display heading */
  --type-h1-mobile-light-size: 20px; /* Mobile primary heading */
  --type-h1-mobile-light-weight: 300; /* Mobile primary heading */
  --type-mobile-body-size: 12px; /* Mobile body text */
  --type-mobile-body-weight: 400; /* Mobile body text */
  --type-h1-mobile-bold-size: 20px; /* Mobile emphasized heading */
  --type-h1-mobile-bold-weight: 700; /* Mobile emphasized heading */
  --type-h2-mobile-bold-size: 14px; /* Mobile secondary heading */
  --type-h2-mobile-bold-weight: 700; /* Mobile secondary heading */
  --type-h4-regular-size: 28px; /* Alternative content heading */
  --type-h4-regular-weight: 400; /* Alternative content heading */
  --type-body-16-size: 16px; /* Body and field text at the repository accessibility floor — controller addition 2026-09-12 not a designer token: app/accessibility/authoring-defaults.mjs holds BODY_SIZE 16 as a floor for every region of a screen and Pragraph 1 is 15px; every text run on the editor screens is at least this size; pending designer ruling */
  --type-body-16-weight: 400; /* Body and field text at the repository accessibility floor — controller addition 2026-09-12 not a designer token: app/accessibility/authoring-defaults.mjs holds BODY_SIZE 16 as a floor for every region of a screen and Pragraph 1 is 15px; every text run on the editor screens is at least this size; pending designer ruling */

  /* ==========================================================================================
     TYPEFACE — not Tokens.csv rows; the four font-family-* properties are excluded by name from
     the CSV<->CSS traceability guard. Founder ruling r6: Geist (Latin), Cairo (Arabic). Both faces
     are served by the @font-face block at the foot of this file (r7; see the header), so the first
     name of each stack is a face every reader receives — on the first visit too (font-display:
     swap; the Founder, c367: the faces are seen, never traded for stillness). The SECOND name of
     each stack is its metric-matched fallback (c367; the local declarations at the foot of this
     file): a face the machine already has, sized to the served face's advance and given its
     ascent and descent, so the words laid out before the file arrives occupy the same boxes as
     after, and the swap changes glyphs, never a line break and never a control's place. The
     Arabic stack's THIRD name is the same promise for a machine without Geeza Pro: DejaVu Sans,
     the Arabic face of the Linux machine the CI runs on (c367 r18). The names after them are the
     fallback if the machine has none of those faces, or the file cannot come.
     --font-family-display is what the screens read; it resolves to the Latin stack here and to the
     Arabic stack under :root:lang(ar) below.
     ========================================================================================== */
  --font-family-latin: 'Geist', 'Geist Fallback', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  --font-family-arabic: 'Cairo', 'Cairo Fallback', 'Cairo Fallback DejaVu', 'Noto Naskh Arabic', 'Noto Sans Arabic', 'Geeza Pro', 'Segoe UI', system-ui, sans-serif;
  --font-family-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
  --font-family-display: var(--font-family-latin);
}

/* THE ARABIC DOCUMENT reads the Arabic face. The screens set <html lang="ar" dir="rtl"> together
   from one table, so this — and nothing in any screen — is what puts Cairo on an Arabic page. It
   re-resolves the one property the screens read; it declares nothing else. */
:root:lang(ar) {
  --font-family-display: var(--font-family-arabic);
}

/* THE ARABIC ELEMENT INSIDE A DOCUMENT OF ANOTHER LANGUAGE reads the Arabic face too (r7). The
   rule above re-resolves the display property for an Arabic DOCUMENT; it does nothing for an
   element marked lang="ar" on an English page, and the controls that declare font-family: inherit
   inherit the resolved Latin face — so the Arabic language control itself (app/accounts/ui.html
   #lang-ar, the primary control that demonstrates the bilingual feature) fell to per-glyph system
   fallback. This rule sets the family on every element that CARRIES an Arabic lang attribute (ar,
   or ar-*), and its text inherits it. It is deliberately the attribute selector, not :lang(ar):
   :lang(ar) matches every element of an Arabic document by inheritance, and at specificity (0,1,0)
   it would override the screens' type-selector monospace rules (dd, li at (0,0,1)) — identifiers
   and seals would be set in Cairo. [lang|="ar"] reaches exactly the marked element, beats the
   screens' `button, input { font-family: inherit }` (0,0,1), and never touches an unmarked
   element. It declares nothing else. */
[lang|="ar"] {
  font-family: var(--font-family-arabic);
}

/* =============================================================================================
   THE SERVED FACES (r7) — twelve @font-face declarations, DERIVED from the vendor's own
   stylesheets (@fontsource/geist@5.3.0 files/geist-latin.css, @fontsource/cairo@5.3.0
   files/cairo-arabic.css and files/cairo-latin.css), one block per delivered weight. Every
   declaration but src is the vendor's byte-for-byte (family, style, display, weight); src is
   rewritten to the repository-relative woff2 path, and the vendor's .woff fallback is not declared
   because it is not vendored. No unicode-range: routing is done by the font stacks above (Geist
   leads the Latin stack, Cairo leads the Arabic stack), and Cairo's Latin subset is present so a
   Latin run inside an Arabic page stays in Cairo. Files, digests and licences are pinned by
   app/shared/vendored-typefaces.test.mjs.
   ============================================================================================= */
/* geist-latin-300-normal — derived from the vendor's upstream-geist-latin.css block of the same name; only src is rewritten */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-display: swap;
  font-weight: 300;
  src: url(/__storyme/ea9fd7a9456b90f33041fe0cb513d32781b5d39cf7675f87e9832e72396d6096/app/shared/fonts/geist-latin-300-normal.woff2) format('woff2');
}

/* geist-latin-400-normal — derived from the vendor's upstream-geist-latin.css block of the same name; only src is rewritten */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/__storyme/ea9fd7a9456b90f33041fe0cb513d32781b5d39cf7675f87e9832e72396d6096/app/shared/fonts/geist-latin-400-normal.woff2) format('woff2');
}

/* geist-latin-500-normal — derived from the vendor's upstream-geist-latin.css block of the same name; only src is rewritten */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/__storyme/ea9fd7a9456b90f33041fe0cb513d32781b5d39cf7675f87e9832e72396d6096/app/shared/fonts/geist-latin-500-normal.woff2) format('woff2');
}

/* geist-latin-700-normal — derived from the vendor's upstream-geist-latin.css block of the same name; only src is rewritten */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/__storyme/ea9fd7a9456b90f33041fe0cb513d32781b5d39cf7675f87e9832e72396d6096/app/shared/fonts/geist-latin-700-normal.woff2) format('woff2');
}

/* cairo-arabic-300-normal — derived from the vendor's upstream-cairo-arabic.css block of the same name; only src is rewritten */
@font-face {
  font-family: 'Cairo';
  font-style: normal;
  font-display: swap;
  font-weight: 300;
  src: url(/__storyme/ea9fd7a9456b90f33041fe0cb513d32781b5d39cf7675f87e9832e72396d6096/app/shared/fonts/cairo-arabic-300-normal.woff2) format('woff2');
}

/* cairo-arabic-400-normal — derived from the vendor's upstream-cairo-arabic.css block of the same name; only src is rewritten */
@font-face {
  font-family: 'Cairo';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/__storyme/ea9fd7a9456b90f33041fe0cb513d32781b5d39cf7675f87e9832e72396d6096/app/shared/fonts/cairo-arabic-400-normal.woff2) format('woff2');
}

/* cairo-arabic-500-normal — derived from the vendor's upstream-cairo-arabic.css block of the same name; only src is rewritten */
@font-face {
  font-family: 'Cairo';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/__storyme/ea9fd7a9456b90f33041fe0cb513d32781b5d39cf7675f87e9832e72396d6096/app/shared/fonts/cairo-arabic-500-normal.woff2) format('woff2');
}

/* cairo-arabic-700-normal — derived from the vendor's upstream-cairo-arabic.css block of the same name; only src is rewritten */
@font-face {
  font-family: 'Cairo';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/__storyme/ea9fd7a9456b90f33041fe0cb513d32781b5d39cf7675f87e9832e72396d6096/app/shared/fonts/cairo-arabic-700-normal.woff2) format('woff2');
}

/* cairo-latin-300-normal — derived from the vendor's upstream-cairo-latin.css block of the same name; only src is rewritten */
@font-face {
  font-family: 'Cairo';
  font-style: normal;
  font-display: swap;
  font-weight: 300;
  src: url(/__storyme/ea9fd7a9456b90f33041fe0cb513d32781b5d39cf7675f87e9832e72396d6096/app/shared/fonts/cairo-latin-300-normal.woff2) format('woff2');
}

/* cairo-latin-400-normal — derived from the vendor's upstream-cairo-latin.css block of the same name; only src is rewritten */
@font-face {
  font-family: 'Cairo';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/__storyme/ea9fd7a9456b90f33041fe0cb513d32781b5d39cf7675f87e9832e72396d6096/app/shared/fonts/cairo-latin-400-normal.woff2) format('woff2');
}

/* cairo-latin-500-normal — derived from the vendor's upstream-cairo-latin.css block of the same name; only src is rewritten */
@font-face {
  font-family: 'Cairo';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/__storyme/ea9fd7a9456b90f33041fe0cb513d32781b5d39cf7675f87e9832e72396d6096/app/shared/fonts/cairo-latin-500-normal.woff2) format('woff2');
}

/* cairo-latin-700-normal — derived from the vendor's upstream-cairo-latin.css block of the same name; only src is rewritten */
@font-face {
  font-family: 'Cairo';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/__storyme/ea9fd7a9456b90f33041fe0cb513d32781b5d39cf7675f87e9832e72396d6096/app/shared/fonts/cairo-latin-700-normal.woff2) format('woff2');
}

/* =============================================================================================
   THE FALLBACK FACES (c367) — six @font-face declarations that name NO file. Each maps a face
   the author's machine already has onto the metrics of the served face it stands in for, so the
   words laid out before Geist or Cairo arrives occupy the same boxes as after: the swap
   (font-display: swap, above) then changes glyphs, never a line break and never a control's
   place. The values are the independent reviewer's, derived by fontTools from the vendored woff2
   files and the local faces (c367 r1 review, font-metrics.json): size-adjust = the served face's
   average advance ÷ the local face's; ascent-override and descent-override = the served face's
   typo ascender and descender ÷ size-adjust; line-gap-override 0 (the served faces carry none).
   Helvetica and Arial share their average advance (0.4597 em, measured), and Liberation Sans is
   Arial's metric-compatible twin by design, so one declaration serves the Mac, Windows and Linux
   Latin face. 'Cairo Fallback' names Geeza Pro (macOS, iOS). 'Cairo Fallback DejaVu' (c367 r18)
   names DejaVu Sans, the only Arabic face on the Linux CI image (Ubuntu 24.04, measured on the
   runner itself): its size-adjust is the width of the Studio's own Arabic words in Cairo ÷ their
   width in DejaVu Sans, measured in that machine's Chrome, and its ascent and descent follow the
   same rule as above. A machine without the local face skips the family, as the browser does.
   Pinned by app/shared/vendored-typefaces.test.mjs.
   ============================================================================================= */
@font-face {
  font-family: 'Geist Fallback';
  font-style: normal;
  font-weight: 300 500;
  src: local('Helvetica'), local('Arial'), local('Liberation Sans');
  size-adjust: 104.06%;
  ascent-override: 96.58%;
  descent-override: 28.35%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Geist Fallback';
  font-style: normal;
  font-weight: 600 700;
  src: local('Helvetica Bold'), local('Helvetica-Bold'), local('Arial Bold'), local('Liberation Sans Bold');
  size-adjust: 103.76%;
  ascent-override: 96.86%;
  descent-override: 28.43%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Cairo Fallback';
  font-style: normal;
  font-weight: 300 500;
  src: local('Geeza Pro Regular'), local('GeezaPro');
  size-adjust: 118.90%;
  ascent-override: 109.59%;
  descent-override: 48.02%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Cairo Fallback';
  font-style: normal;
  font-weight: 600 700;
  src: local('Geeza Pro Bold'), local('GeezaPro-Bold');
  size-adjust: 111.49%;
  ascent-override: 116.87%;
  descent-override: 51.22%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Cairo Fallback DejaVu';
  font-style: normal;
  font-weight: 300 500;
  src: local('DejaVu Sans'), local('DejaVuSans');
  size-adjust: 96.16%;
  ascent-override: 135.51%;
  descent-override: 59.38%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Cairo Fallback DejaVu';
  font-style: normal;
  font-weight: 600 700;
  src: local('DejaVu Sans Bold'), local('DejaVuSans-Bold');
  size-adjust: 87.42%;
  ascent-override: 149.06%;
  descent-override: 65.32%;
  line-gap-override: 0%;
}
