/* ───────────────────────────────────────────────────────────────
   فُرصي — طبقة تخصيص فوق كود المنصات (NDS-vanilla 1.12.0)
   معزولة: لا تُعدَّل ملفات المكتبة، ولا style.css المشترك.
   الترتيب: knobs المكوّن ← إعادة ربط الرموز ← override تحت .fs-*
   ─────────────────────────────────────────────────────────────── */

/* 1) رابط تخطّي المحتوى — WCAG 2.2 معيار 2.4.1 (تجاوز الكتل).
      v1.12.0 لا تقدّم هذا المكوّن، فنبنيه برموز النظام لا بقيم صريحة. */
.fs-skip-link {
  position: absolute;
  inset-inline-start: var(--spacing-md, 1rem);
  inset-block-start: var(--spacing-md, 1rem);
  z-index: 1000;
  padding: var(--spacing-sm, .5rem) var(--spacing-lg, 1.5rem);
  border-radius: var(--radius-md, .5rem);
  background: var(--colors-primary-600, #1b8354);
  color: var(--colors-base-white, #fff);
  font-family: var(--nds-font-family);
  font-weight: 600;
  text-decoration: none;
  transform: translateY(-200%);
  transition: transform .15s ease-in-out;
}
/* الخصوصية مضاعفة عمدًا: قاعدة NDS للروابط
   :where(.nds-link, a):not(.nds-btn, .nds-card) تساوي (0,1,0) عبر :not،
   فتغلب عند التساوي. واللون يُعاد ضبطه في كل حالة تفاعلية. */
.fs-skip-link.fs-skip-link:link,
.fs-skip-link.fs-skip-link:visited,
.fs-skip-link.fs-skip-link:hover,
.fs-skip-link.fs-skip-link:active,
.fs-skip-link.fs-skip-link:focus,
.fs-skip-link.fs-skip-link:focus-visible {
  color: var(--colors-base-white, #fff);
  background: var(--colors-primary-600, #1b8354);
  text-decoration: none;
}
.fs-skip-link:focus-visible,
.fs-skip-link:focus {
  transform: translateY(0);
  /* حلقة تركيز NDS المزدوجة: 2px داكن + 3px فاتح */
  outline: 2px solid var(--colors-neutral-900, #111927);
  outline-offset: 3px;
  box-shadow: 0 0 0 3px var(--colors-base-white, #fff);
}
@media (prefers-reduced-motion: reduce) {
  .fs-skip-link { transition: none; }
}

/* 2) الشعار: عبر knob المكوّن الموثّق --brand-logo-height (افتراضيه 40px).
      الشعار الرسمي تجميعة تحمل الاسم العربي والإنجليزي، فيحتاج ارتفاعًا
      أكبر ليُقرأ. 56px داخل شريط ارتفاعه 72px. */
.nds-main-nav { --brand-logo-height: 3.5rem; }

/* 3) الختم الرقمي: الرمز الافتراضي clamp(10px, 1.25vw, 14px) ينزل إلى 10px
      على الجوال فيصعب قراءة «كيف تتحقق؟». نعيد ربط الرمز داخل المكوّن وحده
      — لا نغيّر الرمز عالميًا ولا نلمس ملفات المكتبة. */
.nds-topbar .nds-digitalStamp-tab {
  --typo-text-clamp-sm-FS: clamp(13px, 1.2vw, 16px);
}
#nds-digitalStamp-verify-text { font-weight: 600; }

/* 4) بطاقات البوابات: تتساوى في الارتفاع وتُثبّت الإجراءات أسفلها
      حتى لا تتفاوت الأزرار باختلاف طول الوصف. */
.fs-gateways .nds-card { block-size: 100%; }
.fs-gateways .nds-card-content {
  display: flex;
  flex-direction: column;
  block-size: 100%;
}
.fs-gateways .nds-card-actions { margin-block-start: auto; }

/* 5) شعار الوضعين: الملوّن بلا شفافية فيصلح على الأبيض،
      والأبيض بشفافية فيصلح على الداكن. التبديل بالسمة لا بوسيط الوسائط
      حتى يتبع اختيار المستخدم في NDS لا تفضيل النظام وحده. */
.fs-mark-dark { display: none; }
:root[data-theme~="dark"] .fs-mark-light { display: none; }
:root[data-theme~="dark"] .fs-mark-dark  { display: block; }

/* 6) توسيط الشعار حين تنطوي القائمة على الجوال.
      مربوط بحالة زر الهمبرغر لا بعرض ثابت، لأن NDS تقرر الانطواء
      بقياس الفائض لا بنقطة توقف — فلو ربطناه بعرض لاختلّ التزامن.
      لا توفّر المكتبة آلية لهذا، فهو تجاوز مشروع محصور. */
.nds-main-nav:has(.nds-nav-minimal:not([hidden])) > .nds-nav-container {
  position: relative;
  justify-content: center;
}
.nds-main-nav:has(.nds-nav-minimal:not([hidden])) .nds-nav-minimal {
  position: absolute;
  inset-inline-start: 0;
  margin: 0;
}

/* 8) شعارات الجهات: 85 شعارًا بأحجام متفاوتة داخل nds-swiper.
      التخطيط للمكتبة وحدها — لا شبكة هنا، لأن display:grid كان
      يلغي تخطيط السلايدر فينهار الغلاف وينقلب الترقيم رأسيًا.
      يبقى هنا توحيد مقاس الشعار فقط. */
.fs-partners .nds-swiper-slide { display: flex; align-items: center; }
.fs-partners img {
  inline-size: 100%;
  block-size: 4.5rem;
  object-fit: contain;
  filter: grayscale(1);
  opacity: .75;
  transition: filter .2s ease-in-out, opacity .2s ease-in-out;
}
.fs-partners img:hover { filter: grayscale(0); opacity: 1; }
@media (prefers-reduced-motion: reduce) { .fs-partners img { transition: none; } }
:root[data-theme~="dark"] .fs-partners img { background: var(--colors-base-white, #fff); border-radius: var(--radius-sm, .25rem); padding: var(--spacing-xs, .25rem); }

/* 9) شبكة المعرض: صور بأحجام متفاوتة بارتفاع موحّد. */
.fs-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
  gap: var(--spacing-lg, 1rem);
}
.fs-gallery img {
  inline-size: 100%;
  block-size: 11rem;
  object-fit: cover;
  border-radius: var(--radius-md, .5rem);
}
.fs-video { inline-size: 100%; block-size: auto; border-radius: var(--radius-md, .5rem); }

/* ------------------------------------------------------------------
   10) بطاقات الفرص داخل السلايدر
   تتساوى ارتفاعات الشرائح بحكم المكتبة، وكان nds-card-text يتمدّد
   فيدفع الوسم إلى منتصف الفراغ. هنا يُجمَع النص والوسم أعلى البطاقة
   ويبقى الإجراء وحده في الأسفل — كما في النسخة المنشورة.
   محصور بأقسام الفرص فقط عبر data-fs-kind.
   ------------------------------------------------------------------ */
[data-fs-kind] .nds-card-text { flex: 0 0 auto; }
[data-fs-kind] .nds-card-actions { margin-block-start: auto; }

/* ------------------------------------------------------------------
   11) لوحة فلترة الفرص
   nds-card في المكتبة بعرض بطاقة ثابت (360px)؛ هنا اللوحة شريط
   يمتدّ بعرض القسم ويحوي صفّ البحث وصفّ الرقائق والعدّاد.
   ------------------------------------------------------------------ */
.fs-filter-panel {
  inline-size: 100%;
  max-inline-size: none;
  gap: var(--spacing-lg, 0.75rem);
  margin-block-end: var(--spacing-xl, 1.5rem);
}
.fs-filter-panel .nds-search-box { inline-size: 100%; }
.fs-filter-panel .nds-auto-fill {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--spacing-md, 0.5rem);
}
.fs-filter-panel .nds-chips { flex: 1 1 auto; }

/* ------------------------------------------------------------------
   12) عنصران صغيران لا تشحنهما المكتبة
   كانا يحملان بادئة nds- خطأً فتوهما أنهما من المكتبة. أُعيدا إلى
   بادئة المشروع fs- وبُنيا من الرموز الدلالية وحدها.
   nds-empty و nds-empty-message من المكتبة ويبقيان كما هما.
   ------------------------------------------------------------------ */
.fs-eyebrow {
  display: block;
  color: var(--colors-primary-600, #1b8354);
  font-size: var(--typo-text-sm-size, .875rem);
  font-weight: 600;
  margin-block-end: var(--spacing-xs, .25rem);
}
.fs-empty-content { display: flex; flex-direction: column; gap: var(--spacing-xs, .25rem); }
.fs-empty-description { color: var(--colors-neutral-600, #4d5761); }

/* ------------------------------------------------------------------
   13) مساحة لمس نقاط تنقّل السلايدر
   النقطة 16px بصريًا (‎--_bullet-size‎ في nds-lg). معيار 2.5.8 يطلب
   24×24: تُوسَّع منطقة اللمس بطبقة شفافة دون أي تغيير في الشكل.
   ------------------------------------------------------------------ */
.nds-swiper-pagination .nds-bullet { position: relative; }
.nds-swiper-pagination .nds-bullet::after {
  content: "";
  position: absolute;
  inset: 50%;
  inline-size: 24px;
  block-size: 24px;
  translate: 50% -50%;
}

/* ——— زر الدعم العائم ———
   nds-fab مكوّن رسمي؛ هنا فقط مقاس شعار «حيّاك» داخله حتى لا يُشوَّه،
   والشعار بنسخته البيضاء لأن ألوانه الأصلية (كحلي وسماوي) لا تُعاد تلوينها. */
.fs-support-fab .fs-support-fab-logo { inline-size: 60%; block-size: auto; display: block; }

/* ——— التدريب والتوظيف بالأرقام ———
   البطاقة مكوّن رسمي بنمط metric (nds-card-metric-value يرسم الرقم الكبير).
   nds-card بعرض بطاقة ثابت؛ هنا تمتدّ بعرض عمود الشبكة. */
.fs-stat-card { inline-size: 100%; max-inline-size: none; }
/* ——— صفحة البحث ———
   المكوّنات رسمية (nds-form-container · nds-card · nds-grid · nds-pagination)؛
   هنا تخطيط صف البحث فقط. */
/* nds-card بعرض بطاقة ثابت (360px) كما في لوحة الفلترة؛ هنا نموذج يمتدّ بعرض القسم. */
.fs-search-form { inline-size: 100%; max-inline-size: none; padding: var(--spacing-xl); }
.fs-search-row { display: grid; gap: var(--spacing-lg); align-items: end; }
@media (min-width: 768px) {
  .fs-search-row { grid-template-columns: 1fr auto; }
  /* قيم الوجه نصّ حرّ يدخله الشركاء (t.location/t.degree)، فقد تطول حتى اسم جهة كامل؛
     لذا عمود أوسع بحدّ أعلى حتى لا يزاحم حقل البحث. */
  .fs-search-row:has(.fs-search-facet) { grid-template-columns: 1fr minmax(220px, 300px) auto; }
}
/* المكتبة ترسم سهم القائمة في ::after فوق حافة الحقل ولا تحجز له مساحة داخل المدخل،
   والمدخل بلا قصّ — فتمرّ القيمة الطويلة تحت السهم وتُقطع في منتصف الحرف.
   نحجز عرض السهم (20px) وفجوته (spacing-md) ونُنهي الزائد بثلاث نقاط. */
.fs-search-facet .nds-select-input {
  padding-inline-end: calc(var(--spacing-3xl) + var(--spacing-md));
  text-overflow: ellipsis;
}
.fs-search-submit { align-self: end; }
/* ——— شريط التبويب في صفحة البحث ———
   المكوّن من المكتبة (nds-tab-list-container · nds-tab-list · nds-tab · nds-indicator)،
   لكنّ ألسنته روابط تنقّل لا أزرار بلوحات، فلا يُلفّ بـ.nds-tabs: ذلك الصنف يفترض
   وجود nds-tab-panel، وبدونها يرفض المحرّك التهيئة فيبقى الشريط على هيئة هيكل تحميل.
   ولذلك نُعيد هنا تصريحَي .nds-tabs (مقاس المؤشّر) و.nds-divided (الفاصل السفلي)
   بقيمهما ورموزهما نفسها، ونُلغي الخط السفلي الذي يرثه الرابط. */
.fs-search-tabs { --btn-indicator-size: 3px; margin-block-end: var(--spacing-lg); }
.fs-search-tabs::after {
  content: ""; position: absolute; inset-block-end: 0; inset-inline: 0;
  block-size: var(--btn-indicator-size);
  background-color: var(--divider-color);
  border-radius: var(--radius-full);
  z-index: -1;
}
.fs-search-tabs .nds-tab { text-decoration: none; }
/* المكتبة تُبرز اللسان الجاري بـ[aria-selected=true]، وهي سمة لا تصحّ على رابط تنقّل؛
   فتُربط التصريحات نفسها بـ[aria-current=page]. قيست الحالة المرسومة فعلًا في 1.12.0
   (مؤشّر أخضر 3px + لون نصّ أغمق)، وهي ما يُعاد هنا تمامًا — بلا إطار. */
.fs-search-tabs .nds-tab[aria-current="page"]::before { background-color: var(--border-primary); }
.fs-search-tabs .nds-tab[aria-current="page"] .nds-label { color: var(--text-default); filter: drop-shadow(0 0 0.02em currentColor); }
/* النموذج والتبويبات ونتائجها كتلة واحدة؛ تُقلَّص المسافات بينها دون المساس بالقسم. */
.fs-search-section { padding-block: var(--spacing-xl) 0; }
.fs-results-section { padding-block-start: var(--spacing-2xl); }
.fs-result-card { inline-size: 100%; max-inline-size: none; block-size: 100%; }
.fs-result-card .nds-card-text { flex: 0 0 auto; }
.fs-result-card .nds-card-actions { margin-block-start: auto; }
