/* Smart Luxy — self-hosted type set (2026-09-28). Files: /assets/fonts/ (licences next to them:
   Inter-OFL.txt, Noto-Sans-Georgian-OFL.txt, JetBrainsMono-OFL.txt, FiraGO-OFL.txt, BPG-LICENSES.txt).
   Nothing is loaded from other sites. In <head>, slFontsHead() (config/database.php) prints the two
   preloads (BPG Glaho + Noto) and this file, BEFORE smartluxy.css / admin-theme.css.

   Composite families (one family name, split by script with unicode-range):
     "SL Sans"     body text: Inter (Latin, digits, punctuation, ₾ №) + BPG Glaho (Mkhedruli at 300–500)
                   + Noto Sans Georgian (Mkhedruli at 600–900, since Glaho has no bold; Mtavruli at every weight)
     "SL Display"  headings + small caps-style labels: Noto Sans Georgian + Inter (Latin), 600–800
     "SL Nav"      menus + every button: BPG LE Studio 02 Caps (draws capital-style letters itself, so never
                   add text-transform) + Noto (Mtavruli) + Inter (₾, №, arrows). Only weight 400 exists.
   Rule: inside one family every face is declared for the SAME weight band, or Chrome sends bold Latin to
   the system font. Mtavruli: the OpenType "case" feature of Noto draws it (Chrome ignores text-transform
   for Georgian); text-transform: uppercase is added for Latin and for Firefox/Safari (U+1C90–1CBF, also Noto).
   Write headings in normal Mkhedruli in HTML; never type Mtavruli code points.
   Unicode ranges and fallback metrics come from the reference build (moacere.ge/static/css/fonts.css). */

/* ---- SL Sans: band 300–500 (body, labels) ------------------------------------------------------ */
@font-face {
  font-family: "SL Sans";
  font-style: normal;
  font-weight: 300 500;
  font-display: swap;
  src: url("../fonts/Inter-VF.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-200B,
    U+2010-2027, U+202F-205F, U+20AC, U+20BE, U+2116, U+2122, U+2190-2193, U+2212, U+2248, U+2260,
    U+2264-2265, U+25CF;
}
@font-face {
  font-family: "SL Sans";
  font-style: normal;
  font-weight: 300 500;
  font-display: swap;
  src: url("../fonts/BPGGlaho.woff2") format("woff2");
  unicode-range: U+10D0-10FC;
}
@font-face {
  font-family: "SL Sans";
  font-style: normal;
  font-weight: 300 500;
  font-display: swap;
  src: url("../fonts/NotoSansGeorgian-VF.woff2") format("woff2");
  unicode-range: U+10FD-10FF, U+1C90-1CBF;
}
/* ---- SL Sans: band 600–900 (titles, strong) ----------------------------------------------------- */
@font-face {
  font-family: "SL Sans";
  font-style: normal;
  font-weight: 600 900;
  font-display: swap;
  src: url("../fonts/Inter-VF.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-200B,
    U+2010-2027, U+202F-205F, U+20AC, U+20BE, U+2116, U+2122, U+2190-2193, U+2212, U+2248, U+2260,
    U+2264-2265, U+25CF;
}
@font-face {
  font-family: "SL Sans";
  font-style: normal;
  font-weight: 600 900;
  font-display: swap;
  src: url("../fonts/NotoSansGeorgian-VF.woff2") format("woff2");
  unicode-range: U+10D0-10FF, U+1C90-1CBF;
}

/* ---- SL Display: headlines (Mtavruli through Noto "case") --------------------------------------- */
@font-face {
  font-family: "SL Display";
  font-style: normal;
  font-weight: 600 800;
  font-display: swap;
  src: url("../fonts/Inter-VF.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-200B,
    U+2010-2027, U+202F-205F, U+20AC, U+20BE, U+2116, U+2122, U+2190-2193, U+2212, U+2248, U+2260,
    U+2264-2265, U+25CF;
}
@font-face {
  font-family: "SL Display";
  font-style: normal;
  font-weight: 600 800;
  font-display: swap;
  src: url("../fonts/NotoSansGeorgian-VF.woff2") format("woff2");
  unicode-range: U+10D0-10FF, U+1C90-1CBF;
}

/* ---- SL Nav: navigation + buttons (BPG LE Studio 02 Caps draws capital-style letterforms) -------- */
@font-face {
  font-family: "SL Nav";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/Inter-VF.woff2") format("woff2");
  unicode-range: U+0000-001F, U+007F-009F, U+00A2-00A5, U+00A8, U+00AA, U+00B2-00B3, U+00B5, U+00B8-00B9,
    U+00BC-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-200B, U+2011-2012,
    U+2015-2017, U+201B, U+201F-2025, U+2027, U+202F-205F, U+20AC, U+20BE, U+2116, U+2122, U+2190-2193,
    U+2212, U+2248, U+2260, U+2264-2265, U+25CF;
}
@font-face {
  font-family: "SL Nav";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/BPGLEStudio02Caps.woff2") format("woff2");
  unicode-range: U+0020-007E, U+00A0-00A1, U+00A6-00A7, U+00A9, U+00AB-00B1, U+00B4, U+00B6-00B7,
    U+00BA-00BB, U+10D0-10F0, U+2010, U+2013-2014, U+2018-201A, U+201C-201E, U+2026;
}
@font-face {
  font-family: "SL Nav";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/NotoSansGeorgian-VF.woff2") format("woff2");
  unicode-range: U+10F1-10FF, U+1C90-1CBF;
}

/* ---- Metric-matched local stand-ins for the swap period (CLS ≈ 0) ------------------------------------
   Numbers from `scripts/build_design_assets.py --metrics` (fontTools; advances weighted by the site's own
   letter frequencies): size-adjust = web face ÷ local face average advance; ascent/descent/line-gap
   overrides = the web face's hhea metrics ÷ size-adjust (the overrides scale with size-adjust). The primary
   (line-box) font of "SL Sans" / "SL Display" is Inter (it holds U+0020): 0.9688 / 0.2415 / 0.
     Inter 400 0.5055 em vs Arial 0.4667 → 108.3 %, vs Roboto 0.4605 → 109.8 %; Inter 700 0.5307 vs Arial Bold 0.5069 → 104.7 %
     BPG Glaho 0.5647 em vs Helvetica Neue 0.6131 → 92.1 %, vs Noto Sans Georgian 400 0.6611 → 85.4 %
     Noto Sans Georgian 700 0.6921 em vs Helvetica Neue Bold 0.6448 → 107.3 %; its Mtavruli 0.7289 em → 113.1 % (Display)
     BPG LE Studio 02 Caps: Mkhedruli 0.7837 vs Helvetica Neue → 127.8 %, Latin 0.5245 vs Arial → 112.4 %
   Sylfaen / Segoe UI (Windows) could not be measured on the build machine → size-adjust 100 %.
   A face whose local() font is absent simply fails and the next family in the stack is tried. */
@font-face {
  font-family: "SL Sans Fallback";
  font-weight: 300 500;
  src: local("Arial"), local("ArialMT");
  size-adjust: 108.3%;
  ascent-override: 89.45%;
  descent-override: 22.3%;
  line-gap-override: 0%;
  unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+2116, U+2122;
}
@font-face {
  font-family: "SL Sans Fallback";
  font-weight: 300 500;
  src: local("Helvetica Neue"), local("HelveticaNeue");
  size-adjust: 92.1%;
  ascent-override: 92.78%;
  descent-override: 38.18%;
  line-gap-override: 5.3%;
  unicode-range: U+10D0-10FF;
}
@font-face {
  font-family: "SL Sans Fallback";
  font-weight: 600 900;
  src: local("Arial Bold"), local("Arial-BoldMT");
  size-adjust: 104.7%;
  ascent-override: 92.53%;
  descent-override: 23.07%;
  line-gap-override: 0%;
  unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+2116, U+2122;
}
@font-face {
  font-family: "SL Sans Fallback";
  font-weight: 600 900;
  src: local("Helvetica Neue Bold"), local("HelveticaNeue-Bold");
  size-adjust: 107.3%;
  ascent-override: 99.53%;
  descent-override: 27.21%;
  line-gap-override: 0%;
  unicode-range: U+10D0-10FF;
}
@font-face {
  font-family: "SL Sans Fallback Android";
  font-weight: 300 500;
  src: local("Roboto"), local("Roboto-Regular");
  size-adjust: 109.8%;
  ascent-override: 88.23%;
  descent-override: 21.99%;
  line-gap-override: 0%;
  unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+2116, U+2122;
}
@font-face {
  font-family: "SL Sans Fallback Android";
  font-weight: 300 500;
  src: local("Noto Sans Georgian"), local("NotoSansGeorgian-Regular"), local("NotoSansGeorgian");
  size-adjust: 85.4%;
  ascent-override: 100.06%;
  descent-override: 41.17%;
  line-gap-override: 5.71%;
  unicode-range: U+10D0-10FF;
}
@font-face {
  font-family: "SL Sans Fallback Win";
  src: local("Sylfaen"), local("Segoe UI"), local("SegoeUI");
  ascent-override: 96.88%;
  descent-override: 24.15%;
  line-gap-override: 0%;
  unicode-range: U+10D0-10FF;
}
@font-face {
  font-family: "SL Display Fallback";
  font-weight: 600 800;
  src: local("Arial Bold"), local("Arial-BoldMT");
  size-adjust: 104.7%;
  ascent-override: 92.53%;
  descent-override: 23.07%;
  line-gap-override: 0%;
  unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+2116, U+2122;
}
@font-face {
  font-family: "SL Display Fallback";
  font-weight: 600 800;
  src: local("Helvetica Neue Bold"), local("HelveticaNeue-Bold");
  /* headlines are Mtavruli: Noto 700 capitals 0.7289 em vs Helvetica Neue Bold 0.6447 = 113.1 %, calibrated
     in Chromium against 8 real site headlines (fallback came out 1.7 % wider: spaces + punctuation) → 111.4 % */
  size-adjust: 111.4%;
  ascent-override: 95.87%;
  descent-override: 26.21%;
  line-gap-override: 0%;
  unicode-range: U+10D0-10FF;
}
@font-face {
  font-family: "SL Nav Fallback";
  src: local("Arial"), local("ArialMT");
  size-adjust: 112.4%;
  ascent-override: 65.84%;
  descent-override: 23.13%;
  line-gap-override: 10.68%;
  unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+2116, U+2122;
}
@font-face {
  font-family: "SL Nav Fallback";
  src: local("Helvetica Neue"), local("HelveticaNeue");
  size-adjust: 127.8%;
  ascent-override: 57.9%;
  descent-override: 20.34%;
  line-gap-override: 9.39%;
  unicode-range: U+10D0-10FF;
}

/* ---- FiraGO: the last fallback of every stack (never preloaded; downloaded only if a character reaches it)
   Georgian + Latin subsets of the official bBox Type FiraGO 1.001 (OFL, ../fonts/FiraGO-OFL.txt). The
   unicode-range must stay identical to UNICODE_RANGE_CSS in the build script. FiraGO has no Mtavruli. */
@font-face {
  font-family: "FiraGO";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/FiraGO-Regular.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308,
    U+0329, U+10D0-10FF, U+2000-206F, U+20A0-20CF, U+2116, U+2122, U+2190-2199, U+2202, U+2206,
    U+2211-2212, U+2215, U+2219-221A, U+221E, U+2248, U+2260, U+2264-2265, U+25CF, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "FiraGO";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/FiraGO-Medium.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308,
    U+0329, U+10D0-10FF, U+2000-206F, U+20A0-20CF, U+2116, U+2122, U+2190-2199, U+2202, U+2206,
    U+2211-2212, U+2215, U+2219-221A, U+221E, U+2248, U+2260, U+2264-2265, U+25CF, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "FiraGO";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/FiraGO-SemiBold.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308,
    U+0329, U+10D0-10FF, U+2000-206F, U+20A0-20CF, U+2116, U+2122, U+2190-2199, U+2202, U+2206,
    U+2211-2212, U+2215, U+2219-221A, U+221E, U+2248, U+2260, U+2264-2265, U+25CF, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "FiraGO";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/FiraGO-Bold.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308,
    U+0329, U+10D0-10FF, U+2000-206F, U+20A0-20CF, U+2116, U+2122, U+2190-2199, U+2202, U+2206,
    U+2211-2212, U+2215, U+2219-221A, U+221E, U+2248, U+2260, U+2264-2265, U+25CF, U+FEFF, U+FFFD;
}

/* ---- Code: JetBrains Mono (OFL), Latin only — Georgian inside code falls through to "SL Sans" -------- */
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/JetBrainsMono-Regular.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F,
    U+20A0-20CF, U+2116, U+2122, U+2190-2199, U+21D2, U+2212, U+2215, U+221E, U+2248, U+2260,
    U+2264-2265, U+2500-257F, U+25CF, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/JetBrainsMono-Bold.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F,
    U+20A0-20CF, U+2116, U+2122, U+2190-2199, U+21D2, U+2212, U+2215, U+221E, U+2248, U+2260,
    U+2264-2265, U+2500-257F, U+25CF, U+FEFF, U+FFFD;
}

/* ---- Role tokens ----------------------------------------------------------------------------------------- */
:root {
  --font-body:    "SL Sans", "SL Sans Fallback", "SL Sans Fallback Android", "SL Sans Fallback Win", "FiraGO", "Noto Sans Georgian", system-ui, sans-serif;
  --font-display: "SL Display", "SL Display Fallback", "FiraGO", "Noto Sans Georgian", system-ui, sans-serif;
  --font-nav:     "SL Nav", "SL Nav Fallback", "FiraGO", "Noto Sans Georgian", system-ui, sans-serif;
  --font-mono:    "JetBrains Mono", "SL Sans", "FiraGO", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --font-caps-features: "kern" 1, "calt" 1, "case" 1;
}

/* ---- Role helpers (opt-in classes; stylesheets apply the same declarations to their own selectors) ------- */
/* Headings: Noto 700 in Mtavruli. Display scale for true page/hero titles:
   hero 34/44/56px, h2 26/31/38px (<=767 / 768-1199 / >=1200). */
.sl-display {
  font-family: var(--font-display);
  font-weight: 700;
  font-feature-settings: var(--font-caps-features);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  line-height: 1.15;
}
/* Small caps-style labels: eyebrows, table headers, sidebar groups, tag badges (NOT statuses). */
.sl-label {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 13px;
  font-feature-settings: var(--font-caps-features);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
/* Menus and buttons: BPG LE Studio 02 Caps 400, no text-transform, normal letter-spacing. */
.sl-nav { font-family: var(--font-nav); font-weight: 400; text-transform: none; letter-spacing: normal; }
/* Prices and figures: Inter digits with equal widths. Thousands separator = U+00A0 ("1 488 ₾"). */
.sl-num { font-variant-numeric: tabular-nums; }
.sl-mono, code, kbd, samp, pre { font-family: var(--font-mono); }
