/* ══════════════════════════════════════════════════════════════════════════
   شركة برو — طبقة الحاسبة
   ──────────────────────────────────────────────────────────────────────────
   قانون هذا الملف الوحيد، ولا يُخالَف:
   لا قاعدة واحدة خارج @media (min-width:720px) فما فوق.
   الهاتف مُنجَز والمالك راضٍ عنه، وأي بكسل يتحرّك تحت ٧٢٠ خطأ.
   (كتلة الطباعة في آخر الملف مقيّدة بـ min-width:720px أيضاً، وورقة
    A4 عرضها ٧٩٤ بكسل وLetter ٨١٦، فكلتاهما تتجاوز الحدّ.)

   الفكرة الحاكمة: الموقع على الحاسبة ليس «ضيّقاً» بل مفروداً. كل صورة
   فيه عرضُها يقود ارتفاعها، فكل بكسل عرض إضافي يشتري بكسلات طول —
   الصفحة الرئيسية تطول على الشاشة الأكبر بدل أن تقصر. لذلك عمل هذه
   الطبقة الأول تحويل العرض إلى كثافة لا إلى تمرير: سقوف قراءة أولاً،
   ثم أعمدة حيث يخدم المعنى، ثم مقياس طباعي سائل يشمل حبر البطاقات.

   ثلاث قيم فيزيائية لا مقابل منطقي لها، صحيحة للعربية RTL وحدها،
   وهذي قائمة ما ينقلب صامتاً يوم تُشحن النسخة الإنكليزية:
     ١) قناع الشريط: linear-gradient(to left,…) ← يصير to right
     ٢) هالة الافتتاحية .hero::before — شُحنت هنا نسخة :dir(ltr) جاهزة
     ٣) سهم select.inp: background-position:left (داخل <style> الرئيسية)

   عدد !important في الملف: واحد، ومبرَّر بتعليق في موضعه.
   ══════════════════════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════════
   ١ · الرموز — القفص والمقياس
   ═══════════════════════════════════════════════════════════════ */

/* ٧٢٠ — أوّل عرض تتّسع فيه بطاقتان بعرض ٣٢٠ داخل قفص محترم:
   2×320 + 24 فاصل + 2×32 هامش = 728. تحت هذا العمودُ الثاني كذبة.
   هنا لا يُعاد تخطيط أيّ قسم إطلاقاً — قفص وسقوف قراءة ورفعة طباعية
   أولى فقط. السبب: ٧٢٠–١٠٢٣ هو مجال الآيباد العمودي، والمالك قال
   صراحةً إن الآيباد مطلوب وهو راضٍ عنه. */
@media (min-width:720px){
  :root{
    --dg:32px;            /* هامش الحاسبة — --pad يبقى «هامش الهاتف» */
    --dw:760px;           /* قفص المحتوى شاملاً هامشيه */
    --dwide:760px;        /* قفص الأشرطة الزاحفة */
    --dsec:52px;          /* إيقاع الأقسام */
    --dgap:20px;
    --top-h:58px;         /* ارتفاع الشريط العلوي — يطابق قيمة الصفحات، فلا يتحرّك شي */

    /* ── عرض القراءة — بالـch لا بالنسبة المئوية ولا بالـvw أبداً ──
       قياس في IBM Plex Sans Arabic: متوسط الحرف العربي 0.336em،
       ووحدة ch (عرض الصفر) 0.556em. أي أن ch تبالغ في العربية
       ١٫٦٥ مرّة، و٧٥ حرفاً عربياً = 45.2ch لا 75ch. الفخّ الشائع
       max-width:75ch يعطي ١٢٤ حرفاً عربياً بالسطر.
       ولأن السقوف بالـch فهي تتمدّد مع كل رفع بحجم الخط تلقائياً —
       وهذا بالضبط ما يجعل رفع المقياس لا يكسر عرض القراءة، وما
       يجعل تكبير المتصفّح ٢٠٠٪ لا يصطدم بقفص جامد. */
    --measure:46ch;       /* ≈٧٦ حرفاً — سقف نصّ الجسم */
    --measure-lede:38ch;  /* ≈٦٣ حرفاً — المقدّمات وأسطر الأقسام */
    --measure-note:34ch;  /* ≈٥٦ حرفاً — الحواشي */

    /* ── السُّلّم الطباعي ──
       clamp بمنحدر vw واحد لكل درجة، فالتدرّج سائل بلا قفزة عند أي
       نقطة انكسار. الحدّ الأدنى لكل درجة مضبوط ليساوي قيمة الهاتف
       عند ٧٢٠ بالضبط، فلا تُحسّ حافّة الدخول:
         h1   عند ٧١٩ = 48.8px ← وعند ٧٢٠ = 47.9px
         h2   عند ٧١٩ = 26.6px ← وعند ٧٢٠ = 27.6px
         lead عند ٧١٩ = 19.2px ← وعند ٧٢٠ = 19.7px
       كل قيمة هنا line-height ≥ 1.22، ولا letter-spacing على أي
       محدّد يمكن أن يحمل حرفاً عربياً. */
    --d-h1  :clamp(2.70rem, 1.15rem + 4.10vw, 4.00rem);
    --d-h2  :clamp(1.72rem, 0.95rem + 1.72vw, 2.50rem);
    --d-h3  :clamp(1.45rem, 0.95rem + 0.95vw, 1.80rem);
    --d-lead:clamp(1.20rem, 0.95rem + 0.62vw, 1.55rem);
    --d-lede:clamp(1.00rem, 0.90rem + 0.28vw, 1.18rem);
    --d-body:clamp(0.96rem, 0.88rem + 0.22vw, 1.10rem);
  }

  /* شريط التمرير يحجز مكانه دائماً: صفحات الأعمال والوظائف والأكاديمية
     يتغيّر ارتفاعها عند كل ضغطة .fchip، فيظهر الشريط ويختفي وينزاح
     المحتوى ١٥ بكسل أفقياً عند كل تصفية. */
  html{scrollbar-gutter:stable}
}

/* ١٠٢٤ — نقطة إعادة التركيب. حقيقتان تحطّان معاً: ثلاث بطاقات تتّسع
   (3×300 + 2×24 + 2×40 = 988، و٣٠٠ أضيق عرض ينجو فيه رأس الباقة:
   صورة الفئة + الاسم + السعر)، وارتفاع الشاشة يسمح ببطلٍ من عمودين
   بلا أن يُدفع الزرّ تحت الطيّة. هنا فقط تنقلب الكاروسيلات شبكات
   وتنقسم الأقسام الطويلة عمودين. */
@media (min-width:1024px){
  :root{
    --dg:40px;
    --dw:1080px;
    --dwide:1180px;
    --dsec:64px;
    --dgap:24px;
    --top-h:64px;
  }
}

/* ١٤٠٠ — الأعمدة تزيد ولا شي آخر: ستّة أسباب بصفّ واحد، وأربع باقات
   للمتجر بصفّ واحد (4×320 + 3×24 = 1352)، وخمس رقاقات تقنية. */
@media (min-width:1400px){
  :root{
    --dg:48px;
    --dw:1200px;
    --dwide:1360px;
    --dsec:72px;
    --dgap:28px;
  }
}

/* ١٧٦٠ — القفص متجمّد. لا تخطيط يتغيّر ولا خط يكبر؛ الهوامش وحدها
   تتّسع. الصفحة التي تستمرّ بالنموّ مع الشاشة تفقد وحدة قياسها. */
@media (min-width:1760px){
  :root{--dg:64px}
}


/* ═══════════════════════════════════════════════════════════════
   ٢ · القفص والإيقاع العام
   ═══════════════════════════════════════════════════════════════ */
@media (min-width:720px){
  /* section.bleed>.wrap-in في tokens.css أثقل تخصيصاً من .wrap-in
     وحدها، فلا بدّ من ذكره صراحةً وإلا بقي الهامش ٢٠ بكسل. */
  .wrap,
  .wrap-in,
  section.bleed>.wrap-in,
  footer.wrap{
    max-width:var(--dw);
    margin-inline:auto;
    padding-inline:var(--dg);
  }
  /* المرساة تحت الشريط اللاصق: بلا هذا يختفي عنوان القسم تحته عند
     كل قفزة داخلية. صفحة الأسعار لها قيمتها الخاصّة (القسم ٧/٢). */
  section{padding-block:var(--dsec);scroll-margin-block-start:calc(var(--top-h) + 16px)}

  /* الفاصل أعرض قليلاً من المحتوى فيُقرأ إطاراً لا خطاً مقطوعاً */
  .sep{max-width:calc(var(--dw) + 120px);margin-inline:auto}
  hr:not(.sep){max-width:var(--dw);margin-inline:auto}

  /* ── سقوف القراءة ──
     السطر العربي بعرض ١٤٠٠ بكسل = ٢٦٠ حرفاً، أي ٣٫٥× حدّ القراءة؛
     العين تفقد بداية السطر التالي فتعيد قراءة السطر نفسه. */
  .lede,
  .phero .lede,
  .msec .lede,
  .whero .lede,
  .sub,
  .desc,
  .svcsec .desc,
  .mh .hint{max-width:var(--measure-lede);margin-inline:auto}
  .band p,
  .faq .ans,
  .mapcard .hint,
  .up .d,
  .mwhy .d,
  .dsub{max-width:var(--measure)}
  /* .note داخل النموذج في الرئيسية شيء، و#note في صفحات الفهرس شيء
     آخر تماماً — نفس الصنف ومحتوى مختلف. الأوّل يُطابَق بحاويته. */
  .oform .note,
  .mnote{max-width:var(--measure-note);margin-inline:auto}

  /* ── الشريط العلوي ──
     يبقى كامل العرض (هو والذيل وحدهما يفيضان)، ومحتواه يحاذي القفص.
     كان يأخذ --dwide لا --dw، فالشعار يقف عند 1388 والعنوان تحته عند
     1308 على شاشة 1512: انزياح 80 بكسل على كل جهة (و50 بين 1024
     و1399). القفص هو --dw، وهو ما يحاذيه الذيل والمحتوى كلّه، فصار
     السطر يطابق نيّة تعليقه. --dwide يبقى لشبكة الأعمال ذات الأعمدة
     الأربعة وحدها، وهي استثناء مقصود لا مرجع محاذاة. */
  .top-in{
    height:var(--top-h);
    max-width:var(--dw);
    margin-inline:auto;
    padding-inline:var(--dg);
  }
}


/* ═══════════════════════════════════════════════════════════════
   ٣ · المقياس التحريري
   القاعدة: العنوان يكبر أسرع من الجسم، والجسم يكبر أبطأ من الفراغ.
   هذا ما يصنع إحساس «صفحة مصمَّمة» بدل «هاتف ممطوط».
   ═══════════════════════════════════════════════════════════════ */
@media (min-width:720px){
  h2{font-size:var(--d-h2);line-height:1.26}
  /* محدّدات أقوى تخصيصاً داخل صفحات بعينها تسبق h2 المجرّدة */
  .svcsec h2{font-size:var(--d-h2);line-height:1.26}
  .block h2{font-size:clamp(1.15rem,1rem + .45vw,1.42rem);line-height:1.35}

  .sub,
  .desc,
  .svcsec .desc{font-size:var(--d-body);line-height:1.88}
  .lede,
  .phero .lede,
  .msec .lede,
  .whero .lede{font-size:var(--d-lede);line-height:1.85}
  .eyebrow{font-size:.9rem;margin-bottom:.7rem}
}


/* ═══════════════════════════════════════════════════════════════
   ٤ · حبر البطاقات — نصف المعركة
   بطاقة بعرض ٣٤٠ بكسل تُقرأ من ٦٠ سم تحتاج حبراً أكبر من نفس
   البطاقة على هاتف يُقرأ من ٣٠ سم. تكبير العناوين وحدها يترك داخل
   البطاقة بمقاس هاتف، وهذا بالضبط ما يفضح «الهاتف الموسّع».
   ═══════════════════════════════════════════════════════════════ */
@media (min-width:720px){
  /* بطاقة العمل — في شريط الرئيسية وفي شبكة صفحة الأعمال */
  .wcard .meta{padding:1.05rem 1.15rem 1.2rem;gap:.36rem}
  .wcard .nm{font-size:1.12rem}
  .wcard .rs{font-size:.91rem;line-height:1.72}
  .wcard .cat{font-size:.78rem}
  .wcard .ft{font-size:.79rem;padding-top:.8rem}

  /* بطاقة الخدمة */
  .svc .t{font-size:1.1rem}
  .svc .d{font-size:.89rem;line-height:1.72}
  .svc .pr .val{font-size:1.24rem}
  .svc .pr .from,
  .svc .pr .dur{font-size:.73rem}
  .svc .t,
  .svc .d,
  .svc .pr{margin-inline:1.15rem}
  .svc .ic img{max-height:116px}

  /* المرحلة */
  .stp{padding:1.15rem 1.15rem 1.25rem}
  .stp .t{font-size:1.08rem}
  .stp .d{font-size:.92rem;line-height:1.78}
  .stp .w{font-size:.81rem}

  /* الرأي */
  .q{padding:1.2rem 1.25rem}
  .q .tx{font-size:1rem;line-height:1.85}
  .q .n{font-size:.9rem}
  .q .c{font-size:.77rem}
  .q .av{width:36px;height:36px;font-size:.88rem}

  /* العرض */
  .offer .bd{padding:1.2rem 1.25rem 1.35rem}
  .offer .t{font-size:1.16rem}
  .offer .s{font-size:.92rem;line-height:1.78}
  .offer .now{font-size:1.85rem}
  .offer .was{font-size:1rem}

  /* سبب من «ليش إحنا» */
  .why{padding:1.1rem .9rem 1.2rem}
  .why .t{font-size:.98rem}
  .why .d{font-size:.83rem;line-height:1.7}
  .why .ph{width:68px;height:68px}

  /* بطاقة الباقة — .plans>.plan لا .plan المجرّدة:
     work.html فيها .plan مختلف تماماً (صفّ باقة داخل عرض التفاصيل). */
  .plans>.plan .tier img{max-height:130px}
  .plans>.plan .head{padding:.3rem 1.2rem .95rem}
  .plans>.plan .nm{font-size:1.18rem}
  .plans>.plan .dur{font-size:.81rem}
  .plans>.plan .val{font-size:1.58rem}
  .plans>.plan .from{font-size:.71rem}
  .plans>.plan .feats{padding:.85rem 1.2rem .45rem;gap:.5rem}
  .plans>.plan .feats li{font-size:.92rem;line-height:1.7}
  .plans>.plan .more{font-size:.86rem;padding-inline:1.2rem;min-height:48px}
  .plans>.plan .cta{margin:.6rem 1.2rem 1.2rem;min-height:52px;font-size:1.04rem}

  /* الموشن */
  .mkind{padding:1.15rem 1.2rem 1.25rem}
  .mkind .nm{font-size:1.08rem}
  .mkind .d{font-size:.92rem;line-height:1.85}
  .mkind .len{font-size:.79rem}
  .mdeal{padding:1.15rem 1.2rem 1.3rem}
  .mdeal .nm{font-size:1.08rem}
  .mdeal li{font-size:.92rem;line-height:1.85}
  .mdeal .ph{width:70px;height:70px}
  .mrow{padding:1.02rem 1.4rem;gap:1rem;min-height:70px}
  .mrow .d{font-size:1.01rem}
  .mrow .p{font-size:1.12rem}
  .mrow .tg{font-size:.75rem}
  .mrow .pv{min-width:7rem}
  .mwhy .t{font-size:1.03rem}
  .mwhy .d{font-size:.92rem;line-height:1.88}
  .mh h3{font-size:var(--d-h3)}
  .mh .hint{font-size:var(--d-body);line-height:1.88}
  .mfacts b{font-size:1.18rem}
  .mfacts i{font-size:.77rem}

  /* خدمات الرفع */
  .up .bd{padding:1.15rem 1.25rem 1.3rem}
  .up .nm{font-size:1.14rem}
  .up .val{font-size:1.3rem}
  .up .d{font-size:.93rem;line-height:1.85}
  .up .guar{font-size:.87rem;line-height:1.75}
  .ucard{padding:1.1rem .9rem 1.2rem}
  .ucard .ph{width:66px;height:66px}
  .ucard .val{font-size:1.2rem}
  .ucard .nm{font-size:.94rem}
  .ucard .n{font-size:.79rem}

  /* بطاقات الوظائف والكورسات */
  .jcard .meta,
  .ccard .meta{padding:1rem 1.15rem 1.2rem}
  .jcard .nm,
  .ccard .nm{font-size:1.12rem}
  .ccard .rs{font-size:.91rem;line-height:1.75}
  .jcard .cat,
  .ccard .cat{font-size:.78rem}
  .jcard .ft,
  .ccard .ft{font-size:.79rem;padding-top:.8rem}
  .jcard .pay b{font-size:1.22rem}
  .ccard .pr b{font-size:.99rem}
}


/* ═══════════════════════════════════════════════════════════════
   ٥ · الكاروسيل — أيّه يبقى شريطاً وأيّه ينفرد شبكةً
   ──────────────────────────────────────────────────────────────
   القاعدة التي حكمت المسارات الثمانية:
     شبكة  — حين تكون المجموعة محدودة وقابلة للمقارنة ويجب أن يراها
             الزائر كاملةً ليقرّر.
     شريط  — حين تكون مفتوحة ومتجانسة والغرض تصفّح لا مقارنة.

   يبقى شريطاً: #rail (أعمالنا — مجموعة مفتوحة، ولها صفحة كاملة بزرّ
     صريح تحتها؛ ولو انفرشت ثماني بطاقات جداراً لدُفعت «خدماتنا»،
     وهي التي تبيع، تحت الطيّة) و#quotes (شهادات مفتوحة، المعروض
     خمسة من ثمانية، وأطوال النصوص متفاوتة فيخرج الصفّ الأخير مبتوراً).

   ينفرد شبكةً: #svc (ستّ خدمات = التصنيف الكامل بأسعاره؛ مجموعة
     مقارنة بحكم تعريفها) · مراحل الشغل (تسلسل، وما يُسحَب لا يُفهَم
     تسلسلاً) · #whygrid · #offers-list (عنصران — كاروسيل من عنصرين
     على شاشة ١٤٤٠ حادثة لا مكوّن) · .trk.plans و#mkinds و#mdeals.
     وصفحة الأسعار لا يبقى فيها كاروسيل واحد: المقارنة هي غرض الصفحة،
     وإخفاء نصف جدول أسعار خلف سحبة إصبع أسوأ ما تفعله صفحة أسعار.

   التحويل بالـCSS وحده؛ carousel.js لا يُمسّ. لذلك خمسة أشياء لا بدّ
   من نقضها، وأربعة منها تُنسى عادة — مذكورة برقمها أدناه.
   والتحويل كلّه عند ١٠٢٤ لا قبله: ٧٢٠–١٠٢٣ آيبادٌ راضٍ عنه المالك.
   ═══════════════════════════════════════════════════════════════ */

/* ٥/١ — الشريطان الباقيان: أوّل بطاقة تحاذي حافّة المحتوى تماماً،
   والشريط يفيض من الجهة المقابلة فيبقى ظاهراً أن وراءه المزيد. */
@media (min-width:720px){
  .car:has(#rail) .trk,
  .car:has(#quotes) .trk{
    /* الهامش يُضاف داخل الحساب، وإلّا بدأت البطاقة عند حافّة القفص
       بينما يبدأ عنوان القسم بعدها بمقدار --dg — انزياح مرئي بين
       الشريط ورأسه. 100% لا 100vw: الأخيرة تشمل عرض شريط التمرير. */
    --rail-edge:max(var(--dg), calc((100% - var(--dw)) / 2 + var(--dg)));
    padding-inline:var(--rail-edge);
    scroll-padding-inline-start:var(--rail-edge);
    padding-block:10px 14px;      /* متنفّس لظلّ البطاقة ورفعتها عند المرور */
    gap:var(--dgap);
    -webkit-mask-image:linear-gradient(to left,transparent,#000 var(--rail-edge),
                       #000 calc(100% - var(--rail-edge)),transparent);
            mask-image:linear-gradient(to left,transparent,#000 var(--rail-edge),
                       #000 calc(100% - var(--rail-edge)),transparent);
  }
  .car .bar{margin-inline:var(--dg)}

  /* carousel.js يضع tabindex="0" و role="group" على كل .trk، وحلقة
     التركيز العامة في tokens.css لا تغطّي إلا a/button/input/select/
     textarea/summary — فالمسار يبقى محطّة تبويب بلا أثر مرئي.
     لا يمكن نزع السمة بـCSS، فعلى الأقل يبان أين وقف المستخدم. */
  .car .trk:focus-visible{
    outline:2.5px solid var(--o700);outline-offset:4px;border-radius:var(--r-m);
    box-shadow:0 0 0 2px var(--ground), 0 0 0 6px rgba(189,60,0,.18);
  }
}

/* ٥/٢ — التحويل إلى شبكات */
@media (min-width:1024px){
  #svc, #whygrid, #offers-list, #mkinds, #mdeals, .trk.plans,
  .car[data-label="مراحل الشغل"]>.trk{
    display:grid;
    gap:var(--dgap);
    overflow:visible;
    scroll-snap-type:none;
    cursor:auto;
    padding-block:0;
    scroll-padding-inline-start:0;
    /* ١ — بدونه تبقى الحافّتان متلاشيتين فتُقرأ البطاقة الطرفية مقصوصة */
    -webkit-mask-image:none;
            mask-image:none;
  }
  /* هذي المسارات داخل section.bleed أي بلا هامش جانبي أصلاً، فلولا
     القفص هنا لامتدّت لحافّة الشاشة. و.trk.plans وحدها تعيش داخل
     section.svcsec.wrap المبطّن سلفاً، فتُستثنى في ٧/٤. */
  #svc, #whygrid, #offers-list, #mkinds, #mdeals,
  .car[data-label="مراحل الشغل"]>.trk{
    max-width:var(--dw);
    margin-inline:auto;
    padding-inline:var(--dg);
  }
  /* ٢ — flex-basis يُهمَل داخل الشبكة، أمّا max-width فلا يُهمَل:
         بدون هذا تبقى كل بطاقة محبوسة عند --cmax (320/340/180). */
  #svc>*, #whygrid>*, #offers-list>*, #mkinds>*, #mdeals>*, .trk.plans>*,
  .car[data-label="مراحل الشغل"]>.trk>*{
    max-width:none;
    scroll-snap-align:none;
  }
  /* ٣ — عنصر الحشوة الأخير كان عرضه ٨ بكسل داخل flex، ويصير خليّة
         كاملة داخل الشبكة. الرئيسية تستعمل <span></span> وصفحة
         الأسعار تستعمل <i class="spc"></i>، وكلاهما فارغ. */
  #svc>:last-child:empty, #whygrid>:last-child:empty,
  #offers-list>:last-child:empty, #mkinds>:last-child:empty,
  #mdeals>:last-child:empty, .trk.plans>:last-child:empty,
  .car[data-label="مراحل الشغل"]>.trk>:last-child:empty,
  .trk>.spc{display:none}
  /* ٤ — .car .trk::after{content:"";flex:0 0 1px} يصير صفّاً كامل العرض */
  #svc::after, #whygrid::after, #offers-list::after, #mkinds::after,
  #mdeals::after, .trk.plans::after,
  .car[data-label="مراحل الشغل"]>.trk::after{content:none}

  /* ٥ — شريط التقدّم والعدّاد صارا يكذبان على مسار لا يُمرَّر.
         تنبيه دقيق: paint() في carousel.js يخرج عند max<=0 قبل أن
         يكتب النصّ، فالعدّاد لا «يتجمّد على 1 من 6» بل يبقى فارغاً
         تماماً وشريط التقدّم بلا تحجيم. الحالتان عطبٌ بالرسم. */
  .car .bar{display:none}
  .car:has(#rail) .bar,
  .car:has(#quotes) .bar{display:flex}
  .car.grab .trk{cursor:auto}
  .car.grab:has(#rail) .trk,
  .car.grab:has(#quotes) .trk{cursor:grab}

  /* عدد الأعمدة لكل مجموعة */
  #svc        {grid-template-columns:repeat(3,minmax(0,1fr))}
  #whygrid    {grid-template-columns:repeat(3,minmax(0,1fr))}
  #offers-list{grid-template-columns:repeat(2,minmax(0,440px));justify-content:center}
  #mdeals     {grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}
  /* خمس مراحل متتابعة: صفّ واحد، لأن مسيرةً تُسحب لا تُقرأ مسيرةً */
  .car[data-label="مراحل الشغل"]>.trk{
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:16px;
  }
  /* أنواع الموشن خمسة بالضبط (مصفوفة MKIND في pricing-app.js):
     ستّة أعمدة وهميّة تعطي ٣ ثم ٢ بلا صفّ أخير مبتور.
     تحذير: لو تغيّر طول MKIND فهذي الثلاثة أسطر تتغيّر معه. */
  #mkinds{grid-template-columns:repeat(6,minmax(0,1fr))}
  #mkinds>.mkind{grid-column:span 2}
  #mkinds>.mkind:nth-child(4),
  #mkinds>.mkind:nth-child(5){grid-column:span 3}

  /* الشريطان الباقيان: بطاقة جزئية ظاهرة عمداً = دعوة للتمرير.
     لو امتلأ الصفّ ببطاقات كاملة قُرئ شبكةً مكسورة ولم يُمرَّر أبداً.
     النسبة تُحسب من صندوق محتوى المسار بعد طرح --rail-edge من
     الجهتين، لا من عرض الشاشة. */
  .car:has(#rail),
  .car:has(#quotes){--cw:32%;--cmax:340px}
}

@media (min-width:1400px){
  /* ستّة أسباب قصيرة بصفّ واحد: البطاقة ~١٧٧ بكسل تكفي قرصاً ٦٨
     وعنوان كلمتين وسطراً من ستّ كلمات. */
  #whygrid{grid-template-columns:repeat(6,minmax(0,1fr))}
  .car:has(#rail),
  .car:has(#quotes){--cw:30%;--cmax:340px}
}


/* ═══════════════════════════════════════════════════════════════
   ٦ · الصفحة الرئيسية — mobile.html
   ═══════════════════════════════════════════════════════════════ */

/* ٦/١ — الافتتاحية.
   أسوأ ما في القياسات: زرّان عرض كلٍّ منهما ٦٩٤ بكسل، وثلاث حقائق
   موزّعة على ١٤٠٠، وصورة بطل ٢٥١ بكسل تائهة وسط الفراغ. */
@media (min-width:720px){
  /* قبل العمودين: على الأقل لا يتمدّد الزرّ ولا الحقائق بلا حدّ.
     لا نلمس .btn نفسه — flex:1 مطلوب على الهاتف — بل نضيّق حاويته. */
  .hero-cta{justify-content:center}
  .hero-cta .btn{flex:0 0 auto;min-width:clamp(196px,17vw,240px);padding-inline:1.6rem}
  .facts{max-width:600px;margin-inline:auto}
  .stores{max-width:520px;margin-inline:auto;grid-template-columns:120px 1fr;gap:16px;padding:16px 18px}
  .hero-art{width:min(46%,340px)}
  .charart{width:140px}
  .charart.sm{width:112px}

  .h1{font-size:var(--d-h1);line-height:1.24}
  .lead-line{font-size:var(--d-lead);line-height:1.4;margin-bottom:.5rem}
  .facts b{font-size:1.2rem}
  .facts i{font-size:.78rem}
  .stores .stx b{font-size:1.04rem}
  .stores .stx i{font-size:.85rem}
}

@media (min-width:1024px){
  /* بـdir="rtl" العمود الأوّل في الشبكة يُرسم يميناً، فترتيب المصدر
     الطبيعي (نصّ ثم صورة) يعطي نصّاً يميناً وصورةً يساراً بلا أي
     إعادة ترتيب وبلا direction مقلوب. لا تُصلحه.
     تنبيه: .hero فيها تسعة أبناء و.hero-art هي السادسة لا الأخيرة،
     فإسناد grid-row صريح لكل عنصر شرطٌ لا زينة. و.hero::before
     موضوعة position:absolute فلا تصير خليّة شبكة. */
  .hero{
    display:grid;
    grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);
    column-gap:clamp(40px,5vw,88px);
    align-items:center;
    text-align:start;             /* منطقيّ — لا يُكتب text-align:right أبداً */
    padding-block:var(--dsec) calc(var(--dsec) + var(--s2));
  }
  .hero>.kick     {grid-column:1;grid-row:1;justify-self:start}
  .hero>.hero-logo{grid-column:1;grid-row:2}
  .hero>.h1       {grid-column:1;grid-row:3}
  .hero>.lead-line{grid-column:1;grid-row:4}
  .hero>.lede     {grid-column:1;grid-row:5}
  .hero>.hero-cta {grid-column:1;grid-row:6}
  .hero>.facts    {grid-column:1;grid-row:7}
  .hero>.stores   {grid-column:1;grid-row:8}
  .hero>.hero-art {grid-column:2;grid-row:1 / span 8;align-self:center}

  /* الشعار موجود بالشريط العلوي أصلاً، فـ١٠٤ بكسل هنا تكرار مكلف بالطول */
  .hero>.hero-logo{width:76px;height:76px;margin:0 0 var(--s3)}
  .hero>.hero-logo img{width:76px;height:76px;border-radius:19px;padding:10px}
  .hero .cube{inset:-14px}

  .hero>.lede{margin-inline:0}
  /* flex-start داخل صفٍّ اتّجاهه rtl يعني اليمين. لا يُكتب left أبداً. */
  .hero>.hero-cta{justify-content:flex-start;gap:.8rem;margin-top:var(--s4)}
  .hero>.facts{margin-inline:0;margin-top:var(--s4);max-width:560px}
  .hero>.facts>span{align-items:flex-start;text-align:start;padding-inline:20px}
  .hero>.facts>span:first-child{padding-inline-start:0}
  .hero>.stores{margin-inline:0;margin-top:var(--s3);max-width:470px}

  .hero>.hero-art{width:100%;max-width:clamp(330px,31vw,430px);margin:0 auto}
  .hero-art img{max-height:min(60vh,560px)}

  /* الهالة تنتقل خلف عمود الصورة. النسبة 28% تُقاس من الحافّة اليسرى
     الفيزيائية ولا يقلبها dir=rtl — وعمود الصورة يسار، فهي صحيحة. */
  .hero::before{
    inset:-8% -6% -4% -6%;
    background:radial-gradient(38% 46% at 28% 44%,rgba(249,115,22,.19),transparent 72%),
               radial-gradient(30% 36% at 66% 20%,rgba(251,191,36,.10),transparent 76%);
  }
  /* جاهزة ليوم تُشحن النسخة الإنكليزية — الطرفان ينعكسان */
  :root:dir(ltr) .hero::before{
    background:radial-gradient(38% 46% at 72% 44%,rgba(249,115,22,.19),transparent 72%),
               radial-gradient(30% 36% at 34% 20%,rgba(251,191,36,.10),transparent 76%);
  }
}

@media (min-width:1400px){
  .hero>.hero-art{max-width:clamp(360px,31vw,460px)}
}

/* ٦/٢ — أزرار ذيل الأقسام: تكفّ عن ملء القفص وتصير أزراراً بمقاس زرّ */
@media (min-width:720px){
  section.bleed>.wrap-in:last-child .btn{min-width:280px}
}

/* ٦/٣ — العروض: البطاقتان تتساويان ارتفاعاً ويلتقي سعراهما بخطّ واحد */
@media (min-width:1024px){
  #offers-list>.offer{display:flex;flex-direction:column}
  #offers-list .offer .art{aspect-ratio:16/10}
  #offers-list .offer .bd{flex:1;display:flex;flex-direction:column}
  #offers-list .offer .p{margin-top:auto}
}

/* ٦/٤ — مراحل الشغل: التسلسل يستحقّ عموداً فقرياً يربط خطواته.
   inset-inline إلزامية — تُزيح من الحافّتين المنطقيّتين معاً فتبقى
   صحيحة لو صارت الصفحة LTR يوماً. والبطاقات مصمتة الخلفية فتغطّي
   الخيط، ولا يبان إلا في الفواصل. */
@media (min-width:1024px){
  .car[data-label="مراحل الشغل"]>.trk{position:relative}
  .car[data-label="مراحل الشغل"]>.trk::before{
    content:"";position:absolute;z-index:0;height:2px;opacity:.7;border-radius:2px;
    inset-inline:calc(var(--dg) + 9%);inset-block-start:44px;
    background:linear-gradient(to left,var(--o200),var(--o300) 50%,var(--o200));
  }
  .car[data-label="مراحل الشغل"]>.trk>.stp{position:relative;z-index:1}
}

/* ٦/٥ — خدمات مساندة #extra على الرئيسية.
   القياس كان 1400×788: صورة تشويقية صارت بطل الشاشة.
   :has(>.secart) تفصلها عن #extra في صفحة الأسعار — نفس المعرّف
   بالضبط في صفحتين، ومحتوى مختلف تماماً. */
@media (min-width:1024px){
  #extra:has(>.secart){
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(0,42%);
    column-gap:clamp(40px,5vw,76px);
    align-items:center;
    text-align:start;
  }
  #extra:has(>.secart)>.eyebrow{grid-column:1;grid-row:1;justify-self:start}
  #extra:has(>.secart)>h2      {grid-column:1;grid-row:2}
  #extra:has(>.secart)>.sub    {grid-column:1;grid-row:3;margin-inline:0;max-width:var(--measure)}
  /* .btn عنصر inline-flex؛ كخليّة شبكة يتمدّد لعرض العمود ويتوسّط
     محتواه داخله. justify-self:start شرط لا زينة. */
  #extra:has(>.secart)>.btn    {grid-column:1;grid-row:4;justify-self:start;min-width:280px}
  /* width:100% إلزامي مع أي عنصر شبكة يحمل صورة بعرض ١٠٠٪:
     بدونه يبقى عرض الخليّة تلقائياً فينكمش لعرض محتواه الجوهري،
     و<img style="width:100%"> داخل أبٍ عرضُه محتواه = دائرة حساب
     تُحلّ إلى صفر. قُيست: الصورة انهارت إلى 2×2 بكسل. */
  #extra:has(>.secart)>.secart {grid-column:2;grid-row:1 / span 4;margin:0;
                                width:100%;max-width:500px;justify-self:end}
}

/* ٦/٦ — الخريطة. كانت 1316×1336: شاشة ونصف لصورة واحدة.
   العمود ١ (اليمين بالعربية) للخريطة لأن العين تبدأ منها، والبطاقة
   وقائمة المحافظات إلى اليسار حيث ينتهي المسح البصري.
   المؤشّرات .pin موضوعة ومقاسة بالنسبة المئوية داخل .pins
   (width:13%;max-width:58px)، فهي تكبر مع الصندوق لا تصغر: عند
   ٦٢٠ بكسل تبلغ سقفها ٥٨ وهو أكبر من مقاسها على الهاتف (~٤٣)،
   ونسبتها إلى عرض الخريطة تصغر فتتباعد بدل أن تتزاحم. */
@media (min-width:1024px){
  #map{
    display:grid;
    grid-template-columns:minmax(0,1fr) clamp(300px,26vw,380px);
    column-gap:clamp(36px,4vw,60px);
    align-items:start;
    /* الخريطة تمتدّ على الصفّين ٤ و٥، والمتصفّح يوزّع ارتفاعها عليهما
       فينتفخ الصفّ ٤ وتنفصل بطاقة المحافظة عن قائمتها بفجوة ١٢٠ بكسل.
       صفّ ٤ يهضم محتواه وصفّ ٥ يبتلع الفائض، فتلتصق القائمة ببطاقتها. */
    grid-template-rows:auto auto auto auto 1fr;
  }
  #map>.eyebrow{grid-column:1 / -1;grid-row:1;justify-self:center}
  #map>h2      {grid-column:1 / -1;grid-row:2}
  #map>.sub    {grid-column:1 / -1;grid-row:3;margin-bottom:var(--s3)}
  /* width:100% و margin-inline:0 إلزاميان: الهامش التلقائي من طبقة
     الـ٧٢٠ يُعطّل تمدّد عنصر الشبكة، فينكمش الصندوق لعرض محتواه
     الجوهري ويقف بوسط عموده. */
  #map>.mapbox {grid-column:1;grid-row:4 / span 2;width:100%;max-width:min(100%,620px);
                margin-inline:0;margin-top:0;justify-self:start;align-self:start}
  #map>.mapcard{grid-column:2;grid-row:4;margin-top:0;
                text-align:start;align-items:flex-start;justify-content:flex-start}
  /* الفراغ المقيس عند 1512: الخريطة تمتدّ 673 بكسل بينما العمود الثاني
     (بطاقة 74 + قائمة ملتفّة 204) ينتهي عند 518، فيبقى أسفله مستطيل
     خالٍ 480×456. العلاج ملء لا توزيع: القائمة تكفّ عن كونها سحابة
     حبّات ملتفّة وتصير فهرساً بعمودين، ثمانية عشر صفّاً يتوزّع فراغها
     بينها (space-between) فتنتهي عند قاع الخريطة بالضبط. gap:12 أرضية
     لا نهاية: التوزيع يضيف فوقها ولا ينقص منها.
     والحبّة تعلو إلى 48 بكسل هنا وحدها: قاعدة ٣٦ بكسل (القسم ٩) كُتبت
     لسحابة حبّات متزاحمة، وهذي صارت صفّ فهرس بعرض العمود. و48 مقصودة
     بالحساب لا بالذوق: تسعة صفوف × 48 + ثماني فجوات 12 = 528 بكسل،
     وهو أدنى ارتفاع للقائمة. المقيس: عند 1512 المتاح 583 فيتوزّع
     الفائض 55 على الفجوات (فجوة صفّ ~19 مقابل فجوة عمود 12) وتنتهي
     القائمة عند قاع الخريطة بالضبط؛ وعند 1024 المتاح أقلّ من 528
     بنحو 26 بكسل فتقف الفجوات على أرضيّتها ويصير العمود الثاني هو
     الأطول بهذا المقدار — فرقٌ لا يُرى ولا يفتح فراغاً. */
  #map>.govlist{grid-column:2;grid-row:5;margin-top:var(--s2);align-self:stretch;
                display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
                gap:12px;align-content:space-between}
  #map .gvb{min-height:48px;justify-content:space-between}
  .mapcard{padding:1.15rem 1.25rem}
  .mapcard .hint{font-size:.95rem}
  .mapcard .gv{font-size:1.4rem}
  .mapcard .num2 b{font-size:2.2rem}
}
@media (min-width:1400px){
  #map>.mapbox{max-width:min(100%,680px)}
}

/* ٦/٧ — الأكاديمية: نفس علاج #extra، صفوفها خمسة والصورة تمتدّ عليها */
@media (min-width:1024px){
  .band{
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(0,44%);
    column-gap:clamp(40px,4.5vw,68px);
    align-items:center;
    text-align:start;
    padding:clamp(2rem,2.6vw,3rem);
  }
  .band>.k    {grid-column:1;grid-row:1;justify-self:start}
  .band>h3    {grid-column:1;grid-row:2;font-size:var(--d-h3)}
  .band>p     {grid-column:1;grid-row:3;margin-inline:0}
  .band>.tags {grid-column:1;grid-row:4;justify-content:flex-start;margin:1.15rem 0 1.35rem}
  .band>.btn  {grid-column:1;grid-row:5;justify-self:start;min-width:270px}
  /* !important الوحيد في الملف كلّه، ومبرَّر:
     الصورة تحمل style="margin:.9rem 0 1rem" سطريّاً في mobile.html،
     والسطريّ يهزم أي محدّد مهما بلغ تخصيصه. بدونه تنزاح الصورة داخل
     عمودها وينكسر تحاذي العمودين. */
  .band>.secart{grid-column:2;grid-row:1 / span 5;margin:0 !important;
                width:100%;max-width:100%;align-self:center}
  .band .tag{font-size:.81rem;padding:.34rem .78rem}
}

/* ٦/٨ — التقنيات والأسئلة.
   الرقاقة كانت 452×42 لأيقونة ٢٦ بكسل وكلمة لاتينية واحدة، والسؤال
   يمين وعلامة + على بُعد ١٣٧٠ بكسل منه.
   الصورة الزخرفية .secart.sm تبقى متمركزة كما على الهاتف: نقلها جنب
   العنوان يوفّر ~١٥٠ بكسل لكل قسم لكنها تُقرأ شاردة، والقسم متمركز
   أصلاً فتُقرأ زخرفةً مقصودة. قرار قابل للنقض. */
@media (min-width:1024px){
  .tech{max-width:920px;margin-inline:auto}
  .tsum{padding:1.05rem 1.3rem;font-size:1.02rem;min-height:62px}
  .tcount{font-size:.83rem}
  .chips{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;padding:4px 20px 20px}
  .chip{min-height:46px;padding:.45rem .7rem}
  .chip .cn{font-size:.85rem}     /* لاتيني صرف — التباعد صفر باقٍ من tokens */
  .chip .ti{width:29px;height:29px}

  .faq{max-width:860px;margin-inline:auto}
  .faq summary{padding:1.15rem 1.35rem;font-size:1.02rem;gap:2rem;min-height:64px}
  .faq summary .pm{width:32px;height:32px;font-size:1.28rem}
  .faq .ans{padding:0 1.35rem 1.25rem;font-size:var(--d-body);line-height:1.92}
}
@media (min-width:1400px){
  .chips{grid-template-columns:repeat(5,minmax(0,1fr))}
}

/* ٦/٩ — التواصل بعمودين: النموذج يميناً، والشخصية وبطاقة القنوات
   يساراً. المكسب حقيقي — القسم يخسر ~٣٥٠ بكسل طولاً، والشخصية
   تصير جاراً للنموذج بدل أن تسبقه بصفّ فارغ.
   ملاحظة مقصودة: .frow تبقى حقلين بالصفّ ولا تصير أربعة. أربعة حقول
   داخل عمود ٦٤٠ تعطي الحقل ~١٣٦ بكسل، و«$1000-$2000» داخل select
   بحشوة سهم ٢٤ بكسل يلامس الحدّ. حقلان أصدق. */
@media (min-width:1024px){
  #order{
    display:grid;
    grid-template-columns:minmax(0,1fr) clamp(280px,24vw,340px);
    column-gap:clamp(32px,3.4vw,56px);
    align-items:start;
    text-align:start;
  }
  #order>.eyebrow{grid-column:1;grid-row:1;justify-self:start}
  #order>h2      {grid-column:1;grid-row:2}
  #order>.sub    {grid-column:1;grid-row:3;margin-inline:0;max-width:var(--measure)}
  #order>.oform  {grid-column:1;grid-row:4;max-width:none;margin-inline:0}
  #order>.charart{grid-column:2;grid-row:1 / span 3;width:170px;
                  justify-self:center;align-self:end;margin:0}
  /* الفراغ المقيس عند 1512: العمود الثاني (شخصية 170 + بطاقة 172)
     ينتهي عند 414 بينما النموذج يمتدّ إلى 767، فيبقى تحته مستطيل
     خالٍ 456×432 — ثلث ارتفاع القسم بلا شي. البطاقة تمتدّ لارتفاع
     النموذج فينتهي العمودان بخطّ واحد، ومحتواها يتوسّطها عمودياً.
     لوحةٌ بجنب لوحة تُقرأ تصميماً؛ بطاقةٌ قصيرة فوق فراغٍ بطول
     الشاشة تُقرأ سهواً. لا يمسّ 390 ولا 820: القسم عمود واحد هناك. */
  #order>.social{
    grid-column:2;grid-row:4;align-self:stretch;text-align:center;
    display:flex;flex-direction:column;justify-content:center;
    margin-top:0;padding:1.3rem 1.1rem 1.4rem;
    border:1px solid var(--line);border-radius:var(--r-xl);
    background:var(--surface);box-shadow:var(--sh-1);
  }
  /* أربع أيقونات ×٦٠ داخل عمود ٣٢٠ لا تحتمل فاصل ٠٫٧rem */
  #order .social-row{gap:.5rem}
  #order .social-row a{width:56px;height:56px}

  .oform{padding:1.6rem 1.6rem 1.7rem;gap:.9rem}
  .frow{gap:.9rem}
  .field label{font-size:.85rem;margin-bottom:.32rem}
  .inp{min-height:50px}
  /* الحقل النصّي يبقى بعرض النموذج عمداً: سقف القراءة يحكم القراءة
     لا الكتابة، وحقل تأليف ضيّق أسوأ من سطر طويل. */
  textarea.inp{min-height:130px}
  /* .oform شبكة، فالزرّ يتمدّد لعرضها لولا هذا */
  .oform>.btn{justify-self:center;min-width:320px}
}

/* ٦/١٠ — الذيل: احتياطي شريط الهاتف (58+34 بكسل) لا معنى له بالحاسبة */
@media (min-width:720px){
  footer{padding-block:var(--dsec) var(--s5)}
  .fnav{grid-template-columns:repeat(4,minmax(0,1fr));gap:.2rem 1.4rem}
  .fnav a{font-size:.94rem}
  .fbot{font-size:.86rem}
}
@media (min-width:1024px){
  /* ثمانية روابط بصفّ واحد — الذيل يصير فهرساً لا عمودين */
  .fnav{grid-template-columns:repeat(8,auto);justify-content:space-between;gap:0 1.3rem}
  .fnav a{min-height:auto;padding-block:.5rem}
}

/* ٦/١١ — الزرّ العائم يصغر ولا يختفي: ٥٨ بكسل مقاس إبهام، والفأرة
   أدقّ. وما دام لا يوجد زرّ تواصل ثابت بالشريط العلوي فهو القناة
   الوحيدة الدائمة على الشاشة. */
@media (min-width:1024px){
  .wa-fab{width:52px;height:52px;inset-block-end:26px;inset-inline-end:26px}
  .wa-fab>div{width:36px}
}


/* ═══════════════════════════════════════════════════════════════
   ٧ · صفحة الأسعار — pricing.html
   ١٥٩٥٢ بكسل طولاً، وستّ صور بعرض ١٤٠٠ وارتفاع ٨٧٥ صفّاً واحداً.
   ستّ صور بحجم الشاشة متتالية ليست قائمة أسعار بل عرض شرائح.
   هنا أكبر ربح في هذا الملف كلّه.
   ═══════════════════════════════════════════════════════════════ */

/* ٧/١ — الافتتاحية */
@media (min-width:720px){
  .phero h1{font-size:clamp(2.3rem,1.2rem + 2.6vw,3.3rem);line-height:1.26}
  .phero .lede{margin:.9rem auto 0}
  /* الصندوق يكبر بحشوته لا بنصّه: السقف على المحتوى داخله لا عليه،
     وإلّا خرج صندوق بعرض ٣٠٤ بكسل تحت افتتاحية بعرض ٧٠٠. */
  .note-band{
    max-width:calc(var(--measure) + 2.9rem);margin-inline:auto;margin-top:var(--s4);
    padding:1.15rem 1.45rem;font-size:var(--d-body);line-height:1.9;
  }
}

/* ٧/٢ — شريط التنقّل بين الخدمات.
   الصفحة تبقى فوق أحد عشر ألف بكسل حتى بعد كل العلاج، وفقدان فهرس
   الأقسام بعد أوّل تمرير هو عطبها الملاحي الأكبر. يصير شريطاً لاصقاً
   تحت الترويسة بدل شريط رقاقات ممرَّر لا يُسحَب بالماوس.
   قرار مقصود: يبقى قفصاً منحنياً عائماً لا شريطاً كامل العرض بزوايا
   قائمة. «لا حواف حادّة» أمر متكرّر من المالك، وحلّ الشريط الممتدّ
   كان يفرض border-radius:0 على عنصر تعطيه tokens.css انحناء --r-m. */
@media (min-width:1024px){
  .jump{
    position:sticky;
    inset-block-start:calc(var(--top-h) + 8px);
    z-index:30;
    overflow:visible;
    flex-wrap:wrap;
    justify-content:center;
    gap:.5rem;
    max-width:var(--dw);
    margin-inline:auto;
    padding:.6rem 1rem;
    border:1px solid var(--line);
    background:rgba(250,248,246,.93);
    backdrop-filter:blur(10px);
    box-shadow:var(--sh-2);
  }
  .jump::after{content:none}       /* حشوة الطرف الخاصّة بالهاتف */
  .jump a{font-size:.9rem}

  /* المرساة تحت ترويسة + شريط لاصق. مقيسة: الشريط يلتفّ سطرين تحت
     ١١٨٠ لأن مجموع عرض العناوين الثمانية ≈١٠٥٦ بكسل.
     body:has(.jump) تقصر القاعدة على صفحة الأسعار وحدها بلا تسمية
     .svcsec و.msec و#extra — و#extra مشترك بين صفحتين. */
  body:has(.jump) section{scroll-margin-block-start:calc(var(--top-h) + 140px)}
}
@media (min-width:1180px){
  body:has(.jump) section{scroll-margin-block-start:calc(var(--top-h) + 92px)}
}

/* ٧/٣ — قسم الخدمة: ترويسة من عمودين ثم صفّ الباقات تحتها.
   العمود ١ يمين بالعربية: العنوان يتصدّر والصورة تسنده يساراً.
   ترتيب المصدر يضع .art أوّلاً، فالإسناد الصريح إلزامي. */
@media (min-width:1024px){
  .svcsec{
    display:grid;
    grid-template-columns:minmax(0,1fr) clamp(250px,23vw,340px);
    column-gap:clamp(40px,4.5vw,72px);
    align-items:center;
    text-align:start;
    padding-block:var(--dsec) var(--s5);
  }
  .svcsec>.art  {grid-column:2;grid-row:1 / span 2;margin:0;width:100%;justify-self:center}
  .svcsec>h2    {grid-column:1;grid-row:1;align-self:end}
  .svcsec>.desc {grid-column:1;grid-row:2;align-self:start;margin:.7rem 0 0;max-width:var(--measure)}
  .svcsec>.car  {grid-column:1 / -1;grid-row:3;margin-top:var(--s4)}
  .svcsec .en   {font-size:.79rem;margin-top:.4rem}   /* لاتيني صرف: تباعده مسموح */
}

/* ٧/٤ — شبكة الباقات: ستّ عشرة بطاقة في ستّة صفوف.
   عدد الأعمدة يُقرأ من الوسم نفسه لا من قائمة مُعرّفات، فلا تتعفّن
   القاعدة إن تغيّرت بيانات PRICING. الترتيب مقصود: الأخصّ حالةً
   يجي أخيراً. (article:nth-of-type يعدّ الـ<article> وحدها ولا
   يعدّ <i class="spc">، فهي من نوع آخر.) */
@media (min-width:1024px){
  /* .trk.plans وحدها تعيش داخل section.svcsec.wrap المبطّن أصلاً،
     فلو أخذت --dg مرّة ثانية ضاع منها عمود كامل. */
  .trk.plans{
    padding-inline:0;
    margin-inline:auto;
    align-items:stretch;
    grid-template-columns:repeat(3,minmax(0,1fr));
    max-width:min(100%, calc(340px * 3 + var(--dgap) * 2));
  }
  .trk.plans:has(article:nth-of-type(4)),        /* أربع باقات ← ٢×٢ متوازن، لا ٣+١ أعرج */
  .trk.plans:not(:has(article:nth-of-type(3))){  /* باقتان */
    grid-template-columns:repeat(2,minmax(0,1fr));
    max-width:min(100%, calc(340px * 2 + var(--dgap)));
  }
  .trk.plans:not(:has(article:nth-of-type(2))){  /* باقة واحدة — علاج #s-custom
                                                    الذي كان يلصقها بالحافّة اليمنى
                                                    وجنبها ألف بكسل فراغ */
    grid-template-columns:minmax(0,1fr);
    max-width:340px;
  }
  .plans>.plan{height:auto}
  /* الباقة الأكثر طلباً ترتفع عن الصفّ بلا كسر الشبكة */
  .plans>.plan.pop{margin-block:-14px}
}
@media (min-width:1400px){
  /* الآن يتّسع القفص لأربع باقات بصفّ واحد */
  .trk.plans:has(article:nth-of-type(4)){
    grid-template-columns:repeat(4,minmax(0,1fr));
    max-width:min(100%, calc(320px * 4 + var(--dgap) * 3));
  }
  .trk.plans:has(article:nth-of-type(4)) .plan .head{padding-inline:.95rem;gap:.5rem}
  .trk.plans:has(article:nth-of-type(4)) .plan .feats,
  .trk.plans:has(article:nth-of-type(4)) .plan .more{padding-inline:.95rem}
  .trk.plans:has(article:nth-of-type(4)) .plan .cta{margin-inline:.95rem}
  .trk.plans:has(article:nth-of-type(4)) .plan .nm{font-size:1.04rem}
  .trk.plans:has(article:nth-of-type(4)) .plan .val{font-size:1.32rem}
}

/* ٧/٥ — قسم الموشن */
@media (min-width:720px){
  .msec .lede{margin:.9rem auto 0}
  .mart{width:min(300px,44%)}
  .mfacts{max-width:680px;margin-inline:auto}
  .mh .hint{margin:.7rem auto 0}
  /* صفّ بعرض ١٤٠٠ يضع السعر على بُعد ١٣٠٠ بكسل من اسم المدّة.
     ٨٦٠ سقفٌ محسوب: محتوى الصفّ ~٣٠٠ بكسل، وثلاثة أضعافه أقصى فراغ
     تبقى معه العين على خطّ واحد. */
  .mtable{max-width:860px;margin-inline:auto}
}
@media (min-width:1024px){
  /* ثلاثة أسباب، ثلاثة أعمدة. الفاصل border-inline-start لا border-left. */
  .mwhy{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
        max-width:var(--dw);margin-inline:auto}
  .mwhy .r{border-block-end:0;border-inline-start:1px solid var(--line-2);
           flex-direction:column;gap:.7rem;padding:1.5rem 1.6rem}
  .mwhy .r:first-child{border-inline-start:0}
  .mwhy .n{margin-top:0}
  .mtable{max-width:780px}
  #motion>.wrap-in:last-child .btn{min-width:320px}
}

/* ٧/٦ — خدمات الرفع #extra في صفحة الأسعار.
   :has(>.uploads) تفصلها عن #extra في الرئيسية.
   .guar هي التي تُدفع للقاع لا .cta: الزرّ يحمل style="margin:1rem 0 0"
   سطريّاً من pricing-app.js، فـmargin-top:auto عليه قاعدة ميتة. */
@media (min-width:720px){
  /* عمودان: بطاقتان لا ثلاث ــ الطبّي عرضٌ داخل بطاقة آبل لا بطاقة
     مستقلّة. وalign-items:start يمنع بطاقة بلاي (بعرض واحد) من التمدّد
     لطول بطاقة آبل (بعرضين) فتطلع نصفها فراغاً. */
  .uploads{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--dgap);
    align-items:start}
  .small2 {grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--dgap)}
  #extra:has(>.uploads)>.desc{max-width:var(--measure-lede)}
  .up{display:flex;flex-direction:column}
  .up .bd{flex:1;display:flex;flex-direction:column}
  .up .guar{margin-top:auto}
}


/* ═══════════════════════════════════════════════════════════════
   ٨ · الأعمال · فرص العمل · الأكاديمية
   هذي أفضل حالاً: عندها شبكة ثلاثية عند ٩٦٠ أصلاً. عطبها طرفيّ —
   العنوان وشريط الرقاقات وسطر الملاحظة يمتدّون لحافّة الشاشة —
   وعرضُ التفاصيل (المخفيّ عند القياس) بلا أي سقف قراءة إطلاقاً.
   ═══════════════════════════════════════════════════════════════ */
@media (min-width:720px){
  /* الافتتاحية: العنوان كان 1436 بكسل عرضاً */
  .whero{
    max-width:var(--dw);margin-inline:auto;padding-inline:var(--dg);
    padding-block:var(--dsec) var(--s3);
  }
  .whero h1{font-size:clamp(2.2rem,1.2rem + 2.3vw,3.05rem);line-height:1.26}
  .whero .lede{margin:.9rem auto 0}

  /* صفّ الحقائق في careers/academy — نفس علاج حقائق الرئيسية */
  #facts{max-width:640px;margin-inline:auto}
  #facts b{font-size:1.2rem}
  #facts i{font-size:.78rem}

  /* سطر الصراحة: كان 1396 بكسل. ليس نصّ جسم فيُسمح له بتجاوز السقف
     قليلاً، لكنّه لا يتجاوز نصف الشاشة. #note لا .note — الأخيرة
     هي حاشية النموذج في الرئيسية وتعريفها مختلف تماماً. */
  #note{
    margin-inline:auto;margin-block:var(--s3) 0;
    max-width:min(760px, calc(var(--dw) - 2 * var(--dg)));
    padding:.95rem 1.2rem;font-size:.89rem;line-height:1.8;
  }

  /* شريط الرقاقات: كان شريطاً ممرَّراً بعرض 1436. على الماوس لا يوجد
     سحب بالإصبع ولا قناع يفيد، فالتفاف مركزي أصدق من تمرير أفقي مخفيّ. */
  .filters{
    flex-wrap:wrap;justify-content:center;overflow:visible;
    -webkit-mask-image:none;mask-image:none;
    max-width:var(--dw);margin-inline:auto;
    padding:0 var(--dg);margin-top:var(--s3);gap:8px;
  }
  .fchip{font-size:.89rem;padding:.45rem 1rem}

  .grid{
    max-width:min(var(--dw), 1240px);margin-inline:auto;
    padding:var(--s3) var(--dg) 0;gap:var(--dgap);
  }

  /* لوحة «ما في نتائج»: سطر متمركز وسط ١٢٤٠ بكسل هو حرفياً العطب
     الذي تشكو منه المهمّة. تصير لوحة لها حدّ ومقاس. */
  .empty{
    max-width:520px;margin-inline:auto;margin-block:var(--s4);
    padding:var(--s4) var(--s3);font-size:1rem;
    border:1px dashed var(--line);border-radius:var(--r-xl);background:var(--surface);
  }

  /* بوّابة الطلاب في الأكاديمية: سطر ممتدّ لحافّة الشاشة */
  .enter{
    max-width:var(--dw);margin-inline:auto;margin-block:var(--s3) 0;
    border:1px solid var(--o200);font-size:.92rem;min-height:48px;
  }

  /* ── «لا حواف حادّة في أي مكان» ──
     أمر المالك المتكرّر. هذي الأصناف سقطت من قائمة الانحناء في
     tokens.css فبقيت زواياها قائمة، و tokens.css ممنوع اللمس.
     دَين معلَن: نفس البطاقة تبقى حادّة على الهاتف ومنحنية هنا.
     الإصلاح الصحيح إضافتها لسطر الانحناء في tokens.css ليعمّ
     الجهازين — وهو قرار المالك لأنه يمسّ الهاتف. */
  .jcard,.ccard{border-radius:var(--r-xl)}
  .st{border-radius:var(--r-f)}
  .paybox,.dead,.unit,.co,.soonbox,.enter,.nolinks{border-radius:var(--r-m)}
}

/* ٩٦٠–١٠٢٣ — عمودان لا ثلاثة.
   الصفحات الثلاث تعلن ثلاثة أعمدة عند ٩٦٠ داخل <style> الداخلي، لكن
   القفص هنا لا يزال --dw = 760 حتى ١٠٢٤، و.grid أعلاه يفوز بالسقف
   لأنه يُحمَّل بعده بنفس التخصيص. الناتج بطاقة بعرض 218 بكسل:
   (760 − 2×32 هامش − 2×20 فجوة) ÷ 3، وسطر .ft بالوظائف يحتاج ~215
   بكسل داخل 186 متاحة فينكسر. الحلّ من هذا الجانب لا من جانب الوسم:
   العدد يتبع القفص، فيصير عمودين بعرض 338 — وهو نفس عرض بطاقة
   الآيباد المضبوطة. عند ١٠٢٤ يتّسع القفص إلى 1080 فتصحّ الثلاثة
   (البطاقة 299 بكسل عند ١٠٢٤ نفسها و317 من ١٠٨٠ فما فوق) وتعود
   قاعدة الصفحة تحكم بلا تدخّل منّا.
   المدى مغلق من الطرفين عمداً: تحت ٩٦٠ الوسم أصلاً عمودان، وفوق
   ١٠٢٣ لا شأن لهذي القاعدة. */
@media (min-width:960px) and (max-width:1023.98px){
  .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* عرض التفاصيل: يظهر بتبديل [hidden] فلم يدخل القياسات، لكنه بلا
   سقف قراءة إطلاقاً — «شنو بنينا» و«رأي صاحب المشروع» تُقرأ بعرض 1400.
   #detail هو الحاوية الخارجية، و.detail طفلها بعد زرّ .crumb. */
@media (min-width:720px){
  #detail{max-width:min(var(--dw), 980px);margin-inline:auto}
  .crumb{font-size:.91rem;padding-inline:var(--dg)}
  .dhero,.block,.dcta,.dnext{padding-inline:var(--dg)}
  .dhero .art img{max-height:320px}
  .detail h1{font-size:clamp(1.9rem,1.1rem + 1.7vw,2.5rem);line-height:1.26}
  .dsub{font-size:var(--d-body);line-height:1.9}
  .dcat{font-size:.85rem}
  .dfact{font-size:.81rem;padding:.35rem .85rem}
  .built li,.steps li{font-size:.94rem;line-height:1.85}
  .bacol{padding:1.05rem 1.15rem}
  .bacol li{font-size:.91rem;line-height:1.75}
  .bacol .t{font-size:.87rem}
  .review{padding:1.3rem 1.4rem}
  .review .qt{font-size:1.01rem;line-height:1.9;max-width:var(--measure)}
  .paybox{padding:1.2rem 1.3rem}
  .paybox .pv b{font-size:1.68rem}
  .paybox .pn{max-width:var(--measure)}
  .count b{font-size:1.48rem}
  .count span{font-size:.79rem}
  .slink{min-height:58px}
  .slink .tx b{font-size:.94rem}
  .nolinks{font-size:.91rem;padding:.9rem 1.05rem;max-width:var(--measure)}
  .unit summary{min-height:54px;padding:.6rem 1rem}
  .unit .ut{font-size:.95rem}
  /* الأصل padding:0 .8rem .8rem 3rem — حشوة فيزيائية رباعية تضع
     الإزاحة على اليسار داخل صفحة RTL، فالنصّ لا ينتظم تحت رقم
     الوحدة الواقف على اليمين. تُصحَّح بالخصائص المنطقية. */
  .unit .ud{padding-block:0 .85rem;padding-inline-start:3rem;padding-inline-end:.9rem;
            font-size:.91rem;line-height:1.85;max-width:var(--measure)}
  .co{padding:.9rem 1.1rem}
  .co .cd{font-size:.97rem}
  .soonbox{max-width:var(--measure)}
  .dnote,.refline{font-size:.85rem}
  /* .dcta حاوية زرّ يملأ العرض. عمود مركزيّ يحدّه بلا لمس الزرّ. */
  .dcta{display:flex;flex-direction:column;align-items:center;gap:.15rem}
  .dcta>*{width:100%;max-width:420px}
}
@media (min-width:1024px){
  #detail{max-width:1000px}
  /* قائمة «شنو بنينا» عمودان: بنود قصيرة، وعمود واحد يطيل الصفحة بلا سبب */
  .built{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:1.6rem}
  .links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .counts{gap:12px}
  .cohorts{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
  /* «أعمال ثانية»: مسار أفقي داخل شاشة تتّسع لبطاقاته كلها.
     grid-auto-flow:column يعطي عموداً لكل بطاقة مهما كان عددها
     (٤ بالأعمال، ٣ بالوظائف والأكاديمية) بلا صفّ مسنّن. */
  .dnext .row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);
              gap:var(--dgap);overflow:visible;padding-block-end:0}
  .dnext .row>*{flex:none;max-width:none}
}
@media (min-width:1400px){
  /* ثمانية مشاريع = صفّان تامّان بأربعة أعمدة. الوظائف (٣) والكورسات
     (٥) تبقى ثلاثية لأن الرابع يترك صفّاً مبتوراً. */
  .grid:has(.wcard){grid-template-columns:repeat(4,minmax(0,1fr));max-width:var(--dwide)}
}


/* ═══════════════════════════════════════════════════════════════
   ٩ · المرور والتركيز — للفأرة وحدها
   كل قاعدة مرور داخل (hover:hover) and (pointer:fine)، وإلّا علقت
   على الحواسيب اللمسية الهجينة بعد أوّل لمسة فبقيت البطاقة «مضاءة»
   بعد رفع الإصبع. والمرور ليس الإشارة الوحيدة أبداً: كل عنصر هنا
   رابط أو summary ويُقرأ تفاعليّاً بلا مؤشّر.
   ملاحظة: .q ليست رابطاً فلا تأخذ حالة مرور. و.plan في work.html
   عنصر مختلف تماماً (صفّ باقة داخل عرض التفاصيل)، فكل قواعد الباقة
   هنا مقيّدة بـ.plans>.plan.
   ═══════════════════════════════════════════════════════════════ */
@media (min-width:720px) and (hover:hover) and (pointer:fine){
  .svc,.stores{transition:transform var(--t) var(--ease),
                          box-shadow var(--t) var(--ease),
                          border-color var(--t)}
  .svc:hover{border-color:var(--o300);box-shadow:var(--sh-3);transform:translateY(-2px)}
  .svc:hover .t{color:var(--o700)}
  .stores:hover{border-color:var(--o300);box-shadow:var(--sh-3);transform:translateY(-2px)}
  .plans>.plan:hover{border-color:var(--o300);box-shadow:var(--sh-3)}
  .offer:hover{box-shadow:var(--sh-3)}

  /* بطاقة العمل بالشريط: دفعة بطيئة للصورة يحدّها overflow:hidden
     للبطاقة. مقصورة على شريط الرئيسية لأن صور صفحة الأعمال محتواة
     داخل حشوة فيقصّها التكبير. */
  #rail .wcard .art img{transition:transform 420ms var(--ease)}
  #rail .wcard:hover .art img{transform:scale(1.045)}

  /* صفوف الكشف */
  .faq summary:hover,
  .tsum:hover,
  .plans>.plan .more:hover{background:var(--o50)}
  .faq summary:hover .pm{background:var(--o100)}
  .unit summary:hover{background:var(--o50)}

  /* الرقاقة التقنية تأخذ لونها هي عند المرور لا البرتقالي —
     ستّون رقاقة تبرتق دفعةً واحدة تُلغي معنى لون العلامة.
     app.js يكتب --tc سطريّاً على .chip نفسها (كان على .ti الابنة،
     والمتغيّرات تُورَّث نزولاً لا صعوداً فما كان يصل الرقاقة).
     والسطر التالي احتياط لتقنية غير مسجّلة في TECHI: بلا قيمة معرَّفة
     يسقط color-mix ويرجع border-color إلى currentColor، أي خيط أسود
     حادّ على كل رقاقة. القيمة السطرية تغلبه فيبقى لون التقنية هو الحاكم. */
  .chip{--tc:var(--muted);transition:border-color var(--t) var(--ease)}
  .chip:hover{border-color:color-mix(in srgb,var(--tc) 45%,transparent);
              box-shadow:0 1px 2px rgba(20,17,16,.06)}

  .jump a:hover{border-color:var(--o300);color:var(--o700);background:var(--o50)}
  .fnav a:hover{color:var(--o700)}
  .fchip:hover{border-color:var(--o300);color:var(--o700)}
  .fchip[aria-pressed="true"]:hover{color:#fff}
  .slink:hover{border-color:var(--o300)}
}

/* هدف الفأرة أدقّ من الإبهام: حبّات المحافظات الثمانية عشرة تتراصّ
   أنظف بلا ٤٤ بكسل ارتفاعاً. الحدّ الأدنى للّمس يبقى كما هو خارج
   (pointer:fine)، فلا يتأثّر الآيباد ولا الشاشة اللمسية. */
@media (min-width:1024px) and (hover:hover) and (pointer:fine){
  .gvb{min-height:36px;padding:.35rem .7rem}
}

/* الحركة المخفَّضة: tokens.css يُلغي كل animation وtransition بـ!important،
   لكن التحويل نفسه يبقى فيقفز قفزةً حادّة بلا انتقال. يُعطَّل صراحةً. */
@media (min-width:720px) and (prefers-reduced-motion:reduce){
  #rail .wcard:hover .art img{transform:none}
  .svc:hover,.stores:hover{transform:none}
}


/* ═══════════════════════════════════════════════════════════════
   ١٠ · الطباعة
   صفحة الأسعار هي أكثر ما يُطبع أو يُحوّل PDF في موقع خدمات، وهي
   بعد كل العلاج فوق أحد عشر ألف بكسل بشريطين لاصقين متراكبين.
   الحدّ min-width:720px مقصود: ورقة A4 عرضها ٧٩٤ بكسل وLetter ٨١٦،
   فالكتلة تنطبق على كليهما وتبقى ملتزمة بقانون الملف.
   ═══════════════════════════════════════════════════════════════ */
@media print and (min-width:720px){
  .top,.wa-fab,.drawer,.scrim,.filters,.crumb,.car .bar{display:none}
  /* شريط لاصق يتكرّر على كل ورقة أو يقتطع محتواها */
  .jump{position:static;box-shadow:none;backdrop-filter:none;background:transparent;border:0}
  /* البطاقة لا تُقصّ بين ورقتين */
  .svc,.plans>.plan,.wcard,.jcard,.ccard,.offer,.up,.ucard,.q,.stp,
  .why,.mkind,.mdeal,.bacol,.review,.paybox,.co,.band{
    break-inside:avoid;page-break-inside:avoid;box-shadow:none;
  }
  h1,h2,h3{break-after:avoid;page-break-after:avoid}
  /* المسار المطبوع يُقصّ عند حافّة الورقة فتضيع بطاقات كاملة */
  .car .trk{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
            gap:12px;overflow:visible;-webkit-mask-image:none;mask-image:none}
  .car .trk>*{max-width:none}
  .car .trk::after{content:none}
  /* المميّزات المطويّة تُطبع مفتوحة — ورقة لا تُنقر */
  details>summary{display:none}
  .plans>.plan .feats,.unit .ud{display:block}
}
