# خطة 8 قوالب كاملة للموقع العام

التاريخ: 2026-09-08

الحالة: خطة تنفيذ ومراجعة، القوالب الجديدة لم تُنفَّذ أو تُختبر بصريًا بعد. التنفيذ يبدأ بالأساس المشترك ثم قوالب تجريبية متباعدة بصريًا قبل تعميم الثمانية.

## الهدف وحدود القبول

ثمانية اختيارات في البراندينج. كل اختيار يقدم موقعًا متماسكًا في الرئيسية والخبر والتصنيف والبحث والتاج، على الموبايل والديسكتوب، ويشمل الهيدر والمنيو والفوتر والإعلانات. اختلاف الألوان وحده لا يحقق الهدف.

يُقيَّم كل قالب بنفس اللوجو ولوحة الألوان ومجموعة الأخبار. يجب أن يختلف عن كل قالب آخر في ثلاثة محاور على الأقل: تركيب بداية الصفحة، توزيع المحتوى، معالجة الصور، هندسة البطاقة، كثافة النص والمسافات، وتوزيع العناصر المساندة. يتكرر التقييم على الموبايل؛ التحول إلى نفس القائمة الرأسية في القوالب كلها مرفوض.

الصفحات الداخلية جزء من القالب منذ البداية، وليست إضافة بعد انتهاء الرئيسية. المحتوى وروابط الأخبار وSEO والتعليقات والصور الخارجية وترقيم الصفحات تبقى عاملة في كل قالب. تُحفظ المساحات الإعلانية المطلوبة في قواعد المشروع.

## ما تأكد من الكود الحالي

- الخمس صفحات تستخدم `resources/views/layouts/app.blade.php`، وبياناتها تأتي من Controllers مستقلة عن التصميم.
- `public/css/app.css` و`public/css/theme.css` كلاهما يحتوي على توزيع للصفحات والكروت؛ لذلك إضافة CSS جديد فوقهما دون فصل هذه القواعد ستورّث تصاميم متعارضة.
- توجد Components مشتركة للأخبار، الـHero، أقسام الرئيسية، الأكثر قراءة، البلوكات، الإعلانات، الألوان وPagination. نعيد استخدام عرض البيانات وسلوكها، ونغيّر التركيب عند الحاجة.
- `AppServiceProvider` يوفر Settings مشتركة، و`SettingController` يحفظ البراندينج ويمسح `site.settings`. توجد اختيارات مستقلة للهيدر والفوتر، واختيارات المنيو قيد إنهاء مهمة سابقة.
- الإعلان الحالي يملك مصدرَي صورة ورابط: `leaderboard` و`rectangle`. كل المواضع من النوع نفسه تستخدم نفس المصدر.
- `ad-slot.blade.php` يعرض كلمة «إعلان» بصريًا فقط عند عدم وجود صورة. الصورة الفعلية تحمل alt وaria-label لكن لا يوجد معها وسم مرئي دائم.
- أبعاد الإعلان الحالية تعتمد على min-height وmax-height، والصورة ليس لها width/height صريحان. الخطة تحتاج حجز مساحة متوقعة قبل تحميلها.
- الـLayout يضع إعلانًا أعلى الصفحات وآخر أسفلها، ويستثني التصنيف من الأخير. بعض الصفحات تضيف إعلانات داخلية؛ يجب منع إضافة الإعلان نفسه مرتين عند نقل مسؤولية التوزيع.
- `app.js` يستبدل جزء نتائج Pagination عبر fetch، ولا يستبدل غلاف الصفحة وCSS. لو تغير قالب الموقع أثناء بقاء تبويب مفتوح، يمكن أن تصل نتائج بالقالب الجديد داخل الغلاف القديم؛ هذا سيناريو قبول مطلوب.

هذه ملاحظات قراءة الكود، وليست نتائج قياس أداء أو فحص بصري للقوالب المقترحة.

## القوالب الثمانية

| ID | الاسم | البصمة البصرية | بصمة الموبايل |
| --- | --- | --- | --- |
| newsroom | غرفة الأخبار | قصة رئيسية بجوار قصص أقصر، ثم تيار أخبار وعمود مساند | قصة رئيسية مختصرة ثم صفوف متفاوتة الأهمية |
| frontpage | الصفحة الأولى | مانشيت واسع، أعمدة تحريرية وفواصل منتظمة وصور انتقائية | مانشيت وعناوين فرعية مجمعة في أبواب قصيرة |
| visual | المشهد | صورة مهيمنة وتركيب من صور بمقاسات مختلفة | صورة بارزة ثم تسلسل صور وعناوين خارج الصورة عند ضيق العرض |
| bulletin | النشرة | زمن نشر حقيقي بجانب تيار عناوين متتابع | تاريخ/وقت صغير مع صف الخبر، إيقاع واضح يصلح للمسح السريع |
| magazine | المجلة | افتتاحية صورة ونص متقابلان، وحدات كبيرة تتناوب مع مجموعات صغيرة | صورة ثم تقديم تحريري ومسافات مقصودة بين القصص |
| compact | الموجز | صفوف أخبار صغيرة وصور مصغرة وشريط أدوات منخفض | صفوف قصيرة سهلة اللمس مع بقاء العناوين قابلة للقراءة |
| sections | الأقسام | أبواب أفقية، لكل قسم تركيب وعنوان وروابط واضحة | انتقال بين أبواب رأسية تحمل هويتها وترتيبها |
| focus | القراءة | عمود مركزي مريح مع صور ومعلومات مساندة محدودة | عرض قراءة هادئ وأولوية للنص دون ازدحام بداية الصفحة |

هذه اتجاهات تركيب وليست مجرد أسماء تجارية. الفروق بين frontpage/compact وبين visual/magazine تُراجع تحديدًا لتجنب التقارب.

### مواصفات الصفحات، بعد دمج مراجعة Terra A وB

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

#### newsroom، غرفة الأخبار

| الصفحة | Desktop | Mobile |
| --- | --- | --- |
| الرئيسية | قائد في مساحة أكبر، قائمة متابعة قصيرة بجانبه، عمود الأكثر قراءة؛ الأحدث ثم الأقسام | القائد ثم المتابعات المصورة أفقيًا ثم الأحدث ثم المحتوى المساند |
| الخبر | عنوان عند بداية القراءة، غلاف ومتن، عمود خارجي للوسوم والأكثر قراءة | عنوان وتاريخ وغلاف ومشاركة ومتن، ثم الوسوم والأكثر قراءة |
| التصنيف | مكتب قسم: قائد ومتابعات، أرشيف واسع وعمود مساند | القائد ثم المتابعات ثم الأرشيف، بعدها الأكثر قراءة والإعلان المستطيل |
| البحث | نتائج تحريرية أفقية، صورة وقسم وتاريخ؛ ترتيب الاستعلام الحالي | صورة صغيرة وعنوان واضح، دون وصف «الأكثر صلة» غير المدعوم |
| التاج | ملف متابعة بقصص أفقية وسياق القسم والتاريخ | قائمة متابعة مقروءة بهوية الملف في المقدمة |

Variants: `desk-lead`, `desk-brief`, `desk-row`, `desk-rail-item`. اختلافه الأساسي تقسيم الأهمية والمسارات. لا يتحول إلى الجريدة ذات الأعمدة المتساوية.

#### frontpage، الصفحة الأولى

| الصفحة | Desktop | Mobile |
| --- | --- | --- |
| الرئيسية | مانشيت فوق شبكة تحريرية بأعمدة، قصة بعرض عمودين، عناوين نصية وصور انتقائية | مانشيت ثم مجموعة عناوين نصية مفصولة بخطوط ثم أبواب الأقسام |
| الخبر | عنوان واسع وقسم وتاريخ، غلاف، متن أحادي العمود وموضوعات جانبية | عنوان وغلاف وقراءة خطية؛ لا ضغط المتن داخل أعمدة صحفية |
| التصنيف | عنوان قسم كعنوان صحيفة، قصة مهيمنة وعمود عناوين، أرشيف بفواصل | قصة رئيسية ثم عناوين مجمعة ثم أرشيف |
| البحث | البحث جزء من رأس الأرشيف، نتائج نصية مفصولة وخانات وصفية قصيرة | نموذج سهل اللمس ثم نتائج بفواصل وخط واضح |
| التاج | عنوان ملف قوي، مجموعات تحريرية مع اختلاف وزن العناوين | أبواب قصيرة مرقمة بصريًا عند الحاجة، دون أرقام أخبار وهمية |

Variants: `front-lead`, `front-headline`, `front-column-story`, `front-archive-row`. العناوين بلا صور والصحيفة المقسمة إلى أبواب تميزه عن compact ذي صفوف الصور المتواصلة. لا CSS multi-column يغير ترتيب القراءة.

#### visual، المشهد

| الصفحة | Desktop | Mobile |
| --- | --- | --- |
| الرئيسية | قائد بصري عريض، ثم تدفق صور كبيرة ومتوسطة بترتيب زمني/تحريري محفوظ | صورة بارزة ثم بطاقات مصورة كاملة العرض، عناوين خارج الصورة عند الحاجة |
| الخبر | عنوان وبيانات ثم غلاف واسع غير مقصوص، متن مقروء وأخبار مرتبطة مصورة | عنوان وغلاف ومتن، الأخبار المرتبطة تبقى مصورة بحجم واضح |
| التصنيف | قائد ثم تدفق مرئي وأرشيف بصري متفاوت الأدوار | صورة القسم الرئيسية من الخبر الفعلي ثم تسلسل صور وعناوين |
| البحث | نتائج تقودها صور كبيرة نسبيا، دون رفع نتيجة لرتبة تحريرية غير موجودة | صور أعلى العناوين، مع قسم وتاريخ واضحين |
| التاج | شبكة صور متفاوتة المساحات، بترتيب DOM ثابت | تسلسل مرئي كامل العرض يحافظ على حضور الصور |

Variants: `visual-hero`, `visual-wide`, `visual-tile`, `visual-row`, `visual-related`. نسب الصورة إلى النص أعلى من magazine؛ لا يحتاج صورة قسم مخترعة أو slider أو gallery إضافية.

#### bulletin، النشرة

| الصفحة | Desktop | Mobile |
| --- | --- | --- |
| الرئيسية | عناوين أيام فعلية ومجموعات أخبار تحتها، التاريخ في مسار واضح وصور انتقائية | رأس اليوم ثم صفوف أخبار، الفصل الزمني هو العلامة المستمرة |
| الخبر | رأس خبر بتاريخ فعلي، متن هادئ، أخبار مرتبطة دون وصف زمني مضلل | التاريخ والقسم والعنوان ثم الغلاف والقراءة |
| التصنيف | أرشيف التصنيف على مجموعات أيام؛ أول قصة يمكن إبرازها | مجموعات أيام، صور محدودة للأخبار البارزة |
| البحث | نتائج مرتبطة بكلمة البحث، تفصلها أيام النشر ضمن الصفحة الحالية | التاريخ الحقيقي فوق مجموعة النتائج، بدون live badges |
| التاج | تاريخ تغطية الموضوع من مقالات الوسم الحالية | ملف زمني واضح الأيام مع قائمة الأخبار |

Variants: `bulletin-day-heading`, `bulletin-row`, `bulletin-feature-row`. التجميع على عناصر صفحة Pagination المحمّلة فقط؛ اليوم قد يستكمل في صفحة تالية، فلا تُعرض ادعاءات اكتمال اليوم أو أعداد إجمالية مخترعة. `published_at` هو المصدر، وغيابه لا ينتج وقتًا افتراضيًا. لا يستخدم ترتيب featured المختلط لتوليد مجموعات زمنية خاطئة؛ تبقى المميزة في قسم مستقل عند الحاجة.

#### magazine، المجلة

| الصفحة | Desktop | Mobile |
| --- | --- | --- |
| الرئيسية | افتتاحية صورة ونص متقابلان، فصول تحريرية بين قصة كبيرة وقصص أصغر | صورة ثم تقديم تحريري، ثم تناوب قصة كبيرة وصفوف أصغر مع مسافات بين الفصول |
| الخبر | عنوان عريض وغلاف، قراءة مريحة، مرتبطات قصة كبيرة مع ثلاث أقصر حسب المتاح | عنوان وغلاف ومتن ثم قصة مرتبطة بارزة وصفوف |
| التصنيف | عنوان القسم ثم افتتاحية 1+3 وأرشيف بمقاسات متفاوتة | قصة قسم كبيرة ثم صفوف قصص مصورة |
| البحث | أول نتيجة لها مساحة أكبر بصريًا والبقية في وحدات تحريرية؛ لا وصفها بالأفضل | أول نتيجة أوسع ثم نتائج أصغر، بنفس ترتيب البحث الحالي |
| التاج | ملف موضوع بافتتاحية ثم فصول قصص متفاوتة | افتتاحية ثم وحدات تتناوب في الكثافة |

Variants: `magazine-cover`, `magazine-wide`, `magazine-brief`, `magazine-related`. بخلاف visual، النص والتقديم والفواصل بين الفصول شركاء في التكوين، ولا تتحول كل النتائج إلى صور كاملة العرض. غياب الوصف لا يترك فراغًا محجوزًا.

#### compact، الموجز

| الصفحة | Desktop | Mobile |
| --- | --- | --- |
| الرئيسية | افتتاحية أفقية قصيرة ثم تيار صفوف مصغرة وعمود أهم الأخبار | صفوف thumbnail نحو 72–88px مع عناوين قابلة للالتفاف وبيانات قصيرة |
| الخبر | رأس عملي ومعلومات مشاركة مدمجة وغلاف داخل عرض القراءة | وصول مباشر إلى المتن، يظل خط المقال مريحًا رغم كثافة القوائم |
| التصنيف | قائد أفقي قصير ثم أرشيف صفوف وعمود الأكثر قراءة | افتتاحية قصيرة ثم تيار أخبار واحد |
| البحث | نموذج قصير ثم نتائج أفقية متواصلة | نموذج ثم صفوف؛ لا Hero للنتيجة الأولى |
| التاج | عنوان ملف مدمج ثم قائمة صور صغيرة وعناوين | قائمة متواصلة قصيرة الفواصل |

Variants: `wire-lead`, `wire-row`, `wire-mini`, `wire-related`. لا مجموعات يومية كما في bulletin، ولا أعمدة مانشيتات كما في frontpage. كثافة القوائم لا تبرر خطًا صغيرًا أو ارتفاعًا ثابتًا يقص العناوين.

#### sections، الأقسام

| الصفحة | Desktop | Mobile |
| --- | --- | --- |
| الرئيسية | شرائط أقسام؛ عنوان واضح وقصة قائد وعناوين مساندة بكل شريط | أبواب رأسية، داخل كل باب قائد ثم بقية أخباره؛ لا تمرير أفقي إلزامي |
| الخبر | شريط تعريف القسم، محتوى قراءة وعمود موضوعات مساندة | هوية القسم ثم قراءة ثم موضوعات مساندة |
| التصنيف | افتتاحية القسم ثم منطقتان واضحتان للأرشيف والأكثر قراءة | افتتاحية وأرشيف ثم الأكثر قراءة |
| البحث | وحدات أفقية ذات شارات أقسام واضحة، مع الحفاظ على الترتيب الزمني الحالي | صفوف تحمل قسمها، لا إعادة تجميع تغير ترتيب النتائج |
| التاج | ملف وسْم يعرض القصص في مجموعات مرئية مع سياق أقسامها | مجموعات متتابعة تحافظ على ترتيب القصص |

Variants: `section-hero`, `section-lead`, `section-pair`, `section-row`. مصدر أقسام الرئيسية هو `$sections` الحالي؛ لا يُفترض وجود كل التصنيفات أو تحميل أخبارها جميعًا. كل شريط يحتاج قصة فعلية، ويختفي إذا كان خاليًا.

#### focus، القراءة

| الصفحة | Desktop | Mobile |
| --- | --- | --- |
| الرئيسية | قائد نصي وصورة مساندة، فهرس أخبار واسع المسافات | عنوان القائد أولًا ثم صورة وفهرس قراءة متباعد |
| الخبر | عمود متن مركزي، غلاف ومشاركة واضحة، ملحقات في نهاية القراءة | متن بعرض الهاتف بهوامش عملية، ثم التاجز والمرتبطات والأكثر قراءة |
| التصنيف | عنوان قسم بسيط ثم قائمة قصص نصية بصور انتقائية | قائمة قراءة متباعدة، وصف الخبر عند وجوده |
| البحث | العنوان والوصف أولًا وصورة صغيرة اختيارية | نتائج نصية مقروءة دون ضغط أو كروت معرض |
| التاج | فهرس موضوع نصي بتدرج واضح | قائمة متباعدة وعنوان ملف واضح |

Variants: `focus-lead`, `focus-index-row`, `focus-text-result`, `focus-related-row`. يعاكس compact في الإيقاع والفراغ، ويظل متميزًا على الهاتف عند اختفاء الأعمدة لدى الاثنين.

### تركيبات الغلاف المقترحة

كل صف preset افتراضي متكامل، ويُراجع مع محتوى القالب قبل اعتماده. التخصيص المتقدم يمكنه تجاوزه صراحةً.

| القالب | Header | Menu | Footer |
| --- | --- | --- | --- |
| newsroom | newsroom | classic | columns |
| frontpage | centered | tabs | compact |
| visual | bold | mega | signature |
| bulletin | nav-first | tabs | minimal |
| magazine | split | mega | centered |
| compact | compact | classic | reversed |
| sections | framed | pills | accent |
| focus | minimal | pills | light |

في النشرة لا يستبدل شعار «مباشر» التاريخ الحقيقي؛ النص الثابت في الهيدر يخضع للمراجعة حتى لا يدعي تحديثًا لحظيًا غير موجود. اختيار الكروت يعالج أيضًا `x-main-news-card` الحالي الذي يخرج H1: القائد داخل صفحة تصنيف يستخدم heading level مناسبًا ولا ينتج H1 ثانيًا.

### عقد الهيدر والمنيو على الهاتف

هذه مواصفات ملزمة للتركيبات الافتراضية وليست تحسينًا اختياريًا. الأربعة menu patterns يعاد استخدامها بتكوين يناسب القالب، ولا يُطلب اختراع ثماني وظائف منيو. عند اختيار override يدوي نختبر النمط المختار واستجابته أيضًا.

| القالب | عناصر الهيدر وترتيبها على الهاتف | شكل التنقل المحمول |
| --- | --- | --- |
| newsroom | شعار عند بداية السطر وأزرار بحث/منيو، سطر تاريخ قصير مستقل | classic بقسم روابط يُفتح داخل التدفق، مجموعات واضحة وفواصل |
| frontpage | شعار في المنتصف كسطر مانشيت، بحث في سطر أدنى وأداة الأقسام | tabs تعرض فهرس روابط مضغوطًا في صفين عند الفتح، ويزداد الارتفاع للعناوين الطويلة |
| visual | شريط هوية داكن منخفض، شعار واضح وأدوات منفصلة | mega تحت زر الأقسام، زر مستقل لكل تصنيف يكشف أخباره المصورة رأسيًا، ورابط التصنيف يظل قابلًا للزيارة مباشرة |
| bulletin | شعار مدمج وتاريخ إصدار حقيقي، البحث قابل للفتح دون شريط live | tabs في شريط موضوعات قابل للتمرير محليًا مع إشارة امتداد واضحة، كل الروابط متاحة بالكيبورد؛ لا overflow للصفحة |
| magazine | شعار مركزي ومساحة تنفس ثم البحث وأداة الأقسام | mega بنمط فهرس تحريري ذي عناوين واضحة، معاينات أخبار تحت التصنيف المفتوح في عمود واحد |
| compact | شعار أصغر وبحث/منيو في صف منخفض الارتفاع | classic داخل التدفق بروابط كثيفة في عمودين إن اتسعت الأسماء، وتتحول لعمود واحد عند الضرورة |
| sections | شعار ثم شريط تعريف القسم حيث يوجد، وأداة البحث | pills تلتف داخل مجموعة الأقسام المكشوفة، مع الحفاظ على مساحة لمس واضحة دون سحب أفقي إلزامي |
| focus | شعار بسيط عند بداية القراءة، أداة بحث واضحة، أقل عناصر مساندة | pills لا تظهر حتى فتح الأقسام، قائمة واسعة المسافات سهلة اللمس بلا معاينات أخبار |

لكل disclosure زر أصلي بحالة `aria-expanded` وربط `aria-controls`. الفتح باللمس والكيبورد والإغلاق بـEscape يعيدان التركيز إلى الزر. الروابط المخفية خارج tab order، ولا يُمنع أول ضغط على رابط تصنيف بغرض الفتح؛ له زر منفصل. تبقى روابط الموقع متاحة عند غياب JavaScript. التركيبات هنا داخل التدفق وليست modal drawers، فلا حاجة إلى focus trap. الشريط القابل للتمرير محليًا يحافظ على وضوح focus والرابط النشط.

بوابة P1/P2: لا selector عام تحت 980px يفرض على الثمانية نفس العناصر المخفية أو نفس توزيع الهيدر. تُلتقط بداية كل قالب في 390px لإثبات تطبيق صفه في هذا الجدول مع body الخاص به.

## قرار البنية

### مصدر القالب

نستخدم إعداد `site_template` داخل جدول Settings الموجود، وقائمة مسموحة ثابتة في `config/site-templates.php`. تعريف كل قالب يحدد اسمه وملفات العرض وCSS والقيم المقترحة للهيدر والمنيو والفوتر. لا يُسمح بأن تصبح قيمة الطلب مسار Blade أو CSS حرًا.

تظل نقاط الدخول الخمس الحالية مسؤولة عن عنوان الصفحة والـSEO وتمرير البيانات. تستدعي تجميعة العرض المحددة للقالب. ما يحتاج تركيبًا مختلفًا يحصل على ملف Blade صغير داخل `resources/views/templates/{id}/`؛ وما يتشارك نفس التركيب يعيد استخدام الجزء المشترك.

لا نفرض عددًا أقصى لملفات العرض على حساب تميّز التصميم. قد توجد خمس تجميعات قصيرة لكل قالب، لكن لا تتكرر منطقية جلب الأخبار أو التعليقات أو عرض محتوى الخبر بينها. لا نضيف Page Builder أو نظام plugins أو dependency جديدة لهذه المهمة.

### مسؤوليات الملفات

| المنطقة | المسؤولية |
| --- | --- |
| `config/site-templates.php` (مقترح) | أسماء القوالب، allowlist، مراجع التجميعات، presets للهيدر والمنيو والفوتر |
| `AppServiceProvider` | تحديد القالب الفعلي مرة واحدة لكل طلب، وتمرير تعريفه بأمان |
| `SettingController` وصفحة Branding | معاينة واختيار وحفظ إعدادات القالب والتحقق منها |
| `layouts/app.blade.php` | الغلاف العام، meta، assets، عنوان القالب، الهيدر والمنيو والفوتر |
| نقاط الدخول الخمس الحالية | بيانات الصفحة وSEO والربط بتجميعة القالب |
| `templates/{id}/*.blade.php` (مقترح) | ترتيب أجزاء كل صفحة حسب القالب |
| `components/*` وأجزاء المحتوى المشتركة | وظائف وعرض محتوى الخبر والتعليقات والبطاقات وPagination والإعلانات |
| `public/css/templates/{id}.css` (مقترح) | خصائص القالب المختار فقط، scoped باسمه |
| `app.css` و`theme.css` | فصل الأساس المشترك عن توزيع الشكل السابق قبل تعميم النظام |
| `public/js/app.js` | التفاعل المشترك وPagination والتعامل مع تغير القالب بين طلبين |

نحمّل أساس الواجهة وملف القالب المختار فقط، مع إصدار لملفات CSS/JS عند تغيرها. لا نحمّل الثمانية ولا نرسم ثماني نسخ مخفية من المحتوى. الألوان والشعار تأتي من إعدادات البراندينج الحالية، ويستخدم القالب نفس الأدوار اللونية بنسب وتوزيع مختلفين.

صيغة النطاق المعتمدة واحدة: `data-site-template="visual"` على body ونظائرها من IDs الجدول، بلا بادئات رقمية متباينة بين المجموعتين. تعريف القالب الواحد يطابق مسار تجميعته وملف CSS الخاص به. أخطاء تعريف قالب أو فقدان asset تُكتشف بالاختبارات قبل التفعيل؛ fallback يعيد تجميعة وCSS متوافقين معًا.

قبل P2 تُسلَّم عقود الأجزاء المشتركة: مدخلات hero وقيمة heading level، مدخلات news card والـvariant، جزء metadata، جزء متن الخبر، جزء المشاركة والتعليقات، وعقد slot الإعلان. تجميعة الصفحة تمرر البيانات الموجودة لهذه الأجزاء، فلا يحتاج منفذ القالب أن يكتب منطق تعليقات أو استعلامات داخل عرضه. تبقى `data-pagination-anchor` وأسماء anchors الحالية ثابتة عبر القوالب.

بوابة فصل CSS: تسجيل صور للشكل الحالي ثم مقارنة بعد الفصل، وتحديد كل selector مسؤول عن توزيع الصفحات والبطاقات والـHero. ينتقل إلى نطاق القالب الموافق أو إلى primitive مشتركة محايدة؛ لا تبقى قواعد عامة تفرض تركيب الشكل القديم على الجميع. الأنماط المسماة للهيدر/الفوتر/المنيو تبقى مشتركة ومحددة بأسمائها. تُراجع قواعد `theme.css` تحت 980px لأنها تقرّب أشكال الهيدر حاليًا، ويُسمح بتوزيع موبايل مخصص للقالب عند الحاجة.

أي تغييرات تجعل بطاقات الخبر تظهر داخل قائمة، عنصر lead أو نتيجة بحث تُنفّذ بـvariants واضحة. نحافظ على ترتيب DOM المنطقي للقارئ والكيبورد؛ لا نستخدم CSS order لتغيير ترتيب قراءة أساسي أو grid masonry يربك تسلسل الأخبار.

### حدود البيانات والسلوك

- نفس Controllers واستعلامات النشر والعلاقات والأخبار الحالية ما أمكن. أي احتياج لبيانات إضافية يُراجع مركزيًا قبل تغيير الاستعلام.
- لا استعلام داخل بطاقة أو تكرار جلب الأخبار من داخل القالب. اخبار الـMega Menu محدودة من قاعدة البيانات، لا جلب لكل الأخبار ثم اقتصاصها في PHP.
- أنواع محتوى الخبر الثلاثة الحالية (editor content، content blocks، النص العادي) تعبر مكوّن عرض مشترك، مع الحفاظ على سلوكها الحالي.
- لا timestamps أو إحصاءات أو live status مصطنعة. قالب النشرة يستخدم `published_at` الموجود.
- الحفاظ على روابط `q` و`page` وslugs وسلوك الرجوع للأمام والخلف. الحفاظ على التعليقات والتحقق ورسائل النجاح.
- صفحة 404 ترث غلاف القالب؛ تبقى خارج عدد الصفحات الخمس الأساسية لكنها ضمن فحص عدم التراجع.

## تجربة البراندينج والنشر

1. قسم «قالب الموقع» يعرض 8 صور مصغرة حقيقية للقوالب بعد تنفيذها، اسمًا ووصفًا قصيرًا.
2. معاينة للأدمن تشمل تبويبات الصفحات الخمس وحجم موبايل/ديسكتوب، وتستخدم نفس البيانات. المعاينة لا تحفظ Settings ولا تظهر للزوار ولا تدخل كاش صفحاتهم.
3. اختيار القالب يوضح presets المقترحة للهيدر والمنيو والفوتر. تخصيص متقدم صريح يسمح بتجاوز أي منها؛ نعتمد أسبقية واحدة: تخصيص صريح، ثم preset القالب، ثم fallback معروف.
4. الشعار والألوان المحفوظة تُحترم. لا يعيد اختيار القالب كتابة لوحة ألوان المستخدم تلقائيًا.
5. زر «تطبيق القالب» يحفظ الإعدادات المترابطة كوحدة واحدة. القيم غير المسموحة تُرفض قبل الحفظ.
6. تطبيق القالب يمسح كاش الإعدادات/أي HTML يعتمد عليه. بيانات تحريرية لا تعتمد على القالب لا يلزم تفريغها لمجرد تغيير شكل الصفحة.
7. صفحة تعاد زيارتها تُظهر القالب الجديد. تبويب مفتوح لا يعيد رسم نفسه فورًا تلقائيًا؛ عند تنقل/Pagination نكتشف اختلاف معرف القالب ونُجري انتقالًا كاملًا لتتطابق الصفحة وCSS.
8. المعاينة الخاصة تُحمى بصلاحية إدارة الإعدادات وتستخدم استجابة خاصة غير قابلة للتخزين. أي بارامتر معاينة ينتقل في Pagination يظل تحت نفس التحقق.
9. توثيق القالب والاختيارات الفعلية قبل QA، ثم استعادتها بعده. خلال البناء يظل الشكل الحالي هو الافتراضي حتى يصبح القالب البديل جاهزًا للتطبيق.

تمثيل الأسبقية النهائي: ثلاث قيم Boolean في Settings الموجودة، `header_follow_template` و`menu_follow_template` و`footer_follow_template`. غيابها يعادل false للحفاظ على الاختيارات السابقة؛ true يأخذ preset القالب، وfalse يستخدم الاختيار اليدوي المحفوظ بعد التحقق من allowlist. اختيار قالب من المعرض يقترح true للثلاثة داخل مسودة المعاينة ويوضح النتيجة؛ اختيار تخصيص يدوي يحول الجزء المعني فقط إلى false. لا نستنتج وجود override بمجرد وجود قيمة header/menu/footer في DB، لأنها محفوظة دائمًا بالفعل.

غياب `site_template` يحافظ على التجميعة الحالية خلال الانتقال، ولا ينتج قالبًا تاسعًا في المعرض. حفظ قالب صحيح هو نقطة التفعيل. أي فشل في resolve يرجع إلى غلاف وتجميعة وassets احتياطية متوافقة معًا. اختبار الرجوع يستعيد القالب والاختيارات والـflags معًا.

عقد Pagination: المستند الكامل المُجلَب يحتوي marker القالب نفسه الموجود على body. يقارن `app.js` القيمة قبل تغيير `innerHTML`، ويستخدم navigation كاملًا للرابط المطلوب عند اختلافها أو غيابها المتوقع. يمكن إضافة بصمة ثابتة لإعدادات العرض المحسوبة في الطلب لتغطية تغيير الهيدر/الألوان مع بقاء ID القالب؛ لا تكون timestamp متغيرًا في كل تحميل. المعاينة تحمل معرّفها المسموح في query عبر روابط pagination وhistory، وتتحقق منه على السيرفر لكل طلب، وتعيد `Cache-Control: private, no-store` دون تغيير `site.settings`.

`optimize:clear` خطوة تطوير/تسليم عند الحاجة. لا نجعل مسح كل كاش الموقع في كل طلب هو آلية تشغيل القوالب، ولا نعتمد فقط على Clear-Site-Data لأنه يخص المتصفح الذي تلقى الرد.

## الإعلانات داخل النظام

### العقد المشترك

- نعيد استخدام صورتي الإعلان ورابطيهما الحاليين. «موضع» الإعلان يحدد مكان ظهوره وليس حملة جديدة أو مصدرًا جديدًا.
- لكل موضع اسم فريد داخل الصفحة؛ تجميعة الصفحة تملك توزيع المواضع، و`ad-slot` يملك عرض الصورة والرابط والوسم وحجز المساحة. الغلاف لا يضيف موضعًا خفيًا فوق التوزيع نفسه.
- كلمة «إعلان» تظهر مع الصورة وبدونها. الروابط تظل `sponsored noopener`، والإعلان يظل منفصلًا بصريًا عن خبر أو زر.
- عرض الصورة كاملًا بـcontain، بلا قص نص الإعلان أو تمديد يغيّر نسبه. لا نطبّق crop الخاص بصور الأخبار على الإعلان.
- حجز حاوية بنسبة وحجم مناسبين للنوع والمساحة المتاحة، مع image dimensions عند توافرها. المقاسات المرشحة للاختبار: أفقي 728×90، مستطيل 300×250، وصورة طولية 300×600 لاختبار عدم الكسر. هذه عينات تصميم وليست ادعاء أنها مقاسات الصور المرفوعة حاليًا.
- عند عدم وجود صورة تبقى مساحة واضحة محددة الحجم. عند فشل التحميل أو مسار storage مكسور يظهر fallback منضبط، دون رمز صورة مكسورة أو قفزة في بقية الصفحة.
- صورة الإعلان الأفقي نفسها تصغر على الهاتف وتُفحص قابلية قراءتها. إذا كان نص أصل الصورة غير مقروء بعد التصغير، يُسجَّل الاحتياج إلى نسخة موبايل اختيارية في الداشبورد؛ لا نَعِد بأن CSS يصلح جودة الصورة الأصلية.
- لا sticky ad على الهاتف ولا popup ولا auto-refresh. الموقع الإعلاني يبقى جزءًا من تدفق الصفحة.
- لا إعلانين متتاليين دون محتوى فاصل. صفحة التصنيف لا تستعيد الإعلان السفلي الذي طلب المستخدم إزالته.

### مخطط المواضع

| الصفحة | مواضع أساسية | سلوك الموبايل |
| --- | --- | --- |
| الرئيسية | أفقي بعد الافتتاحية، ثم فواصل بعد كتل تحريرية فعلية | بعد القصة وبعض الأخبار القصيرة، مع فصل المحتوى بين الإعلانات |
| الخبر | أفقي خارج جسم النص، ومستطيل مساند إذا كان للقالب عمود جانبي | المستطيل ينتقل إلى موضع طبيعي بعد جسم الخبر، دون فصل العنوان عن الغلاف |
| التصنيف | أفقي بعد الأخبار المميزة، مستطيل داخل المنطقة المساندة | المستطيل بعد جزء من الأرشيف أو الأكثر قراءة؛ بلا أفقي إضافي قبيل الفوتر |
| البحث | أفقي بعد النموذج/مجموعة نتائج كافية | لا يحجب مربع البحث أو رسالة «لا توجد نتائج» |
| التاج | أفقي بين مجموعة أخبار وأخرى، أو أسفل النتائج القصيرة | عنوان التاج وأول النتائج يظلان متاحين قبل المساحة الكبيرة |

القالب يحدد المكان الدقيق ضمن هذا العقد. لا نزيد كثافة الإعلان عن الوضع الحالي بلا سبب واضح. الصفحات الفارغة والقصيرة لا تحصل على فواصل إعلان محسوبة لكتل محتوى غير موجودة. الاستثناء المحدد للبحث والتاج هو موضع واحد مستقل بعد رسالة empty، يُحسب ضمن العدد ولا يترك قبله فراغ كتلة نتائج غير موجودة؛ عند قلة النتائج يأتي بعد آخر نتيجة.

### ملكية وعدّ المواضع

خريطة بسيطة معلنة في تجميعة كل صفحة، لا خدمة إعلانات أو DB registry جديدة. يُمرَّر اسم الموضع إلى المكوّن، ويظهر كـ`data-ad-slot` للفحص. لا يضيف layout العام إعلانات تلقائية للقوالب الجديدة؛ الـfallback القديم يبقى بمواضعه حتى نقل مسؤوليتها بصورة كاملة.

| الصفحة | مواضع ممكنة ومعنى كل منها | العدد المتوقع |
| --- | --- | --- |
| الرئيسية | `home-after-lead` أفقي بعد الافتتاحية؛ `home-between-sections` أفقي إذا وُجد بابان فعليان؛ `home-rail` مستطيل للقوالب newsroom/frontpage/bulletin/sections عند وجود محتوى مساند كافٍ | 1 دائمًا، +1 عند وجود بابين، +1 عند rail مستوفٍ للشروط، بحد أقصى 3 |
| الخبر | `article-after-body` أفقي بعد جسم الخبر؛ `article-rail` مستطيل اختياري للقوالب newsroom/visual/magazine/sections بجانب محتوى مساند | 1 أو 2؛ على الهاتف الثانوي بعد المرتبطات إذا وجدت لتفصل بين الإعلانين، وإلا يبقى الأفقي الواحد |
| التصنيف | `category-after-spotlight` أفقي بعد المميزة أو رأس الصفحة إن خلت؛ `category-rail` مستطيل بعد الأكثر قراءة | 2 مع أخبار ومحتوى مساند، 1 إذا القسم خالٍ؛ لا موضع bottom ثالث |
| البحث | `search-placement` أفقي بعد أول 6 نتائج، أو بعد النتائج إذا أقل؛ عند empty يكون موضعًا مستقلًا بعد الرسالة | 1 في كل حالة |
| التاج | `tag-placement` أفقي بعد أول 6 قصص، أو بعد القصص إذا أقل؛ عند empty يكون موضعًا مستقلًا بعد الرسالة | 1 في كل حالة |

هذه أعداد واجهة القوالب الجديدة وليست إحصاءً للصفحة الحالية. شرط كل موضع يعتمد على collection المتاحة، ويُختبر مع القالب والجهاز والحالة. أي مساحة مشتركة/فارغة تُحسب ضمن العدد. عند قلة المحتوى نُسقط الموضع الثانوي بدل جمع إعلانين متلاصقين. الهاتف يعيد ترتيب الموضع في التدفق ولا ينشئ نسخة ثانية مخفية منه؛ أي اختلاف عدد مقصود ظاهر في الجدول.

## التوزيع على الإيجنتات

إعداد المواصفات بدأ فعليًا بإيجنتَي Terra. التنفيذ التالي يُسند إلى نفس المالكين بعد تثبيت العقد؛ الحد التشغيلي أربعة وكلاء متزامنين شامل المنسق.

| الدور | الموديل | الملكية | ما لا يعدله بالتوازي |
| --- | --- | --- | --- |
| المنسق الرئيسي | الموديل الحالي | الأساس المشترك، Branding، config/provider، دمج وتقييم نهائي | لا يستبدل ملفات القوالب أثناء عمل مالكها |
| `template_plan_a` ثم منفذ مجموعة A | Terra | newsroom/frontpage/visual/bulletin: تجميعات القالب وCSS الخاص به | ملفات Branding والغلاف وCSS/JS المشترك والكومبوننتس المركزية |
| `template_plan_b` ثم منفذ مجموعة B | Terra | magazine/compact/sections/focus: تجميعات القالب وCSS الخاص به | نفس الملفات المشتركة |
| مراجع الإعلانات والاستجابة في موجة لاحقة | Terra | تدقيق مستقل لجميع القوالب، تقرير الأدلة والعيوب؛ ثم الإصلاح المحدد بالتنسيق | لا يغيّر ملفات المالكين أثناء التنفيذ ولا يستخدم browser معهم بالتوازي |

مهمة المنيو السابقة تستكمل أولًا ضمن نطاقها. لا يبدأ دمج أساس القوالب في الملفات المشتركة قبل استلام نتيجتها. دور QA الثالث يبدأ عندما يفرغ مقعد؛ لا يُشغّل خمسة وكلاء بالتزامن.

المنسق يراجع كل تسليم ويعيده لصاحبه عند فشل شرط قبول. تشغيل أو اكتمال الإيجنت لا يساوي قبول شغله. تعديل ملف مشترك يُطلب من مالكه المركزي برسالة تحتوي المطلوب والدليل؛ لا تعديلات متزامنة عليه. تبويب Browser وإعدادات البراندينج المشتركة لهما مستخدم واحد في كل لحظة.

قائمة الكتابة الملزمة بعد تثبيت P1:

- A فقط: `resources/views/templates/{newsroom,frontpage,visual,bulletin}/**` و`public/css/templates/{newsroom,frontpage,visual,bulletin}.css`.
- B فقط: `resources/views/templates/{magazine,compact,sections,focus}/**` و`public/css/templates/{magazine,compact,sections,focus}.css`.
- المشترك كله للمنسق: `config/site-templates.php`، provider، Branding controller/view، layout، نقاط دخول الصفحات، `components/**`، `app.css`، `theme.css`، `admin.css`، `app.js`، الاختبارات المركزية.
- QA قراءة وتقارير وأدلة، لا كتابة كود المجموعتين؛ إصلاحاته تعود إلى مالك الملف المحدد. امتلاك browser يُحجز لمراجعة واحدة؛ المنسق يضبط Settings ويستعيدها، وQA يستخدم المعاينة المعزولة عند جاهزيتها.

كل رسالة تكليف تنفيذ تتضمن هذه القائمة، القالب الواحد المطلوب أولًا، عقد shared components، بوابات القبول، وحظر تعديل البيانات الفعلية. بعد كل قالب يراجع المنسق الملفات والأدلة قبل تكليف القالب التالي.

## موجات التنفيذ ومخارجها

### P0: التخطيط والعقد (هذه المرحلة)

قراءة الموقع والإعلانات، مصفوفة 8×5، معايير التميّز، خطة الملكية والاختبارات. المخرج هو هذا المستند ومواصفات المجموعتين، دون الادعاء أن التنفيذ بدأ.

### P1: الأساس المشترك

المنسق يضيف allowlist واختيار القالب والمعاينة، ويفصل CSS الحالي، ويفصل محتوى الخبر المشترك، ويضبط عقد الإعلانات وPagination. يحدد قائمة الملفات المسموح بها لكل منفذ. فحص سلوك الشكل الحالي قبل وبعد الفصل مطلوب.

### P2: قالبان يثبتان مرونة الأساس

مجموعة A تنفذ visual، ومجموعة B تنفذ compact. كلاهما يشمل الصفحات الخمس والإعلانات والموبايل من البداية. نختبر اختلافهما بنفس البيانات على 390px و1440px ونصلح العقد المشترك قبل تكراره في الستة الباقية.

### P3: بقية القوالب

بعد نجاح القالبين، كل مجموعة تسلم قالبًا كاملًا في المرة الواحدة: الصفحات الخمس، CSS، معالجة الشاشات الصغيرة، قائمة المواضع الإعلانية، ونتيجة فحصها. لا تُعتبر رئيسية مكتملة مع أربع صفحات افتراضية قالبًا منتهيًا.

### P4: المراجعة المستقلة

Terra QA يراجع الإعلانات والاستجابة والتفاعلات ومقارنة الثمانية، والمنسق يدقق الأدلة ويعيد العيوب لأصحابها. لا يُجرى Browser QA متزامن على Settings الفعلية.

### P5: التسليم

معرض معاينات حقيقية في Branding، تفعيل/رجوع ناجح، اختبارات سلوك ناجحة، ومصفوفة الأدلة كاملة. يستعيد QA إعدادات المستخدم المحفوظة ويذكر أي عيب متبقٍ صراحة. التنفيذ محلي في هذا المشروع؛ نشر السيرفر ليس جزءًا من الخطة الحالية.

## بوابات التحقق

### التميّز والشكل

- 8 قوالب × 5 صفحات × حجمين مرجعيين = 80 حالة فحص بصري أساسية: 390px و1440px. لكل حالة لقطة أول الشاشة ولقطة كاملة تغطي بقية الصفحة والإعلانات والفوتر.
- كل الصفحات والقوالب تمر أيضًا بفحص عرض على 360، 768، 1024، 1920px، مع فحص تفاعلي مركز للقائمة والإعلانات عند تغير الأعمدة. 320px وزوم 200% للحالات الحرجة في إعادة التدفق.
- لوحة مقارنة للمواقع الثمانية بنفس البيانات والألوان. يراجع المنسق بداية كل صفحة ووسطها وفوترها؛ القوالب المتشابهة تعود للتصميم قبل الاعتماد.
- نص عربي طويل، عنوان به English وأرقام، شعار عريض، أسماء تصنيفات طويلة، وصورة خبر مختلفة النسب. لا horizontal overflow على مستوى الصفحة ولا نص متراكب.
- نص المقال بعرض قراءة مريح قريب من 65–75ch على desktop ويملأ العرض المتاح بهوامش واضحة على mobile. لا تقسيم جسم الخبر إلى أعمدة جريدة.
- تباين واضح وفوكس ظاهر، عناصر لمس عملية بحد مستهدف 44px، عنوان H1 واحد وmain واحد، ترتيب قراءة منطقي، ودعم reduced motion.
- لا تعويض عن كروت متشابهة بتبديل اللون وحده. لا عنوان فوق صورة لا يمكن قراءته ولا قص سطور يخفي معنى الخبر.

### الوظائف والبيانات

- اختيار قالب صالح يظهر عبر الصفحات الخمس، والقيمة غير الصالحة لا تُحفظ. مستخدم غير مخوّل لا يفتح المعاينة أو يطبقها.
- Preview لا يغيّر ما يراه الزائر ولا يتسرب إلى shared cache. تطبيق قالب ثم الرجوع للقالب السابق يعمل.
- أحدث الأخبار والتصنيف والتاج والبحث وPagination والرجوع/الأمام وروابط الأخبار تعمل بكل قالب، مع وضع JavaScript معطل أو فشل fetch.
- اختبار تبويب مفتوح بالقالب A ثم تطبيق B ثم Pagination: لا خلط markup/styles بين القالبين.
- اختبار خبر بمحتوى محرر وآخر ببلوكات وآخر بنص عادي، التعليقات، التاجز والأخبار المرتبطة وSEO.
- محتوى فارغ، خبر واحد، بيانات كاملة، وصور خارجية بطيئة/فاشلة. السجلات الاختبارية في بيئة اختبار معزولة وليست حذفًا أو تعديلًا لمقالات المستخدم.
- إعلان حقيقي بلا رابط ومع رابط، غياب صورة، صورة غير متاحة، صورة أفقية وطولية. الوسم ظاهر والصورة كاملة والأبعاد مستقرة، ولا موضع مكرر، وخصوصًا أسفل التصنيف.
- تحميل CSS لقالب واحد، الحفاظ على الصورة الرئيسية ذات الأولوية وlazy-load لما تحتها، وعدم إضافة استعلامات تتناسب مع عدد البطاقات أو إجمالي الأخبار.

اختبارات Feature القائمة تُعاد في النطاق المتأثر، مع اختبار بارامتري لاختيار القالب والصفحات والصلاحيات والكاش ومواضع الإعلان عند الحاجة. اختبارات الكود لا تثبت جودة الشكل؛ صور Browser ومراجعتها شرط مستقل. نسجل أزمنة/طلبات baseline ومقارنة بعدية عند قياس الأداء؛ لا أرقام نجاح افتراضية أو نسب اعتباطية.

تُثبت مجموعة البيانات المقارنة برقم snapshot في بيئة QA معزولة، تشمل قصة مكتملة وخبرًا وحيدًا وعناوين عربية طويلة ومختلطة وصورًا أفقية/طولية وحالات إعلانات. لكل لقطة نسجل template، page، viewport، fixture/snapshot، URL، وقت الالتقاط والقالب الفعلي المعروض. إعدادات Branding العامة لا تُقلب عشوائيًا لتوليد الصور. لكل واحد من الـ40 تصميمًا تُثبت أول ثلاث وحدات ونسب صورها ودور البطاقة ووجود rail ومواضع الإعلانات قبل بدء تنفيذه؛ تُراجع هذه القيم في لوحة مقارنة موحدة.

مخرجات التحقق منفصلة: Feature والصلاحيات والكاش والأعداد؛ 80 حالة Visual الأساسية؛ sweep المقاسات الوسيطة؛ ثم Keyboard/JS-off/fetch failure. PASS في مسار لا يغطي مسارًا آخر.

### سجل التسليم لكل قالب

| الحقل | القيمة المطلوبة |
| --- | --- |
| القالب/المالك | ID ومهمة الإيجنت |
| الصفحات الخمس | PASS/FAIL/NOT RUN لكل صفحة مع رابط دليل |
| Desktop/Mobile | صور مرجعية ونتيجة فحص الحدود |
| تميّز الشكل | المحاور المختلفة ونتيجة المقارنة |
| الإعلانات | المواضع والعدد وحالات الصورة والرابط والفشل |
| التفاعل | منيو وبحث وPagination وتعليقات حيث تنطبق |
| الكاش | Preview/apply/rollback وتبويب قديم |
| الملفات | قائمة الملفات المعدلة والمتطلبات المشتركة |
| العيوب | ما أُصلح وما يزال يمنع الاعتماد |

## الوضع عند إعداد الخطة

- مراجعة بنية الصفحات والإعلانات وPagination: مكتملة بالقراءة.
- خطة المسؤوليات والتتابع وبوابات القبول: محددة.
- مواصفات Terra للمجموعتين: تم دمجها وتوحيد تعارضات الإعلانات، نطاق CSS، تقسيم العناوين، وحدود البيانات.
- مراجعة Terra الثالثة: أُدمجت ملاحظاتها الثماني حول override flags، عقود العرض، هيدر الموبايل، أعداد الإعلانات، Pagination/preview، فصل CSS، ملكية الملفات وأدلة QA.
- مراجعة الإغلاق: حُسمت ملاحظتاها المتبقيتان بإضافة عقد ملزم لهيدر/منيو الهاتف لكل قالب، وتحديد موضع إعلان مستقل واحد بعد رسالة البحث/التاج الفارغة.
- تنفيذ القوالب الثمانية وفحصها البصري: لم يبدأ ضمن هذه المهمة التخطيطية.

## تحديث التنفيذ — 8 سبتمبر 2026

الحالة: **PARTIAL**. اكتمل تنفيذ الأصول الثمانية واختبارات قبول الـFeature، بينما اعتماد الشكل والاستجابة الكامل ما زال معلقًا على أدلة Browser الفعلية وبوابات P1 المتبقية.

- أُضيف اختيار القالب في Branding، وخيارات اتباع هيدر/منيو/فوتر القالب أو الاحتفاظ بالتخصيص اليدوي. الحفظ يستخدم transaction ويزيل كاش الإعدادات، والصفحات تحمل إصدار تصميم تستخدمه Pagination لمنع خلط تصميمين.
- أُضيفت معاينة خاصة بصلاحية `settings.manage` للصفحات الخمس؛ لا تحفظ الإعدادات ولا تزيد مشاهدات الخبر، وتمنع التخزين والفهرسة. القوالب التي ينقصها CSS أو أي من الصفحات الخمس تُرفض في المعاينة والحفظ.
- أُضيفت مكونات مشتركة للبطاقات ومتن الخبر؛ الإعلان يحمل وسمًا مرئيًا حتى مع الصورة، مع حالة فشل الصورة. عقد موضع الإعلان الفعلي هو `placement` (وليس `slot` المحجوز في Blade)، ويُعرض `data-ad-slot` للفحص.
- أصول القوالب: أصبحت IDs الثمانية تملك CSS خاصًا و40 partial (`home` و`article` و`category` و`search` و`tag` لكل قالب). أصلحت موجة القبول أخطاء Blade في `newsroom/article` و`bulletin/search` و`bulletin/tag`، وصُحح H1 إضافي في `frontpage/home` قبل إعادة الاختبار.
- تحقق القبول المركزي: `SiteTemplateTest` نجح بـ13 اختبارًا و1326 assertion على `news_testing` المعزولة. يغطي تعريفات وأصول القوالب الثمانية، 8×5 مسارات عامة، save/preview authorization وno-store وعدم الحفظ، manual override والرجوع، الحالات الفارغة، مواضع الإعلانات، Pagination وإصدار التصميم.
- تحقق متأثر متسلسل: `AdvertisementSettingsTest` نجح 1/12، و`AdminFlowTest` 5/45، و`PublicNewsTest` 9/41. المجموع لهذه الموجة: 28 اختبارًا و1424 assertion؛ لا يمثل ذلك قبولًا بصريًا أو بديلاً عن اختبار الأجهزة/المقاسات.
- Browser QA لهذه الموجة: **BLOCKED_FOR_AGENT_SESSION**. IAB وtab `127.0.0.1:8088` غير متاحين في جلستي QA وA، لذلك لم تنشأ لقطة أو نتيجة شكل جديدة. هذا ليس حكمًا على المنفذ أو نجاحًا/فشلًا لـ80 حالة؛ لم تُغيّر إعدادات الزوار أو بياناتهم.
- الألوان الحالية محفوظة من المستخدم، ومنها نص تركواز فاتح ضعيف التباين. لم تُغيَّر إعدادات Branding الحية من أجل الاختبار، ولم يُطبَّق قالب جديد على الزوار. الاعتماد البصري النهائي ما زال معلقًا.
- فصل CSS القديم وقواعد mobile المشتركة، صور المعرض المصغرة، ولقطات Browser عند 390/1440px والمقاسات الوسيطة لم تعتمد بعد. لا تُنسب هذه البنود إلى نجاح اختبارات الـFeature.

المتبقي: بوابة فصل CSS القديم وقواعد هيدر الموبايل المشتركة، صور المعرض المصغرة، Browser QA المصور للمصفوفة 80 عند 390/1440px ثم المقاسات الوسيطة، لوحة المفاتيح وJS-off/fetch failure وتبويب التصميم القديم في متصفح حقيقي. لا تُعتبر هذه البنود ناجحة بفحوص المرحلة الحالية.
