/* =====================================================================
   compact.css — بازطراحی «داشبورد مدرن فشرده» (Compact Modern Dashboard)
   نسخه: v3 | بارگذاری: بعد از responsive.css در header.php
   ساختار: [1] توکن‌های فشردگی  [2] کارت‌ها/جدول‌ها  [3] کاشی‌های آمار
           [4] CRUD دوستونی  [5] ویجت محدود  [6] حالت تمرکز (Focus)
           [7] پنل کناری زمینه (Side Panel)  [8] خط زمان تعاملی
           [9] دارک‌مود هوشمند (گرم)  [10] ریسپانسیو
   ===================================================================== */

/* ── [1] توکن‌های فشردگی — ریتم واحد کل اپ ─────────────────────────── */
:root{
  --tile-pad: 12px;                 /* پدینگ واحد کاشی‌ها */
  --card-pad-compact: 16px;         /* پدینگ واحد کارت‌ها */
  --row-h: 40px;                    /* ارتفاع سطر فشرده جدول */
  --radius-unified: 12px;           /* شعاع گوشه یکسان */

  /* رنگ‌های گرم دارک‌مود هوشمند (کهربایی/نارنجی برای تاکید شب) */
  --warm-50:  #fff7ed;
  --warm-500: #f59e0b;
  --warm-600: #d97706;
}

/* ── [2] کارت‌ها و جدول‌ها — فشرده‌سازی بدون شکستن ظاهر ─────────────── */
/* کارت‌ها: پدینگ واحد ۱۶px و شعاع یکسان */
.card-pad{ padding: var(--card-pad-compact); }
.card{ border-radius: var(--radius-unified); }
.card-accent-top{ border-radius: var(--radius-unified); }

/* جدول: حذف پدینگ اضافی، سطر فشرده ۴۰px */
.table thead th{
  padding: 8px 10px;
  font-size: 11px;
  line-height: 1.4;
}
.table tbody td{
  padding: 7px 10px;
  line-height: 1.45;
}
.table tbody tr{ height: var(--row-h); }
.table{ font-size: 13px; }
.table.table-sm td, .table.table-sm th{ padding: 5px 8px; font-size: 12px; }
.table-wrap{ border-radius: var(--radius-unified); border: 1px solid var(--border-color); }
.table-wrap .table thead th{ background: var(--surface-muted); position: sticky; top: 0; z-index: 1; }

/* فاصله عمودی صفحات: کاهش ۴۰٪ فضای سفید */
.app-main{ padding: var(--sp-4) var(--sp-5); }
.page-head{ margin-bottom: var(--sp-3); }
.mb-6{ margin-bottom: var(--sp-4) !important; }
.mb-5{ margin-bottom: var(--sp-3) !important; }
.mb-4{ margin-bottom: var(--sp-3) !important; }

/* ── [3] کاشی آمار درون‌خطی (Tile): آیکون + برچسب + مقدار افقی ─────── */
.stat-card{
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  padding: var(--tile-pad) var(--sp-4);
  border-radius: var(--radius-unified);
  min-height: 0;
}
.stat-card .text-3xl{ font-size: 20px; margin: 0 !important; }
.stat-card .text-gray-500{ font-size: 11.5px; }
.stat-card::before{ width: 3px; }   /* نوار رنگی باریک‌تر */

/* آیکون کاشی: درجه کوچک با پس‌زمینه ملایم */
.tile-ico{
  flex: 0 0 auto;
  width: 34px; height: 34px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 10px;
  background: color-mix(in srgb, var(--stat-color, var(--color-primary)) 12%, transparent);
  color: var(--stat-color, var(--color-primary));
}
.tile-ico .icon{ width: 17px; height: 17px; }

/* ── [4] CRUD دوستونی: فرم باریک چپ + لیست پهن راست ───────────────── */
.crud-layout{
  display: grid;
  grid-template-columns: minmax(0,3fr) minmax(0,9fr);   /* ۲۵٪ / ۷۵٪ */
  gap: var(--sp-4);
  align-items: start;
}
.crud-layout .crud-form{ position: sticky; top: var(--sp-4); }
.crud-list{ max-height: calc(100vh - 160px); overflow: auto; }

/* فرم‌های چندستونه: گرید واکنش‌گرا ۲/۳ ستونه */
.form-grid{ display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px 12px; }
.form-grid .fg-full{ grid-column: 1 / -1; }
.field-group{
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  padding: 10px 12px 12px;
  margin-bottom: 12px;
}
.field-group > .fg-title{
  font-size: 11.5px; font-weight: 700; color: var(--gray-500);
  margin-bottom: 8px; display: flex; align-items: center; gap: 6px;
}
.field-label{ margin-bottom: 4px; display: block; }

/* ── [5] ویجت محدود (تقویم/نمودار کوچک/فیلتر) ─────────────────────── */
.widget-box{
  width: 100%;
  max-width: 360px;
  margin-inline: auto;
}
.widget-box > .card{ padding: var(--card-pad-compact); }

/* ── [6] حالت تمرکز (Focus Mode) — تمام‌صفحه شناور ────────────────── */
.focusable{ cursor: default; }

/* ── تقویم جمع‌وجور گزارش بازدید ── */
.cal-v2{ padding: 12px; }
.cal-v2 .cal-table{ border-spacing: 2px; font-size: 12px; }
.cal-v2 .cal-day{ padding: 6px 0; border-radius: 8px; }
.cal-v2 .cal-header b{ font-size: 14px; }
.cal-v2 .cal-nav{ width: 28px; height: 28px; }
.cal-v2 .cal-today-btn{ font-size: 10.5px; padding: 4px 9px; }
@media (min-width: 1024px){
  .cal-v2{ max-width: 340px; margin: 0 auto; }
}

/* ── جدول کارشناسان: راستای ستون‌ها بدون هم‌پوشانی ── */
.experts-table td{ overflow-wrap: break-word; word-break: break-word; }
.experts-table td:nth-child(5){ font-size: 12.5px; }
.focusable .focus-hint{
  position: absolute; top: 8px; inset-inline-end: 8px;
  width: 22px; height: 22px; border-radius: 6px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--surface-muted); color: var(--gray-400);
  opacity: 0; transition: opacity var(--t-fast);
  pointer-events: none;
}
.focusable:hover .focus-hint{ opacity: 1; }
body.focus-active{ overflow: hidden; }
body.focus-active > .app-shell > .app-main > *:not(.is-focused):not(.page-head){
  opacity: .12; filter: saturate(.2); pointer-events: none;
  transition: opacity var(--t-base);
}
.is-focused{
  position: fixed !important;
  inset: 3vh 3vw;
  z-index: var(--z-modal);
  overflow: auto;
  background: var(--surface);
  border-radius: var(--radius-lg);
  box-shadow: 0 24px 64px -16px rgba(10,14,30,.45);
  padding: var(--sp-5);
  cursor: zoom-out;
  animation: scaleIn .22s var(--ease) both;
}
.is-focused .focus-hint{ opacity: 1 !important; }
.focus-close{
  position: fixed; top: 12px; inset-inline-start: 12px; z-index: calc(var(--z-modal) + 1);
  border: none; cursor: pointer;
  background: var(--danger-50); color: var(--danger-600);
  width: 30px; height: 30px; border-radius: 8px; font-size: 15px; font-weight: 700;
}

/* ── [7] پنل کناری زمینه (Contextual Side Panel) ───────────────────── */
.row-selectable{ cursor: pointer; }
.side-panel{
  position: fixed; top: 0; bottom: 0; inset-inline-start: 0;
  width: min(400px, 92vw);
  background: var(--surface);
  border-inline-end: 1px solid var(--border-color);
  box-shadow: 12px 0 40px -12px rgba(10,14,30,.28);
  z-index: calc(var(--z-modal) + 2);
  transform: translateX(105%);
  transition: transform .28s var(--ease);
  display: flex; flex-direction: column;
}
.side-panel.open{ transform: translateX(0); }
.side-panel-head{
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px;
  border-bottom: 1px solid var(--border-color);
  background: var(--surface-muted);
}
.side-panel-head h4{ margin: 0; font-size: 14px; display: flex; align-items: center; gap: 8px; }
.side-panel-body{ padding: 16px; overflow: auto; flex: 1; }
.sp-field{ margin-bottom: 10px; }
.sp-field .sp-label{ font-size: 11px; color: var(--gray-400); margin-bottom: 2px; }
.sp-field .sp-value{ font-size: 13.5px; font-weight: 600; }
.sp-actions{ display: flex; gap: 8px; flex-wrap: wrap; margin-top: 14px; }
.side-backdrop{
  position: fixed; inset: 0; background: rgba(10,14,30,.35);
  z-index: calc(var(--z-modal) + 1); opacity: 0; pointer-events: none;
  transition: opacity var(--t-base);
}
.side-backdrop.open{ opacity: 1; pointer-events: auto; }

/* ── [8] خط زمان تعاملی (Interactive Timeline) ─────────────────────── */
.timeline{
  position: relative;
  display: flex; align-items: flex-start;
  gap: 0;
  padding: 14px 4px 8px;
  overflow-x: auto;
}
.timeline::before{
  content: '';
  position: absolute; top: 24px; inset-inline: 12px;
  height: 2px; background: var(--gray-200);
}
.tl-node{
  position: relative;
  flex: 1 0 92px;
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  background: none; border: none; cursor: pointer;
  font-family: inherit;
}
.tl-dot{
  width: 14px; height: 14px; border-radius: 50%;
  background: var(--tl-color, var(--color-primary));
  border: 3px solid var(--surface);
  box-shadow: 0 0 0 2px var(--tl-color, var(--color-primary));
  transition: transform var(--t-fast), box-shadow var(--t-fast);
  z-index: 1;
}
.tl-node:hover .tl-dot{ transform: scale(1.35); }
.tl-node.is-active .tl-dot{ box-shadow: 0 0 0 4px color-mix(in srgb, var(--tl-color, var(--color-primary)) 35%, transparent); }
.tl-time{ font-size: 10.5px; color: var(--gray-400); white-space: nowrap; }
.tl-label{ font-size: 11.5px; font-weight: 600; color: var(--gray-600); text-align: center; }
.tl-detail{
  margin-top: 10px;
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-sm);
  padding: 10px 12px;
  font-size: 12.5px;
  background: var(--surface-muted);
  animation: fadeInUp .25s var(--ease) both;
}

/* ── [9] دارک‌مود هوشمند — کاهش کنتراست + تاکید گرم ────────────────── */
html.dark-mode{
  --gray-50:  #1b1e2c;  --gray-100: #20242f;  --gray-150: #262a38;
  --gray-200: #2e3342;  --gray-300: #3a4052;  --gray-400: #8a90a5;
  --gray-500: #9aa0b5;  --gray-600: #a8aec2;  --gray-700: #c2c7d8;
  --gray-800: #d9dde9;  --gray-900: #edeef5;
  --surface: #1a1d29;   --surface-muted: #20242f;  --surface-sunken: #161923;
  --border-color: #2a2e3d;  --border-strong: #3a4052;
  --color-bg: #14161f;
  /* تاکید گرم: اقدامات مهم شب با کهربایی */
  --focus-warm: var(--warm-500);
}
html.dark-mode .page-title .icon{ color: var(--warm-500); }
html.dark-mode .stat-card{ background: var(--surface-muted); }
html.dark-mode .btn-primary{
  background: color-mix(in srgb, var(--color-button) 82%, var(--warm-500));
  border-color: transparent;
}
html.dark-mode .badge-primary{ background: color-mix(in srgb, var(--color-primary) 30%, transparent); }
html.dark-mode .table thead th{ background: var(--surface-sunken); }
html.dark-mode .card, html.dark-mode .stat-card{ box-shadow: none; border-color: var(--border-color); }

/* ── [10] ریسپانسیو ────────────────────────────────────────────────── */
@media (max-width: 1024px){
  .crud-layout{ grid-template-columns: 1fr; }
  .crud-layout .crud-form{ position: static; }
  .crud-list{ max-height: none; }
  .is-focused{ inset: 2vh 2vw; }
}
@media (max-width: 640px){
  .app-main{ padding: var(--sp-3); }
  .form-grid{ grid-template-columns: 1fr; }
  .stat-card{ padding: 10px 12px; }
  .tile-ico{ width: 28px; height: 28px; }
  .side-panel{ width: 100vw; }
}

/* حرکت کمتر برای کاربران حساس */
@media (prefers-reduced-motion: reduce){
  .side-panel, .is-focused{ transition: none; animation: none; }
}
