/* ════════════════════════════════════════════════════════════════
   Goustenu · menu — طبقة الخطوط العربية (PLAN-V1 §2.2)
   ----------------------------------------------------------------
   المشكلة التي يحلّها هذا الملفّ: `style.css` كان يطلب `'Segoe UI', Tahoma`
   على نصّ عربيّ (قائمة مضادّات `PRODUCT.md`)، و`offline.css` كان يعلن
   `'Tajawal'` **بلا تحميله أصلاً** — فيسقط صامتاً إلى خطّ النظام. أي أنّ
   الهوية الطباعية كانت **دعوى غير محقّقة**.

   ─── قرار 1: استضافة محلّية لا Google Fonts ───────────────────
   الملفّات هنا (`fonts/*.woff2`) هي ذاتها التي تُخدّمها جوجل، منزَّلة مرّة.
   السبب ثلاثيّ:
     • **تعمل دون اتّصال:** مُسبَقة-التخزين في `sw.js`. طلب عبر أصل آخر
       لا يُعترَض في الـSW (وهو قرار مقصود يحمي `onSnapshot`) ⇒ خطّ جوجل
       لا يُخزَّن أبداً، فصفحة عدم الاتّصال تظهر بخطّ النظام.
     • **أسرع على الشبكة الجزائرية:** بلا DNS+TLS لنطاق ثالث على مسار
       التصيير الحاجب. الاتّصال بـPages دافئ أصلاً.
     • **CSP أضيق:** حُذف `fonts.googleapis.com` و`fonts.gstatic.com` من
       `_headers` — سطح هجوم أقلّ (لا نطاق ثالث يستطيع تنفيذ نمط).
   وثالثاً: لا يرى طرفٌ ثالث عنوان IP كل زبون يفتح المنيو.

   ─── قرار 2: لا تقليم (subsetting) ────────────────────────────
   الحِزَم الستّة = 69KB على القرص، والزائر العربي ينزّل ما تطلبه
   `unicode-range` وحدها: ~30KB عربي + ~40KB لاتيني (اللاتيني **لازم**:
   الأرقام لاتينية قاعدةً في المشروع، وأسماء المطاعم الفرنسية شائعة في
   الجزائر). تقليمها إلى ~4KB يحتاج `fontTools` — تبعيّة Python وخطوة
   بناء تُنسى ونقطة فشل جديدة مقابل 36KB لمرّة واحدة تُخزَّن `immutable`.
   رُفض بوعي، لا بغفلة.

   ─── قرار 3: عقد متغيّرَين لا زوج مثبَّت ──────────────────────
   `--font-display` و`--font-text` هما العقد. `PLAN-V1 §2.2` كتب
   «Reem Kufi + Tajawal» **قبل** أن توجد قوالب `design-lab/` الستّة —
   وكلّ واحد منها يستعمل زوجاً مختلفاً. فتثبيت الزوج في `style.css`
   يعني رمي العمل عند اختيار قالب آخر. هكذا: القالب يعيد تعريف
   متغيّرَين ويضيف `@font-face` خاصّاً به — بلا لمس `style.css`.
   هذا هو ما يحتاجه عقد القوالب (بند 2.4) أصلاً.

   `font-display: swap` مقصود: النصّ يظهر فوراً بالخطّ الاحتياطي ثمّ
   يُستبدَل. البديل `optional` قد **لا يحمّل الخطّ أبداً** على شبكة بطيئة
   ⇒ تصميم لا يُرى، وهو أسوأ من وميض استبدال.

   الرخصة: كلا الخطّين OFL-1.1 — النصّ الكامل في `fonts/OFL-*.txt`.

   ─── قرار 4: الإصدار في اسم الملفّ (`…​.v28.woff2`) ───────────
   `_headers` يخدم `/fonts/*` بـ`immutable, max-age=31536000`. مع اسم
   **ثابت** يكون ذلك فخّاً: استبدال محتوى الملفّ باسمه نفسه يُبقي الزائر
   العائد سنةً على الخطّ القديم — وهي حرفيّاً علّة الكاش التي أصلحتها
   بوّابة G0.3. فبدل الاعتماد على تذكّر أحدٍ، نحمل **إصدار الخطّ الأصليّ
   من جوجل** في الاسم (`v28` لـReem Kufi · `v12` لـTajawal، من مسار
   `/s/reemkufi/v28/`). أيّ ترقية تُنتج اسماً جديداً بطبيعتها ⇒ يُبطَل
   الكاش بنفسه. **لا تستبدل محتوى ملفٍّ هنا باسمه نفسه أبداً.**
   ════════════════════════════════════════════════════════════════ */

/* ─── العناوين: Reem Kufi (خطّ متغيّر — ملفّ واحد يغطّي 400→700) ─── */
@font-face {
  font-family: 'Reem Kufi';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('fonts/reem-kufi-arabic.v28.woff2') format('woff2');
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC;
}
@font-face {
  font-family: 'Reem Kufi';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('fonts/reem-kufi-latin.v28.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+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ─── المتن: Tajawal (ثابت — 400 و700 فقط) ───
   الوزن 600 المستعمل في بعض الأصناف يسقط على 700 بمطابقة CSS القياسية
   (تصعد للأثقل المتاح) — فلا نُنزّل ملفَّين إضافيَّين لفرق لا يكاد يُرى. */
@font-face {
  font-family: 'Tajawal';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/tajawal-400-arabic.v12.woff2') format('woff2');
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC;
}
@font-face {
  font-family: 'Tajawal';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/tajawal-400-latin.v12.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+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Tajawal';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/tajawal-700-arabic.v12.woff2') format('woff2');
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC;
}
@font-face {
  font-family: 'Tajawal';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/tajawal-700-latin.v12.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+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ════════════════════════════════════════════════════════════════
   العقد — القالب يعيد تعريف هذين المتغيّرَين وحدهما
   ----------------------------------------------------------------
   الاحتياطيّات عربية أوّلاً (`Noto Naskh Arabic` موجود على أندرويد
   وويندوز): لحظة الـswap تُعرَض بخطّ عربيّ مقبول لا بلاتينيّ يشوّه الحروف.
   ════════════════════════════════════════════════════════════════ */
:root {
  --font-display: 'Reem Kufi', 'Noto Kufi Arabic', 'Segoe UI', Tahoma, system-ui, sans-serif;
  --font-text: 'Tajawal', 'Noto Naskh Arabic', 'Segoe UI', Tahoma, system-ui, sans-serif;
}
