/* ==========================================================================
   FireNet — ۰۵ یوتیلیتی
   کلاس‌هایی که تمپلیت‌ها استفاده می‌کنند ولی Bootstrap ندارد.
   قبلاً یا اصلاً تعریف نشده بودند یا پراکنده و تکراری داخل بلوک‌های
   <style> کپی شده بودند (باگ ۲ و ۳).
   ========================================================================== */

/* ۸۹ مورد استفاده در تمپلیت‌ها؛ قبلاً فقط در سه فایل کپی شده بود و در
   settings / users / user_sessions / user_form_mp بی‌اثر بود. */
.x-small {
  font-size: 0.75rem;
}

/* ۱۳ مورد استفاده در شش تمپلیت؛ قبلاً فقط در user_form.html و آن هم با
   انیمیشن دیگری (slideDown) تعریف شده بود. */
/* fill-mode باید backwards باشد نه both: با both، پس از پایان انیمیشن
   opacity/transform «پُرشده» باقی می‌مانند و کروم برای ظرف، stacking context
   دائمی نگه می‌دارد — نتیجه: دراپ‌داون‌های داخلش (مثل «فیلتر نمایش» در
   users) زیر جدول چسبان (z-index: 2) گیر می‌افتند. با backwards حالت
   پایانی == حالت طبیعی عنصر است و بعد از پایان، context آزاد می‌شود. */
.fade-in {
  animation: fn-fade-in 0.25s ease-out backwards;
}

@keyframes fn-fade-in {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

/* جایگزین .btn-white که در Bootstrap وجود ندارد (باگ ۴).
   دکمهٔ خنثی روی سطح کارت با بوردر مشخص. */
.fn-btn-surface {
  background-color: hsl(var(--fn-card));
  border: 1px solid hsl(var(--fn-border));
  color: hsl(var(--fn-foreground));
}

.fn-btn-surface:hover,
.fn-btn-surface:focus {
  background-color: hsl(var(--fn-muted));
  border-color: hsl(var(--fn-border));
  color: hsl(var(--fn-foreground));
}

/* اعداد هم‌عرض برای شمارنده‌ها و مقادیر عددی خارج از جدول */
.fn-num {
  font-variant-numeric: tabular-nums;
}

/* متن مات هماهنگ با توکن */
.fn-muted {
  color: hsl(var(--fn-muted-foreground));
}

/* آیکون هم‌رنگ برند — جایگزین .text-indigo تعریف‌نشده (باگ ۵) */
.fn-accent {
  color: hsl(var(--fn-primary));
}

/* پله‌های شفافیتی که بوت‌استرپ ندارد ولی تمپلیت‌ها ۲۱ بار استفاده
   می‌کنند (باگ ۱۴). بوت‌استرپ فقط 10/25/50/75/100 دارد؛ بدون این‌ها
   --bs-bg-opacity روی مقدار پیش‌فرض ۱ می‌ماند و پس‌زمینه به‌جای تینت
   ملایم کاملاً مات می‌شود. */
.bg-opacity-5 {
  --bs-bg-opacity: 0.05;
}

.bg-opacity-20 {
  --bs-bg-opacity: 0.2;
}
