/* ============================================================
   حافظ — سیستم طراحی (اقتباس از تم «چله»)
   پالت بنفش/صورتی/نارنجی/فیروزه‌ای · راست‌به‌چپ · روشن و تیره
   ============================================================ */
:root{
  --ch-primary:#7c3aed; --ch-pink:#ec4899; --ch-orange:#f97316;
  --ch-teal:#14b8a6; --ch-yellow:#facc15; --ch-blue:#3b82f6;
  --ch-bg:#f4f2fb; --ch-card:#ffffff; --ch-text:#2b2440;
  --ch-muted:#8a84a3; --ch-border:rgba(124,58,237,.10);
  --ch-shadow:0 10px 30px -12px rgba(124,58,237,.25);
  --ch-sidebar:linear-gradient(180deg,#7c3aed 0%,#a855f7 55%,#ec4899 100%);
  --ch-grid:rgba(43,36,64,.08);
  --ch-gradient:linear-gradient(135deg,#7c3aed,#ec4899);
  /* هماهنگ‌سازی بوت‌استرپ با پالت چله */
  --bs-primary:#7c3aed; --bs-primary-rgb:124,58,237;
  --bs-link-color:#7c3aed; --bs-link-hover-color:#6d28d9;
  --bs-border-radius:.8rem;
}
[data-bs-theme="dark"]{
  --ch-bg:#131022; --ch-card:#1d1832; --ch-text:#efeaff;
  --ch-muted:#9d95bd; --ch-border:rgba(168,85,247,.18);
  --ch-shadow:0 10px 30px -12px rgba(0,0,0,.6);
  --ch-sidebar:linear-gradient(180deg,#241b47 0%,#31175a 55%,#511049 100%);
  --ch-grid:rgba(239,234,255,.08);
}

*{font-family:"Vazirmatn",Tahoma,sans-serif}
body{background:var(--ch-bg);color:var(--ch-text);overflow-x:hidden;transition:background .5s ease,color .5s ease;margin:0}

/* دکمه‌ها و رنگ‌های اصلی بوت‌استرپ */
.btn-primary{--bs-btn-bg:#7c3aed;--bs-btn-border-color:#7c3aed;--bs-btn-hover-bg:#6d28d9;--bs-btn-hover-border-color:#6d28d9;--bs-btn-active-bg:#6d28d9;--bs-btn-active-border-color:#6d28d9;--bs-btn-disabled-bg:#7c3aed;--bs-btn-disabled-border-color:#7c3aed}
.btn-brand{background:var(--ch-gradient);border:0;color:#fff}
.btn-brand:hover{color:#fff;filter:brightness(1.05)}
.text-brand{color:var(--ch-primary)!important}
a{color:var(--ch-primary)}

/* بلاب‌های پس‌زمینه */
.blob{position:fixed;border-radius:50%;filter:blur(90px);opacity:.30;z-index:0;pointer-events:none;animation:float 14s ease-in-out infinite alternate}
.blob-1{width:420px;height:420px;background:#a855f7;top:-120px;right:-120px}
.blob-2{width:360px;height:360px;background:#ec4899;bottom:-100px;left:22%;animation-delay:-5s}
.blob-3{width:300px;height:300px;background:#14b8a6;top:35%;right:30%;animation-delay:-9s}
@keyframes float{from{transform:translate(0,0) scale(1)}to{transform:translate(-60px,-40px) scale(1.15)}}

/* لوگوی حافظ */
.hafez-logo{display:grid;place-items:center;border-radius:15px;background:var(--ch-gradient);color:#fff;font-weight:800}
.brand-badge .hafez-logo{width:100%;height:100%;font-size:1.5rem;background:transparent}

/* سایدبار */
.sidebar{position:fixed;inset-block:0;right:0;width:262px;background:var(--ch-sidebar);color:#fff;z-index:1040;
  padding:1.3rem 1rem;display:flex;flex-direction:column;transition:transform .4s cubic-bezier(.7,0,.3,1);box-shadow:-8px 0 40px rgba(0,0,0,.15);overflow-y:auto}
.brand{display:flex;align-items:center;gap:.7rem;font-weight:800;font-size:1.3rem;color:#fff;text-decoration:none}
.brand-badge{width:46px;height:46px;border-radius:15px;background:rgba(255,255,255,.16);display:grid;place-items:center;backdrop-filter:blur(6px);animation:pulse-glow 3s ease-in-out infinite;padding:5px}
.brand-logo-img{height:34px;width:auto;display:block;object-fit:contain;filter:drop-shadow(0 2px 5px rgba(0,0,0,.35))}
@keyframes pulse-glow{0%,100%{box-shadow:0 0 0 0 rgba(255,255,255,.35)}50%{box-shadow:0 0 0 12px rgba(255,255,255,0)}}
.nav-ch{margin-top:1.4rem;display:flex;flex-direction:column;gap:.3rem}
.nav-ch a{color:rgba(255,255,255,.82);text-decoration:none;padding:.65rem .9rem;border-radius:13px;display:flex;align-items:center;gap:.7rem;font-weight:500;transition:all .3s ease;position:relative;overflow:hidden}
.nav-ch a i{font-size:1.12rem;transition:transform .3s}
.nav-ch a:hover{background:rgba(255,255,255,.14);color:#fff;transform:translateX(-6px)}
.nav-ch a:hover i{transform:rotate(-12deg) scale(1.2)}
.nav-ch a.active{background:rgba(255,255,255,.22);color:#fff;font-weight:700}
.nav-ch a.active::before{content:"";position:absolute;right:0;top:18%;height:64%;width:4px;border-radius:4px;background:var(--ch-yellow)}
.nav-ch a.disabled{opacity:.55;pointer-events:none}
.nav-ch .badge{margin-inline-start:auto}
.nav-sec{font-size:.72rem;color:rgba(255,255,255,.6);margin:1rem .6rem .2rem;letter-spacing:.02em}
.side-foot{margin-top:auto;background:rgba(255,255,255,.13);border-radius:16px;padding:.9rem;text-align:center;backdrop-filter:blur(8px)}

/* بدنه */
.main{margin-right:262px;position:relative;z-index:1;padding:1.3rem 1.5rem 3rem;min-height:100vh}
@media(max-width:991.98px){.sidebar{transform:translateX(100%)}.sidebar.show{transform:none}.main{margin-right:0}}

/* تاپ‌بار */
.topbar{background:color-mix(in srgb,var(--ch-card) 75%,transparent);backdrop-filter:blur(14px);border:1px solid var(--ch-border);border-radius:20px;padding:.7rem 1.1rem;box-shadow:var(--ch-shadow);position:relative;z-index:30}
.topbar .dropdown-menu{z-index:1055}
.search-box{background:var(--ch-bg);border-radius:14px;padding:.45rem .9rem;display:flex;align-items:center;gap:.5rem;min-width:220px}
.search-box input{border:0;background:transparent;outline:0;color:var(--ch-text);width:100%}
.icon-btn{width:42px;height:42px;border-radius:13px;border:1px solid var(--ch-border);background:var(--ch-card);color:var(--ch-text);display:grid;place-items:center;position:relative;transition:all .3s;cursor:pointer}
.icon-btn:hover{transform:translateY(-3px) rotate(-6deg);box-shadow:var(--ch-shadow);color:var(--ch-primary)}
.icon-btn .dot{position:absolute;top:8px;left:9px;width:9px;height:9px;border-radius:50%;background:var(--ch-pink);animation:blink 1.6s infinite}
@keyframes blink{50%{opacity:.2}}
.theme-toggle{width:64px;height:34px;border-radius:99px;border:0;position:relative;cursor:pointer;background:linear-gradient(90deg,#facc15,#f97316);transition:background .5s}
[data-bs-theme="dark"] .theme-toggle{background:linear-gradient(90deg,#312e81,#6d28d9)}
.theme-toggle .knob{position:absolute;top:4px;right:4px;width:26px;height:26px;border-radius:50%;background:#fff;display:grid;place-items:center;font-size:.95rem;transition:transform .5s cubic-bezier(.68,-.4,.32,1.4)}
[data-bs-theme="dark"] .theme-toggle .knob{transform:translateX(-30px)}

/* کارت‌ها */
.card-ch{background:var(--ch-card);border:1px solid var(--ch-border);border-radius:22px;box-shadow:var(--ch-shadow);transition:transform .35s ease,box-shadow .35s ease}
.card-ch.hoverable:hover{transform:translateY(-6px);box-shadow:0 22px 45px -15px rgba(124,58,237,.35)}
.stat-card{position:relative;overflow:hidden;color:#fff;border:0}
.stat-card::after{content:"";position:absolute;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.16);top:-60px;right:-40px}
.stat-card::before{content:"";position:absolute;width:90px;height:90px;border-radius:50%;background:rgba(255,255,255,.12);bottom:-40px;left:-25px}
.stat-card .display-num{font-size:2rem;font-weight:800}
.stat-icon{width:52px;height:52px;border-radius:16px;background:rgba(255,255,255,.22);display:grid;place-items:center;font-size:1.5rem;backdrop-filter:blur(4px)}
.g-purple{background:linear-gradient(135deg,#7c3aed,#a855f7)}
.g-pink{background:linear-gradient(135deg,#ec4899,#f472b6)}
.g-orange{background:linear-gradient(135deg,#f97316,#fbbf24)}
.g-teal{background:linear-gradient(135deg,#0d9488,#2dd4bf)}
.g-blue{background:linear-gradient(135deg,#3b82f6,#60a5fa)}
.g-red{background:linear-gradient(135deg,#ef4444,#f87171)}
.trend{font-size:.78rem;background:rgba(255,255,255,.22);border-radius:99px;padding:.15rem .6rem}
.section-title{font-weight:800;display:flex;align-items:center;gap:.55rem}
.section-title .bar{width:6px;height:26px;border-radius:6px;background:var(--ch-gradient)}
.chip{border-radius:99px;font-size:.78rem;padding:.3rem .8rem;font-weight:600;display:inline-block}
.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:.85rem;border:2px solid var(--ch-card)}
.progress-slim{height:8px;border-radius:99px;background:var(--ch-grid)}
.progress-slim .progress-bar{border-radius:99px}
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}

/* جدول‌ها */
.table-ch{--bs-table-bg:transparent}
.table-ch tbody tr{transition:background .25s}
.table-ch tbody tr:hover{background:color-mix(in srgb,var(--ch-primary) 7%,transparent)}

/* درخت (تجهیزات/موقعیت‌ها) */
.tree,.tree ul{list-style:none;margin:0;padding:0}
.tree ul{padding-inline-start:1.4rem;border-inline-start:1px dashed var(--ch-border)}
.tree li{margin:.15rem 0}
.tree .node{display:flex;align-items:center;gap:.5rem;padding:.45rem .7rem;border-radius:12px;transition:background .2s;text-decoration:none;color:var(--ch-text)}
.tree .node:hover{background:color-mix(in srgb,var(--ch-primary) 8%,transparent)}
.tree .node .code{color:var(--ch-muted);font-size:.8rem}
.tree .toggle{cursor:pointer;width:22px;height:22px;display:grid;place-items:center;border-radius:6px;color:var(--ch-muted);border:0;background:transparent}
.tree .toggle:hover{background:var(--ch-grid)}
.tree li.collapsed>ul{display:none}

/* اتوکامپلیت + دیت‌پیکر (سازگاری با تم و دارک‌مود) */
.ts-control{background:var(--ch-card);border-radius:.6rem;color:var(--ch-text)}
.ts-dropdown{background:var(--ch-card);color:var(--ch-text);border:1px solid var(--ch-border);box-shadow:var(--ch-shadow)}
.ts-dropdown .active{background:color-mix(in srgb,var(--ch-primary) 14%,transparent);color:var(--ch-text)}
.ts-dropdown .add-new{color:var(--ch-primary);font-weight:600;cursor:pointer;padding:.55rem .8rem;border-top:1px solid var(--ch-border)}
.ts-dropdown .add-new:hover{background:color-mix(in srgb,var(--ch-primary) 10%,transparent)}

/* اسکرول‌بار */
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:linear-gradient(var(--ch-primary),var(--ch-pink));border-radius:99px}
::-webkit-scrollbar-track{background:transparent}

/* صفحه‌ی ورود */
.hafez-auth{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 30% 20%,#a855f7 0%,#7c3aed 40%,#4c1d95 100%);padding:1rem;position:relative;overflow:hidden}
.hafez-auth-card{width:100%;max-width:390px;border:0;border-radius:22px;position:relative;z-index:2}
.hafez-auth .brand-badge{width:64px;height:64px;margin:auto}
