/* ═══════════════════════════════════════════════════════════════════════════
   A1 Design System — TOKENS  ·  Contenta1-tokens.css
   ⛔ مُولَّدٌ من مصدرِ الحقيقة؟ لا — هذا **هو** مصدرُ الحقيقة.
      نماذجُ الدراسةِ ترتبط بهذا الملفِّ نفسِه بمسارٍ نسبيّ، فلا مصدرانِ لملفٍّ يُشحَن.

   النطاقُ إلزاميّ:
     • كلُّ صنفٍ يشترط سلفًا يحمل .a1  ⇒ صفرُ أثرٍ على 313 صفحةً قائمة.
       القياسُ الذي فرض هذا: .btn في 79 صفحة · .card في 78 · .row في 61 · .badge في 47.
     • كلُّ رمزٍ ببادئة --a1-          ⇒ صفرُ تصادمٍ مع 25 ملفًّا تُعرِّف --muted و24 تُعرِّف --bg.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════════════
   A1 Design System — TOKENS
   D:\A1-Nova\دراسات\Supervision\02_UX\Mockups\assets\tokens.css

   المصدرُ الوحيدُ للّون والطباعةِ والمسافةِ والكثافة.
   ⛔ لا يُكتَب لونٌ حرفيٌّ في أيِّ نموذج. كلُّ قيمةٍ تمرّ من هنا.

   ───────────────────────────────────────────────────────────────────────────
   لماذا هذه القيمُ بعينها — كلُّها مأخوذةٌ من قياسٍ لا من ذوق:

   • اللوحتان A و B مثبَّتتانِ على لونَين **موجودَين في تطبيقِ الجوّالِ اليوم**
     (studentBrand #0E7490 · parentBrand #1E3A8A). اختيارُ أيٍّ منهما يجعل
     الويبَ والجوّالَ يشتركانِ في لونٍ حقيقيٍّ لأوّلِ مرّة — وهو ما رصده الجردُ
     باسم MOBILE_WEB_MISMATCH على مستوى النظامِ كلِّه.

   • الألوانُ المحايدةُ منقولةٌ كما هي من النمطِ الأوسعِ انتشارًا في الشجرة
     (#0f172a · #64748b · #e2e8f0 · #f1f5f9) — REUSE BEFORE REDESIGN.

   • ⛔ ولا تُنسَخ رموزُ Content\master-core.css: قِيس أنّها تسقط في التباين
     (--accent 2.15 · --success 2.54 · --primary 4.47)، فالتوحيدُ عليها
     يُعمِّم عطبًا. استُبدلت بالقيمِ التي اجتازت AA فعلًا في الشجرة:
     #065f46 · #92400e · #991b1b  (CouncilViolations.aspx:870-880 — 6.37/6.78/6.80)

   • حالاتُ الوضعِ الداكن مأخوذةٌ من Pages\Dashboard\ParentLms.aspx:38-42.
     🔴 وأُضيفت أربعُ قيمٍ **ليست هناك**: مقدّماتُ الحالةِ في الداكن. الملفُّ
        الأصليُّ يعيد تعريفَ الخلفيّاتِ الأربعِ ولا يعيد تعريفَ المقدّمات، فيبقى
        المقدّماتُ الأربعُ كلُّها ساقطة: 3.04 · 3.21 · 2.74 · 2.10 — وليست واحدةً فقط.
        العلاجُ مشتقٌّ لا مخترَع: ألوانُ الحدودِ في الوضعِ الفاتح
        (#86efac · #fcd34d · #fca5a5 · #c7d2fe) تصلح مقدّماتٍ في الداكن،
        وتُعطي 10.85 · 11.18 · 9.34 · 11.12 — كلُّها AAA (محسوبةً بالمحرّك لا يدويًّا).
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── FONT AUTHORITY DECISION — قرارُ المالك · ٢٠ أغسطس ٢٠٢٦ ──────────────────
   Canonical LMS typography = Dubai.   ← هذا الملفُّ هو السلطة.

   Content\a1-portal-type.css = طبقةُ توافقٍ قديمةٌ **مؤقّتة** لا منافِس.
   تفرض Calibri بـ!important على ثلاثِ شاشاتٍ فقط:
     Pages\Dashboard\ParentLms.aspx · StudentLms.aspx · Pages\School\LMS\LMS_Pages\OnlinePayment.aspx
   وتُوسَم LEGACY_FONT_OVERRIDE. ⛔ لا تُلمَس اليوم — ولا يُقاس أثرُ إزالتِها بالتخمين.

   ⛔⛔ وممنوعٌ منعًا باتًّا كتابةُ  font-family: Dubai !important  فوقها.
       ذلك يحوّل القرارَ إلى حربِ أسبقيّةٍ ويُنشئ السلطةَ الثانيةَ التي نتجنّبها.

   بوّابةُ التقاعد — FONT-MIGRATION (لم تبدأ):
     ١ تُقاس الشاشاتُ الثلاثُ بالعربيّةِ والإنجليزيّة
     ٢ تُقارَن Dubai بـCalibri الحاليّة
     ٣ يُفحَص: القصُّ · أدواتُ DevExpress · الأزرارُ · الشبكاتُ ·
        الأعمدةُ الرقميّة · شاشاتُ الطباعةِ والدفع · العروضُ الخمسة
     ٤ إن اجتازت: تُزال سلطةُ !important من a1-portal-type.css وتفوز الرموزُ القانونيّة
     ٥ بعدها:  FONT_AUTHORITIES = 1

   والاحتياطيّ: خطوطُ النظامِ المحلّيّةُ فقط — ⛔ لا اعتمادَ على أيِّ خطٍّ من الإنترنت.
   ─────────────────────────────────────────────────────────────────────────── */

/* ───────────────────────────────────────────────────────────────────────────
   1 · الخطُّ — محلّيٌّ بالكامل، بلا أيِّ طلبٍ خارجيّ
   القياس: ٢٥ صفحةً في الشجرةِ تجلب خطَّها من fonts.googleapis.com
   (Cairo ×18 · Tajawal ×7 · Inter ×1)، وثمانٍ تُعلن الخطَّ ولا تُحمِّله أبدًا
   ⇒ سقوطٌ صامتٌ مضمون. ومدرسةٌ على خادمٍ محلّيٍّ تفقد هويّتَها بانقطاعِ الشبكة.
   Dubai خطُّ واجهةٍ ثنائيُّ اللغةِ مثبَّتٌ على Windows بأربعةِ أوزان.
   ⚠️ قرارُ الإنتاج: يُشحَن woff2 مُجزَّأً محلّيًّا — لا CDN أبدًا.
   ─────────────────────────────────────────────────────────────────────────── */
:root {
  --a1-font-ui:   'Dubai', 'Sakkal Majalla', 'Segoe UI', Tahoma, system-ui, sans-serif;
  --a1-font-mono: 'Consolas', 'Cascadia Mono', ui-monospace, monospace;

  /* سُلَّمُ المقاسات — 12px أرضيّةٌ مُنفَّذة، لا مُعلَنة فقط.
     الجردُ رصد ٣ خروقٍ حقيقيّةٍ لـminFontSize=12 في الجوّال لأنّ الثابتَ
     كان يعيش في دالّةِ بناءِ السمةِ ولا شيءَ يمنع كتابةَ fontSize:9. */
  --a1-fs-xs:  12px;   /* الأرضيّة — لا شيءَ تحتها */
  --a1-fs-sm:  13px;
  --a1-fs-md:  14px;   /* الأساس: بياناتٌ كثيفة */
  --a1-fs-lg:  16px;   /* الأساس: نصٌّ يُقرأ */
  --a1-fs-xl:  18px;
  --a1-fs-2xl: 22px;
  --a1-fs-3xl: 28px;
  --a1-fs-4xl: 36px;

  --a1-fw-regular: 400;
  --a1-fw-medium:  500;
  --a1-fw-bold:    700;

  --a1-lh-tight: 1.25;
  --a1-lh-body:  1.6;    /* العربيّةُ تحتاج فسحةً أكبرَ للتشكيلِ والنقاط */

  /* الأرقامُ تُصطفّ دائمًا في الجداولِ والمؤشّرات */
  --a1-num: tabular-nums;

  /* ─── 2 · المسافةُ والشكل ─── */
  --a1-sp-1: 4px;   --a1-sp-2: 8px;   --a1-sp-3: 12px;  --a1-sp-4: 16px;
  --a1-sp-5: 20px;  --a1-sp-6: 24px;  --a1-sp-8: 32px;  --a1-sp-10: 40px;

  /* استدارةٌ واحدةٌ لا خمس. الجردُ وجد 5 قيمٍ متمايزةٍ لـ--radius،
     وقيمةَ الملفِّ المشترك (10px) لا تستعملها ولا صفحةٌ واحدة. */
  --a1-r-sm: 8px;
  --a1-r:    12px;
  --a1-r-lg: 16px;
  --a1-r-pill: 999px;

  --a1-ring: 0 0 0 3px;              /* حلقةُ التركيز — تُلوَّن من العلامة */
  --a1-sh-1: 0 1px 2px rgba(15,23,42,.06), 0 1px 3px rgba(15,23,42,.05);
  --a1-sh-2: 0 2px 8px rgba(15,23,42,.06), 0 8px 24px rgba(15,23,42,.05);
  --a1-sh-3: 0 8px 32px rgba(15,23,42,.12);

  --a1-t-fast: 120ms cubic-bezier(.4,0,.2,1);
  --a1-t:      200ms cubic-bezier(.4,0,.2,1);

  /* ─── 3 · الكثافةُ رمزٌ لا تصميمٌ ثانٍ ───
     هذه هي الآليّةُ التي تجعل نظامًا واحدًا يخدم لوحةً فسيحةً
     وشاشةَ حضورٍ فيها ٢٥ طالبًا. تُبدَّل بسمةٍ على <html>. */
  --a1-row-h:    44px;
  --a1-ctl-h:    38px;
  --a1-pad-card: 20px;
  --a1-pad-cell: 12px 14px;
  --a1-gap:      16px;
}

:root[data-density="compact"] {
  --a1-row-h:    32px;
  --a1-ctl-h:    32px;
  --a1-pad-card: 14px;
  --a1-pad-cell: 6px 10px;
  --a1-gap:      10px;
  --a1-fs-md:    13px;
}

/* ───────────────────────────────────────────────────────────────────────────
   4 · المحايدات — الوضعُ الفاتح
   ─────────────────────────────────────────────────────────────────────────── */
:root {
  --a1-bg:        #f1f5f9;
  --a1-surface:   #ffffff;
  --a1-surface-2: #f8fafc;
  --a1-line:      #e2e8f0;
  --a1-line-2:    #cbd5e1;
  --a1-ink:       #0f172a;
  --a1-ink-2:     #334155;
  --a1-muted:     #55637a;   /* كان #64748b — قِيس 4.34 على --surface-2 ⇒ ساقط. غُمِّق حتّى يجتاز على surface و surface-2 و bg معًا */
  --a1-on-brand:  #ffffff;

  /* ─── الحالاتُ الدلاليّة — منفصلةٌ عن لونِ العلامة عمدًا ───
     القيمُ الفاتحةُ من CouncilViolations (المجموعةُ الوحيدةُ المجتازةُ لـAA)
     والخلفيّاتُ والحدودُ من ParentLms. */
  --a1-ok:      #065f46;  --a1-ok-bg:   #ecfdf5;  --a1-ok-br:   #86efac;
  --a1-warn:    #92400e;  --a1-warn-bg: #fffbeb;  --a1-warn-br: #fcd34d;
  --a1-bad:     #991b1b;  --a1-bad-bg:  #fef2f2;  --a1-bad-br:  #fca5a5;
  --a1-info:    #1e40af;  --a1-info-bg: #eff6ff;  --a1-info-br: #c7d2fe;
  --a1-neutral: #475569;  --a1-neutral-bg: #f1f5f9; --a1-neutral-br: #cbd5e1;
}

/* ───────────────────────────────────────────────────────────────────────────
   5 · اللوحةُ A — «مِداد»  ·  المرساة: studentBrand #0E7490 من تطبيق الجوّال
   أبيضُ فوقها = 5.36 : 1 ✅ (رقمٌ منشورٌ في جردِ الجوّالِ وأعاد حسابي إنتاجَه)
   ─────────────────────────────────────────────────────────────────────────── */
/* ── BRAND AUTHORITY — قرارُ المالك · ٢٠ أغسطس ٢٠٢٦ ─────────────────────────
   ⛔ لوحتا A و B **ليستا سلطةً**. سلطةُ اللونِ الوحيدةُ هي شاشةُ الهويّةِ البصريّة:
        Pages\Admin\BrandingSetup.aspx  →  SiteSettings.ActiveBrandTheme
        →  Root.master.vb:185-204 يحقن --primary · --primary-dark · --primary-light
           · --header-bg · --sidebar-bg · --accent
   وهما هنا **قالبانِ جاهزانِ** يُدخَلان من تلك الشاشة، لا مبدّلٌ في الكود.

   ولماذا تُشتقُّ رموزُنا منها: قِيس أنّ 30 صفحةً تُعرِّف --primary في :root خاصٍّ بها
   بعد حقنِ الماستر، فتُلغيه ⇒ **سِمةُ العلامةِ لا تعمل عليها**. وقِيس أنّ صفرَ صفحةٍ
   تُعرِّف --a1-brand ⇒ الاشتقاقُ بالبادئةِ يجعل شاشةَ الهويّةِ تعمل أخيرًا.

   والتدرّجاتُ الفاتحةُ تُعلَن مرّتَين عمدًا: قيمةٌ ساكنةٌ أوّلًا ثمّ color-mix.
   المتصفّحُ الذي لا يعرف color-mix يُهمل السطرَ الثاني ويبقى على الأوّل — تحسينٌ
   تدريجيٌّ لا اعتمادٌ على ميزة.

   القالبُ A — «مِداد»  : primary #0E7490   (studentBrand في تطبيق الجوّال · أبيضُ فوقه 5.36)
   القالبُ B — «نِيلَج» : primary #1E3A8A   (parentBrand  في تطبيق الجوّال · أبيضُ فوقه 10.36)
   ⛔ ولا يُشتقُّ --a1-side-bg من --sidebar-bg: افتراضيُّ الماستر #fafbfc فاتحٌ،
      وشريطُنا الجانبيُّ نصُّه أبيض ⇒ الاشتقاقُ يجعله غيرَ مقروء.
   ─────────────────────────────────────────────────────────────────────────── */
:root, :root[data-palette="a"] {
  --a1-brand-50:  #f0f9fb;
  --a1-brand-100: #d7eef4;
  --a1-brand-200: #aadde8;
  --a1-brand-500: #1191ae;
  --a1-brand:     #0e7490;
  --a1-brand-700: #0b5c73;
  --a1-brand-800: #084553;
  --a1-accent:    #b45309;

  /* الاشتقاقُ من شاشةِ الهويّة — تفوز حين تكون مضبوطة، وتبقى قيمُ القالبِ حين لا تكون */
  --a1-brand:     var(--primary, #0e7490);
  --a1-brand-700: var(--primary-dark, #0b5c73);
  --a1-brand-500: var(--primary-light, #1191ae);
  --a1-accent:    var(--accent, #b45309);
  --a1-brand-50:  color-mix(in srgb, var(--a1-brand)  8%, white);
  --a1-brand-100: color-mix(in srgb, var(--a1-brand) 18%, white);
  --a1-brand-200: color-mix(in srgb, var(--a1-brand) 34%, white);
  --a1-brand-800: color-mix(in srgb, var(--a1-brand) 78%, black);
}

/* ───────────────────────────────────────────────────────────────────────────
   6 · اللوحةُ B — «نِيلَج»  ·  المرساة: parentBrand #1E3A8A من تطبيق الجوّال
   أبيضُ فوقها = 10.36 : 1 ✅ (رقمٌ منشورٌ وأعاد حسابي إنتاجَه)
   ─────────────────────────────────────────────────────────────────────────── */
:root[data-palette="b"] {
  --a1-brand-50:  #eef2ff;
  --a1-brand-100: #dbe3fe;
  --a1-brand-200: #bcc9fc;
  --a1-brand-500: #3b5bd9;
  --a1-brand:     #1e3a8a;   /* ← المرساة */
  --a1-brand-700: #182e6e;
  --a1-brand-800: #12235a;
  --a1-accent:    #0f766e;
}

/* ───────────────────────────────────────────────────────────────────────────
   7 · الوضعُ الداكن
   ثلاثُ حالاتٍ لا اثنتان: اختيارٌ صريحٌ فاتح · اختيارٌ صريحٌ داكن ·
   والافتراضيُّ «تبعُ النظام» الذي لا يضع أيَّ سمةٍ على الجذر.
   ─────────────────────────────────────────────────────────────────────────── */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --a1-bg:        #0b1220;
    --a1-surface:   #111c30;
    --a1-surface-2: #0e1728;
    --a1-line:      #1e2d4a;
    --a1-line-2:    #2b3d60;
    --a1-ink:       #e8eefc;
    --a1-ink-2:     #c3cfe6;
    --a1-muted:     #93a4c0;

    /* 🔴 المقدّماتُ الأربعُ التي لم تكن موجودةً في أيِّ ملفٍّ — بلاها
       يبقى نصُّ الحالةِ عند 3.04 : 1 في الوضعِ الداكن. */
    --a1-ok:   #86efac;  --a1-ok-bg:   #0d2b1b;  --a1-ok-br:   #14532d;
    --a1-warn: #fcd34d;  --a1-warn-bg: #2b1f08;  --a1-warn-br: #78350f;
    --a1-bad:  #fca5a5;  --a1-bad-bg:  #2b1010;  --a1-bad-br:  #7f1d1d;
    --a1-info: #c7d2fe;  --a1-info-bg: #161c3c;  --a1-info-br: #312e81;
    --a1-neutral: #cbd5e1; --a1-neutral-bg: #172136; --a1-neutral-br: #334155;

    --a1-sh-1: 0 1px 2px rgba(0,0,0,.5);
    --a1-sh-2: 0 2px 10px rgba(0,0,0,.45);
    --a1-sh-3: 0 8px 32px rgba(0,0,0,.55);
  }
  :root:not([data-theme="light"]):not([data-palette="b"]) {
    --a1-brand: #38bcd8; --a1-brand-700: #7dd6e9; --a1-brand-100: #103b47; --a1-brand-50: #0c2a33;
    --a1-on-brand: #04222b;
  }
  :root:not([data-theme="light"])[data-palette="b"] {
    --a1-brand: #93aefd; --a1-brand-700: #b9c9fe; --a1-brand-100: #1b2a5c; --a1-brand-50: #131f45;
    --a1-on-brand: #0a1533;
  }
}

:root[data-theme="dark"] {
  --a1-bg:        #0b1220;
  --a1-surface:   #111c30;
  --a1-surface-2: #0e1728;
  --a1-line:      #1e2d4a;
  --a1-line-2:    #2b3d60;
  --a1-ink:       #e8eefc;
  --a1-ink-2:     #c3cfe6;
  --a1-muted:     #93a4c0;

  --a1-ok:   #86efac;  --a1-ok-bg:   #0d2b1b;  --a1-ok-br:   #14532d;
  --a1-warn: #fcd34d;  --a1-warn-bg: #2b1f08;  --a1-warn-br: #78350f;
  --a1-bad:  #fca5a5;  --a1-bad-bg:  #2b1010;  --a1-bad-br:  #7f1d1d;
  --a1-info: #c7d2fe;  --a1-info-bg: #161c3c;  --a1-info-br: #312e81;
  --a1-neutral: #cbd5e1; --a1-neutral-bg: #172136; --a1-neutral-br: #334155;

  --a1-sh-1: 0 1px 2px rgba(0,0,0,.5);
  --a1-sh-2: 0 2px 10px rgba(0,0,0,.45);
  --a1-sh-3: 0 8px 32px rgba(0,0,0,.55);
}
:root[data-theme="dark"]:not([data-palette="b"]) {
  --a1-brand: #38bcd8; --a1-brand-700: #7dd6e9; --a1-brand-100: #103b47; --a1-brand-50: #0c2a33;
  --a1-on-brand: #04222b;
}
:root[data-theme="dark"][data-palette="b"] {
  --a1-brand: #93aefd; --a1-brand-700: #b9c9fe; --a1-brand-100: #1b2a5c; --a1-brand-50: #131f45;
  --a1-on-brand: #0a1533;
}

/* ───────────────────────────────────────────────────────────────────────────
   8 · ألوانُ الأدوارِ — دلاليّةٌ لا زخرفيّة، ومشتركةٌ مع الجوّال
   ─────────────────────────────────────────────────────────────────────────── */
:root {
  --a1-role-student:   #0e7490;
  --a1-role-parent:    #1e3a8a;
  --a1-role-teacher:   #6d28d9;
  --a1-role-counselor: #b45309;
  --a1-role-supervisor:#0f766e;
  --a1-role-admin:     #334155;
  --a1-role-fg:        #ffffff;

  /* القشرة: العلامةُ داكنةٌ دائمًا فالأبيضُ فوقها ثابتٌ لا يتبع السمة */
  --a1-side-bg:     var(--a1-brand-800);
  --a1-side-fg:     #ffffff;
  --a1-side-dim:    rgba(255,255,255,.62);
  --a1-side-mark:   rgba(255,255,255,.16);
  --a1-side-hover:  rgba(255,255,255,.10);
  --a1-side-active: rgba(255,255,255,.18);
  --a1-side-cnt:    rgba(255,255,255,.22);

  --a1-scrim:       rgba(15,23,42,.45);
}
