/* EFawtara — layout shell & components (Bootstrap 5.3 enhancements) */

body.ef-app {
  font-family: var(--ef-font-sans);
  background-color: var(--ef-body-bg);
  color: var(--ef-text);
  min-height: 100vh;
}

html[dir="rtl"] body.ef-app {
  direction: rtl;
  text-align: right;
}

html[dir="ltr"] body.ef-app {
  direction: ltr;
  text-align: left;
}

/* Top navigation — dark bar, same markup as default Bootstrap navbar */
.ef-app .ef-header .navbar.ef-navbar {
  background-color: var(--ef-surface) !important;
  border-bottom: 1px solid var(--ef-border) !important;
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.35);
}

.ef-app .ef-navbar .navbar-brand,
.ef-app .ef-navbar .nav-link {
  color: var(--ef-text) !important;
}

.ef-app .ef-navbar .navbar-brand {
  font-weight: 700;
}

.ef-app .ef-navbar .nav-link:hover,
.ef-app .ef-navbar .nav-link:focus {
  color: #fff !important;
}

.ef-app .ef-navbar .navbar-text {
  color: var(--ef-text-muted) !important;
}

.ef-app .ef-navbar .ef-navbar-user-portal {
  max-width: 20rem;
  line-height: 1.35;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.ef-app .ef-navbar .ef-navbar-user-portal .ef-navbar-user-name {
  color: var(--ef-text) !important;
  font-weight: 600;
}

.ef-app .ef-navbar .ef-navbar-user-portal .ef-navbar-portal-name {
  color: var(--ef-text-muted) !important;
  font-size: 0.92em;
}

.ef-app .ef-navbar .dropdown-menu {
  background-color: var(--ef-surface-elevated);
  border: 1px solid var(--ef-border);
  box-shadow: 0 0.5rem 1.25rem rgba(0, 0, 0, 0.45);
}

.ef-app .ef-navbar .dropdown-item {
  color: var(--ef-text);
}

.ef-app .ef-navbar .dropdown-item:hover,
.ef-app .ef-navbar .dropdown-item:focus {
  background-color: rgba(255, 255, 255, 0.06);
  color: #fff;
}

.ef-app .ef-navbar .dropdown-divider {
  border-color: var(--ef-border);
}

.ef-app .ef-navbar .navbar-toggler {
  border-color: var(--ef-border-strong);
}

.ef-app .ef-navbar .navbar-toggler-icon {
  filter: invert(1) grayscale(100%);
}

/* Main content area */
.ef-app .ef-main-wrap {
  background-color: var(--ef-body-bg);
}

.ef-app main.ef-main {
  padding-top: var(--ef-space-4);
  padding-bottom: var(--ef-space-6);
}

.ef-app .ef-main-inner {
  max-width: var(--ef-main-max-width);
  margin-inline: auto;
}

/* Footer */
.ef-app footer.ef-footer {
  background-color: var(--ef-surface);
  border-top: 1px solid var(--ef-border);
  color: var(--ef-text-muted);
}

.ef-app footer.ef-footer .container,
.ef-app footer.ef-footer .container-fluid {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}

/* Cards & tables on dark background (Bootstrap defaults are light) */
.ef-app .card {
  background-color: var(--ef-surface-elevated);
  border-color: var(--ef-border);
  color: var(--ef-text);
}

.ef-app .card-header {
  background-color: rgba(255, 255, 255, 0.04);
  border-bottom-color: var(--ef-border);
  color: var(--ef-text);
}

.ef-app .text-muted {
  color: var(--ef-text-muted) !important;
}

/* جداول Bootstrap 5.3 على خلفية داكنة
   Bootstrap يضبط --bs-table-color-type و --bs-table-color-state على initial؛ لون الخلية =
   var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color))) فيصبح initial وليس لون الجدول → نص شبه أسود.
   نربط type/state بسلسلة آمنة ثم نحسّن الحدود والـ hover والنص الثانوي. */
.ef-app .table {
  --bs-table-bg: transparent;
  --bs-table-color: var(--ef-text);
  --bs-table-color-type: var(--bs-table-color);
  --bs-table-color-state: var(--bs-table-color);
  /* لا نلمس --bs-table-bg-type/state هنا حتى تبقى سلسلة var() لـ box-shadow كما يفترض Bootstrap */
  --bs-table-border-color: var(--ef-table-border);
  --bs-table-accent-bg: transparent;
  --bs-table-striped-bg: var(--ef-table-striped-bg);
  --bs-table-striped-color: var(--ef-text);
  --bs-table-active-bg: var(--ef-table-active-bg);
  --bs-table-active-color: var(--ef-text);
  --bs-table-hover-bg: var(--ef-table-hover-bg);
  --bs-table-hover-color: var(--ef-text);
  border-color: var(--ef-table-border);
  color: var(--ef-text);
}

/* أي thead/tfoot — يغطي الجداول بدون table-light (لوحة التحكم، الرئيسية) وترويسات table-light */
.ef-app .table thead th,
.ef-app .table thead.table-light th,
.ef-app .table tfoot.table-light th,
.ef-app .table tfoot.table-light td {
  --bs-table-color: var(--ef-text);
  --bs-table-color-type: var(--ef-text);
  --bs-table-color-state: var(--ef-text);
  background-color: var(--ef-table-header-bg) !important;
  color: var(--ef-text) !important;
  border-color: var(--ef-table-border);
  font-weight: 600;
}

.ef-app .table > :not(caption) > * > * {
  border-bottom-color: var(--ef-table-border);
  color: var(--ef-text);
}

.ef-app .table-striped > tbody > tr:nth-of-type(odd) > *,
.ef-app .table-striped > tbody > tr:nth-of-type(even) > * {
  --bs-table-color-type: var(--bs-table-striped-color);
  color: var(--ef-text);
}

.ef-app .table-hover > tbody > tr:hover > * {
  --bs-table-color-state: var(--bs-table-hover-color);
  color: var(--ef-text);
}

/* Bootstrap contextual rows (.table-info etc.) — light tints are unreadable on dark UI */
.ef-app .table > :not(caption) > tbody > tr.table-info > *,
.ef-app .table > :not(caption) > tbody > tr.ef-forecast-future > * {
  --bs-table-color-type: var(--ef-text);
  --bs-table-color-state: var(--ef-text);
  --bs-table-bg-type: rgba(59, 130, 246, 0.16);
  --bs-table-bg-state: rgba(59, 130, 246, 0.16);
  background-color: rgba(59, 130, 246, 0.16) !important;
  color: var(--ef-text) !important;
  box-shadow: inset 0 0 0 9999px rgba(59, 130, 246, 0.16);
}

.ef-app .table-hover > tbody > tr.ef-forecast-future:hover > * {
  --bs-table-color-state: var(--ef-text);
  box-shadow: inset 0 0 0 9999px rgba(59, 130, 246, 0.24);
}

/* Analytics / forecast page */
.ef-app .ef-analytics-card .card-header {
  font-weight: 600;
}

.ef-app .ef-analytics-table-wrap {
  max-height: min(62vh, 720px);
  overflow: auto;
}

.ef-app .ef-analytics-table-wrap thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background-color: var(--ef-table-header-bg) !important;
}

.ef-app .ef-analytics-legend {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  font-size: 0.8125rem;
  color: var(--ef-text-muted-table);
}

.ef-app .ef-analytics-legend__item::before {
  content: "";
  display: inline-block;
  width: 0.75rem;
  height: 0.75rem;
  border-radius: 2px;
  margin-inline-end: 0.35rem;
  vertical-align: -1px;
}

.ef-app .ef-analytics-legend__item--actual::before {
  background: transparent;
  border: 1px solid var(--ef-table-border);
}

.ef-app .ef-analytics-legend__item--forecast::before {
  background: rgba(59, 130, 246, 0.45);
  border: 1px solid rgba(59, 130, 246, 0.55);
}

.ef-app .ef-analytics-notes {
  background-color: var(--ef-surface-elevated);
  border: 1px solid var(--ef-border);
  border-radius: var(--ef-radius);
  color: var(--ef-text);
  padding: 1rem 1.25rem;
}

.ef-app .ef-analytics-notes__title {
  color: var(--ef-text);
  font-weight: 600;
  font-size: 0.9375rem;
  margin-bottom: 0.5rem;
}

.ef-app .ef-analytics-notes ul {
  margin-bottom: 0;
  padding-inline-start: 1.25rem;
  color: var(--ef-text-muted-table);
  font-size: 0.875rem;
  line-height: 1.55;
}

.ef-app .ef-analytics-notes li + li {
  margin-top: 0.35rem;
}

/* Payments admin — method cards */
.ef-app .ef-payment-method-card {
  background-color: var(--ef-surface-elevated);
  border-color: var(--ef-border);
  color: var(--ef-text);
  height: 100%;
}

.ef-app .ef-payment-method-card .card-body {
  font-family: var(--ef-font-sans);
}

.ef-app .ef-payment-method-card__icon {
  font-size: 2rem;
  color: var(--ef-primary);
  line-height: 1;
}

.ef-app .ef-payment-method-card__title {
  color: var(--ef-text);
  font-weight: 600;
  margin-top: 0.5rem;
  margin-bottom: 0.25rem;
  font-family: var(--ef-font-sans);
}

.ef-app .ef-payment-method-card__code {
  color: var(--ef-text-muted-table);
  font-family: var(--ef-font-sans);
}

/* Inline code + Arabic table cells (DataToolkit, etc.) */
.ef-app code,
.ef-app code.ef-code-inline {
  color: #93c5fd;
  background-color: rgba(255, 255, 255, 0.08);
  border: 1px solid var(--ef-table-border);
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
  font-size: 0.85em;
  padding: 0.1em 0.35em;
  border-radius: 0.25rem;
}

.ef-app .ef-arabic-cell {
  font-family: var(--ef-font-sans);
  color: var(--ef-text);
}

.ef-app .ef-arabic-cell small {
  font-family: var(--ef-font-sans);
  color: var(--ef-text-muted-table);
}

.ef-app .ef-muted-cell {
  color: var(--ef-text-muted-table);
  font-family: var(--ef-font-sans);
}

.ef-app .table > tbody > tr.table-success > * {
  --bs-table-color-type: var(--ef-text);
  --bs-table-color-state: var(--ef-text);
  background-color: rgba(34, 197, 94, 0.14) !important;
  color: var(--ef-text) !important;
  box-shadow: inset 0 0 0 9999px rgba(34, 197, 94, 0.14);
}

.ef-app .table > tbody > tr.ef-row-dismissed > * {
  color: var(--ef-text-muted-table) !important;
}

.ef-app .badge.ef-badge-muted {
  background-color: rgba(255, 255, 255, 0.1) !important;
  color: var(--ef-text) !important;
  border: 1px solid var(--ef-table-border);
}

/* نص ثانوي / تواريخ / أرقام باهتة داخل الجداول */
.ef-app .table .text-muted,
.ef-app .table small {
  color: var(--ef-text-muted-table) !important;
}

/* روابط داخل خلايا (بدون زر) */
.ef-app .table tbody td a:not([class*="btn"]) {
  color: var(--ef-table-link);
  text-decoration: underline;
  text-underline-offset: 0.12em;
}

.ef-app .table tbody td a:not([class*="btn"]):hover,
.ef-app .table tbody td a:not([class*="btn"]):focus {
  color: var(--ef-table-link-hover);
}

.ef-app .table .btn-link {
  color: var(--ef-table-link);
}

.ef-app .table .btn-link:hover,
.ef-app .table .btn-link:focus {
  color: var(--ef-table-link-hover);
}

/* أزرار الإجراءات داخل الجداول — ألوان أوضح على السطح الداكن */
.ef-app .table .btn-outline-secondary {
  color: #e2e8f0;
  border-color: rgba(255, 255, 255, 0.28);
}

.ef-app .table .btn-outline-secondary:hover,
.ef-app .table .btn-outline-secondary:focus {
  color: #fff;
  background-color: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.38);
}

.ef-app .table .btn-outline-primary {
  color: var(--ef-table-link);
  border-color: rgba(147, 197, 253, 0.65);
}

.ef-app .table .btn-outline-primary:hover,
.ef-app .table .btn-outline-primary:focus {
  color: #0f1419;
  background-color: var(--ef-primary);
  border-color: var(--ef-primary);
}

.ef-app .table .btn-outline-danger {
  color: #fecaca;
  border-color: rgba(252, 165, 165, 0.55);
}

.ef-app .table .btn-outline-danger:hover,
.ef-app .table .btn-outline-danger:focus {
  color: #450a0a;
  background-color: #f87171;
  border-color: #f87171;
}

.ef-app .table .btn-outline-warning {
  color: #fde68a;
  border-color: rgba(253, 224, 71, 0.45);
}

.ef-app .table .btn-outline-warning:hover,
.ef-app .table .btn-outline-warning:focus {
  color: #422006;
  background-color: #fbbf24;
  border-color: #fbbf24;
}

.ef-app .table .btn-outline-info {
  color: #a5f3fc;
  border-color: rgba(103, 232, 249, 0.45);
}

.ef-app .table .btn-outline-info:hover,
.ef-app .table .btn-outline-info:focus {
  color: #083344;
  background-color: #22d3ee;
  border-color: #22d3ee;
}

/* Dashboard pages — align with main dashboard (لوحة القيادة); spacing via Bootstrap utilities on children */
.ef-app .dashboard-page .card.shadow-sm {
  box-shadow: 0 0.125rem 0.35rem rgba(0, 0, 0, 0.35) !important;
}

/* Inline stat strips (replaces bg-light on dark theme) */
.ef-app .ef-dash-stat-cell {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--ef-table-border);
  color: var(--ef-text);
}

.ef-app .ef-dash-section-title {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--ef-text);
  margin-bottom: 0.35rem;
  padding-bottom: var(--ef-space-3);
  border-bottom: 1px solid var(--ef-border);
}

.ef-app .ef-dash-section-lead {
  font-size: 0.875rem;
  color: var(--ef-text-muted);
  margin-bottom: 1rem;
}

/* لوحات القيادة: تنبيهات أسفل العنوان مثل لوحة القيادة الرئيسية */
.ef-app .dashboard-page > .alert {
  margin-bottom: var(--ef-space-4);
}

/* Dashboard shortcut tiles */
.ef-app .dash-tile {
  border-color: var(--ef-border) !important;
  background-color: var(--ef-surface-elevated);
  color: var(--ef-text);
}

.ef-app .dash-tile .fw-semibold.text-dark {
  color: var(--ef-text) !important;
}

.ef-app .dash-tile .text-primary {
  color: var(--ef-primary) !important;
}

/* شجرة الحسابات المالية — نص واضح على الثيم الداكن؛ hover/selection؛ تسلسل هرمي (يشمل نماذج الاختيار في TransactToGL) */
.ef-app .ef-account-tree,
.ef-app #creditAccountTree,
.ef-app #debitAccountTree {
  --ef-tree-hover-bg: rgba(255, 255, 255, 0.1);
  --ef-tree-active-bg: rgba(59, 130, 246, 0.28);
  --ef-tree-active-border: rgba(96, 165, 250, 0.55);
}

.ef-app a.tree-node[data-account-id] {
  display: block;
  color: var(--ef-text) !important;
  background-color: transparent;
  border: 1px solid transparent;
  border-radius: var(--ef-radius);
  line-height: 1.45;
  font-weight: 500;
  min-height: 2rem;
  padding-top: 0.35rem;
  padding-bottom: 0.35rem;
  transition: background-color 0.12s ease, border-color 0.12s ease, color 0.12s ease;
  text-decoration: none !important;
}

.ef-app a.tree-node[data-account-id]:link,
.ef-app a.tree-node[data-account-id]:visited {
  color: var(--ef-text) !important;
}

.ef-app a.tree-node[data-account-id]:hover {
  color: #fff !important;
  background-color: var(--ef-tree-hover-bg);
}

.ef-app a.tree-node[data-account-id]:focus-visible {
  outline: 2px solid rgba(59, 130, 246, 0.55);
  outline-offset: 1px;
}

.ef-app a.tree-node[data-account-id].tree-node-active {
  color: #fff !important;
  background-color: var(--ef-tree-active-bg);
  border-color: var(--ef-tree-active-border);
}

.ef-app a.tree-node[data-account-id].tree-node-active:hover {
  background-color: rgba(59, 130, 246, 0.36);
  border-color: rgba(147, 197, 253, 0.65);
}

/* تسلسل الشجرة — كل المستويات بنفس وضوح النص؛ خط فاصل يزداد وضوحاً مع العمق */
.ef-app .ef-account-tree ul ul,
.ef-app #creditAccountTree ul ul,
.ef-app #debitAccountTree ul ul {
  margin-inline-start: 0.25rem;
  padding-inline-start: 0.65rem;
  border-inline-start: 1px solid var(--ef-border-strong);
}

.ef-app .ef-account-tree ul ul ul ul,
.ef-app #creditAccountTree ul ul ul ul,
.ef-app #debitAccountTree ul ul ul ul {
  border-inline-start-color: rgba(255, 255, 255, 0.16);
}

.ef-app .ef-account-tree-scroll {
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 255, 255, 0.28) rgba(0, 0, 0, 0.2);
}

.ef-app .ef-account-tree-scroll::-webkit-scrollbar {
  width: 8px;
}

.ef-app .ef-account-tree-scroll::-webkit-scrollbar-track {
  background: rgba(0, 0, 0, 0.2);
  border-radius: 4px;
}

.ef-app .ef-account-tree-scroll::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.22);
  border-radius: 4px;
}

.ef-app #details-panel {
  color: var(--ef-text);
}

.ef-app #details-panel .text-muted {
  color: var(--ef-text-muted-table) !important;
}

.ef-app .ef-account-details-hint {
  color: var(--ef-text-muted-table) !important;
}

/* Forms on dark surfaces */
.ef-app .form-control,
.ef-app .form-select {
  background-color: var(--ef-surface);
  border-color: var(--ef-border-strong);
  color: var(--ef-text);
}

.ef-app .form-control:focus,
.ef-app .form-select:focus {
  background-color: var(--ef-surface-elevated);
  border-color: var(--ef-primary);
  color: var(--ef-text);
  box-shadow: 0 0 0 0.2rem rgba(59, 130, 246, 0.2);
}

.ef-app .form-label {
  color: var(--ef-text);
}

.ef-app .input-group-text {
  background-color: var(--ef-surface-elevated);
  border-color: var(--ef-border-strong);
  color: var(--ef-text-muted);
}

/* Page chrome */
.ef-page-header {
  border-bottom: 1px solid var(--ef-border);
  padding-bottom: var(--ef-space-3);
}

.ef-toolbar {
  border-bottom: 1px solid transparent;
}

.ef-alert {
  margin-bottom: var(--ef-space-3);
}

.ef-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/* Index / list pages — toolbar row + empty list hint */
.ef-toolbar.ef-index-toolbar {
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}

.ef-app .ef-empty-list-hint.alert-info {
  background-color: rgba(13, 110, 253, 0.1);
  color: var(--ef-text);
  border: 1px solid rgba(13, 110, 253, 0.22);
}

.ef-app .ef-table-wrap.table-responsive {
  margin-bottom: 0;
}

/* Login page (standalone document, no .ef-app) */
body.ef-login-page {
  min-height: 100vh;
  background: linear-gradient(160deg, #0f1419 0%, #1a2433 50%, #0f1419 100%);
  font-family: var(--ef-font-sans);
}

.ef-login-card {
  max-width: 420px;
  margin: 2rem auto;
  padding: 2rem;
  background: var(--ef-surface-elevated);
  border: 1px solid var(--ef-border);
  border-radius: var(--ef-radius-lg);
  box-shadow: 0 1rem 2.5rem rgba(0, 0, 0, 0.45);
  color: var(--ef-text);
}

.ef-login-card .form-control {
  background-color: var(--ef-surface);
  border-color: var(--ef-border-strong);
  color: var(--ef-text);
}

.ef-login-card .form-control:focus {
  border-color: var(--ef-primary);
  box-shadow: 0 0 0 0.2rem rgba(59, 130, 246, 0.2);
}

/* Portal pick / switch — same document shell as login (body.ef-login-page) */
.ef-login-card.ef-portal-pick-card {
  max-width: 520px;
}

.ef-login-card.ef-portal-pick-card .ef-portal-pick-hint {
  color: var(--ef-text-muted);
  font-size: 0.9rem;
  line-height: 1.5;
}

.ef-login-card.ef-portal-pick-card .form-check {
  margin-bottom: 0.5rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  padding-inline-start: 2.25rem;
  border-radius: var(--ef-radius);
  border: 1px solid transparent;
  transition: background-color 0.15s ease, border-color 0.15s ease;
}

.ef-login-card.ef-portal-pick-card .form-check:hover {
  background-color: rgba(255, 255, 255, 0.04);
}

.ef-login-card.ef-portal-pick-card .form-check:has(.form-check-input:checked) {
  background-color: rgba(59, 130, 246, 0.14);
  border-color: rgba(59, 130, 246, 0.35);
}

.ef-login-card.ef-portal-pick-card .form-check-label small {
  color: var(--ef-text-muted) !important;
}

/* اختيار الوجهة بعد الدخول (ChooseDestination) — نفس خلفية تسجيل الدخول */
body.ef-login-page.ef-destination-page {
  align-items: flex-start;
}

.ef-destination-shell {
  max-width: 1100px;
  margin: 0 auto;
  width: 100%;
  padding: 0 1rem 2.5rem;
}

.ef-destination-header {
  text-align: center;
  margin-bottom: 2rem;
  color: var(--ef-text);
}

.ef-destination-header h2 {
  color: var(--ef-text);
  font-weight: 600;
  font-size: 1.35rem;
}

.ef-destination-header .ef-destination-lead {
  color: var(--ef-text-muted);
  font-size: 0.95rem;
  margin-bottom: 0.35rem;
}

.ef-destination-header .ef-destination-app {
  color: var(--ef-text-muted);
  font-size: 0.85rem;
  margin-bottom: 0;
}

.ef-destination-card {
  background: var(--ef-surface-elevated);
  border: 1px solid var(--ef-border);
  border-radius: var(--ef-radius-lg);
  box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.35);
  height: 100%;
  color: var(--ef-text);
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.ef-destination-card:hover {
  transform: translateY(-4px);
  border-color: rgba(59, 130, 246, 0.35);
  box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.45);
}

.ef-destination-card .card-body {
  color: var(--ef-text);
}

.ef-destination-card .ef-destination-icon {
  color: var(--ef-primary);
  font-size: 2.75rem;
  line-height: 1;
  opacity: 0.95;
}

.ef-destination-card .card-title {
  color: var(--ef-text);
  font-weight: 600;
}

.ef-destination-card .ef-destination-desc {
  color: var(--ef-text-muted);
  font-size: 0.9rem;
  min-height: 2.75rem;
}

body.ef-login-page.ef-destination-page .btn-success {
  background-color: #15803d;
  border-color: #166534;
  color: #fff;
}

body.ef-login-page.ef-destination-page .btn-success:hover {
  background-color: #166534;
  border-color: #14532d;
  color: #fff;
}

body.ef-login-page.ef-destination-page .btn-warning {
  background-color: #ca8a04;
  border-color: #a16207;
  color: #0f1419;
}

body.ef-login-page.ef-destination-page .btn-warning:hover {
  background-color: #eab308;
  border-color: #ca8a04;
  color: #0f1419;
}

.ef-destination-logout {
  color: var(--ef-text-muted);
  text-decoration: none;
  font-size: 0.9rem;
}

.ef-destination-logout:hover {
  color: var(--ef-text);
  text-decoration: underline;
}

/* ─── Modals, offcanvas, toasts, floating overlays (match dark shell) ─── */
body.ef-app .modal-backdrop {
  --bs-backdrop-bg: rgba(0, 0, 0, 0.72);
  --bs-backdrop-opacity: 1;
}

/* تثبيت الوضع الداكن فوق متغيرات Bootstrap (قد تُحمَّل أنمطة أخرى بعد ef-components عبر @section Styles) */
body.ef-app .modal-dialog .modal-content,
.ef-app .modal-dialog .modal-content {
  --bs-modal-bg: var(--ef-surface-elevated);
  --bs-modal-color: var(--ef-text);
  --bs-modal-border-color: var(--ef-border);
  --bs-modal-header-border-color: var(--ef-border);
  --bs-modal-footer-border-color: var(--ef-border);
  --bs-body-bg: var(--ef-surface-elevated);
  --bs-body-color: var(--ef-text);
  --bs-border-color-translucent: var(--ef-border);
  background-color: var(--ef-surface-elevated) !important;
  color: var(--ef-text) !important;
  border: 1px solid var(--ef-border) !important;
  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.65);
}

.ef-app .modal-header,
.ef-app .modal-footer {
  background-color: var(--ef-surface) !important;
  border-color: var(--ef-border) !important;
  color: var(--ef-text) !important;
}

.ef-app .modal-header .btn-close {
  filter: invert(1) grayscale(100%);
  opacity: 0.8;
}

.ef-app .modal-header .btn-close:hover {
  opacity: 1;
}

.ef-app .modal-title {
  color: var(--ef-text) !important;
}

.ef-app .modal-body {
  color: var(--ef-text) !important;
  background-color: var(--ef-surface-elevated) !important;
}

.ef-app .modal-body .text-muted,
.ef-app .modal-footer .text-muted {
  color: var(--ef-text-muted) !important;
}

.ef-app .modal-body hr,
.ef-app .modal-footer hr {
  border-color: var(--ef-border);
  opacity: 1;
}

.ef-app .modal-body .form-control,
.ef-app .modal-body .form-select,
.ef-app .modal-footer .form-control,
.ef-app .modal-footer .form-select {
  background-color: var(--ef-surface);
  border-color: var(--ef-border-strong);
  color: var(--ef-text);
}

.ef-app .modal-body .form-control:focus,
.ef-app .modal-body .form-select:focus,
.ef-app .modal-footer .form-control:focus,
.ef-app .modal-footer .form-select:focus {
  border-color: var(--ef-primary);
  box-shadow: 0 0 0 0.2rem rgba(59, 130, 246, 0.25);
  color: var(--ef-text);
  background-color: var(--ef-surface);
}

.ef-app .modal-body .form-control::placeholder {
  color: var(--ef-text-muted);
  opacity: 0.95;
}

.ef-app .modal-body .table {
  color: var(--ef-text) !important;
  --bs-table-bg: transparent;
  --bs-table-color: var(--ef-text);
  --bs-emphasis-color: var(--ef-text);
  border-color: var(--ef-table-border);
}

.ef-app .modal-body .table > :not(caption) > * > * {
  border-bottom-color: var(--ef-table-border);
  box-shadow: none;
  color: var(--ef-text) !important;
  background-color: transparent !important;
}

.ef-app .modal-body .table tbody td,
.ef-app .modal-body .table tbody th,
.ef-app .modal-body .table thead th {
  color: var(--ef-text) !important;
}

.ef-app .modal-body .table thead th,
.ef-app .modal-body thead.table-light th,
.ef-app .modal-body thead.table-light,
.ef-app .modal-body .table-light {
  background-color: var(--ef-table-header-bg) !important;
  color: var(--ef-text) !important;
  border-color: var(--ef-table-border) !important;
  --bs-table-bg: var(--ef-table-header-bg);
  --bs-table-color: var(--ef-text);
}

.ef-app .modal-body .table-striped > tbody > tr:nth-of-type(odd) > * {
  --bs-table-accent-bg: var(--ef-table-striped-bg);
  color: var(--ef-text);
}

.ef-app .modal-body .table-hover > tbody > tr:hover > * {
  --bs-table-accent-bg: var(--ef-table-hover-bg);
  color: var(--ef-text);
}

.ef-app .modal-body .table-bordered {
  border-color: var(--ef-table-border);
}

.ef-app .modal-body .btn-outline-primary {
  color: #93c5fd;
  border-color: rgba(147, 197, 253, 0.55);
}

.ef-app .modal-body .btn-outline-primary:hover {
  color: #fff;
  background-color: var(--ef-primary-hover);
  border-color: var(--ef-primary);
}

.ef-app .modal-body .btn-outline-secondary {
  color: var(--ef-text-muted);
  border-color: var(--ef-border-strong);
}

.ef-app .modal-body .btn-outline-secondary:hover {
  color: #fff;
  background-color: rgba(255, 255, 255, 0.08);
  border-color: var(--ef-border);
}

.ef-app .modal-body .alert {
  border-color: var(--ef-border);
  color: var(--ef-text);
}

.ef-app .modal-body .alert-danger {
  border-color: rgba(248, 113, 113, 0.45);
  background-color: rgba(220, 38, 38, 0.15);
  color: #fecaca;
}

.ef-app .modal-body .alert-info {
  border-color: rgba(56, 189, 248, 0.45);
  background-color: rgba(14, 165, 233, 0.12);
  color: #e0f2fe;
}

.ef-app .modal-body .alert-success {
  border-color: rgba(74, 222, 128, 0.45);
  background-color: rgba(22, 163, 74, 0.14);
  color: #bbf7d0;
}

.ef-app .modal-body .alert-warning {
  border-color: rgba(250, 204, 21, 0.45);
  background-color: rgba(202, 138, 4, 0.14);
  color: #fef9c3;
}

.ef-app .modal-body .list-group-item {
  background-color: var(--ef-surface);
  border-color: var(--ef-border);
  color: var(--ef-text);
}

.ef-app .modal-body .list-group-item:hover {
  background-color: rgba(255, 255, 255, 0.05);
}

/* Offcanvas (drawers) */
.ef-app .offcanvas,
.ef-app .offcanvas-lg,
.ef-app .offcanvas-md,
.ef-app .offcanvas-sm,
.ef-app .offcanvas-xl,
.ef-app .offcanvas-xxl {
  background-color: var(--ef-surface-elevated);
  color: var(--ef-text);
  border-color: var(--ef-border);
}

.ef-app .offcanvas-header {
  border-bottom: 1px solid var(--ef-border);
}

.ef-app .offcanvas-header .btn-close {
  filter: invert(1) grayscale(100%);
  opacity: 0.8;
}

/* Toasts */
body.ef-app .toast,
.ef-app .toast {
  background-color: var(--ef-surface-elevated);
  color: var(--ef-text);
  border: 1px solid var(--ef-border);
}

.ef-app .toast-header {
  background-color: var(--ef-surface);
  color: var(--ef-text);
  border-bottom: 1px solid var(--ef-border);
}

.ef-app .toast-header .btn-close {
  filter: invert(1) grayscale(100%);
  opacity: 0.75;
}

/* Popovers (often portaled to body) */
body.ef-app .popover {
  background-color: var(--ef-surface-elevated);
  border: 1px solid var(--ef-border);
  color: var(--ef-text);
}

body.ef-app .popover .popover-header {
  background-color: var(--ef-surface);
  color: var(--ef-text);
  border-bottom: 1px solid var(--ef-border);
}

body.ef-app .popover .popover-body {
  color: var(--ef-text);
}

body.ef-app .popover .popover-arrow::after,
body.ef-app .popover .popover-arrow::before {
  border-color: transparent;
}

body.ef-app .popover.bs-popover-bottom > .popover-arrow::before,
body.ef-app .popover.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::before {
  border-bottom-color: var(--ef-border);
}

body.ef-app .popover.bs-popover-bottom > .popover-arrow::after,
body.ef-app .popover.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::after {
  border-bottom-color: var(--ef-surface-elevated);
}

body.ef-app .popover.bs-popover-top > .popover-arrow::after,
body.ef-app .popover.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::after {
  border-top-color: var(--ef-surface-elevated);
}

/* Tooltips */
body.ef-app .tooltip .tooltip-inner {
  background-color: #1e293b;
  color: #f1f5f9;
}

/* Dropdowns outside navbar (e.g. in modals) */
.ef-app .dropdown-menu {
  background-color: var(--ef-surface-elevated);
  border: 1px solid var(--ef-border);
  box-shadow: 0 0.5rem 1.25rem rgba(0, 0, 0, 0.45);
}

.ef-app .dropdown-item {
  color: var(--ef-text);
}

.ef-app .dropdown-item:hover,
.ef-app .dropdown-item:focus {
  background-color: rgba(255, 255, 255, 0.08);
  color: #fff;
}

.ef-app .dropdown-divider {
  border-color: var(--ef-border);
}

/* Select2 (Invoice/PurchaseInvoice — dropdown appended to body) */
body.ef-app .select2-dropdown {
  background-color: var(--ef-surface-elevated) !important;
  border-color: var(--ef-border) !important;
  color: var(--ef-text) !important;
}

body.ef-app .select2-container--bootstrap-5 .select2-results__option {
  color: var(--ef-text);
}

body.ef-app .select2-container--bootstrap-5 .select2-results__option--highlighted {
  background-color: rgba(59, 130, 246, 0.35) !important;
  color: #fff !important;
}

body.ef-app .select2-container--bootstrap-5 .select2-results__option--selected {
  background-color: rgba(255, 255, 255, 0.08) !important;
  color: var(--ef-text) !important;
}

body.ef-app .select2-container--bootstrap-5 .select2-search--dropdown .select2-search__field {
  background-color: var(--ef-surface);
  border-color: var(--ef-border-strong);
  color: var(--ef-text);
}

body.ef-app .select2-container--bootstrap-5.select2-container--focus .select2-selection,
body.ef-app .select2-container--bootstrap-5.select2-container--open .select2-selection {
  border-color: var(--ef-primary);
  box-shadow: 0 0 0 0.2rem rgba(59, 130, 246, 0.25);
}

body.ef-app .select2-container--bootstrap-5 .select2-selection {
  background-color: var(--ef-surface);
  border-color: var(--ef-border-strong);
  color: var(--ef-text);
}

body.ef-app .select2-container--bootstrap-5 .select2-selection--single .select2-selection__rendered {
  color: var(--ef-text);
}

/* Focus visibility */
.ef-app .btn:focus-visible,
.ef-app .nav-link:focus-visible,
.ef-app .dropdown-item:focus-visible {
  box-shadow: var(--ef-focus-ring);
  outline: 0;
}
