/* [2026-07-27] ADDED — Indic script webfonts for regional-language interviews.
 *
 * WHY: the global rule in assets/css/portal.css was `font-family: Manrope !important`
 * with no fallback family. Manrope contains ZERO glyphs for every Indic script
 * (verified: 678 glyphs, 0 in U+0B80-0BFF), and the bundled Poppins has 0 Tamil too.
 * So Tamil/Bengali/... transcript text fell through to whatever font the rendering
 * machine happened to have installed. That machine is frequently NOT a laptop — it is
 * the 100ms "beam" headless-browser recorder that renders components/Pages/FullBeam.jsx
 * (-> LiveKit/BeamTranscriptPanel.jsx) and burns the transcript panel into the MP4.
 * Whatever that container lacked became permanent tofu boxes in the recording.
 *
 * Covers the 8 languages in realtime-support-system/language.py `regional_languages`:
 * Bengali, Tamil, Telugu, Gujarati, Kannada, Malayalam, Marathi (Devanagari),
 * Punjabi (Gurmukhi).
 *
 * NOTES FOR FUTURE MAINTAINERS:
 * - This file and its .woff2 files both live under `public/`, and it is loaded by a <link> in
 *   public/index.html — deliberately NOT imported from src/. Two independent reasons:
 *     1. webpack.config.js:85-87 sends every font matched under src/ through
 *        `type: 'asset/inline'` (base64-embedded into the bundle). Inlining these would add
 *        ~730KB to the main bundle for EVERY user and would defeat the `unicode-range` gating
 *        below, because a base64 data: URI is always downloaded.
 *     2. css-loader resolves root-relative `url(/...)` in stylesheets imported from src/ and
 *        fails the build: "Module not found: Can't resolve '/fonts/noto/...'". (Verified — an
 *        earlier attempt to import this from App.js broke `npm run build`.)
 *   Files in public/ are copied verbatim by CopyPlugin (webpack.config.js:129-142) and served
 *   by devServer.static (:163), so the browser gets real, separately-fetchable URLs.
 * - Each `unicode-range` is Google Fonts' own published range for that subset, copied
 *   verbatim. The browser downloads a family ONLY if the page actually contains a
 *   character in its range, so an English interview downloads ZERO bytes from this file.
 * - The shared symbols in these ranges (U+20B9 rupee, U+200C-200D ZWJ/ZWNJ) are already
 *   covered by Manrope's latin/latin-ext subsets. Manrope is first in the font stack, so
 *   it still wins for those on English pages — no accidental Noto download. They are kept
 *   in the Indic ranges deliberately: ZWJ/ZWNJ must resolve to the SAME font as the
 *   surrounding Indic run or the browser splits the shaping run and conjunct
 *   formation/suppression breaks.
 * - These are variable fonts (wght axis 100-900, verified), so one file per script serves
 *   every weight, including the <b> speaker label in the transcript panel.
 * - Fail-open by construction: if a file 404s or the network drops, the browser skips the
 *   family and falls through to the next one in the stack — i.e. exactly today's behavior.
 *   Kill switch: remove the `<link rel="stylesheet" href="/fonts/indic.css">` in public/index.html.
 */

/* Tamil */
@font-face {
    font-family: 'Noto Sans Tamil';
    src: url('/fonts/noto/NotoSansTamil-variable.woff2') format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0964-0965, U+0B82-0BFA, U+200C-200D, U+20B9, U+25CC;
}

/* Bengali */
@font-face {
    font-family: 'Noto Sans Bengali';
    src: url('/fonts/noto/NotoSansBengali-variable.woff2') format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0951-0952, U+0964-0965, U+0980-09FE, U+1CD0, U+1CD2, U+1CD5-1CD6, U+1CD8, U+1CE1,
        U+1CEA, U+1CED, U+1CF2, U+1CF5-1CF7, U+200C-200D, U+20B9, U+25CC, U+A8F1;
}

/* Telugu */
@font-face {
    font-family: 'Noto Sans Telugu';
    src: url('/fonts/noto/NotoSansTelugu-variable.woff2') format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0951-0952, U+0964-0965, U+0C00-0C7F, U+1CDA, U+1CF2, U+200C-200D, U+25CC;
}

/* Gujarati */
@font-face {
    font-family: 'Noto Sans Gujarati';
    src: url('/fonts/noto/NotoSansGujarati-variable.woff2') format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0951-0952, U+0964-0965, U+0A80-0AFF, U+200C-200D, U+20B9, U+25CC, U+A830-A839;
}

/* Kannada */
@font-face {
    font-family: 'Noto Sans Kannada';
    src: url('/fonts/noto/NotoSansKannada-variable.woff2') format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0951-0952, U+0964-0965, U+0C80-0CF3, U+1CD0, U+1CD2-1CD3, U+1CDA, U+1CF2, U+1CF4,
        U+200C-200D, U+20B9, U+25CC, U+A830-A835;
}

/* Malayalam */
@font-face {
    font-family: 'Noto Sans Malayalam';
    src: url('/fonts/noto/NotoSansMalayalam-variable.woff2') format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0307, U+0323, U+0951-0952, U+0964-0965, U+0D00-0D7F, U+1CDA, U+1CF2, U+200C-200D,
        U+20B9, U+25CC, U+A830-A832;
}

/* Devanagari (Marathi) */
@font-face {
    font-family: 'Noto Sans Devanagari';
    src: url('/fonts/noto/NotoSansDevanagari-variable.woff2') format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839,
        U+A8E0-A8FF, U+11B00-11B09;
}

/* Gurmukhi (Punjabi) */
@font-face {
    font-family: 'Noto Sans Gurmukhi';
    src: url('/fonts/noto/NotoSansGurmukhi-variable.woff2') format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0951-0952, U+0964-0965, U+0A01-0A76, U+200C-200D, U+20B9, U+25CC, U+262C,
        U+A830-A839;
}
