/* ════════════════════════════════════════════════════════════
   نوین ذهن — Design System v2 (Light · Lavender · Modern)
   Font: Vazirmatn | RTL | Persian
   ════════════════════════════════════════════════════════════ */

@font-face {
  font-family: 'Vazirmatn';
  src: url('/static/fonts/Vazirmatn-Regular.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Vazirmatn';
  src: url('/static/fonts/Vazirmatn-Medium.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Vazirmatn';
  src: url('/static/fonts/Vazirmatn-Bold.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  /* ── سطوح و پس‌زمینه ── */
  --bg:               #f5f3ee;            /* کرم گرم (مثل اسکرین‌شات اولیا) */
  --bg-2:             #ece8e0;            /* یک پله تیره‌تر برای hover */
  --surface:          #ffffff;            /* کارت‌ها */
  --surface-2:        #faf7f2;            /* سطح ثانویه */
  --surface-soft:     #efeaff;            /* لاوندر نرم */
  --border:           #ece6dc;            /* خط جداکننده گرم */
  --border-strong:    #d8d2c5;

  /* ── رنگ‌ها ── */
  --primary:          #2d1b6e;            /* بنفش تیره — CTA اصلی */
  --primary-2:        #4c34a8;            /* بنفش روشن‌تر برای hover/gradient */
  --primary-3:        #7259da;
  --primary-soft:     #ece8ff;            /* پس‌زمینه‌ی لاوندر */
  --primary-soft-2:   #ddd5ff;

  --accent:           #f59e0b;            /* نارنجی-آمبر مثل آواتار */
  --accent-2:         #d97706;
  --accent-soft:      #fff1d6;

  --success:          #16a34a;
  --success-soft:     #e7f7ee;
  --danger:           #dc2626;
  --danger-soft:      #fde8e8;
  --warning:          #ea580c;
  --warning-soft:     #fff0e1;
  --info:             #0284c7;
  --info-soft:        #e0f2fe;

  /* ── متن ── */
  --text:             #1a1730;
  --text-2:           #3a3550;
  --text-muted:       #7a7384;

  /* ── ابعاد ── */
  --sidebar-w:        260px;
  --topbar-h:         68px;
  --radius-sm:        10px;
  --radius:           14px;
  --radius-lg:        20px;
  --radius-xl:        26px;

  /* ── سایه‌ها (نرم و حرفه‌ای) ── */
  --shadow-xs:        0 1px 2px rgba(26,23,48,.04);
  --shadow-sm:        0 2px 8px rgba(26,23,48,.05);
  --shadow:           0 4px 18px rgba(26,23,48,.06);
  --shadow-lg:        0 12px 32px rgba(26,23,48,.10);
  --shadow-glow:      0 0 0 4px rgba(45,27,110,.08);

  /* ── حرکت ── */
  --ease:             cubic-bezier(.22,.61,.36,1);
  --t-fast:           .14s var(--ease);
  --t:                .22s var(--ease);
}

/* legacy aliases */
:root{
  --primary-dim:      var(--primary-soft);
  --success-dim:      var(--success-soft);
  --danger-dim:       var(--danger-soft);
  --warning-dim:      var(--warning-soft);
  --surface2:         var(--surface-2);
  --accent:           #f59e0b;
  --card-bg:          var(--surface);
  --input-bg:         var(--surface);
}
:root[data-theme="dark"]{
  --card-bg:          var(--surface);
  --input-bg:         var(--surface-2);
}

/* ── Dark Theme ─────────────────────────────────────────────
   با data-theme="dark" روی <html> فعال می‌شود */
:root[data-theme="dark"]{
  --bg:               #0e0d18;
  --bg-2:             #181628;
  --surface:          #1a1830;
  --surface-2:        #221f3c;
  --surface-soft:     #2a2750;
  --border:           #2f2c4d;
  --border-strong:    #403c66;

  --primary:          #a89dff;
  --primary-2:        #8b7df5;
  --primary-3:        #c1b6ff;
  --primary-soft:     rgba(168,157,255,.14);
  --primary-soft-2:   rgba(168,157,255,.22);

  --accent:           #fbbf24;
  --accent-soft:      rgba(251,191,36,.14);

  --success:          #4ade80;
  --success-soft:     rgba(74,222,128,.13);
  --danger:           #f87171;
  --danger-soft:      rgba(248,113,113,.13);
  --warning:          #fb923c;
  --warning-soft:     rgba(251,146,60,.13);
  --info:             #38bdf8;
  --info-soft:        rgba(56,189,248,.13);

  --text:             #e8e6f5;
  --text-2:           #c5c1dc;
  --text-muted:       #8e89a8;

  --shadow-xs:        0 1px 2px rgba(0,0,0,.4);
  --shadow-sm:        0 2px 8px rgba(0,0,0,.32);
  --shadow:           0 4px 18px rgba(0,0,0,.42);
  --shadow-lg:        0 12px 32px rgba(0,0,0,.55);
  --shadow-glow:      0 0 0 4px rgba(168,157,255,.18);
}

:root[data-theme="dark"] .sidebar{
  background:linear-gradient(180deg,#1a1830 0%, #15132a 100%);
  border-left-color:var(--border);
}
:root[data-theme="dark"] .topbar{background:rgba(20,18,40,.7)}
:root[data-theme="dark"] .nav-link.active{
  background:linear-gradient(135deg,#5b48d1,#7259da);
  color:#fff;
}
:root[data-theme="dark"] .stat-card,
:root[data-theme="dark"] .card{background:var(--surface)}
:root[data-theme="dark"] tbody tr:hover{background:rgba(168,157,255,.05)}
:root[data-theme="dark"] thead th{background:var(--surface-2)}
:root[data-theme="dark"] input[type=text],
:root[data-theme="dark"] input[type=number],
:root[data-theme="dark"] input[type=password],
:root[data-theme="dark"] input[type=email],
:root[data-theme="dark"] input[type=tel],
:root[data-theme="dark"] input[type=date],
:root[data-theme="dark"] input[type=time],
:root[data-theme="dark"] textarea{
  /* background-color (نه shorthand) — تا background-image/position/size base پاک نشه */
  background-color:var(--surface-2);
  color:var(--text);
  border-color:var(--border-strong);
}
:root[data-theme="dark"] select{
  background-color:var(--surface-2);
  color:var(--text);
  border-color:var(--border-strong);
  /* chevron تک — همان position/repeat/size رو حفظ می‌کنیم */
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='%238e89a8' d='M6 8.5L2 4.5h8z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:left 12px center;
  background-size:12px;
}
:root[data-theme="dark"] select option{
  background:#1a1830;
  color:#e8e6f5;
}
:root[data-theme="dark"] input:focus,
:root[data-theme="dark"] select:focus,
:root[data-theme="dark"] textarea:focus{
  background-color:var(--surface);
  border-color:var(--primary);
}
:root[data-theme="dark"] .btn-ghost{background:var(--surface);color:var(--text);border-color:var(--border-strong)}
:root[data-theme="dark"] .alert{background:var(--surface);color:var(--text)}
:root[data-theme="dark"] .modal{background:var(--surface)}
:root[data-theme="dark"] .modal-footer{background:var(--surface-2)}
:root[data-theme="dark"] .tabs{background:var(--surface-2);border-color:var(--border)}
:root[data-theme="dark"] .tab-btn.active{background:var(--surface);box-shadow:0 0 0 1px var(--border-strong)}
:root[data-theme="dark"] .hero{
  background:linear-gradient(135deg,#1a1830 0%, #251f4a 100%);
  border-color:var(--border);
}
:root[data-theme="dark"] .filter-bar{background:var(--surface)}
:root[data-theme="dark"] .table-wrap{background:transparent}
:root[data-theme="dark"] .jdp-popup{background:var(--surface)!important;border-color:var(--border)!important}
:root[data-theme="dark"] .jdp-days-grid button{color:var(--text)!important}
:root[data-theme="dark"] .jdp-year-sel{background:var(--surface-2)!important;color:var(--text)!important}

/* ── Theme toggle button ── */
.theme-toggle{
  background:var(--surface);
  border:1px solid var(--border-strong);
  color:var(--text);
  width:38px;height:38px;
  border-radius:11px;
  display:inline-flex;align-items:center;justify-content:center;
  cursor:pointer;
  transition:all var(--t-fast);
  font-size:1.05rem;
}
.theme-toggle:hover{background:var(--primary-soft);color:var(--primary);transform:translateY(-1px)}
.theme-toggle .sun{display:inline}
.theme-toggle .moon{display:none}
:root[data-theme="dark"] .theme-toggle .sun{display:none}
:root[data-theme="dark"] .theme-toggle .moon{display:inline}

html{font-size:15px;-webkit-text-size-adjust:100%}
body{
  font-family:'Vazirmatn',system-ui,sans-serif;
  background:var(--bg);
  color:var(--text);
  direction:rtl;
  min-height:100vh;
  min-height:100dvh;
  overflow-x:hidden;
  font-feature-settings:"ss01","cv11";
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  -webkit-tap-highlight-color:transparent;
}
@supports (padding:max(0px)){
  body{
    padding-left:env(safe-area-inset-left);
    padding-right:env(safe-area-inset-right);
  }
}
a{color:var(--primary);text-decoration:none;transition:color var(--t-fast)}
a:hover{color:var(--primary-2)}

/* ╔══════════════════════════════════════════
   Layout
   ╚══════════════════════════════════════════ */
.layout{display:flex;min-height:100vh;min-height:100dvh}

/* ── Sidebar ── */
.sidebar{
  width:var(--sidebar-w);
  background:linear-gradient(180deg,#ffffff 0%, #faf7f2 100%);
  border-left:1px solid var(--border);
  display:flex;
  flex-direction:column;
  position:fixed;
  top:0; right:0;
  height:100vh;
  height:100dvh;
  z-index:100;
  transition:transform .28s var(--ease);
  box-shadow:1px 0 0 rgba(45,27,110,.02);
  padding-top:env(safe-area-inset-top);
  padding-bottom:env(safe-area-inset-bottom);
}

.sidebar-logo{
  padding:22px 20px 18px;
  display:flex;
  align-items:center;
  gap:12px;
  border-bottom:1px solid var(--border);
}
.sidebar-logo img{
  width:42px;height:42px;
  border-radius:12px;
  box-shadow:0 4px 12px rgba(45,27,110,.18);
}
.sidebar-logo .logo-icon{
  width:42px;height:42px;
  background:linear-gradient(135deg,var(--primary),var(--primary-2));
  border-radius:12px;
  display:flex;align-items:center;justify-content:center;
  font-size:18px;color:#fff;font-weight:800;
  flex-shrink:0;
  box-shadow:0 6px 16px rgba(45,27,110,.25);
}
.sidebar-logo span{font-size:1.02rem;font-weight:800;color:var(--text);letter-spacing:-.2px}

.sidebar-nav{flex:1;padding:14px 12px;overflow-y:auto}
.sidebar-nav::-webkit-scrollbar{width:4px}
.sidebar-nav::-webkit-scrollbar-thumb{background:rgba(45,27,110,.15);border-radius:4px}

.nav-section{
  font-size:.7rem;
  color:var(--text-muted);
  letter-spacing:.08em;
  padding:18px 12px 6px;
  font-weight:700;
}
/* بخش‌های منو جمع‌شونده — کلیک روی تیتر باز/بسته می‌کنه */
.nav-section.nav-section-toggle{
  cursor:pointer;display:flex;align-items:center;justify-content:space-between;
  user-select:none;border-radius:8px;transition:background .15s;
}
.nav-section.nav-section-toggle:hover{background:var(--primary-soft)}
.nav-section.nav-section-toggle::after{content:'▾';font-size:.78rem;opacity:.65;transition:transform .2s}
.nav-section.nav-section-toggle.is-collapsed::after{transform:rotate(-90deg)}
/* دسترسی سریع (فیوریت) */
.nav-fav{margin-inline-start:auto;opacity:.4;font-size:1rem;cursor:pointer;line-height:1;padding:0 2px;transition:transform .12s,opacity .12s,color .12s;flex-shrink:0}
.nav-fav:hover{opacity:1;transform:scale(1.25)}
.nav-fav.on{opacity:1;color:#f59e0b}
.nav-favs{margin-bottom:8px;padding-bottom:8px;border-bottom:1px dashed var(--border)}
.nav-favs-title{color:#d97706;cursor:default}
.nav-fav-pinned{background:rgba(245,158,11,.08)}
/* وقتی آیتم عدد/بَج داره، ستاره از روش کنار بره (رو هم نیفتن) — هم با JS، هم با :has() */
.nav-link.nav-has-badge .nav-fav,
.nav-link:has(.nav-badge) .nav-fav{margin-inline-end:42px}

/* ── باتم‌نَوبارِ مدیریت/مالی (موبایل، لیکویید گلس) — منوی برگری هم سرجاش هست ── */
.app-bottomnav{display:none}
@media (max-width:900px){
  .app-bottomnav{
    display:flex;justify-content:space-around;align-items:flex-end;
    position:fixed;left:10px;right:10px;bottom:10px;z-index:1000;
    padding:8px 6px;border-radius:22px;
    background:rgba(255,255,255,.62);
    backdrop-filter:blur(18px) saturate(180%);-webkit-backdrop-filter:blur(18px) saturate(180%);
    border:1px solid rgba(255,255,255,.6);
    box-shadow:0 8px 30px rgba(0,0,0,.2);
  }
  :root[data-theme="dark"] .app-bottomnav{background:rgba(20,18,40,.62);border-color:rgba(255,255,255,.12)}
  .app-bn-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
    text-decoration:none;color:var(--text);font-size:.64rem;font-weight:700;position:relative;padding:4px 2px}
  .app-bn-ic{font-size:1.3rem;line-height:1}
  .app-bn-item.active{color:var(--primary)}
  .app-bn-center{font-weight:800}
  .app-bn-center .app-bn-ic{
    width:48px;height:48px;border-radius:50%;margin-top:-24px;
    display:flex;align-items:center;justify-content:center;
    background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff;font-size:1.4rem;
    box-shadow:0 6px 16px rgba(79,70,229,.5);border:3px solid rgba(255,255,255,.85)}
  .app-bn-dot{position:absolute;top:2px;right:calc(50% - 16px);width:8px;height:8px;border-radius:50%;background:var(--danger,#ef4444)}
  /* فضای پایین تا باتم‌بار محتوا رو نپوشونه */
  .main .content{padding-bottom:90px !important}
  /* وقتی منوی برگری بازه، باتم‌بار مخفی شه تا روی سایدبار نیفته */
  body:has(.sidebar.open) .app-bottomnav{display:none}
}

.nav-link{
  display:flex;
  align-items:center;
  gap:11px;
  padding:10px 12px;
  border-radius:var(--radius-sm);
  color:var(--text-2);
  font-size:.9rem;
  font-weight:500;
  transition:background var(--t-fast), color var(--t-fast), transform var(--t-fast);
  margin-bottom:2px;
  position:relative;
}
.nav-link:hover{background:var(--primary-soft);color:var(--primary);transform:translateX(-2px)}
.nav-link.active{
  background:linear-gradient(135deg,var(--primary),var(--primary-2));
  color:#fff;
  box-shadow:0 6px 16px rgba(45,27,110,.22);
}
.nav-link.active::before{
  content:'';position:absolute;right:-12px;top:50%;transform:translateY(-50%);
  width:4px;height:18px;background:var(--accent);border-radius:4px;
}
.nav-link .icon{font-size:1rem;width:22px;text-align:center}

.sidebar-footer{padding:14px 12px;border-top:1px solid var(--border)}
.user-card{
  display:flex;align-items:center;gap:10px;
  padding:10px 12px;
  border-radius:var(--radius);
  background:var(--surface-2);
  border:1px solid var(--border);
}
.user-avatar{
  width:36px;height:36px;
  border-radius:50%;
  background:linear-gradient(135deg,var(--accent),var(--accent-2));
  display:flex;align-items:center;justify-content:center;
  font-size:.86rem;font-weight:800;color:#fff;
  flex-shrink:0;
  box-shadow:0 4px 10px rgba(245,158,11,.35);
}
.user-info{flex:1;min-width:0}
.user-name{font-size:.84rem;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.user-role{font-size:.72rem;color:var(--text-muted)}

.user-actions{display:flex;gap:6px;flex-shrink:0}
.user-action-btn{
  display:flex;align-items:center;justify-content:center;
  width:32px;height:32px;
  border-radius:9px;
  transition:all var(--t-fast);
  text-decoration:none;
  cursor:pointer;
}
/* SVG داخل دکمه نباید کلیک رو بگیره — وگرنه روی بعضی مرورگرها لینک کار نمی‌کنه */
.user-action-btn svg{pointer-events:none}
.ua-key{background:var(--primary-soft);color:var(--primary);border:1px solid rgba(45,27,110,.1)}
.ua-key:hover{background:var(--primary);color:#fff;transform:translateY(-1px)}
.ua-logout{background:var(--danger-soft);color:var(--danger);border:1px solid rgba(220,38,38,.12)}
.ua-logout:hover{background:var(--danger);color:#fff;transform:translateY(-1px)}

/* Nav badges (شمارنده روی منو) */
.nav-link{position:relative}
.nav-badge{
  position:absolute;left:10px;top:50%;transform:translateY(-50%);
  min-width:20px;height:20px;padding:0 7px;
  border-radius:999px;
  font-size:.7rem;font-weight:800;
  display:flex;align-items:center;justify-content:center;
  color:#fff;
  box-shadow:0 4px 10px rgba(220,38,38,.32);
}
.nav-badge-danger{background:linear-gradient(135deg,#ef4444,#dc2626)}
.nav-badge-warning{background:linear-gradient(135deg,#f59e0b,#d97706);box-shadow:0 4px 10px rgba(245,158,11,.32)}
.nav-badge-info{background:linear-gradient(135deg,#38bdf8,#0284c7);box-shadow:0 4px 10px rgba(2,132,199,.32)}
.nav-link.active .nav-badge{box-shadow:0 0 0 2px rgba(255,255,255,.4), 0 4px 10px rgba(220,38,38,.4)}

/* ╔══════════════════════════════════════════
   Main + Topbar
   ╚══════════════════════════════════════════ */
.main{
  margin-right:var(--sidebar-w);
  flex:1;
  display:flex;
  flex-direction:column;
  min-height:100vh;
  min-height:100dvh;
  min-width:0;
}

.topbar{
  height:var(--topbar-h);
  background:rgba(255,255,255,.7);
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid var(--border);
  display:flex;
  align-items:center;
  padding:0 28px;
  gap:14px;
  position:sticky;
  top:0;
  z-index:50;
}
.topbar-title{
  font-size:1.1rem;font-weight:800;flex:1;letter-spacing:-.3px;
  min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.topbar-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}
.perf-chip{display:inline-flex;align-items:center;gap:2px;padding:5px 11px;border-radius:999px;font-weight:800;font-size:.9rem;text-decoration:none;flex-shrink:0}
.perf-success{background:var(--success-soft);color:var(--success)}
.perf-warning{background:var(--warning-soft);color:var(--warning)}
.perf-danger {background:var(--danger-soft); color:var(--danger)}
.term-switch{display:flex;align-items:center;gap:6px;flex-shrink:0;margin:0}
.term-switch .term-switch-icon{font-size:1rem;opacity:.85}

.content{padding:28px;flex:1;max-width:1400px;width:100%;margin:0 auto}

/* ╔══════════════════════════════════════════
   Cards
   ╚══════════════════════════════════════════ */
.card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:22px;
  box-shadow:var(--shadow-sm);
  transition:box-shadow var(--t), transform var(--t);
}
.card:hover{box-shadow:var(--shadow)}
.card-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:18px;padding-bottom:14px;
  border-bottom:1px solid var(--border);
}
.card-title{font-size:1.02rem;font-weight:800;letter-spacing:-.2px}

/* ── Stat Grid (آمار رنگی) ── */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin-bottom:24px}
.stat-card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:18px 20px;
  display:flex;
  align-items:center;
  gap:14px;
  box-shadow:var(--shadow-sm);
  transition:transform var(--t), box-shadow var(--t), border-color var(--t);
}
.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--primary-soft-2)}
.stat-icon{
  width:48px;height:48px;
  border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  font-size:1.35rem;flex-shrink:0;
}
.stat-icon.primary{background:var(--primary-soft);color:var(--primary)}
.stat-icon.success{background:var(--success-soft);color:var(--success)}
.stat-icon.danger {background:var(--danger-soft);color:var(--danger)}
.stat-icon.warning{background:var(--warning-soft);color:var(--warning)}
.stat-icon.info   {background:var(--info-soft);color:var(--info)}
.stat-value{font-size:1.55rem;font-weight:800;line-height:1.15;letter-spacing:-.4px;
            font-family:inherit;font-variant-numeric:tabular-nums;
            font-feature-settings:'tnum' 1,'lnum' 1}
/* اعداد در همه‌ی کارت‌های آنالیتیک — همون فونت سایت + tabular-nums برای alignment */
.stat-card .num,.kpi-num,.metric-num,.value-num{
  font-family:inherit !important;font-variant-numeric:tabular-nums;
}
.stat-label{font-size:.78rem;color:var(--text-muted);margin-top:3px}

/* ╔══════════════════════════════════════════
   Tables
   ╚══════════════════════════════════════════ */
.table-wrap{overflow-x:auto;border-radius:var(--radius);background:var(--surface)}
table{width:100%;border-collapse:collapse;font-size:.9rem}
thead th{
  background:var(--surface-2);
  color:var(--text-muted);
  font-weight:700;
  font-size:.74rem;
  letter-spacing:.04em;
  padding:13px 16px;
  text-align:right;
  white-space:nowrap;
  border-bottom:1px solid var(--border);
  text-transform:uppercase;
}
tbody tr{border-bottom:1px solid var(--border);transition:background var(--t-fast)}
tbody tr:hover{background:#fcfaff}
tbody td{padding:12px 16px;vertical-align:middle}
tbody tr:last-child{border-bottom:none}

/* ╔══════════════════════════════════════════
   Buttons
   ╚══════════════════════════════════════════ */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  padding:10px 18px;
  border-radius:12px;
  border:none;
  cursor:pointer;
  font-family:inherit;
  font-size:.88rem;
  font-weight:700;
  transition:all var(--t-fast);
  white-space:nowrap;
  text-decoration:none;
  letter-spacing:-.1px;
  position:relative;
  overflow:hidden;
}
.btn:active{transform:translateY(1px)}
.btn-sm{padding:6px 12px;font-size:.8rem;border-radius:9px}
.btn-xs{padding:4px 10px;font-size:.74rem;border-radius:7px}
.btn-lg{padding:14px 26px;font-size:.95rem;border-radius:14px}

.btn-primary{
  background:linear-gradient(135deg,var(--primary),var(--primary-2));
  color:#fff;
  box-shadow:0 6px 16px rgba(45,27,110,.22);
}
.btn-primary:hover{box-shadow:0 10px 22px rgba(45,27,110,.32);transform:translateY(-1px);color:#fff}

.btn-success{
  background:linear-gradient(135deg,#16a34a,#15803d);
  color:#fff;
  box-shadow:0 6px 16px rgba(22,163,74,.22);
}
.btn-success:hover{box-shadow:0 10px 22px rgba(22,163,74,.32);transform:translateY(-1px)}

.btn-danger{
  background:linear-gradient(135deg,#dc2626,#b91c1c);
  color:#fff;
  box-shadow:0 6px 16px rgba(220,38,38,.18);
}
.btn-danger:hover{box-shadow:0 10px 22px rgba(220,38,38,.28);transform:translateY(-1px)}

.btn-warning{
  background:linear-gradient(135deg,#ea580c,#c2410c);
  color:#fff;
  box-shadow:0 6px 16px rgba(234,88,12,.18);
}
.btn-warning:hover{box-shadow:0 10px 22px rgba(234,88,12,.28);transform:translateY(-1px)}

.btn-ghost{
  background:var(--surface);
  color:var(--text);
  border:1px solid var(--border-strong);
}
.btn-ghost:hover{background:var(--surface-soft);color:var(--primary);border-color:var(--primary-soft-2)}

.btn-icon{padding:7px;border-radius:9px}

/* ╔══════════════════════════════════════════
   Forms
   ╚══════════════════════════════════════════ */
.form-group{margin-bottom:16px}
label{display:block;font-size:.82rem;font-weight:700;color:var(--text-2);margin-bottom:6px}

input[type=text],input[type=number],input[type=password],
input[type=email],input[type=tel],input[type=date],input[type=time],
select,textarea{
  width:100%;
  background:var(--surface);
  border:1.5px solid var(--border-strong);
  border-radius:11px;
  color:var(--text);
  padding:11px 14px;
  font-family:inherit;
  font-size:.9rem;
  transition:border-color var(--t-fast), box-shadow var(--t-fast), background var(--t-fast);
  outline:none;
  direction:rtl;
}
input::placeholder,textarea::placeholder{color:#a8a2b3}
input:hover:not(:focus),select:hover:not(:focus),textarea:hover:not(:focus){border-color:#bfb6a4}
input:focus,select:focus,textarea:focus{
  border-color:var(--primary);
  box-shadow:var(--shadow-glow);
  /* background-color (نه shorthand) — تا chevron در select پاک نشه */
  background-color:#fff;
}
select{
  cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='%237a7384' d='M6 8.5L2 4.5h8z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:left 12px center;
  background-size:12px;
  padding-left:32px;
  /* جلوی native browser dropdown arrow رو می‌گیره — chevron تکراری حذف می‌شه */
  -webkit-appearance:none;
  -moz-appearance:none;
  appearance:none;
}
select option{background:#fff;color:#1a1730}
textarea{resize:vertical;min-height:88px;line-height:1.7}

input[type=checkbox],input[type=radio]{accent-color:var(--primary);width:auto;margin-left:6px}

/* next-sessions card */
.next-sessions-card{margin-bottom:18px;padding:18px 20px;background:linear-gradient(135deg,#fff,var(--primary-soft))}
:root[data-theme="dark"] .next-sessions-card{background:linear-gradient(135deg,var(--surface),var(--surface-2))}
.next-sessions-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}
.next-sessions-title{font-size:1rem;font-weight:800}
.next-sessions-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.next-session-item{
  display:flex;align-items:center;gap:10px;
  background:var(--surface);border:1px solid var(--border);
  padding:10px 14px;border-radius:12px;
}
.next-session-icon{font-size:1.2rem}
.next-session-date{font-weight:800;font-size:.95rem;letter-spacing:-.2px}

/* recurring banner */
.recurring-banner{
  display:flex;align-items:center;gap:6px;
  margin-top:10px;padding:8px 12px;
  background:var(--primary-soft);color:var(--primary);
  border:1px dashed var(--primary-soft-2);
  border-radius:10px;font-size:.84rem;font-weight:600;
}

/* day chip — انتخاب روز هفته */
.day-chip{
  display:inline-flex;align-items:center;gap:6px;
  padding:7px 12px;border-radius:999px;
  background:var(--surface);border:1.5px solid var(--border-strong);
  cursor:pointer;font-size:.85rem;font-weight:600;
  transition:all var(--t-fast);
}
.day-chip:hover{border-color:var(--primary)}
.day-chip input{position:absolute;opacity:0;pointer-events:none}
.day-chip:has(input:checked){
  background:linear-gradient(135deg,var(--primary),var(--primary-2));
  border-color:var(--primary);color:#fff;
}
.day-chip span{display:inline-block}

/* teacher chip — انتخاب چند دبیر */
.teacher-chips{display:flex;flex-wrap:wrap;gap:8px;max-height:240px;overflow-y:auto}
.teacher-chip{
  display:inline-flex;align-items:center;gap:7px;
  padding:7px 12px;border-radius:999px;
  background:var(--surface);border:1.5px solid var(--border-strong);
  cursor:pointer;font-size:.85rem;font-weight:600;
  transition:all var(--t-fast);
}
.teacher-chip:hover{border-color:var(--primary)}
.teacher-chip input{position:absolute;opacity:0;pointer-events:none}
.teacher-chip-mark{
  width:18px;height:18px;border-radius:50%;
  border:1.5px solid var(--border-strong);background:var(--surface);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;transition:all var(--t-fast);
}
.teacher-chip input:checked + .teacher-chip-mark{
  background:var(--primary);border-color:var(--primary);
}
.teacher-chip input:checked + .teacher-chip-mark::after{
  content:'✓';color:#fff;font-weight:900;font-size:.74rem;
}
.teacher-chip:has(input:checked){
  background:var(--primary-soft);border-color:var(--primary);color:var(--primary);
}

/* time input fix — جلوگیری از زشتی native time picker */
input[type=time]{
  font-family:inherit;font-size:.92rem;
  font-variant-numeric:tabular-nums;
  letter-spacing:.04em;
}

.form-row{display:grid;gap:14px}
.form-row.cols-2{grid-template-columns:1fr 1fr}
.form-row.cols-3{grid-template-columns:1fr 1fr 1fr}

/* ╔══════════════════════════════════════════
   Badges (نرم و خوش‌فرم)
   ╚══════════════════════════════════════════ */
.badge{
  display:inline-flex;align-items:center;gap:4px;
  padding:3px 11px;
  border-radius:999px;
  font-size:.74rem;
  font-weight:700;
  letter-spacing:-.1px;
}
.badge-primary{background:var(--primary-soft);color:var(--primary)}
.badge-success{background:var(--success-soft);color:var(--success)}
.badge-danger {background:var(--danger-soft);color:var(--danger)}
.badge-warning{background:var(--warning-soft);color:var(--warning)}
.badge-info   {background:var(--info-soft);color:var(--info)}
.badge-muted  {background:#ece6dc;color:#6f6678}

/* ╔══════════════════════════════════════════
   Alerts / Flash
   ╚══════════════════════════════════════════ */
.flash-container{position:fixed;top:18px;left:18px;z-index:999;display:flex;flex-direction:column;gap:10px}
.alert{
  padding:13px 18px;
  border-radius:14px;
  font-size:.88rem;
  font-weight:600;
  display:flex;align-items:center;gap:10px;
  min-width:280px;max-width:400px;
  background:#fff;
  border:1px solid var(--border);
  box-shadow:var(--shadow);
  animation:slideIn .28s var(--ease);
}
.alert-success{border-right:4px solid var(--success);color:#065f2c}
.alert-danger {border-right:4px solid var(--danger); color:#7f1d1d}
.alert-warning{border-right:4px solid var(--warning);color:#7c2d12}
.alert-info   {border-right:4px solid var(--info);   color:#075985}
.alert-close{margin-right:auto;cursor:pointer;opacity:.55;background:none;border:none;color:inherit;font-size:1rem;transition:opacity var(--t-fast)}
.alert-close:hover{opacity:1}

@keyframes slideIn{from{transform:translateX(-20px);opacity:0}to{transform:translateX(0);opacity:1}}

/* ╔══════════════════════════════════════════
   Tabs (مدرن، با pill style)
   ╚══════════════════════════════════════════ */
.tabs{
  display:flex;gap:4px;
  background:var(--surface-2);
  padding:4px;
  border-radius:14px;
  margin-bottom:20px;
  flex-wrap:wrap;
  border:1px solid var(--border);
}
.tab-btn{
  padding:9px 16px;
  border:none;
  background:none;
  color:var(--text-muted);
  font-family:inherit;
  font-size:.86rem;
  font-weight:700;
  cursor:pointer;
  border-radius:10px;
  transition:all var(--t-fast);
}
.tab-btn:hover{color:var(--primary);background:rgba(45,27,110,.04)}
.tab-btn.active{
  background:#fff;
  color:var(--primary);
  box-shadow:var(--shadow-xs), 0 0 0 1px var(--border);
}
.tab-panel{display:none}
.tab-panel.active{display:block;animation:fadeUp .28s var(--ease)}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}

/* ╔══════════════════════════════════════════
   Modal
   ╚══════════════════════════════════════════ */
.modal-overlay{
  position:fixed;inset:0;
  background:rgba(26,23,48,.5);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  z-index:200;
  display:flex;align-items:center;justify-content:center;
  padding:20px;
  opacity:0;pointer-events:none;
  transition:opacity var(--t);
}
.modal-overlay.open{opacity:1;pointer-events:auto}
.modal{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-xl);
  width:100%;
  max-width:560px;
  max-height:90vh;
  overflow-y:auto;
  box-shadow:0 30px 60px rgba(26,23,48,.22);
  transform:scale(.96) translateY(8px);
  transition:transform var(--t);
}
.modal-overlay.open .modal{transform:scale(1) translateY(0)}
.modal-header{
  padding:20px 24px;
  border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;
}
.modal-title{font-weight:800;font-size:1.05rem;letter-spacing:-.2px}
.modal-close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1.2rem;padding:5px 9px;border-radius:8px;transition:background var(--t-fast)}
.modal-close:hover{background:var(--surface-2);color:var(--text)}
.modal-body{padding:22px 24px}
.modal-footer{padding:16px 24px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px;background:var(--surface-2);border-radius:0 0 var(--radius-xl) var(--radius-xl)}

/* ╔══════════════════════════════════════════
   Charts / Filter / Empty
   ╚══════════════════════════════════════════ */
.chart-container{position:relative;height:260px}

.filter-bar{
  display:flex;gap:10px;align-items:center;flex-wrap:wrap;
  margin-bottom:18px;
  padding:14px 16px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow-xs);
}
.filter-bar input,.filter-bar select{max-width:220px}
.filter-bar .btn{flex-shrink:0}

.empty{
  text-align:center;
  padding:54px 24px;
  color:var(--text-muted);
}
.empty-icon{font-size:3rem;margin-bottom:12px;opacity:.7}
.empty p{font-size:.94rem}

/* ╔══════════════════════════════════════════
   Utility
   ╚══════════════════════════════════════════ */
.debt-high   {color:var(--danger);font-weight:800}
.debt-medium {color:var(--warning);font-weight:700}
.debt-low    {color:var(--text-muted)}
.amount-pos  {color:var(--success);font-weight:700}

.text-muted{color:var(--text-muted)}
.text-success{color:var(--success)}
.text-danger{color:var(--danger)}
.text-warning{color:var(--warning)}
.text-end{text-align:left}
.text-sm{font-size:.82rem}
.text-xs{font-size:.74rem}
.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-3{margin-top:16px}.mt-4{margin-top:24px}
.mb-1{margin-bottom:4px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:16px}.mb-4{margin-bottom:24px}
.flex{display:flex}
.flex-between{display:flex;justify-content:space-between;align-items:center}
.flex-center{display:flex;align-items:center}
.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}
.fw-bold{font-weight:700}
.fw-extrabold{font-weight:800}
.w-full{width:100%}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}

/* ╔══════════════════════════════════════════
   Hero (پیش‌فرض برای صفحه‌های اولیا/داشبورد)
   ╚══════════════════════════════════════════ */
.hero{
  background:linear-gradient(135deg,#fff 0%,#f5f0ff 100%);
  border:1px solid var(--border);
  border-radius:var(--radius-xl);
  padding:36px 32px;
  margin-bottom:24px;
  position:relative;
  overflow:hidden;
  box-shadow:var(--shadow-sm);
}
.hero::before{
  content:'';position:absolute;top:-80px;left:-80px;
  width:240px;height:240px;border-radius:50%;
  background:radial-gradient(circle,rgba(245,158,11,.18),transparent 70%);
  pointer-events:none;
}
.hero::after{
  content:'';position:absolute;bottom:-100px;right:-60px;
  width:300px;height:300px;border-radius:50%;
  background:radial-gradient(circle,rgba(114,89,218,.15),transparent 70%);
  pointer-events:none;
}
.hero-pill{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 14px;
  background:var(--primary-soft);
  color:var(--primary);
  border-radius:999px;
  font-size:.78rem;font-weight:700;
  margin-bottom:14px;
  position:relative;z-index:1;
}
.hero h1{font-size:2.1rem;font-weight:800;letter-spacing:-.7px;line-height:1.25;color:var(--text);margin-bottom:8px;position:relative;z-index:1}
.hero p{color:var(--text-2);font-size:1rem;max-width:640px;line-height:1.8;position:relative;z-index:1}

/* ╔══════════════════════════════════════════
   Avatar (gradient circles)
   ╚══════════════════════════════════════════ */
.avatar{
  width:54px;height:54px;
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:1.35rem;font-weight:800;color:#fff;
  flex-shrink:0;
  box-shadow:0 8px 18px rgba(245,158,11,.3);
}
.avatar-amber{background:linear-gradient(135deg,#fbbf24,#d97706)}
.avatar-violet{background:linear-gradient(135deg,#8b5cf6,#5b21b6)}
.avatar-rose{background:linear-gradient(135deg,#fb7185,#be185d)}
.avatar-emerald{background:linear-gradient(135deg,#34d399,#047857)}
.avatar-sky{background:linear-gradient(135deg,#38bdf8,#0369a1)}
.avatar-lg{width:64px;height:64px;font-size:1.6rem}
.avatar-xl{width:84px;height:84px;font-size:2rem}

/* ╔══════════════════════════════════════════
   Soft tile / mini-stat (الهام از اسکرین‌شات)
   ╚══════════════════════════════════════════ */
.soft-tile{
  background:var(--primary-soft);
  border-radius:18px;
  padding:18px 20px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  border:1px solid rgba(45,27,110,.06);
}
.soft-tile-value{font-size:1.6rem;font-weight:800;color:var(--text);letter-spacing:-.3px}
.soft-tile-label{font-size:.8rem;color:var(--text-muted);margin-top:2px}

/* progress bar */
.progress-bar{
  height:10px;
  background:var(--surface-2);
  border-radius:999px;
  overflow:hidden;
  position:relative;
  border:1px solid var(--border);
}
.progress-bar > .fill{
  height:100%;
  background:linear-gradient(90deg,var(--primary-3),var(--primary));
  border-radius:999px;
  transition:width .6s var(--ease);
}

/* feature row (با تیک سبز) */
.feature-row{
  display:flex;align-items:flex-start;gap:14px;
  padding:14px 0;
}
.feature-check{
  flex-shrink:0;
  width:30px;height:30px;
  border-radius:50%;
  background:linear-gradient(135deg,#22c55e,#16a34a);
  color:#fff;display:flex;align-items:center;justify-content:center;
  font-weight:900;font-size:.95rem;
  box-shadow:0 6px 14px rgba(22,163,74,.22);
}
.feature-title{font-weight:800;font-size:1rem;margin-bottom:3px;letter-spacing:-.2px}
.feature-desc{font-size:.86rem;color:var(--text-muted);line-height:1.7}

/* ╔══════════════════════════════════════════
   Datepicker (light theme)
   ╚══════════════════════════════════════════ */
.jdp-popup{
  background:#fff!important;
  border:1px solid var(--border)!important;
  border-radius:14px!important;
  box-shadow:var(--shadow-lg)!important;
}
.jdp-nav button{color:var(--text)!important}
.jdp-nav button:hover{background:var(--primary-soft)!important}
.jdp-days-header{color:var(--text-muted)!important}
.jdp-days-grid button{color:var(--text)!important;border-radius:9px!important}
.jdp-days-grid button:hover{background:var(--primary-soft)!important;color:var(--primary)!important}
.jdp-days-grid button.sel{background:var(--primary)!important;color:#fff!important}
.jdp-days-grid button.today-mark{outline-color:var(--primary)!important}
.jdp-year-sel{
  background:#fff!important;
  border:1px solid var(--border-strong)!important;
  color:var(--text)!important;
  border-radius:8px!important;
}

/* ╔══════════════════════════════════════════
   Responsive — mobile-first hardening
   ╚══════════════════════════════════════════ */

/* Tablet */
@media (max-width:1024px){
  :root{--sidebar-w:240px;--topbar-h:62px}
  .hero{padding:28px 22px}
  .hero h1{font-size:1.7rem}
  .content{padding:22px 20px}
}

/* Mobile (≤ 900px) */
@media (max-width:900px){
  html{font-size:14.5px}

  /* ── Sidebar: کشوی بازشو از راست ── */
  .sidebar{
    width:280px;max-width:86vw;
    transform:translateX(100%);
    box-shadow:none;
  }
  .sidebar.open{
    transform:translateX(0);
    box-shadow:-14px 0 36px rgba(26,23,48,.28);
  }
  /* backdrop سراسری وقتی sidebar بازه */
  body:has(.sidebar.open)::before{
    content:'';position:fixed;inset:0;
    background:rgba(15,12,32,.45);
    backdrop-filter:blur(2px);
    -webkit-backdrop-filter:blur(2px);
    z-index:99;
    animation:fadeIn .2s var(--ease);
  }
  @keyframes fadeIn{from{opacity:0}to{opacity:1}}
  .main{margin-right:0}

  /* topbar */
  .topbar{padding:0 14px;gap:10px;height:60px}
  .topbar-title{font-size:.98rem}
  .topbar-actions{gap:6px}
  .topbar-actions .btn{padding:7px 11px;font-size:.78rem}
  .theme-toggle{width:34px;height:34px;font-size:.9rem}

  /* content */
  .content{padding:14px 12px}

  /* layout helpers — همه به یک ستون */
  .stat-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .grid-2,.grid-3{grid-template-columns:1fr;gap:12px}
  .form-row.cols-2,.form-row.cols-3{grid-template-columns:1fr}

  /* card */
  .card{padding:16px;border-radius:14px}
  .card-header{margin-bottom:12px;padding-bottom:10px}

  /* hero */
  .hero{padding:22px 16px;border-radius:18px}
  .hero h1{font-size:1.4rem;letter-spacing:-.4px}
  .hero p{font-size:.92rem}

  /* tables — کاهش padding */
  thead th{padding:9px 10px;font-size:.7rem}
  tbody td{padding:9px 10px;font-size:.85rem}
  /* hint اسکرول افقی */
  .table-wrap{position:relative}
  .table-wrap::after{
    content:'';position:absolute;top:0;left:0;width:24px;height:100%;
    background:linear-gradient(90deg,rgba(0,0,0,.04),transparent);
    pointer-events:none;
  }

  /* filter bar */
  .filter-bar{padding:12px;gap:8px}
  .filter-bar input,.filter-bar select{max-width:100%;flex:1 1 140px}
  .filter-bar > span{width:100%;text-align:right;margin:0!important}

  /* buttons تَپ‌فِرندلی */
  .btn{padding:9px 16px;min-height:40px;font-size:.86rem}
  .btn-sm{padding:7px 12px;min-height:34px;font-size:.78rem}
  .btn-xs{padding:5px 10px;min-height:30px;font-size:.74rem}
  .btn-lg{padding:12px 22px;min-height:46px}

  /* form fields بزرگ‌تر برای تَپ */
  input,select,textarea{font-size:16px;padding:11px 13px}
  /* ↑ font-size ≥ 16px جلوی zoom خودکار iOS رو می‌گیره */

  /* modal — تمام‌صفحه‌تر روی موبایل (bottom sheet) */
  .modal-overlay{padding:0;align-items:flex-end;animation:fadeIn .2s var(--ease)}
  .modal{
    max-width:100%;max-height:92vh;
    border-radius:20px 20px 0 0;
    margin-bottom:env(safe-area-inset-bottom);
    -webkit-overflow-scrolling:touch;
  }
  /* handle bar در بالای bottom sheet */
  .modal-header{padding:18px 18px 14px;position:relative}
  .modal-header::before{
    content:'';position:absolute;top:6px;left:50%;transform:translateX(-50%);
    width:38px;height:4px;border-radius:4px;background:var(--border-strong);opacity:.7;
  }
  .modal-body{padding:14px 18px}
  .modal-footer{padding:14px 18px;flex-direction:column-reverse;gap:8px}
  .modal-footer .btn{width:100%}

  /* tabs قابل اسکرول افقی */
  .tabs{overflow-x:auto;flex-wrap:nowrap;padding:4px;gap:3px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .tabs::-webkit-scrollbar{display:none}
  .tab-btn{flex:0 0 auto;white-space:nowrap;padding:8px 13px;font-size:.82rem}

  /* alert — flash پایین چپ */
  .flash-container{top:auto;bottom:14px;left:14px;right:14px}
  .alert{min-width:0;max-width:100%;padding:12px 14px}

  /* sticky footer ها روی موبایل پایین صفحه نمی‌چسبن */
  .bulk-footer{position:sticky;bottom:0;border-radius:14px}
}

/* Phone (≤ 480px) — فشرده‌تر */
@media (max-width:480px){
  .stat-grid{grid-template-columns:1fr}
  .hero h1{font-size:1.25rem}
  .hero p{font-size:.86rem}
  .content{padding:12px 10px}
  .card{padding:14px;border-radius:12px}
  .modal-overlay{padding:0}
  .modal{border-radius:18px 18px 0 0;max-height:96vh}
}

/* جلوگیری از scroll افقی تصادفی */
html,body{max-width:100%;overflow-x:hidden}
img,svg,video{max-width:100%;height:auto}

/* ── Responsive helper سراسری ── */
@media (max-width:780px){
  /* جدول‌های بدون wrapper — اسکرول افقی خودکار */
  .card table,
  table[style*="width:100%"],
  table[style*="width: 100%"]{
    display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;
    white-space:nowrap;
  }
  .card table thead,
  .card table tbody,
  .card table tr{display:table;width:100%;table-layout:fixed}

  /* گریدهای ۲ ستونی روی موبایل تک‌ستونه می‌شن */
  [style*="grid-template-columns:1fr 1fr"],
  [style*="grid-template-columns: 1fr 1fr"]{
    grid-template-columns:1fr !important;
  }

  /* hero و کارت‌ها padding کمتر */
  .hero{padding:16px 14px !important}

  /* حذف overflow-x:hidden که باعث کلیدی شدن sticky میشه — ولی برای body می‌مونه */
  .content,.main{overflow-x:visible}
}

/* جدول‌ها همیشه قابل اسکرول روی موبایل */
@media (max-width:560px){
  /* فاصله‌ی padding ستون‌ها کمتر */
  table th,table td{padding:8px 9px !important}
  /* فرم‌ها تک‌ستونه */
  .form-row{grid-template-columns:1fr !important}
  /* hero h1 کوچیک‌تر */
  .hero h1{font-size:1.15rem !important}
}

/* hamburger */
.menu-toggle{
  display:none;
  background:var(--surface);
  border:1px solid var(--border);
  color:var(--text);
  font-size:1.2rem;
  cursor:pointer;
  padding:6px 11px;
  border-radius:10px;
  box-shadow:var(--shadow-xs);
  width:40px;height:40px;align-items:center;justify-content:center;
}
@media (max-width:900px){.menu-toggle{display:inline-flex}}

/* sidebar را روی موبایل scrollable نگه می‌داریم */
@media (max-width:900px){
  .sidebar{overflow-y:auto;-webkit-overflow-scrolling:touch}
}

/* scrollbar (subtle, light) */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(45,27,110,.18);border-radius:8px}
::-webkit-scrollbar-thumb:hover{background:rgba(45,27,110,.32)}

/* selection */
::selection{background:var(--primary-soft-2);color:var(--primary)}


/* ╔══════════════════════════════════════════
   📱 iPhone / موبایل سختی‌های پایانی
   ضدِ "دکمه‌ها تو هم میره" — ثابت‌سازی wrap رفتاری
   ╚══════════════════════════════════════════ */
@media (max-width:560px){
  /* هر row از دکمه‌ها/فُرم‌های inline که با flex چیده شده — اجباراً wrap بشه */
  [style*="display:flex"][style*="justify-content"],
  [style*="display: flex"][style*="justify-content"]{
    flex-wrap:wrap !important;
  }

  /* TD های جدول که چند تا فرم/دکمه دارن — wrap شن */
  td > form, td > a.btn, td > button.btn{
    margin-block:2px;
  }
  td[style*="display:flex"], td[style*="display: flex"]{
    flex-wrap:wrap !important; gap:6px !important;
  }

  /* topbar — grid 2-row layout روی موبایل تا تو هم نرن.
     ردیف ۱: hamburger | title | theme-toggle
     ردیف ۲: topbar-actions (تمام عرض، انتها-چین) */
  .topbar{
    display:grid;
    grid-template-columns: auto 1fr auto;
    grid-template-rows: auto auto;
    column-gap:8px;row-gap:6px;
    height:auto;min-height:56px;padding:8px 10px;
    align-items:center;
  }
  .menu-toggle{grid-column:1;grid-row:1;width:36px;height:36px;font-size:1.1rem;padding:0}
  .topbar-title{
    grid-column:2;grid-row:1;
    font-size:.96rem;line-height:1.3;
    min-width:0;flex:none;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .theme-toggle{grid-column:3;grid-row:1;width:36px;height:36px;font-size:.92rem;flex-shrink:0}
  .topbar-actions{
    grid-column:1/-1;grid-row:2;
    display:flex;flex-wrap:wrap;gap:6px;
    justify-content:flex-end;
    border-top:1px dashed var(--border);
    padding-top:6px;
  }
  /* وقتی topbar-actions خالیه (هیچ block override نشده)، ردیف ۲ رو حذف کن */
  .topbar-actions:empty{display:none}
  .topbar-actions .btn{padding:6px 10px;font-size:.78rem;min-height:32px}

  /* تیکت — header، meta و reassign */
  .ticket-head{padding:14px 16px}
  .ticket-head-top{flex-direction:column;align-items:stretch;gap:10px}
  .ticket-status-block{justify-content:flex-start}
  .ticket-reassign{flex-direction:column;align-items:stretch}
  .ticket-reassign select, .ticket-reassign .btn{width:100%}

  /* پاسخ تیکت */
  .ticket-reply{padding:14px 16px}
  .ticket-reply-actions, .ticket-close-form{justify-content:stretch}
  .ticket-reply-actions .btn, .ticket-close-form .btn{width:100%;min-height:42px}

  /* msg bubble — کوچیک‌تر و wrap درست */
  .msg-bubble{max-width:88% !important;padding:10px 13px}
  .msg-head{flex-wrap:wrap;gap:4px}
  .msg-time{font-size:.7rem}

  /* alert (flash) — روی موبایل overlap نکنه */
  .flash-container{
    position:fixed;left:8px;right:8px;bottom:8px;top:auto;
    z-index:9999;display:flex;flex-direction:column;gap:6px;
    padding-bottom:env(safe-area-inset-bottom,0);
  }
  .alert{margin:0;padding:11px 14px;font-size:.85rem;border-radius:12px;
         display:flex;align-items:flex-start;gap:8px;justify-content:space-between}
  .alert > span{flex:1;min-width:0;word-break:break-word}
  .alert-close{flex-shrink:0}
}

/* iOS-only — جلوی tap-highlight و دو-بار-tap zoom */
@supports (-webkit-touch-callout: none){
  .btn, a, button{-webkit-tap-highlight-color:rgba(45,27,110,.12)}
  /* دکمه‌ها در iOS Safari باید explicit appearance داشته باشن */
  button.btn, .btn{-webkit-appearance:none;appearance:none}
  /* iPhone notch / home-indicator — safe area */
  .topbar{padding-top:max(0px, env(safe-area-inset-top))}
  body{padding-bottom:env(safe-area-inset-bottom)}
}

/* فُرم‌های ادمین — لیست کاربران، students و … — همیشه wrap */
@media (max-width:560px){
  table td:last-child[style*="display:flex"]{flex-direction:column}
  table td form{display:inline-block}
  table td .btn{width:100%}
}

/* ╔══════════════════════════════════════════
   🌙 Dark mode — پوشش کامل و ضد فلیکر
   ╚══════════════════════════════════════════ */

/* جلوگیری از flicker تم وقتی صفحه load می‌شه — transition روی body فقط بعد از mount */
:root[data-theme="dark"] body{color:var(--text);background:var(--bg)}
/* preload: تا JS کلاس رو حذف نکرده، هیچ transition/animation اعمال نشه */
.preload, .preload *, .preload *::before, .preload *::after{
  transition:none !important;
  animation:none !important;
}

/* badgeهای دارک — وقتی پشت‌صحنه‌ی روشن داشتن، تو دارک گم می‌شدن */
:root[data-theme="dark"] .badge-success{background:rgba(74,222,128,.18);color:#86efac}
:root[data-theme="dark"] .badge-danger {background:rgba(248,113,113,.18);color:#fca5a5}
:root[data-theme="dark"] .badge-warning{background:rgba(251,146,60,.18);color:#fdba74}
:root[data-theme="dark"] .badge-info   {background:rgba(56,189,248,.18);color:#7dd3fc}
:root[data-theme="dark"] .badge-muted  {background:rgba(142,137,168,.20);color:#c5c1dc}
:root[data-theme="dark"] .badge-primary{background:rgba(168,157,255,.20);color:var(--primary-3)}

/* alert/flash در دارک */
:root[data-theme="dark"] .alert-success{background:rgba(74,222,128,.10);color:#86efac;border-color:rgba(74,222,128,.30)}
:root[data-theme="dark"] .alert-danger {background:rgba(248,113,113,.10);color:#fca5a5;border-color:rgba(248,113,113,.30)}
:root[data-theme="dark"] .alert-warning{background:rgba(251,146,60,.10);color:#fdba74;border-color:rgba(251,146,60,.30)}
:root[data-theme="dark"] .alert-info   {background:rgba(56,189,248,.10);color:#7dd3fc;border-color:rgba(56,189,248,.30)}

/* surface-soft fallback که در ticket-new-hero و … استفاده می‌شه */
:root[data-theme="dark"] .ticket-new-hero{background:linear-gradient(135deg,var(--surface) 0%, var(--surface-2) 100%) !important;border-color:var(--border)}
:root[data-theme="dark"] .ticket-tab.is-active{background:var(--surface)}
:root[data-theme="dark"] .ticket-tab-count{background:rgba(168,157,255,.20);color:var(--primary-3)}
:root[data-theme="dark"] tbody tr{border-color:var(--border)}
:root[data-theme="dark"] td,
:root[data-theme="dark"] th{color:var(--text)}
:root[data-theme="dark"] .pager-btn{background:var(--surface);color:var(--text);border-color:var(--border-strong)}

/* ── ticket list table — overlap badges/dates روی موبایل ── */
@media (max-width:560px){
  .card .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .card .table-wrap table{min-width:560px;white-space:normal}
  .card .table-wrap th,
  .card .table-wrap td{padding:8px 10px;font-size:.78rem;white-space:normal;vertical-align:top}
  .card .table-wrap td .badge{display:inline-block;margin:1px 0;font-size:.7rem;padding:2px 8px}
  .card .table-wrap td:last-child .btn{width:auto;padding:5px 10px;font-size:.72rem}
}

/* live indicator: روی موبایل تو بالا-راست (RTL = top-left visually) — تا با flash تو هم نره */
@media (max-width:560px){
  .live-indicator{top:auto;bottom:auto;left:auto;right:auto;
                  position:fixed;top:8px;left:8px;
                  font-size:.62rem;padding:3px 7px}
}

/* اپلیکیشن تم را immediately بعد از ست شدن localStorage تو <head> با کلاس theme-loaded علامت می‌زنیم */

/* ╔══════════════════════════════════════════
   📐 Overlay menus — RTL alignment fix
   منوهای اورلی (مثل dropdown action) باید انتهاشون با انتهای دکمه یک‌راستا
   باشه (RTL) — تا از سمت چپ صفحه بیرون نزنه. الگو: `left:0` به‌جای `right:0`.
   ╚══════════════════════════════════════════ */
.dropdown-menu,.action-overlay,.menu-overlay,
[data-dropdown-menu],[role="menu"]{
  /* الگوی default برای هر overlay relative به button */
  position:absolute;left:0;right:auto;top:100%;
  min-width:180px;max-width:90vw;
  background:var(--surface);border:1px solid var(--border-strong);
  border-radius:12px;box-shadow:var(--shadow);
  z-index:50;padding:6px;margin-top:4px;
  max-height:60vh;overflow-y:auto;
}
:root[data-theme="dark"] .dropdown-menu,
:root[data-theme="dark"] .action-overlay,
:root[data-theme="dark"] .menu-overlay{background:var(--surface)}

/* ╔══════════════════════════════════════════
   📊 جدول‌های wide (chart‌های ماهانه و …) — overflow
   ╚══════════════════════════════════════════ */
.chart-table-wrap,.chart-scroll,.chart-overflow{
  overflow-x:auto;-webkit-overflow-scrolling:touch;
  border-radius:12px;border:1px solid var(--border);
  position:relative;
}
.chart-table-wrap table,.chart-scroll table{min-width:680px}
@media (max-width:780px){
  /* در business-overview جداول ماهانه باید اسکرول افقی داشته باشن نه بزنن بیرون */
  .business-monthly-table,.monthly-chart-table,
  table.monthly,table.chart-monthly{
    display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;
    white-space:nowrap;max-width:100vw;
  }
}

/* ╔══════════════════════════════════════════
   📞 typing indicator (در chat تیکت)
   ╚══════════════════════════════════════════ */
.ticket-typing{
  display:none !important;padding:6px 14px;font-size:.78rem;color:var(--text-muted);
  background:var(--surface-2);border-radius:14px;align-self:flex-start;
  margin-right:46px;
}
/* فقط با کلاس .show و typingName پر، نمایش داده می‌شه */
.ticket-typing.show{display:inline-flex !important;align-items:center;gap:6px}
.ticket-typing-dots{display:inline-flex;gap:3px}
.ticket-typing-dots span{width:5px;height:5px;border-radius:50%;background:var(--primary);
  animation:typeBounce 1.2s infinite}
.ticket-typing-dots span:nth-child(2){animation-delay:.18s}
.ticket-typing-dots span:nth-child(3){animation-delay:.36s}
@keyframes typeBounce{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}

/* ╔══════════════════════════════════════════
   😀 Emoji bar (در reply تیکت)
   ╚══════════════════════════════════════════ */
.emoji-bar{
  display:flex;flex-wrap:wrap;gap:4px;
  padding:8px;border:1px dashed var(--border-strong);border-radius:12px;
  margin-top:8px;margin-bottom:12px;background:var(--surface-2);
}
:root[data-theme="dark"] .emoji-bar{background:var(--surface)}
.emoji-bar button{
  background:transparent;border:none;cursor:pointer;
  font-size:1.25rem;width:36px;height:36px;border-radius:8px;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .12s, transform .12s;
}
.emoji-bar button:hover{background:var(--primary-soft);transform:scale(1.15)}


/* ╔══════════════════════════════════════════
   📱 Deep Mobile Pass — fix الگوهای مشکل‌دار
   ╚══════════════════════════════════════════ */
@media (max-width:600px){
  /* صفحه: padding کم‌تر */
  .content{padding:10px 8px}

  /* عنوان‌ها — کوچیک‌تر */
  h1{font-size:1.25rem !important}
  h2{font-size:1.1rem !important}
  h3{font-size:1rem !important}
  h4{font-size:.95rem !important}

  /* کارت‌ها — padding کم */
  .card{padding:13px 14px;border-radius:14px}
  .card-header{margin-bottom:10px}

  /* form-row های inline که overflow می‌زدن */
  .form-row{display:grid !important;grid-template-columns:1fr !important;gap:8px}
  .form-group{margin-bottom:11px}
  .form-group label{font-size:.78rem;margin-bottom:4px}

  /* inputهای بزرگ‌شده برای touch */
  input[type=text],input[type=number],input[type=password],
  input[type=email],input[type=tel],input[type=date],input[type=time],
  select,textarea{font-size:16px !important;padding:10px 12px;border-radius:10px}

  /* table های wrap نشده — اسکرول افقی */
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}

  /* hero / banner — کم padding */
  .hero,.banner-card{padding:14px 14px !important}

  /* inline buttons که می‌چسبیدن — gap بیشتر، wrap اجباری */
  div[style*="display:flex"][style*="gap"]:not(.dropdown-menu):not(.modal-footer){
    flex-wrap:wrap !important;
  }

  /* مودال — bottom sheet */
  .modal{border-radius:18px 18px 0 0 !important;max-height:90vh}
  .modal-body{padding:14px 16px;max-height:65vh;overflow-y:auto}
  .modal-footer{padding:12px 16px;flex-direction:column-reverse;gap:7px}
  .modal-footer .btn{width:100%}

  /* sidebar که روی موبایل overlay می‌شه */
  .sidebar{transition:transform .25s ease}

  /* badge ها — کوچیک‌تر تا توی row جا شن */
  .badge{font-size:.7rem;padding:2px 8px;display:inline-block}

  /* ticket list — overflow + smaller */
  .ticket-tabs{flex-wrap:wrap;gap:4px;padding:3px}
  .ticket-tab{flex:1 1 auto;padding:7px 10px;font-size:.82rem}

  /* dialog های ui — padding کم‌تر */
  .ui-dialog{padding:18px 16px}
  .ui-dialog-title{font-size:.98rem}
  .ui-dialog-msg{font-size:.86rem}

  /* PWA banner — یه خط متراکم */
  .pwa-install-banner{flex-wrap:wrap;padding:11px 13px;gap:8px}
  .pwa-icon{font-size:1.5rem}
  .pwa-title{font-size:.88rem}
  .pwa-sub{font-size:.74rem}
}

/* جلوگیری از overflow متن لینک‌های بلند در موبایل */
@media (max-width:560px){
  a,.text-sm,.text-muted{word-break:break-word;overflow-wrap:break-word}
  pre{white-space:pre-wrap !important;word-break:break-word}
}
