@charset "UTF-8";
/* === bundle-late.css - ناتج build: python3 tools/build-css.py - do not edit by hand === */
/* 🚀 [TURBO-SILK 2026-09-01 م2] مولَّد آلياً من LATE_MANIFEST — الطبقات 110+
   (كانت 11 رابطاً حاجباً مستقلاً) بترتيب روابطها الحرفي القديم: كل طبقة تغلب
   سابقتها بترتيب المصدر. رابط حاجب واحد بعد bundle-lazy في index.html.
   لا تحرّر هذا الملف — عدّل المصدر وأعد التوليد. */

/* --------------- source: assets/css/110-desktop-velvet.css --------------- */
/* 🚀 [TURBO-SILK 2026-09-01 م2] هذه الطبقة صارت تُبنى ضمن bundle-late.css (لا سطر <link>
   مستقل لها في index.html بعد اليوم — الترتيب محفوظ حرفياً داخل LATE_MANIFEST).
   للإزالة: احذف بندها من LATE_MANIFEST في tools/build-css.py + هذا الملف + أعد التوليد.
   أي تعليمة قديمة أدناه بنص «احذف سطر الlink/رابطه» تعني ذلك. */
/* ════════════════════════════════════════════════════════════════════════════
 * 🟣 [SPEED-RX 2026-07-11] الطبقة 110 — «مخمل الديسكتوب» (Desktop Velvet)
 * ────────────────────────────────────────────────────────────────────────────
 * لماذا: 101 استخداماً لـ backdrop-filter عبر ملفات CSS. طبقة 100 §3 قتلتها على
 * اللمس فقط وأبقت على الديسكتوب ~11 عنصراً بزجاج فعّال (توست/تراكبات ٦ موديولات/
 * صفحتي الدخول) فوق خلفيات كونية متحركة ⇒ jank مضمون على لابتوبات متوسطة.
 *
 * القاعدة هنا: الزجاج على الديسكتوب لـ ≤5 عناصر بطولية فقط وبسقف blur ‏8px:
 *   .top-nav / .bottom-nav / .h-modal / .h-modal-overlay / .playlist-drawer
 * والبقية تُطفأ مع بدائل شبه معتمة بروح كل ثيم (نفس نمط §3 في طبقة 100).
 *
 * ملحقان صغيران بروح المرحلة نفسها:
 *   • رد فعل لمسي للبطاقات على الديسكتوب (:active scale ‏transform فقط) —
 *     نظير قاعدة Shover اللمسية في طبقة 100.
 *   • content-visibility لبطاقات المواد الطويلة (تكملة §7).
 *
 * التحميل: سطر <link> واحد بعد الحزمة (تغلب بترتيب المصدر).
 * 🔴 للتراجع الكامل: احذف سطر <link> الخاص بهذه الطبقة من index.html.
 * ════════════════════════════════════════════════════════════════════════════ */

@media (hover: hover) and (pointer: fine) {

  /* ── §1 إطفاء شامل ثم استثناء الأبطال الخمسة ── */
  *, *::before, *::after {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }
  .top-nav, .bottom-nav {
    -webkit-backdrop-filter: blur(8px) saturate(1.1) !important;
    backdrop-filter: blur(8px) saturate(1.1) !important;
  }
  /* 🪽 [SILK-GLIDE 2026-07-17 R3] أثناء التمرير يضيف main.js كلاس html.h-nav-solid
     (scrollY>0 — الاسم حرفي، منفّذ عند وكيل آخر) ⇒ الشريطان يتصلّبان: بلا
     backdrop-filter (كان يعيد الترشيح كل إطار تمرير ديسكتوب) وبخلفية شبه صلبة
     بروح الثيم (نفس قيم §3 اللمسية في طبقة 100). !important مماثل + خصوصية أعلى
     ليغلبا قاعدتنا أعلاه وقاعدة طبقة 100 §3 الديسكتوبية معاً.
     للتراجع: احذف هذه الكتلة كاملة (يرجع الزجاج الدائم على الشريطين). */
  html.h-nav-solid .top-nav, html.h-nav-solid .bottom-nav {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    background: rgba(13, 17, 28, 0.97) !important;
  }
  html.h-nav-solid[data-theme="purple"] .top-nav,
  html.h-nav-solid[data-theme="purple"] .bottom-nav {
    background: rgba(18, 12, 38, 0.96) !important;
  }
  html.h-nav-solid[data-theme="light"] .top-nav,
  html.h-nav-solid[data-theme="light"] .bottom-nav {
    background: rgba(250, 251, 253, 0.97) !important;
  }
  .h-modal, .h-modal-overlay, .playlist-drawer {
    -webkit-backdrop-filter: blur(8px) !important;
    backdrop-filter: blur(8px) !important;
  }
  /* الإطفاء الشامل أعلاه (specificity صفرية) لا يغلب قواعد طبقة 100 §3 الموسومة
     !important بمحددات أعلى — نطفئها هنا صراحة بنفس المحددات (نحن بعدها بالترتيب) */
  .h-toast, #page-login.active, #page-register.active,
  .dlm-backdrop, .sbil-pay-modal-backdrop, .sbil-receipt-overlay,
  .pcs-sheet-backdrop, .tg-modal-overlay, .fp-gate-backdrop,
  .final-req-overlay {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }

  /* ── §2 بدائل شبه معتمة لما فقد زجاجه (نفس قيم §3 اللمسية في طبقة 100) ── */
  .h-toast {
    background: rgba(13, 17, 28, 0.97) !important;
  }
  :root[data-theme="purple"] .h-toast { background: rgba(18, 12, 38, 0.96) !important; }
  :root[data-theme="light"]  .h-toast { background: rgba(255, 255, 255, 0.97) !important; }
  /* 🪽 [SILK-GLIDE 2026-07-17 T] أزيل سطر alula (اجتثاث ثيم العلا) */

  /* تراكبات الموديولات الستة: سكريم أغمق بدل الزجاج (نفس قيمة §3 اللمسية) */
  .dlm-backdrop, .sbil-pay-modal-backdrop, .sbil-receipt-overlay,
  .pcs-sheet-backdrop, .tg-modal-overlay, .fp-gate-backdrop,
  .final-req-overlay {
    background: rgba(4, 6, 12, 0.78) !important;
  }

  /* ── §3 رد فعل لمسي فوري للبطاقات (transform فقط — لا layout/paint) ── */
  .course-card:active, .h-card:active, .poster-card:active,
  .dash-poster-card:active, .drawer-item:active {
    transform: scale(0.98) !important;
    transition: transform 0.06s ease !important;
  }

  /* ── §4 تكملة §7 (طبقة 100): عزل رندر بطاقات المواد الطويلة ── */
  #playlistsList .h-card { content-visibility: auto; contain-intrinsic-size: auto 200px; }

  /* 🪽 [SILK-GLIDE 2026-07-17] الثيم الثلجي — إصلاحات تناسق الألوان (رقم 13)
     سكريم شبه أسود rgba(4,6,12,.78)!important موحّد لكل الثيمات على الديسكتوب
     في §2 أعلاه — فوق light يبدو ثقيلاً وسخاً مقارنة بلوحته الناعمة. محدد
     :root[data-theme="light"] أعلى خصوصية من محدد §2 فيغلبه رغم أنه بعده.
     ملاحظة: .final-req-overlay مستثناة عمداً — ليست خلفية مودال بل تراكب نص
     فوق بوستر حملة نصه أبيض. للتراجع: احذف هذه الكتلة. */
  :root[data-theme="light"] .dlm-backdrop,
  :root[data-theme="light"] .sbil-pay-modal-backdrop,
  :root[data-theme="light"] .sbil-receipt-overlay,
  :root[data-theme="light"] .pcs-sheet-backdrop,
  :root[data-theme="light"] .tg-modal-overlay,
  :root[data-theme="light"] .fp-gate-backdrop{background:rgba(15,23,42,.45) !important;}
}


/* --------------- source: assets/css/113-guest-pass.css --------------- */
/* 🚀 [TURBO-SILK 2026-09-01 م2] هذه الطبقة صارت تُبنى ضمن bundle-late.css (لا سطر <link>
   مستقل لها في index.html بعد اليوم — الترتيب محفوظ حرفياً داخل LATE_MANIFEST).
   للإزالة: احذف بندها من LATE_MANIFEST في tools/build-css.py + هذا الملف + أعد التوليد.
   أي تعليمة قديمة أدناه بنص «احذف سطر الlink/رابطه» تعني ذلك. */
/* ══════════════════════════════════════════════════════════════════════════
   113-guest-pass.css — طبقة «تصفّح بدون حساب» (Guest Pass)
   طبقة أعلى (113). لون افتراضي بنفسجي #a855f7 عبر var(--primary). متناغمة مع
   السمة (light overrides أدناه). حركات مختصرة (<=250ms) + reduced-motion
   + safe-area + لمس >=44px + 380px.
   لا تكتب علامة إغلاق التعليق داخل نص تعليق (فخّ معروف بالمشروع).

   [GUEST-PASS-UNIFY 2026-07-24] بعد حذف gp-home أُزيلت أنماط الصفحة البديلة
   (gp-home / gp-sec / gp-grid / gp-poster / gp-loading / gp-browse / gp-empty)
   و #gpGateHint (إشعار واحد فقط الآن). صقل تباين البانر/التجريبي/الحملات ليبدو
   جزءاً أصلياً من التصميم فوق الخلفيات الليلية المتحرّكة.

   [GP-DOOR-GOLD 2026-07-24] «ادخل بدون حساب»: تحوّل من رابط نصي إلى زر كامل
   بنفس إطار زر «تسجيل الدخول» (عرض كامل + padding 16px + زوايا 14px) لكن
   بذهبي مميز (عائلة الأصفر المعتمدة بالموقع #fbbf24→#f59e0b) — تمييز واضح
   عن الزر البنفسجي الأساسي. متجاوب جوال/آيباد (عرض كامل داخل بطاقة الدخول).
   ══════════════════════════════════════════════════════════════════════════ */

/* ── بنر الدخول أعلى لوحة الرئيسية للزائر ── */
.gp-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px 16px;
  border-radius: 16px;
  padding: 15px 18px;
  margin: 0 auto 18px;
  max-width: 680px;
  background: linear-gradient(135deg, rgba(168,85,247,0.28), rgba(139,92,246,0.14));
  border: 1px solid rgba(168,85,247,0.48);
  box-shadow:
    0 8px 24px rgba(168,85,247,0.20),
    inset 0 1px 0 rgba(255,255,255,0.07);
  color: var(--text, #f2effb);
  line-height: 1.55;
}
.gp-banner-txt {
  margin: 0;
  flex: 1 1 260px;
  min-width: 0;
  font-size: 0.98rem;
  font-weight: 700;
  color: var(--text, #f2effb);
  text-align: start;
}
.gp-banner-btn {
  flex: 0 0 auto;
  min-height: 46px; padding: 0 22px;
  border: none; border-radius: 13px; cursor: pointer;
  background: var(--primary, #a855f7); color: #fff;
  font-weight: 800; font-size: 0.96rem; font-family: inherit;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  box-shadow: 0 4px 14px rgba(168,85,247,0.42);
  transition: transform .15s ease, filter .15s ease, box-shadow .15s ease;
}
.gp-banner-btn:hover { filter: brightness(1.08); box-shadow: 0 6px 18px rgba(168,85,247,0.52); }
.gp-banner-btn:active { transform: scale(0.97); }

/* ── زر «الشرح التجريبي ▶» الثانوي على بطاقة البوستر (مواد ودورات) ──
   خلفية خفيفة + حدّ + ظل ناعم ⇒ مقروء فوق صور البوسترات الداكنة (لا شفاف صرف). */
.gp-trial-btn {
  min-height: 40px; margin-top: 8px; padding: 0 12px;
  border: 1.5px solid rgba(168,85,247,0.65);
  border-radius: 11px; cursor: pointer;
  background: rgba(168,85,247,0.16);
  color: #fff;
  font-weight: 700; font-size: 0.84rem; font-family: inherit;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  width: 100%;
  backdrop-filter: blur(2px);
  box-shadow: 0 2px 8px rgba(0,0,0,0.28);
  transition: background .15s ease, transform .15s ease, box-shadow .15s ease;
}
.gp-trial-btn:hover { background: rgba(168,85,247,0.28); box-shadow: 0 4px 12px rgba(168,85,247,0.34); }
.gp-trial-btn:active { transform: scale(0.97); }

/* ── زر «ادخل بدون حساب» على صفحة الدخول ──
   [GP-DOOR-GOLD 2026-07-24] نفس إطار زر «تسجيل الدخول» (عرض كامل، padding 16px،
   زوايا 14px، خط عريض) لكن بتعبئة ذهبية متدرّجة ونص داكن — تمييز فوري عن
   البنفسجي. صفحة الدخول مقفولة على الداكن فالتباين مضمون؛ النص الداكن يبقى
   مقروءاً فوق الذهبي بأي سمة. */
.gp-login-explore {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  width: 100%;
  margin-top: 18px; padding: 16px;
  background: linear-gradient(135deg, #fbbf24, #f59e0b);
  border: none;
  color: #241a38;
  font-weight: 800; font-size: 1.05rem; font-family: inherit;
  cursor: pointer;
  border-radius: 14px;
  text-decoration: none;
  box-shadow: 0 4px 16px rgba(245,158,11,0.35);
  transition: transform .15s ease, filter .15s ease, box-shadow .15s ease;
}
.gp-login-explore:hover { filter: brightness(1.06); box-shadow: 0 6px 20px rgba(245,158,11,0.45); }
.gp-login-explore:active { transform: scale(0.98); }
.gp-login-explore i { font-size: 1rem; }

/* ── باب الحرم في landing (يبني على .lp-btn) ── */
.lp-btn-explore {
  --lp-explore: var(--primary, #a855f7);
}
.lp-btn-explore span { display: inline-flex; align-items: center; gap: 8px; }

/* ── بطاقات الحملات (تعيد استخدام .final-req-* / .poster-card) ──
   حلقة بنفسجية خفيفة + ظل ⇒ تتمايز عن بطاقات المواد وتبدو متجانسة مع السمة. */
.gp-campaigns-section { margin: 0 0 16px; }
.gp-campaigns-section .section-title { margin: 4px 2px 10px; font-weight: 800; }
.gp-camp-grid { gap: 12px; }
.gp-camp-card {
  cursor: default;
  box-shadow:
    0 6px 18px rgba(0,0,0,0.28),
    0 0 0 1px rgba(168,85,247,0.32);
}
.gp-camp-card .final-req-overlay { text-shadow: 0 1px 6px rgba(0,0,0,0.55); }

/* ── شاشات صغيرة ── */
@media (max-width: 380px) {
  .gp-banner { padding: 14px 14px; }
  .gp-banner-txt { font-size: 0.92rem; flex-basis: 100%; text-align: center; }
  .gp-banner-btn { width: 100%; }
  .gp-login-explore { font-size: 0.98rem; padding: 14px; }
  .gp-trial-btn { font-size: 0.8rem; }
}

/* ── حركة أقل ── */
@media (prefers-reduced-motion: reduce) {
  .gp-banner-btn, .gp-trial-btn, .gp-login-explore { transition: none; }
}

/* ── الوضع الفاتح (light) — تباين نص داكن + حدود أوضح ──
   🪽 [SILK-GLIDE 2026-07-17 T] أزيلت محدِّدات alula (اجتثاث ثيم العلا) ── */
:root[data-theme="light"] .gp-banner {
  color: #2a2140;
  background: linear-gradient(135deg, rgba(168,85,247,0.16), rgba(139,92,246,0.08));
  border-color: rgba(168,85,247,0.42);
  box-shadow: 0 6px 18px rgba(168,85,247,0.14);
}
:root[data-theme="light"] .gp-banner-txt {
  color: #2a2140;
}
:root[data-theme="light"] .gp-trial-btn {
  background: rgba(168,85,247,0.10);
  color: var(--primary, #a855f7);
  box-shadow: 0 2px 6px rgba(168,85,247,0.14);
}
:root[data-theme="light"] .gp-trial-btn:hover {
  background: rgba(168,85,247,0.18);
}
:root[data-theme="light"] .gp-camp-card {
  box-shadow: 0 4px 14px rgba(0,0,0,0.10), 0 0 0 1px rgba(168,85,247,0.24);
}


/* --------------- source: assets/css/114-uni-atlas.css --------------- */
/* 🚀 [TURBO-SILK 2026-09-01 م2] هذه الطبقة صارت تُبنى ضمن bundle-late.css (لا سطر <link>
   مستقل لها في index.html بعد اليوم — الترتيب محفوظ حرفياً داخل LATE_MANIFEST).
   للإزالة: احذف بندها من LATE_MANIFEST في tools/build-css.py + هذا الملف + أعد التوليد.
   أي تعليمة قديمة أدناه بنص «احذف سطر الlink/رابطه» تعني ذلك. */
/* ════════════════════════════════════════════════════════════════════════
   114-uni-atlas.css — UNI-ATLAS · بلاطات اختيار الجامعة عند الطالب (عقد §7)
   ──────────────────────────────────────────────────────────────────────
   طبقة مستقلة بعد bundle-core (ترتيب المصدر يغلب). ألوان الجامعة تُحقن
   inline: style="--ua-c1:#…;--ua-c2:#…" فتعمل تحت purple/light بلا
   تفريعات. حزام color-mix عبر @supports. للإزالة: احذف هذا الملف + رابطه
   + ua-student.js — تعود شاشة الاختيار القديمة.
   ════════════════════════════════════════════════════════════════════════ */

/* ── الشبكة (≥3 أعمدة حتى 340px) ── */
.ua-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(clamp(92px,24vw,124px),1fr));
  gap:clamp(8px,2vw,14px);
  direction:inherit;
}

/* ── الخلية ── */
.ua-cell{display:flex;flex-direction:column;align-items:stretch;min-width:0;position:relative;}

/* ── البلاطة المربعة ── */
.ua-tile{
  position:relative;
  aspect-ratio:1;
  width:100%;
  display:flex;align-items:center;justify-content:center;
  padding:12%;
  border-radius:var(--hu-r-md,16px);
  background:var(--bg-card);
  border:1px solid var(--border-color);
  cursor:pointer;
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
  -webkit-tap-highlight-color:transparent;
}
/* هدف لمس ≥44px حتى لو صغرت البلاطة */
.ua-tile::before{content:'';position:absolute;inset:-4px;border-radius:inherit;}
/* القاعدة العامة قبل كتلة @supports — ترتيب المصدر يُبقي توهّج color-mix حياً
   (كانت العامة تدهسه — مراجعة عدائية) */
.ua-tile:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.28);}
@supports (background:color-mix(in srgb, red 10%, blue)){
  .ua-tile{
    background:color-mix(in srgb, var(--ua-c1, var(--primary)) 12%, var(--bg-card));
    border-color:color-mix(in srgb, var(--ua-c1, var(--primary)) 30%, var(--border-color));
  }
  .ua-tile:hover{box-shadow:0 8px 24px color-mix(in srgb, var(--ua-c1, var(--primary)) 28%, transparent);}
}
.ua-tile:active{transform:scale(.97);}
.ua-tile:focus-visible{outline:2px solid var(--ua-c1, var(--primary));outline-offset:2px;}

/* ── الشعار والمونوغرام ── */
/* لوح أبيض خلف الشعار (طلب المالك 2026-07-17): الشعارات الرسمية مصمَّمة على
   أبيض — شعارات داكنة (القصيم/طيبة/SEU/بيشة…) كانت تختفي على بلاطات الثيمات
   الداكنة. اللوح يضمن الوضوح تحت purple/light معاً، ولون الجامعة يبقى
   بصبغة البلاطة وإطارها. النِّسَب المئوية (width/padding) كلاهما من عرض
   البلاطة الأم ⇒ تناسب ثابت على كل المقاسات. */
.ua-logo{
  width:76%;height:76%;object-fit:contain;pointer-events:none;
  background:#fff;
  border-radius:20%;
  padding:5.5%;
  box-sizing:border-box;
  box-shadow:0 3px 10px rgba(0,0,0,.25);
}
.ua-mono{
  width:58%;aspect-ratio:1;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;
  background:linear-gradient(135deg, var(--ua-c1, var(--primary)), var(--ua-c2, var(--ua-c1, var(--primary))));
  color:#fff;font-weight:800;font-size:clamp(1rem,4.5vw,1.5rem);
  pointer-events:none;user-select:none;
}

/* ── الاسم (تحت البلاطة — لون النص الأساسي دائماً، ممنوع لون الجامعة) ── */
.ua-name{
  margin-top:6px;
  font-size:clamp(.72rem,2.6vw,.85rem);
  color:var(--text-primary);
  text-align:center;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  word-break:break-word;
}
.ua-code-row{text-align:center;margin-top:3px;}
.ua-code{
  display:inline-block;font-size:.62rem;font-weight:700;letter-spacing:.4px;
  padding:1px 7px;border-radius:999px;
  color:var(--ua-c1, var(--primary));
  background:rgba(127,127,127,.12);
}
@supports (background:color-mix(in srgb, red 10%, blue)){
  .ua-code{background:color-mix(in srgb, var(--ua-c1, var(--primary)) 10%, transparent);}
}

/* ── شارات ── */
.ua-count{
  position:absolute;top:6px;inset-inline-start:6px;
  font-size:.6rem;font-weight:700;padding:2px 7px;border-radius:999px;
  background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border-color);
  display:flex;align-items:center;gap:4px;z-index:1;
}
.ua-you{
  position:absolute;top:6px;inset-inline-end:6px;
  font-size:.6rem;font-weight:800;padding:2px 7px;border-radius:999px;
  background:var(--primary);color:#fff;z-index:1;
  display:inline-flex;align-items:center;gap:4px;
}
.ua-pref .ua-tile{border-width:1.5px;}

/* ── الهيكل (شيمر — نفس روح .skeleton القائم) ── */
.ua-skel{
  aspect-ratio:1;border-radius:var(--hu-r-md,16px);
  background:linear-gradient(100deg, var(--bg-card) 40%, var(--border-color) 50%, var(--bg-card) 60%);
  background-size:200% 100%;
  animation:uaShimmer 1.4s ease infinite;
}
@keyframes uaShimmer{from{background-position:120% 0;}to{background-position:-80% 0;}}

/* ── البحث الفوري ── */
.ua-search{
  position:relative;
  margin:0 0 clamp(10px,2.5vw,16px);
}
.ua-search i{
  position:absolute;inset-inline-start:14px;top:50%;transform:translateY(-50%);
  color:var(--text-muted);font-size:.85rem;pointer-events:none;
}
.ua-search input{
  width:100%;
  padding:12px 42px 12px 14px;
  border-radius:var(--hu-r-md,16px);
  background:var(--bg-input, var(--bg-card));
  border:1px solid var(--border-color);
  color:var(--text-primary);
  font-family:inherit;font-size:.92rem;
  outline:none;
  transition:border-color .18s ease;
}
.ua-search input:focus{border-color:var(--primary);}
.ua-search input::placeholder{color:var(--text-muted);}
.ua-noresult{
  text-align:center;color:var(--text-secondary);
  padding:32px 12px;font-size:.9rem;
  display:flex;align-items:center;justify-content:center;gap:8px;
}

/* ── حالة «قريباً» للجامعة الفارغة (تبيع لا تعتذر) ── */
.ua-coming{
  display:flex;flex-direction:column;align-items:center;gap:10px;
  padding:clamp(24px,6vw,48px) 16px;text-align:center;
}
.ua-coming-logo{
  width:clamp(96px,28vw,140px);aspect-ratio:1;
  display:flex;align-items:center;justify-content:center;
  border-radius:var(--hu-r-lg,20px);
  background:var(--bg-card);
  border:1px solid var(--border-color);
  /* padding ثابت لا نسبة — النسبة تُحسب من عرض الحاوية الأم فترفع أرضية border-box */
  padding:clamp(14px,4vw,20px);
}
@supports (background:color-mix(in srgb, red 10%, blue)){
  .ua-coming-logo{
    background:color-mix(in srgb, var(--ua-c1, var(--primary)) 12%, var(--bg-card));
    border-color:color-mix(in srgb, var(--ua-c1, var(--primary)) 30%, var(--border-color));
  }
}
.ua-coming-logo .ua-logo{width:100%;height:100%;}
.ua-coming-logo .ua-mono{width:82%;font-size:clamp(1.2rem,5vw,1.8rem);}
.ua-coming-title{margin:4px 0 0;font-size:clamp(1rem,3.4vw,1.25rem);color:var(--text-primary);font-weight:800;}
.ua-coming-sub{margin:0;font-size:clamp(.8rem,2.6vw,.9rem);color:var(--text-secondary);}
.ua-wish-cta{
  margin-top:8px;
  display:inline-flex;align-items:center;gap:8px;
  padding:12px 22px;border-radius:999px;
  background:var(--gradient, var(--primary));
  color:#fff;border:none;cursor:pointer;
  font-family:inherit;font-size:.92rem;font-weight:700;
  box-shadow:var(--glow, none);
  transition:transform .18s ease;
  min-height:44px;
}
.ua-wish-cta:active{transform:scale(.97);}
.ua-wish-cta.ua-wish-done{background:var(--success,#51cf66);color:#0a2010;cursor:default;box-shadow:none;}

/* ── ورقة «الأمنية» ── */
.ua-wish-bg{
  /* 🧵 [OMNI-FIT 2026-08-22 §6-د] نطاق الشيتات بالسلّم (كان 1200) */
  position:fixed;inset:0;z-index:var(--z-sheet,12000);
  background:rgba(5,8,15,.66);
  display:flex;align-items:flex-end;justify-content:center;
  opacity:0;pointer-events:none;
  transition:opacity .2s ease;
}
.ua-wish-bg.show{opacity:1;pointer-events:auto;}
.ua-wish-box{
  width:min(480px,100%);
  background:var(--bg-card);
  border:1px solid var(--border-color);
  border-radius:var(--hu-r-lg,20px) var(--hu-r-lg,20px) 0 0;
  padding:18px 16px calc(18px + env(safe-area-inset-bottom, 0px));
  transform:translateY(14px);
  transition:transform .2s ease;
  /* 🧵 [OMNI-FIT 2026-08-22 §6-ز] سقف vh/dvh + تمرير محصور هنا أيضاً (123:459 تغطيه حين تُحمَّل؛ هذا الضمان للطبقة وحدها) */
  max-height:calc(100vh - 24px);
  max-height:calc(100dvh - 24px);
  overflow:auto;overscroll-behavior:contain;
}
.ua-wish-bg.show .ua-wish-box{transform:translateY(0);}
.ua-wish-title{margin:0 0 4px;font-size:1rem;color:var(--text-primary);font-weight:800;display:flex;align-items:center;gap:8px;}
.ua-wish-title i{color:var(--primary);}
.ua-wish-sub{margin:0 0 10px;font-size:.82rem;color:var(--text-secondary);}
#uaWishNote{
  width:100%;resize:vertical;min-height:76px;
  padding:12px;border-radius:var(--hu-r-md,16px);
  background:var(--bg-input, var(--bg-page));
  border:1px solid var(--border-color);
  color:var(--text-primary);font-family:inherit;font-size:.92rem;
  outline:none;
}
#uaWishNote:focus{border-color:var(--primary);}
.ua-wish-actions{display:flex;gap:8px;margin-top:12px;}
.ua-wish-actions button{
  flex:1;min-height:44px;border-radius:var(--hu-r-md,16px);
  font-family:inherit;font-size:.92rem;font-weight:700;cursor:pointer;
}
.ua-wish-cancel{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary);}
.ua-wish-send{background:var(--gradient, var(--primary));border:none;color:#fff;}
.ua-wish-send:disabled{opacity:.6;cursor:wait;}

/* ══ 🌟 [OPEN-WISH 2026-07-28] حقل تواصل الضيف + نكزة التحويل ══════════════
   محدّدات مفردة عمداً (فخ WIDE-GATE: قوائم المحدّدات غير المتسامحة بiOS ≤16.3
   تُسقِط القائمة كاملةً لو حوت محدّداً غير مدعوم). للإزالة: احذف هذا المقطع. */
.ua-wish-contact{margin-top:8px;}
#uaWishContact{
  width:100%;min-height:44px;
  padding:10px 12px;border-radius:var(--hu-r-md,16px);
  background:var(--bg-input, var(--bg-page));
  border:1px solid var(--border-color);
  color:var(--text-primary);font-family:inherit;font-size:.88rem;
  outline:none;
  /* المحتوى لاتيني (رقم/معرّف) لكن الحقل داخل واجهة RTL ⇒ dir=ltr + محاذاة يمين
     كي يبقى الحقل متسقاً بصرياً مع بقية الورقة ولا يقفز المؤشّر. */
  text-align:right;
}
#uaWishContact:focus{border-color:var(--primary);}
#uaWishContact::placeholder{
  /* الـplaceholder عربي داخل حقل ltr — نعيده لاتجاه النص الطبيعي كي يُقرأ سليماً */
  direction:rtl;
  font-size:.78rem;
  opacity:.75;
}
.ua-wish-nudge{
  margin:10px 0 0;padding:10px 12px;
  border-radius:var(--hu-r-md,16px);
  background:var(--bg-input, var(--bg-page));
  border:1px dashed var(--primary);
  color:var(--text-secondary);font-size:.82rem;line-height:1.7;
}
.ua-wish-nudge-btn{
  margin-inline-start:6px;padding:6px 12px;min-height:32px;
  border:none;border-radius:999px;cursor:pointer;
  background:var(--gradient, var(--primary));color:#fff;
  font-family:inherit;font-size:.78rem;font-weight:700;
}
.ua-wish-nudge-btn:active{transform:scale(.97);}

/* ── الثيم الفاتح: حدود أوضح كي لا تبهت (ألوان الجامعات على أبيض) ── */
@supports (background:color-mix(in srgb, red 10%, blue)){
  :root[data-theme="light"] .ua-tile{
    background:color-mix(in srgb, var(--ua-c1, var(--primary)) 9%, var(--bg-card));
    border-color:color-mix(in srgb, var(--ua-c1, var(--primary)) 42%, var(--border-color));
  }
  :root[data-theme="light"] .ua-coming-logo{
    border-color:color-mix(in srgb, var(--ua-c1, var(--primary)) 42%, var(--border-color));
  }
}
/* لوح الشعار على الفاتح: ظل أخف + خيط حدّ كي يُقرأ اللوح كسطح لا يذوب */
:root[data-theme="light"] .ua-logo{
  box-shadow:0 2px 8px rgba(15,23,42,.10), inset 0 0 0 1px rgba(15,23,42,.07);
}
:root[data-theme="light"] .ua-wish-bg{background:rgba(15,23,42,.35);}

/* ── استجابة (عرف ≤600/480/390/360/340 — صفر تمرير أفقي) ── */
@media (max-width:480px){
  .ua-grid{grid-template-columns:repeat(auto-fill,minmax(clamp(88px,26vw,110px),1fr));}
}
@media (max-width:360px){
  .ua-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;}
}

/* ── تقليل الحركة ── */
@media (prefers-reduced-motion:reduce){
  .ua-tile{transition:none;}
  .ua-tile:hover{transform:none;}
  .ua-tile:active{transform:none;}
  .ua-skel{animation:none;}
  .ua-wish-bg,.ua-wish-box{transition:none;}
}


/* --------------- source: assets/css/116-atlas-services.css --------------- */
/* 🚀 [TURBO-SILK 2026-09-01 م2] هذه الطبقة صارت تُبنى ضمن bundle-late.css (لا سطر <link>
   مستقل لها في index.html بعد اليوم — الترتيب محفوظ حرفياً داخل LATE_MANIFEST).
   للإزالة: احذف بندها من LATE_MANIFEST في tools/build-css.py + هذا الملف + أعد التوليد.
   أي تعليمة قديمة أدناه بنص «احذف سطر الlink/رابطه» تعني ذلك. */
/* ═══════════════════════════════════════════════════════════════════════════
   🧭 116-atlas-services.css — ATLAS-PULSE 2026-07-19
   أطلس الخدمات الجامعية داخل overlay الخدمات (#exsSvcOv):
   منتقي الـ34 (يعيد استخدام هوية ua-* من طبقة 114) + شاشة خدمات الجامعة
   + شاشة نسب الفروز.
   ─────────────────────────────────────────────────────────────────────────
   • طبقة مستقلة بعد bundle-lazy و114/115 (ترتيب المصدر يغلب) — لا مرايا حزم.
   • ألوان الجامعة تُحقن inline‏ --ua-c1/--ua-c2 (نفس عقد 114) فتعمل تحت كل
     الثيمات بلا تفريعات.
   • RTL بالخصائص المنطقية (inset-inline-*) + direction موروث — لا قواعد rtl صلبة.
   • قياسات clamp() لا padding بنسب مئوية (فخ UNI-ATLAS الموثق).
   • للإزالة: احذف الملف + رابطه في index.html + كتلة الأطلس في
     exam-system-student.js (علامة [ATLAS-PULSE]).
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── المنتقي: شبكة الأطلس داخل الـoverlay ── */
#exsSvcOv .ap-grid {
  margin-block-start: clamp(10px, 2.5vw, 18px);
  padding-block-end: clamp(12px, 3vw, 22px);
}
#exsSvcOv .ap-cell { min-width: 0; }

/* حقل البحث (نمط ua-search لكن داخل الـoverlay) */
#exsSvcOv .ap-search {
  position: relative;
  margin-block-start: clamp(8px, 2vw, 14px);
}
#exsSvcOv .ap-search i {
  position: absolute;
  inset-inline-start: 14px;
  inset-block-start: 50%;
  transform: translateY(-50%);
  color: var(--text-muted, #8b93a7);
  font-size: 0.85rem;
  pointer-events: none;
}
#exsSvcOv .ap-search input {
  width: 100%;
  padding-block: clamp(9px, 2vw, 12px);
  padding-inline-start: 40px;
  padding-inline-end: 14px;
  border-radius: var(--hu-r-md, 14px);
  border: 1px solid var(--border-color, rgba(139, 147, 167, 0.25));
  background: var(--bg-input, var(--bg-card, rgba(255, 255, 255, 0.04)));
  color: var(--text-primary, #eef1f8);
  font-family: inherit;
  font-size: 0.92rem;
  outline: none;
  transition: border-color 0.18s ease;
}
#exsSvcOv .ap-search input:focus {
  border-color: var(--primary, #a855f7);
}
#exsSvcOv .ap-noresult,
#exsSvcOv .ap-loading,
#exsSvcOv .ap-empty {
  grid-column: 1 / -1;
  text-align: center;
  color: var(--text-secondary, #aab2c5);
  padding-block: clamp(18px, 5vw, 34px);
  font-size: 0.95rem;
}
#exsSvcOv .ap-empty {
  background: var(--bg-card, rgba(255, 255, 255, 0.04));
  border: 1px dashed var(--border-color, rgba(139, 147, 167, 0.3));
  border-radius: var(--hu-r-lg, 18px);
  margin-block-start: clamp(10px, 3vw, 18px);
}

/* ── شاشة الجامعة: بطل بهوية الجامعة + شعار ── */
#exsSvcOv .ap-uni-hero { position: relative; }
#exsSvcOv .ap-hero-logo {
  display: inline-flex;
  width: clamp(56px, 14vw, 76px);
  height: clamp(56px, 14vw, 76px);
  margin-block-end: 8px;
  vertical-align: middle;
}
#exsSvcOv .ap-hero-logo .ua-logo {
  width: 100%;
  height: 100%;
  background: #fff;               /* لوح أبيض إجباري — قرار مالك UNI-ATLAS */
  border-radius: 20%;
  padding: clamp(3px, 1vw, 5px);
  object-fit: contain;
}
#exsSvcOv .ap-hero-logo .ua-mono {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 20%;
  font-weight: 800;
  font-size: clamp(1rem, 4vw, 1.35rem);
  color: #fff;
  background: linear-gradient(135deg, var(--ua-c1, var(--primary, #a855f7)), var(--ua-c2, var(--primary, #a855f7)));
}
/* خط هوية سفلي رفيع بلوني الجامعة */
#exsSvcOv .ap-uni-hero::after {
  content: '';
  display: block;
  height: 3px;
  border-radius: 2px;
  margin-block-start: 10px;
  background: linear-gradient(90deg, var(--ua-c1, var(--primary, #a855f7)), var(--ua-c2, transparent));
  opacity: 0.75;
}

/* ── نسب الفروز ── */
#exsSvcOv .apr-year { margin-block-start: clamp(14px, 3.5vw, 24px); }
#exsSvcOv .apr-year-chip {
  display: inline-block;
  font-weight: 800;
  font-size: 0.9rem;
  color: #fff;
  background: linear-gradient(135deg, var(--ua-c1, var(--primary, #a855f7)), var(--ua-c2, var(--primary, #a855f7)));
  border-radius: 999px;
  padding-block: 4px;
  padding-inline: 14px;
  margin-block-end: 10px;
}
#exsSvcOv .apr-college {
  background: var(--bg-card, rgba(255, 255, 255, 0.04));
  border: 1px solid var(--border-color, rgba(139, 147, 167, 0.18));
  border-radius: var(--hu-r-lg, 16px);
  padding: clamp(10px, 2.6vw, 16px);
  margin-block-end: clamp(10px, 2.5vw, 14px);
}
#exsSvcOv .apr-college-name {
  font-weight: 800;
  color: var(--text-primary, #eef1f8);
  font-size: 0.98rem;
  margin-block-end: clamp(8px, 2vw, 12px);
}
#exsSvcOv .apr-row {
  padding-block: clamp(7px, 1.8vw, 10px);
  border-block-start: 1px dashed var(--border-color, rgba(139, 147, 167, 0.15));
}
#exsSvcOv .apr-row:first-of-type { border-block-start: 0; }
#exsSvcOv .apr-row-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
  margin-block-end: 5px;
}
#exsSvcOv .apr-major {
  font-weight: 700;
  color: var(--text-primary, #eef1f8);
  font-size: 0.92rem;
}
#exsSvcOv .apr-meta {
  color: var(--text-muted, #8b93a7);
  font-size: 0.78rem;
}
#exsSvcOv .apr-val {
  margin-inline-start: auto;
  font-weight: 800;
  font-size: 0.95rem;
  color: var(--ua-c1, var(--primary, #a855f7));
}
#exsSvcOv .apr-bar {
  display: block;
  width: 100%;
  height: clamp(8px, 2vw, 10px);
}
#exsSvcOv .apr-bar-bg { fill: var(--bg-input, rgba(139, 147, 167, 0.18)); }
#exsSvcOv .apr-bar-fill { fill: var(--ua-c1, var(--primary, #a855f7)); }
#exsSvcOv .apr-bar-prev .apr-bar-fill { fill: var(--ua-c2, var(--text-muted, #8b93a7)); opacity: 0.55; }
#exsSvcOv .apr-prev {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-block-start: 4px;
}
#exsSvcOv .apr-prev .apr-bar { flex: 1 1 auto; height: 6px; }
#exsSvcOv .apr-prev-y,
#exsSvcOv .apr-prev-v {
  flex: 0 0 auto;
  font-size: 0.72rem;
  color: var(--text-muted, #8b93a7);
  font-weight: 700;
}
#exsSvcOv .apr-note {
  margin-block-start: 4px;
  font-size: 0.78rem;
  color: var(--text-secondary, #aab2c5);
}

/* ── 🧭 M6: جرس «أشعرني عند التوفر» على بطاقات قريباً ── */
#exsSvcOv .ap-notify {
  position: absolute;
  inset-inline-end: 8px;
  inset-block-start: 8px;
  width: 30px;
  height: 30px;
  /* 🧵 [OMNI-FIT 2026-08-22 §6-ل] hit box 44×44 بلا تكبير مرئي (30 + 7×2) — انظر ::before أدناه */
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--bg-input, rgba(139, 147, 167, 0.14));
  color: var(--text-secondary, #aab2c5);
  font-size: 0.8rem;
  cursor: pointer;
  transition: color 0.15s ease, background 0.15s ease;
  z-index: 2;
}
#exsSvcOv .ap-notify::before { content: ""; position: absolute; inset: -7px; }
#exsSvcOv .ap-notify:hover,
#exsSvcOv .ap-notify:focus-visible {
  color: var(--primary, #a855f7);
  background: var(--bg-card, rgba(168, 85, 247, 0.12));
  outline: none;
}
#exsSvcOv .svc-card { position: relative; }

/* ── الثيم الفاتح ── */
:root[data-theme="light"] #exsSvcOv .ap-search input {
  background: var(--bg-input, #fff);
  color: var(--text-primary, #1c2333);
}
:root[data-theme="light"] #exsSvcOv .apr-college {
  background: var(--bg-card, #fff);
}

/* ── استجابة ── */
@media (max-width: 480px) {
  #exsSvcOv .apr-row-head { gap: 6px; }
  #exsSvcOv .apr-meta { font-size: 0.72rem; }
}
@media (prefers-reduced-motion: reduce) {
  #exsSvcOv .ap-search input { transition: none; }
}

/* ════════════════════════════════════════════════════════════════════════════
   🤝 [SORT-CROWD 2026-07-19] جدول نسب الفروز التفاعلي (apc-*)
   قرار المالك: تصميم واحد ثابت مهما اختلف الثيم ⇒ ألوان صلبة بلا var() إطلاقاً
   (كحلي عميق + ذهبي للهوية، أزرق #3b82f6 للطلاب، وردي #ec4899 للطالبات).
   للتراجع: احذف هذه الكتلة كاملة حتى نهاية الملف.
   ════════════════════════════════════════════════════════════════════════════ */
#exsSvcOv .apc-share {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-block-start: 12px;
  padding: 8px 16px;
  border: 1px solid rgba(255, 255, 255, 0.35);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
  font-family: inherit;
  font-size: 0.82rem;
  font-weight: 800;
  cursor: pointer;
  transition: background 0.15s ease, transform 0.15s ease;
}
#exsSvcOv .apc-share:hover,
#exsSvcOv .apc-share:focus-visible {
  background: rgba(255, 255, 255, 0.26);
  transform: translateY(-1px);
  outline: none;
}
#exsSvcOv .apc-wrap {
  background: #0d1730;
  border: 1px solid rgba(176, 136, 80, 0.45);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 14px 40px rgba(2, 6, 18, 0.5);
}
#exsSvcOv .apc-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  padding: 12px 16px;
  background: linear-gradient(135deg, #101d3f, #0d1730);
  border-block-end: 1px solid rgba(255, 255, 255, 0.08);
}
#exsSvcOv .apc-lg {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border-radius: 999px;
  font-size: 0.76rem;
  font-weight: 800;
}
#exsSvcOv .apc-lg-m { background: rgba(59, 130, 246, 0.18); color: #7eb3ff; border: 1px solid rgba(59, 130, 246, 0.45); }
#exsSvcOv .apc-lg-f { background: rgba(236, 72, 153, 0.16); color: #ff9dcf; border: 1px solid rgba(236, 72, 153, 0.45); }
#exsSvcOv .apc-hint {
  flex: 1 1 100%;
  font-size: 0.74rem;
  color: #9aa5c0;
}
#exsSvcOv .apc-hint .fa-lock { color: #f5c56b; margin-inline-end: 4px; }
/* 🎭 [GRAND-STAGE E3 2026-08-05] التلميح كان #9aa5c0 رمادياً باهتاً على الخلفية
   الفاتحة (تباين <3) — override مفرد؛ جداول الفروز .apc-* الداكنة لا تُمس
   (استثناء تعاقدي بقرار مالك). */
:root[data-theme="light"] #exsSvcOv .apc-hint { color: #475569; }
#exsSvcOv .apc-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
#exsSvcOv .apc-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.86rem;
  color: #eef2fb;
}
#exsSvcOv .apc-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #101d3f;
  padding: 10px 12px;
  font-size: 0.78rem;
  font-weight: 800;
  color: #cfd8ee;
  border-block-end: 2px solid rgba(176, 136, 80, 0.5);
  white-space: nowrap;
}
#exsSvcOv .apc-th-major { text-align: start; }
#exsSvcOv .apc-th-m, #exsSvcOv .apc-th-f { width: 108px; text-align: center; }
#exsSvcOv .apc-th-m { color: #7eb3ff; }
#exsSvcOv .apc-th-f { color: #ff9dcf; }
#exsSvcOv .apc-sec td {
  padding: 10px 14px 8px;
  font-size: 0.78rem;
  font-weight: 800;
  color: #f5c56b;
  background: rgba(176, 136, 80, 0.10);
  border-block: 1px solid rgba(176, 136, 80, 0.22);
}
#exsSvcOv .apc-row td { border-block-end: 1px solid rgba(255, 255, 255, 0.055); }
#exsSvcOv .apc-row:nth-child(even) td { background: rgba(255, 255, 255, 0.018); }
#exsSvcOv .apc-major {
  padding: 10px 14px;
  line-height: 1.45;
  font-weight: 600;
}
#exsSvcOv .apc-cell {
  padding: 6px 8px;
  text-align: center;
  vertical-align: middle;
  white-space: nowrap;
}
#exsSvcOv .apc-cell.apc-m { background: rgba(59, 130, 246, 0.07); }
#exsSvcOv .apc-cell.apc-f { background: rgba(236, 72, 153, 0.06); }
#exsSvcOv .apc-na { color: #55607c; font-weight: 700; }
#exsSvcOv .apc-locked .apc-val {
  font-weight: 800;
  font-size: 0.94rem;
}
#exsSvcOv .apc-m .apc-val { color: #8fc0ff; }
#exsSvcOv .apc-f .apc-val { color: #ffadd6; }
#exsSvcOv .apc-locked .fa-lock {
  font-size: 0.62rem;
  color: #f5c56b;
  margin-inline-start: 6px;
  opacity: 0.85;
}
#exsSvcOv .apc-add {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 12px;
  border-radius: 999px;
  border: 1px dashed rgba(255, 255, 255, 0.35);
  background: transparent;
  color: #b9c4dd;
  font-family: inherit;
  font-size: 0.74rem;
  font-weight: 800;
  cursor: pointer;
  transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}
#exsSvcOv .apc-m .apc-add:hover, #exsSvcOv .apc-m .apc-add:focus-visible
  { color: #8fc0ff; border-color: #3b82f6; background: rgba(59, 130, 246, 0.12); outline: none; }
#exsSvcOv .apc-f .apc-add:hover, #exsSvcOv .apc-f .apc-add:focus-visible
  { color: #ffadd6; border-color: #ec4899; background: rgba(236, 72, 153, 0.12); outline: none; }

/* ── حوار إدخال النسبة (ثابت التصميم أيضاً) ── */
#exsSvcOv .apc-dlg {
  position: fixed;
  inset: 0;
  z-index: 60;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: rgba(3, 7, 18, 0.72);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
}
#exsSvcOv .apc-dlg-card {
  width: min(360px, 92vw);
  background: #0f1a38;
  border: 1px solid rgba(176, 136, 80, 0.5);
  border-radius: 18px;
  padding: 18px;
  text-align: center;
  color: #eef2fb;
  box-shadow: 0 18px 50px rgba(2, 6, 18, 0.65);
}
#exsSvcOv .apc-dlg-head {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 5px 14px;
  border-radius: 999px;
  font-size: 0.8rem;
  font-weight: 800;
  margin-block-end: 10px;
}
#exsSvcOv .apc-dlg-m .apc-dlg-head { background: rgba(59, 130, 246, 0.18); color: #7eb3ff; border: 1px solid rgba(59, 130, 246, 0.45); }
#exsSvcOv .apc-dlg-f .apc-dlg-head { background: rgba(236, 72, 153, 0.16); color: #ff9dcf; border: 1px solid rgba(236, 72, 153, 0.45); }
#exsSvcOv .apc-dlg-major { font-weight: 800; font-size: 1rem; line-height: 1.5; }
#exsSvcOv .apc-dlg-sec { font-size: 0.74rem; color: #9aa5c0; margin-block: 4px 12px; }
#exsSvcOv .apc-dlg-in {
  width: 130px;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, 0.22);
  background: rgba(255, 255, 255, 0.07);
  color: #fff;
  font-family: inherit;
  font-size: 1.15rem;
  font-weight: 800;
  text-align: center;
}
#exsSvcOv .apc-dlg-m .apc-dlg-in:focus { border-color: #3b82f6; outline: none; }
#exsSvcOv .apc-dlg-f .apc-dlg-in:focus { border-color: #ec4899; outline: none; }
#exsSvcOv .apc-dlg-warn {
  font-size: 0.72rem;
  color: #f5c56b;
  margin-block: 10px 14px;
}
#exsSvcOv .apc-dlg-btns { display: flex; gap: 10px; justify-content: center; }
#exsSvcOv .apc-dlg-save {
  padding: 9px 22px;
  border: none;
  border-radius: 12px;
  font-family: inherit;
  font-weight: 800;
  font-size: 0.88rem;
  color: #fff;
  cursor: pointer;
}
#exsSvcOv .apc-dlg-m .apc-dlg-save { background: linear-gradient(135deg, #2563eb, #3b82f6); }
#exsSvcOv .apc-dlg-f .apc-dlg-save { background: linear-gradient(135deg, #db2777, #ec4899); }
#exsSvcOv .apc-dlg-save:disabled { opacity: 0.6; cursor: default; }
#exsSvcOv .apc-dlg-cancel {
  padding: 9px 18px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  border-radius: 12px;
  background: transparent;
  color: #b9c4dd;
  font-family: inherit;
  font-weight: 700;
  font-size: 0.85rem;
  cursor: pointer;
}

/* ── استجابة: جوال/آيباد — نفس التصميم بقياسات أرحب لمساً ── */
@media (max-width: 560px) {
  #exsSvcOv .apc-th-m, #exsSvcOv .apc-th-f { width: 84px; }
  #exsSvcOv .apc-table { font-size: 0.8rem; }
  #exsSvcOv .apc-major { padding: 9px 10px; }
  #exsSvcOv .apc-add { padding: 5px 9px; font-size: 0.7rem; }
  #exsSvcOv .apc-locked .apc-val { font-size: 0.88rem; }
}


/* --------------- source: assets/css/118-gold-path.css --------------- */
/* 🚀 [TURBO-SILK 2026-09-01 م2] هذه الطبقة صارت تُبنى ضمن bundle-late.css (لا سطر <link>
   مستقل لها في index.html بعد اليوم — الترتيب محفوظ حرفياً داخل LATE_MANIFEST).
   للإزالة: احذف بندها من LATE_MANIFEST في tools/build-css.py + هذا الملف + أعد التوليد.
   أي تعليمة قديمة أدناه بنص «احذف سطر الlink/رابطه» تعني ذلك. */
/* ════════════════════════════════════════════════════════════════════════
   🏆 [GOLD-PATH PRIME 2026-08-02] الطبقة 118 — الستورفرونت الذهبي
   ────────────────────────────────────────────────────────────────────────
   مكوّنات: إخفاء «موادي» الشرطي (gld-no-home) · ولادة التبويب · الشريط
   العلوي (امتداد .gp-banner من الطبقة 113 — لا CSS من الصفر) · شريط الصدى ·
   بطاقة جامعتك · شارة/شيت الكتب · توست الاستحقاق · بروز بطاقة الجامعة الأم.
   مستقلة بعد الباندل (ترتيب المصدر يغلب) — لا لمس bundle-core (فخ الكتل
   اليدوية بذيله). للإزالة: احذف هذا الملف + سطر <link> + موديولات gld-.
   ════════════════════════════════════════════════════════════════════════ */

/* ── إخفاء «موادي» بلا حذف DOM (قانون navMap بنسختيه) ─────────────────── */
#bottomNav.gld-no-home .nav-item:first-child { display: none; }

/* ولادة التبويب عند أول استحقاق (M2.5) */
@keyframes gldBirth {
  0%   { transform: scale(.4); opacity: 0; }
  60%  { transform: scale(1.15); opacity: 1; }
  100% { transform: scale(1); opacity: 1; }
}
#bottomNav .nav-item.gld-birth { animation: gldBirth .9s cubic-bezier(.34,1.56,.64,1) both; }

/* ── الشريط العلوي — امتداد .gp-banner (الطبقة 113 تحمل الأساس) ────────── */
.gld-banner { position: relative; margin: 0 auto 14px; }
.gld-banner .gld-banner-btns { display: flex; gap: 8px; flex-wrap: wrap; }
.gld-banner .gld-btn-ghost { background: transparent; border: 1px solid rgba(168,85,247,.45); }
.gld-banner-fold {
  position: absolute; top: 6px; inset-inline-start: 8px;
  /* 🧵 [OMNI-FIT 2026-08-22 §6-ل] هدف لمس ≥44 (كان 26×26) — 32 مرئية + ::before يوسّع الضربة 6px من كل جهة */
  width: 32px; height: 32px; border: none; border-radius: 8px;
  background: rgba(255,255,255,.08); color: inherit; cursor: pointer;
  display: flex; align-items: center; justify-content: center; font-size: .7rem;
}
.gld-banner-fold::before { content: ""; position: absolute; inset: -6px; }
/* 🧵 [OMNI-FIT 2026-08-22 §6-ل] الطيّ (8→40px بالبداية) لا يغطي أول حرف بالحالة الممتدة (113 تعطي 18px/14px فقط؛ المصغّرة تعوّض بـ::after margin 40px) */
.gld-banner:not(.gld-banner-min) { padding-inline-start: 44px; }
.gld-banner-fold i { transition: transform .25s ease; }
.gld-banner.gld-banner-min { padding-block: 6px; min-height: 44px; } /* 🧵 [OMNI-FIT 2026-08-22 §6-ل] min-height كي لا يفيض زر الطيّ 32px (top 6) من الشريط المصغّر */
.gld-banner.gld-banner-min .gp-banner-txt,
.gld-banner.gld-banner-min .gld-banner-btns { display: none; }
/* 🎭 [STAGE-DOOR 2026-08-05 R-11] نص الطيّ من السمة لا من CSS: كان نصّ ضيفٍ
   صلباً («وصّل لمادتك…») يُعرض حتى لمسجّل داخل فعلاً. الكاتب gld-storefront
   (_bannerHtml) بثلاث صيغ حسب الدور. غياب السمة ⇒ نص فارغ لا خطأ. */
.gld-banner.gld-banner-min::after { content: attr(data-min-txt); font-size: .8rem; opacity: .85; margin-inline-start: 40px; }
.gld-banner.gld-banner-min .gld-banner-fold i { transform: rotate(180deg); }

/* 🎭 [STAGE-DOOR 2026-08-05 R-05] حجز مساحة كتل الاستحواذ حتى يستقر حكم
   الاستحقاق: نفس الارتفاع بالضبط بلا وميض ولا إزاحة (visibility لا display).
   ⛔ لا تستبدلها بـopacity — العناصر تبقى قابلة للتركيز واللمس عندها. */
.gld-acq-pending { visibility: hidden; }

/* ── رقاقة «كمّل من حيث وقفت ↪» (M4.6 — اختيارية، لا قفز تلقائي) ───────── */
.gld-resume-chip {
  display: block; margin: 0 auto 12px; padding: 7px 16px;
  border-radius: 999px; border: 1px solid rgba(168,85,247,.4);
  background: rgba(168,85,247,.12); color: inherit; cursor: pointer; font-size: .8rem;
}
:root[data-theme="light"] .gld-resume-chip { background: rgba(124,58,237,.08); color: #2a2140; }

/* ── شريط «طلباتك» — صدى محلي (0.6) ───────────────────────────────────── */
.gld-echo {
  max-width: 680px; margin: 0 auto 14px; padding: 12px 14px;
  border-radius: 14px; border: 1px solid var(--border-color, rgba(168,85,247,.25));
  background: var(--bg-card, rgba(30,20,50,.5));
}
.gld-echo-head { font-weight: 700; font-size: .9rem; margin-bottom: 8px; }
.gld-echo-head i { color: #a855f7; margin-inline-end: 6px; }
.gld-echo-row { display: flex; align-items: center; gap: 8px; padding: 6px 2px; font-size: .85rem; }
.gld-echo-row i { color: #f59e0b; font-size: .8rem; }
.gld-echo-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* 🧵 [OMNI-FIT 2026-08-22 §6-ك] min-width:0 وإلا flex:1 يبقي min-width:auto والاسم الطويل يدفع الصف */
.gld-echo-state {
  font-size: .72rem; padding: 3px 10px; border-radius: 999px;
  background: rgba(245,158,11,.14); color: #f59e0b; border: 1px solid rgba(245,158,11,.3);
}
.gld-echo-cta {
  margin-top: 8px; width: 100%; padding: 9px; border: none; border-radius: 10px;
  background: linear-gradient(135deg, #a855f7, #7c3aed); color: #fff;
  font-weight: 700; font-size: .85rem; cursor: pointer;
}

/* ── بطاقة جامعتك (0.6 — بديل الفتح التلقائي) ──────────────────────────── */
/* 🚪 [ONE-DOOR V1 2026-08-02 M1] الغلاف صار div role="group" بصفّين وظيفيين:
   الجسم .gld-uni-main (ادخل مباشرة ↩) + الزر الثانوي .gld-uni-change (تغيير
   الجامعة) — زران حقيقيان، لا زر داخل زر. نفس اللغة الزجاجية RTL. */
/* 🎭 [STAGE-DOOR 2026-08-05 R-02] ⛔ لون العلامة الجامعية لا يُستعمل كلونِ نصٍّ
   أبداً، ولا كحدٍّ خام: حائل brand_primary=#00486c (فيروزي داكن) كان يُسند
   color للنص والأيقونة وborder للبطاقة فوق أرضية داكنة ⇒ تباين ≈1.6:1 بينما
   WCAG يطلب 4.5:1. العقد الملزم = عقد الطبقة 114 حرفياً: اللون للخلفيات
   والحدود عبر color-mix مع var(--bg-card)/var(--border-color) فقط، والنص
   يرث لون الثيم. (المزج مع bg-card لا مع transparent: الخلط مع الشفاف يُبقي
   اللون الخام مرئياً كصبغة داكنة صلبة على الثيم الفاتح.) */
.gld-uni-card {
  display: flex; align-items: center; gap: 12px; width: 100%; max-width: 680px;
  margin: 0 auto 16px; padding: 12px 16px; border-radius: 14px;
  flex-wrap: wrap; cursor: default;
  /* fallback أولاً (iOS قديم بلا color-mix) — متغيرات ثيم صرفة */
  border: 1px solid var(--border-color, rgba(168,85,247,.35));
  background: var(--bg-card, rgba(30,20,50,.5));
  color: inherit; text-align: start;
}
@supports (background: color-mix(in srgb, red 10%, blue)) {
  .gld-uni-card {
    background: linear-gradient(135deg,
      color-mix(in srgb, var(--ua-c1, var(--primary)) 14%, var(--bg-card)),
      color-mix(in srgb, var(--ua-c2, var(--ua-c1, var(--primary))) 6%, var(--bg-card)));
    border-color: color-mix(in srgb, var(--ua-c1, var(--primary)) 30%, var(--border-color));
  }
}
.gld-uni-main {
  display: flex; align-items: center; gap: 12px; flex: 1 1 100%;
  background: none; border: none; padding: 0; margin: 0; cursor: pointer;
  color: inherit; text-align: start; font-family: inherit; font-size: inherit;
  -webkit-tap-highlight-color: transparent;
}
.gld-uni-logo { width: 42px; height: 42px; object-fit: contain; border-radius: 10px; background: rgba(255,255,255,.9); padding: 3px; }
.gld-uni-txt { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.gld-uni-txt small { opacity: .75; font-size: .75rem; }
/* السهم كان يرث لون العلامة نصّياً (نفس عيب R-02) — نصّ الثيم الثانوي */
.gld-uni-card > i,
.gld-uni-main > i { color: var(--text-secondary, #c4b3da); }
/* 🎭 [STAGE-DOOR 2026-08-05 R-15] «تغيير الجامعة»: الحدّ والأرضية من متغيرات
   الثيم **حصراً** لا من لون العلامة. كان border-color:color-mix(اللون 45%،
   transparent) فوق أرضية شفافة ⇒ مع لون جامعي داكن يختفي الحدّ نفسه فلا يعرف
   المستخدم أن هناك زراً أصلاً (هدف لمس مفقود لا مجرد تباين). ⛔ لا تُعِد
   ربطه بـ--ua-c1 بأي صيغة. */
.gld-uni-change {
  display: inline-flex; align-items: center; gap: 6px;
  margin-inline-start: 54px;   /* بمحاذاة النص: عرض الشعار 42 + الفجوة 12 */
  position: relative; min-height: 32px;
  padding: 6px 12px; border-radius: 999px; cursor: pointer;
  font-family: inherit; font-size: .78rem; font-weight: 700;
  color: var(--text-primary, #f3e9ff);
  background: var(--bg-card, rgba(255,255,255,.08));
  border: 1px dashed var(--border-color, rgba(168,85,247,.45));
  -webkit-tap-highlight-color: transparent;
}
/* السطح والحدّ مشتقّان من لون **النصّ** لا من العلامة ⇒ فرق مضمون عن أرضية
   البطاقة المصبوغة في الثيمين معاً، أياً كان لون الجامعة (R-15).
   نسبة الحدّ 50% ليست اعتباطاً: بأقل منها يهبط تباين الحدّ عن أرضية البطاقة
   إلى 1.76:1 على الثيم الفاتح (حُسبت على حائل #00486c والقصيم #006c35 عبر
   أربعة ثيمات) — و50% تعطي ≥3.11:1 = حدّ WCAG لمكوّنات الواجهة. */
@supports (background: color-mix(in srgb, red 10%, blue)) {
  .gld-uni-change {
    background: color-mix(in srgb, var(--text-primary, #f3e9ff) 8%, var(--bg-card));
    border-color: color-mix(in srgb, var(--text-primary, #f3e9ff) 50%, var(--border-color));
  }
}
/* هدف لمس ≥44px بلا تضخيم بصري (نفس عقد .ua-tile::before بالطبقة 114): 32+12 */
.gld-uni-change::before { content: ''; position: absolute; inset: -6px; border-radius: inherit; }
.gld-uni-change:active { transform: scale(.96); }
@media (prefers-reduced-motion: reduce) {
  .gld-uni-change:active { transform: none; }
}

/* ── بطاقات الهَب (M4.3/M5) ─────────────────────────────────────────────
   🎭 [GRAND-STAGE 2026-08-05] اغتيل عقد nth-child/grid-column الهش الذي كان
   هنا (ONE-DOOR V1b): الترتيب والشبكة 2×2 صارا بالطبقة 120 بمفاتيح
   rx-card-<key> الصريحة (data-tile-key) — لا فهرس بعد اليوم. للتراجع: أعد
   القواعد الأربع من تاريخ git وأسقط نظيرتها في 120.

   🎭 [STAGE-DOOR 2026-08-05 R-11] القرار الصريح في `rx-card-primary`:
   **الكلاس متقاعد — لا يُعاد له أي قاعدة.** البديل المطروح في §5/W4-9
   (`.rx-card-uni{grid-column:span 2}` داخل @media (min-width:768px)) مرفوض
   لأنه يكسر شبكة 2×2 التي سلّمتها الطبقة 120 (صف أول شروحات+دورات، صف ثانٍ
   كتب+الخدمات) — بطاقة تمتد عمودين تُنتج 1+2+1 لا 2×2. «البطاقة الأم أعرض»
   انقرضت بقرار GRAND-STAGE لا سهواً، والبروز البصري الآن بالترتيب (order:1)
   لا بالعرض. المطلوب من مالك rx-home.js: إسقاط `extraClass:'rx-card-primary'`
   من rx-home.js:123 (كلاس بصفر قاعدة في المستودع كله — تحقّق بـgrep). */
.rx-choice-badge {
  position: absolute; top: 10px; inset-inline-start: 10px; z-index: 3;
  font-size: .7rem; font-weight: 700; padding: 4px 10px; border-radius: 999px;
  background: linear-gradient(135deg, #f59e0b, #d97706); color: #1a1030;
  box-shadow: 0 2px 8px rgba(0,0,0,.35);
}

/* ── شيت الكتب (M5.2) ──────────────────────────────────────────────────── */
/* 🧵 [OMNI-FIT 2026-08-22 §6-د] نطاق الشيتات بالسلّم (كان 1200) */
#gldSheet { position: fixed; inset: 0; z-index: var(--z-sheet, 12000); display: flex; align-items: flex-end; justify-content: center; }
#gldSheet .gld-sheet-back { position: absolute; inset: 0; background: rgba(5,3,15,.6); backdrop-filter: blur(3px); }
#gldSheet .gld-sheet {
  position: relative; width: min(480px, 94vw); margin-bottom: max(16px, env(safe-area-inset-bottom));
  padding: 22px 20px; border-radius: 20px; text-align: center;
  background: var(--bg-card, #1c1233); border: 1px solid rgba(168,85,247,.35);
  animation: gldSheetUp .3s ease both;
  /* 🧵 [OMNI-FIT 2026-08-22 §6-ز] سقف الارتفاع + تمرير داخلي محصور (لم يكن له max-height — شاشات قصيرة/عرضية) */
  max-height: calc(100vh - 32px);
  max-height: calc(100dvh - 32px);
  overflow: auto; overscroll-behavior: contain;
}
@keyframes gldSheetUp { from { transform: translateY(24px); opacity: 0; } to { transform: none; opacity: 1; } }
#gldSheet .gld-sheet-icon { font-size: 1.8rem; color: #a855f7; margin-bottom: 8px; }
#gldSheet h3 { margin: 0 0 8px; font-size: 1.05rem; }
#gldSheet p { margin: 0 0 14px; font-size: .85rem; opacity: .8; }
#gldSheet .gp-banner-btn { width: 100%; }

/* ── توست الاستحقاق (M2.5 — لا قفز تلقائي) ─────────────────────────────── */
.gld-access-toast {
  /* 🧵 [OMNI-FIT 2026-08-22 §6-ب/§6-د] فوق رصيف الدفع (كان bottom: 84px+env — نفس موضع fl-badge وz 1300 تحته) */
  position: fixed; bottom: var(--ui-float-above-dock, calc(84px + env(safe-area-inset-bottom, 0px))); inset-inline: 0;
  margin: 0 auto; width: max-content; max-width: min(92vw, 560px); z-index: var(--z-toast, 12500);
  display: flex; align-items: center; gap: 12px; padding: 12px 18px;
  border-radius: 14px; background: linear-gradient(135deg, #2a1650, #1c1233);
  border: 1px solid rgba(168,85,247,.5); box-shadow: 0 8px 30px rgba(0,0,0,.5);
  animation: gldToastIn .4s ease both; font-size: .9rem;
}
@keyframes gldToastIn { from { transform: translateY(16px); opacity: 0; } to { transform: none; opacity: 1; } }
.gld-access-toast button {
  border: none; border-radius: 10px; padding: 8px 14px; cursor: pointer;
  background: linear-gradient(135deg, #a855f7, #7c3aed); color: #fff; font-weight: 700; font-size: .82rem;
}

/* ── الثيم الفاتح (عقد :root[data-theme="light"] — عزل الطبقة 99) ──────── */
:root[data-theme="light"] .gld-echo { background: #fff; border-color: rgba(124,58,237,.25); }
:root[data-theme="light"] .gld-banner-fold { background: rgba(0,0,0,.06); }
:root[data-theme="light"] #gldSheet .gld-sheet { background: #fff; color: #2a2140; }
:root[data-theme="light"] .gld-access-toast { background: #fff; color: #2a2140; border-color: rgba(124,58,237,.35); }
:root[data-theme="light"] .gld-uni-logo { background: #f4f1fa; }
/* 🎭 [GRAND-STAGE E1 2026-08-05] «إنشاء حساب/تسجيل الدخول» الشبح كان مختفياً:
   .gld-btn-ghost يرث color:#fff من .gp-banner-btn (113:51) وoverride الحد
   وحده لا يكفي — اللون صريح بالثيم الفاتح (تباين ≥4.5 على أرضية الشريط) */
:root[data-theme="light"] .gld-banner .gld-btn-ghost { border-color: rgba(124,58,237,.4); color: #5b21b6; font-weight: 700; }

/* ── حركة مخفّضة ───────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  #bottomNav .nav-item.gld-birth,
  #gldSheet .gld-sheet,
  .gld-access-toast { animation: none; }
}

/* موبايل ضيّق: أزرار الشريط تمتد */
@media (max-width: 480px) {
  .gld-banner .gld-banner-btns { flex-basis: 100%; }
  .gld-banner .gld-banner-btns .gp-banner-btn { flex: 1; }
}


/* --------------- source: assets/css/119-glass-door.css --------------- */
/* 🚀 [TURBO-SILK 2026-09-01 م2] هذه الطبقة صارت تُبنى ضمن bundle-late.css (لا سطر <link>
   مستقل لها في index.html بعد اليوم — الترتيب محفوظ حرفياً داخل LATE_MANIFEST).
   للإزالة: احذف بندها من LATE_MANIFEST في tools/build-css.py + هذا الملف + أعد التوليد.
   أي تعليمة قديمة أدناه بنص «احذف سطر الlink/رابطه» تعني ذلك. */
/* ═══════════════════════════════════════════════════════════════════════════
   🚪✨ 119-glass-door.css — GLASS-DOOR: زر التجريبي الزجاجي + فهرس المعاينة +
   مودال شروط الاشتراك (تُحمَّل بعد 118-gold-path — آخر التتالي عمداً)
   قاعدة البيت: ممنوع نجمة-شرطة داخل التعليقات. طبقة قابلة للإزالة بحذف سطرها.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── زر «تصفح المحتوى التجريبي» — 🏛️ [LEGEND-LANE §3-1] جلد معتم مقروء فوق
      أي بوستر: الخلفية القديمة rgba(168,85,247,0.10) داكناً / 0.07 فاتحاً
      وبحكم order:-1 يجلس الزر أعلى كتلة المحتوى حيث تدرّج التعتيم يقارب
      الصفر ⇒ فوق بوستر فاتح لا يُقرأ. العلاج **زيادة عتامة خلفية الزر
      نفسه** (0.88) — لا خفض وضوح العنصر ولا تغطية البطاقة. الثيمان موحّدان
      على نفس القيم عمداً (تباين أبيض-على-بنفسجي-غامق > 7:1 فوق أي بوستر).
      هيكل .poster-action-btn موروث (العرض/الارتفاع/نصف القطر/الخط) —
      وميزانية الارتفاع مقدسة: صفر padding رأسي جديد وصفر min-height (W2-2). */
.poster-action-btn.gd-trial-btn {
  background: rgba(76, 29, 149, 0.88);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  color: #ffffff;
  border: 1.5px solid rgba(216, 180, 254, 0.85);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.35);
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45);
  font-weight: 700;
}
.poster-action-btn.gd-trial-btn:hover,
.poster-action-btn.gd-trial-btn:focus-visible {
  background: rgba(107, 33, 168, 0.95);
  border-color: #d8b4fe;
}
:root[data-theme="light"] .poster-action-btn.gd-trial-btn {
  background: rgba(76, 29, 149, 0.88);
  color: #ffffff;
  border-color: rgba(216, 180, 254, 0.85);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.35);
}
:root[data-theme="light"] .poster-action-btn.gd-trial-btn:hover,
:root[data-theme="light"] .poster-action-btn.gd-trial-btn:focus-visible {
  background: rgba(107, 33, 168, 0.95);
  border-color: #d8b4fe;
}
/* 🎭 [STAGE-DOOR 2026-08-05 X-13] هدف اللمس تحت 400px — القديم كان
   `min-height:30px` للزر التجريبي بينما main.css:1312 يهبط بزر التسجيل إلى
   padding:8px (~31px): زرّان كلاهما دون العقد (§7 بند 22 «≥44px لكل أزرار
   البطاقة تحت 400px»). الآن الارتفاع 44px للاثنين والحشو الرأسي يُقلَّص بدلاً منه
   حتى لا ينتفخ .poster-content — وهو absolute/bottom:0 داخل بطاقة
   aspect-ratio:9/16 وoverflow:hidden فأي زيادة ترفع العنوان وتقصّه
   (main.css:994-999,1092-1099 · تحذير W2-2 في البرومبت الحاكم).
   مقيس فعلياً بمتصفح على 375px (لا تقدير): عرض العمود 167px ⇒ ارتفاع البطاقة
   296px، وارتفاع .poster-content بالزرّين 44+44 = 142px ⇒ فائض 154px بلا قصّ.
   ⚠️ فوق 400px يبقى الزرّان ~37/39px (حشو main.css 10px) — خارج نطاق §7 بند 22
   المقصور على «تحت 400px»؛ رفعُهما هناك يمسّ كل بطاقات البوستر فتُرك للمالك.
   للتراجع: أعد min-height:30px وpadding:5px 6px واحذف قاعدة
   .poster-action-btn أدناه. */
@media (max-width: 400px) {
  .poster-action-btn {
    min-height: 44px;
    padding-top: 6px;
    padding-bottom: 6px;
  }
  .poster-action-btn.gd-trial-btn {
    padding: 6px;
    min-height: 44px;
    font-size: 0.74rem;
    gap: 5px;
  }
}

/* ── فهرس المعاينة داخل عارض MV ─────────────────────────────────────────── */
.gd-preview-badge {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 6px 14px;
  margin: 2px 0 10px;
  border-radius: 999px;
  font-size: 0.82rem;
  font-weight: 800;
  color: var(--primary, #a855f7);
  background: rgba(168, 85, 247, 0.10);
  border: 1px solid rgba(168, 85, 247, 0.45);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}
:root[data-theme="light"] .gd-preview-badge {
  color: #7c3aed;
  background: rgba(124, 58, 237, 0.07);
  border-color: rgba(124, 58, 237, 0.4);
}

/* شريط CTA العلوي (كان بلا أي CSS — عيب موثق بالاستكشاف) */
.gc-cta-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  margin: 0 0 12px;
  border-radius: 14px;
  cursor: pointer;
  background: linear-gradient(135deg, rgba(168, 85, 247, 0.14), rgba(99, 102, 241, 0.10));
  border: 1px solid rgba(168, 85, 247, 0.35);
}
.gc-cta-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
/* 🎭 [STAGE-DOOR 2026-08-05 X-02] --text-color متغير شبح (غير معرَّف في أي ملف)
   ⇒ كان يسقط على #fff أبيض صلب: غير مقروء على الثيم الثلجي. */
.gc-cta-txt b { font-size: 0.92rem; color: var(--text-primary); }
.gc-cta-txt span { font-size: 0.78rem; color: var(--text-muted); }
.gc-cta-btn {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 10px 14px;
  min-height: 44px;
  border: none;
  border-radius: 12px;
  cursor: pointer;
  font-family: inherit;
  font-size: 0.85rem;
  font-weight: 800;
  color: #fff;
  background: var(--primary, #a855f7);
}
/* 🎭 [STAGE-DOOR 2026-08-05 X-02] سقط `[data-theme=light] .gc-cta-txt b{color:#1f2937}`
   — صار var(--text-primary) يعطي #0f172a تلقائياً على الثلجي. تبقى قاعدة الأرضية
   لأنها rgba خام لا متغير. */
:root[data-theme="light"] .gc-cta-banner { background: rgba(124, 58, 237, 0.06); }

/* شارة الدرس التجريبي داخل البطاقة */
.gc-trial-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 800;
  color: #22c55e;
  background: rgba(34, 197, 94, 0.12);
  border: 1px solid rgba(34, 197, 94, 0.4);
  vertical-align: middle;
}
.gc-lesson-card.gc-locked { opacity: 0.82; }

/* CTA لاصق أسفل شيت المعاينة (A4) — يحترم إبهام الآيفون */
/* 🎭 [STAGE-DOOR 2026-08-05 X-02] --bg-color متغير شبح ⇒ كان يسقط على #0b0714
   بينما .mv-sheet تسقط على #14101e ⇒ **خط لوني ظاهر** أسفل الشيت في كل الثيمات
   (شكوى «لوح منفصل»). الآن var(--bg-page) — نفس مصدر خلفية الشيت حرفياً فيذوب.
   وتنزف الأرضية 16px على الجانبين (هامش سالب بمقدار حشو الصفحة --mv-page-pad
   من mv-viewer.css) فتغطي حشو الصفحة نفسه ولا تنتهي عند حافة البطاقات بالضبط.
   ⚠️ توثيق دقيق: النزف = حشو الصفحة فقط لا كامل عرض المُمرِّر — الجانبان خارجه
   فارغان أصلاً لأن كل أبناء .mv-body محصورون بنفس صندوق المحتوى. المقيس:
   عند 375px يصير العرض 375 (كامل الشيت)، وعند 1280px يصير 600 مقابل 568 للبطاقات.
   للتراجع: احذف سطرَي margin-inline/padding-inline. */
.gd-cta-stick {
  position: sticky;
  bottom: 0;
  z-index: 5;
  padding: 10px 0 calc(10px + env(safe-area-inset-bottom));
  margin-top: 14px;
  margin-inline: calc(0px - var(--mv-page-pad, 0px));
  padding-inline: var(--mv-page-pad, 0px);
  background: linear-gradient(to top, var(--bg-page) 62%, transparent);
}
.gd-cta-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  width: 100%;
  min-height: 48px;
  padding: 13px 16px;
  border: none;
  border-radius: 14px;
  cursor: pointer;
  font-family: inherit;
  font-size: 0.98rem;
  font-weight: 800;
  color: #fff;
  background: linear-gradient(135deg, var(--primary, #a855f7), #6366f1);
  box-shadow: 0 6px 20px rgba(168, 85, 247, 0.35);
}
/* 🎭 [STAGE-DOOR 2026-08-05 X-02] سقط `[data-theme=light] .gd-cta-stick` — كان
   يفرض #ffffff بينما خلفية الصفحة الثلجية #f5f7fa ⇒ خط لوني ثانٍ. var(--bg-page)
   يعطي القيمة الصحيحة في الثيمين بلا استثناء يدوي. */

/* 🎭 [STAGE-DOOR 2026-08-05 X-01] حاوية فهرس الضيف — كانت **بلا أي قاعدة CSS في
   المستودع كله** (X-03) ⇒ div عارٍ بلا تباعد بين الفصول والبطاقات. تنسيق أدنى
   يطابق تباعد .page في صفحة المادة الحقيقية. */
.gc-guest-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.gc-guest-list > .category-wrapper { margin: 0; }

/* ── شريط الموافقة على الشروط في شيت الدفع (B4) ─────────────────────────── */
.gd-terms-bar {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  margin: 10px 0;
  border-radius: 12px;
  background: rgba(168, 85, 247, 0.08);
  border: 1px solid rgba(168, 85, 247, 0.35);
}
.gd-terms-bar input[type="checkbox"] {
  width: 20px;
  height: 20px;
  margin-top: 1px;
  accent-color: var(--primary, #a855f7);
  cursor: pointer;
  flex: 0 0 auto;
}
/* 🎭 [STAGE-DOOR 2026-08-05 X-02] --text-color شبح ⇒ #e5e7eb صلب على الثلجي. */
.gd-terms-bar label {
  font-size: 0.88rem;
  font-weight: 700;
  line-height: 1.6;
  cursor: pointer;
  color: var(--text-primary);
}
.gd-terms-bar .gd-terms-link {
  color: var(--primary, #a855f7);
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}
.gd-terms-bar.gd-shake { animation: gdShake 0.45s ease; }
@keyframes gdShake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(5px); }
  50% { transform: translateX(-5px); }
  75% { transform: translateX(3px); }
}
:root[data-theme="light"] .gd-terms-bar { background: rgba(124, 58, 237, 0.05); }
/* 🎭 [STAGE-DOOR 2026-08-05 X-02] سقط `[data-theme=light] .gd-terms-bar label` —
   var(--text-primary) يعطي #0f172a على الثلجي تلقائياً. */

/* ── مودال الشروط .gd-terms-sheet (B4) — جوال bottom-sheet، كمبيوتر حوار ── */
.gd-terms-overlay {
  position: fixed;
  inset: 0;
  z-index: 100060;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  background: rgba(0, 0, 0, 0.55);
  -webkit-backdrop-filter: blur(3px);
  backdrop-filter: blur(3px);
  opacity: 0;
  transition: opacity 0.22s ease;
}
.gd-terms-overlay.gd-open { opacity: 1; }
.gd-terms-sheet {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 640px;
  max-height: min(80vh, 720px);
  max-height: min(80dvh, 720px); /* 🧵 [OMNI-FIT 2026-08-22 §6-ز] dvh (الـvh أعلاه fallback) */
  overscroll-behavior: contain; /* 🧵 [OMNI-FIT 2026-08-22 §6-ز] منع تسلسل التمرير للخلفية */
  /* 🎭 [STAGE-DOOR 2026-08-05 X-02] --text-color شبح ⇒ استُبدل بـ--text-primary */
  background: var(--bg-card);
  color: var(--text-primary);
  border: 1px solid var(--border-color);
  border-radius: 22px 22px 0 0;
  transform: translateY(24px);
  transition: transform 0.22s ease;
  overflow: hidden;
}
.gd-terms-overlay.gd-open .gd-terms-sheet { transform: translateY(0); }
.gd-terms-grip {
  flex: 0 0 auto;
  width: 44px;
  height: 5px;
  margin: 10px auto 2px;
  border-radius: 999px;
  background: var(--border-color, rgba(255, 255, 255, 0.18));
}
.gd-terms-head {
  position: sticky;
  top: 0;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 16px;
  background: inherit;
  border-bottom: 1px solid var(--border-color, rgba(255, 255, 255, 0.08));
}
.gd-terms-title {
  font-size: 1.02rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  gap: 8px;
}
.gd-terms-x {
  position: relative; /* 🧵 [OMNI-FIT 2026-08-22 §6-ط] مرساة لمنطقة اللمس 44 (38+3×2) */
  flex: 0 0 auto;
  width: 38px;
  height: 38px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--border-color, rgba(255, 255, 255, 0.14));
  border-radius: 50%;
  background: transparent;
  color: inherit;
  font-size: 1.15rem;
  cursor: pointer;
}
/* 🧵 [OMNI-FIT 2026-08-22 §6-ط] منطقة لمس 44×44 لزر الإغلاق */
.gd-terms-x::before { content: ""; position: absolute; inset: -3px; }
.gd-terms-body {
  flex: 1 1 auto;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 14px 18px 18px;
  line-height: 1.9;
  font-size: 0.93rem;
}
.gd-terms-body h1, .gd-terms-body h2, .gd-terms-body h3 {
  margin: 14px 0 8px;
  font-weight: 800;
  line-height: 1.5;
}
.gd-terms-body h2 { font-size: 1.05rem; color: var(--primary, #a855f7); }
.gd-terms-body p { margin: 0 0 10px; }
.gd-terms-body ul, .gd-terms-body ol { margin: 0 0 12px; padding-right: 22px; }
.gd-terms-body li { margin-bottom: 6px; }
.gd-terms-body img { max-width: 100%; border-radius: 10px; }
.gd-terms-sec-title {
  margin: 16px 0 6px;
  padding: 6px 12px;
  border-radius: 10px;
  font-size: 0.85rem;
  font-weight: 800;
  color: var(--primary, #a855f7);
  background: rgba(168, 85, 247, 0.08);
}
.gd-terms-foot {
  position: sticky;
  bottom: 0;
  flex: 0 0 auto;
  display: flex;
  gap: 10px;
  padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
  background: inherit;
  border-top: 1px solid var(--border-color, rgba(255, 255, 255, 0.08));
}
.gd-terms-agree {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 12px 16px;
  border: none;
  border-radius: 13px;
  cursor: pointer;
  font-family: inherit;
  font-size: 0.95rem;
  font-weight: 800;
  color: #fff;
  background: linear-gradient(135deg, var(--primary, #a855f7), #6366f1);
}
.gd-terms-close2 {
  flex: 0 0 auto;
  min-height: 48px;
  padding: 12px 18px;
  border: 1px solid var(--border-color, rgba(255, 255, 255, 0.16));
  border-radius: 13px;
  cursor: pointer;
  font-family: inherit;
  font-size: 0.9rem;
  font-weight: 700;
  background: transparent;
  color: inherit;
}
/* 🧵 [OMNI-FIT 2026-08-22 §6] توحيد نقطة سطح المكتب 768px (كانت 700) */
@media (min-width: 768px) {
  .gd-terms-overlay { align-items: center; padding: 24px; }
  .gd-terms-sheet { max-width: 560px; border-radius: 20px; }
  .gd-terms-grip { display: none; }
}
/* 🎭 [STAGE-DOOR 2026-08-05 X-02] سقط `[data-theme=light] .gd-terms-sheet` —
   var(--bg-card) الثلجي = #ffffff و--text-primary = #0f172a و--border-color =
   #e2e8f0 (main.css:48,51,54) ⇒ الاستثناء اليدوي صار زائداً وخاطئ الحدّ. */
:root[data-theme="light"] .gd-terms-body h2,
:root[data-theme="light"] .gd-terms-sec-title { color: #7c3aed; }

/* قفل تمرير الجسم أثناء المودال */
body.gd-terms-lock { overflow: hidden !important; }

/* ═══ 🎙️ [VOICE-PACT 2026-08-24] الإقرار الصوتي ═══════════════════════════
   المشغّل داخل .gd-terms-sheet حصراً (فخ إعادة بناء #flBody) + شريط متكيف +
   طبقة إقرار فك القيد داخل بطاقة dlm. صف flex واحد يلتف عند الضيق، أهداف
   لمس ≥44×44، لا height ثابت بrem (درس STORE-GLOW — القص بسلّم الخط). */
.gd-terms-ear { font-size: 0.95rem; margin-inline-end: 2px; }
.gd-terms-hint {
  flex-basis: 100%;
  margin-top: 6px;
  font-size: 0.78rem;
  font-weight: 700;
  color: #f59e0b;
}
.gd-terms-bar input[type="checkbox"][aria-disabled="true"] {
  opacity: 0.45;
  cursor: not-allowed;
}

/* مشغّل الشروط داخل المودال */
.gd-audio {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  padding: 10px 12px;
  margin: 8px 0 12px;
  border-radius: 12px;
  background: rgba(168, 85, 247, 0.08);
  border: 1px solid rgba(168, 85, 247, 0.35);
}
.gd-audio-btn {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  min-height: 44px;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  color: #fff;
  background: var(--primary, #a855f7);
}
.gd-audio-track {
  flex: 1 1 120px;
  min-width: 80px;
  height: 6px;
  border-radius: 999px;
  overflow: hidden;
  background: rgba(168, 85, 247, 0.18);
}
.gd-audio-fill {
  width: 0%;
  height: 100%;
  border-radius: 999px;
  background: var(--primary, #a855f7);
  transition: width 0.2s linear;
}
.gd-audio-time, .gd-audio-dur {
  flex: 0 0 auto;
  font-size: 0.78rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--text-muted, #94a3b8);
}
.gd-audio-done {
  flex: 0 0 auto;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 0.74rem;
  font-weight: 800;
  color: #22c55e;
  background: rgba(34, 197, 94, 0.12);
  border: 1px solid rgba(34, 197, 94, 0.4);
}
.gd-audio-fail {
  flex-basis: 100%;
  font-size: 0.78rem;
  font-weight: 700;
  color: #f59e0b;
}
.gd-audio-failed { opacity: 0.75; }
.gd-audio-script {
  margin: 0 0 12px;
  border: 1px dashed var(--border-color, rgba(255, 255, 255, 0.16));
  border-radius: 10px;
  padding: 8px 12px;
  font-size: 0.85rem;
}
.gd-audio-script summary {
  cursor: pointer;
  font-weight: 800;
  color: var(--primary, #a855f7);
  min-height: 28px;
}
.gd-audio-script-body {
  margin-top: 6px;
  line-height: 1.9;
  color: var(--text-primary);
  white-space: pre-wrap;
}
:root[data-theme="light"] .gd-audio { background: rgba(124, 58, 237, 0.05); }
:root[data-theme="light"] .gd-audio-track { background: rgba(124, 58, 237, 0.14); }

/* 🎙️ طبقة إقرار فك القيد داخل بطاقة dlm (device-limit-modal v5) — ترث ألوان
   البطاقة (currentColor) فلا تحتاج استثناءات ثيم؛ التشيك بوكس ≥20px والزر ≥44 */
.dlm-ub-layer {
  flex-basis: 100%;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 12px;
  margin-bottom: 4px;
  border-radius: 14px;
  text-align: start;
  background: rgba(245, 158, 11, 0.08);
  border: 1px solid rgba(245, 158, 11, 0.4);
}
.dlm-ub-title { margin: 0; font-size: 0.9rem; font-weight: 800; }
.dlm-ub-stage { font-weight: 700; opacity: 0.8; }
.dlm-ub-player { display: flex; align-items: center; gap: 10px; }
.dlm-ub-play {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  color: #fff;
  background: #f59e0b;
}
.dlm-ub-track {
  flex: 1 1 80px;
  height: 6px;
  border-radius: 999px;
  overflow: hidden;
  background: rgba(245, 158, 11, 0.22);
}
.dlm-ub-fill {
  width: 0%;
  height: 100%;
  border-radius: 999px;
  background: #f59e0b;
  transition: width 0.2s linear;
}
.dlm-ub-time {
  flex: 0 0 auto;
  font-size: 0.78rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  opacity: 0.85;
}
.dlm-ub-script, .dlm-ub-failnote {
  margin: 0;
  font-size: 0.84rem;
  line-height: 1.8;
  opacity: 0.95;
  white-space: pre-wrap;
}
.dlm-ub-failnote { color: #f59e0b; font-weight: 700; }
.dlm-ub-check {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  cursor: pointer;
  font-size: 0.86rem;
  font-weight: 700;
  line-height: 1.6;
  min-height: 24px;
}
.dlm-ub-check input {
  width: 20px;
  height: 20px;
  margin-top: 1px;
  flex: 0 0 auto;
  accent-color: #f59e0b;
  cursor: pointer;
}
.dlm-ub-layer .dlm-btn[disabled] { opacity: 0.5; cursor: not-allowed; }

/* ── حركة أقل (U-02) ────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .gd-terms-overlay, .gd-terms-sheet { transition: none; }
  .gd-terms-bar.gd-shake { animation: none; }
  .gd-audio-fill, .dlm-ub-fill { transition: none; }
}


/* --------------- source: assets/css/120-request-gateway.css --------------- */
/* 🚀 [TURBO-SILK 2026-09-01 م2] هذه الطبقة صارت تُبنى ضمن bundle-late.css (لا سطر <link>
   مستقل لها في index.html بعد اليوم — الترتيب محفوظ حرفياً داخل LATE_MANIFEST).
   للإزالة: احذف بندها من LATE_MANIFEST في tools/build-css.py + هذا الملف + أعد التوليد.
   أي تعليمة قديمة أدناه بنص «احذف سطر الlink/رابطه» تعني ذلك. */
/* ════════════════════════════════════════════════════════════════════════
   🎭 [GRAND-STAGE 2026-08-05] الطبقة 120 — بوابة «اطلب»: بنر hero + عقد
   البطاقات الدلالي (data-tile-key) بشبكة 2×2.
   ─────────────────────────────────────────────────────────────────────────
   • آخر طبقة بالتتالي (بعد 119 — ترتيب المصدر يغلب، لا لمس للحزم).
   • تحل محل قواعد nth-child/grid-column المحذوفة من 118:117-120 (عقد هش
     بالفهرس اغتيل عمداً — الترتيب هنا بمفاتيح rx-card-<key> الصريحة).
   • قانونا WIDE-GATE: كل override فاتح بقاعدة مستقلة (iOS ≤16.3 يسقط
     القائمة كلها إن لم يفهم أحد محدداتها) + لا تعريف للمتغيرات الشبح
     عالمياً. breakpoint من السلم المعتمد: 768min.
   • صفر CLS: aspect-ratio صريح لكل breakpoint + overflow hidden.
   • overlay البنر فوق scrim داكن دائماً (الوسيط لا يتبدل بالثيم) —
     أبيض فوق التدرج = تباين ≥4.5 بالثيمين بلا فروع.
   للإزالة: احذف الملف + سطر <link> + موديولات request-gateway.
   ════════════════════════════════════════════════════════════════════════ */

/* ── البنر: الحاضن الدائم ─────────────────────────────────────────────── */
#requestGatewayHero { margin: 0 0 14px; }
#requestGatewayHero[hidden] { display: none; }

.rgw-frame {
  position: relative;
  width: 100%;
  aspect-ratio: 3 / 2;              /* جوال: خانة 1440×960 */
  border-radius: 18px;
  overflow: hidden;
  background: #241046;              /* أرضية قبل اكتمال الوسيط — صفر وميض أبيض */
}
@media (min-width: 768px) {
  .rgw-frame { aspect-ratio: 15 / 4; }   /* ديسكتوب/آيباد: 2400×640 و1920×512 */
}
.rgw-clickable { cursor: pointer; }
.rgw-clickable:focus-visible { outline: 3px solid #a855f7; outline-offset: 2px; }

.rgw-media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;                /* قص cover محسوب — منطقة الأمان 40% الوسطى */
  display: block;
}
.rgw-picture { position: absolute; inset: 0; display: block; }

.rgw-scrim {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(0deg, rgba(10, 4, 24, 0.62) 0%, rgba(10, 4, 24, 0.18) 45%, rgba(10, 4, 24, 0) 70%);
}

.rgw-overlay {
  position: absolute;
  right: 16px;
  bottom: 12px;
  left: 16px;
  z-index: 2;
  text-align: right;                /* RTL — منطقة النص يمين الصورة */
  pointer-events: none;
}
.rgw-title {
  margin: 0;
  color: #ffffff;                   /* فوق الscrim الداكن دائماً — AA بالثيمين */
  font-size: clamp(15px, 2.4vw, 22px);
  font-weight: 800;
  line-height: 1.35;
  text-shadow: 0 1px 8px rgba(10, 4, 24, 0.55);
}
.rgw-sub {
  margin: 2px 0 0;
  color: #e9e2ff;
  font-size: clamp(12px, 1.8vw, 15px);
  font-weight: 600;
  line-height: 1.45;
  text-shadow: 0 1px 6px rgba(10, 4, 24, 0.55);
}
@media (min-width: 768px) {
  .rgw-overlay { right: 22px; bottom: 16px; left: auto; max-width: 46%; }
}

/* ── عقد البطاقات: الترتيب بorder فقط (DOM ثابت: uni ← dev ← book ← svc) ── */
/* 📚 [BOOK-SHELF 2026-08-23 §1] عقد test_one_door/rx-theme-images محفوظ:
   البنر ← الشروحات ← الكتب المترجمة ← «كل شيء تحتاجه» ← دورات حمدان.
   🌟 [STORE-GLOW 2026-08-24] الشبكة والأبعاد والتنسيق البصري كله انتقل إلى
   قسم STORE-GLOW بذيل هذا الملف (محرك 6 أعمدة + بطاقة مميزة) — القواعد
   القديمة هنا (1×N/2×2 + min-height 124/140 + قصّ الوصف) حُذفت لا عُطّلت. */
.rx-card-uni  { order: 1; }
.rx-card-book { order: 2; }
.rx-card-svc  { order: 3; }
.rx-card-dev  { order: 4; }

/* ── §D2: شريط «جامعتك — ادخل مباشرة» أعلى أطلس الخدمات ──────────────── */
.ap-pref-strip {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  margin: 0 0 10px;
  padding: 11px 14px;
  border-radius: 12px;
  border: 1px solid rgba(168, 85, 247, 0.45);
  background: rgba(168, 85, 247, 0.14);
  color: inherit;
  cursor: pointer;
  font-size: 0.86rem;
  text-align: right;
  min-height: 44px;                 /* هدف لمس ≥44px (WCAG 2.2) */
}
.ap-pref-strip .fa-star { color: #f59e0b; }
.ap-pref-strip .fa-arrow-left { margin-inline-start: auto; opacity: 0.75; }
:root[data-theme="light"] .ap-pref-strip { background: rgba(124, 58, 237, 0.08); }
:root[data-theme="light"] .ap-pref-strip { border-color: rgba(124, 58, 237, 0.4); }
:root[data-theme="light"] .ap-pref-strip { color: #2a2140; }

/* ════════════════════════════════════════════════════════════════════════
   🎭 [STAGE-DOOR 2026-08-05] W2-2 (T-05) + X-13 — زر التجريبي فوق زر التسجيل
   ─────────────────────────────────────────────────────────────────────────
   • .poster-content حاوية flex بعمود؛ كل الأبناء على order:0 الضمني فيتقدّم
     الزر وحده بـorder:-1 — ⛔ بلا مساس بـflex-direction (ق W2-2).
     البناء نفسه صار يرسمه قبل زر التسجيل في المسارات الثلاثة
     (rhBuildPosterCard · devCourseCard · dev-shelf) فالمصدران متطابقان،
     وهذه القاعدة تحرس المسار الرابع: حقن الملتقط في بطاقة مكاشة.
   • البطاقة position:absolute;bottom:0 داخل overflow:hidden بنسبة 9/16
     (main.css:994,1092) ⇒ الزر الثاني يرفع العنوان/الوصف. الميزانية المحسوبة
     عند 375px (بطاقة ≈164px ⇒ ارتفاع ≈292px): عنوان 36 + وصف 32 + ميتا 14 +
     زرّان 88 + فواصل 24 + حشو 20 ≈ 214px < 292px ⇒ صفر قصّ.
   • X-13/§7-22: هدف اللمس ≥44px لكل أزرار بطاقة البوستر تحت 400px — يتجاوز
     min-height:30px في 119-glass-door.css:33-38 بنفس النوعية وترتيب مصدر
     لاحق (الطبقة 120 مربوطة بعد 119 في index.html:197,201).
     ⛔ بطاقات اللوحة (.dash-poster-card بنسبة 9/14) مستثناة صراحةً.
   قانون WIDE-GATE: كل override بقاعدة مستقلة (لا قائمة محددات مشتركة).
   للتراجع: احذف هذه الكتلة كاملة — يعود الترتيب لعقد البناء وحده.
   ════════════════════════════════════════════════════════════════════════ */
.poster-content .gd-trial-btn { order: -1; }

/* 🛒 [ONE-CHOICE 2026-08-10 PH1] القاعدتان المرافقتان للحاضن الجديد .cc-info
   (بطاقة الخيار الواحد — الطبقة 122 تملك بقية مخطط order: عنوان 0 ← تجريبي 1
   ← إجراء 2 ← سعر 3 ← حالة 4). قاعدة مفردة لكل override (قانون WIDE-GATE). */
.cc-info .gd-trial-btn { order: 1; }

@media (max-width: 400px) {
  .poster-card:not(.dash-poster-card) .poster-action-btn { min-height: 44px; }
}
/* 🛒 [ONE-CHOICE PH1] إعادة نطاق 44px: الأزرار انتقلت من .poster-card إلى
   .cc-info — بدون هذه القاعدة يفقد هدف اللمس U-01 على البطاقة الجديدة */
@media (max-width: 400px) {
  .cc-info .poster-action-btn { min-height: 44px; }
}
@media (max-width: 400px) {
  .poster-content .gd-trial-btn { padding: 6px 8px; }
}
@media (max-width: 400px) {
  .cc-info .gd-trial-btn { padding: 6px 8px; }
}
/* فاصل أنعم قليلاً على الجوال الضيق — يمتص ارتفاع الزر الثاني بلا قصّ */
@media (max-width: 400px) {
  .poster-card:not(.dash-poster-card) .poster-content { gap: 6px; }
}

/* ── E5: مسح وقائي على الأسطح الجديدة — الثيم الفاتح (قواعد مفردة) ────── */
/* الإطار بأرضية فاتحة قبل تحميل الوسيط (لا صندوق داكن صادم بالثيم الفاتح) */
:root[data-theme="light"] .rgw-frame { background: #ede9fe; }
/* العنوان والوصف يبقيان أبيضين فوق الscrim (الوسيط نفسه لا يتبدل بالثيم) —
   لا override لوني هنا عمداً: الscrim يضمن التباين */

/* ════════════════════════════════════════════════════════════════════════
   🏛️ [LEGEND-LANE 2026-08-08 §3-2/§3-3] توسيط اسم الدورة وعنوان البطل
   ─────────────────────────────────────────────────────────────────────────
   • .poster-title بلا text-align في bundle-core.css:1111 (يرث RTL يميناً) —
     التوسيط هنا بنمط الاستثناء القائم :168 حرفياً (بطاقات الفهرس فقط؛
     بطاقات اللوحة .dash-poster-card مستثناة — قرار ق-2: العنوان فقط).
     العنوان clamp سطرين — التوسيط يسري على السطرين الملفوفين معاً.
   • بانر البطل: .rh-hero-title/.rh-hero-desc بلا text-align بأي طبقة حية
     (الحية bundle-lazy.css:6906-6945؛ request-hub.css مرآة ميتة غير مربوطة)
     — التوسيط بمعدِّل .rh-hero--center يضيفه request-hub-ui.hero() حصراً
     حين يطلبه المنادي (صفحة __all «كل الدورات») — لا مساس بعناوين
     الصفحات الأخرى (ق-2 + §3-3).
   • ⛔ ميزانية الارتفاع مقدسة (W2-2): صفر padding رأسي وصفر min-height هنا.
   للتراجع: احذف هذه الكتلة كاملة.
   ════════════════════════════════════════════════════════════════════════ */
.poster-card:not(.dash-poster-card) .poster-title { text-align: center; }
.rh-hero--center .rh-hero-title { text-align: center; }
.rh-hero--center .rh-hero-desc { text-align: center; }

/* ════════════════════════════════════════════════════════════════════════
   🌟 [STORE-GLOW 2026-08-24] إعادة تصميم واجهة «اطلب» — تناسق وهدوء بصري
   ─────────────────────────────────────────────────────────────────────────
   شكوى المالك: «قبيحة وغير متناسقة والمربعات كبيرة تغطي الشاشة بالجوال».
   المبادئ:
   • عمود واحد موحّد: --rqx-col يضبط عرض (بنر الحساب + رقاقة الاستكمال +
     بطاقة الجامعة + صدى الطلبات + بنر البوابة + شبكة البطاقات) — كانت
     ثلاثة عروض متنافرة (680 / 680 / 1100).
   • جوال <768: بطاقات صفّية مدمجة 112px (كانت لوحات 124px+ متراصة تغطي
     الشاشة) — نص يمين + سهم يسار، وصف سطر واحد.
   • ≥768: محرك شبكة 6 أعمدة — «شروحات الجامعة» بطاقة مميزة بعرض كامل،
     والبقية صف رشيق (3 بطاقات بـ:has، وبدونها 2×2 — تدهور رشيق iOS ≤15).
   • DOM وonclick وdata-tile-key والorder: صفر مساس (عقد test_one_door).
   • قانون WIDE-GATE محفوظ: كل override بقاعدة مستقلة — لا قوائم محددات
     يسقطها متصفح قديم كاملة.
   للتراجع: احذف قسم STORE-GLOW كاملاً وأعد كتلة الشبكة/الأبعاد القديمة من git.
   ════════════════════════════════════════════════════════════════════════ */

/* ── (أ) العمود الموحّد وإيقاع المسافات ─────────────────────────────────── */
#page-requests { --rqx-col: 980px; }

#page-requests .gld-banner { max-width: min(var(--rqx-col), 100%); }
#page-requests .gld-banner { border-radius: 18px; margin-bottom: 14px; }
#page-requests .gld-uni-card { max-width: min(var(--rqx-col), 100%); }
#page-requests .gld-uni-card { border-radius: 16px; margin-bottom: 14px; }
#page-requests .gld-echo { max-width: min(var(--rqx-col), 100%); }
#page-requests .gld-echo { border-radius: 16px; }
#page-requests #requestGatewayHero { max-width: min(var(--rqx-col), 100%); margin: 0 auto 14px; }
#page-requests .rx-choice-grid { max-width: min(var(--rqx-col), 100%); margin-inline: auto; }

/* بطاقة الجامعة صفّ واحد على الشاشات الرحبة: الجسم يتمدد والزر الثانوي
   ينزاح لنهاية السطر (كان flex-basis:100% يجبر السطرين دائماً) */
@media (min-width: 640px) {
  #page-requests .gld-uni-main { flex: 1 1 auto; min-width: 0; }
}
@media (min-width: 640px) {
  #page-requests .gld-uni-change { margin-inline-start: auto; }
}

/* رقاقة «كمّل من حيث وقفت» — لمسة زجاجية أدفأ بنفس الهوية */
#page-requests .gld-resume-chip {
  padding: 8px 18px;
  margin-bottom: 14px;
  font-size: .82rem;
  font-weight: 700;
  border-color: rgba(168, 85, 247, .45);
  background: linear-gradient(135deg, rgba(168, 85, 247, .16), rgba(124, 58, 237, .10));
}
#page-requests .gld-resume-chip i { color: var(--rx-gold, #fbbf24); margin-inline-start: 4px; }

/* ── (ب) محرك الشبكة ─────────────────────────────────────────────────────
   جوال: عمود واحد من بطاقات صفّية قصيرة. ≥768: ست وحدات — uni تمتد كاملة،
   والرفاق span 3 افتراضياً (2×2 بلا :has)، وspan 2 حين تكتمل الثلاثية. */
.rx-choice-grid { grid-template-columns: 1fr; gap: 10px; }
@media (min-width: 768px) {
  .rx-choice-grid { grid-template-columns: repeat(6, 1fr); gap: 14px; }
}
@media (min-width: 1200px) {
  .rx-choice-grid { gap: 16px; }
}
@media (min-width: 768px) {
  .rx-choice-grid .rx-choice-card { grid-column: span 3; }
}
@media (min-width: 768px) {
  .rx-choice-grid .rx-card-uni { grid-column: 1 / -1; }
}
/* الثلاثية مكتملة (كتب + دورات ظاهرة) ⇒ صف واحد من ثلاث بطاقات */
@media (min-width: 768px) {
  .rx-choice-grid:has(.rx-card-book):has(.rx-card-dev:not(.rx-dev-hidden)) .rx-choice-card:not(.rx-card-uni) { grid-column: span 2; }
}
/* بقيت «كل شيء تحتاجه» وحدها ⇒ تمتد بعرض كامل بدل نصف يتيم */
@media (min-width: 768px) {
  .rx-choice-grid:not(:has(.rx-card-book)):has(.rx-card-dev.rx-dev-hidden) .rx-card-svc { grid-column: 1 / -1; }
}
/* 🧭 [ORDER-FLOW 2026-09-01] بطاقة «الخدمات» انتقلت لمربع «الخدمات الجامعية»
   بخدماتي — تبقى بالDOM (عقد data-tile-key/test_one_door) وتُخفى هنا كنمط
   rx-dev-hidden حرفياً، مع التئام الشبكة للحالات الثلاث بعد غيابها البصري:
   (1) دورات ظاهرة بلا كتب ⇒ دورات بعرض كامل بدل نصف يتيم.
   (2) كتب ظاهرة ودورات مخفية ⇒ كتب بعرض كامل.
   (3) كتب+دورات ظاهرتان ⇒ نصفان (تدهس قاعدة «الثلاثية» span 2 أعلاه).
   للتراجع: احذف الكتلة + extraClass بrx-home.js. */
.rx-choice-grid .rx-choice-card.rx-svc-hidden { display: none; }
@media (min-width: 768px) {
  .rx-choice-grid:has(.rx-card-svc.rx-svc-hidden):not(:has(.rx-card-book)) .rx-card-dev:not(.rx-dev-hidden) { grid-column: 1 / -1; }
  .rx-choice-grid:has(.rx-card-svc.rx-svc-hidden):has(.rx-card-dev.rx-dev-hidden) .rx-card-book { grid-column: 1 / -1; }
  .rx-choice-grid:has(.rx-card-svc.rx-svc-hidden):has(.rx-card-book):has(.rx-card-dev:not(.rx-dev-hidden)) .rx-choice-card:not(.rx-card-uni) { grid-column: span 3; }
}

/* ── (ج) جسم البطاقة ─────────────────────────────────────────────────────
   جوال: البطاقة صف flex والجسم في التدفق — تنمو مع تكبير خط النظام
   (height ثابت + overflow:hidden كان يقص النص عند سلّم خط أندرويد ≥1.7).
   ديسكتوب: ارتفاعات ثابتة (صفر CLS) وهامش النمو ≈ ضعفا المحتوى المقصوص. */
.rx-choice-card {
  border-radius: 16px;
  border-color: rgba(168, 85, 247, .30);
  box-shadow: 0 6px 18px rgba(8, 4, 20, .35);
}
@media (max-width: 767px) {
  .rx-choice-card { display: flex; align-items: center; min-height: 112px; height: auto; }
}
@media (min-width: 768px) {
  .rx-choice-card { min-height: 0; height: 190px; border-radius: 18px; }
}
@media (min-width: 768px) {
  .rx-card-uni { height: 210px; }
}
@media (min-width: 1200px) {
  .rx-card-uni { height: 240px; }
}
/* هواتف عرضية/شاشات قصيرة: لا بطاقة تلتهم نصف الارتفاع */
@media (min-width: 768px) and (max-height: 500px) {
  .rx-choice-card { height: 140px; }
}
@media (min-width: 768px) and (max-height: 500px) {
  .rx-card-uni { height: 160px; }
}

/* ── (د) الطباعة والنص: يمين مع سهم يسار (جوال) / أسفل (ديسكتوب) ──────────
   جوال: الجسم relative في التدفق (لا absolute) — التوسيط الرأسي من flex
   البطاقة، وz-index:3 يعيده فوق السكريم (scrim z:2 يدفن التدفق بلا رفع).
   الحشوة اليسرى 62px = ممر قرص السهم. */
@media (max-width: 767px) {
  #page-requests .rx-choice-body {
    position: relative;
    z-index: 3;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    transform: none;
    flex: 1 1 auto;
    min-width: 0;
    padding: 16px 18px 16px 62px;
  }
}
@media (min-width: 768px) {
  #page-requests .rx-choice-body {
    right: 20px;
    left: 68px;
    top: auto;
    bottom: 16px;
    transform: none;
  }
}
@media (min-width: 768px) {
  #page-requests .rx-card-uni .rx-choice-body {
    right: 24px;
    left: auto;
    bottom: 20px;
    max-width: min(72%, 620px);
  }
}
.rx-choice-title {
  font-size: .98rem;
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
@media (max-width: 359px) {
  .rx-choice-title { font-size: .92rem; }
}
@media (min-width: 768px) {
  .rx-choice-title { font-size: 1.06rem; margin-bottom: 5px; }
}
@media (min-width: 768px) {
  .rx-card-uni .rx-choice-title { font-size: clamp(1.15rem, 1.5vw, 1.4rem); }
}
.rx-choice-desc {
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  font-size: .76rem;
  color: var(--rx-desc-color, #ecdcff);   /* واعٍ بالثيم — عقد الطبقة 108 */
}
/* سطران بالديسكتوب — قصّ السطر الواحد كان يبتر وصف الكتب بمنتصف كلمة («أ…») */
@media (min-width: 768px) {
  .rx-choice-desc { font-size: .82rem; -webkit-line-clamp: 2; }
}
@media (min-width: 768px) {
  .rx-card-uni .rx-choice-desc { -webkit-line-clamp: 2; font-size: .9rem; }
}

/* ── (هـ) السكريم: تعتيم جهة النص (يمين RTL) بدل بقعة عشوائية ─────────────
   اللون من --rx-scrim-rgb (عقد الطبقة 108): داكن بpurple، وشاح أبيض بالفاتح
   (صور الفاتح ثلجية والنص فيه داكن). الهندسة الجديدة: البداية (يمين) حيث
   النص + قاع البطاقة بالديسكتوب — كان الوشاح الأفقي على جهة السهم خطأً.
   قاعدتا الفاتح المكرّرتان أدناه ضروريتان: تجاوز 108 بالفاتح (0,2,0) يدهس
   القاعدة العارية — التكرار بنفس التخصيص وترتيب مصدر لاحق يعيد الغلبة. */
.rx-choice-scrim {
  background:
    linear-gradient(to left, rgba(var(--rx-scrim-rgb, 12, 6, 26), .86) 0%, rgba(var(--rx-scrim-rgb, 12, 6, 26), .48) 55%, rgba(var(--rx-scrim-rgb, 12, 6, 26), .18) 100%);
}
:root[data-theme="light"] .rx-choice-scrim {
  background:
    linear-gradient(to left, rgba(var(--rx-scrim-rgb, 245, 247, 250), .86) 0%, rgba(var(--rx-scrim-rgb, 245, 247, 250), .48) 55%, rgba(var(--rx-scrim-rgb, 245, 247, 250), .18) 100%);
}
@media (min-width: 768px) {
  .rx-choice-scrim {
    background:
      linear-gradient(to top, rgba(var(--rx-scrim-rgb, 12, 6, 26), .92) 0%, rgba(var(--rx-scrim-rgb, 12, 6, 26), .42) 40%, rgba(var(--rx-scrim-rgb, 12, 6, 26), .10) 68%, rgba(var(--rx-scrim-rgb, 12, 6, 26), .02) 100%),
      linear-gradient(to left, rgba(var(--rx-scrim-rgb, 12, 6, 26), .50) 0%, rgba(var(--rx-scrim-rgb, 12, 6, 26), .12) 45%, rgba(var(--rx-scrim-rgb, 12, 6, 26), 0) 70%);
  }
}
@media (min-width: 768px) {
  :root[data-theme="light"] .rx-choice-scrim {
    background:
      linear-gradient(to top, rgba(var(--rx-scrim-rgb, 245, 247, 250), .92) 0%, rgba(var(--rx-scrim-rgb, 245, 247, 250), .42) 40%, rgba(var(--rx-scrim-rgb, 245, 247, 250), .10) 68%, rgba(var(--rx-scrim-rgb, 245, 247, 250), .02) 100%),
      linear-gradient(to left, rgba(var(--rx-scrim-rgb, 245, 247, 250), .50) 0%, rgba(var(--rx-scrim-rgb, 245, 247, 250), .12) 45%, rgba(var(--rx-scrim-rgb, 245, 247, 250), 0) 70%);
  }
}

/* ── (و) السهم: قرص زجاجي بمحاذاة النص لا طائراً بأعلى الصورة ───────────── */
#page-requests .rx-choice-arrow {
  top: 50%;
  bottom: auto;
  left: 12px;
  transform: translateY(-50%);
  width: 38px;
  height: 38px;
  background: rgba(15, 8, 32, .50);
  border: 1px solid rgba(251, 191, 36, .45);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
/* الفاتح: قرص فاتح وحدّ بنفسجي (الأيقونة #7c3aed من 108) — قاعدتان مفردتان */
:root[data-theme="light"] #page-requests .rx-choice-arrow { background: rgba(255, 255, 255, .65); }
:root[data-theme="light"] #page-requests .rx-choice-arrow { border-color: rgba(124, 58, 237, .40); }
@media (min-width: 768px) {
  #page-requests .rx-choice-arrow {
    top: auto;
    bottom: 16px;
    left: 16px;
    transform: none;
    width: 40px;
    height: 40px;
  }
}
@media (min-width: 768px) {
  #page-requests .rx-card-uni .rx-choice-arrow { bottom: 20px; }
}

/* شارة «قريباً ✨» — محاذاة أنعم + line-height حتمي (كان normal فيتضخم بالإيموجي) */
.rx-choice-badge { top: 12px; inset-inline-start: 12px; line-height: 1.25; }
/* جوال: الشارة إلى الزاوية اليسرى (جهة السهم) — بقاؤها يميناً كان يزاحم
   العنوان الموسّط رأسياً على بطاقة الكتب بوضع «قريباً» (تصادم مثبت بالقياس) */
@media (max-width: 767px) {
  .rx-choice-badge { inset-inline-start: auto; inset-inline-end: 12px; }
}
/* وممر علوي للبطاقة ذات الشارة: صفر تقاطع صندوقي حتى مع تكبير الخط
   (بلا :has القديم يبقى تلامس ~1px غير مرئي — تدهور رشيق) */
@media (max-width: 767px) {
  #page-requests .rx-choice-card:has(.rx-choice-badge) .rx-choice-body { padding-top: 42px; }
}

/* ── (ز) هوفر وتركيز: رفعة خفيفة + انزلاق السهم + تقريب الصورة ──────────── */
@media (hover: hover) and (pointer: fine) {
  .rx-choice-card {
    transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
  }
  .rx-choice-card:hover {
    transform: translateY(-4px);
    border-color: var(--rx-hover-bd, rgba(168, 85, 247, .55));
    box-shadow: 0 16px 36px rgba(8, 4, 20, .5), 0 4px 14px rgba(168, 85, 247, .28);
  }
  .rx-choice-img { transition: transform .4s ease; }
  .rx-choice-card:hover .rx-choice-img { transform: scale(1.05); }
  #page-requests .rx-choice-arrow { transition: transform .22s ease, background-color .22s ease; }
  /* مرساة #page-requests إلزامية: قواعد السهم الأساسية (1,1,0) كانت تدهس
     نسخة (0,3,0) فيموت الانزلاق والتظليل بكل الثيمات */
  #page-requests .rx-choice-card:hover .rx-choice-arrow { transform: translateX(-4px); background-color: rgba(251, 191, 36, .22); }
  :root[data-theme="light"] #page-requests .rx-choice-card:hover .rx-choice-arrow { background-color: rgba(124, 58, 237, .14); }
  /* ضغطة فوق الهوفر: بدونها :hover (نفس التخصيص، مصدر لاحق) يبتلع ضغطة 103 */
  .rx-choice-card:active { transform: translateY(-1px) scale(.988); }
}
.rx-choice-card:focus-visible { outline: 3px solid #a855f7; outline-offset: 2px; }

/* ── (ح) الثيم الفاتح: قواعد مفردة (عقد الطبقة 99) ──────────────────────── */
:root[data-theme="light"] .rx-choice-card { border-color: rgba(124, 58, 237, .32); }
:root[data-theme="light"] .rx-choice-card { box-shadow: 0 6px 18px rgba(84, 52, 160, .16); }
/* هوفر الفاتح: قاعدتا السكون أعلاه (0,3,0) كانتا تكبتان هوفر (0,2,0) فيرتفع
   الكرت بلا أي استجابة حدّ/ظل — (0,4,0) تعيد الاستجابة بقيم فاتحة */
@media (hover: hover) and (pointer: fine) {
  :root[data-theme="light"] .rx-choice-card:hover { border-color: var(--rx-hover-bd, rgba(124, 58, 237, .45)); }
}
@media (hover: hover) and (pointer: fine) {
  :root[data-theme="light"] .rx-choice-card:hover { box-shadow: 0 16px 36px rgba(84, 52, 160, .22), 0 4px 14px rgba(124, 58, 237, .18); }
}
/* وصف البطاقات بالفاتح: درجة أدكن فوق أسطع مناطق الثلج (كان قرب حد القراءة) */
:root[data-theme="light"] .rx-choice-desc { color: #2f2145; }
:root[data-theme="light"] #page-requests .gld-resume-chip { background: rgba(124, 58, 237, .08); }
/* أيقونة الرقاقة الذهبية على أرضية الفاتح ≈1.8:1 ⇒ كهرماني داكن */
:root[data-theme="light"] #page-requests .gld-resume-chip i { color: #b45309; }

/* ── (ط) حركة مخفّضة: تعطيل شامل لحركات STORE-GLOW ──────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .rx-choice-card,
  .rx-choice-img,
  #page-requests .rx-choice-arrow { transition: none !important; }
}
@media (prefers-reduced-motion: reduce) {
  .rx-choice-card:hover { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .rx-choice-card:hover .rx-choice-img { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  #page-requests .rx-choice-card:hover .rx-choice-arrow { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .rx-choice-card:active { transform: none; }
}

/* أزرار بنر الحساب على الجوال الضيق: «تسجيل الدخول» كان يلتف سطرين */
@media (max-width: 480px) {
  #page-requests .gld-banner .gp-banner-btn { padding: 0 14px; font-size: .9rem; white-space: nowrap; }
}

/* الجوال الأضيق ≤360: تكثيف القمة — بلا هذا لا تلوح أي بطاقة بأول شاشة للضيف
   (padding-block فقط: الشورتهاند يدهس padding-inline-start:44 لزر الطيّ) */
@media (max-width: 360px) {
  #page-requests .gld-banner { padding-block: 12px; margin-bottom: 10px; }
}
@media (max-width: 360px) {
  #page-requests .gld-resume-chip { margin-bottom: 10px; }
}
@media (max-width: 360px) {
  #page-requests .gld-uni-card { margin-bottom: 10px; }
}

/* بطاقة الجامعة على الجوال: إزاحة «تغيير الجامعة» (54px محاذاة الشعار) كانت
   تعلّق الزر بالفراغ حين يسقط الشعار (onerror) — الإزاحة فقط مع شعار حي */
@media (max-width: 639px) {
  #page-requests .gld-uni-change { margin-inline-start: 0; }
}
@media (max-width: 639px) {
  #page-requests .gld-uni-card:has(.gld-uni-logo) .gld-uni-change { margin-inline-start: 54px; }
}
@media (max-width: 639px) {
  #page-requests .gld-uni-card { padding: 12px 14px; }
}


/* --------------- source: assets/css/122-one-choice.css --------------- */
/* 🚀 [TURBO-SILK 2026-09-01 م2] هذه الطبقة صارت تُبنى ضمن bundle-late.css (لا سطر <link>
   مستقل لها في index.html بعد اليوم — الترتيب محفوظ حرفياً داخل LATE_MANIFEST).
   للإزالة: احذف بندها من LATE_MANIFEST في tools/build-css.py + هذا الملف + أعد التوليد.
   أي تعليمة قديمة أدناه بنص «احذف سطر الlink/رابطه» تعني ذلك. */
/* ═══════════════════════════════════════════════════════════════════════════
 * 🛒 122-one-choice.css — ONE-CHOICE 2026-08-10 · بطاقة الخيار الواحد (PH1)
 * ───────────────────────────────────────────────────────────────────────────
 * الطبقة 122 (121 محجوزة لـFA subset) — بعد الطبقة 120 داخل bundle-late
 * (تكسب نزاعات التخصيص المتساوي مع من قبلها بترتيب المصدر). 🚀 [TURBO-SILK م2]
 * عرف «الطبقات ≥110 روابط مستقلة» تجاوَزه bundle-late عمداً: الحزمة الحاجبة
 * القديمة (build-css.mjs) تبقى 95→109 فقط، والطبقات 110+ صارت حزمة ثالثة
 * منفصلة بنفس ترتيب الروابط الحرفي (LATE_MANIFEST بtools/build-css.py).
 *
 * النطاق الصارم: كل قاعدة تحت .poster-cell / .cc-info حصراً — خمسة أسطح أخرى
 * تشارك .poster-action-btn (dev-shelf/dashboard/بوابات) وستتسرب إليها أي
 * قاعدة مطلقة. بطاقات اللوحة .dash-poster-card بلا .poster-cell أصلاً = معفاة
 * بنيوياً.
 *
 * ملكية .poster-cell انتقلت من حقن fl-catalog.js (حُذف ستايله المحقون) إلى
 * هذه الطبقة. مخطط order يُكمل عقد 120 (.cc-info .gd-trial-btn{order:1}):
 * عنوان 0 ← تجريبي 1 ← الإجراء الواحد 2 ← السعر 3 ← المقاعد/الحالة 4 ←
 * الوصف 5 ← الميتا 6. تثبيت كتلة الأزرار: margin-bottom:auto على العنوان
 * (⛔ ممنوع إجبار ارتفاعات صفوف الشبكة المتساوية — يفجّر الصفوف القصيرة).
 *
 * التباين AA≥4.5:1 مقاس فعلياً بالثيمين (tools/cc-contrast-check.py —
 * GREP-PROOFS) — سابقة chip الخصم عند 1.9:1 على الفاتح لا تتكرر: كل لون نص
 * صريح بالثيمين، لا opacity على نصوص المال (.cc-price-was بلون صريح).
 * للتراجع: احذف السطر من index.html — تعود البطاقات بلا تجميل (الوظيفة تعمل).
 * ═══════════════════════════════════════════════════════════════════════════ */

/* ── التوكنات (نمط الطبقة 108: بنفسجي افتراضي + كتلة light) ────────────── */
:root {
  --cc-panel-bg: rgba(24, 18, 40, 0.86);      /* لوح شبه معتم فوق الخلفية الكونية */
  --cc-panel-border: rgba(168, 85, 247, 0.28);
  --cc-title: #f5f1fd;
  --cc-text: #d9d2ea;
  --cc-price-now: #e9d5ff;                    /* 12.2:1 على اللوح */
  --cc-price-was: #a89bc4;                    /* 4.9:1 — لون صريح لا opacity */
  --cc-chip-bg: #fde68a;
  --cc-chip-text: #451a03;                    /* 9.8:1 على الشريحة */
  --cc-saved: #86efac;                        /* 9.4:1 */
  --cc-seats: #d9d2ea;
  --cc-seats-low: #fcd34d;                    /* 8.6:1 */
  --cc-seats-out: #fca5a5;                    /* 7.5:1 */
  --cc-seats-new: #86efac;
  --cc-demand-bar-bg: rgba(255, 255, 255, 0.12);
  --cc-demand-bar-fill: linear-gradient(90deg, #a855f7, #7c3aed);
  --cc-demand-done: #86efac;
}
:root[data-theme="light"] {
  --cc-panel-bg: rgba(255, 255, 255, 0.92);
  --cc-panel-border: rgba(124, 58, 237, 0.25);
  --cc-title: #241a3d;
  --cc-text: #453a60;
  --cc-price-now: #6d28d9;                    /* 6.6:1 على الأبيض */
  --cc-price-was: #6b6280;                    /* 4.9:1 */
  --cc-chip-bg: #b45309;
  --cc-chip-text: #ffffff;                    /* 4.8:1 */
  --cc-saved: #15803d;                        /* 4.7:1 */
  --cc-seats: #453a60;
  --cc-seats-low: #b45309;
  --cc-seats-out: #b91c1c;
  --cc-seats-new: #15803d;
  --cc-demand-bar-bg: rgba(109, 40, 217, 0.12);
  --cc-demand-bar-fill: linear-gradient(90deg, #7c3aed, #6d28d9);
  --cc-demand-done: #15803d;
}

/* ── الخلية والكتلة ─────────────────────────────────────────────────────── */
.poster-cell { min-width: 0; display: flex; flex-direction: column; gap: 8px; }

.poster-cell .cc-info {
  display: flex;
  flex-direction: column;
  gap: 7px;
  flex: 1;                                    /* خلايا الصف الواحد تتساوى بلا إجبار ارتفاعات الصفوف */
  background: var(--cc-panel-bg);
  border: 1px solid var(--cc-panel-border);
  border-radius: 14px;
  padding: 10px 12px 12px;
  direction: rtl;
}

/* مخطط order — يكمل قاعدة 120 (.gd-trial-btn{order:1}) */
.cc-info .cc-title { order: 0; margin-bottom: auto; }
.cc-info .poster-action-btn:not(.gd-trial-btn) { order: 2; }
.cc-info .cc-price { order: 3; }
.cc-info .cc-state { order: 4; }
.cc-info .cc-desc { order: 5; }
.cc-info .poster-meta { order: 6; }

.cc-info .cc-title {
  font-size: 0.95rem;
  font-weight: 800;
  line-height: 1.6;
  color: var(--cc-title);
  /* 🛒 [G5-FIX #19] عقد LEGEND-LANE §3-2 (توسيط عناوين بطاقات الهَب) كان على
     .poster-card .poster-title بـ120 — العنوان انتقل للشقيقة .cc-info فسقط
     التوسيط وورث RTL يميناً بينما بطاقات dev-shelf القديمة بقيت موسّطة. */
  text-align: center;
}
.cc-info .cc-desc {
  font-size: 0.74rem;
  line-height: 1.7;
  color: var(--cc-text);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.cc-info .poster-meta { color: var(--cc-text); font-size: 0.72rem; }
.cc-info .poster-action-btn { width: 100%; margin: 0; }

/* ── Slot السعر: الحالي كبير عريض + القديم مشطوب بلون صريح + chip ممتلئ ── */
.cc-info .cc-price {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.cc-info .cc-price:empty,
.cc-info .cc-state:empty { display: none; }
.cc-info .cc-price-now {
  font-size: 1.15rem;
  font-weight: 900;
  color: var(--cc-price-now);
  white-space: nowrap;
}
.cc-info .cc-price-was {
  font-size: 0.82rem;
  font-weight: 700;
  text-decoration: line-through;
  color: var(--cc-price-was);                 /* لون صريح — لا opacity */
  white-space: nowrap;
}
.cc-info .cc-chip {
  font-size: 0.7rem;
  font-weight: 800;
  background: var(--cc-chip-bg);
  color: var(--cc-chip-text);
  border: 1px solid var(--cc-chip-bg);        /* إطار ممتلئ */
  border-radius: 7px;
  padding: 2px 8px;
  white-space: nowrap;
}
.cc-info .cc-saved {
  font-size: 0.74rem;
  font-weight: 800;
  color: var(--cc-saved);
  white-space: nowrap;
}

/* ── Slot الحالة: المقاعد + قياس الإقبال ────────────────────────────────── */
.cc-info .cc-state { display: flex; flex-direction: column; gap: 5px; }
.cc-info .cc-seats { font-size: 0.76rem; font-weight: 700; color: var(--cc-seats); }
.cc-info .cc-seats-low { color: var(--cc-seats-low); }
.cc-info .cc-seats-out { color: var(--cc-seats-out); }
.cc-info .cc-seats-new { color: var(--cc-seats-new); }
.cc-info .cc-coming-at { font-size: 0.74rem; font-weight: 700; color: var(--cc-text); }

.cc-info .cc-demand-phrase {
  font-size: 0.76rem;
  font-weight: 700;
  line-height: 1.8;
  color: var(--cc-text);
}
.cc-info .cc-demand-bar {
  height: 6px;
  border-radius: 4px;
  background: var(--cc-demand-bar-bg);
  overflow: hidden;
}
.cc-info .cc-demand-bar span {
  display: block;
  height: 100%;
  border-radius: 4px;
  background: var(--cc-demand-bar-fill);
}
.cc-info .cc-demand-count { font-size: 0.7rem; font-weight: 700; color: var(--cc-text); }
.cc-info .cc-demand-done { font-size: 0.78rem; font-weight: 800; color: var(--cc-demand-done); }

/* أزرار الحالات المعطلة — تلوين هادئ فوق أنماط المنصة القائمة */
.cc-info .poster-action-btn.cc-btn-soon,
.cc-info .poster-action-btn.cc-btn-out,
.cc-info .poster-action-btn.cc-btn-off { opacity: 0.75; cursor: not-allowed; }

/* ── سكيلتون الخلية (CLS≈0 — ارتفاع كتلة المعلومات محجوز) ──────────────── */
.poster-cell .cc-info-skeleton {
  min-height: 132px;
  background: var(--cc-panel-bg);
  border: 1px solid var(--cc-panel-border);
  border-radius: 14px;
}

/* ── تخطيط المادة الواحدة/المادتين: بطاقة مميزة موسّطة بعرض مقيد ────────── */
.poster-grid[data-cc-count="1"],
.poster-grid[data-cc-count="2"] {
  grid-template-columns: minmax(0, 300px);
  justify-content: center;
}
.poster-grid[data-cc-count="2"] { grid-template-columns: repeat(2, minmax(0, 280px)); }
@media (max-width: 640px) {
  .poster-grid[data-cc-count="2"] { grid-template-columns: minmax(0, 300px); }
}
.poster-grid[data-cc-count="1"] .cc-info .cc-title,
.poster-grid[data-cc-count="2"] .cc-info .cc-title { font-size: 1.05rem; }

/* الـhero العام يتراجع حين المنتج نجم الشاشة (الصنف من request-hub.js) */
.rh-hero.cc-solo { padding: 10px 0 4px; }
.rh-hero.cc-solo .rh-hero-bg { opacity: 0.35; }
.rh-hero.cc-solo .rh-hero-title { font-size: 1.05rem; }
.rh-hero.cc-solo .rh-hero-desc { display: none; }


/* --------------- source: assets/css/123-campus-bloom.css --------------- */
/* 🚀 [TURBO-SILK 2026-09-01 م2] هذه الطبقة صارت تُبنى ضمن bundle-late.css (لا سطر <link>
   مستقل لها في index.html بعد اليوم — الترتيب محفوظ حرفياً داخل LATE_MANIFEST).
   للإزالة: احذف بندها من LATE_MANIFEST في tools/build-css.py + هذا الملف + أعد التوليد.
   أي تعليمة قديمة أدناه بنص «احذف سطر الlink/رابطه» تعني ذلك. */
/* ═══════════════════════════════════════════════════════════════════════════
 * 🌸 123-campus-bloom.css — CAMPUS-BLOOM 2026-08-22 · الجامعة ← الكليات ← مواد الكلية
 * ───────────────────────────────────────────────────────────────────────────
 * الطبقة 123 (أعلى رقم قائم 122) — بعد الطبقة 122 داخل bundle-late (🚀 TURBO-SILK
 * م2: الطبقات 110+ صارت حزمة ثالثة بنفس ترتيب الروابط الحرفي — LATE_MANIFEST).
 * ⛔ ليست في build-css.mjs (الحزمة الحاجبة القديمة 95→109 فقط). ⛔ بلا علامة القسر (important) · لا لمس body::before/::after/.h-toast
 * · سلّم z-index ≤1300 (شيتات 1200 كورقة الأمنية القائمة) · لا لمس حشوات %
 *   🧵 [OMNI-FIT 2026-08-22 §6-د] صار z بمتغيرات السلّم: --z-dock للزر العائم و--z-sheet للشيتات
 * في .ua-tile/.ua-logo (12%/5.5% تبقى في 114).
 *
 * الكسور المسموحة (القائمة المغلقة للمنصة — ⛔ 900/1200 ممنوعان):
 *   (max-width:599.98px) · (min-width:600px) · (min-width:768px) · (min-width:1024px)
 *   · (max-width:480px) · (max-width:390px) · (max-width:360px) · (max-width:340px)
 *
 * §1 نظام الكثافة STU-02: سمة data-cb على .ua-grid/.cb-college-grid (الدلاء الستة)
 *    بمتغيرات لكل دلو؛ بلا السمة = النمط الحالي حرفياً (أمان تراجعي — صفر قاعدة).
 *    الشبكة Flex متمركزة (auto-fit بGrid لا يوسّط الصف الأخير — عقد UX-03).
 *    الأعمدة: <600 نتيجة واحدة عمود وإلا عمودان · 600–767 ≤3 · 768–1023 ≤4 · ≥1024 ≤6.
 * §2 بطاقة الجامعة: .ua-cell لوح البطاقة والاسم داخله (حتى 4 أسطر)؛ .ua-tile
 *    مربع الشعار داخله بلا حد بعرض مشتق من --cb-logo (الشعار 76% منه — 114).
 * §3 شاشة الكليات: رأس سياقي صغير (لا Hero) + بطاقات الكليات.
 * §4 شاشة مواد الكلية: شريط السياق + «تغيير الكلية» + CTA الأمنية (primary/inline/
 *    sticky) + بحث المواد.
 * §5 ورقة الأمنية (الحقول الجديدة + Dialog على الكمبيوتر) · §6 شيت «طلباتي» +
 *    Timeline + شارات الحالة · §7 الثيم الفاتح · §8 تقليل الحركة.
 * للتراجع: احذف السطر من index.html — تعود الشاشات بلا تجميل (الوظيفة تعمل).
 * ═══════════════════════════════════════════════════════════════════════════ */

/* ── §1 الدلاء: متغيرات (الكمبيوتر = الحدود العليا من جدول STU-02) ─────────── */
.ua-grid[data-cb],
.cb-college-grid[data-cb] {
  --cb-card-max: 175px;
  --cb-card-min: 120px;
  --cb-logo: 78px;
  --cb-name-fs: .85rem;
  --cb-gap: 12px;
  --cb-cols: 2;
}
.ua-grid[data-cb="spotlight"]   { --cb-card-max: 300px; --cb-logo: 124px; --cb-name-fs: 1.05rem; --cb-gap: 16px; --cb-cols: 1; }
.ua-grid[data-cb="duo"]         { --cb-card-max: 280px; --cb-logo: 112px; --cb-name-fs: 1rem;    --cb-gap: 16px; --cb-cols: 2; }
.ua-grid[data-cb="showcase"]    { --cb-card-max: 240px; --cb-logo: 100px; --cb-name-fs: .95rem;  --cb-gap: 14px; --cb-cols: 2; }
.ua-grid[data-cb="comfortable"] { --cb-card-max: 205px; --cb-logo: 90px;  --cb-name-fs: .9rem;   --cb-gap: 14px; --cb-cols: 2; }
.ua-grid[data-cb="standard"]    { --cb-card-max: 175px; --cb-logo: 78px;  --cb-name-fs: .85rem;  --cb-gap: 12px; --cb-cols: 2; }
.ua-grid[data-cb="compact"]     { --cb-card-max: 155px; --cb-logo: 68px;  --cb-name-fs: .8rem;   --cb-gap: 10px; --cb-cols: 2; }

/* بطاقات الكليات أعرض (أسماء طويلة) — نفس الدلاء والأعمدة */
.cb-college-grid[data-cb="spotlight"]   { --cb-card-max: 380px; --cb-gap: 16px; --cb-cols: 1; }
.cb-college-grid[data-cb="duo"]         { --cb-card-max: 320px; --cb-gap: 16px; --cb-cols: 2; }
.cb-college-grid[data-cb="showcase"]    { --cb-card-max: 280px; --cb-gap: 14px; --cb-cols: 2; }
.cb-college-grid[data-cb="comfortable"] { --cb-card-max: 250px; --cb-gap: 14px; --cb-cols: 2; }
.cb-college-grid[data-cb="standard"]    { --cb-card-max: 225px; --cb-gap: 12px; --cb-cols: 2; }
.cb-college-grid[data-cb="compact"]     { --cb-card-max: 205px; --cb-gap: 10px; --cb-cols: 2; }

/* الشبكة: Flex متمركزة — الصف الأخير متمركز، لا بطاقة ملتصقة بالطرف */
.ua-grid[data-cb],
.cb-college-grid[data-cb] {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: stretch;
  gap: var(--cb-gap);
  direction: inherit;
}
.ua-grid[data-cb] > .ua-cell,
.ua-grid[data-cb] > .ua-skel,
.cb-college-grid[data-cb] > .cb-college,
.cb-college-grid[data-cb] > .cb-college-skel {
  flex: 0 0 auto;
  box-sizing: border-box;
  width: min(var(--cb-card-max), calc((100% - (var(--cb-cols) - 1) * var(--cb-gap)) / var(--cb-cols)));
  min-width: 0;
}

/* الأعمدة بالكسور المغلقة */
@media (min-width: 600px) {
  .ua-grid[data-cb="showcase"], .ua-grid[data-cb="comfortable"], .ua-grid[data-cb="standard"], .ua-grid[data-cb="compact"],
  .cb-college-grid[data-cb="showcase"], .cb-college-grid[data-cb="comfortable"], .cb-college-grid[data-cb="standard"], .cb-college-grid[data-cb="compact"] {
    --cb-cols: 3;
  }
}
@media (min-width: 768px) {
  .ua-grid[data-cb="showcase"], .ua-grid[data-cb="comfortable"], .ua-grid[data-cb="standard"], .ua-grid[data-cb="compact"],
  .cb-college-grid[data-cb="showcase"], .cb-college-grid[data-cb="comfortable"], .cb-college-grid[data-cb="standard"], .cb-college-grid[data-cb="compact"] {
    --cb-cols: 4;
  }
}
@media (min-width: 1024px) {
  .ua-grid[data-cb="comfortable"], .ua-grid[data-cb="standard"], .ua-grid[data-cb="compact"] { --cb-cols: 6; }
  .cb-college-grid[data-cb="comfortable"], .cb-college-grid[data-cb="standard"], .cb-college-grid[data-cb="compact"] { --cb-cols: 5; }
}
/* الهاتف: الشعار ≥72px للدلاء 1–6 و56–60px للكثيف؛ مواد الكثيف أصغر */
@media (max-width: 599.98px) {
  .ua-grid[data-cb="standard"] { --cb-logo: 72px; }
  .ua-grid[data-cb="compact"]  { --cb-logo: 58px; --cb-name-fs: .76rem; --cb-gap: 8px; }
}
/* 320px / Zoom 200% ⇒ عمود واحد تلقائياً */
@media (max-width: 340px) {
  .ua-grid[data-cb], .cb-college-grid[data-cb] { --cb-cols: 1; }
  .ua-grid[data-cb] { --cb-card-max: 100%; }
  .cb-college-grid[data-cb] { --cb-card-max: 100%; }
}

/* ── §2 بطاقة الجامعة: الخلية لوح البطاقة والاسم داخلها ──────────────────── */
.ua-grid[data-cb] .ua-cell {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 10px 10px 12px;
  border-radius: var(--hu-r-lg, 20px);
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.ua-grid[data-cb] .ua-cell:hover { transform: translateY(-2px); box-shadow: 0 10px 26px rgba(0, 0, 0, .26); border-color: var(--primary); }
.ua-grid[data-cb] .ua-cell:focus-within { border-color: var(--primary); }
/* مربع الشعار داخل اللوح: عرضه مشتق من --cb-logo — الشعار 76% من صندوق محتوى
   المربع، وحشوة المربع 12% تُحلّ على عرض الكتلة الحاوية (اللوح) لا على عرضه ⇒
   المحتوى = العرض − 24% من اللوح ⇒ العرض = --cb-logo ÷ 0.76 + 24%. عند السقف 100%
   (الهاتف) الشعار ≈ 0.58 × عرض اللوح (≥72px للدلاء 1–6). مربع (aspect-ratio من 114)، بلا حد. */
.ua-grid[data-cb] .ua-tile {
  width: min(100%, calc(var(--cb-logo) / .76 + 24%));
  margin: 0 auto;
  border: 0;
  box-shadow: none;
  border-radius: var(--hu-r-md, 16px);
}
.ua-grid[data-cb] .ua-tile:hover { transform: none; box-shadow: none; }
.ua-grid[data-cb] .ua-tile:active { transform: scale(.97); }
.ua-grid[data-cb] .ua-logo { max-width: 100%; }
.ua-grid[data-cb] .ua-mono { font-size: calc(var(--cb-logo) * .3); }
.ua-grid[data-cb] .ua-name {
  width: 100%;
  margin-top: 8px;
  font-size: var(--cb-name-fs);
  font-weight: 600;
  line-height: 1.45;
  -webkit-line-clamp: 4;
  cursor: pointer;
}
.ua-grid[data-cb="spotlight"] .ua-name, .ua-grid[data-cb="duo"] .ua-name { font-weight: 700; }
.ua-colcount {
  margin-top: 4px;
  font-size: .72rem;
  color: var(--text-secondary);
  text-align: center;
  line-height: 1.3;
}
.ua-grid[data-cb="compact"] .ua-colcount { font-size: .66rem; }
.ua-grid[data-cb] .ua-code-row { margin-top: 4px; }
/* الشارات تتبع اللوح لا مربع الشعار (مربع الشعار صار أصغر من البطاقة) */
.ua-grid[data-cb] .ua-count { top: 8px; inset-inline-start: 8px; }
.ua-grid[data-cb] .ua-you   { top: 8px; inset-inline-end: 8px; }
.ua-grid[data-cb] .ua-cell > .ua-tile .ua-count,
.ua-grid[data-cb] .ua-cell > .ua-tile .ua-you { position: absolute; }
/* الهيكل بنفس الدلو (CLS): خلية بأبعاد اللوح */
.ua-grid[data-cb] > .ua-skel { aspect-ratio: auto; height: calc(var(--cb-logo) / .76 + 96px); }

/* ── §3 شاشة الكليات: رأس سياقي صغير + البطاقات ────────────────────────── */
.cb-head { margin-bottom: 0; }
.cb-head .rh-topbar { margin-bottom: 12px; }
.cb-ctx {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  margin-bottom: 14px;
  border-radius: var(--hu-r-lg, 20px);
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  min-width: 0;
}
@supports (background: color-mix(in srgb, red 10%, blue)) {
  .cb-ctx {
    background: color-mix(in srgb, var(--ua-c1, var(--primary)) 8%, var(--bg-card));
    border-color: color-mix(in srgb, var(--ua-c1, var(--primary)) 28%, var(--border-color));
  }
}
.cb-ctx-logo {
  flex: 0 0 auto;
  width: 56px;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 16px;
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  padding: 6px;
  box-sizing: border-box;
}
@supports (background: color-mix(in srgb, red 10%, blue)) {
  .cb-ctx-logo {
    background: color-mix(in srgb, var(--ua-c1, var(--primary)) 14%, var(--bg-card));
    border-color: color-mix(in srgb, var(--ua-c1, var(--primary)) 32%, var(--border-color));
  }
}
.cb-ctx-logo .ua-logo { width: 100%; height: 100%; padding: 5.5%; box-shadow: none; }
.cb-ctx-logo .ua-mono { width: 80%; font-size: .95rem; }
.cb-ctx-text { flex: 1 1 auto; min-width: 0; }
.cb-ctx-uni {
  margin: 0;
  font-size: 1.08rem;
  font-weight: 800;
  color: var(--text-primary);
  line-height: 1.35;
  word-break: break-word;
}
.cb-ctx--college .cb-ctx-uni { font-size: .8rem; font-weight: 600; color: var(--text-secondary); }
.cb-ctx-college {
  margin: 2px 0 0;
  font-size: 1.08rem;
  font-weight: 800;
  color: var(--text-primary);
  line-height: 1.35;
  word-break: break-word;
}
.cb-ctx-sub { margin-top: 2px; font-size: .82rem; color: var(--text-secondary); }
.cb-ctx-count { font-weight: 700; color: var(--text-primary); }
/* عنوان الشاشة يستقبل التركيز بعد الانتقال (UX-02) — حلقة عند التنقل باللوحة فقط */
.cb-ctx-uni:focus, .cb-ctx-college:focus, .rh-hero-title:focus, #uaWishTitle:focus, #cbMineTitle:focus, .ua-wish-done-box:focus { outline: none; }
.cb-ctx-uni:focus-visible, .cb-ctx-college:focus-visible, .rh-hero-title:focus-visible { outline: 2px solid var(--primary); outline-offset: 4px; border-radius: 6px; }

.cb-change {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 44px;
  padding: 8px 14px;
  border-radius: 999px;
  background: var(--bg-card);
  border: 1.5px solid var(--border-color);
  color: var(--text-primary);
  font-family: inherit;
  font-size: .82rem;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  transition: border-color .18s ease, color .18s ease;
}
.cb-change:hover { border-color: var(--primary); color: var(--primary); }
.cb-change:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.cb-change i { color: var(--ua-c1, var(--primary)); }

.cb-college-grid { padding-bottom: 8px; }
.cb-college {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 8px;
  min-height: 44px;
  padding: 18px 12px 16px;
  border-radius: var(--hu-r-lg, 20px);
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  color: var(--text-primary);
  font-family: inherit;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
/* هدف لمس ≥44px مضمون (نمط ::before الشفاف القائم) */
.cb-college::before { content: ''; position: absolute; inset: -4px; border-radius: inherit; }
.cb-college:hover { transform: translateY(-2px); box-shadow: 0 10px 26px rgba(0, 0, 0, .26); border-color: var(--ua-c1, var(--primary)); }
.cb-college:active { transform: scale(.98); }
.cb-college:focus-visible { outline: 2px solid var(--ua-c1, var(--primary)); outline-offset: 2px; }
.cb-college-ico {
  width: 52px;
  height: 52px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 16px;
  font-size: 1.35rem;
  color: var(--ua-c1, var(--primary));
  background: rgba(127, 127, 127, .12);
}
@supports (background: color-mix(in srgb, red 10%, blue)) {
  .cb-college-ico { background: color-mix(in srgb, var(--ua-c1, var(--primary)) 14%, var(--bg-card)); }
}
.cb-college-name {
  font-size: .95rem;
  font-weight: 700;
  line-height: 1.45;
  word-break: break-word;
  overflow-wrap: anywhere;
}
.cb-college-meta {
  font-size: .78rem;
  font-weight: 600;
  color: var(--text-secondary);
}
.cb-college--empty .cb-college-meta { color: var(--text-muted); }
.cb-college--empty .cb-college-ico { opacity: .75; }
.cb-college-grid[data-cb="compact"] .cb-college { padding: 14px 10px 12px; gap: 6px; }
.cb-college-grid[data-cb="compact"] .cb-college-ico { width: 42px; height: 42px; font-size: 1.1rem; }
.cb-college-grid[data-cb="compact"] .cb-college-name { font-size: .85rem; }
.cb-college-skel {
  min-height: 150px;
  border-radius: var(--hu-r-lg, 20px);
  background: linear-gradient(100deg, var(--bg-card) 40%, var(--border-color) 50%, var(--bg-card) 60%);
  background-size: 200% 100%;
  animation: uaShimmer 1.4s ease infinite;
}
.cb-hint {
  margin: 14px 0 6px;
  padding: 10px 14px;
  border-radius: var(--hu-r-md, 16px);
  border: 1px dashed var(--border-color);
  color: var(--text-secondary);
  font-size: .82rem;
  line-height: 1.7;
  text-align: center;
}
.cb-hint i { color: var(--primary); }

/* ── §4 شاشة مواد الكلية ─────────────────────────────────────────────────── */
/* الجوال: عنوان مختصر + زر رجوع (الفتات الكاملة للكمبيوتر) */
@media (max-width: 599.98px) {
  .cb-head--posters .breadcrumb a,
  .cb-head--posters .breadcrumb .sep { display: none; }
  /* 🏛️ [CAMPUS-SWITCH 2026-09-02] كان الزر يُصغَّر لأيقونة+«تغيير» (font-size:0) — شكوى
     المالك «تصغير مبالغ فيه»: صار بنصه الكامل بكل المقاسات (الشريط الدائم فوقه هو المدخل
     الأساسي — هذا الزر ثانوي مكرِّر). */
  .cb-ctx--college .cb-change { padding: 8px 12px; font-size: .8rem; }
  .cb-ctx-logo { width: 48px; height: 48px; }
}
.cb-wish-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  border-radius: 999px;
  font-family: inherit;
  font-weight: 700;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: transform .18s ease, opacity .2s ease, border-color .18s ease;
}
.cb-wish-cta:active { transform: scale(.97); }
.cb-wish-cta:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }
.cb-wish-cta--inline {
  width: 100%;
  margin: 0 0 14px;
  padding: 10px 18px;
  background: var(--bg-card);
  border: 1.5px dashed var(--primary);
  color: var(--text-primary);
  font-size: .88rem;
}
.cb-wish-cta--inline i { color: var(--primary); }
.cb-wish-cta--inline:hover { background: rgba(168, 85, 247, .08); }
.cb-wish-cta--primary {
  width: 100%;
  margin: 0 0 16px;
  padding: 14px 20px;
  background: var(--gradient, var(--primary));
  border: none;
  color: #fff;
  font-size: 1rem;
  box-shadow: var(--glow, none);
}
.cb-wish-cta--sticky {
  position: fixed;
  /* 🧵 [OMNI-FIT 2026-08-22 §6-د] نطاق الرصيف بالسلّم (كان 1100 رقماً) */
  z-index: var(--z-dock, 1100);
  inset-inline-end: 16px;
  /* 🧵 [OMNI-FIT 2026-08-22 §6-ب] فوق رصيف الدفع + الشريط المقاس (كان calc(bottombar+env+10px) بلا إزاحة الرصيف) */
  bottom: var(--ui-float-above-dock, calc(var(--bottombar-height, 65px) + env(safe-area-inset-bottom, 0px) + 10px));
  transition: bottom .25s ease;
  padding: 10px 16px;
  background: var(--gradient, var(--primary));
  border: none;
  color: #fff;
  font-size: .86rem;
  box-shadow: 0 10px 26px rgba(0, 0, 0, .32);
  max-width: calc(100% - 32px);
}
.cb-wish-cta--sticky.is-hidden,
.cb-wish-cta--sticky.is-kbd {
  opacity: 0;
  pointer-events: none;
  transform: translateY(8px);
}
/* 🧵 [OMNI-FIT 2026-08-22 §6-ب] حُذفت كتلة ≥768 التي كانت تُنزل الزر إلى bottom:24px — الشريط السفلي ظاهر بكل المقاسات فكانت تغطيه */
/* الزر العائم لا يغطي آخر بطاقة (UX-03): حشوة سفلية ما دام مركَّباً */
html.cb-sticky-on #rh-root .poster-grid,
html.cb-sticky-on #rh-root .rh-empty { padding-bottom: calc(72px + var(--ui-payment-dock-height, 0px)); } /* 🧵 [OMNI-FIT 2026-08-22 §6-ب] + ارتفاع رصيف الدفع (كان 72px) */
.cb-msearch { margin-bottom: 12px; }
.cb-noresult { padding: 18px 12px; }
.cb-live {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
/* أي input/textarea بهذه الرحلة ≥16px (لا iOS zoom) */
.ua-search input,
#uaWishSubject, #uaWishCode, #uaWishNote, #uaWishContact { font-size: 16px; }

/* ── §5 ورقة الأمنية: الحقول الجديدة + Dialog على الكمبيوتر ─────────────── */
.ua-wish-ctx {
  margin: 0 0 10px;
  padding: 8px 12px;
  border-radius: var(--hu-r-md, 16px);
  background: var(--bg-input, var(--bg-page));
  border: 1px solid var(--border-color);
  color: var(--text-primary);
  font-size: .84rem;
  font-weight: 600;
  line-height: 1.6;
}
.ua-wish-ctx i { color: var(--primary); }
.ua-wish-ctx-sep { color: var(--text-muted); margin: 0 4px; }
.ua-wish-ctx-muted { color: var(--text-secondary); font-weight: 500; }
.ua-wish-label {
  display: block;
  margin: 10px 0 5px;
  font-size: .82rem;
  font-weight: 700;
  color: var(--text-secondary);
}
.ua-wish-req { color: #f87171; }
#uaWishSubject, #uaWishCode {
  width: 100%;
  min-height: 44px;
  padding: 10px 12px;
  border-radius: var(--hu-r-md, 16px);
  background: var(--bg-input, var(--bg-page));
  border: 1px solid var(--border-color);
  color: var(--text-primary);
  font-family: inherit;
  outline: none;
  box-sizing: border-box;
}
#uaWishCode { text-align: right; }
#uaWishCode::placeholder { direction: ltr; text-align: right; }
#uaWishSubject:focus, #uaWishCode:focus { border-color: var(--primary); }
#uaWishNote { min-height: 64px; box-sizing: border-box; }
.ua-wish-box .ua-wish-title { margin-bottom: 8px; }
.ua-wish-box .ua-wish-sub { margin-bottom: 4px; }
.ua-wish-err {
  display: none;
  margin: 10px 0 0;
  padding: 8px 12px;
  border-radius: var(--hu-r-md, 16px);
  background: rgba(239, 68, 68, .10);
  border: 1px solid rgba(239, 68, 68, .35);
  color: #fca5a5;
  font-size: .82rem;
  line-height: 1.6;
}
.ua-wish-box { max-height: calc(100vh - 24px); overflow: auto; overscroll-behavior: contain; } /* 🧵 [OMNI-FIT 2026-08-22 §6-ز] حصر التمرير الداخلي */
@supports (height: 100dvh) { .ua-wish-box { max-height: calc(100dvh - 24px); } }
.ua-wish-done-box { text-align: center; padding: 6px 4px 2px; }
.ua-wish-done-box h5 { margin: 6px 0 4px; font-size: 1.05rem; font-weight: 800; color: var(--text-primary); }
.ua-wish-done-box p { margin: 0 0 6px; font-size: .86rem; color: var(--text-secondary); line-height: 1.7; }
.ua-wish-no b { font-weight: 800; color: var(--text-primary); letter-spacing: .5px; }
.ua-wish-done-ico {
  width: 56px;
  height: 56px;
  margin: 0 auto 4px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  background: rgba(168, 85, 247, .12);
  color: var(--primary);
}
.ua-wish-done-ico.ok { background: rgba(81, 207, 102, .14); color: var(--success, #51cf66); }
.ua-wish-done-box .ua-wish-actions { margin-top: 12px; }
.ua-wish-done-box .ua-wish-nudge-btn { width: 100%; min-height: 44px; font-size: .9rem; margin: 0; }
@media (min-width: 600px) {
  .ua-wish-bg { align-items: center; }
  .ua-wish-box {
    width: min(520px, calc(100% - 32px));
    border-radius: var(--hu-r-lg, 20px);
    padding-bottom: 18px;
  }
}

/* ── §6 «طلباتي»: الزر + الشارة + الشيت + البطاقات + Timeline ────────────── */
.cb-mine-row { display: flex; justify-content: flex-start; margin: -10px 0 12px; }
.cb-mine-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 8px 16px;
  border-radius: 999px;
  background: var(--bg-card);
  border: 1.5px solid var(--border-color);
  color: var(--text-primary);
  font-family: inherit;
  font-size: .86rem;
  font-weight: 700;
  cursor: pointer;
  transition: border-color .18s ease, color .18s ease;
}
.cb-mine-btn:hover { border-color: var(--primary); color: var(--primary); }
.cb-mine-btn:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.cb-mine-btn i { color: var(--primary); }
.cb-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  border-radius: 999px;
  background: #ef4444;
  color: #fff;
  font-size: .7rem;
  font-weight: 800;
  line-height: 1;
}
.cb-badge[hidden] { display: none; }
.cb-new {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  background: #ef4444;
  color: #fff;
  font-size: .66rem;
  font-weight: 800;
  line-height: 1.4;
}
.cb-mine-bg {
  position: fixed;
  inset: 0;
  /* 🧵 [OMNI-FIT 2026-08-22 §6-د] نطاق الشيتات بالسلّم (كان 1200) */
  z-index: var(--z-sheet, 12000);
  background: rgba(5, 8, 15, .66);
  display: flex;
  align-items: flex-end;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s ease;
}
.cb-mine-bg.show { opacity: 1; pointer-events: auto; }
.cb-mine-box {
  width: min(640px, 100%);
  max-height: calc(100vh - 40px);
  display: flex;
  flex-direction: column;
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--hu-r-lg, 20px) var(--hu-r-lg, 20px) 0 0;
  transform: translateY(14px);
  transition: transform .2s ease;
  overflow: hidden;
}
@supports (height: 100dvh) { .cb-mine-box { max-height: calc(100dvh - 40px); } }
.cb-mine-bg.show .cb-mine-box { transform: translateY(0); }
.cb-mine-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 14px 16px 10px;
  border-bottom: 1px solid var(--border-color);
}
.cb-mine-title { margin: 0; font-size: 1.05rem; font-weight: 800; color: var(--text-primary); display: flex; align-items: center; gap: 8px; }
.cb-mine-title i { color: var(--primary); }
.cb-mine-close {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid var(--border-color);
  background: transparent;
  color: var(--text-secondary);
  font-size: 1rem;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.cb-mine-close:hover { color: var(--text-primary); border-color: var(--primary); }
.cb-mine-close:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.cb-mine-body {
  flex: 1 1 auto;
  overflow: auto;
  overscroll-behavior: contain; /* 🧵 [OMNI-FIT 2026-08-22 §6-ز] حصر التمرير الداخلي */
  -webkit-overflow-scrolling: touch;
  padding: 12px 16px calc(16px + env(safe-area-inset-bottom, 0px));
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.cb-mine-skel {
  height: 132px;
  border-radius: var(--hu-r-md, 16px);
  background: linear-gradient(100deg, var(--bg-input, var(--bg-page)) 40%, var(--border-color) 50%, var(--bg-input, var(--bg-page)) 60%);
  background-size: 200% 100%;
  animation: uaShimmer 1.4s ease infinite;
}
.cb-mine-empty { text-align: center; padding: 28px 12px 12px; color: var(--text-secondary); }
.cb-mine-empty-ico {
  width: 64px;
  height: 64px;
  margin: 0 auto 10px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(168, 85, 247, .08);
  color: var(--text-muted);
  font-size: 1.6rem;
}
.cb-mine-empty h5 { margin: 0 0 4px; font-size: 1rem; font-weight: 800; color: var(--text-primary); }
.cb-mine-empty p { margin: 0; font-size: .86rem; line-height: 1.7; }
.cb-mine-actions { display: flex; justify-content: center; }
.cb-mine-retry, .cb-mine-open {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 9px 18px;
  border-radius: 999px;
  background: var(--gradient, var(--primary));
  border: none;
  color: #fff;
  font-family: inherit;
  font-size: .86rem;
  font-weight: 700;
  cursor: pointer;
}
.cb-mine-open { align-self: flex-start; margin-top: 4px; }
.cb-mine-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px 14px;
  border-radius: var(--hu-r-md, 16px);
  background: var(--bg-input, var(--bg-page));
  border: 1px solid var(--border-color);
}
.cb-mine-card.is-unread { border-color: rgba(239, 68, 68, .45); }
.cb-mine-top { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.cb-mine-no { font-size: .74rem; font-weight: 800; letter-spacing: .5px; color: var(--text-secondary); }
.cb-state {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: .74rem;
  font-weight: 700;
  line-height: 1.4;
  margin-inline-start: auto;
}
.cb-state--pending     { background: rgba(251, 191, 36, .16); color: #fcd34d; }
.cb-state--in_progress { background: rgba(96, 165, 250, .16); color: #93c5fd; }
.cb-state--fulfilled   { background: rgba(81, 207, 102, .16);  color: #86efac; }
.cb-state--rejected    { background: rgba(239, 68, 68, .14);   color: #fca5a5; }
.cb-mine-subject { margin: 0; font-size: 1rem; font-weight: 800; color: var(--text-primary); line-height: 1.4; word-break: break-word; overflow-wrap: anywhere; }
.cb-mine-code { font-size: .78rem; font-weight: 700; color: var(--primary); padding: 1px 7px; border-radius: 999px; background: rgba(168, 85, 247, .12); }
.cb-mine-ctx { font-size: .8rem; color: var(--text-secondary); }
.cb-mine-ctx i { color: var(--primary); font-size: .75rem; }
.cb-mine-sep { color: var(--text-muted); margin: 0 3px; }
.cb-mine-note { font-size: .82rem; color: var(--text-secondary); line-height: 1.6; white-space: pre-wrap; word-break: break-word; }
.cb-mine-comment {
  padding: 8px 12px;
  border-radius: 12px;
  background: rgba(168, 85, 247, .10);
  border: 1px solid rgba(168, 85, 247, .28);
  color: var(--text-primary);
  font-size: .84rem;
  line-height: 1.7;
  white-space: pre-wrap;
  word-break: break-word;
}
.cb-mine-comment i { color: var(--primary); }
.cb-mine-card--rejected .cb-mine-comment { background: rgba(239, 68, 68, .10); border-color: rgba(239, 68, 68, .30); }
.cb-mine-meta { font-size: .72rem; color: var(--text-muted); }
.cb-mine-details summary {
  cursor: pointer;
  font-size: .8rem;
  font-weight: 700;
  color: var(--primary);
  padding: 6px 0;
  min-height: 32px;
  display: flex;
  align-items: center;
}
.cb-mine-details summary:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; border-radius: 6px; }
.cb-tl { list-style: none; margin: 4px 0 0; padding: 0 12px 0 0; border-inline-start: 2px solid var(--border-color); }
.cb-tl-item { position: relative; padding: 2px 0 10px 0; }
.cb-tl-dot {
  position: absolute;
  inset-inline-start: -19px;
  top: 7px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--text-muted);
  border: 2px solid var(--bg-card);
}
.cb-tl--accepted .cb-tl-dot { background: #60a5fa; }
.cb-tl--fulfilled .cb-tl-dot { background: var(--success, #51cf66); }
.cb-tl--rejected .cb-tl-dot { background: #ef4444; }
.cb-tl--comment .cb-tl-dot { background: var(--primary); }
.cb-tl-head { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.cb-tl-label { font-size: .82rem; font-weight: 700; color: var(--text-primary); }
.cb-tl-time { font-size: .7rem; color: var(--text-muted); margin-inline-start: auto; }
.cb-tl-text { margin-top: 3px; font-size: .82rem; color: var(--text-secondary); line-height: 1.65; white-space: pre-wrap; word-break: break-word; }
.cb-tl-item.is-new .cb-tl-label { color: var(--primary); }
@media (min-width: 600px) {
  .cb-mine-bg { align-items: center; }
  .cb-mine-box { width: min(640px, calc(100% - 32px)); border-radius: var(--hu-r-lg, 20px); max-height: calc(100vh - 64px); }
  @supports (height: 100dvh) { .cb-mine-box { max-height: calc(100dvh - 64px); } }
}

/* ── §7 الثيم الفاتح (تباين نص ≥4.5:1) ─────────────────────────────────── */
:root[data-theme="light"] .ua-grid[data-cb] .ua-cell:hover,
:root[data-theme="light"] .cb-college:hover { box-shadow: 0 12px 30px rgba(15, 23, 42, .12); }
:root[data-theme="light"] .cb-mine-bg,
:root[data-theme="light"] .ua-wish-bg { background: rgba(15, 23, 42, .35); }
:root[data-theme="light"] .cb-state--pending     { background: #fef3c7; color: #92400e; }
:root[data-theme="light"] .cb-state--in_progress { background: #dbeafe; color: #1e40af; }
:root[data-theme="light"] .cb-state--fulfilled   { background: #dcfce7; color: #166534; }
:root[data-theme="light"] .cb-state--rejected    { background: #fee2e2; color: #991b1b; }
:root[data-theme="light"] .ua-wish-err { background: #fee2e2; border-color: #fca5a5; color: #991b1b; }
:root[data-theme="light"] .ua-wish-req { color: #b91c1c; }
:root[data-theme="light"] .cb-mine-comment { background: #f3e8ff; border-color: #d8b4fe; }
:root[data-theme="light"] .cb-mine-card--rejected .cb-mine-comment { background: #fee2e2; border-color: #fca5a5; }
:root[data-theme="light"] .cb-wish-cta--inline:hover { background: #f3e8ff; }
:root[data-theme="light"] .cb-wish-cta--sticky { box-shadow: 0 10px 26px rgba(15, 23, 42, .22); }
:root[data-theme="light"] .cb-tl-dot { border-color: #fff; }

/* ── §8 تقليل الحركة + لوحة المفاتيح ───────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .ua-grid[data-cb] .ua-cell, .cb-college, .cb-change, .cb-wish-cta, .cb-mine-bg, .cb-mine-box, .cb-mine-btn { transition: none; }
  .ua-grid[data-cb] .ua-cell:hover, .cb-college:hover, .cb-college:active, .cb-wish-cta:active { transform: none; }
  .cb-college-skel, .cb-mine-skel { animation: none; }
  .cb-wish-cta--sticky.is-hidden, .cb-wish-cta--sticky.is-kbd { transform: none; }
}

/* ══ 🧭 [ORDER-FLOW 2026-09-01] شريط «اطلب» المبسّط فوق البوسترات ═════════
   .cb-flow-strip: «اختر كليتك عشان تعرف موادك» + تحديد الكلية + تغيير
   الجامعة؛ .cb-quick-links: روابط دورات حمدان/كتب الجامعة المصغّرة (تظهر
   فقط حين يعيد الأدمن إظهار القسمين). متغيرات الثيم القائمة حصراً.
   للإزالة: احذف الكتلة + _flowStrip/_quickLinks من request-hub.js. */
.cb-flow-strip {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 10px; margin: 4px 0 12px; padding: 10px 12px;
  background: var(--bg-card); border: 1px solid var(--border-color);
  border-radius: 14px;
}
.cb-flow-prompt { font-weight: 700; font-size: .95rem; color: var(--text-primary, inherit); }
.cb-flow-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-inline-start: auto; }
.cb-flow-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  min-height: 44px;   /* 🛡️ هدف لمس WCAG 2.2 (X-13) — زر أساسي بكل المقاسات */
  padding: 8px 12px; border-radius: 10px; font-size: .85rem; font-weight: 600;
  background: transparent; border: 1px solid var(--border-color);
  color: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent;
}
.cb-flow-btn i { color: var(--ua-c1, var(--primary)); }
.cb-flow-btn:hover { border-color: var(--ua-c1, var(--primary)); }
.cb-flow-btn:focus-visible { outline: 2px solid var(--ua-c1, var(--primary)); outline-offset: 2px; }
.cb-flow-btn--pick {
  background: color-mix(in srgb, var(--ua-c1, var(--primary)) 14%, var(--bg-card));
  border-color: color-mix(in srgb, var(--ua-c1, var(--primary)) 32%, var(--border-color));
}
.cb-quick-links { display: flex; gap: 8px; flex-wrap: wrap; margin: 0 0 12px; }
.cb-quick-link {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 11px; border-radius: 999px; font-size: .8rem; font-weight: 600;
  background: transparent; border: 1px dashed var(--border-color);
  color: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent;
}
@media (max-width: 480px) {
  .cb-quick-link { min-height: 44px; }   /* 🛡️ هدف لمس WCAG 2.2 (X-13) بالجوال */
}
.cb-quick-link i { color: var(--ua-c1, var(--primary)); }
.cb-quick-link:hover { border-style: solid; border-color: var(--ua-c1, var(--primary)); }
.cb-quick-link small { opacity: .75; font-size: .7rem; }
@media (max-width: 480px) {
  .cb-flow-strip { flex-direction: column; align-items: stretch; }
  .cb-flow-actions { margin-inline-start: 0; }
  .cb-flow-btn { flex: 1; justify-content: center; }
}
@media (prefers-reduced-motion: reduce) {
  .cb-flow-btn, .cb-quick-link { transition: none; }
}

/* ══ 🏛️ [CAMPUS-SWITCH 2026-09-02] §9 شريط الحرم الدائم + منتقي الجامعة/الكلية ═════
   .cb-campus-bar: حبتان كبيرتان (الجامعة ▾ / الكلية ▾) لاصقتان أعلى الشاشة (sticky
   تحت شريط التنقل عبر --ui-top-occupied) بالوضعين وبشاشة الكليات — لا أيقونة-فقط
   أبداً ولا تصغير: بالجوال يتراصّان عمودياً بنصهما الكامل. .cb-campus-bg/.cb-campus-box
   الورقة السفلية (ترث .cb-mine-* حرفياً) بصفوف 56px + بحث .ua-search + ✓ الحالية.
   القواعد: بلا قسر، الكسور المسموحة فقط، z ≤1300 (الورقة عبر --z-sheet الموروث).
   للإزالة: احذف الكتلة + campusBar/campusRow بالواجهة + openCampusPicker بالهَب. */
.cb-campus-bar {
  position: sticky;
  top: calc(var(--ui-top-occupied, var(--navbar-height, 60px)) + 6px);
  z-index: 30;
  display: flex;
  gap: 8px;
  align-items: stretch;
  margin: 0 0 12px;
  padding: 8px;
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: 16px;
  box-shadow: 0 8px 22px rgba(0, 0, 0, .14);
}
.cb-campus-pill {
  flex: 1 1 0;
  min-width: 0;
  min-height: 56px;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border-radius: 12px;
  border: 1px solid var(--border-color);
  background: transparent;
  color: inherit;
  font-family: inherit;
  text-align: start;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: border-color .18s ease, background .18s ease, transform .18s ease;
}
.cb-campus-pill:hover { border-color: var(--ua-c1, var(--primary)); }
.cb-campus-pill:active { transform: scale(.985); }
.cb-campus-pill:focus-visible { outline: 2px solid var(--ua-c1, var(--primary)); outline-offset: 2px; }
@supports (background: color-mix(in srgb, red 10%, blue)) {
  .cb-campus-pill--uni {
    background: color-mix(in srgb, var(--ua-c1, var(--primary)) 10%, var(--bg-card));
    border-color: color-mix(in srgb, var(--ua-c1, var(--primary)) 30%, var(--border-color));
  }
}
.cb-campus-logo,
.cb-campus-ico {
  width: 42px;
  height: 42px;
  flex: 0 0 42px;
  border-radius: 11px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg-input, rgba(127, 127, 127, .12));
}
.cb-campus-logo .ua-logo { width: 100%; height: 100%; padding: 6%; box-shadow: none; }
.cb-campus-logo .ua-mono { width: 100%; height: 100%; font-size: .85rem; display: flex; align-items: center; justify-content: center; }
.cb-campus-ico { font-size: 1.15rem; color: var(--ua-c1, var(--primary)); }
.cb-campus-txt {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.cb-campus-txt small { font-size: .72rem; color: var(--text-secondary); line-height: 1.3; }
.cb-campus-txt b {
  font-size: .95rem;
  font-weight: 800;
  color: var(--text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.35;
}
.cb-campus-pill.is-empty .cb-campus-txt b { color: var(--ua-c1, var(--primary)); }
.cb-campus-caret { color: var(--text-secondary); font-size: .8rem; flex: 0 0 auto; }
@media (max-width: 599.98px) {
  .cb-campus-bar { flex-direction: column; gap: 6px; padding: 6px; border-radius: 14px; }
  .cb-campus-pill { min-height: 52px; }
}
/* الورقة السفلية — ترث .cb-mine-bg/.cb-mine-box/.cb-mine-head/.cb-mine-body */
.cb-campus-box .cb-mine-body { gap: 8px; }
.cb-campus-list { display: flex; flex-direction: column; gap: 6px; }
.cb-campus-row {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 56px;
  padding: 8px 12px;
  border-radius: 14px;
  border: 1px solid var(--border-color);
  background: transparent;
  color: inherit;
  font-family: inherit;
  text-align: start;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: border-color .18s ease, background .18s ease;
}
.cb-campus-row:hover { border-color: var(--primary); }
.cb-campus-row:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.cb-campus-row.is-current { border-color: var(--primary); }
@supports (background: color-mix(in srgb, red 10%, blue)) {
  .cb-campus-row.is-current { background: color-mix(in srgb, var(--primary) 10%, var(--bg-card)); }
}
.cb-campus-row.is-hidden { display: none; }
.cb-campus-row--all { border-style: dashed; }
.cb-campus-row-ico {
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  border-radius: 12px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  color: var(--ua-c1, var(--primary));
  background: var(--bg-input, rgba(127, 127, 127, .12));
}
.cb-campus-row-ico .ua-logo { width: 100%; height: 100%; padding: 6%; box-shadow: none; }
.cb-campus-row-ico .ua-mono { width: 100%; height: 100%; font-size: .85rem; display: flex; align-items: center; justify-content: center; }
.cb-campus-row-txt { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cb-campus-row-txt b { font-size: .95rem; font-weight: 700; color: var(--text-primary); }
.cb-campus-row-txt small { font-size: .75rem; color: var(--text-secondary); }
.cb-campus-row-chk { color: var(--primary); font-weight: 800; opacity: 0; flex: 0 0 auto; }
.cb-campus-row.is-current .cb-campus-row-chk { opacity: 1; }
.cb-campus-q { font-size: 16px; } /* iOS: لا تكبير تلقائي عند التركيز */
@media (prefers-reduced-motion: reduce) {
  .cb-campus-pill, .cb-campus-row { transition: none; }
  .cb-campus-pill:active { transform: none; }
}


/* --------------- source: assets/css/124-book-shelf.css --------------- */
/* 🚀 [TURBO-SILK 2026-09-01 م2] هذه الطبقة صارت تُبنى ضمن bundle-late.css (لا سطر <link>
   مستقل لها في index.html بعد اليوم — الترتيب محفوظ حرفياً داخل LATE_MANIFEST).
   للإزالة: احذف بندها من LATE_MANIFEST في tools/build-css.py + هذا الملف + أعد التوليد.
   أي تعليمة قديمة أدناه بنص «احذف سطر الlink/رابطه» تعني ذلك. */
/* ════════════════════════════════════════════════════════════════════════
   📚 124-book-shelf.css — BOOK-SHELF V2 (2026-08-23) — الكتب المترجمة للجامعة
   ────────────────────────────────────────────────────────────────────────
   الطبقة بعد 123-campus-bloom (آخر التتالي عمداً، بلا إجبار). تغطي:
   • شاشات الكتب داخل #rh-root (.bk-screen): البحث، شريط السياق، شبكة التخصصات،
     Chips المواد/الفلاتر، بطاقة الكتاب 2:3 (غلاف lazy) فوق عقد .poster-cell/.cc-info.
   • شيت الكتاب #bkSheet (على body — z-index بالسلّم --z-sheet) + لوحة طلب التوفير.
   • الكاروسيل الأفقي RTL مع Peek للتوصيات (.bk-carousel — يستعمله bk-library/fl-sheet).
   • إخفاء بطاقة دورات حمدان واجهةً (.rx-dev-hidden) + التجاوب 320→1440 + الثيمات
     purple/light + prefers-reduced-motion.
   الكسور المسموحة: (max-width:599.98px) (min-width:600px) (min-width:768px)
   (min-width:1024px) (max-width:480/390/360/340px).
   للإزالة: احذف هذا الملف + سطر <link> في index.html.
   ════════════════════════════════════════════════════════════════════════ */

/* ── إخفاء بطاقة دورات حمدان (hamdan_courses_discovery_enabled=false) — DOM باقٍ ── */
.rx-choice-grid .rx-choice-card.rx-dev-hidden { display: none; }

/* ── الحاوية ─────────────────────────────────────────────────────────────── */
.bk-screen { min-width: 0; }
.bk-screen .rh-topbar { margin-bottom: 10px; }

/* ── البحث (فوق .ua-search من 114) ──────────────────────────────────────── */
.bk-search { position: relative; display: flex; align-items: center; gap: 8px; margin: 0 0 14px; }
.bk-search input { flex: 1; min-width: 0; }
.bk-search .bk-search-go {
  flex: 0 0 auto; width: 42px; height: 42px; border-radius: 12px; border: 1px solid var(--border-color);
  background: var(--primary, #a855f7); color: #fff; cursor: pointer; font-size: .95rem;
  display: inline-flex; align-items: center; justify-content: center;
}
.bk-search .bk-search-go:hover { filter: brightness(1.08); }
/* [SHOTS 2026-08-23] أيقونة زر البحث: .ua-search i (114) تُموضع كل <i> مطلقاً عند حافة الحقل
   فكان الزر مربعاً فارغاً والأيقونتان متراكبتين — إعادة الأيقونة إلى تدفّق الزر */
.bk-search .bk-search-go i { position: static; transform: none; color: inherit; font-size: inherit; pointer-events: none; }

/* ── شريط السياق (جامعة · كلية · تخصص + الأزرار) ────────────────────────── */
.bk-ctx {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  padding: 12px 14px; margin-bottom: 14px;
  border-radius: var(--hu-r-lg, 20px);
  background: var(--bg-card); border: 1px solid var(--border-color);
}
.bk-ctx-text { min-width: 0; flex: 1 1 220px; }
.bk-ctx-uni { font-size: .78rem; color: var(--text-secondary); display: flex; align-items: center; gap: 6px; }
.bk-ctx-uni i { color: var(--primary, #a855f7); font-size: .75rem; }
.bk-ctx-spec { margin: 2px 0 0; font-size: 1.1rem; font-weight: 800; color: var(--text-primary); line-height: 1.5; outline: none; }
.bk-ctx-sub { font-size: .78rem; color: var(--text-muted); margin-top: 2px; }
.bk-ctx-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.bk-ctx-btn {
  display: inline-flex; align-items: center; gap: 6px; min-height: 38px; padding: 0 12px;
  border-radius: 999px; border: 1px solid var(--border-color); background: var(--bg-input);
  color: var(--text-primary); font-size: .8rem; font-weight: 700; cursor: pointer; font-family: inherit;
}
.bk-ctx-btn:hover { border-color: var(--primary, #a855f7); }
.bk-ctx-btn i { color: var(--primary, #a855f7); }
.bk-ctx-btn.bk-ctx-mine.is-on { background: rgba(81, 207, 102, .14); border-color: rgba(81, 207, 102, .45); cursor: default; }
.bk-ctx-btn.bk-ctx-mine.is-on i { color: var(--success, #51cf66); }
.bk-ctx-btn[disabled] { opacity: .95; }
.bk-ctx-lite { margin-bottom: 14px; }

/* ── شبكة التخصصات (دلاء الكثافة data-cb كما الكليات) ──────────────────── */
.bk-spec-grid { display: grid; gap: 12px; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 18px; }
.bk-spec-grid[data-cb="spotlight"] { grid-template-columns: minmax(0, 1fr); }
@media (min-width: 600px)  { .bk-spec-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .bk-spec-grid[data-cb="duo"] { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .bk-spec-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } .bk-spec-grid[data-cb="showcase"] { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 340px)  { .bk-spec-grid { grid-template-columns: minmax(0, 1fr); } }
.bk-spec {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; text-align: center;
  min-height: 118px; padding: 14px 10px; border-radius: var(--hu-r-lg, 20px);
  background: var(--bg-card); border: 1px solid var(--border-color); color: var(--text-primary);
  cursor: pointer; font-family: inherit; transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.bk-spec:hover { transform: translateY(-2px); border-color: var(--primary, #a855f7); box-shadow: 0 10px 28px rgba(0, 0, 0, .25); }
.bk-spec--empty { opacity: .72; }
.bk-spec-ico {
  width: 44px; height: 44px; border-radius: 14px; display: inline-flex; align-items: center; justify-content: center;
  background: color-mix(in srgb, var(--primary, #a855f7) 16%, var(--bg-card)); color: var(--primary, #a855f7); font-size: 1.15rem;
}
.bk-spec-name { font-weight: 800; font-size: .92rem; line-height: 1.5; }
.bk-spec-meta { font-size: .74rem; color: var(--text-muted); }
.bk-section-title { margin: 6px 0 12px; font-size: 1rem; font-weight: 800; color: var(--text-primary); display: flex; align-items: center; gap: 8px; }
.bk-section-title i { color: var(--primary, #a855f7); }

/* ── Chips المواد/الفلاتر (شريط أفقي قابل للتمرير) ─────────────────────── */
.bk-chips {
  display: flex; gap: 8px; flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-x: contain;
  padding: 2px 2px 10px; margin-bottom: 8px; scrollbar-width: none; -webkit-overflow-scrolling: touch;
}
.bk-chips::-webkit-scrollbar { display: none; }
@media (min-width: 768px) { .bk-chips { flex-wrap: wrap; overflow: visible; } }
.bk-chip {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 0 12px;
  border-radius: 999px; border: 1px solid var(--border-color); background: var(--bg-card);
  color: var(--text-secondary); font-size: .8rem; font-weight: 700; cursor: pointer; font-family: inherit; white-space: nowrap;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.bk-chip:hover { border-color: var(--primary, #a855f7); color: var(--text-primary); }
.bk-chip.is-on { background: var(--primary, #a855f7); border-color: var(--primary, #a855f7); color: #fff; }
.bk-chip-n { font-size: .7rem; opacity: .85; padding: 1px 7px; border-radius: 999px; background: rgba(255, 255, 255, .12); }
.bk-chip.is-on .bk-chip-n { background: rgba(255, 255, 255, .22); }
.bk-chip i { font-size: .75rem; }
.bk-chip--toggle { margin-inline-start: auto; }
/* [FIX UX-12] صف الفلاتر: tablist المواد (قابل للتمرير) + زر «القابل للشراء» خارجه */
.bk-chips-row { display: flex; align-items: flex-start; gap: 8px; }
.bk-chips-row > .bk-chips { flex: 1 1 auto; min-width: 0; }
.bk-chips-row > .bk-chip--toggle { flex: 0 0 auto; margin-inline-start: 0; margin-top: 2px; }
.bk-noresult { padding: 14px; text-align: center; color: var(--text-muted); font-size: .88rem; }
.bk-ctx-chip {
  align-self: flex-start; display: inline-flex; align-items: center; gap: 6px; min-height: 30px; padding: 0 10px;
  border-radius: 999px; border: 1px dashed var(--border-color); background: transparent;
  color: var(--text-secondary); font-size: .72rem; font-weight: 700; cursor: pointer; font-family: inherit; max-width: 100%;
}
.bk-ctx-chip:hover { border-color: var(--primary, #a855f7); color: var(--text-primary); }
.bk-ctx-chip i { color: var(--primary, #a855f7); }

/* ── بطاقة الكتاب 2:3 (فوق عقد .poster-cell > .poster-card + .cc-info) ─── */
.bk-grid { align-items: stretch; }
.bk-cell .poster-card.bk-card { aspect-ratio: 2 / 3; cursor: pointer; background: var(--bg-input); }
.bk-cell .poster-card.bk-card:focus-visible { outline: 2px solid var(--primary, #a855f7); outline-offset: 2px; }
.bk-card .bk-cover { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.bk-card .bk-cover-ph, .bk-sheet-cover .bk-cover-ph, .bk-req-cover .bk-cover-ph {
  position: absolute; inset: 0; display: none; align-items: center; justify-content: center;
  background: linear-gradient(160deg, color-mix(in srgb, var(--primary, #a855f7) 30%, var(--bg-card)), var(--bg-card));
  color: var(--primary, #a855f7); font-size: 2rem;
}
.bk-nocover .bk-cover-ph, .bk-cover-ph.is-on { display: flex; }
.bk-card .poster-gradient { pointer-events: none; }
.bk-ribbon {
  position: absolute; top: 8px; inset-inline-start: 8px; z-index: 2;
  display: inline-flex; align-items: center; gap: 4px; padding: 3px 9px; border-radius: 999px;
  font-size: .68rem; font-weight: 800; color: #fff; background: rgba(20, 10, 36, .72); backdrop-filter: blur(4px);
}
.bk-ribbon--owned { background: rgba(22, 101, 52, .85); }
.bk-ribbon--offer { background: linear-gradient(135deg, #f59e0b, #d97706); color: #1a1030; }
.bk-cell .cc-info .bk-meta { order: 1; font-size: .72rem; color: var(--text-muted); line-height: 1.6; text-align: center; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bk-cell .cc-info .bk-ctx-chip { order: 1; align-self: center; }
.bk-cell .cc-info .cc-price { order: 2; justify-content: center; }
.bk-cell .cc-info .poster-action-btn { order: 3; }
.bk-cell .cc-info .bk-sample-btn { order: 4; }
.bk-cell .cc-info .cc-state { order: 5; }
.bk-sample-btn {
  width: 100%; min-height: 36px; border-radius: 12px; border: 1px solid var(--border-color); background: transparent;
  color: var(--text-secondary); font-size: .78rem; font-weight: 700; cursor: pointer; font-family: inherit;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
}
.bk-sample-btn:hover { border-color: var(--primary, #a855f7); color: var(--text-primary); }
.bk-sample-btn[disabled] { opacity: .6; cursor: progress; }
.poster-action-btn.bk-primary { display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
.poster-action-btn.bk-primary--request { background: var(--bg-input); color: var(--text-primary); border: 1px solid var(--border-color); }
.poster-action-btn.bk-primary--request:hover { border-color: var(--primary, #a855f7); }
.poster-action-btn.bk-primary--owned { background: rgba(81, 207, 102, .14); color: var(--success, #51cf66); border: 1px solid rgba(81, 207, 102, .4); }
.poster-action-btn.bk-primary--off { opacity: .6; cursor: not-allowed; }
.bk-empty-cta { display: flex; justify-content: center; margin: 12px 0 18px; }

/* ── أزرار عامة ──────────────────────────────────────────────────────────── */
.bk-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 0 18px;
  border-radius: 13px; border: 1px solid var(--border-color); cursor: pointer; font-family: inherit;
  font-weight: 800; font-size: .92rem; text-decoration: none; background: var(--bg-input); color: var(--text-primary);
}
.bk-btn--primary { background: var(--primary, #a855f7); border-color: var(--primary, #a855f7); color: #fff; }
.bk-btn--primary:hover { filter: brightness(1.08); }
.bk-btn--ghost:hover { border-color: var(--primary, #a855f7); }
.bk-btn[disabled] { opacity: .65; cursor: progress; }

/* ── هياكل التحميل ───────────────────────────────────────────────────────── */
.bk-tile-grid { display: grid; gap: 12px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 600px)  { .bk-tile-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .bk-tile-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.bk-skel { position: relative; overflow: hidden; background: var(--bg-input); border-radius: 14px; }
.bk-skel::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .07), transparent); animation: bkShimmer 1.2s infinite; }
.bk-skel--tile { min-height: 118px; border-radius: var(--hu-r-lg, 20px); }
.bk-skel--line { height: 12px; margin: 4px 0; }
.bk-skel--line.short { width: 60%; }
.bk-skel-cell .cc-info { padding: 10px 12px; }
@keyframes bkShimmer { from { transform: translateX(-100%); } to { transform: translateX(100%); } }

/* ── شيت الكتاب #bkSheet (على body) ──────────────────────────────────────── */
.bk-sheet-wrap { position: fixed; inset: 0; z-index: var(--z-sheet, 12000); display: flex; align-items: flex-end; justify-content: center; }
.bk-sheet-wrap .bk-sheet-back { position: absolute; inset: 0; background: rgba(5, 3, 15, .6); backdrop-filter: blur(3px); opacity: 0; transition: opacity .22s ease; }
.bk-sheet-wrap.is-open .bk-sheet-back { opacity: 1; }
.bk-sheet-wrap .bk-sheet {
  position: relative; width: min(560px, 100vw); margin: 0; padding: 10px 16px calc(18px + env(safe-area-inset-bottom, 0px));
  border-radius: 22px 22px 0 0; text-align: start;
  background: var(--bg-card, #1c1233); border: 1px solid var(--border-color); border-bottom: 0;
  max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); overflow: auto; overscroll-behavior: contain;
  transform: translateY(24px); opacity: 0; transition: transform .26s cubic-bezier(.2, .8, .2, 1), opacity .22s ease;
  box-shadow: 0 -12px 40px rgba(0, 0, 0, .35);
}
.bk-sheet-wrap.is-open .bk-sheet { transform: none; opacity: 1; }
@media (min-width: 768px) {
  .bk-sheet-wrap { align-items: center; }
  .bk-sheet-wrap .bk-sheet { width: min(600px, 92vw); border-radius: 22px; border-bottom: 1px solid var(--border-color); max-height: calc(100dvh - 48px); padding-bottom: 18px; }
}
.bk-grip { width: 44px; height: 5px; border-radius: 999px; background: var(--border-color); margin: 0 auto 10px; }
@media (min-width: 768px) { .bk-grip { display: none; } }
.bk-sheet-close {
  position: absolute; top: 10px; inset-inline-start: 10px; width: 38px; height: 38px; border-radius: 12px;
  border: 1px solid var(--border-color); background: var(--bg-input); color: var(--text-primary); cursor: pointer; font-size: 1rem;
  display: inline-flex; align-items: center; justify-content: center; z-index: 2;
}
.bk-sheet-hero { display: flex; gap: 14px; align-items: flex-start; margin-top: 6px; }
.bk-sheet-cover { position: relative; flex: 0 0 112px; width: 112px; aspect-ratio: 2 / 3; border-radius: 14px; overflow: hidden; background: var(--bg-input); border: 1px solid var(--border-color); }
.bk-sheet-cover .bk-cover { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.bk-sheet-info { min-width: 0; flex: 1; padding-inline-start: 0; padding-top: 30px; }
@media (min-width: 768px) { .bk-sheet-info { padding-top: 26px; } }
.bk-sheet-title { margin: 0 0 4px; font-size: 1.08rem; font-weight: 900; line-height: 1.5; color: var(--text-primary); }
.bk-sheet-title-en { font-size: .78rem; color: var(--text-muted); text-align: start; margin-bottom: 6px; }
.bk-sheet-facts { display: flex; flex-wrap: wrap; gap: 6px 12px; font-size: .76rem; color: var(--text-secondary); margin-bottom: 8px; }
.bk-sheet-facts i { color: var(--primary, #a855f7); margin-inline-end: 3px; }
/* [SHOTS 2026-08-23] سعر الشيت خارج .cc-info فلا تصله قواعد 122 (.cc-info .cc-price*) — كان
   «120 ر.س150 ر.سخصم 20٪» نصاً ملتصقاً بلا شطب ولا شريحة؛ نعكس التوكنات نفسها هنا */
.bk-sheet-price { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 4px; }
.bk-sheet-price:empty { display: none; }
.bk-sheet-price .cc-price-now { font-size: 1.15rem; font-weight: 900; color: var(--cc-price-now, var(--text-primary)); white-space: nowrap; }
.bk-sheet-price .cc-price-was { font-size: .82rem; font-weight: 700; text-decoration: line-through; color: var(--cc-price-was, var(--text-muted)); white-space: nowrap; }
.bk-sheet-price .cc-chip { font-size: .7rem; font-weight: 800; background: var(--cc-chip-bg, #fde68a); color: var(--cc-chip-text, #451a03); border: 1px solid var(--cc-chip-bg, #fde68a); border-radius: 7px; padding: 2px 8px; white-space: nowrap; }
.bk-sheet-desc { margin: 12px 0 0; font-size: .86rem; line-height: 1.8; color: var(--text-secondary); white-space: pre-line; }
.bk-sheet-state { margin-top: 12px; padding: 10px 12px; border-radius: 12px; background: var(--bg-input); border: 1px solid var(--border-color); font-size: .82rem; color: var(--text-secondary); display: flex; gap: 8px; align-items: center; }
.bk-sheet-state i { color: var(--primary, #a855f7); }
.bk-sheet-state.is-owned { background: rgba(81, 207, 102, .12); border-color: rgba(81, 207, 102, .4); color: var(--text-primary); }
.bk-sheet-state.is-owned i { color: var(--success, #51cf66); }
.bk-sheet-ctx { margin-top: 12px; }
.bk-sheet-actions { display: flex; flex-direction: column; gap: 8px; margin-top: 14px; }
.bk-sheet-actions .poster-action-btn { width: 100%; margin: 0; min-height: 46px; font-size: .95rem; }
.bk-sheet-actions .bk-sample-btn { min-height: 42px; }
@media (min-width: 600px) {
  .bk-sheet-actions { flex-direction: row; }
  .bk-sheet-actions .poster-action-btn { flex: 1 1 auto; }
  .bk-sheet-actions .bk-sample-btn { flex: 0 0 auto; width: auto; padding: 0 16px; }
}

/* ── لوحة طلب التوفير داخل الشيت ────────────────────────────────────────── */
.bk-panel { margin-top: 14px; padding-top: 14px; border-top: 1px dashed var(--border-color); }
.bk-req-title { margin: 0 0 10px; font-size: .98rem; font-weight: 800; color: var(--text-primary); display: flex; align-items: center; gap: 8px; }
.bk-req-title i { color: var(--primary, #a855f7); }
.bk-req-book { display: flex; gap: 10px; align-items: center; margin-bottom: 10px; }
.bk-req-cover { position: relative; flex: 0 0 44px; width: 44px; aspect-ratio: 2 / 3; border-radius: 8px; overflow: hidden; background: var(--bg-input); border: 1px solid var(--border-color); }
.bk-req-cover .bk-cover { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.bk-req-cover .bk-cover-ph { font-size: 1rem; }
.bk-req-name { font-weight: 800; font-size: .9rem; color: var(--text-primary); }
.bk-req-ed { font-size: .76rem; color: var(--text-muted); }
.bk-field { display: block; margin-bottom: 10px; }
.bk-field span { display: block; font-size: .78rem; color: var(--text-secondary); margin-bottom: 4px; }
.bk-field input {
  width: 100%; min-height: 44px; padding: 0 12px; border-radius: 12px; border: 1px solid var(--border-color);
  background: var(--bg-input); color: var(--text-primary); font-family: inherit; font-size: .9rem;
}
.bk-field input:focus { border-color: var(--primary, #a855f7); outline: none; }
.bk-req-err { margin: 0 0 10px; padding: 8px 10px; border-radius: 10px; background: rgba(239, 68, 68, .12); border: 1px solid rgba(239, 68, 68, .35); color: #fca5a5; font-size: .8rem; }
.bk-req .bk-btn { width: 100%; }
.bk-req--done { text-align: center; }
.bk-req-ok { font-size: 2rem; color: var(--success, #51cf66); margin-bottom: 6px; }
.bk-req-msg { margin: 0 0 8px; font-size: .9rem; line-height: 1.8; color: var(--text-primary); }
.bk-req-no { font-size: .86rem; color: var(--text-secondary); margin-bottom: 12px; }
.bk-req-no b { color: var(--text-primary); letter-spacing: .4px; }
.bk-tg-btn { margin-bottom: 12px; }
.bk-req-fallback { padding-top: 10px; border-top: 1px dashed var(--border-color); }
.bk-req-fb-text { font-size: .76rem; color: var(--text-muted); margin-bottom: 8px; }
.bk-req-fb-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.bk-req-fb-actions .bk-btn { flex: 1 1 140px; width: auto; min-height: 40px; font-size: .82rem; }

/* ── الكاروسيل الأفقي RTL مع Peek (التوصيات — bk-library/fl-sheet) ──────── */
.bk-carousel {
  display: flex; gap: 12px; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory;
  padding: 4px 2px 12px; scrollbar-width: none; -webkit-overflow-scrolling: touch; scroll-padding-inline: 2px;
}
.bk-carousel::-webkit-scrollbar { display: none; }
.bk-carousel > .bk-cell { flex: 0 0 44%; max-width: 200px; scroll-snap-align: start; }
@media (min-width: 600px)  { .bk-carousel > .bk-cell { flex-basis: 30%; } }
@media (min-width: 768px)  { .bk-carousel > .bk-cell { flex-basis: 22%; } }
@media (min-width: 1024px) { .bk-carousel > .bk-cell { flex-basis: 17%; } }
.bk-shelf-title { margin: 10px 0 8px; font-size: .95rem; font-weight: 800; color: var(--text-primary); display: flex; align-items: center; gap: 8px; }
.bk-shelf-title i { color: var(--primary, #a855f7); }

/* ── توست «تم الدفع» (فولباك حين تغيب المكتبة) ──────────────────────────── */
.bk-paid-toast span { font-weight: 700; }

/* ── التجاوب الضيق ────────────────────────────────────────────────────────── */
@media (max-width: 599.98px) {
  .bk-ctx { padding: 10px 12px; }
  .bk-ctx-actions { width: 100%; }
  .bk-ctx-btn { flex: 1 1 auto; justify-content: center; }
}
@media (max-width: 390px) {
  .bk-ctx-btn { font-size: .76rem; padding: 0 10px; }
  .bk-sheet-cover { flex-basis: 96px; width: 96px; }
  .bk-sheet-title { font-size: 1rem; }
}
@media (max-width: 340px) {
  .bk-sheet-hero { flex-direction: column; align-items: center; text-align: center; }
  .bk-sheet-info { padding-top: 4px; }
  .bk-sheet-facts { justify-content: center; }
  .bk-sheet-price { justify-content: center; }
}

/* ── الثيم الفاتح ────────────────────────────────────────────────────────── */
:root[data-theme="light"] .bk-sheet-wrap .bk-sheet-back { background: rgba(15, 23, 42, .38); }
:root[data-theme="light"] .bk-sheet-wrap .bk-sheet { box-shadow: 0 -12px 40px rgba(15, 23, 42, .18); }
:root[data-theme="light"] .bk-spec:hover { box-shadow: 0 10px 28px rgba(15, 23, 42, .12); }
:root[data-theme="light"] .bk-chip-n { background: rgba(15, 23, 42, .08); }
:root[data-theme="light"] .bk-skel::after { background: linear-gradient(90deg, transparent, rgba(15, 23, 42, .06), transparent); }
:root[data-theme="light"] .bk-req-err { background: #fee2e2; border-color: #fca5a5; color: #991b1b; }
:root[data-theme="light"] .bk-ribbon { background: rgba(15, 23, 42, .72); }
:root[data-theme="light"] .poster-action-btn.bk-primary--owned { background: #dcfce7; color: #166534; border-color: #86efac; }
:root[data-theme="light"] .bk-sheet-state.is-owned { background: #dcfce7; border-color: #86efac; }
:root[data-theme="light"] .bk-ctx-btn.bk-ctx-mine.is-on { background: #dcfce7; border-color: #86efac; }

/* ── حركة مخففة ──────────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .bk-sheet-wrap .bk-sheet, .bk-sheet-wrap .bk-sheet-back, .bk-spec, .bk-chip { transition: none; }
  .bk-skel::after { animation: none; }
  .bk-carousel, .bk-chips { scroll-behavior: auto; }
}

/* ═══════════════════════════════════════════════════════════════════════════
 * [purchase] rail — بلوك ورشة الشراء (fl-sheet._bkRenderRail) — أُلحق في النهاية
 *   رفّ توصيات الكتب بعد شراء الشروحات: RTL أفقي مع Peek للبطاقة التالية
 *   (flex-basis كسري) · ≤6 بطاقات · scroll-snap. يعيش داخل .fl-sheet (شيت «موادك
 *   الجديدة») أو داخل .bk-rail-float (الرفّ العائم غير الحاجب بعد الفتح المباشر
 *   للشرح — قاعدته محقونة في fl-sheet). ⛔ لا تُعد كتابته — يُحافَظ عليه حرفياً عند
 *   إعادة إنشاء الملف. الكسور المسموحة فقط.
 * ═══════════════════════════════════════════════════════════════════════════ */
.bk-rail-wrap { direction: rtl; margin: 10px 0 6px; }
.bk-rail-head {
  font-size: .92rem; font-weight: 800; margin: 0 2px 8px;
  display: flex; align-items: center; gap: 8px;
}
.bk-rail {
  display: flex; gap: 10px; overflow-x: auto; overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
  padding: 2px 2px 10px; scrollbar-width: none;
}
.bk-rail::-webkit-scrollbar { display: none; }
.bk-rail-card {
  flex: 0 0 44%; max-width: 160px; min-width: 124px; scroll-snap-align: start;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.1);
  border-radius: 12px; padding: 8px; display: flex; flex-direction: column; gap: 4px;
  cursor: pointer; transition: transform .15s ease, box-shadow .15s ease;
}
.bk-rail-card:active { transform: scale(.98); }
.bk-rail-cover {
  width: 100%; aspect-ratio: 2 / 3; object-fit: cover; border-radius: 8px;
  background: rgba(255,255,255,.06); display: block;
}
.bk-rail-cover-ph { display: flex; align-items: center; justify-content: center; font-size: 1.6rem; opacity: .35; }
.bk-rail-title {
  font-size: .8rem; font-weight: 800; line-height: 1.45;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.bk-rail-sub { font-size: .68rem; opacity: .7; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bk-rail-price { font-size: .8rem; font-weight: 800; color: var(--accent, #a855f7); margin-top: auto; }
.bk-rail-was { text-decoration: line-through; opacity: .5; font-size: .7rem; margin-inline-end: 5px; font-weight: 600; }
.bk-rail-buy {
  border: 0; border-radius: 9px; padding: 8px 6px; font-family: inherit; font-size: .74rem; font-weight: 700;
  cursor: pointer; min-height: 36px; color: #fff;
  background: linear-gradient(135deg, var(--accent, #a855f7), #7c3aed);
  display: inline-flex; align-items: center; justify-content: center; gap: 5px;
}
@media (min-width: 600px) { .bk-rail-card { flex-basis: 30%; } }
:root[data-theme="light"] .bk-rail-card { background: rgba(15,23,42,.05); border-color: rgba(15,23,42,.12); }
:root[data-theme="light"] .bk-rail-cover { background: rgba(15,23,42,.06); }
@media (prefers-reduced-motion: reduce) { .bk-rail-card { transition: none; } .bk-rail-float { animation: none; } }
/* /[purchase] rail */


/* --------------- source: assets/css/125-sky-link.css --------------- */
/* 🚀 [TURBO-SILK 2026-09-01 م2] هذه الطبقة صارت تُبنى ضمن bundle-late.css (لا سطر <link>
   مستقل لها في index.html بعد اليوم — الترتيب محفوظ حرفياً داخل LATE_MANIFEST).
   للإزالة: احذف بندها من LATE_MANIFEST في tools/build-css.py + هذا الملف + أعد التوليد.
   أي تعليمة قديمة أدناه بنص «احذف سطر الlink/رابطه» تعني ذلك. */
/* ════════════════════════════════════════════════════════════════════════════
 * 🔗 [SKY-LINK 2026-09-26] الطبقة 125 — قمع ربط تلجرام S0-S3
 * ────────────────────────────────────────────────────────────────────────────
 * السطوح: شيت S0 «توّك مسجّل» (#skySheet) + بطاقة S1 داخل المشغّل
 * (.sky-s1-card — شقيقة #vidEndScreen داخل #videoWrapper لتظهر فوق fullscreen)
 * + توست S2 (#skyNudgeToast) + إضافات شاشة القفل S3 على مودال tg-modal القائم
 * (زر X + سطر «كلمنا»).
 * القواعد: طبقات بالتوكنز حصراً (--z-sheet/--z-toast + صيغة الرصيف الموحّدة)؛
 * ملف مستقل بعد 124 عمداً — لا لمس الحزم (الحزم ناتج build). الثيمان
 * purple (الافتراضي) وlight فقط. لون تلجرام: تدرّج #2AABEE → #229ED9.
 * مرايا وضع الأداء (سكريم الجوال/سقف الزجاج/perf-lite/reduced-motion) منسوخة
 * هنا لأصناف sky نفسها — لا تعديل على 100-performance-mode.css (داخل حزمة).
 * للإزالة: احذف هذا السطر من index.html + الملف (السطوح تفشل بصمت).
 * ════════════════════════════════════════════════════════════════════════════ */

/* ═══ مشتركات: زر X (مساحة لمس ≥40px — أعلى اليسار بالـRTL) + CTA تلجرام ═══ */
.sky-x {
  position: absolute; top: 8px; inset-inline-start: 8px;
  width: 40px; height: 40px; min-width: 40px; min-height: 40px;
  display: inline-flex; align-items: center; justify-content: center;
  border: none; border-radius: 12px; cursor: pointer;
  background: rgba(255, 255, 255, 0.08); color: rgba(255, 255, 255, 0.75);
  font-size: 1rem; line-height: 1; padding: 0;
  transition: background 160ms ease, color 160ms ease;
}
.sky-x:hover, .sky-x:active { background: rgba(255, 255, 255, 0.16); color: #fff; }

.sky-cta {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  border: none; cursor: pointer; width: 100%;
  padding: 13px 18px; border-radius: 14px;
  background: linear-gradient(135deg, #2AABEE, #229ED9);
  color: #fff; font-weight: 800; font-size: 0.95rem; font-family: inherit;
  box-shadow: 0 6px 20px rgba(34, 158, 217, 0.35);
  transition: transform 160ms ease, box-shadow 160ms ease, filter 160ms ease;
}
.sky-cta:hover { filter: brightness(1.06); box-shadow: 0 8px 26px rgba(34, 158, 217, 0.45); }
.sky-cta:active { transform: scale(0.98); }
.sky-cta.sky-sm { width: auto; padding: 8px 14px; font-size: 0.82rem; border-radius: 10px; }

.sky-ghost {
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid rgba(255, 255, 255, 0.2); cursor: pointer; width: 100%;
  padding: 11px 18px; border-radius: 14px; background: transparent;
  color: rgba(255, 255, 255, 0.75); font-weight: 600; font-size: 0.88rem; font-family: inherit;
  transition: background 160ms ease, color 160ms ease;
}
.sky-ghost:hover { background: rgba(255, 255, 255, 0.06); color: #fff; }
.sky-ghost.sky-sm { width: auto; padding: 7px 12px; font-size: 0.8rem; border-radius: 10px; }

/* ═══ S0 — شيت «توّك مسجّل 🎉» (نمط #gldSheet: جذر على body، سلّم --z-sheet) ═══ */
#skySheet { position: fixed; inset: 0; z-index: var(--z-sheet, 12000); display: flex; align-items: flex-end; justify-content: center; }
.sky-sheet-back { position: absolute; inset: 0; background: rgba(6, 4, 14, 0.62); }
.sky-sheet {
  position: relative; width: min(100%, 560px);
  margin: 0; padding: 26px 20px calc(20px + env(safe-area-inset-bottom, 0px));
  border-radius: 22px 22px 0 0;
  background: linear-gradient(160deg, rgba(36, 24, 62, 0.97), rgba(20, 13, 38, 0.99));
  border: 1px solid rgba(42, 171, 238, 0.28); border-bottom: none;
  box-shadow: 0 -12px 44px rgba(0, 0, 0, 0.55);
  text-align: center; color: #efeaff;
  animation: skySheetIn 320ms cubic-bezier(0.2, 0.8, 0.25, 1) both;
}
@keyframes skySheetIn { from { transform: translateY(28px); opacity: 0; } to { transform: none; opacity: 1; } }
.sky-sheet-icon {
  width: 58px; height: 58px; margin: 2px auto 12px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #2AABEE, #229ED9);
  color: #fff; font-size: 1.6rem; box-shadow: 0 8px 26px rgba(34, 158, 217, 0.45);
}
.sky-sheet h3 { margin: 0 0 8px; font-size: 1.2rem; font-weight: 800; }
.sky-sheet p { margin: 0 0 16px; font-size: 0.9rem; line-height: 1.8; color: rgba(239, 234, 255, 0.82); }
.sky-sheet .sky-ghost { margin-top: 10px; }

/* ═══ S1 — بطاقة الاحتفال داخل #videoWrapper (فوق المشغّل، غير حاجبة) ═══ */
.sky-s1-card {
  position: absolute; inset-inline: 10px; bottom: 12px; z-index: 32; /* فوق wt-celebrate (30) وشارة IV (18) */
  padding: 14px 14px 12px; padding-inline-start: 52px;
  border-radius: 14px;
  background: linear-gradient(155deg, rgba(23, 32, 51, 0.96), rgba(13, 20, 36, 0.97));
  border: 1px solid rgba(42, 171, 238, 0.4);
  box-shadow: 0 10px 32px rgba(0, 0, 0, 0.55);
  color: #eef4ff; text-align: start;
  animation: skyS1In 300ms ease both;
}
@keyframes skyS1In { from { transform: translateY(14px); opacity: 0; } to { transform: none; opacity: 1; } }
.sky-s1-x { top: 6px; inset-inline-start: 6px; }
.sky-s1-txt { font-size: 0.86rem; line-height: 1.75; margin-bottom: 10px; }
.sky-s1-btns { display: flex; gap: 8px; flex-wrap: wrap; }

/* ═══ S2 — توست التذكير النادر (نمط gld-access-toast: صيغة الرصيف الموحّدة) ═══ */
.sky-nudge-toast {
  position: fixed;
  bottom: var(--ui-float-above-dock, calc(var(--bottombar-height, 65px) + 14px + var(--fl-badge-clearance, 0px) + env(safe-area-inset-bottom, 0px)));
  inset-inline: 0; margin: 0 auto; width: max-content; max-width: min(92vw, 560px);
  z-index: var(--z-toast, 12500);
  display: flex; align-items: center; gap: 10px;
  padding: 12px 14px; padding-inline-start: 50px;
  border-radius: 14px;
  background: linear-gradient(135deg, #17263e, #101a2e);
  border: 1px solid rgba(42, 171, 238, 0.5);
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.5);
  color: #eef4ff; font-size: 0.85rem;
  animation: skyToastIn 380ms ease both;
}
@keyframes skyToastIn { from { transform: translateY(16px); opacity: 0; } to { transform: none; opacity: 1; } }
.sky-nudge-toast .sky-x { top: 50%; transform: translateY(-50%); }
.sky-nudge-txt { line-height: 1.7; }

/* ═══ S3 — إضافات شاشة القفل على مودال tg-modal القائم ═══ */
.tg-modal { position: relative; }
.tg-modal-x { z-index: 3; }
.tg-gate-help { margin-top: 12px; font-size: 0.82rem; color: rgba(255, 255, 255, 0.6); }
.tg-gate-help a { color: #2AABEE; font-weight: 700; text-decoration: none; }
.tg-gate-help a:hover { text-decoration: underline; }

/* ═══ [Gate-4 د] شاشة القفل بوضع gate فوق عارض المواد ═══ */
/* #mvRoot على --z-fullsurface (12200) يعلو --z-modal (12100) ⇒ بمسار عارض
   المواد كانت شاشة القفل تُرسم تحته (نقرة «بلا أثر» وقفل تمرير عالق حتى
   يُغلق العارض). الرفع بوضع gate فقط وبالتوكنز حصراً — الوضع العادي لا يُمس.
   الجذر #tgLinkModalRoot نفسه سياق تراص (كل أبناء body مطبّق عليهم z) —
   رفع الغلاف وحده لا يكفي فنرفع الجذر متى احتوى وضع gate (:has؛ متصفح لا
   يعرفها = سلوك ما قبل الإصلاح، لا انحدار). ملء الشاشة يُعالج بالخروج منه
   قبل العرض (_showGate) لا بالطبقات. */
.tg-modal-overlay.tg-gate-mode { z-index: var(--z-gate, 12450); }
#tgLinkModalRoot:has(.tg-gate-mode) { z-index: var(--z-gate, 12450); }

/* ═══ الثيم الفاتح (light) — purple هو الافتراضي أعلاه ═══ */
:root[data-theme="light"] .sky-sheet {
  background: linear-gradient(160deg, #ffffff, #f4f6fb);
  border-color: rgba(34, 158, 217, 0.35);
  color: #1c2434; box-shadow: 0 -12px 44px rgba(15, 23, 42, 0.22);
}
:root[data-theme="light"] .sky-sheet p { color: #4a5568; }
:root[data-theme="light"] .sky-sheet-back { background: rgba(15, 23, 42, 0.4); }
:root[data-theme="light"] .sky-x { background: rgba(15, 23, 42, 0.06); color: #475569; }
:root[data-theme="light"] .sky-x:hover, :root[data-theme="light"] .sky-x:active { background: rgba(15, 23, 42, 0.12); color: #1c2434; }
:root[data-theme="light"] .sky-ghost { border-color: rgba(15, 23, 42, 0.18); color: #475569; }
:root[data-theme="light"] .sky-ghost:hover { background: rgba(15, 23, 42, 0.05); color: #1c2434; }
:root[data-theme="light"] .sky-nudge-toast { background: #ffffff; border-color: rgba(34, 158, 217, 0.45); color: #1c2434; box-shadow: 0 8px 30px rgba(15, 23, 42, 0.2); }
/* [Gate-4 ز-5] «واجهتك مشكلة؟» — خلفية المودال var(--bg-card) تتبع الثيم،
   والأبيض 60% غير مقروء على الفاتح */
:root[data-theme="light"] .tg-gate-help { color: rgba(30, 41, 59, 0.66); }
/* بطاقة S1 تبقى داكنة عمداً — تعيش فوق مشغّل فيديو داكن بالثيمين */

/* ═══ مرايا وضع الأداء — نفس شروط 100-performance-mode لأصناف sky ═══ */
/* الجوال/اللمس: سكريم أعمق بدل الزجاج (مرآة قائمة السكريم :99) */
@media (hover: none), (pointer: coarse) {
  .sky-sheet-back { background-color: rgba(4, 6, 12, 0.78); }
  :root[data-theme="light"] .sky-sheet-back { background-color: rgba(15, 23, 42, 0.45); }
}
/* perf-lite + prefers-reduced-motion: صفر حركة دخول (مرآة §8) */
html.perf-lite #skySheet .sky-sheet,
html.perf-lite .sky-s1-card,
html.perf-lite .sky-nudge-toast { animation: none !important; }
@media (prefers-reduced-motion: reduce) {
  #skySheet .sky-sheet, .sky-s1-card, .sky-nudge-toast { animation: none !important; }
  .sky-cta, .sky-ghost, .sky-x { transition: none !important; }
}

