/* حضور الحصص: جدول الفصول × الحصص بأوقاتها */
.pp-grid th, .pp-grid td { text-align: center; }
.pp-grid th:first-child, .pp-grid td:first-child { text-align: start; }
.pp-time { font-size: 11px; font-weight: 500; color: var(--muted); margin-top: 2px; }
.pp-ok { color: var(--green); font-weight: 800; }
.pp-no { color: var(--faint); }
.pp-sub { font-size: 11px; color: var(--muted); }
button.pp-ok, button.st-pill { border: 0; background: none; cursor: pointer; font: inherit; } button.st-pill.ok { background: color-mix(in srgb, var(--green) 12%, transparent); border: 1px solid color-mix(in srgb, var(--green) 30%, transparent); } button.pp-open:hover { text-decoration: underline; } button.pp-ok { font-size: 15px; font-weight: 800; color: var(--green); padding: 0 6px; }
.pp-by { font-size: 11px; font-weight: 700; color: var(--ink); white-space: nowrap; }

/* ترتيب القائمة الجانبية بالسحب: مكان الإفلات، و«لوحة القيادة» ثابتة */
.nav a.nav-drop-before { box-shadow: inset 0 3px 0 var(--ink); }
.nav a.nav-drop-after { box-shadow: inset 0 -3px 0 var(--ink); }
/* سحب الأقسام: خط فوق القسم أو تحته، وعنوان القسم يتلوّن حين تُفلت عليه صفحة */
.nav-sec.nav-sec-before { box-shadow: inset 0 3px 0 var(--ink); }
.nav-sec.nav-sec-after { box-shadow: inset 0 -3px 0 var(--ink); }
.nav-sec.dragging { opacity: .5; }
.nav-group.nav-drop-into { background: var(--ink-soft); box-shadow: 0 0 0 2px var(--ink) inset; }
body.dp-dragging-sec { cursor: grabbing; user-select: none; }
.nav-sec > .nav-group { cursor: grab; }
body.dp-dragging-page .nav a[data-id]:not([data-id="dashboard"]) { cursor: grabbing; }
.nav a[data-id]:not([data-id="dashboard"]) { cursor: grab; }
.nav a[data-id="dashboard"] { cursor: pointer; }
/* «التحديثات» ثابتة آخر القائمة */
.nav-solo-sec[data-navg="التحديثات"] { margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--border); }
.nav a[data-id="news"] { cursor: pointer; }
body[data-page="students"] #view > .page-head:first-child { margin-top: -18px; }

/* بيانات الطلاب: قائمة «خيارات» لكل طالب */
.row-menu { position: fixed; z-index: 9990; min-width: 210px; padding: 6px; border-radius: 12px; background: var(--surface); border: 1px solid var(--border); box-shadow: 0 12px 32px rgba(15, 23, 42, .18); display: flex; flex-direction: column; }
.row-menu button { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 0; border-radius: 8px; background: transparent; color: var(--text); font: inherit; font-size: 13.5px; text-align: start; cursor: pointer; }
.row-menu button:hover { background: var(--ink-soft); color: var(--ink); }
.row-menu button span { width: 20px; text-align: center; }
.t-stu .opt-btn { white-space: nowrap; }
.t-stu td .person .small { font-size: 11.5px; }
/* الطباعة وملفات PDF: لا يُختصر نص الخلايا ولا يُمنع التفافه */
@media print { .t td { white-space: normal !important; max-width: none !important; overflow: visible !important; text-overflow: clip !important; } }
/* طباعة الصفحة: تُخفى الأزرار التي نُقلت فوق الجداول وبجانب التبويبات، وشريط التبويبات وزر الملاحظات */
@media print { .tbl-bar, .tab-line .actions, .tab-line .seg-tabs, .seg-tabs, .fb-fab, .fb-toast, .acts, .opt-btn { display: none !important; } }

/* إزالة خط الهامش الأحمر (على طريقة الدفتر) من كل الكشوف والملفات واللوحات: الكشوف، والقائمة الجانبية، وعمود الأرقام في سجل التحضير */
.sheet::before { display: none !important; }
.sidebar { border-left-color: var(--border) !important; }
.reg-row .no { border-left-color: var(--border) !important; }
/* الطباعة: تُطبع الألوان كما تظهر (الرسوم البيانية والخريطة الحرارية والشارات)، ويتكرر رأس الجدول أعلى كل صفحة، ولا ينقسم صف بين صفحتين */
@media print {
  * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  thead { display: table-header-group; }
  tr { break-inside: avoid; }
  .card { box-shadow: none !important; }
  .heat-t td:first-child { white-space: nowrap; }
}
/* سُلَّم تصعيد إجراءات الغياب والتأخر: المستويات تسلسل فعلي، فتُعرض كمسار واحد تتصل عقده بخط.
   اللون على العقد وحدها (من أصفر قلم التظليل إلى أحمر التصحيح)، والباقي ورق أبيض هادئ، والكتابة موسّطة تحت كل عقدة. */
.lvl-track { display: grid; grid-template-columns: repeat(var(--n), minmax(0, 1fr)); background: var(--surface); border: 1px solid var(--border); border-radius: 18px; padding: 18px 8px 14px; margin-bottom: 16px; box-shadow: var(--shadow); }
.lvl-step { position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; padding: 0 10px 10px; background: none; border: 0; border-radius: 14px; cursor: pointer; color: var(--text); font: inherit; }
.lvl-step::after { content: ""; position: absolute; top: 22px; inset-inline-start: calc(50% + 26px); width: calc(100% - 52px); height: 3px; border-radius: 3px; background: linear-gradient(to left, var(--lvc), var(--lvn, var(--lvc))); opacity: .35; }
[dir="ltr"] .lvl-step::after { background: linear-gradient(to right, var(--lvc), var(--lvn, var(--lvc))); }
.lvl-step:last-child::after { display: none; }
.lvl-node { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 50%; border: 3px solid var(--lvc); background: var(--surface); color: var(--lvc); font-weight: 800; font-size: 15px; transition: background .15s, color .15s, transform .15s; }
.lvl-step:hover .lvl-node { transform: scale(1.06); }
.lvl-unit { font-size: 11.5px; font-weight: 700; color: var(--muted); margin-top: -2px; }
.lvl-count { margin-top: 4px; line-height: 1; }
.lvl-count b { font-size: 30px; font-weight: 800; }
.lvl-count small { font-size: 12px; color: var(--muted); font-weight: 600; margin-inline-start: 4px; }
.lvl-act { font-size: 12.5px; line-height: 1.5; color: var(--muted); white-space: pre-line; max-width: 22ch; }
.lvl-pend { font-size: 11px; font-weight: 700; color: var(--red); background: var(--red-soft); border-radius: 999px; padding: 2px 10px; }
.lvl-step.zero .lvl-count b { color: var(--faint); }
.lvl-step.on { background: color-mix(in srgb, var(--lvc) 9%, transparent); }
.lvl-step.on .lvl-node { background: var(--lvc); color: #fff; box-shadow: 0 0 0 5px color-mix(in srgb, var(--lvc) 22%, transparent); }
.lvl-step.on .lvl-act { color: var(--text); }
.lvl-step:focus-visible { outline: 3px solid color-mix(in srgb, var(--ink) 55%, transparent); outline-offset: 2px; }
/* الجوال: السلم عمودي، والخط ينزل بين العقد */
@media (max-width: 720px) {
  .lvl-track { grid-template-columns: 1fr; padding: 12px; gap: 4px; }
  .lvl-step { display: grid; grid-template-columns: 46px 1fr auto; grid-template-areas: "node act count" "node pend count"; align-items: center; text-align: start; gap: 2px 12px; padding: 8px; }
  .lvl-node { grid-area: node; } .lvl-unit { display: none; } .lvl-act { grid-area: act; max-width: none; } .lvl-pend { grid-area: pend; justify-self: start; } .lvl-count { grid-area: count; margin: 0; }
  .lvl-step::after { top: calc(50% + 26px); inset-inline-start: 30px; width: 3px; height: calc(100% - 44px); }
}
@media (prefers-reduced-motion: reduce) { .lvl-node { transition: none; } .lvl-step:hover .lvl-node { transform: none; } }
/* الوضع الليلي: ألوان العقد أفتح قليلًا لتظهر على خلفية السبورة */
[data-theme="dark"] .lvl-node { border-color: color-mix(in srgb, var(--lvc) 70%, #fff); color: color-mix(in srgb, var(--lvc) 55%, #fff); }
[data-theme="dark"] .lvl-step.on .lvl-node { color: #fff; }
/* درجات السلم: خط عريض، وصفوف متساوية في كل الدرجات حتى تتحاذى الأعداد والإجراءات وشارات «لم يُنفَّذ» */
.lvl-step { display: grid; grid-template-rows: 46px auto auto 3em auto; justify-items: center; align-content: start; }
.lvl-unit { font-weight: 800; color: var(--text); opacity: .75; }
.lvl-count b { font-weight: 900; }
.lvl-count small { font-weight: 800; color: var(--text); opacity: .75; }
.lvl-act { font-weight: 800; color: var(--text); display: flex; align-items: center; justify-content: center; height: 3em; overflow: hidden; }
.lvl-pend { font-weight: 800; }
.lvl-pend:empty { visibility: hidden; }
@media (max-width: 720px) { .lvl-step { display: grid; grid-template-rows: none; justify-items: stretch; } .lvl-act { justify-content: flex-start; height: auto; } }
/* أزرار الصفحة تحت عنوان القسم مباشرة (السلوك والتحفيز)، بدل نقلها فوق الجدول */
#view .head-acts { display: flex; gap: 8px; flex-wrap: wrap; margin: -6px 0 18px; }
#view .head-acts .btn.red, #view .head-acts .btn.green { background: var(--surface); border-color: var(--border); }
#view .head-acts .btn.red { color: var(--red); } #view .head-acts .btn.green { color: var(--green); }
#view .head-acts .btn.red:hover, #view .head-acts .btn.green:hover { border-color: currentColor; }
@media print { #view .head-acts { display: none !important; } }
/* خلية «المستوى والإجراء» في جدول الإجراءات: النص يلتف داخل الخلية بدل أن يتداخل مع عمود «التنفيذ» */
.t td:has(.lvl-cell) { white-space: normal; max-width: 230px; min-width: 170px; }
.lvl-cell > span:last-child { white-space: normal; min-width: 0; line-height: 1.45; }
/* الخلية التي فيها شارة حالة تتسع لها كاملة، فلا تُقص الشارة عند حافة الخلية */
.t td:has(> .badge, > .st-pill) { max-width: none; }
/* أزرار الأعذار (تسجيل عذر، رفض الكل، قبول الكل) في يمين السطر فوق الجدول، كما رسمها المدير */
.tbl-bar:has(> .acts-start) { justify-content: flex-start; }
/* الأعذار: ملاحظة ولي الأمر في سطر واحد كاملة بلا اختصار بنقاط */
.t td.x-note { max-width: 260px; }
/* جدول الأعذار يتسع في عرض الصفحة بلا تمرير جانبي */
.t-ex th, .t-ex td { padding-inline: 8px; }
/* جداول زيارات أولياء الأمور والرسائل وأجهزة البصمة والمعلمين والملاحظات الصحية وساعات التطوع والصلاحيات: النص الطويل ينزل لسطر ثانٍ فيتسع الجدول في عرض الصفحة بلا تمرير جانبي ولا إخفاء */
.t-fit td { white-space: normal; overflow: visible; text-overflow: clip; line-height: 1.45; }
.t-fit td .badge, .t-fit td .btn, .t-fit td .st-pill { white-space: nowrap; }
/* وعناوين أعمدتها تنزل لسطر ثانٍ عند الحاجة (مثل أسماء الأدوار الطويلة في جدول الصلاحيات) */
.t-fit th { white-space: normal; line-height: 1.35; }
/* جدول الإجراءات: «المستوى والإجراء» موسّط داخل خليته */
.lvl-cell { justify-content: center; text-align: center; }
/* المؤشر الذكي: الأسباب تظهر كاملة بلا اختصار، وتنزل لسطر ثانٍ عند الحاجة */
.t td.r-why { white-space: normal; overflow: visible; text-overflow: clip; max-width: 300px; min-width: 210px; line-height: 1.5; }
/* تلميح «اضغط للإخفاء أو الإظهار» في بطاقة تعريف المؤشر الذكي: أحمر وبخط كبير */
.def-hint { color: var(--red); font-size: 16px; font-weight: 800; }

/* رأس كل صفحة أعلى ما يمكن تحت الشريط العلوي (في كل اللوحات): مسافة علوية صغيرة موحدة، وتُلغى الإزاحات السالبة الخاصة السابقة */
.content, body[data-page="dashboard"] .content { padding-top: 10px; }
#view > .page-head:first-child, body[data-page="students"] #view > .page-head:first-child { margin-top: 0 !important; }
#view > .seg-tabs:first-child { margin-top: 0 !important; }
#view > .tab-line { margin-top: 0 !important; }
@media (max-width: 960px) { .content { padding-top: 8px; } }
@media (max-width: 960px) { body[data-page="dashboard"] .content { padding-top: 8px; } }
/* رأس الصفحة الذي بقي فارغًا بعد نقل أزراره وعنوانه لا يأخذ مسافة (كان يباعد بين الوصف وما تحته) */
.page-head.acts-only:not(:has(*)) { display: none; }
/* كل جداول المشروع: النص يظهر كاملًا بلا اختصار بنقاط، وينزل لسطر ثانٍ داخل خليته عند الحاجة (ملاحظة المدير 16 أكتوبر). الشارات والأزرار تبقى في سطر واحد */
.t td { white-space: normal; overflow: visible; text-overflow: clip; }
.t td .person { white-space: normal; }
.t td .badge, .t td .btn, .t td .st-pill, .t td .chip { white-space: nowrap; }
/* سجلات الزيارات والملاحظات الصحية والتطوع: كل خلية في سطر واحد، والنص الطويل (ما تم، التفاصيل) وحده ينزل لسطر ثانٍ عند الحاجة.
   أزرار التعديل والحذف أيقونات بتلميح لتوفير المساحة */
.t-book th, .t-book td { white-space: nowrap; padding-inline: 7px; }
.t-book td.wrap { white-space: normal; }
/* الأرقام والتواريخ والأوقات في الجداول لا تنزل لسطر ثانٍ أبدًا */
.t td.num { white-space: nowrap; }
/* اسم الشخص وأول عمود (الطالب، القسم...) في سطر واحد دائمًا */
.t td .person, .t td:first-child { white-space: nowrap; }
/* الصورة الرمزية داخل خلية الجدول بجانب الاسم في السطر نفسه (كانت تنزل فوق الاسم في جدول المستخدمين) */
.t td > .avatar { display: inline-grid; vertical-align: middle; margin-inline-end: 8px; }
/* حقل التاريخ الفارغ: متصفح كروم يعرض «يوم/شهر/سنة» مقلوب الحروف في الصفحات العربية، فيُخفى حتى يضغط المستخدم على الحقل */
input[type="date"].dt-empty:not(:focus)::-webkit-datetime-edit { color: transparent; }
/* فلاتر الأرشيف في سطر واحد منظم: البحث أعرض، ثم النوع والحالة والتاريخان */
.flt-grid { display: grid; grid-template-columns: minmax(150px, 1.4fr) minmax(90px, .8fr) minmax(90px, .8fr) minmax(150px, 1.3fr) minmax(150px, 1.3fr); gap: 10px 12px; align-items: end; }
.flt-grid.one { grid-template-columns: 1fr; }
.flt-grid .field { margin: 0; min-width: 0; }
#view .flt-grid .input { width: 100%; min-width: 0; max-width: none; }
#view .flt-grid label.field { min-width: 0; }
@media (max-width: 760px) { .flt-grid { grid-template-columns: 1fr 1fr; } .flt-grid > .field:first-child { grid-column: 1 / -1; } }
/* الرسائل: قائمة «أولياء الأمور في التطبيق» لكل الفصول داخل صندوق قصير يُمرَّر بدل أن تمدّ البطاقة بطول الصفحة */
.reg-list { max-height: 220px; overflow-y: auto; overflow-x: hidden; padding-inline-end: 4px; }
#view .reg-list .list-item { display: grid; grid-template-columns: minmax(0, 1fr) 46px; align-items: center; gap: 10px; width: 100%; margin: 0; box-sizing: border-box; }
.reg-list .list-item .grow { min-width: 0; }
.reg-list .list-item { padding: 6px 2px; gap: 10px; }
.reg-list .list-item .t1 { font-size: 13px; }
#view .grid.g3:has(.reg-list) { align-items: start; }
/* جدول الإجراءات: خمس أيقونات (عرض، رسالة، استدعاء، تعهد، تحويل للموجه) أضيق قليلًا حتى يتسع الجدول في عرض الصفحة */
#view .t-proc .acts > .btn.sm { width: 26px; padding-inline: 0; }
/* حضور الطلاب: تنبيه بسيط فوق السجل في يوم بلا دوام (بدل البطاقة) */
.att-off-note { margin: 0 0 8px; font-size: 13px; font-weight: 700; color: var(--red); }
/* أزرار القسم تحت العنوان أضيق قليلًا حتى تتسع في سطر واحد (بيانات الطلاب سبعة أزرار) */
#view .head-acts .btn { padding-inline: 13px; }
/* أشرطة «أولياء الأمور في التطبيق» متحاذية: عمود العدد بعرض ثابت فتتساوى أطوال الأشرطة */
.reg-list .list-item > b { text-align: end; }
/* مربع اليوم والساعة أعلى لوحات القيادة (غير المعلم) */
#view > .day-top { margin-bottom: 14px; }
#view > .day-top > .day-hero { min-height: 119px; }
/* بطاقات لوحة القيادة بجانب مربع اليوم: يختارها المستخدم (حتى ثلاث) */
#view > .day-top { position: relative; }
#view > .day-top.dq-n3 { grid-template-columns: minmax(300px, 1.3fr) repeat(3, minmax(0, 1fr)); }
@media (max-width: 1100px) { #view > .day-top.dq-n3 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 760px) { #view > .day-top[class*="dq-n"] { grid-template-columns: 1fr; } }
.dq-gear { position: absolute; top: -10px; inset-inline-end: -8px; width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--border); background: var(--surface); box-shadow: var(--shadow); cursor: pointer; font-size: 14px; display: grid; place-items: center; opacity: .95; }
.dq-gear:hover { opacity: 1; border-color: var(--ink); }
.gold-gear { color: var(--amber); }
.dq-gear { display: inline-flex; align-items: center; justify-content: center; }
/* ملف الإنجاز: عناصر الخطة التشغيلية */
.pf-plan { margin: 4px 0 10px; border: 1px solid var(--border); border-radius: 12px; padding: 8px 12px; }
.pf-plan summary { cursor: pointer; display: flex; gap: 8px; align-items: center; }
.pf-plan ul { list-style: none; margin: 8px 0 0; padding: 0; font-size: 16px; }
.pf-plan li { margin: 6px 0; font-weight: 600; line-height: 1.7; } .pf-plan li.sub { padding-inline-start: 22px; }
.pf-plan label { display: flex; gap: 8px; align-items: flex-start; cursor: pointer; }
/* الخطة التشغيلية المولدة */
.op-checks { list-style: none; margin: 0; padding: 0; columns: 2; column-gap: 24px; font-size: 13.5px; }
.op-checks li { margin: 4px 0; break-inside: avoid; } .op-checks li.sub { padding-inline-start: 20px; }
@media (max-width: 760px) { .op-checks { columns: 1; } }
.op-doc h3 { font-size: 16px; } .op-doc p { line-height: 1.8; }
.op-ready { margin-inline-start: 6px; padding: 2px 8px; font-size: 12px; }
.pf-hint { margin: 6px 0 10px; padding: 8px 10px; border-radius: 10px; background: var(--ink-soft, var(--surface-2)); font-size: 12.5px; }
.pf-hint p { margin: 0 0 6px; line-height: 1.7; } .pf-hint .op-ready { margin: 0; }
.pf-hint .pf-link { margin-inline-start: 8px; font-weight: 600; }
/* تنبيه أحمر بعناصر الخطة غير المتحققة */
.pf-warn { margin: 4px 0 10px; padding: 10px 12px; border-radius: 12px; border: 1px solid color-mix(in srgb, var(--red) 45%, transparent); background: var(--red-soft, color-mix(in srgb, var(--red) 10%, transparent)); color: var(--red); font-size: 13px; }
.pf-warn ul { margin: 6px 0 0; padding-inline-start: 18px; } .pf-warn li { margin: 6px 0; } .pf-warn li > span { color: var(--text, inherit); font-weight: 600; }
.pf-warn .op-ready { margin-inline-start: 6px; } .pf-warn .pf-link { color: var(--red); }

/* أيقونة شرح المعيار في ملف الإنجاز */
.pf-info { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; margin-inline-start: 4px; padding: 0; border: 0; border-radius: 50%; background: transparent; font-size: 14px; line-height: 1; cursor: pointer; vertical-align: middle; opacity: .85; }
.pf-info:hover { opacity: 1; background: var(--amber-soft); }

/* سطر «المصدر» تحت عناصر الخطة: أوضح وأكبر */
.pf-plan .pf-hint { font-weight: 400; }

