/* =========================================================
   گارانتی هدایت گستر — design system v2
   ========================================================= */
:root{
  --ink:#0b1626;--ink2:#14253f;--ink3:#1f3a63;
  --amber:#f5a524;--amber2:#ffcf6b;--bg:#eef1f7;--card:#fff;--line:#e3e8f1;
  --text:#16213a;--muted:#6a778f;--ok:#12a085;--warn:#e8890c;--bad:#d64545;--blue:#3566d6;
  --r:18px;--sh:0 1px 2px #0b162610,0 10px 28px -14px #0b162630;--sh-hi:0 2px 4px #0b162612,0 18px 38px -14px #0b162640;
  --ease:cubic-bezier(.2,.8,.2,1)
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:Vazirmatn,"IRANSans","Segoe UI",Tahoma,Arial,sans-serif;color:var(--text);font-size:14px;line-height:1.75;
  background:radial-gradient(1100px 480px at 90% -8%,#fff1cf 0,transparent 62%),radial-gradient(900px 500px at -10% 110%,#dbe6ff 0,transparent 60%),var(--bg);
  background-attachment:fixed}
a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}
svg{max-width:100%}
:focus-visible{outline:3px solid #ffd36b;outline-offset:2px}

/* ---------- motion primitives ---------- */
@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes pulse{0%,100%{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}
@keyframes drift{from{transform:translate(0,0) scale(1)}to{transform:translate(-40px,30px) scale(1.15)}}
@keyframes grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes seg{from{stroke-dasharray:0 390}}
@keyframes bar-in{from{width:0}}
@keyframes toast{from{opacity:0;transform:translateY(-24px) scale(.96)}to{opacity:1;transform:none}}
@keyframes rowin{from{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:none}}
.rv{animation:rise .6s var(--ease) both;animation-delay:calc(var(--i,0) * 70ms)}
.rowin{animation:rowin .35s var(--ease) both}

/* ---------- app shell ---------- */
body.app{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}
aside{background:linear-gradient(180deg,#10223d 0,#0a1424 100%);color:#c9d4e8;display:flex;flex-direction:column;padding:20px 14px 16px;position:sticky;top:0;height:100vh;box-shadow:inset -1px 0 0 #ffffff0d}
.logo{display:flex;align-items:center;gap:11px;color:#fff;padding:2px 8px 20px;border-bottom:1px solid #ffffff12;margin-bottom:16px}
.logo:hover{text-decoration:none}
.logo span{font-weight:800;font-size:17px;line-height:1.35}.logo small{display:block;font-weight:400;font-size:12px;color:#8fa2c4}
.bulb.mini{flex:none;filter:drop-shadow(0 0 10px #f5a524aa)}.bulb.mini .halo{display:none}
aside nav{display:flex;flex-direction:column;gap:4px;flex:1;overflow:auto}
aside nav a{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:12px;color:#b9c7e0;font-weight:500;transition:background .2s,color .2s,transform .25s var(--ease)}
aside nav a:hover{background:#ffffff12;color:#fff;text-decoration:none;transform:translateX(-4px)}
aside nav a.on{background:linear-gradient(135deg,#ffc84f,#f5a524);color:#2a1c00;font-weight:700;box-shadow:0 10px 22px -10px #f5a524}
.ic{width:20px;height:20px;flex:none}
.me{border-top:1px solid #ffffff12;padding-top:14px;font-size:12px;display:flex;flex-direction:column;gap:2px;color:#8fa2c4}
.me b{color:#fff;font-size:13.5px}.me a{color:#ffd36b}
.content{min-width:0}
main{max-width:1200px;margin:0 auto;padding:28px 30px 48px}
h1{font-size:23px;margin:0 0 6px;font-weight:800;letter-spacing:-.2px}
h2{font-size:15px;margin:0 0 14px;font-weight:700}
.sub{color:var(--muted);margin:0 0 20px}
.pagehead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:20px}

/* ---------- hero (dashboard) ---------- */
.hero{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  border-radius:26px;padding:28px 32px;margin-bottom:18px;color:#fff;
  background:linear-gradient(115deg,#0f2342 0%,#1b4180 58%,#2b62b8 100%);box-shadow:0 22px 40px -22px #1b4180}
.hero::before{content:"";position:absolute;inset-inline-start:-80px;top:-110px;width:380px;height:380px;border-radius:50%;
  background:radial-gradient(circle,#ffcf6b66,transparent 65%);animation:drift 9s ease-in-out infinite alternate}
.hero::after{content:"";position:absolute;inset-inline-end:30%;bottom:-120px;width:280px;height:280px;border-radius:50%;background:radial-gradient(circle,#ffffff1a,transparent 65%)}
.hero-text{position:relative;z-index:1}
.hero h1{color:#fff;font-size:27px;margin:0}.hero p{color:#c5d4ef;margin:6px 0 18px}
.hero .bulb{position:relative;z-index:1;filter:drop-shadow(0 0 26px #ffc24799);animation:bob 4.5s ease-in-out infinite}
.hero .bulb .halo{transform-origin:100px 100px;animation:pulse 3.8s ease-in-out infinite}
.quick{display:flex;gap:10px;flex-wrap:wrap}

/* ---------- surfaces ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px;margin-bottom:16px;box-shadow:var(--sh)}
.card>h2:first-child{margin-top:0}
.lift{transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.lift:hover{transform:translateY(-4px);box-shadow:var(--sh-hi)}
.grid{display:grid;gap:16px;margin-bottom:16px}.grid .card{margin:0}
.g-2-1{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.g-1-1{grid-template-columns:repeat(2,minmax(0,1fr))}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}
.kpi{position:relative;overflow:hidden;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--sh);animation:rise .6s var(--ease) both}
.kpi:nth-child(2){animation-delay:.07s}.kpi:nth-child(3){animation-delay:.14s}.kpi:nth-child(4){animation-delay:.21s}
.kpi::after{content:"";position:absolute;inset-inline-start:0;top:0;bottom:0;width:5px;background:var(--c,var(--blue))}
.kpi-ic{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;margin-bottom:10px;color:var(--c,var(--blue));background:#eef2fb;background:color-mix(in srgb,var(--c,#3566d6) 14%,#fff)}
.kpi span{display:block;color:var(--muted);font-size:12.5px}
.kpi b{display:block;font-size:30px;line-height:1.25;font-weight:800;font-variant-numeric:tabular-nums}

/* ---------- forms & buttons ---------- */
label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:5px;font-weight:600}
input,select,textarea{width:100%;padding:10px 13px;border:1.5px solid #d3dbe8;border-radius:12px;font:inherit;background:#fff;color:var(--text);transition:border-color .2s,box-shadow .2s}
input:hover,select:hover,textarea:hover{border-color:#b6c3d9}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--amber);box-shadow:0 0 0 4px #f5a52430}
button,.btn{background:linear-gradient(135deg,#ffc84f,#f5a524);color:#2a1c00;border:0;border-radius:12px;padding:10px 20px;cursor:pointer;font:inherit;font-weight:700;display:inline-block;
  box-shadow:0 8px 18px -10px #f5a524;transition:transform .15s,box-shadow .2s,filter .2s}
button:hover,.btn:hover{filter:brightness(1.06);box-shadow:0 12px 22px -10px #f5a524;text-decoration:none}
button:active,.btn:active{transform:scale(.97)}
button.sec,.btn.sec{background:#e6ebf3;color:var(--text);box-shadow:none}button.sec:hover,.btn.sec:hover{background:#d9e0ec;filter:none;box-shadow:none}
.btn.ghost{background:#ffffff1f;color:#fff;box-shadow:inset 0 0 0 1px #ffffff40}.btn.ghost:hover{background:#ffffff33;filter:none;box-shadow:inset 0 0 0 1px #ffffff66}
button.danger{background:linear-gradient(135deg,#e55b5b,#c93a3a);color:#fff;box-shadow:0 8px 18px -10px #c93a3a}
button.sm{padding:5px 13px;font-size:12px;border-radius:10px}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:end}.row>div{flex:1;min-width:140px}
.muted{color:var(--muted);font-size:12.5px}
details summary{cursor:pointer}

/* ---------- tables ---------- */
.tw{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
.card .tw{border:0;border-radius:0;box-shadow:none}
table{width:100%;border-collapse:collapse}
th,td{padding:11px 16px;border-bottom:1px solid var(--line);text-align:right;vertical-align:top}
th{background:#f5f7fb;font-size:12.5px;color:var(--muted);font-weight:700;white-space:nowrap}
tr:last-child td{border-bottom:0}
tbody tr,tr{transition:background .15s}tr:hover>td{background:#fffaf0}
.badge{display:inline-block;padding:1px 11px;border-radius:99px;font-size:12px;font-weight:600;white-space:nowrap}
.green{background:#d8f3ec;color:#0b6b58}.red{background:#fde2e2;color:#a12626}.orange{background:#ffeccc;color:#8a5200}.gray{background:#e7ebf2;color:#46526a}.blue{background:#dfe9ff;color:#1f4aa8}

/* ---------- toast ---------- */
.flash{position:fixed;z-index:200;top:18px;inset-inline:0;margin:0 auto;width:fit-content;max-width:92vw;padding:12px 22px;border-radius:14px;font-weight:600;
  box-shadow:0 18px 38px -14px #0b162688;animation:toast .55s var(--ease) both;transition:opacity .4s,transform .4s}
.flash.ok{background:#12a085;color:#fff}.flash.err{background:#d64545;color:#fff}.flash.hide{opacity:0;transform:translateY(-20px)}
.note{padding:10px 14px;border-radius:12px;font-weight:600;font-size:13px}.note.err{background:#fde2e2;color:#a12626}

/* ---------- charts ---------- */
.chart{width:100%;height:auto;display:block}.chart .ax{font-size:11px;fill:#7a869d}.chart .val{font-size:12px;font-weight:700;fill:#17223a;animation:fade .5s both;animation-delay:calc(.45s + var(--i,0) * 90ms)}
.chart .bar{transform-box:fill-box;transform-origin:50% 100%;animation:grow .8s var(--ease) both;animation-delay:calc(var(--i,0) * 90ms)}
.donut{display:flex;align-items:center;gap:18px;flex-wrap:wrap;justify-content:center}.donut svg{width:150px;height:150px;flex:none}
.donut .seg{animation:seg 1.1s var(--ease) both}
.donut .dn{font-size:28px;font-weight:800;fill:#17223a}.donut .ax{font-size:11px;fill:#7a869d}
.legend{list-style:none;margin:0;padding:0;display:grid;gap:8px;flex:1;min-width:150px}
.legend li{display:flex;align-items:center;gap:8px;font-size:13px}.legend i{width:11px;height:11px;border-radius:4px;flex:none}
.legend b{margin-inline-start:auto}.legend small{color:var(--muted);width:34px;text-align:left}
.hb{display:grid;gap:11px}.hb-r{display:grid;grid-template-columns:minmax(90px,150px) 1fr 36px;align-items:center;gap:10px;font-size:13px}
.hb-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hb-t{background:#edf1f7;border-radius:99px;height:10px;overflow:hidden;display:block}
.hb-t i{display:block;height:100%;border-radius:99px;animation:bar-in 1s var(--ease) both}.hb-r b{text-align:left}

/* ---------- autocomplete ---------- */
.ac{position:relative}.ac-list{position:absolute;z-index:20;right:0;left:0;top:100%;background:#fff;border:1px solid #cfd8e6;border-radius:12px;max-height:260px;overflow:auto;box-shadow:0 14px 28px -10px #0b162640;display:none;margin-top:4px}
.ac-list div{padding:9px 13px;cursor:pointer;border-bottom:1px solid #eef1f6}.ac-list div:hover{background:#fff6e0}.ac-list small{color:var(--muted)}

/* ---------- password field ---------- */
.pwbox{display:flex;gap:8px;align-items:stretch}.pw{position:relative;flex:1}.pw input{padding-inline-end:46px}
.pw-btn{position:absolute;inset-inline-end:6px;top:50%;transform:translateY(-50%);background:transparent;box-shadow:none;color:var(--muted);padding:6px;border-radius:9px;line-height:0}
.pw-btn:hover{background:#eef1f6;color:var(--text);filter:none;box-shadow:none}.pw-btn:active{transform:translateY(-50%) scale(.92)}
.pw-btn svg{width:20px;height:20px}.pw-btn .off{display:none}.pw-btn.on .off{display:block}.pw-btn.on .onicon{display:none}
.pw-gen{white-space:nowrap}
.userform{display:grid;gap:12px}.userform .row{align-items:end}.card.off{opacity:.62}

/* ---------- login ---------- */
body.auth{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;overflow:hidden;
  background:radial-gradient(900px 620px at 15% 8%,#264c88 0,transparent 60%),radial-gradient(760px 560px at 92% 92%,#4a3410 0,transparent 58%),#08111e}
body.auth main{display:contents}
.spark{position:absolute;bottom:-24px;left:var(--x);width:var(--s);height:var(--s);border-radius:50%;background:#ffcf6b;opacity:0;filter:blur(1px);animation:float var(--d) linear infinite;animation-delay:var(--dl)}
@keyframes float{0%{transform:translateY(0) translateX(0);opacity:0}12%{opacity:.75}100%{transform:translateY(-112vh) translateX(40px);opacity:0}}
.auth-wrap{position:relative;z-index:2;width:100%;max-width:410px;display:flex;flex-direction:column;align-items:center}
.bot{width:170px;height:auto;margin-bottom:-64px;position:relative;z-index:1;overflow:visible;animation:bob 5s ease-in-out infinite}
.bot .halo{transform-origin:100px 100px;animation:pulse 4.5s ease-in-out infinite}
.bot .lid{transform:translateY(-44px);transition:transform .22s ease}
.bot.blink .lid,.bot.cover .lid{transform:translateY(0)}
.bot.peek .eye-r .lid{transform:translateY(-44px)}
.bot .pupil{transition:transform .18s ease-out}
.bot .hand{transform:translateY(70px);transition:transform .4s cubic-bezier(.3,1.35,.5,1),opacity .2s}
.bot.cover .hand{opacity:1;transform:none}
.bot.peek .hand-r{transform:translate(38px,16px) rotate(26deg);transform-origin:118px 84px}
.bot .mouth-sad{opacity:0}.bot.sad .mouth-sad{opacity:1}.bot.sad .mouth-smile{opacity:0}
.bot.shake{animation:shake .6s}
@keyframes shake{0%,100%{transform:none}20%{transform:translateX(-10px) rotate(-3deg)}40%{transform:translateX(9px) rotate(3deg)}60%{transform:translateX(-6px)}80%{transform:translateX(4px)}}
.auth-card{position:relative;z-index:2;width:100%;background:#fff;border-radius:28px;padding:34px 30px 26px;box-shadow:0 40px 70px -24px #000c;animation:rise .7s var(--ease) both}
.auth-card h1{font-size:24px;text-align:center;margin:0}.auth-card .sub{text-align:center;margin:4px 0 18px}
.auth-card form{display:grid;gap:15px}
.auth-card input{padding:12px 14px;font-size:14.5px}
.auth-card button.go{width:100%;padding:13px;font-size:15px;margin-top:4px}
.auth-foot{position:relative;z-index:2;margin-top:18px;color:#7f93b6;font-size:12px;text-align:center}

/* ---------- responsive / a11y / print ---------- */
@media(max-width:980px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.g-2-1,.g-1-1{grid-template-columns:1fr}}
@media(max-width:820px){
 body.app{grid-template-columns:1fr}
 aside{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px}
 .logo{border:0;padding:0;margin:0}.logo small{display:none}
 aside nav{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;order:3;width:100%;padding-bottom:4px}
 aside nav a{white-space:nowrap;padding:8px 12px}aside nav a:hover{transform:none}
 .me{border:0;padding:0;margin-inline-start:auto;text-align:left}
 main{padding:16px 12px 34px}.hero{padding:22px 20px}.hero .bulb{display:none}
}
@media(max-width:480px){.kpis{grid-template-columns:1fr}.bot{width:140px;margin-bottom:-52px}.auth-card{padding:28px 20px 22px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
@media print{aside,.noprint,.flash{display:none!important}body.app{display:block;background:#fff}.card,.tw,.kpi{border-color:#ccc;box-shadow:none}}
