/*
Theme Name: Rowaq
Theme URI: https://github.com/M0Ghali/rowaq
Author: Rowaq
Description: ثيم منصة رواق التعليمية — الهوية ونظام التصميم والبوابات لكل دور (مدرّس/طالب/ولي أمر). البيانات والمنطق في بلاجينز edu-*، والعرض هنا.
Version: 0.1.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: rowaq
*/

/* ============================================================
   نظام التصميم — **في `tokens.css`**
   ------------------------------------------------------------
   نُقلت الرموزُ إلى ملفٍّ مستقلٍّ ليحمّلها الموقعُ والتطبيقُ معًا من مصدرٍ
   واحد. هذه الورقةُ **تستهلكها ولا تعرّفها**.
   ============================================================ */

*{box-sizing:border-box}
html{margin-top:0!important}
body{
  margin:0;background:var(--rw-bg);color:var(--rw-text);
  font-family:var(--rw-font);line-height:1.75;-webkit-font-smoothing:antialiased;direction:rtl;
}
a{color:inherit;text-decoration:none}
img{max-width:100%;height:auto}
#wpadminbar{display:none!important}

/* ============================================================
   الأزرار
   ------------------------------------------------------------
   🐞 هذه القاعدةُ **ضاعت** في `8973ca2` وبقيت تعديلاتُها (`.rw-btn.danger`
   و`.rw-pager .rw-btn` و`.rw-bulk-acts .rw-btn` …) — تسعةُ مُحدِّداتٍ تعدّل
   صنفًا لا وجودَ له. فكانت **كلُّ أزرار المنصّة بشكل المتصفّح الخام** منذ ذلك
   الحين، وكلُّ ما بُني بعده بُني فوق أساسٍ غائب.

   ولم يكشفها حارسُ البنية: هو يعدّ السماتِ المضمَّنةَ والهيكسَ والاتّجاهات،
   ولا يسأل **«هل الصنفُ المستعمَل معرَّفٌ أصلًا؟»** — وهذا فحصٌ يُضاف (#T-4).
   ============================================================ */
.rw-btn{display:inline-block;background:var(--rw-primary);color:var(--rw-on-primary);
  font-weight:800;padding:9px 18px;border-radius:var(--rw-radius-sm);border:none;
  cursor:pointer;font-family:var(--rw-font);font-size:14px;line-height:1.5;
  text-align:center;transition:filter .15s,border-color .15s}
.rw-btn.ghost{background:transparent;border:1.5px solid var(--rw-border);color:var(--rw-text)}
.rw-btn:hover{filter:brightness(1.08)}
.rw-btn.ghost:hover{border-color:var(--rw-primary)}

/* حاويات */
.rw-wrap{max-width:1120px;margin:0 auto;padding:0 22px}
.rw-narrow{max-width:680px;margin:0 auto;padding:0 22px}

/* بطاقات */
.rw-card{background:var(--rw-surface);border:1px solid var(--rw-border);border-radius:var(--rw-radius);
  padding:22px;box-shadow:var(--rw-shadow)}

/* الصفحة الرئيسية */
.rw-hero{background:radial-gradient(1200px 500px at 70% -10%,color-mix(in srgb,var(--rw-primary) 45%,transparent),transparent),
  linear-gradient(160deg,var(--rw-surface),var(--rw-bg));padding:80px 0 56px;text-align:center}
.rw-hero h1{font-size:clamp(30px,6vw,54px);font-weight:900;margin:0 0 14px;line-height:1.15}
.rw-hero p{font-size:clamp(16px,2.4vw,20px);color:var(--rw-text-2);max-width:640px;margin:0 auto 26px}
.rw-hero .cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

/* بطاقات الأدوار (مداخل البوابات) */
.rw-roles{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;margin:48px 0}
.rw-role{background:var(--rw-surface);border:1px solid var(--rw-border);border-radius:var(--rw-radius);
  padding:24px 22px;text-align:center;transition:.2s;display:block}
.rw-role:hover{transform:translateY(-4px);border-color:var(--rw-primary);box-shadow:var(--rw-shadow)}
.rw-role .ico{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;font-size:26px;margin:0 auto 14px;
  background:color-mix(in srgb,var(--rw-primary) 16%,transparent);color:var(--rw-primary)}
.rw-role h3{margin:0 0 6px;font-size:18px;font-weight:800}
.rw-role p{margin:0;color:var(--rw-text-2);font-size:14px}

/* شبكة المزايا */
.rw-feat{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;margin:24px 0 60px}
.rw-feat .f{background:var(--rw-surface);border:1px solid var(--rw-border);border-radius:var(--rw-radius);padding:22px}
.rw-feat .f .ico{font-size:22px;margin-bottom:10px}
.rw-feat .f h4{margin:0 0 6px;font-size:16px;font-weight:800}
.rw-feat .f p{margin:0;color:var(--rw-text-2);font-size:14px}

/* عناوين أقسام */
.rw-sec-title{font-size:clamp(22px,3.5vw,30px);font-weight:900;text-align:center;margin:56px 0 8px}
.rw-sec-sub{text-align:center;color:var(--rw-text-2);margin:0 0 10px}

/* البوابات — تخطيط عام */
.rw-portal{min-height:100vh;display:grid;grid-template-columns:260px minmax(0,1fr)}
/* `min-width:0` لأنّ عنصرَ الشبكةِ افتراضُه `auto`: لا ينكمش تحت عرض
   محتواه مهما ضاقت القناة. فصفُّ «مَن أنت» (حرفٌ + اسمٌ + شارةُ دور)
   جعل الجانبيَّ ٤١٠px في شاشةِ ٣٩٠، فدفع المستندَ كلَّه.
   و«Platform admin» أعرضُ من «مدير المنصة» — فظهر في الإنجليزيّة وحدَها. */
.rw-side{min-width:0;background:var(--rw-surface);border-inline-start:1px solid var(--rw-border);padding:22px 16px}
.rw-side .who{display:flex;align-items:center;gap:10px;margin-bottom:20px;min-width:0}
/* والاسمُ يُقصّ بدل أن يدفع: اسمٌ نصفُه مرئيٌّ خيرٌ من صفحةٍ تنزلق أفقيًّا. */
.rw-side .who > div{min-width:0;overflow:hidden}
.rw-side .who strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rw-side .who .av{width:42px;height:42px;border-radius:50%;background:var(--rw-primary);display:grid;place-items:center;font-weight:900;color:#fff}
.rw-side nav a{display:flex;align-items:center;gap:10px;padding:11px 13px;border-radius:var(--rw-radius-sm);color:var(--rw-text-2);font-weight:600;margin-bottom:4px}
.rw-side nav a.on,.rw-side nav a:hover{background:var(--rw-surface-2);color:var(--rw-text)}
.rw-main{padding:28px 32px}
.rw-page-head{display:flex;align-items:center;gap:14px;margin-bottom:22px}
.rw-page-head h1{margin:0;font-size:24px;font-weight:900}
.rw-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:22px}
.rw-stat{background:var(--rw-surface);border:1px solid var(--rw-border);border-radius:var(--rw-radius-sm);padding:18px}
.rw-stat .n{font-size:26px;font-weight:900}
.rw-stat .l{color:var(--rw-text-2);font-size:13px}
/* `1fr` = `minmax(auto,1fr)` — والحدُّ الأدنى `auto` يعني min-content،
   فالقناةُ تتّسع لمحتواها بدل أن تحدَّه. و`minmax(0,…)` تقطع ذلك. */
@media(max-width:820px){.rw-portal{grid-template-columns:minmax(0,1fr)}.rw-side{border:none;border-bottom:1px solid var(--rw-border)}}

/* صفحة الدخول */
.rw-login{min-height:100vh;display:grid;place-items:center;padding:24px;
  background:radial-gradient(900px 500px at 50% -10%,color-mix(in srgb,var(--rw-primary) 40%,transparent),transparent),var(--rw-bg)}
.rw-login .box{width:min(420px,100%);background:var(--rw-surface);border:1px solid var(--rw-border);border-radius:var(--rw-radius);padding:30px}
.rw-login h1{font-size:24px;font-weight:900;text-align:center;margin:0 0 4px}
.rw-login p.sub{text-align:center;color:var(--rw-text-2);margin:0 0 20px}
.rw-field{margin-bottom:14px}
.rw-field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--rw-text-2)}
.rw-field input{width:100%;padding:12px 14px;border-radius:var(--rw-radius-sm);border:1px solid var(--rw-border);
  background:var(--rw-bg);color:var(--rw-text);font-family:var(--rw-font)}
.rw-field input:focus{outline:none;border-color:var(--rw-primary)}

/* بطاقات (كورسات/مدرّسون) */
.rw-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px;margin:20px 0 40px}
.rw-ccard{background:var(--rw-surface);border:1px solid var(--rw-border);border-radius:var(--rw-radius);
  overflow:hidden;display:block;transition:.2s}
.rw-ccard:hover{transform:translateY(-4px);border-color:var(--rw-primary);box-shadow:var(--rw-shadow)}
/* التدرّجُ **طبقةٌ تحت** الصورة لا بديلٌ عنها.
   كان `background` المختصرَ يضع التدرّجَ، ثم تدهسه `background-image` المضمَّنةُ
   من الغلاف — فرابطُ صورةٍ فاشلٍ (والأغلفةُ روابطُ خارجيّة) يعطي صندوقًا أبيضَ
   لا احتياطيَّ له. الفصلُ يُبقي التدرّجَ ظاهرًا حين تفشل الصورة. */
.rw-ccard .thumb{height:130px;background-color:var(--rw-surface-2);
  background-image:linear-gradient(135deg,var(--rw-primary),var(--rw-secondary));
  background-size:cover;background-position:center;display:grid;place-items:center;font-size:34px}
.rw-ccard .body{padding:16px}
.rw-ccard h3{margin:0 0 4px;font-size:16px;font-weight:800}
.rw-ccard p{margin:0;color:var(--rw-text-2);font-size:13px}
.rw-ccard .meta{display:flex;align-items:center;justify-content:space-between;margin-top:12px}
.rw-ccard .price{font-weight:900;color:var(--rw-primary)}
.rw-ccard .rate{color:#f59e0b;font-size:13px;font-weight:700}
.rw-ccard .tav{width:60px;height:60px;border-radius:50%;background:var(--rw-primary);color:#fff;
  display:grid;place-items:center;font-size:24px;font-weight:900;margin:0 auto 10px}

/* دعم الإنجليزية (LTR) */
html[dir="ltr"] body{direction:ltr;text-align:left}
html[dir="ltr"] .rw-side{border-inline-start:none;border-inline-end:1px solid var(--rw-border)}


/* ============================================================
   الهيدر والتنقّل — قائمة واحدة، موضعان (علوي/سفلي)
   ============================================================ */
.rw-header{background:var(--rw-glass);backdrop-filter:blur(12px);border-bottom:1px solid var(--rw-border);z-index:60}
.rw-header.is-sticky{position:sticky;top:0}
.rw-bar{max-width:1120px;margin:0 auto;display:flex;align-items:center;gap:18px;padding:12px 22px}
.rw-brand{display:flex;align-items:center;gap:9px;font-weight:900;font-size:18px;flex:none}
.rw-brand img{height:30px;width:auto;border-radius:7px}

/* الشريط العلوي */
.rw-nav-top{display:flex;align-items:center;gap:4px;flex:1;min-width:0}
.rw-nav-top .rw-navi{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border-radius:9px;
  color:var(--rw-text-2);font-weight:600;font-size:14px;white-space:nowrap;background:none;border:none;
  cursor:pointer;font-family:var(--rw-font)}
.rw-nav-top .rw-navi:hover{color:var(--rw-text);background:var(--rw-surface-2)}
.rw-nav-top .rw-navi.on{color:var(--rw-text);background:var(--rw-surface-2)}
.rw-nav-top .rw-navi .i{font-size:15px;line-height:1}

/* «المزيد» */
.rw-more{position:relative}
.rw-more-sheet{display:none;position:absolute;inset-inline-start:0;top:calc(100% + 8px);min-width:190px;
  background:var(--rw-surface);border:1px solid var(--rw-border);border-radius:12px;padding:6px;
  box-shadow:var(--rw-shadow);z-index:70}
.rw-more.open .rw-more-sheet{display:block}
.rw-more-sheet a{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:8px;
  color:var(--rw-text-2);font-size:14px;font-weight:600}
.rw-more-sheet a:hover{background:var(--rw-surface-2);color:var(--rw-text)}

/* الأفعال يمين الهيدر */
.rw-actions{display:flex;align-items:center;gap:8px;margin-inline-start:auto;flex:none}
/* ── مبدّلا الوضع واللغة: قائمةٌ تُظهر الخيارات (بديلُ الدورة الصامتة) ── */
.rw-menu{position:relative}
/* 🐞 **مثلّثُ `details` الأصليُّ يحتاج ثلاثَ قواعدَ لا واحدة.**
   قِستُه: `display:inline-flex` على `summary` **لا يُخفيه**، و`list-style:none`
   وحدَها لا تكفي — بقي `::-webkit-details-marker` بـ`inline-flex` موروثةً،
   فظهر سهمٌ أسودُ بجوار سهمنا: زرٌّ بسهمين. */
.rw-menu > summary{list-style:none}
.rw-menu > summary::marker{content:""}
.rw-menu > summary::-webkit-details-marker{display:none}

/* زرٌّ مربّعٌ بأيقونةٍ واحدة — بلا سهمٍ يزاحمها.
   السهمُ في زرٍّ ٣٤px يضيف عنصرًا ثانيًا في مساحةٍ لا تتّسع لواحد، والقائمةُ
   تُعلن نفسَها بالفتح لا برمزٍ صغيرٍ بجوارها. */
.rw-menu-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;
  min-width:36px;height:36px;padding:0 9px;
  border:1px solid var(--rw-border);border-radius:var(--rw-radius-sm);
  color:var(--rw-text-2);cursor:pointer;user-select:none;
  transition:border-color .15s,color .15s,background .15s}
.rw-menu-btn:focus-visible{outline:2px solid var(--rw-primary);outline-offset:2px}
.rw-menu-btn:hover{color:var(--rw-text);border-color:var(--rw-primary);background:var(--rw-surface-2)}
.rw-menu[open] .rw-menu-btn{color:var(--rw-text);border-color:var(--rw-primary)}
.rw-menu-now{display:inline-flex}
.rw-menu-code{font-size:12px;font-weight:800;letter-spacing:.02em}

.rw-menu-list{position:absolute;inset-block-start:calc(100% + 7px);inset-inline-end:0;
  min-width:194px;z-index:70;padding:6px;
  background:var(--rw-surface);border:1px solid var(--rw-border);
  border-radius:var(--rw-radius-sm);box-shadow:var(--rw-shadow)}
.rw-menu-head{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
  color:var(--rw-text-3);padding:5px 9px 7px}
.rw-menu-item{display:flex;align-items:center;gap:9px;width:100%;
  min-height:38px;padding:0 9px;border:none;background:none;cursor:pointer;
  border-radius:8px;color:var(--rw-text-2);font-family:var(--rw-font);font-size:13.5px;
  text-align:start}
.rw-menu-item:hover{background:var(--rw-surface-2);color:var(--rw-text)}
.rw-menu-item.on{color:var(--rw-text);font-weight:700}
.rw-menu-ico{display:inline-flex;width:18px;justify-content:center;flex:0 0 auto}
.rw-menu-lbl{flex:1}
/* العلامةُ محجوزةُ المساحةِ دائمًا: `visibility` لا `display` — وإلا قفزت
   نصوصُ الخيارات يمينًا ويسارًا كلّما تغيّر المفعَّل. */
.rw-menu-tick{display:inline-flex;color:var(--rw-primary);flex:0 0 auto;visibility:hidden}
.rw-menu-item.on .rw-menu-tick{visibility:visible}

/* شريط الموبايل السفلي */
.rw-nav-bottom{display:none;position:fixed;inset-inline:0;bottom:0;z-index:80;
  background:var(--rw-glass);backdrop-filter:blur(12px);border-top:1px solid var(--rw-border);
  padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
/* `min-width:0` لأنّ الافتراضَ `auto`: عنصرُ فليكسٍ لا ينكمش تحت عرض
   محتواه مهما قيل `flex:1`. فالخمسةُ تجمع أعرضَها فيفيض الشريطُ عن
   الشاشة — والنصُّ الإنجليزيُّ أعرضُ من العربيّ فظهرت في الإنجليزيّة
   وحدَها. قِيس: «⋯More» تجاوزت ٣٩٠px بـ١٤. */
.rw-nav-bottom .rw-navi{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:7px 4px;border-radius:10px;color:var(--rw-text-3);font-size:11px;font-weight:700;
  background:none;border:none;cursor:pointer;font-family:var(--rw-font)}
/* والاسمُ يُقصّ بدل أن يدفع — سطرٌ واحدٌ بثلاث نقاطٍ خيرٌ من شريطٍ مقصوصٍ نصفُه. */
.rw-nav-bottom .rw-navi>:not(.i){max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rw-nav-bottom .rw-navi .i{font-size:19px;line-height:1}
.rw-nav-bottom .rw-navi.on{color:var(--rw-primary)}
.rw-nav-bottom .rw-more{flex:1}
.rw-nav-bottom .rw-more .rw-navi{width:100%}
.rw-nav-bottom .rw-more-sheet{bottom:calc(100% + 8px);top:auto;inset-inline:8px;min-width:0}

/* ============================================================
   الفوتر
   ============================================================ */
.rw-footer{border-top:1px solid var(--rw-border);padding:32px 0 24px;color:var(--rw-text-3);
  font-size:14px;margin-top:48px}
/* عمودان لا ثلاثة: ذهب «تواصل معنا» لأنّه كان يكرّر قسمَ «تواصل» فوقَه */
.rw-foot-cols{display:grid;grid-template-columns:1fr 1.5fr;gap:40px;padding-bottom:24px;align-items:start}
/* صفٌّ مفرودٌ لا طابورٌ رأسيّ: أربعةُ روابطَ قصيرةٍ تُقرَأ دفعةً واحدة،
   وتلتفّ وحدَها إن ضاق المتّسع. */
.rw-foot-links-grid{display:flex;flex-wrap:wrap;gap:8px 30px}
.rw-foot-links-grid a{margin-bottom:0}
.rw-foot-cols .col h4{color:var(--rw-text);font-size:15px;margin:0 0 10px}
.rw-foot-cols .col a{display:block;color:var(--rw-text-2);margin-bottom:7px;font-size:14px}
.rw-foot-cols .col a:hover{color:var(--rw-text)}
.rw-foot-cols .col p{margin:0;color:var(--rw-text-2);line-height:1.8}
.rw-foot-bottom{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;
  border-top:1px solid var(--rw-border);padding-top:18px}

/* ============================================================
   الموبايل
   ============================================================ */
@media(max-width:900px){
  .rw-nav-top{display:none}
  .rw-nav-bottom{display:flex}
  body{padding-bottom:70px}
  .rw-foot-cols{grid-template-columns:1fr;gap:22px}
  .rw-bar{gap:10px;padding:10px 16px}
  .rw-brand span{font-size:16px}
}

/* ============================================================
   الحالات المشتركة والنماذج والرسائل  (#39 · #40 · #42)
   ------------------------------------------------------------
   عُرفٌ واحد يرسمه PHP (inc/ui.php) وJS (assets/js/rw-ui.js) معًا.
   لو تباعدا عادت الازدواجيةُ من البابِ الذي أغلقناه.

   وكلُّ تخطيطٍ هنا **منطقيُّ الاتجاه** (inline-start/end) لا فيزيائي —
   درسُ تايرون AUD-UX-008: زرٌّ عائمٌ بـ`left:24px` ظهر مقلوبًا في RTL.
   ============================================================ */

/* ── الحالات الثلاث ── */
.rw-state{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;text-align:center;padding:40px 20px;min-height:150px}
.rw-state-icon{font-size:38px;line-height:1;opacity:.85}
.rw-state-title{margin:0;font-weight:700;font-size:15px;color:var(--rw-text)}
.rw-state-hint{margin:0;font-size:13.5px;color:var(--rw-text-2);max-width:44ch}
.rw-state .rw-btn{margin-top:4px}
.rw-state-error .rw-state-title{color:var(--rw-red)}

/* ── المؤشّر ── */
.rw-spin{display:inline-block;width:26px;height:26px;border-radius:50%;
  border:2.5px solid var(--rw-border);border-top-color:var(--rw-primary);
  animation:rw-spin .7s linear infinite}
.rw-spin.sm{width:13px;height:13px;border-width:2px;vertical-align:-2px}
@keyframes rw-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){
  .rw-spin{animation-duration:2.4s}
  .rw-toast{transition:none}
}

/* ── الأزرار أثناء العمل ── */
.rw-btn[disabled],.rw-btn[aria-busy=true]{opacity:.6;cursor:progress;pointer-events:none}
button[disabled]{cursor:not-allowed}

/* ── الشارات: نغماتٌ أربع، عُرفٌ واحد ── */
/* الشارةُ العارية تأخذ النغمةَ الهادئة — فلا تظهر حبّةٌ بلا لون. لا شكلَ افتراضيَّ
   «غيرَ مصمَّم»: أيُّ فراغٍ في العُرف يملؤه أحدُهم بشكلٍ من عنده، وهكذا وُلد
   العُرفان المتوازيان في تايرون (`badge green` مقابل `badge badge-green`). */
.rw-badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;
  font-weight:700;line-height:1.7;white-space:nowrap;
  background:var(--rw-surface-2);color:var(--rw-text-2);border:1px solid var(--rw-border)}
.rw-badge-ok  {background:color-mix(in srgb,var(--rw-accent) 16%,transparent);
               color:var(--rw-accent);border-color:color-mix(in srgb,var(--rw-accent) 34%,transparent)}
.rw-badge-wait{background:color-mix(in srgb,var(--rw-yellow) 16%,transparent);
               color:var(--rw-yellow);border-color:color-mix(in srgb,var(--rw-yellow) 34%,transparent)}
.rw-badge-bad {background:color-mix(in srgb,var(--rw-red) 16%,transparent);
               color:var(--rw-red);border-color:color-mix(in srgb,var(--rw-red) 34%,transparent)}
.rw-badge-mute{background:var(--rw-surface-2);color:var(--rw-text-2);border-color:var(--rw-border)}

/* ── السعر ── */
.rw-price-now{font-weight:800}
.rw-price-was{color:var(--rw-text-3);font-size:.85em;margin-inline-start:6px;font-weight:500}

/* ── الرسائل (بديل alert) ── */
#rw-toasts{position:fixed;inset-block-end:18px;inset-inline-start:18px;z-index:9000;
  display:flex;flex-direction:column;gap:8px;max-width:min(92vw,380px)}
.rw-toast{background:var(--rw-surface-2);color:var(--rw-text);border:1px solid var(--rw-border);
  border-inline-start:3px solid var(--rw-primary);border-radius:var(--rw-radius-sm);
  padding:12px 15px;font-size:14px;box-shadow:var(--rw-shadow);
  animation:rw-toast-in .22s ease-out;transition:opacity .24s,transform .24s}
.rw-toast-ok {border-inline-start-color:var(--rw-accent)}
.rw-toast-bad{border-inline-start-color:var(--rw-red)}
.rw-toast.out{opacity:0;transform:translateY(6px)}
@keyframes rw-toast-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* الشريطُ السفليُّ على الموبايل يحجب الرسائل — نرفعها فوقه (درس AUD-UX-007) */
@media (max-width:860px){ #rw-toasts{inset-block-end:calc(76px + 14px)} }

/* ── حقول النماذج ── */
.rw-field{display:block;margin-bottom:14px}
.rw-field > span{display:block;font-size:13.5px;color:var(--rw-text-2);margin-bottom:6px}
.rw-input,.rw-field input,.rw-field select,.rw-field textarea{
  width:100%;padding:11px 13px;border-radius:var(--rw-radius-sm);
  background:var(--rw-surface-2);border:1px solid var(--rw-border);
  color:var(--rw-text);font-family:inherit;font-size:14.5px}
.rw-input:focus-visible,.rw-field :is(input,select,textarea):focus-visible{
  outline:2px solid var(--rw-primary);outline-offset:1px;border-color:transparent}
.rw-field .rw-err{display:block;color:var(--rw-red);font-size:12.5px;margin-top:5px}

/* ── جدولٌ لا يفيض أفقيًّا (درس AUD-UX-007) ── */
.rw-scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* ============================================================
   محرّك القوائم  (#38)
   الجدولُ يتحوّل بطاقاتٍ على الموبايل — لا فيضٌ أفقيٌّ ولا جدولٌ
   خامٌّ يخرج عن الشاشة (درس تايرون F5 · AUD-UX-007).
   ============================================================ */
.rw-list{display:block}
.rw-list-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.rw-search{position:relative;flex:1;min-width:200px}
.rw-search .rw-input{padding-inline-start:38px}
.rw-search-i{position:absolute;inset-inline-start:12px;inset-block-start:50%;
  transform:translateY(-50%);opacity:.55;font-size:14px;pointer-events:none}
.rw-filter{width:auto;min-width:150px}
.rw-list[aria-busy=true] .rw-list-body{pointer-events:none}
.rw-list-body{transition:opacity .15s}

/* الجدول */
.rw-table{width:100%;border-collapse:collapse;font-size:14.5px}
.rw-table th,.rw-table td{padding:11px 12px;text-align:start;
  border-block-end:1px solid var(--rw-border);vertical-align:middle}
.rw-table thead th{font-size:13px;color:var(--rw-text-2);font-weight:700;white-space:nowrap}
.rw-table tbody tr:hover{background:var(--rw-surface-2)}
.rw-th-sort{cursor:pointer;user-select:none}
.rw-th-sort:hover,.rw-th-sort.on{color:var(--rw-text)}
.rw-th-sort:focus-visible{outline:2px solid var(--rw-primary);outline-offset:-2px}
.rw-caret{margin-inline-start:5px;font-size:11px;color:var(--rw-primary)}

/* المرقّم — العددُ ومعه وسيلةُ الوصول، لا العدد وحدَه */
.rw-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;
  flex-wrap:wrap;padding-block-start:14px;margin-block-start:4px;
  border-block-start:1px solid var(--rw-border)}
.rw-pager-count{font-size:13px;color:var(--rw-text-2)}
.rw-pager-btns{display:flex;align-items:center;gap:8px}
.rw-pager-at{font-size:13px;color:var(--rw-text-2);white-space:nowrap}
.rw-pager .rw-btn{padding:6px 14px;font-size:13px}
.rw-pager .rw-btn[disabled]{opacity:.4;cursor:default}

/* الموبايل: كلُّ صفٍّ بطاقةٌ بعناوينِ أعمدةٍ مضمَّنة */
@media (max-width:720px){
  .rw-table,.rw-table tbody,.rw-table tr,.rw-table td{display:block;width:100%}
  .rw-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .rw-table tr{background:var(--rw-surface-2);border:1px solid var(--rw-border);
    border-radius:var(--rw-radius-sm);padding:6px 12px;margin-block-end:10px}
  .rw-table td{border:none;padding:7px 0;display:flex;justify-content:space-between;
    align-items:center;gap:12px}
  .rw-table td::before{content:attr(data-label);font-size:12.5px;color:var(--rw-text-2);
    font-weight:600;flex-shrink:0}
  .rw-table td:empty{display:none}
  .rw-list-bar{flex-direction:column;align-items:stretch}
  .rw-filter{width:100%}
  .rw-pager{flex-direction:column;align-items:stretch;text-align:center}
  .rw-pager-btns{justify-content:space-between}
}

/* ============================================================
   النافذة الواحدة  (#41)
   ------------------------------------------------------------
   بنيتُها مبنيّةٌ على الأعطال الأربعة المقيسة في تايرون (AUD-UX-007):
     ١ أزرارُ الإرسال خلف الشريط السفلي  → تذييلٌ لاصقٌ داخل النافذة
     ٢ الصندوقُ الطويل يفيض               → الجسمُ وحدَه يُمرَّر، لا الصفحة
     ٣ جدولٌ داخليٌّ يفيض أفقيًّا           → .rw-scroll-x يُلَفُّ تلقائيًّا
     ٤ «الشباك مش بيقفل»                  → إغلاقٌ بالمرجع لا ببحثٍ في السمات
   وسياقُ تكديسٍ واحدٌ (rw-modal-back) فلا z-index متنافسة.
   ============================================================ */
.rw-modal-back{
  position:fixed;inset:0;z-index:9500;
  background:var(--rw-scrim);backdrop-filter:blur(3px);
  display:flex;align-items:center;justify-content:center;
  padding:20px;overflow:auto;
  animation:rw-fade .16s ease-out}
@keyframes rw-fade{from{opacity:0}to{opacity:1}}

.rw-modal{
  background:var(--rw-surface);border:1px solid var(--rw-border);
  border-radius:var(--rw-radius);box-shadow:var(--rw-shadow);
  width:100%;max-height:calc(100dvh - 40px);
  display:flex;flex-direction:column;overflow:hidden;
  animation:rw-pop .18s cubic-bezier(.2,.9,.3,1)}
@keyframes rw-pop{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}
.rw-modal-sm{max-width:420px}
.rw-modal-md{max-width:620px}
.rw-modal-lg{max-width:920px}

.rw-modal-head{display:flex;align-items:center;gap:12px;padding:16px 20px;
  border-block-end:1px solid var(--rw-border);flex:none}
.rw-modal-title{margin:0;font-size:17px;font-weight:800;flex:1}
.rw-modal-x{background:none;border:none;color:var(--rw-text-2);font-size:17px;
  cursor:pointer;padding:6px 9px;border-radius:8px;line-height:1}
.rw-modal-x:hover{background:var(--rw-surface-2);color:var(--rw-text)}
.rw-modal-x:focus-visible{outline:2px solid var(--rw-primary);outline-offset:1px}

/* الجسمُ وحدَه يُمرَّر — لا الصفحةُ خلفَه ولا النافذةُ كلُّها (عطل ٢) */
.rw-modal-body{padding:20px;overflow:auto;flex:1;min-height:0;overscroll-behavior:contain}
.rw-modal-msg{margin:0;font-size:15px;line-height:1.85}

/* التذييلُ لاصقٌ داخلَ النافذة — فلا يختفي خلفَ شريطٍ ولا يحتاج تمريرًا (عطل ١) */
.rw-modal-foot{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;
  padding:14px 20px;border-block-start:1px solid var(--rw-border);
  background:var(--rw-surface);flex:none}
.rw-btn.danger{background:var(--rw-red);border-color:var(--rw-red);color:#fff}

@media (prefers-reduced-motion:reduce){
  .rw-modal-back,.rw-modal{animation:none}
}

/* الموبايل: ورقةٌ من الأسفل — أقربُ للإبهام، وتحترم مساحةَ الجهاز الآمنة */
@media (max-width:620px){
  .rw-modal-back{padding:0;align-items:flex-end}
  .rw-modal{max-width:100%;max-height:92dvh;
    border-radius:var(--rw-radius) var(--rw-radius) 0 0;border-block-end:none;
    animation:rw-sheet .2s cubic-bezier(.2,.9,.3,1)}
  @keyframes rw-sheet{from{transform:translateY(100%)}to{transform:none}}
  .rw-modal-foot{
    padding-block-end:calc(14px + env(safe-area-inset-bottom,0px));
    flex-direction:column-reverse}
  .rw-modal-foot .rw-btn{width:100%;text-align:center}
  /* مقبضُ سحبٍ يوضّح أنها ورقةٌ تُغلَق */
  .rw-modal-head::before{content:'';position:absolute;inset-inline:0;inset-block-start:7px;
    width:38px;height:4px;margin:0 auto;border-radius:999px;background:var(--rw-border)}
  .rw-modal-head{position:relative;padding-block-start:22px}
}

/* ============================================================
   السجل المركّب  (#43)
   ============================================================ */
.rw-crumbs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-size:13px;color:var(--rw-text-2);margin-bottom:14px}
.rw-crumbs a{color:var(--rw-primary)}
.rw-crumbs .on{color:var(--rw-text);font-weight:600}

.rw-rec-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.rw-rec-id{flex:1;min-width:220px}
.rw-rec-id h1{margin:0;font-size:26px;font-weight:900;line-height:1.3}
.rw-rec-sub{margin:4px 0 0;color:var(--rw-text-2);font-size:14.5px}
.rw-rec-acts{display:flex;gap:9px;flex-wrap:wrap}
.rw-rec-h2{margin:0 0 14px;font-size:16px;font-weight:800}

.rw-rec-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:900px){.rw-rec-grid{grid-template-columns:1fr}}

/* الحقول */
.rw-fields{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:2px 18px}
.rw-f{padding:9px 0;border-block-end:1px solid var(--rw-border);min-width:0}
.rw-f dt{font-size:12.5px;color:var(--rw-text-2);margin-bottom:3px}
.rw-f dd{margin:0;font-size:14.5px;font-weight:600;overflow-wrap:anywhere}

/* خطُّ النشاط */
.rw-timeline{list-style:none;margin:0;padding:0;position:relative}
.rw-timeline::before{content:'';position:absolute;inset-block:6px;inset-inline-start:5px;
  width:2px;background:var(--rw-border)}
.rw-tl-item{position:relative;padding-inline-start:22px;padding-block:9px}
.rw-tl-dot{position:absolute;inset-inline-start:0;inset-block-start:15px;
  width:12px;height:12px;border-radius:50%;background:var(--rw-surface);
  border:2px solid var(--rw-primary)}
.rw-tl-item:first-child .rw-tl-dot{background:var(--rw-primary)}
.rw-tl-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.rw-tl-head strong{font-size:14.5px}
.rw-tl-when{font-size:12px;color:var(--rw-text-3);white-space:nowrap;margin-inline-start:auto}
.rw-tl-meta{font-size:13px;color:var(--rw-text-2);margin-top:2px}

/* ============================================================
   طابور العمل  (#44)
   ============================================================ */
/* سمةُ `hidden` في HTML تُخفي بـ`display:none` من ورقةِ المتصفّح — وأيُّ
   `display` نكتبه **يتغلّب عليها**. فالشريطُ كان يظهر وهو `hidden` («محدّد 0»
   فوق طابورٍ فارغ). القاعدةُ عامّة: كلُّ ما يُخفى بـ`hidden` ويُعطى `display`
   يحتاج هذا السطر. */
[hidden]{display:none!important}

.rw-bulkbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  background:var(--rw-surface-2);border:1px solid var(--rw-primary);
  border-radius:var(--rw-radius-sm);padding:10px 14px;margin-bottom:12px;
  animation:rw-bulk-in .16s ease-out}
@keyframes rw-bulk-in{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.rw-bulkbar{animation:none}}
.rw-bulk-count{background:var(--rw-primary);color:#fff;font-weight:800;
  min-width:26px;height:26px;border-radius:999px;display:grid;place-items:center;
  font-size:13px;padding:0 7px}
.rw-bulk-lbl{font-size:13.5px;color:var(--rw-text-2)}
.rw-bulk-acts{display:flex;gap:8px;flex-wrap:wrap;margin-inline-start:auto}
.rw-bulk-acts .rw-btn{padding:6px 14px;font-size:13px}

/* التحديد */
.rw-pick,[data-rw-pick-all]{width:17px;height:17px;accent-color:var(--rw-primary);cursor:pointer}
.rw-table td:has(.rw-pick){width:1%}

/* عمرُ الطلب — لونٌ يحوّل قائمةً إلى أولويات */
.rw-age{font-size:12.5px;font-weight:600;white-space:nowrap}
.rw-age-mute{color:var(--rw-text-3)}
.rw-age-wait{color:var(--rw-yellow)}
.rw-age-bad {color:var(--rw-red)}

@media (max-width:720px){
  .rw-bulkbar{position:sticky;inset-block-start:8px;z-index:40}
  .rw-bulk-acts{width:100%;margin-inline-start:0}
  .rw-bulk-acts .rw-btn{flex:1}
}

/* ============================================================
   البحث العام  (#45)
   ============================================================ */
.rw-search-global{position:relative;flex:1;max-width:380px;min-width:150px}
.rw-search-global .rw-input{padding-inline:40px 32px;height:38px;font-size:14px}
.rw-search-global .rw-search-i{position:absolute;inset-inline-start:12px;inset-block-start:50%;
  transform:translateY(-50%);opacity:.55;font-size:14px;pointer-events:none}
.rw-search-kbd{position:absolute;inset-inline-end:9px;inset-block-start:50%;transform:translateY(-50%);
  font:600 11px/1 var(--rw-font);color:var(--rw-text-3);background:var(--rw-surface);
  border:1px solid var(--rw-border);border-radius:5px;padding:3px 6px;pointer-events:none}
.rw-search-global .rw-input:focus + .rw-search-kbd{opacity:0}

.rw-search-panel{position:absolute;inset-inline:0;inset-block-start:calc(100% + 7px);z-index:8000;
  background:var(--rw-surface);border:1px solid var(--rw-border);border-radius:var(--rw-radius);
  box-shadow:var(--rw-shadow);max-height:min(60vh,460px);overflow:auto;overscroll-behavior:contain}
.rw-sg{border-block-end:1px solid var(--rw-border)}
.rw-sg:last-child{border-block-end:none}
.rw-sg-h{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:9px 14px;font-size:12.5px;font-weight:700;color:var(--rw-text-2);
  background:var(--rw-surface-2);position:sticky;inset-block-start:0}
.rw-sg-n{background:var(--rw-border);border-radius:999px;padding:1px 8px;font-size:11.5px}
.rw-sr{display:flex;align-items:baseline;gap:10px;padding:10px 14px;cursor:pointer}
.rw-sr:hover,.rw-sr.on{background:var(--rw-surface-2)}
.rw-sr.on{outline:2px solid var(--rw-primary);outline-offset:-2px}
.rw-sr-t{font-weight:600;font-size:14px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rw-sr-m{font-size:12.5px;color:var(--rw-text-3);white-space:nowrap}
.rw-sr-more{padding:7px 14px;font-size:12.5px;color:var(--rw-text-3)}
div.rw-sr{cursor:default;opacity:.75}

@media (max-width:860px){
  .rw-search-global{order:9;max-width:none;flex-basis:100%}
  .rw-search-kbd{display:none}
}

/* ══════════════════ الخبر (نجاحٌ أو إفادة) ══════════════════
   لا لونَ مثبَّتًا: كلُّ نغمةٍ مشتقّةٌ من رمزِ الهوية بـ color-mix، فتتبع
   الوضعَ النهاريَّ والليليَّ بلا قاعدةٍ ثانية. */
.rw-note{display:flex;align-items:flex-start;gap:9px;padding:11px 14px;
  border-radius:var(--rw-radius-sm);font-size:14px;line-height:1.6;margin-block-end:14px;
  border:1px solid var(--rw-border)}
.rw-note-i{flex:none;display:inline-flex;margin-block-start:1px}
.rw-note-ok  {background:color-mix(in srgb,var(--rw-accent) 12%,var(--rw-surface));
  border-color:color-mix(in srgb,var(--rw-accent) 34%,var(--rw-border));color:var(--rw-text)}
.rw-note-info{background:var(--rw-surface-2);color:var(--rw-text)}
.rw-note-warn{background:color-mix(in srgb,var(--rw-yellow) 13%,var(--rw-surface));
  border-color:color-mix(in srgb,var(--rw-yellow) 38%,var(--rw-border));color:var(--rw-text)}

/* ══════════════════ الفصل الافتراضيّ ══════════════════ */
.rw-zoom .rw-btn{margin-block-start:4px}
.rw-zoom-note{font-size:12.5px;margin-block-start:10px;max-width:56ch}
.rw-zoom-on{display:flex;align-items:center;flex-wrap:wrap;gap:10px;
  padding:12px 14px;background:var(--rw-surface-2);border-radius:var(--rw-radius-sm);
  margin-block-end:14px}
/* الحدودُ تُقرَأ ولا تُخيف: صندوقٌ محايدٌ بحرفٍ أصفرَ واحدٍ على الحافّة */
.rw-zoom-limits{border-inline-start:3px solid var(--rw-yellow);
  padding:2px 14px;margin-block-end:16px}
.rw-zoom-limits p{font-size:13.5px;margin:0 0 8px}
.rw-zoom-limits ul{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:7px}
.rw-zoom-limits li{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--rw-text-2)}
.rw-zoom-limits li svg{flex:none;color:var(--rw-yellow)}

/* ══════════════════ جدولُ المدرّس (Z-2) ══════════════════ */
.rw-sched-head{display:flex;align-items:center;justify-content:space-between;
  gap:12px;flex-wrap:wrap;margin-block-end:14px}
.rw-sched-head .rw-rec-h2{margin:0}
.rw-btn-sm{padding:5px 11px;font-size:12.5px}
.rw-cell-actions{white-space:nowrap}
.rw-cell-actions .rw-btn{margin-inline-end:5px}
.rw-cell-actions .rw-btn:last-child{margin-inline-end:0}

/* ══════════════════ التسجيلات (Z-4) ══════════════════ */

/**
 * قائمةٌ لا جدول: كلُّ سطرٍ **قرارٌ يُتَّخذ**، لا صفٌّ يُقرَأ. والجدولُ يدفع
 * الأزرارَ إلى عمودٍ ضيّقٍ في آخر السطر، فتصير ثلاثةَ أزرارٍ متلاصقةً يُضغَط
 * أحدُها بالخطأ — وأحدُها حذفٌ لا رجعةَ فيه.
 */
.rw-recs{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.rw-rec-item{display:flex;align-items:center;flex-wrap:wrap;gap:12px;
  padding:14px;background:var(--rw-surface-2);border-radius:var(--rw-radius-sm)}
.rw-rec-meta{flex:1 1 15rem;min-width:0;display:grid;gap:3px}
.rw-rec-meta strong{font-size:14.5px}
.rw-rec-meta .rw-cell-dim{font-size:12.5px}
/* الحذفُ بلونه — والزرُّ الذي لا رجعةَ فيه لا يشبه جارَيه */
.rw-btn.rw-danger{color:var(--rw-red)}
.rw-btn.rw-danger:hover{background:color-mix(in srgb,var(--rw-red) 12%,transparent);
  border-color:color-mix(in srgb,var(--rw-red) 40%,transparent)}

/* ══════════════════ الحصص القادمة (Z-3) ══════════════════ */

.rw-sess{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.rw-sess-i{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding:12px 14px;background:var(--rw-surface-2);border-radius:var(--rw-radius-sm)}
/* التاريخُ عمودٌ ثابتُ العرض — فتصطفّ المواعيدُ رأسيًّا وتُقرَأ بلمحة */
.rw-sess-when{flex:none;min-width:7.5rem;display:grid;gap:2px;line-height:1.35}
.rw-sess-when strong{font-size:13.5px}
.rw-sess-when span{font-size:12.5px;color:var(--rw-text-2)}
.rw-sess-body{flex:1 1 10rem;min-width:0;display:flex;align-items:center;
  gap:9px;flex-wrap:wrap}
.rw-sess-t{font-weight:600;font-size:14px}
.rw-cell-sub{font-size:12.5px;color:var(--rw-text-2)}
.rw-hint-sm{font-size:12.5px;margin-block-start:12px}

/* ══════════════════ بلا حساب ══════════════════ */

/**
 * تحذيرٌ **مطويٌّ لا صندوقٌ أحمرُ دائم**.
 *
 * فالمدرّس يفتح جدولَه كلَّ يوم، وصندوقٌ يصرخ في كلِّ مرّةٍ يصير جزءًا من
 * الخلفيّة بعد أسبوع. وسطرٌ واحدٌ يُفتَح عند الحاجة يبقى مقروءًا.
 */
.rw-unlinked{margin-block-end:16px;border-inline-start:3px solid var(--rw-yellow);
  padding-inline-start:12px}
.rw-unlinked>summary{cursor:pointer;display:flex;align-items:center;gap:8px;
  font-size:13.5px;color:var(--rw-text-2);padding:4px 0}
.rw-unlinked>summary::marker{content:""}
.rw-unlinked>summary::-webkit-details-marker{display:none}
.rw-unlinked>summary svg{flex:none;color:var(--rw-yellow)}
.rw-unlinked>summary:hover{color:var(--rw-text)}
.rw-unlinked-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:7px}
.rw-unlinked-list li{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
  font-size:13px}
.rw-unlinked-list .rw-cell-dim{font-size:12.5px}

/* ══════════════════ دفترُ المدرّس (ID-3) ══════════════════ */

/**
 * عنوانٌ فوق كلِّ مجموعةٍ من الأرقام — **لأنّ مكانَ المال جزءٌ من معناه**.
 *
 * وثلاثُ بطاقاتٍ بلا عنوانٍ تُقرَأ كأنّها تُجمَع. وهنا لا تُجمَع: واحدةٌ عندنا
 * تُسحَب، وأخرى عند الطلاب تُحصَّل يدًا بيد.
 */
.rw-books-h{display:flex;align-items:center;gap:9px;font-size:16px;font-weight:700;
  margin:26px 0 4px}
.rw-books-h:first-child{margin-block-start:0}
.rw-books-h svg{flex:none;color:var(--rw-text-2)}
.rw-books-note{font-size:13px;color:var(--rw-text-2);margin:0 0 12px;max-width:70ch;
  line-height:1.65}
/* دَينٌ لم يُحصَّل: تنبيهٌ لا خطأ — حرفٌ أصفرُ على الحافّة لا بطاقةٌ حمراء */
.rw-stat-warn{border-inline-start:3px solid var(--rw-yellow)}
.rw-stat .l{display:flex;align-items:center;gap:7px}
.rw-stat .l svg{flex:none;opacity:.75}

/* ══════════════════ بلاغُ المشكلة (م-٩) ══════════════════ */

/**
 * باهتٌ بجوار «خروج» — **مَخرجٌ عند الحاجة لا دعوةٌ للشكوى**.
 * فزرٌّ بارزٌ يقول «توقّع مشكلات»، وسطرٌ هادئٌ يقول «إن احتجتَ فهنا».
 */
.rw-report-link{font-size:12.5px;opacity:.62}
.rw-report-link:hover,.rw-report-link:focus-visible{opacity:1}
.rw-report-link svg{color:var(--rw-yellow)}

/* ══════════════════ المجموعات (م-١٠) ══════════════════ */

/**
 * السعةُ المكتملة **تُلوَّن ولا تُمنَع**.
 *
 * فالمنعُ في الخادم (`EDU_Groups::add_member`)، وما هنا إشارةٌ يقرؤها المدرّس
 * وهو يخطّط: «هذه امتلأت، افتح ثانية». ولونٌ في الجدول أسرعُ من قراءة رقمين.
 */
.rw-cap-full{color:var(--rw-yellow);font-weight:600}

/* الموادُّ رقائقُ لا صفوف — قائمةٌ قصيرةٌ تُمسَح بالعين لا تُقرَأ سطرًا سطرًا */
.rw-chips{display:flex;flex-wrap:wrap;gap:8px}
.rw-chip{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:13.5px;
  padding:7px 14px;border-radius:999px;cursor:pointer;
  background:var(--rw-surface-2);color:var(--rw-text);
  border:1px solid var(--rw-border)}
.rw-chip:hover,.rw-chip:focus-visible{border-color:var(--rw-primary);outline:none}
.rw-chip .rw-cell-dim{font-size:12px}

/* أعضاءُ المجموعة داخل النافذة */
.rw-members{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:6px;
  max-height:42vh;overflow-y:auto}
.rw-members li{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:9px 12px;background:var(--rw-surface-2);border-radius:var(--rw-radius-sm);
  font-size:14px}
.rw-member-add{display:flex;gap:9px;align-items:center;flex-wrap:wrap;
  padding-block-start:14px;border-block-start:1px solid var(--rw-border)}
.rw-member-add select{flex:1 1 12rem;min-width:0}

/* ══════════════════ كشفُ بعد الحصّة (م-١١) ══════════════════ */

.rw-log-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin:20px 0 10px;font-size:13px;font-weight:600;color:var(--rw-text-2);
  letter-spacing:.04em}
.rw-log-list{display:grid;gap:8px;max-height:52vh;overflow-y:auto;padding-inline-end:4px}

/**
 * سطرٌ واحدٌ لكلِّ طالب: الاسمُ ثم الأزرارُ ثم النجماتُ ثم حقلان.
 * وينهار عموديًّا على الشاشات الضيّقة — فالمدرّس يسجّل من هاتفه بين حصّتين.
 */
.rw-log-row{display:grid;gap:8px;align-items:center;padding:11px 13px;
  background:var(--rw-surface-2);border-radius:var(--rw-radius-sm);
  grid-template-columns:minmax(7rem,1.1fr) auto auto minmax(6rem,1fr) minmax(6rem,1fr)}
@media (max-width:820px){.rw-log-row{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.rw-log-row{grid-template-columns:1fr}}

.rw-log-who{display:grid;gap:2px;min-width:0}
.rw-log-who strong{font-size:14px}
/* ما حسبه زوم يُعلَّم — ولو بدا كاليدويِّ لصدّق المدرّسُ حضورًا لم يقله أحد */
.rw-log-zoom{font-size:11px;color:var(--rw-green);white-space:nowrap}

.rw-log-states{display:inline-flex;border:1px solid var(--rw-border);border-radius:8px;
  overflow:hidden}
.rw-log-st{font:inherit;font-size:12.5px;padding:7px 12px;cursor:pointer;
  background:var(--rw-surface);color:var(--rw-text-2);border:0;
  border-inline-end:1px solid var(--rw-border);min-height:34px}
.rw-log-st:last-child{border-inline-end:0}
.rw-log-st:hover{background:var(--rw-surface-2)}
.rw-log-st.on{background:var(--rw-primary);color:#fff;font-weight:600}
.rw-log-st:focus-visible{outline:2px solid var(--rw-primary);outline-offset:-2px}

.rw-log-stars{display:inline-flex;gap:1px}
.rw-log-star{font:inherit;font-size:17px;line-height:1;padding:4px 2px;cursor:pointer;
  background:none;border:0;color:var(--rw-border)}
.rw-log-star.on{color:var(--rw-yellow)}
.rw-log-star:focus-visible{outline:2px solid var(--rw-primary);border-radius:3px}

.rw-log-weak,.rw-log-note{font:inherit;font-size:13px;padding:7px 10px;min-width:0;
  border:1px solid var(--rw-border);border-radius:var(--rw-radius-sm);
  background:var(--rw-surface);color:var(--rw-text)}
.rw-log-weak:focus,.rw-log-note:focus{outline:none;border-color:var(--rw-primary)}

/* ============================================================
   أهدافُ اللمس والنصُّ الأدنى — على الأجهزة اللمسيّة وحدَها
   ============================================================

   قِيس على ٨٣٤ و٤٣٠ و٣٦٠: عناصرُ القائمة ٣٨px ارتفاعًا، والشعارُ ٣٠.
   والإصبعُ لا يصيب ٣٨ كما تصيب الفأرة — والخطأُ هنا يفتح قائمةً لم تُقصَد
   أو يخرج من واحدةٍ قُصدت.

   و`pointer:coarse` لا عرضُ الشاشة: الحاسوبُ الضيّقُ يبقى بفأرته، ولا
   نضخّم له قائمةً لا يخطئها. */
@media (pointer: coarse) {
  .rw-menu-item{min-height:44px}
  .rw-brand{min-height:44px}
  .rw-menu-head{font-size:12px}
}

/* الشريطُ السفليُّ لا يُرى إلّا على اللمس، فمقاسُه يُقاس بالإصبع والعين
   القريبة: ١١ب على شاشةٍ في اليد أصغرُ من ١١ب على مكتب. */
@media (pointer: coarse) {
  .rw-nav-bottom .rw-navi{font-size:12px}
  /* روابطُ الفوتر صارت كتلًا بارتفاع ٢٤ — قِيست. والكتلةُ هدفُ لمسٍ لا سطرُ نصّ */
  .rw-foot-links-grid a{min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center}
}

/**
 * الشريطُ العلويُّ على الشاشات الضيّقة جدًّا.
 *
 * `.rw-brand` و`.rw-actions` كلاهما `flex:none` — فلا أحدَ يتنازل. وفي
 * العربيّة «دخول» تسع، وفي الإنجليزيّة «Log in» أعرض: قِيس فيضٌ ٤٧px على
 * ٣٦٠ في الإنجليزيّة وحدَها. وعطلٌ يظهر في لغةٍ دون أخرى لا يُرى إن فُحصت
 * لغةٌ واحدة.
 *
 * والمتنازلُ هو الاسم: يُقصّ بنقاطٍ ولا يُخفى. فالشعارُ إلى جانبه يحمل
 * الهويّةَ، والأزرارُ أفعالٌ لا يجوز قصُّها.
 */
@media (max-width:430px){
  .rw-bar{gap:8px;padding:10px 12px}
  .rw-brand{flex:0 1 auto;min-width:0}
  .rw-brand span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .rw-actions .rw-btn{padding-inline:13px}
}

/* روابطُ صفحة الدخول: الاستعادةُ والملاحظة */
.rw-login-alt{text-align:center;margin:14px 0 0}
.rw-login-alt a{color:var(--rw-primary);font-size:14px;text-decoration:none}
.rw-login-alt a:hover{text-decoration:underline}
.rw-login-note{text-align:center;margin:16px 0 0;font-size:12.5px;
  color:var(--rw-text-3);line-height:1.7}

/* زرُّ المنصّة على اللمس: قِيس ٣٩px ارتفاعًا في صفحة الكورسات */
@media (pointer: coarse) {
  .rw-btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
}
.rw-guest-err{background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.4);
  border-radius:10px;padding:11px 14px;margin:0 0 14px;font-size:14px;color:var(--rw-text)}
.rw-guest-err a{color:var(--rw-primary)}
