/* =====================================================================
   موقع "قُرّة أعيُن" — الأساس المشترك (Base / Core)  •  site.css
   ---------------------------------------------------------------------
   معماريّة الأنماط (لتقليل التحميل غير الضروري):
     • هذا الملف (site.css) = نظام التصميم المشترك في "كل" الصفحات فقط:
       tokens + الهيدر/الفوتر/القائمة + الأزرار + البطاقات العامة + الأسعار
       + النجوم + المدخلات + أدوات + keyframes.
     • لكل صفحة ملفّها الخاص يحمل مكوّناتها وحدها (لا تُحمَّل في غيرها):
         home.css · about.css · family.css · store.css · product.css
         · programs.css · event.css · consultations.css

   ترتيب التحميل في <head> القالب (مثال صفحة المتجر):
     <link href=".../bootstrap.rtl.min.css" rel="stylesheet">
     <link href="{{ asset('front/css/site.css') }}" rel="stylesheet">
     @stack('page-css')   →   <link href="{{ asset('front/css/store.css') }}" …>

   ملاحظة: الخطوط مستوردة بالأسفل عبر @import (يمكن نقلها إلى <link>).
   ===================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Baloo+Bhaijaan+2:wght@500;600;700;800&family=Tajawal:wght@400;500;700;800&display=swap');

/* =====================================================================
   1) Design Tokens
   ===================================================================== */
:root {
  /* Teal أساسي */
  --c-teal: #15A99F;  --c-teal-d: #0E8A82;  --c-teal-dd: #0C443F;
  /* قنوات RGB للّونين الأساسيين — تسمح لأي rgba() بمتابعة ثيم التاجر:
     rgba(var(--c-teal-rgb), .3)  بدل rgba(21,169,159,.3) المثبّتة. */
  --c-teal-rgb: 21,169,159;  --c-teal-d-rgb: 14,138,130;  --c-accent-rgb: 247,148,30;
  /* نصّ فوق خلفية بلون العلامة (بديل #D8F1EE المثبّت — يصلح لأي ثيم) */
  --c-on-brand: rgba(255,255,255,.85);
  /* نصوص */
  --c-ink: #143E3C;   --c-ink-2: #173E3C;   --c-body: #2A524F;
  --c-muted: #5C7370; --c-muted-2: #7C9491; --c-muted-3: #8CA19E;
  /* وظيفية / مسارات */
  --c-accent: #F7941E; --c-accent-d: #E8861A;
  --c-lime: #8CC63F;   --c-lime-d: #6BA52C;
  --c-blue: #2EA4D8;   --c-blue-d: #2186BC;
  /* بنفسجي هوية «سند» — من شعار العائلة والالتفافة في البوستر */
  --c-purple: #7E4E9E; --c-purple-d: #653C82; --c-purple-rgb: 126,78,158;
  --c-star: #FBB60D;
  /* خلفيات */
  --bg-page: #F1F7EF;   --bg-soft-teal: #E4F5F2; --bg-soft-teal2: #E3F4F1;
  --bg-soft-green: #EAF6E8; --bg-soft-lime: #EFF8E2; --bg-soft-sand: #FFF3DF;
  --bg-soft-blue: #E3F2FB;  --bg-soft-purple: #F1EAF6;  --bg-panel: #F6FBF4;
  /* حدود */
  --line: #E7EFE9; --line-2: #EEF4EF; --line-3: #D6E6DF;
  /* خطوط */
  --font-head: 'Baloo Bhaijaan 2', cursive;
  --font-body: 'Tajawal', sans-serif;
  /* زوايا */
  --r-sm: 11px; --r-md: 14px; --r-lg: 20px; --r-xl: 26px; --r-2xl: 32px; --r-pill: 30px;
  /* ظلال */
  --sh-header: 0 4px 24px rgba(20,90,84,.06);
  --sh-card: 0 14px 36px rgba(20,90,84,.08);
  --sh-card-sm: 0 10px 28px rgba(20,90,84,.07);
  --sh-card-hov: 0 22px 48px rgba(20,90,84,.14);
  --sh-card-hov2: 0 18px 40px rgba(20,90,84,.13);
  --sh-btn-teal: 0 6px 16px rgba(21,169,159,.32);
  --sh-btn-accent: 0 10px 24px rgba(247,148,30,.34);
  --sh-soft: 0 4px 14px rgba(20,90,84,.08);
  /* لون المسار الافتراضي (Teal) — يُعاد تعريفه عبر .q-track-* */
  --track: var(--c-teal); --track-d: var(--c-teal-d); --track-soft: var(--bg-soft-teal);
}

/* المسارات: سند=purple · ألفة=lime · مراس=blue · teal عام · accent=برتقالي */
.q-track-teal   { --track: var(--c-teal);   --track-d: var(--c-teal-d);   --track-soft: var(--bg-soft-teal); }
.q-track-lime   { --track: var(--c-lime);   --track-d: var(--c-lime-d);   --track-soft: var(--bg-soft-lime); }
.q-track-blue   { --track: var(--c-blue);   --track-d: var(--c-blue-d);   --track-soft: var(--bg-soft-blue); }
.q-track-sand   { --track: var(--c-accent); --track-d: var(--c-accent-d); --track-soft: var(--bg-soft-sand); }
.q-track-purple { --track: var(--c-purple); --track-d: var(--c-purple-d); --track-soft: var(--bg-soft-purple); }

/* =====================================================================
   2) Base / Reset
   ===================================================================== */
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow-x: hidden; max-width: 100%; }
body {
  background: var(--bg-page); font-family: var(--font-body); color: var(--c-ink-2);
  direction: rtl; -webkit-font-smoothing: antialiased; overflow-x: hidden;
}
::selection { background: var(--c-teal); color: #fff; }
a { text-decoration: none; color: inherit; }
img { max-width: 100%; }
h1, h2, h3, .q-head { font-family: var(--font-head); color: var(--c-ink); }

/* حشو أفقي ثابت للحاوية — important لتجاوز أنماط inline (padding:X 0 Y) التي كانت تُصفّره
   وتُسبّب تجاوز هوامش صفوف Bootstrap السالبة لحواف الشاشة (فراغ/إزاحة على اليسار في RTL) */
.container { padding-inline: 18px !important; }
@media (min-width: 768px)  { .container { padding-inline: 28px !important; } }
@media (min-width: 1200px) { .container { max-width: 1240px; } }

/* =====================================================================
   3) عناوين الأقسام
   ===================================================================== */
.q-section        { padding: clamp(50px, 7vw, 78px) 0; }
.q-section--tight { padding: clamp(44px, 6vw, 64px) 0; }
.q-section--alt   { background: #fff; }
.q-section-head        { text-align: center; margin-bottom: 48px; }
.q-section-head--split { text-align: start; margin-bottom: 40px; }
.q-eyebrow  { font-weight: 800; color: var(--c-accent); font-size: 15px; letter-spacing: 1px; margin-bottom: 10px; }
.q-title    { font-family: var(--font-head); font-weight: 800; font-size: clamp(27px,4.5vw,40px); line-height: 1.3; margin: 0 0 14px; color: var(--c-ink); }
.q-subtitle { font-size: 17px; color: var(--c-muted); font-weight: 500; max-width: 600px; margin: 0 auto; }

/* =====================================================================
   4) Buttons
   ===================================================================== */
.q-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  font-family: var(--font-body); font-weight: 800; font-size: 15px;
  padding: 13px 26px; border-radius: var(--r-md); border: none; cursor: pointer;
  line-height: 1; white-space: nowrap;
  transition: background .15s ease, transform .15s ease, box-shadow .15s ease;
}
.q-btn--lg { font-size: 16px; padding: 15px 30px; }
.q-btn--sm { font-size: 14px; padding: 10px 20px; border-radius: var(--r-sm); }
.q-btn--block { width: 100%; }
/* أزرار الإجراء الأساسية — تدرّجٌ قطريّ (فاتح→غامق) بدل اللون المسطّح، كحبّة
   «الكتب 6». التدرّج من رموز الهوية فيتبع سمة التاجر. التحويم يرفع الزرّ ويعمّق
   الظلّ (التدرّج نفسه لا يُحرَّك، فالحركة على transform/shadow في .q-btn). */
.q-btn--accent { background: linear-gradient(135deg, var(--c-accent), var(--c-accent-d)); color: #fff; box-shadow: var(--sh-btn-accent); }
.q-btn--accent:hover { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(var(--c-accent-rgb), .42); }
.q-btn--teal { background: linear-gradient(135deg, var(--c-teal), var(--c-teal-d)); color: #fff; box-shadow: var(--sh-btn-teal); }
.q-btn--teal:hover { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(var(--c-teal-rgb), .42); }
.q-btn--white { background: #fff; color: var(--c-teal-d); box-shadow: 0 6px 16px rgba(20,90,84,.1); }
.q-btn--white:hover { background: var(--bg-page); }
.q-btn--soft { background: var(--bg-soft-teal); color: var(--c-teal-d); }
.q-btn--soft:hover { background: #d4efea; }
.q-btn--track { background: linear-gradient(135deg, var(--track), var(--track-d)); color: #fff; box-shadow: 0 6px 16px rgba(20, 90, 84, .18); }
.q-btn--track:hover { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(20, 90, 84, .26); }
.q-btn:active { transform: translateY(0); }
.q-btn[disabled], .q-btn.is-disabled { opacity: .55; cursor: not-allowed; box-shadow: none; transform: none; }

/* =====================================================================
   5) Top bar + Header / Nav  (chrome مشترك)
   ===================================================================== */
.q-topbar { background: var(--c-teal-d); color: #EAF7F5; font-size: 13.5px; font-weight: 500; }

/* رابط دليل النسخة التجريبية في الشريط العلويّ — حبّة تمييزيّة (accent) تلفت النظر
   على أرضيّة التركوازيّ، بلمعةٍ خفيفة تمرّ مرّةً تلو الأخرى (تتوقّف مع reduce-motion). */
.q-topbar__guide { position: relative; overflow: hidden; display: inline-flex; align-items: center; gap: 7px;
    padding: 4px 13px; border-radius: 999px; text-decoration: none; white-space: nowrap;
    font-weight: 800; font-size: 12.5px; color: #fff;
    background: linear-gradient(135deg, var(--c-accent), var(--c-accent-d));
    box-shadow: 0 2px 10px rgba(var(--c-accent-rgb), .40);
    transition: transform .15s ease, box-shadow .15s ease; }
.q-topbar__guide:hover { transform: translateY(-1px); box-shadow: 0 5px 16px rgba(var(--c-accent-rgb), .55); color: #fff; }
.q-topbar__guide-ico { display: inline-flex; }
.q-topbar__guide-chev { font-weight: 900; transition: transform .18s ease; }
.q-topbar__guide:hover .q-topbar__guide-chev { transform: translateX(-3px); }

/* اللمعة العابرة */
.q-topbar__guide::before { content: ''; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,.45) 50%, transparent 70%);
    transform: translateX(-130%); animation: q-guide-shine 5s ease-in-out infinite; }
@keyframes q-guide-shine { 0%, 62%, 100% { transform: translateX(-130%); } 78% { transform: translateX(130%); } }
@media (prefers-reduced-motion: reduce) { .q-topbar__guide::before { animation: none; } }

/* دون 576px: أيقونة فقط، توفيرًا للمساحة في الشريط الضيّق */
@media (max-width: 575.98px) {
    .q-topbar__guide { padding: 4px 9px; }
    .q-topbar__guide > span:not(.q-topbar__guide-ico) { display: none; }
    .q-topbar__guide-chev { display: none; }
}
.q-topbar__inner { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; padding: 9px 0; }
.q-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--c-lime); flex-shrink: 0; }

.q-header { background: #fff; box-shadow: var(--sh-header); position: sticky; top: 0; z-index: 50; }
.q-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 0; }
.q-logo { flex-shrink: 0; display: flex; align-items: center; }
.q-logo img { height: 54px; width: auto; max-width: 200px; object-fit: contain; display: block; }

/* القائمة ملاصقة لليمين بجانب الشعار: الهامش التلقائي على الطرف الآخر (اليسار في RTL)
   يبتلع كل المساحة الحرّة قبل أن يوزّعها space-between — فتلتصق القائمة بالشعار
   وتُدفع أزرار الإجراءات إلى أقصى اليسار. */
.q-nav { display: flex; align-items: center; gap: 22px; font-weight: 700; font-size: 15px; margin-inline-start: 14px; margin-inline-end: auto; }
.q-nav__link { display: inline-flex; align-items: center; gap: 7px; color: var(--c-body); padding-bottom: 4px; border-bottom: 3px solid transparent; transition: color .15s; }
.q-nav__link:hover { color: var(--c-teal); }
.q-nav__link.is-active { color: var(--c-teal-d); border-bottom-color: var(--c-teal-d); }
/* الأيقونة تَرِث لون الرابط (currentColor) فتتبع حالة عاديّ/تمرير/مفعّل تلقائيًّا */
.q-nav__ico { flex-shrink: 0; opacity: .85; transition: opacity .15s, transform .15s; }
.q-nav__link:hover .q-nav__ico,
.q-nav__link.is-active .q-nav__ico { opacity: 1; }
.q-nav__link:hover .q-nav__ico { transform: translateY(-1px); }

.q-iconbtn { position: relative; width: 44px; height: 44px; border-radius: 12px; background: var(--bg-page); border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 18px; transition: background .15s; }
.q-iconbtn:hover { background: var(--bg-soft-teal); }
.q-badge-count { position: absolute; top: -7px; left: -7px; min-width: 21px; height: 21px; padding: 0 5px; border-radius: 11px; background: var(--c-accent); color: #fff; font-size: 11.5px; font-weight: 800; display: flex; align-items: center; justify-content: center; }

/* بطاقة المستخدم في الهيدر (حالة تسجيل الدخول) */
.q-userchip { display: inline-flex; align-items: center; gap: 9px; background: var(--bg-page); border-radius: 13px; padding: 6px 8px 6px 14px; transition: background .15s; }
.q-userchip:hover { background: var(--bg-soft-teal); }
.q-userchip__text { text-align: start; line-height: 1.3; min-width: 0; }
.q-userchip__name { display: block; font-weight: 800; font-size: 13px; color: var(--c-ink); max-width: 150px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.q-userchip__role { display: block; font-size: 11px; color: var(--c-muted-3); font-weight: 600; }
.q-userchip__avatar { width: 36px; height: 36px; border-radius: 10px; background: var(--c-teal); color: #fff; display: flex; align-items: center; justify-content: center; font-family: var(--font-head); font-weight: 800; font-size: 16px; flex-shrink: 0; }

/* بطاقة المستخدم داخل قائمة الجوال + زر الدخول */
.q-mobile-user { display: flex !important; align-items: center; gap: 12px; margin-top: 10px; padding: 12px 14px !important; background: var(--bg-soft-teal) !important; border-radius: 14px; }
.q-mobile-user__text { text-align: start; line-height: 1.35; min-width: 0; }
.q-mobile-user__name { display: block; font-weight: 800; font-size: 15px; color: var(--c-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.q-mobile-user__role { display: block; font-size: 12px; color: var(--c-teal-d); font-weight: 700; }
.q-mobile-login { margin-top: 10px !important; text-align: center; background: var(--c-teal) !important; color: #fff !important; font-weight: 800 !important; border-radius: 12px !important; padding: 13px !important; }

.q-mobile-menu { border-top: 1px solid var(--line-2); background: #fff; }
.q-mobile-menu__list { display: flex; flex-direction: column; gap: 2px; padding: 10px 0 16px; }
.q-mobile-menu a { display: flex; align-items: center; gap: 11px; padding: 12px 12px; border-radius: var(--r-sm); font-weight: 700; color: var(--c-body); }
.q-mobile-menu a.is-active { font-weight: 800; color: var(--c-teal-d); background: var(--bg-page); }
.q-mobile-menu__ico { flex-shrink: 0; opacity: .8; }
.q-mobile-menu a.is-active .q-mobile-menu__ico { opacity: 1; }

/* فتات الطريق (breadcrumb) — صفحات commerce */
/* فتات الطريق الموحّد (x-breadcrumb) — محاذاة البداية (يمين في RTL) دائمًا.
   حشوٌ علويّ صغير («أعلى قليلًا») بلا حشوٍ سفليّ: تتكفّل الترويسة/القسم التالي
   بالفراغ تحته، فلا يتراكم فراغان. */
.q-breadcrumb { display: flex; align-items: center; flex-wrap: wrap; gap: 2px;
    font-size: 13px; font-weight: 700; color: var(--c-muted-2); padding: 10px 0 2px; }

/* كل حلقة رابط: حبّة تظهر عند التمرير — تحوّل النصّ المسطّح إلى تنقّلٍ ملموس */
.q-breadcrumb a { display: inline-flex; align-items: center; gap: 6px;
    padding: 5px 11px; border-radius: var(--r-pill); color: var(--c-muted);
    transition: background .15s ease, color .15s ease; }
.q-breadcrumb a:hover { background: var(--bg-panel); color: var(--track-d); }
.q-breadcrumb__home svg { flex-shrink: 0; opacity: .85; }
.q-breadcrumb a:hover svg { opacity: 1; }

/* الفاصل: شيفرون SVG مائل لجهة السير (يسار في RTL) بدل الرمز «‹» الرفيع */
.q-breadcrumb .sep { width: 15px; height: 15px; flex-shrink: 0; opacity: .7;
    background: currentColor; color: var(--c-muted-3);
    -webkit-mask: var(--q-bc-chevron) center/12px no-repeat; mask: var(--q-bc-chevron) center/12px no-repeat; }

/* الصفحة الحالية: حبّة ثابتة بلون هويّة الصفحة (--track-soft) — تُميّز «أين أنا» */
.q-breadcrumb .is-current { padding: 5px 12px; border-radius: var(--r-pill);
    background: var(--track-soft); color: var(--c-ink); font-weight: 800; }

:root { --q-bc-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='15 18 9 12 15 6'/%3E%3C/svg%3E"); }

/* =====================================================================
   6) Footer (chrome مشترك)
   ===================================================================== */
.q-footer { background: var(--c-teal-dd); color: #CFE6E2; padding: clamp(44px,6vw,68px) 0 26px; }
.q-footer h4 { font-family: var(--font-head); color: #fff; font-size: 17px; margin: 0 0 16px; }
.q-footer a { color: #BFDDD8; font-size: 14.5px; line-height: 2.1; transition: color .15s; }
.q-footer a:hover { color: #fff; }
.q-footer__bottom { border-top: 1px solid rgba(255,255,255,.12); margin-top: 30px; padding-top: 20px; font-size: 13px; color: #9FC4BE; text-align: center; }
/* رابط دليل النسخة التجريبية — حبّة بارزة أسفل التذييل */
.q-footer__guide { display: inline-flex; align-items: center; gap: 8px; margin-top: 4px;
    padding: 9px 18px; border-radius: var(--r-pill); text-decoration: none;
    font-weight: 800; font-size: 13.5px; color: #EAF7F5;
    background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18);
    transition: background .15s ease, border-color .15s ease, transform .15s ease; }
.q-footer__guide:hover { background: rgba(255,255,255,.16); border-color: rgba(255,255,255,.34); transform: translateY(-1px); color: #fff; }
.q-footer__guide svg { color: var(--c-accent); }
.q-footer__logo { display: inline-flex; align-items: center; margin-bottom: 18px; }
.q-footer__logo img { height: 62px; width: auto; max-width: 210px; object-fit: contain; display: block; }
.q-footer__social { display: flex; gap: 10px; }
.q-footer__social span { width: 38px; height: 38px; border-radius: 11px; background: rgba(255,255,255,.08); display: flex; align-items: center; justify-content: center; font-size: 14px; }

/* =====================================================================
   7) بطاقات عامة (Design-system cards) — مُعاد استخدامها في عدّة صفحات
   ===================================================================== */
.q-card { background: #fff; border-radius: var(--r-xl); box-shadow: var(--sh-card); transition: transform .2s ease, box-shadow .2s ease; }
.q-card:hover { transform: translateY(-6px); box-shadow: var(--sh-card-hov); }
.q-card--track { border-top: 6px solid var(--track); padding: 32px 26px; }

.q-icon-box { width: 66px; height: 66px; border-radius: var(--r-lg); background: var(--track-soft); color: var(--track); display: flex; align-items: center; justify-content: center; margin-bottom: 20px; }
.q-ico { display: block; }
.q-icon-box--lg { width: 78px; height: 78px; border-radius: 24px; margin: 0 auto 20px; }

.q-card__title { font-family: var(--font-head); font-weight: 800; font-size: 21px; margin: 0 0 11px; color: var(--c-ink); line-height: 1.4; }
.q-card__text  { font-size: 14.5px; line-height: 1.8; color: var(--c-muted); font-weight: 500; margin: 0 0 16px; }
.q-card__more  { color: var(--track); font-weight: 800; font-size: 14.5px; }

/* بطاقة بصورة علوية (برامج/فعاليات/مقترحات) */
.q-media-card { background: #fff; border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--sh-card); transition: transform .2s ease, box-shadow .2s ease; }
.q-media-card:hover { transform: translateY(-6px); box-shadow: var(--sh-card-hov); }
.q-media { position: relative; height: 280px; overflow: hidden; background: var(--bg-soft-green); }
.q-media img { width: 100%; height: 100%; object-fit: cover; object-position: top; display: block; }
.q-media-card__body { padding: 22px 22px 26px; }
.q-media-card__cat  { font-weight: 700; font-size: 13px; color: var(--c-muted-3); margin-bottom: 8px; }

/* السعر */
.q-price      { font-family: var(--font-head); font-weight: 800; font-size: 24px; color: var(--track); }
.q-price--sm  { font-size: 22px; }
.q-price-unit { font-size: 13px; color: var(--c-muted-2); font-weight: 700; }
.q-price-old  { font-size: 14px; color: var(--c-muted-2); font-weight: 600; text-decoration: line-through; margin-inline-start: 6px; }

/* شارة حالة عامة بلون المسار */
.q-badge { display: inline-flex; align-items: center; gap: 6px; background: var(--track); color: #fff; font-weight: 800; font-size: 12.5px; padding: 6px 14px; border-radius: 20px; }
.q-badge--abs { position: absolute; top: 14px; right: 14px; }

/* النجوم */
.q-stars { display: inline-flex; align-items: center; gap: 2px; color: var(--c-star); font-size: 15px; line-height: 1; }
.q-stars .is-empty { color: #DCE6DF; }
.q-stars__count { color: var(--c-muted-2); font-weight: 700; font-size: 12.5px; margin-inline-start: 4px; }

/* =====================================================================
   8) مدخلات النماذج (مشتركة: تقييم/تسجيل/حجز/تواصل)
   ===================================================================== */
.q-label { display: block; font-weight: 700; font-size: 14px; color: var(--c-ink); margin-bottom: 8px; }
.q-input, .q-textarea, .q-select {
  width: 100%; font-family: var(--font-body); font-size: 15px; color: var(--c-ink);
  background: #fff; border: 1.5px solid var(--line); border-radius: var(--r-md);
  padding: 12px 16px; transition: border-color .15s, box-shadow .15s;
}
/* نفس معالجة شريط الفلترة — تركيزٌ واحد في المنصّة كلّها لا تركيزان */
.q-input:focus, .q-textarea:focus, .q-select:focus { outline: none; border-color: var(--track); box-shadow: 0 0 0 2px var(--track-soft); }
.q-textarea { resize: vertical; min-height: 110px; }
.q-qty { display: inline-flex; align-items: center; gap: 8px; background: var(--bg-page); border-radius: var(--r-sm); padding: 4px; }
.q-qty button { width: 28px; height: 28px; border: none; border-radius: 8px; background: #fff; cursor: pointer; font-size: 16px; font-weight: 800; color: var(--c-teal-d); }
.q-qty span { min-width: 24px; text-align: center; font-weight: 800; }

/* =====================================================================
   8b) مكوّنات مشتركة بين عدّة صفحات (أبطال/بانرات/تبويبات/سلة/إشعار)
   تبقى هنا لأنها تتكرّر في 2–5 صفحات؛ المكوّنات الخاصة بصفحة واحدة في ملفها.
   ===================================================================== */
/* عنوان قسم بشريط جانبي ملوّن (المتجر/المنتج/البرامج/الفريق) */
.q-blockhead { display: flex; align-items: center; gap: 11px; }
.q-blockhead__bar { width: 8px; height: 26px; border-radius: 6px; background: var(--track); flex-shrink: 0; }
.q-blockhead__title { font-family: var(--font-head); font-weight: 800; font-size: clamp(22px,4vw,26px); margin: 0; color: var(--c-ink); }

/* بطل بخلفية متدرّجة ناعمة + زخارف (الرئيسية/من نحن/الفريق/البرامج) */
.q-herowrap { position: relative; overflow: hidden; background: linear-gradient(160deg, var(--bg-soft-green) 0%, var(--bg-soft-teal2) 100%); }
.q-herowrap__inner { position: relative; z-index: 2; }
.q-pagehero { padding: 20px 0 12px; text-align: center; }
/* الفتات لم يعد داخل الترويسة: صار شريطًا مستقلًّا محاذيًا للبداية (x-breadcrumb).
   حُذفت قاعدة justify-content:center التي كانت تُطفيه في وسط الترويسة. */
.q-pagehero__title { font-family: var(--font-head); font-weight: 800; font-size: clamp(30px,5.6vw,53px); line-height: 1.25; margin: 0 0 18px; color: var(--c-ink); }
.q-pagehero__lead  { font-size: clamp(16px,2.4vw,19px); line-height: 1.9; color: #4F6B68; font-weight: 500; text-align: center; margin: 0 auto; max-width: 640px; }
.q-blob { position: absolute; z-index: 0; border-radius: 48% 52% 60% 40%/55% 45% 55% 45%; }
.q-blob--lime { top: -90px; left: -70px; width: 320px; height: 320px; background: rgba(140,198,63,.18); }
.q-blob--blue { bottom: -110px; right: -50px; width: 280px; height: 280px; border-radius: 55% 45% 50% 50%/45% 55% 45% 55%; background: rgba(46,164,216,.14); }
.q-star-deco { position: absolute; z-index: 1; color: var(--c-accent); animation: twinkle 3s ease-in-out infinite; }
.q-hero-curve { height: 46px; background: var(--bg-page); border-radius: 50% 50% 0 0 / 100% 100% 0 0; margin-top: -23px; position: relative; z-index: 1; }
.q-chip { display: inline-flex; align-items: center; gap: 8px; background: #fff; padding: 8px 16px; border-radius: var(--r-pill); font-weight: 700; font-size: 13.5px; color: var(--c-teal-d); box-shadow: var(--sh-soft); }
.q-chip .q-dot { background: var(--c-lime); width: 8px; height: 8px; }

/* إطار صورة عائم (الرئيسية/قصّتنا) */
.q-img-frame { position: relative; }
.q-img-frame__backdrop { position: absolute; inset: -12px; border-radius: 36px; background: linear-gradient(150deg, var(--c-teal), var(--c-lime)); opacity: .16; transform: rotate(-4deg); }
.q-img-frame__pic { position: relative; border-radius: 30px; overflow: hidden; height: clamp(300px,42vw,420px); box-shadow: 0 24px 60px rgba(20,90,84,.18); animation: floaty 6s ease-in-out infinite; }
.q-img-frame__pic img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }

/* بانر مجمّع (CTA / الاستشارات / الإحصائيات) */
.q-banner { position: relative; overflow: hidden; border-radius: var(--r-2xl); padding: clamp(36px,5vw,56px) clamp(24px,4vw,40px); }
.q-banner--teal { background: linear-gradient(150deg, var(--c-teal-d), var(--c-teal)); color: #fff; }
.q-banner--soft { background: linear-gradient(150deg, var(--bg-soft-green), var(--bg-soft-teal2)); }
.q-banner__content { position: relative; z-index: 2; }
.q-banner__circle { position: absolute; z-index: 0; border-radius: 50%; background: rgba(255,255,255,.08); }
.q-banner__circle--lime { background: rgba(140,198,63,.22); }
.q-banner__title { font-family: var(--font-head); font-weight: 800; font-size: clamp(26px,4.4vw,40px); line-height: 1.35; margin: 0 0 14px; }
.q-banner--teal .q-banner__title { color: #fff; }
.q-banner--soft .q-banner__title { color: var(--c-ink); }
.q-banner__text { font-size: 17px; font-weight: 500; line-height: 1.85; margin: 0 auto 28px; max-width: 560px; }
.q-banner--teal .q-banner__text { color: var(--c-on-brand); }
.q-banner--soft .q-banner__text { color: #4F6B68; }

/* إحصائيات */
.q-stat { text-align: center; }
.q-stat__num { font-family: var(--font-head); font-weight: 800; font-size: clamp(30px,5vw,42px); line-height: 1; color: var(--c-teal); }
.q-stat__label { font-size: 13.5px; color: var(--c-muted-2); font-weight: 600; margin-top: 8px; }
.q-stat__sep { width: 1px; background: var(--line-3); }
.q-stat--on-teal .q-stat__num { color: #fff; }
.q-stat--on-teal .q-stat__label { color: var(--c-on-brand); }

/* تبويبات (المنتج/الفعالية) */
.q-tabs { display: flex; gap: 8px; margin-bottom: 28px; border-bottom: 2px solid var(--line-2); flex-wrap: wrap; }
.q-tab { background: none; border: none; cursor: pointer; font-family: var(--font-body); font-weight: 800; font-size: 15px; color: var(--c-muted); padding: 12px 18px; border-bottom: 3px solid transparent; margin-bottom: -2px; transition: color .15s; }
.q-tab:hover { color: var(--c-teal-d); }
.q-tab.is-active { color: var(--c-teal); border-bottom-color: var(--c-teal); }
.q-tab-text { font-size: 16px; line-height: 2.05; color: #4F6B68; font-weight: 500; max-width: 820px; }

/* إشعار (toast) — مشترك في صفحات الشراء */
.q-toast { position: fixed; top: 104px; left: 50%; transform: translateX(-50%); z-index: 120; background: var(--c-teal-d); color: #fff; padding: 13px 22px; border-radius: var(--r-md); box-shadow: 0 14px 34px rgba(var(--c-teal-d-rgb),.34); display: flex; align-items: center; gap: 11px; font-weight: 700; font-size: 15px; animation: toastIn .3s ease; }
.q-toast__check { width: 24px; height: 24px; border-radius: 50%; background: var(--c-lime); display: flex; align-items: center; justify-content: center; font-size: 14px; }

/* عرض مكبّر للصور (lightbox) — المنتج/الفعالية */
.q-lightbox { position: fixed; inset: 0; z-index: 200; background: rgba(8,46,42,.92); display: flex; flex-direction: column; }
.q-lightbox__bar { display: flex; align-items: center; justify-content: space-between; padding: 20px 26px; color: #CFE5E1; font-weight: 700; font-size: 15px; }
.q-lightbox__close { width: 46px; height: 46px; border-radius: 13px; border: none; background: rgba(255,255,255,.12); color: #fff; cursor: pointer; font-size: 22px; }
.q-lightbox__stage { flex: 1; display: flex; align-items: center; justify-content: center; gap: 22px; padding: 0 26px; min-height: 0; }
.q-lightbox__nav { width: 58px; height: 58px; border-radius: 50%; border: none; background: rgba(255,255,255,.14); color: #fff; cursor: pointer; font-size: 28px; flex-shrink: 0; }
.q-lightbox__nav:hover { background: var(--c-teal); }
.q-lightbox__pic { flex: 1; height: 100%; max-width: 760px; background: #fff; border-radius: 24px; display: flex; align-items: center; justify-content: center; padding: 46px; }

/* درج السلة + الحجاب (المتجر/الفعالية/الاستشارات) */
.q-overlay { position: fixed; inset: 0; z-index: 90; background: rgba(12,68,63,.42); }
.q-drawer { position: fixed; top: 0; left: 0; bottom: 0; z-index: 91; width: 390px; max-width: 92vw; background: var(--bg-panel); box-shadow: -14px 0 40px rgba(12,68,63,.2); display: flex; flex-direction: column; }
.q-drawer__head { padding: 22px 24px; background: #fff; border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; }
.q-drawer__title { font-family: var(--font-head); font-weight: 800; font-size: 21px; color: var(--c-ink); display: flex; align-items: center; gap: 10px; }
.q-drawer__close { width: 36px; height: 36px; border-radius: 10px; border: none; background: var(--bg-page); cursor: pointer; font-size: 18px; color: var(--c-muted); }
.q-drawer__body { flex: 1; overflow-y: auto; padding: 18px 20px; }
.q-drawer__foot { padding: 20px 24px; background: #fff; border-top: 1px solid var(--line); }
.q-cart-item { display: flex; gap: 13px; align-items: center; background: #fff; border-radius: 16px; padding: 12px; margin-bottom: 12px; box-shadow: 0 6px 16px rgba(20,90,84,.05); }
.q-cart-item__thumb { width: 58px; height: 58px; border-radius: 13px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; overflow: hidden; padding: 6px; }
.q-cart-item__name { font-weight: 700; font-size: 14.5px; color: var(--c-ink); line-height: 1.4; }
.q-cart-item__price { font-weight: 800; font-size: 14px; color: var(--c-teal); margin-top: 3px; }
.q-cart-mini { display: inline-flex; align-items: center; gap: 8px; background: var(--bg-page); border-radius: var(--r-sm); padding: 4px; }
.q-cart-mini button { width: 26px; height: 26px; border: none; border-radius: 8px; background: #fff; cursor: pointer; font-size: 16px; font-weight: 800; color: var(--c-teal-d); }
.q-cart-total { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.q-cart-total b { font-family: var(--font-head); font-weight: 800; font-size: 24px; color: var(--c-teal-d); }
.q-cart-empty { text-align: center; padding: 60px 20px; color: var(--c-muted-3); }

/* =====================================================================
   9) أدوات مساعدة (Utilities)
   ===================================================================== */
.q-text-teal   { color: var(--c-teal)  !important; }
.q-text-accent { color: var(--c-accent)!important; }
.q-text-lime   { color: var(--c-lime-d)!important; }
.q-text-blue   { color: var(--c-blue-d)!important; }
.q-text-purple { color: var(--c-purple)!important; }
.q-text-ink    { color: var(--c-ink)   !important; }
.q-text-muted  { color: var(--c-muted) !important; }
.q-text-track  { color: var(--track)   !important; }
.q-bg-soft-teal { background: var(--bg-soft-teal); }
.q-bg-soft-lime { background: var(--bg-soft-lime); }
.q-bg-soft-blue { background: var(--bg-soft-blue); }
.q-bg-soft-sand { background: var(--bg-soft-sand); }
.q-bg-white     { background: #fff; }
.q-head-font { font-family: var(--font-head); }
.q-lift { transition: transform .2s ease, box-shadow .2s ease; }
.q-lift:hover { transform: translateY(-6px); box-shadow: var(--sh-card-hov); }
.q-round { border-radius: var(--r-xl); }
.q-shadow { box-shadow: var(--sh-card); }

/* =====================================================================
   10) Keyframes (مشتركة — تستدعيها مكوّنات الصفحات)
   ===================================================================== */
@keyframes floaty   { 0%,100% { transform: translateY(0); }            50% { transform: translateY(-14px); } }
@keyframes floaty2  { 0%,100% { transform: translateY(0) rotate(0); }  50% { transform: translateY(-10px) rotate(6deg); } }
@keyframes twinkle  { 0%,100% { opacity: .35; transform: scale(.85); } 50% { opacity: 1; transform: scale(1.1); } }
@keyframes toastIn  { from { opacity: 0; transform: translate(-50%,-12px); } to { opacity: 1; transform: translate(-50%,0); } }
@keyframes q-pulse  { 0%,100% { transform: scale(1); } 50% { transform: scale(1.18); } }
@keyframes q-fade   { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.q-anim-pulse { animation: q-pulse .4s ease; }
.q-anim-fade  { animation: q-fade .35s ease both; }

/* =====================================================================
   11) Responsive (أساس) — التصميم الأصلي محسّن لسطح المكتب
   ===================================================================== */
@media (max-width: 991.98px) {
  .q-nav { display: none; }
  .q-media { height: 230px; }
}
@media (max-width: 575.98px) {
  .q-section { padding: 44px 0; }
  .q-section-head { margin-bottom: 32px; }
  .q-card--track { padding: 26px 22px; }
}
@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; } }

/* =====================================================================
   §8c — شريط الفلترة الموحّد (.q-fb) — يخدم صفحتَي البرامج والمتجر
   بديلان بصريّان فقط: «قائمة» .q-fb__control (اختيار واحد) · «خيارات» .q-fb__opts (متعدّد)
   ===================================================================== */
.q-fb { --fb-h: 46px; padding: 24px 0 2px; }

/* (1) الشريط الدائم */
.q-fb__bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.q-fb__head { flex: 1 1 100%; }
.q-fb__search { position: relative; flex: 1 1 180px; min-width: 0; }
.q-fb__input {
    width: 100%; height: var(--fb-h); font-family: var(--font-body); font-size: 14.5px; color: var(--c-ink);
    background: #fff; border: 1px solid var(--line-3); border-radius: var(--r-md);
    box-shadow: 0 1px 2px rgba(20, 90, 84, .04);
    padding-inline: 42px 36px; transition: border-color .15s, box-shadow .15s;
}
.q-fb__input:hover { border-color: var(--c-muted-3); }
.q-fb__searchico { position: absolute; inset-inline-start: 14px; top: 50%; transform: translateY(-50%); color: var(--c-teal); pointer-events: none; display: flex; }
/* q-spin يخبز translateY(-50%) داخله ⇒ العنصر يجب أن يكون absolute بنفس الإزاحة */
.q-fb__spin { position: absolute; inset-inline-end: 40px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px;
    border: 2px solid rgba(var(--c-teal-rgb),.22); border-top-color: var(--c-teal); border-radius: 50%; animation: q-spin .6s linear infinite; }
.q-fb__searchx { position: absolute; inset-inline-end: 9px; top: 50%; transform: translateY(-50%); width: 26px; height: 26px;
    display: grid; place-items: center; border: 0; border-radius: 8px; background: var(--bg-page); color: #B23B3B; font-size: 12px; cursor: pointer; }
.q-fb__toggle { flex: 0 0 auto; height: var(--fb-h); display: inline-flex; align-items: center; gap: 8px; padding-inline: 15px;
    border: 1.5px solid var(--line); border-radius: var(--r-md); background: #fff; color: var(--c-body); cursor: pointer;
    font-family: var(--font-body); font-weight: 800; font-size: 14px; white-space: nowrap; transition: background .15s, border-color .15s; }
.q-fb__toggle:hover { border-color: var(--track); }
.q-fb__toggle.is-on { background: var(--track-soft); border-color: var(--track); color: var(--c-ink); }
.q-fb__badge { min-width: 20px; height: 20px; padding-inline: 6px; border-radius: 10px; background: var(--c-accent);
    color: var(--c-ink); font-size: 11.5px; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
.q-fb__chev { width: 8px; height: 8px; margin-block-end: 3px; border-inline-end: 2px solid currentColor;
    border-block-end: 2px solid currentColor; transform: rotate(-45deg); transition: transform .2s; }
.q-fb__toggle.is-on .q-fb__chev { transform: rotate(135deg); margin-block: 3px 0; }

/* (2) رقائق الفلاتر الفعّالة — ظاهرة دائمًا حتى واللوحة مطويّة */
.q-fb__chips { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 10px; }
.q-fb__chip { display: inline-flex; align-items: center; gap: 7px; max-width: 230px; border: 0; cursor: pointer;
    background: var(--track-soft); color: var(--c-ink); border-radius: var(--r-pill); padding: 6px 12px;
    font-family: var(--font-body); font-weight: 800; font-size: 12.5px; }
.q-fb__chip > span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.q-fb__chip:hover { filter: brightness(.96); }
.q-fb__chipx { font-size: 11px; opacity: .65; flex: 0 0 auto; }
.q-fb__clearall { border: 0; background: none; cursor: pointer; color: #B23B3B; font-family: var(--font-body); font-weight: 800; font-size: 12.5px; padding: 6px 4px; }
.q-fb__clearall:hover { text-decoration: underline; }

/* (3) اللوحة + الشبكة */
.q-fb__grid { display: grid; grid-template-columns: 1fr; gap: 12px; background: #fff; border: 1px solid var(--line);
    border-radius: var(--r-lg); box-shadow: var(--sh-soft); padding: 14px; margin-top: 10px; }
.q-fb__field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.q-fb__field--wide, .q-fb__field--full { grid-column: 1 / -1; }
.q-fb__label { font-size: 12.5px; font-weight: 800; color: var(--c-muted); }
.q-fb__hint { font-weight: 600; color: var(--c-muted); }

/* 3-أ) «حقل» — القائمة الموحّدة لكل الفلاتر أحاديّة الاختيار.
   سهم مخصّص بدل سهم النظام: الواجهة كلّها RTL (dir="rtl" على <html>) فموضعه يسارًا. */
.q-fb__control {
    width: 100%; height: var(--fb-h); font-family: var(--font-body); font-size: 14px; font-weight: 700;
    color: var(--c-body); border: 1px solid var(--line-3); border-radius: var(--r-md);
    box-shadow: 0 1px 2px rgba(20, 90, 84, .04);
    padding-inline: 14px 38px; cursor: pointer; text-overflow: ellipsis; white-space: nowrap;
    appearance: none; -webkit-appearance: none;
    background-color: #fff;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235C7370' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: left 13px center; background-size: 15px;
    transition: border-color .15s, box-shadow .15s, background-color .15s, color .15s;
}
.q-fb__control:hover { border-color: var(--c-muted-3); }

/* ── الحالة المحدَّدة ──────────────────────────────────────────────────────
   كانت تُعبّئ الحقل بلون المسار وتُلوّن حدّه، فيُقرأ **زرًّا مضغوطًا** لا حقلًا
   يحمل قيمة. والحقل ليس إجراءً؛ إشارته الأولى هي نصّه نفسه: «كل الأقسام»
   تصير «الكتب (6)» — فرقٌ لا يُخطئه أحد بلا أيّ صبغة.

   فبقيت الأطر محايدة، ونُقلت الإشارة إلى أخفّ موضعين: النصّ يغمق ويثقل،
   والأيقونة وحدها تأخذ لون المسار. هدوءٌ يقرؤه المستخدم دون أن يصرخ عليه. */
.q-fb__control.is-set {
    background-color: #fff;
    border-color: var(--line-3);
    color: var(--c-ink);
    font-weight: 800;
}
.q-fb__ctl > .q-fb__control.is-set ~ .q-fb__ctlico { color: var(--track); }

/* 3-ج) «خيارات متعدّدة» */
.q-fb__opts { display: flex; flex-wrap: wrap; gap: 8px; }
.q-fb__opt { min-height: 38px; padding: 8px 14px; border: 1.5px solid var(--line); background: #fff; color: var(--c-body);
    border-radius: var(--r-pill); cursor: pointer; font-family: var(--font-body); font-weight: 800; font-size: 13.5px;
    white-space: nowrap; transition: background .15s, border-color .15s, color .15s; }
.q-fb__opt:hover { border-color: var(--track); }
.q-fb__opt.is-active { background: var(--track-soft); border-color: var(--track); color: var(--c-ink); }

/* 3-د) ذيل اللوحة */
.q-fb__foot { grid-column: 1 / -1; display: flex; align-items: center; gap: 10px; padding-top: 2px; }
.q-fb__reset { border: 0; background: none; cursor: pointer; color: #B23B3B; font-family: var(--font-body); font-weight: 800; font-size: 13px; padding: 8px 2px; }
.q-fb__reset[disabled] { color: var(--c-muted-2); cursor: default; }
.q-fb__apply { margin-inline-start: auto; min-height: 42px; padding-inline: 18px; border: 0; border-radius: var(--r-md);
    background: var(--c-teal); color: #fff; font-family: var(--font-body); font-weight: 800; font-size: 14px; cursor: pointer; }

/* (4) سطر النتائج */
.q-fb__meta { margin: 10px 0 0; font-size: 13.5px; font-weight: 700; color: var(--c-muted); }
.q-fb__meta b { color: var(--c-teal-d); font-weight: 800; }

/* تركيز + لمس + مخفيّ بصريًّا */
/* مؤشّر تركيز لوحة المفاتيح — 2px بلون المسار الغامق لا 3px بأخضرَ شبه أسود:
   كان يطغى على الحقل نفسه ويصطدم بهويّة الصفحة الرمليّة. يعمل مع حلقة
   :focus أدناه (حدّ بلون المسار + هالة --track-soft) فيبقى واضحًا وهادئًا. */
.q-fb :is(button, select, input):focus-visible { outline: 2px solid var(--track-d); outline-offset: 1px; }
/* التركيز وحده يستحقّ لونًا: فِعلٌ جارٍ من المستخدم، لا حالة ساكنة.
   حلقة 2px بلون المسار الهادئ (--track-soft) لا 3px بشفافية: أنحف، وتتبع
   هويّة الصفحة — فلا تظهر حلقة تركوازية على صفحةٍ مسارها رمليّ. */
.q-fb__input:focus, .q-fb__control:focus {
    outline: none;
    border-color: var(--track);
    box-shadow: 0 0 0 2px var(--track-soft);
}
.q-fb :is(.q-fb__toggle, .q-fb__control, .q-fb__opt, .q-fb__chip) { touch-action: manipulation; }
.q-fb__sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

@media (max-width: 420px) {
    .q-fb__toggletext { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    .q-fb__foot { flex-direction: column; align-items: stretch; }
    .q-fb__apply { margin-inline-start: 0; }
}
@media (min-width: 700px) {
    .q-fb { padding: 34px 0 4px; }
    .q-fb__head { flex: 0 1 auto; margin-inline-end: auto; }
    .q-fb__search { flex: 0 1 340px; }
    .q-fb__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 16px; padding: 16px 18px; }
}
@media (min-width: 992px) {
    .q-fb__search { flex: 0 1 400px; }
    .q-fb__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .q-fb__field--wide { grid-column: span 2; }
    .q-fb__apply { display: none; }   /* الفلترة لحظيّة — الزرّ للطيّ فقط */
}

/* (#CLS) طابِق حالة ما قبل إقلاع Alpine مع افتراضي init() فلا تقع قفزة تخطيط.
   التخصيص (0,2,0)/(0,3,0) يغلب [x-cloak] رغم !important في الطرفين. */
.q-fb__panel.is-preopen[x-cloak] { display: block !important; }
@media (min-width: 992px) { .q-fb__panel[x-cloak] { display: block !important; } }

/* (iOS) خطّ ≥16px على الشاشات الصغيرة يمنع التكبير التلقائيّ عند التركيز */
@media (max-width: 992px) {
    .q-fb__input, .q-fb__control,
    .q-input, .q-textarea, .q-select { font-size: 16px; }
}
@keyframes q-spin { to { transform: translateY(-50%) rotate(360deg); } }

/* تعتيم لطيف للشبكة أثناء التحميل اللحظي */
.q-grid-loading { opacity: .5; transition: opacity .2s ease; pointer-events: none; }

/* ===== ترقيم صفحات بهوية q- (Livewire wire:click) ===== */
.q-pager { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px; margin: 40px 0 6px; }
.q-pager__btn, .q-pager__num {
    min-width: 42px; height: 42px; padding: 0 14px; border-radius: 12px;
    display: inline-flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 14px; text-decoration: none;
    color: var(--c-teal-d); background: #fff; border: 1px solid rgba(var(--c-teal-rgb),.16); transition: all .15s; cursor: pointer;
}
.q-pager__num { padding: 0; }
.q-pager__btn:hover, .q-pager__num:hover { background: rgba(var(--c-teal-rgb),.07); border-color: rgba(var(--c-teal-rgb),.35); color: var(--c-teal-d); }
.q-pager__num.is-active { background: var(--c-teal); border-color: var(--c-teal); color: #fff; box-shadow: 0 6px 16px rgba(var(--c-teal-rgb),.28); }
.q-pager__btn.is-disabled { opacity: .45; cursor: not-allowed; }
.q-pager__dots { color: #9fb0ad; padding: 0 2px; }

/* قائمة Livewire: نقطة رجوع أعلى النتائج عند التنقّل بين الصفحات (تحت الهيدر الثابت) */
.lw-listing { scroll-margin-top: 90px; }

/* ===== نافذة الدخول/التسجيل المنبثقة (Livewire: site.auth-modal) ===== */
[x-cloak] { display: none !important; }
.q-authm { position: fixed; inset: 0; z-index: 300; display: flex; align-items: center; justify-content: center; padding: 20px; }
.q-authm__backdrop { position: absolute; inset: 0; background: rgba(8, 46, 42, .55); backdrop-filter: blur(4px); }
.q-authm__card {
    position: relative; width: 100%; max-width: 430px; max-height: 92vh; overflow-y: auto;
    background: #fff; border-radius: 20px; box-shadow: 0 30px 70px rgba(8, 46, 42, .35);
    padding: 26px 24px 20px; transition: opacity .22s ease, transform .22s ease;
}
.q-authm__card--start { opacity: 0; transform: translateY(14px) scale(.97); }
.q-authm__card--in { opacity: 1; transform: none; }
.q-authm__close {
    position: absolute; top: 14px; inset-inline-end: 14px; width: 34px; height: 34px; border: none;
    border-radius: 10px; background: #F1F5F4; color: #6B7B78; font-size: 15px; cursor: pointer; transition: all .15s;
}
.q-authm__close:hover { background: #E4EBEA; color: #143733; }
.q-authm__head { text-align: center; margin-bottom: 18px; }
.q-authm__logo {
    width: 52px; height: 52px; margin: 0 auto 12px; border-radius: 15px; display: flex;
    align-items: center; justify-content: center; background: #E4F5F2; color: #0E8A82;
}
.q-authm__title { font-family: var(--font-head, inherit); font-weight: 800; font-size: 21px; color: #143733; margin: 0 0 5px; }
.q-authm__sub { font-size: 13.5px; color: #6B7B78; font-weight: 600; line-height: 1.7; margin: 0; }
.q-authm__tabs { display: flex; gap: 6px; background: #F1F5F4; padding: 5px; border-radius: 13px; margin-bottom: 18px; }
.q-authm__tab {
    flex: 1; padding: 9px 10px; border: none; background: transparent; border-radius: 9px;
    font-weight: 700; font-size: 14px; color: #6B7B78; cursor: pointer; transition: all .16s;
}
.q-authm__tab:hover { color: #0E8A82; }
.q-authm__tab.is-active { background: #fff; color: #0E5C57; box-shadow: 0 2px 8px rgba(8, 46, 42, .1); }
.q-authm__label { display: block; font-size: 13px; font-weight: 700; color: #3F5551; margin: 12px 0 6px; }
.q-authm__opt { color: #9FB0AD; font-weight: 600; }
.q-authm__input { width: 100%; }
.q-authm__pass { position: relative; }
.q-authm__eye {
    position: absolute; top: 50%; transform: translateY(-50%); inset-inline-end: 10px;
    width: 32px; height: 32px; border: none; background: transparent; color: #7C8B96; cursor: pointer;
    display: flex; align-items: center; justify-content: center; border-radius: 8px;
}
.q-authm__eye:hover { color: #0E8A82; background: #F1F5F4; }
.q-authm__row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 14px 0 4px; flex-wrap: wrap; }
.q-authm__check { display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 600; color: #3F5551; cursor: pointer; margin: 0; }
.q-authm__link { font-size: 13px; font-weight: 700; color: #0E8A82; text-decoration: none; }
.q-authm__link:hover { text-decoration: underline; }
.q-authm__submit {
    width: 100%; margin-top: 18px; padding: 13px 18px; border: none; border-radius: 13px;
    background: linear-gradient(135deg, var(--c-teal), var(--c-teal-d)); color: #fff; font-weight: 800; font-size: 15.5px; cursor: pointer;
    box-shadow: 0 6px 16px rgba(var(--c-teal-rgb), .28);
    transition: transform .15s ease, box-shadow .15s ease; display: flex; align-items: center; justify-content: center; gap: 9px;
}
.q-authm__submit:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(var(--c-teal-rgb), .40); }
.q-authm__submit:active:not(:disabled) { transform: translateY(0); }
.q-authm__submit:disabled { opacity: .7; cursor: not-allowed; }
.q-authm__loading { display: inline-flex; align-items: center; gap: 9px; }
.q-authm__spin { width: 16px; height: 16px; border: 2px solid rgba(255,255,255,.4); border-top-color: #fff; border-radius: 50%; animation: q-spin-a .65s linear infinite; }
@keyframes q-spin-a { to { transform: rotate(360deg); } }
.q-authm__alert { background: #FDECEC; border: 1px solid #F5C6C6; color: #A33A3A; font-size: 13.5px; font-weight: 700; padding: 11px 13px; border-radius: 11px; margin-bottom: 6px; line-height: 1.6; }
.q-authm__err { color: #B23B3B; font-size: 12.5px; font-weight: 700; margin-top: 5px; }
.q-authm__foot { display: flex; align-items: center; justify-content: center; gap: 7px; margin-top: 16px; padding-top: 14px; border-top: 1px solid #EEF3F2; font-size: 12px; font-weight: 600; color: #9FB0AD; }
@media (max-width: 480px) {
    .q-authm { padding: 0; align-items: flex-end; }
    .q-authm__card { max-width: none; border-radius: 22px 22px 0 0; max-height: 94vh; padding: 24px 18px 18px; }
}

/* ===== أبلغني عند التوفّر (Livewire: site.notify-me) ===== */
.q-nm { border: 1.5px dashed rgba(21, 169, 159, .32); background: rgba(21, 169, 159, .055); border-radius: 14px; padding: 14px 16px; margin-top: 12px; }
.q-nm__note { display: flex; align-items: center; gap: 9px; font-size: 14px; font-weight: 700; color: #243B45; line-height: 1.65; margin-bottom: 11px; }
.q-nm__bell { flex: none; width: 30px; height: 30px; border-radius: 9px; background: #E4F5F2; color: #0E8A82; display: flex; align-items: center; justify-content: center; }
.q-nm__cta {
    width: 100%; display: flex; align-items: center; justify-content: center; gap: 8px;
    padding: 12px 16px; border: 1.5px solid #15A99F; border-radius: 12px;
    background: #fff; color: #0E7C6F; font-weight: 800; font-size: 14.5px; cursor: pointer; transition: all .16s;
}
.q-nm__cta:hover { background: #15A99F; color: #fff; box-shadow: 0 8px 20px rgba(21,169,159,.26); }
.q-nm__cta:active { transform: translateY(1px); }

/* الحالة المسجَّلة سابقًا */
.q-nm--done { display: flex; align-items: center; gap: 12px; border-style: solid; border-color: rgba(107,165,44,.32); background: rgba(107,165,44,.07); }
.q-nm__badge { flex: none; width: 38px; height: 38px; border-radius: 11px; background: #EFF8E2; color: #5E9425; display: flex; align-items: center; justify-content: center; }
.q-nm__donetext { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.q-nm__donetext b { font-size: 14.5px; font-weight: 800; color: #3F6B14; }
.q-nm__donetext span { font-size: 13px; font-weight: 600; color: #6B7B78; line-height: 1.6; }
.q-nm--done.is-pop { animation: q-nm-pop .34s cubic-bezier(.2,.9,.3,1.3); }
@keyframes q-nm-pop { from { opacity: 0; transform: scale(.94); } to { opacity: 1; transform: none; } }

/* داخل النافذة */
.q-nm__logo { background: #FFF3DF !important; color: #B4690E !important; }
.q-nm__asuser { display: flex; align-items: center; gap: 9px; background: #F1F5F4; border-radius: 11px; padding: 11px 13px; margin-top: 12px; font-size: 13px; font-weight: 600; color: #3F5551; line-height: 1.6; }
.q-nm__asuser b { color: #143733; font-weight: 800; word-break: break-all; }

/* =====================================================================
   12) التقييم الموحّد  .q-rate*   (مكوّن <x-rating>)
   مصدر واحد لعرض النجوم في المتجر والبرامج والاستشارات وصفحات التفصيل.

   التعبئة الجزئية: طبقتان فوق بعض — رمادية كاملة + ذهبية مقصوصة بعرض
   --q-fill. لماذا لا نقرّب لأقرب نجمة؟ لأنّ 4.4 و4.6 يظهران حينها متطابقين
   بينما الفرق بينهما حقيقيّ ومهمّ للمشتري.

   ⚠️ RTL: القصّ من inset-inline-start (اليمين هنا) فتمتلئ النجوم من اليمين
   لليسار كترتيب قراءتها. لا تستبدلها بـleft.
   ===================================================================== */
.q-rate { display: inline-flex; align-items: center; gap: 7px; line-height: 1; white-space: nowrap; vertical-align: middle; }

/* ⚠️ margin-inline-end السالب يساوي letter-spacing: الأخير يضيف فراغًا **بعد** النجمة
   الخامسة أيضًا، فيدخل في عرض الصندوق وتصير نسبة --q-fill محسوبة على عرضٍ أكبر من
   النجوم الفعلية (3.9 تبدو 3.8). إلغاؤه يجعل التعبئة دقيقة. */
.q-rate__stars { position: relative; display: inline-block; direction: rtl; white-space: nowrap; letter-spacing: 2px; margin-inline-end: -2px; line-height: 1; font-size: 14px; }
.q-rate__base  { color: #DDE6E4; }
.q-rate__fill  { position: absolute; inset-block-start: 0; inset-inline-start: 0; width: var(--q-fill, 0%); overflow: hidden; color: var(--c-star); }

.q-rate__num   { font-family: var(--font-head); font-size: 14.5px; font-weight: 800; color: var(--c-ink); letter-spacing: .2px; }
.q-rate__count { font-size: 11.5px; font-weight: 700; color: var(--c-accent-d); font-variant-numeric: tabular-nums; }

/* عدّاد المراجعات بصيغتين: الكاملة «(9 مراجعات)» حيث يتّسع، والمختصرة «(9)» على
   البطاقات الضيّقة. الصفّ nowrap فلا يلتفّ، ولولا التبديل لتجاوز بطاقة الهاتف. */
.q-rate__count-min { display: none; }
@media (max-width: 991px) {
    .q-rate--sm .q-rate__count-full { display: none; }
    .q-rate--sm .q-rate__count-min  { display: inline; }
}

/* بلا حبّة خلفية: النجوم نفسها هي العنصر البصريّ — الحبّة الذهبية كانت تنافسها
   وتزاحم عرض البطاقة. التسلسل: نجوم بارزة ← رقم داكن ← عدّاد برتقاليّ أصغر. */
.q-rate--chip { background: none; border: 0; padding: 0; box-shadow: none; }

/* الهاتف: بطاقة المتجر ≈126px فقط. نُصغّر النجوم ونُسقط الرقم — النجوم تنقل
   التقييم بصريًّا، والرقم الدقيق يبقى في صفحة المنتج. (aria-label كامل دائمًا.) */
@media (max-width: 575.98px) {
    .q-rate--sm { gap: 5px; }
    .q-rate--sm .q-rate__stars { font-size: 13px; letter-spacing: 1.5px; margin-inline-end: -1.5px; }
    .q-rate--sm .q-rate__num   { display: none; }
    .q-rate--sm .q-rate__count { font-size: 11px; }
}

/* تدرّج الحجم مع اتّساع الشاشة — البطاقة على الهاتف ≈126px فلا تحتمل الأكبر */
@media (min-width: 576px) {
    .q-rate--sm .q-rate__stars { font-size: 15.5px; }
    .q-rate--sm .q-rate__num   { font-size: 15px; }
}
@media (min-width: 992px) {
    .q-rate--sm .q-rate__stars { font-size: 17px; letter-spacing: 2.5px; margin-inline-end: -2.5px; }
    .q-rate--sm .q-rate__num   { font-size: 16px; }
    .q-rate--sm .q-rate__count { font-size: 12.5px; }
}

/* المقاسات */
.q-rate--md { gap: 8px; }
.q-rate--md .q-rate__stars { font-size: 18px; letter-spacing: 2.5px; margin-inline-end: -2.5px; }
.q-rate--md .q-rate__num   { font-size: 17px; }
.q-rate--md .q-rate__count { font-size: 13px; }
.q-rate--lg .q-rate__stars { font-size: 21px; letter-spacing: 3px; margin-inline-end: -3px; }
.q-rate--lg .q-rate__num   { font-size: 19px; }

/* لا تقييم بعد */
.q-rate--new { background: #F1F6F5; border: 1px solid #DFEAE8; border-radius: 999px; padding: 4px 9px; color: var(--c-muted-2); font-size: 11.5px; font-weight: 800; gap: 4px; }
.q-rate--new svg { color: var(--c-muted-3); }

/* كتلة الملخّص (صفحة التفصيل) */
.q-rate-hero { display: flex; align-items: center; gap: 16px; }
.q-rate-hero__num { font-family: var(--font-head); font-size: 44px; font-weight: 800; color: var(--c-ink); line-height: 1; letter-spacing: -1px; }
.q-rate-hero__side { display: flex; flex-direction: column; gap: 6px; }
.q-rate-hero .q-rate__stars--lg { font-size: 22px; letter-spacing: 3px; margin-inline-end: -3px; }
.q-rate-hero__count { font-size: 12.5px; font-weight: 700; color: var(--c-muted-3); }

/* أشرطة توزيع النجوم */
.q-rate-bars { display: flex; flex-direction: column; gap: 5px; min-width: 190px; }
.q-rate-bar { display: flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 700; color: var(--c-muted-2); }
.q-rate-bar__k { width: 28px; color: var(--c-star); }
.q-rate-bar__t { flex: 1; height: 7px; background: #EDF3F1; border-radius: 999px; overflow: hidden; }
.q-rate-bar__f { height: 100%; background: linear-gradient(90deg, #FFC933, var(--c-star)); border-radius: 999px; }
.q-rate-bar__n { width: 26px; text-align: start; font-variant-numeric: tabular-nums; color: var(--c-muted-3); }

/* التقييم فوق صورة البطاقة (المتجر/البرامج) */
/* (حُذف .q-rate--float — كان يعوّل على خلفية الحبّة وحدودها، وبلا مستهلك واحد في القوالب) */

@media (max-width: 575.98px) {
    .q-rate-hero__num { font-size: 36px; }
    .q-rate-bars { min-width: 0; }
}

/* زرّ التقييم في الترويسة — شفّاف تمامًا، الحبّة وحدها هي المرئيّة */
.q-rate-jump { background: none; border: 0; padding: 0; margin: 8px 0 2px; cursor: pointer; display: inline-block; }
/* بعد إزالة خلفية الحبّة لم يعُد للـborder-color أثر — الإشارة الآن على النصّ نفسه */
.q-rate-jump:hover .q-rate__count { text-decoration: underline; }
.q-rate-jump:hover .q-rate__num   { color: var(--c-teal-d); }
.q-rate-jump:focus-visible { outline: 2px solid var(--c-teal); outline-offset: 3px; border-radius: 8px; }

/* =====================================================================
   13) كتلة التقييمات  .q-rev*   (front/_reviews.blade.php)

   لماذا هنا لا داخل القالب؟ كانت أنماطها في <style> داخل الـpartial، أي
   بعد site.css وبعد @stack('page-css') في ترتيب المستند — فتغلب كل شيء
   عند تساوي التخصيص، ولا تستطيع صفحة تعديل شيء منها. وهي مكوّن مشترك بين
   أربع صفحات (منتج · فعالية · استشاري · مقال) فمكانها المكوّنات المشتركة.

   وكل لون هنا من رموز الهوية لا hex مثبّت، فتتبع سمة التاجر (brandTheme).
   وترث --track من الصفحة، فتظهر بلون مسار الفعالية لا بالتركوازي دائمًا.
   ===================================================================== */
.q-rev { margin-top: 6px; --rev-track: var(--track, var(--c-teal)); }

/* لوحة الملخّص */
.q-rev__summary { display: grid; grid-template-columns: auto 1fr; gap: 22px 30px; align-items: center; background: linear-gradient(180deg, var(--bg-panel), #fff); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 22px 24px; margin-bottom: 22px; }
.q-rev__summary > .q-rate-hero { padding-inline-end: 26px; border-inline-end: 1px solid var(--line); }
.q-rev__srcs { grid-column: 1 / -1; display: flex; gap: 9px; flex-wrap: wrap; padding-top: 14px; border-top: 1px dashed var(--line); }
.q-rev__src { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 700; color: var(--c-muted); background: #fff; border: 1px solid var(--line); border-radius: var(--r-pill); padding: 6px 12px; }
.q-rev__src svg { color: var(--c-star); }

/* ترويسة القائمة */
.q-rev__head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }
.q-rev__head h4 { font-family: var(--font-head); font-size: 17px; font-weight: 800; color: var(--c-ink); margin: 0; }
.q-rev__count { font-size: 13.5px; font-weight: 700; color: var(--c-muted); }

/* بطاقة تقييم واحد */
.q-rev__list { display: flex; flex-direction: column; gap: 12px; }
.q-rev__item { display: flex; gap: 14px; background: #fff; border: 1px solid var(--line); border-radius: var(--r-md); padding: 16px 18px; transition: box-shadow .2s ease, border-color .2s ease; }
.q-rev__item:hover { border-color: var(--line-3); box-shadow: var(--sh-card-sm); }
.q-rev__item[hidden] { display: none; }

.q-rev__ava { flex: 0 0 44px; width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; font-family: var(--font-head); font-weight: 800; font-size: 18px; color: #fff; background: linear-gradient(135deg, var(--rev-track), var(--c-teal-dd)); }
.q-rev__main { flex: 1; min-width: 0; }
.q-rev__top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 3px; }
.q-rev__name { font-weight: 800; color: var(--c-ink); font-size: 14.5px; }
.q-rev__verified { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 800; color: var(--c-lime-d); background: var(--bg-soft-lime); border-radius: var(--r-pill); padding: 3px 9px; }
.q-rev__date { font-size: 12px; color: var(--c-muted-3); margin-inline-start: auto; white-space: nowrap; }
.q-rev__title { font-weight: 800; color: var(--c-ink); font-size: 14px; margin-top: 5px; }
/* الالتفاف إلزامي: نص طويل بلا مسافات كان يمدّ البطاقة أفقيًّا */
.q-rev__body { color: var(--c-body); font-size: 14px; line-height: 1.8; margin-top: 6px; white-space: pre-wrap; overflow-wrap: anywhere; }

/* ردّ الإدارة */
.q-rev__reply { margin-top: 12px; padding: 12px 14px; background: var(--bg-panel); border-radius: var(--r-sm); border-inline-start: 3px solid var(--rev-track); }
.q-rev__reply .q-rev__name { font-size: 13.5px; }
.q-rev__reply .q-rev__body { font-size: 13.5px; margin-top: 3px; }

/* عرض المزيد */
.q-rev__more { display: block; width: 100%; margin-top: 14px; background: #fff; border: 1px solid var(--line-3); color: var(--c-teal-d); font-family: var(--font-head); font-weight: 800; font-size: 14px; border-radius: var(--r-pill); padding: 11px; cursor: pointer; transition: .18s; }
.q-rev__more:hover { background: var(--bg-soft-teal); border-color: var(--c-teal); }

.q-rev__empty { padding: 32px 20px; text-align: center; color: var(--c-muted-3); background: #fff; border: 1px dashed var(--line-3); border-radius: var(--r-md); font-size: 14px; }

/* نموذج الإضافة */
.q-rev__form { margin-top: 24px; background: linear-gradient(180deg, var(--bg-soft-teal), #fff); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 22px 24px; }
.q-rev__form h4 { font-family: var(--font-head); font-weight: 800; margin: 0 0 4px; font-size: 17px; color: var(--c-teal-dd); }
.q-rev__hint { font-size: 12.5px; color: var(--c-muted); margin-bottom: 16px; }
.q-rev__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 12px; }

/* منتقي النجوم — أكبر وبتسمية حية تجعل تخطّيه صعبًا */
.q-rev__rate { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.q-rev__pick { display: inline-flex; flex-direction: row-reverse; gap: 3px; }
.q-rev__pick input { position: absolute; opacity: 0; width: 0; height: 0; }
.q-rev__pick label { font-size: 32px; color: #DDE6E4; cursor: pointer; line-height: 1; transition: color .12s, transform .12s; }
.q-rev__pick label:hover { transform: scale(1.12); }
.q-rev__pick input:checked ~ label, .q-rev__pick label:hover, .q-rev__pick label:hover ~ label { color: var(--c-star); }
.q-rev__pick input:focus-visible + label { outline: 2px solid var(--c-teal); outline-offset: 2px; border-radius: 4px; }
.q-rev__ratelbl { font-size: 13.5px; font-weight: 800; color: var(--c-muted-2); min-width: 88px; }
.q-rev__ratelbl.is-set { color: #8A5A00; }

.q-rev__counter { font-size: 12px; font-weight: 700; color: var(--c-muted-3); margin-top: 7px; font-variant-numeric: tabular-nums; }
.q-rev__counter.is-near { color: var(--c-accent-d); }
.q-rev__counter.is-max { color: #C0392B; }
.q-rev__foot { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 14px; }
.q-rev__note-sm { font-size: 12px; color: var(--c-muted-3); }

/* لوحات النتيجة */
.q-rev__note { border-radius: var(--r-sm); padding: 14px 16px; font-weight: 700; font-size: 13.5px; line-height: 1.75; margin-bottom: 14px; display: flex; align-items: flex-start; gap: 10px; }
.q-rev__note b { display: block; font-weight: 800; margin-bottom: 2px; }
.q-rev__note--ok { background: var(--bg-soft-lime); color: var(--c-lime-d); border: 1px solid #CBE6A8; }
.q-rev__note--err { background: #FDECEB; color: #A5342C; border: 1px solid #F5CDC9; }
.q-rev__note > span:first-child { flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; font-size: 13px; background: rgba(255, 255, 255, .7); }

.q-textarea.is-invalid, .q-input.is-invalid { border-color: #E0A19B; background: #FFFAFA; }
[data-rev-submit][disabled] { opacity: .6; cursor: progress; }

@media (max-width: 767.98px) {
    .q-rev__summary { grid-template-columns: 1fr; padding: 18px; gap: 16px; }
    .q-rev__summary > .q-rate-hero { padding-inline-end: 0; border-inline-end: 0; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
    .q-rev__grid { grid-template-columns: 1fr; }
    .q-rev__form { padding: 18px; }
    .q-rev__item { padding: 14px; gap: 11px; }
    .q-rev__ava { flex-basis: 38px; width: 38px; height: 38px; font-size: 16px; }
    .q-rev__date { margin-inline-start: 0; width: 100%; }
}

/* =====================================================================
   14) السعر والخصم  .q-priceblock · .q-badge-off   (مكوّن <x-price>)

   الخصم كان مخزّنًا في products.discount ولا يُعرض ولا يُحصَّل: العميل يرى
   السعر الكامل ويدفعه. صار السعر المعروض هو final_price، والسعر قبل الخصم
   يظهر مشطوبًا بجواره للمقارنة لا للدفع.
   ===================================================================== */
.q-priceblock { display: inline-flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.q-price-save { font-size: 11.5px; font-weight: 800; color: var(--c-lime-d); background: var(--bg-soft-lime); border-radius: var(--r-pill); padding: 3px 9px; white-space: nowrap; }

/* شارة الخصم على صورة المنتج — تذكر نوع الخصم (نسبة أو مبلغ) صراحةً */
.q-badge-off { position: absolute; top: 12px; inset-inline-start: 12px; z-index: 2;
    background: linear-gradient(135deg, #F0503C, #C9302C); color: #fff;
    font-family: var(--font-head); font-weight: 800; font-size: 12px; letter-spacing: .2px;
    padding: 6px 12px; border-radius: var(--r-pill); box-shadow: 0 4px 12px rgba(201, 48, 44, .28); }

/* في صفحة التفصيل تكبر قليلًا وتقع أعلى المعرض */
.q-badge-off--lg { font-size: 13.5px; padding: 8px 15px; top: 14px; inset-inline-start: 14px; }

@media (max-width: 575.98px) {
    .q-price-save { font-size: 11px; padding: 2px 7px; }
    .q-badge-off { font-size: 11px; padding: 5px 10px; }
}

/* ─────────────────────────────────────────────────────────────────────────
   §8c-2 — عناصر تحكّم ظاهرة في شريط الفلترة (فتحة `controls`)

   لماذا خارج اللوحة؟ «الترتيب» ليس فلترًا يُخفي نتائج، بل ترتيبٌ يريد المستخدم
   رؤيته وتبديله بلا فتح لوحة. ووضعه داخل الشبكة كان يشغل عمودًا من ثلاثة
   ويترك عمودين فارغين — وهو الفراغ الأبيض الذي جعل اللوحة تبدو مفكَّكة.

   ⚠️ ما يوضع هنا لا يُحتسب في `active` (شارة زرّ «تصفية») لأنّه مرئيّ دائمًا.
   ───────────────────────────────────────────────────────────────────────── */
/* الحاوية تأخذ حجم محتواها، و**كل قائمة** لها أساسها الخاصّ — لا أساسٌ واحد
   للحاوية يتقاسمه أبناؤها فتُضغَط كلّ قائمة إلى نصفه ويُقصّ نصّها. */
.q-fb__controls { display: flex; align-items: center; gap: 8px; flex: 0 1 auto; min-width: 0; flex-wrap: wrap; }
/* flex-wrap إلزاميّ: صفحة الفعاليات فيها ثلاث قوائم، وبلا التفاف تنضغط
   الثلاث في سطرٍ واحد على الجوّال فيصير كلٌّ منها بضعة بكسلات. */
.q-fb__controls > * { flex: 1 1 140px; min-width: 0; }

/* غلاف القائمة: أيقونة ثابتة + تسمية مخفيّة بصريًّا (تبقى لقارئ الشاشة) */
.q-fb__ctl { position: relative; display: block; }
.q-fb__ctl > .q-fb__control { padding-inline: 36px 32px; font-size: 13.5px; }
.q-fb__ctlico { position: absolute; inset-inline-start: 13px; top: 50%; transform: translateY(-50%);
    color: var(--c-muted-2); pointer-events: none; display: flex; }


/* بلا عنوان: البحث يتمدّد ليملأ ما تبقّى من العرض بدل أن يبقى بعرضٍ ثابت
   وتتكوّم البقيّة في طرف السطر. */
.q-fb--nohead .q-fb__search { flex: 1 1 100%; }

@media (min-width: 700px) {
    /* سطر واحد: [بحث] [قوائم]. البحث ينمو ضِعف نموّ القوائم فيبقى هو الأبرز،
       لكنّه لا يبتلع الفراغ كلّه فتُدفَع القائمة الثالثة إلى سطرٍ ثانٍ. */
    .q-fb--nohead .q-fb__search { flex: 2 1 240px; }
    .q-fb__controls { flex: 1 1 auto; }
    .q-fb__controls > * { flex: 1 1 165px; }
}
@media (min-width: 992px) {
    .q-fb--nohead .q-fb__search { flex: 2 1 280px; }
    .q-fb__controls > * { flex: 1 1 195px; }
}

/* دون 700px: البحث سطرٌ كامل، ثمّ القوائم في سطرٍ ثانٍ تتقاسمه بالتساوي */
@media (max-width: 699.98px) {
    .q-fb__controls { flex: 1 1 100%; }
    .q-fb__toggle { flex: 0 0 auto; }
}

/* ===== بطاقة تقييم خدمة العملاء بعد الدفع (front/order) ===== */
.order-cssurvey { display: flex; align-items: center; gap: 14px; background: linear-gradient(135deg, var(--bg-soft-teal), var(--bg-soft-lime)); border: 1.5px solid var(--c-teal); border-radius: var(--r-lg); padding: 16px 20px; box-shadow: 0 8px 22px rgba(var(--c-teal-d-rgb), .12); transition: box-shadow .16s, transform .16s; }
.order-cssurvey:hover { box-shadow: 0 12px 30px rgba(var(--c-teal-d-rgb), .2); transform: translateY(-1px); }
.order-cssurvey__ico { flex-shrink: 0; width: 46px; height: 46px; border-radius: 13px; background: var(--c-teal); color: #fff; display: flex; align-items: center; justify-content: center; }
.order-cssurvey__body { flex: 1; min-width: 0; }
.order-cssurvey__body b { display: block; font-family: var(--font-head); font-size: 16.5px; color: var(--c-ink); }
.order-cssurvey__body span { font-size: 13.5px; color: var(--c-body); font-weight: 600; }
.order-cssurvey__cta { flex-shrink: 0; font-weight: 800; font-size: 14px; color: var(--c-teal-d); white-space: nowrap; }
@media (max-width: 575.98px) {
    .order-cssurvey { flex-wrap: wrap; }
    .order-cssurvey__cta { flex-basis: 100%; text-align: center; background: var(--c-teal); color: #fff; padding: 9px; border-radius: var(--r-pill); }
}

/* =====================================================================
   15) زرّ المفضّلة الموحّد  .q-wish   (مكوّن <x-wish-btn>)

   حالتان: عاديّة (قلبٌ مفرَّغ) · is-active (قلبٌ ممتلئ بلون التمييز + نبضة).
   الحالة تُصيَّر من الخادم؛ والجافاسكربت يبدّلها عند النقر بلا إعادة تحميل.
   ===================================================================== */
.q-wish { display: inline-flex; align-items: center; justify-content: center;
    background: #fff; border: 1.5px solid var(--line-3); color: var(--c-muted-2);
    cursor: pointer; transition: color .15s, border-color .15s, background .15s, transform .12s; }
.q-wish svg { transition: transform .15s ease; }
.q-wish:hover { color: var(--c-accent); border-color: var(--c-accent); background: var(--bg-soft-sand); }
.q-wish:active { transform: scale(.92); }

/* الحالة المُفضَّلة: قلبٌ ممتلئ */
.q-wish.is-active { color: var(--c-accent); border-color: var(--c-accent); background: var(--bg-soft-sand); }
.q-wish.is-active svg { fill: var(--c-accent); }
.q-wish.is-active:hover { color: var(--c-accent-d); border-color: var(--c-accent-d); }
.q-wish.is-active:hover svg { fill: var(--c-accent-d); }
@keyframes q-wish-pop { 0% { transform: scale(1); } 40% { transform: scale(1.32); } 100% { transform: scale(1); } }
.q-wish.just-added svg { animation: q-wish-pop .4s ease; }

/* مربّع كبير — صفحة المنتج (بديل .prod-wish السابق) */
.q-wish--detail { width: 54px; height: 54px; border-radius: 14px; border-width: 2px; }

/* مربّع صغير بجوار «أضف للسلة» في البطاقة (يحاكي صفحة المنتج، ويتفادى
   زحمة زوايا الصورة حيث القسم والخصم). */
.q-wish--card { flex: 0 0 auto; width: 46px; border-radius: 12px; }

/* صفّ إجراءات البطاقة: [أضف للسلة يتمدّد] [قلب] */
.store-product__actions { display: flex; gap: 8px; align-items: stretch; }
.store-product__actions > form { flex: 1; min-width: 0; }
.store-product__actions > .store-product__add { flex: 1; }

/* زرّ «أضف للسلة» — مكوّن مشترك: يُستعمل في بطاقة المتجر **و** بطاقة المفضّلة في
   لوحة الحساب. كان في store.css فقط (يُحمَّل على /store وحده)، فظهر الزرّ بلا أنماط
   في صفحة الحساب. مكانه هنا ليعمل أينما وُجد. */
.store-product__add { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; background: linear-gradient(135deg, var(--c-teal), var(--c-teal-d)); color: #fff; border: none; cursor: pointer; font-family: var(--font-body); font-weight: 800; font-size: 14.5px; padding: 12px; border-radius: 12px; box-shadow: 0 5px 14px rgba(var(--c-teal-rgb), .26); transition: transform .15s ease, box-shadow .15s ease; }
.store-product__add:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(var(--c-teal-rgb), .38); }
.store-product__add:active { transform: translateY(0); }

/* ═══════════════════════════════════════════════════════════════════════
   لافتة وضع الصيانة (§ماينتيننس) — تظهر أعلى كل صفحة (site-wide).
   banner = إشعار عامّ (كهرماني) · closed = تنبيه المسؤول (أحمر). markup في
   layouts/partials/maintenance-banner.blade.php.
   ═══════════════════════════════════════════════════════════════════════ */
.q-maint { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 11px 20px; font-family: var(--font-body); font-weight: 700; font-size: 14.5px; line-height: 1.6; text-align: center; }
.q-maint__ico { width: 20px; height: 20px; flex-shrink: 0; }
.q-maint__txt strong { font-weight: 800; }
.q-maint--banner { background: linear-gradient(135deg, var(--c-accent), var(--c-accent-d, #E07E12)); color: #fff; }
.q-maint--banner .q-maint__ico { stroke: #fff; }
.q-maint--closed { background: #FBE9E9; color: #A62121; border-bottom: 1px solid #F3C9C9; }
.q-maint--closed .q-maint__ico { stroke: #A62121; }
@media (max-width: 575px) { .q-maint { font-size: 13px; padding: 9px 14px; } }
