@charset "UTF-8";

/*
|--------------------------------------------------------------------------
| الملف: public_html/assets/css/shared/components/empty-states.css
| الوصف:
|   أنماط حالات الفراغ وعدم وجود البيانات والمحتوى.
|
| الهدف:
|   - توحيد شكل ورسالة حالات الفراغ في جميع أجزاء المنصة.
|   - دعم حالات مثل:
|       لا توجد بيانات
|       لا توجد نتائج بحث
|       لا توجد عناصر بعد
|       لا توجد صلاحية عرض محتوى معين
|   - توفير بنية مرنة للأيقونة، العنوان، الوصف، الإجراءات، والوسائط.
|   - دعم العرض داخل صفحة كاملة أو بطاقة أو جدول أو قسم.
|
| القواعد:
|   - هذا الملف خاص بحالات الفراغ فقط.
|   - لا توضع فيه أنماط صفحات كاملة أو layout عام.
|   - يعتمد على tokens.css و base.css.
|--------------------------------------------------------------------------
*/

/* -------------------------------------------------------------------------
 * Base Empty State
 * ---------------------------------------------------------------------- */
.empty-state {
  --empty-bg: transparent;
  --empty-border: transparent;
  --empty-shadow: none;
  --empty-radius: var(--radius-2xl);
  --empty-padding-x: var(--space-6);
  --empty-padding-y: var(--space-8);
  --empty-max-width: 42rem;
  --empty-icon-size: 4rem;
  --empty-icon-color: var(--color-icon-muted);
  --empty-icon-bg: var(--color-bg-surface-muted);
  --empty-title-color: var(--color-text-primary);
  --empty-text-color: var(--color-text-secondary);

  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-4);
  width: 100%;
  max-width: var(--empty-max-width);
  margin-inline: auto;
  padding: var(--empty-padding-y) var(--empty-padding-x);
  text-align: center;
  color: var(--empty-text-color);
  background-color: var(--empty-bg);
  border: var(--border-width-1) solid var(--empty-border);
  border-radius: var(--empty-radius);
  box-shadow: var(--empty-shadow);
}

.empty-state > * {
  min-width: 0;
}

/* -------------------------------------------------------------------------
 * Parts
 * ---------------------------------------------------------------------- */
.empty-state__media {
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--empty-icon-size);
  height: var(--empty-icon-size);
  color: var(--empty-icon-color);
  background-color: var(--empty-icon-bg);
  border-radius: var(--radius-full);
  flex-shrink: 0;
}

.empty-state__media svg,
.empty-state__media img {
  width: 50%;
  height: 50%;
}

.empty-state__image {
  display: block;
  max-width: min(100%, 18rem);
  height: auto;
  margin-inline: auto;
}

.empty-state__content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
  width: 100%;
  min-width: 0;
}

.empty-state__eyebrow {
  margin: 0;
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semi-bold);
  color: var(--color-text-muted);
}

.empty-state__title {
  margin: 0;
  color: var(--empty-title-color);
  font-size: var(--font-size-heading-4);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-snug);
}

.empty-state__text {
  max-width: var(--content-reading-width);
  margin: 0;
  color: var(--empty-text-color);
  font-size: var(--font-size-md);
  line-height: var(--line-height-relaxed);
}

.empty-state__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-2) var(--space-4);
  margin: 0;
  color: var(--color-text-muted);
  font-size: var(--font-size-sm);
}

.empty-state__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  width: 100%;
  margin-top: var(--space-1);
}

.empty-state__list {
  display: inline-flex;
  flex-direction: column;
  gap: var(--space-2);
  max-width: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
  text-align: center;
}

.empty-state__list li {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: var(--font-size-sm);
}

/* -------------------------------------------------------------------------
 * Variants
 * ---------------------------------------------------------------------- */
.empty-state--boxed {
  --empty-bg: var(--color-bg-surface);
  --empty-border: var(--color-border-default);
}

.empty-state--soft {
  --empty-bg: var(--color-bg-surface-soft);
  --empty-border: transparent;
}

.empty-state--muted {
  --empty-bg: var(--color-bg-surface-muted);
  --empty-border: transparent;
}

.empty-state--shadow {
  --empty-shadow: var(--shadow-sm);
}

.empty-state--bordered {
  --empty-border: var(--color-border-default);
}

.empty-state--compact {
  --empty-padding-x: var(--space-4);
  --empty-padding-y: var(--space-6);
  --empty-icon-size: 3rem;
  gap: var(--space-3);
}

.empty-state--spacious {
  --empty-padding-x: var(--space-8);
  --empty-padding-y: var(--space-12);
  --empty-icon-size: 5rem;
  gap: var(--space-5);
}

.empty-state--narrow {
  --empty-max-width: 32rem;
}

.empty-state--wide {
  --empty-max-width: 56rem;
}

/* -------------------------------------------------------------------------
 * Semantic Variants
 * ---------------------------------------------------------------------- */
.empty-state--brand {
  --empty-icon-color: var(--color-icon-brand);
  --empty-icon-bg: var(--color-bg-brand-soft);
}

.empty-state--success {
  --empty-icon-color: var(--color-icon-success);
  --empty-icon-bg: var(--color-bg-success);
}

.empty-state--warning {
  --empty-icon-color: var(--color-icon-warning);
  --empty-icon-bg: var(--color-bg-warning);
}

.empty-state--danger,
.empty-state--error {
  --empty-icon-color: var(--color-icon-danger);
  --empty-icon-bg: var(--color-bg-danger);
}

.empty-state--info {
  --empty-icon-color: var(--color-icon-info);
  --empty-icon-bg: var(--color-bg-info);
}

/* -------------------------------------------------------------------------
 * Layout Context Variants
 * ---------------------------------------------------------------------- */
.empty-state--page {
  min-height: min(70vh, 42rem);
}

.empty-state--section {
  min-height: 18rem;
}

.empty-state--card {
  --empty-bg: transparent;
  --empty-border: transparent;
  --empty-padding-x: var(--space-4);
  --empty-padding-y: var(--space-6);
  min-height: 14rem;
}

.empty-state--table {
  --empty-padding-x: var(--space-4);
  --empty-padding-y: var(--space-8);
  min-height: 12rem;
}

.empty-state--inline {
  --empty-padding-x: 0;
  --empty-padding-y: 0;
  --empty-bg: transparent;
  --empty-border: transparent;
  --empty-shadow: none;
  --empty-icon-size: 2.5rem;
  --empty-max-width: 100%;

  gap: var(--space-3);
}

/* -------------------------------------------------------------------------
 * Horizontal Variant
 * ---------------------------------------------------------------------- */
.empty-state--horizontal {
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  text-align: start;
  max-width: 100%;
}

.empty-state--horizontal .empty-state__content {
  align-items: flex-start;
}

.empty-state--horizontal .empty-state__meta,
.empty-state--horizontal .empty-state__actions {
  justify-content: flex-start;
}

.empty-state--horizontal .empty-state__list {
  text-align: start;
}

/* -------------------------------------------------------------------------
 * Search Empty
 * ---------------------------------------------------------------------- */
.empty-state--search .empty-state__media {
  border-radius: var(--radius-2xl);
}

.empty-state--search .empty-state__title {
  font-size: var(--font-size-heading-5);
}

/* -------------------------------------------------------------------------
 * Permission / Restricted Empty
 * ---------------------------------------------------------------------- */
.empty-state--restricted {
  --empty-icon-color: var(--color-warning-700);
  --empty-icon-bg: var(--color-bg-warning);
}

/* -------------------------------------------------------------------------
 * Table Cell Friendly Wrapper
 * ---------------------------------------------------------------------- */
.empty-state-cell {
  padding: var(--space-8) var(--space-4);
}

.empty-state-cell .empty-state {
  --empty-padding-x: 0;
  --empty-padding-y: 0;
  --empty-bg: transparent;
  --empty-border: transparent;
  --empty-shadow: none;
  --empty-max-width: 100%;
  --empty-icon-size: 3rem;
}

/* -------------------------------------------------------------------------
 * Empty State Group
 * ---------------------------------------------------------------------- */
.empty-state-stack {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.empty-state-stack--compact {
  gap: var(--space-3);
}

.empty-state-stack--spacious {
  gap: var(--space-6);
}

/* -------------------------------------------------------------------------
 * Responsive Refinements
 * ---------------------------------------------------------------------- */
@media (max-width: 767.98px) {
  .empty-state {
    --empty-padding-x: var(--space-4);
    --empty-padding-y: var(--space-6);
    --empty-icon-size: 3.5rem;

    gap: var(--space-3);
  }

  .empty-state__title {
    font-size: var(--font-size-heading-5);
  }

  .empty-state__text {
    font-size: var(--font-size-sm);
  }

  .empty-state__actions {
    flex-direction: column;
    align-items: stretch;
  }

  .empty-state__actions > * {
    width: 100%;
  }

  .empty-state--horizontal {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
  }

  .empty-state--horizontal .empty-state__content {
    align-items: center;
  }

  .empty-state--horizontal .empty-state__meta,
  .empty-state--horizontal .empty-state__actions {
    justify-content: center;
  }

  .empty-state--horizontal .empty-state__list {
    text-align: center;
  }

  .empty-state--page {
    min-height: 55vh;
  }

  .empty-state--spacious {
    --empty-padding-x: var(--space-5);
    --empty-padding-y: var(--space-8);
    --empty-icon-size: 4rem;
  }
}

@media (min-width: 768px) {
  .empty-state__actions--start {
    justify-content: flex-start;
  }

  .empty-state__actions--end {
    justify-content: flex-end;
  }

  .empty-state__actions--between {
    justify-content: space-between;
  }
}

/* -------------------------------------------------------------------------
 * Reduced Motion
 * ---------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .empty-state,
  .empty-state * {
    transition: none !important;
    animation: none !important;
  }
}