:root{
  --ink:#080D18; --panel:#101728; --panel2:#162034; --panel3:#1D2942;
  --line:#25314C; --line-soft:#1B2540;
  --foil:#D9B65C; --foil-hi:#F2DEA4; --foil-dim:#8F7530;
  --azure:#5B8DEF; --azure-hi:#A6C4FC; --azure-dim:#31538F;
  --cream:#EFE3C6; --cream-2:#D8C79E;
  /* رنگ هر حوزه نشانه است، نه تزیین: هر گروه منو و هر بخش مدیریت رنگ خود را دارد */
  --t-core:#C79A3C;  --t-core-hi:#F2DEA4;
  --t-id:#5B8DEF;    --t-id-hi:#A6C4FC;
  --t-com:#2F8B76;   --t-com-hi:#8FE0C9;
  --t-mk:#C77F3C;    --t-mk-hi:#F0C38A;
  --t-adm:#9B6BC4;   --t-adm-hi:#D3B4EC;
  --t-acct:#3F94A8;  --t-acct-hi:#93D5E4;
  /* سه گروه تازهٔ منو (ماژول‌های ۶ تا ۱۵). رنگ هر گروه باید از همسایه‌هایش
     جدا بخواند، وگرنه نشانِ رنگی کار خودش را نمی‌کند و منو یکدست خاکستری
     دیده می‌شود. */
  --t-svc:#C2563F;   --t-svc-hi:#F0A48E;
  --t-fin:#6C6BD4;   --t-fin-hi:#B4B3F0;
  --t-med:#B4537F;   --t-med-hi:#EBA3C2;
  --stamp:#A34A7C; --seal:#2F8B76; --alert:#C05252;
  --paper:#E7EAF3; --muted:#8794AE; --muted2:#5F6C88;
  --ff:"Vazirmatn","IRANSans","IRANYekan","Segoe UI",Tahoma,sans-serif;
  --ff-d:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;
  --ff-m:ui-monospace,"SFMono-Regular","Cascadia Mono","Consolas","Courier New",monospace;
  --r:10px; --r-lg:16px; --sh:0 20px 44px -26px rgba(0,0,0,.9);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--ink);color:var(--paper);font-family:var(--ff);font-size:14px;line-height:1.85;
  -webkit-font-smoothing:antialiased;min-height:100vh;background-attachment:fixed;
  background-image:radial-gradient(1200px 640px at 85% -10%,rgba(217,182,92,.08),transparent 60%),
    radial-gradient(900px 540px at 5% 105%,rgba(163,74,124,.07),transparent 58%);}
html[dir="ltr"] body{font-family:"Segoe UI",Inter,system-ui,sans-serif}
a{color:var(--foil);text-decoration:none}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#27334E;border-radius:20px}
::-webkit-scrollbar-track{background:transparent}
:focus-visible{outline:2px solid var(--foil);outline-offset:2px;border-radius:6px}
.num,.mono{font-family:var(--ff-m);font-variant-numeric:tabular-nums;letter-spacing:.02em}
.lat{font-family:var(--ff-d)}

/* ---------- ورود ---------- */
/* place-items:center با محتوای بلندتر از پرده، سرریز را بالای ناحیهٔ اسکرول
   می‌برد و همان‌جا دست‌نیافتنی می‌کند — با فهرست حساب‌های نمونه، فرم ورود
   اصلاً دیده نمی‌شد. صورتِ safe وقتی جا تنگ شد، به‌جای وسط‌چین، از بالا
   می‌چیند و کارت تا آخر اسکرول می‌شود. */
#gate{position:fixed;inset:0;z-index:80;display:grid;justify-items:center;
  align-content:safe center;padding:20px;overflow:auto;
  background:linear-gradient(165deg,#060A12,#0E1728 55%,#060A12)}
.gcard{width:min(440px,100%);background:linear-gradient(180deg,#141D31,#0F1626);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--sh);padding:28px 24px 22px;position:relative;overflow:hidden}
.gcard::before{content:"";position:absolute;inset-inline:0;top:0;height:3px;
  background:linear-gradient(90deg,var(--foil-dim),var(--foil-hi),var(--stamp),var(--seal),var(--foil-dim))}
.mark{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;flex:0 0 auto;
  background:linear-gradient(150deg,#F5E2AC,#D9B65C 44%,#87702C);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),inset 0 -2px 5px rgba(0,0,0,.4),0 6px 16px -8px rgba(217,182,92,.55)}
.mark svg{width:26px;height:26px;color:#1A1405}
.brand-row{display:flex;align-items:center;gap:11px;margin-bottom:4px}
.brand-row h1{margin:0;font-size:21px;font-weight:800;letter-spacing:-.02em}
.brand-row p{margin:0;font-size:10px;color:var(--muted2);letter-spacing:.16em;font-family:var(--ff-m)}
.sub{color:var(--muted);font-size:12.5px;margin:14px 0 18px}
.field{margin-bottom:12px}
.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px;font-weight:600}
.inp,select.inp,textarea.inp{width:100%;background:#0B1120;border:1px solid var(--line);border-radius:var(--r);
  padding:10px 12px;color:var(--paper);transition:border-color .15s,box-shadow .15s}
.inp:focus{border-color:var(--foil-dim);box-shadow:0 0 0 3px rgba(217,182,92,.13);outline:none}
textarea.inp{min-height:76px;resize:vertical;line-height:1.9}
select.inp{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:left 14px top 18px,left 9px top 18px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-left:32px}
html[dir="ltr"] select.inp{background-position:right 14px top 18px,right 9px top 18px;padding-left:12px;padding-right:32px}
.roles{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:4px 0 15px}
.rop{border:1px solid var(--line);background:#0B1120;border-radius:var(--r);padding:9px 10px;cursor:pointer;
  text-align:start;font-size:12px;transition:.15s;display:flex;align-items:center;gap:7px;font-weight:600}
.rop:hover{border-color:var(--foil-dim)}
.rop[aria-pressed="true"]{border-color:var(--foil);background:rgba(217,182,92,.1);color:var(--foil-hi)}
.rop svg{width:15px;height:15px;flex:0 0 auto;opacity:.85}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);
  background:var(--panel2);color:var(--paper);border-radius:var(--r);padding:9px 15px;cursor:pointer;
  font-weight:600;font-size:13px;transition:.15s;white-space:nowrap}
.btn:hover{border-color:var(--foil-dim);background:var(--panel3)}
.btn svg{width:15px;height:15px;flex:0 0 auto}
.btn-p{background:linear-gradient(180deg,#E4C670,#BE9C3E);border-color:#8F7530;color:#191203;font-weight:800}
.btn-p:hover{background:linear-gradient(180deg,#EFD689,#CBA847)}
.btn-g{background:transparent}
.btn-d{background:rgba(192,82,82,.13);border-color:#6E3131;color:#E39A9A}
.btn-d:hover{background:rgba(192,82,82,.23);border-color:var(--alert)}
.btn-s{padding:6px 10px;font-size:12px;border-radius:8px}
.btn-b{width:100%}
.hint{margin-top:15px;padding-top:13px;border-top:1px dashed var(--line);color:var(--muted2);font-size:11.5px;line-height:2}
.gtabs{display:flex;gap:6px;background:#0B1120;border:1px solid var(--line);border-radius:12px;padding:4px;margin-bottom:16px}
.gtabs button{flex:1;border:none;background:transparent;color:var(--muted);border-radius:9px;padding:7px 0;
  font-size:13px;font-weight:700;cursor:pointer;transition:.15s}
.gtabs button.on{background:linear-gradient(180deg,#E4C670,#BE9C3E);color:#191203}
.rolepick{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.langsw{display:flex;gap:6px;justify-content:center;margin-bottom:16px}
.langsw button{border:1px solid var(--line);background:#0B1120;color:var(--muted);border-radius:20px;
  padding:4px 14px;font-size:12px;cursor:pointer;font-weight:700}
.langsw button.on{background:rgba(217,182,92,.13);border-color:var(--foil);color:var(--foil-hi)}

/* ---------- اندازهٔ پایهٔ آیکون‌ها ----------
   SVG بدون width/height در مرورگر ۳۰۰×۱۵۰ پیکسل رندر می‌شود.
   همهٔ آیکون‌های Ui.Icon با viewBox «0 0 24 24» ساخته می‌شوند، پس همین‌جا
   یک اندازهٔ امن می‌گیرند و قاعده‌های بعدی می‌توانند آن را بازنویسی کنند. */
svg{max-width:100%}
svg[viewBox="0 0 24 24"]{width:16px;height:16px;flex:0 0 auto}

/* ---------- پوسته ---------- */
#app{display:none}#app.on{display:block}
.shell{display:flex;min-height:100vh}
.side{width:242px;flex:0 0 242px;background:linear-gradient(180deg,#0F1A31 0%,#0D1526 46%,#0A1020 100%);
  border-inline-end:1px solid var(--line);position:sticky;top:0;height:100vh;display:flex;flex-direction:column}
.side-h{padding:15px 14px 12px;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;gap:10px}
.side-h .mark{width:36px;height:36px;border-radius:10px}.side-h .mark svg{width:21px;height:21px}
.side-h h1{font-size:15px;margin:0;font-weight:800;letter-spacing:-.02em}
.side-h p{margin:0;font-size:9.5px;color:var(--muted2);letter-spacing:.13em;font-family:var(--ff-m)}
.nav{flex:1;overflow-y:auto;padding:9px 8px 16px}
/* ---------- منوی کناری آکاردئونی ---------- */
/* هر گروه سه مقدار می‌دهد: رنگ پایه، رنگ روشن، و دو تُن کم‌رنگ برای پس‌زمینه و لبه */
.ngroup{margin:0 0 3px;--t:#5B8DEF;--th:#A6C4FC;--tf:rgba(91,141,239,.13);--tm:rgba(91,141,239,.32)}
.ngroup[data-group="core"]{--t:var(--t-core);--th:var(--t-core-hi);--tf:rgba(199,154,60,.13);--tm:rgba(199,154,60,.34)}
.ngroup[data-group="id"]{--t:var(--t-id);--th:var(--t-id-hi);--tf:rgba(91,141,239,.13);--tm:rgba(91,141,239,.34)}
.ngroup[data-group="com"]{--t:var(--t-com);--th:var(--t-com-hi);--tf:rgba(47,139,118,.15);--tm:rgba(47,139,118,.38)}
.ngroup[data-group="mk"]{--t:var(--t-mk);--th:var(--t-mk-hi);--tf:rgba(199,127,60,.14);--tm:rgba(199,127,60,.36)}
.ngroup[data-group="adm"]{--t:var(--t-adm);--th:var(--t-adm-hi);--tf:rgba(155,107,196,.14);--tm:rgba(155,107,196,.36)}
.ngroup[data-group="acct"]{--t:var(--t-acct);--th:var(--t-acct-hi);--tf:rgba(63,148,168,.15);--tm:rgba(63,148,168,.38)}
.ngroup[data-group="svc"]{--t:var(--t-svc);--th:var(--t-svc-hi);--tf:rgba(194,86,63,.14);--tm:rgba(194,86,63,.36)}
.ngroup[data-group="fin"]{--t:var(--t-fin);--th:var(--t-fin-hi);--tf:rgba(108,107,212,.14);--tm:rgba(108,107,212,.36)}
.ngroup[data-group="med"]{--t:var(--t-med);--th:var(--t-med-hi);--tf:rgba(180,83,127,.14);--tm:rgba(180,83,127,.36)}
.ngroup+.ngroup{margin-top:2px}

.ng{width:100%;display:flex;align-items:center;gap:8px;margin:0;padding:9px 10px;
  background:none;border:1px solid transparent;border-radius:9px;cursor:pointer;text-align:start;
  font-family:inherit;font-size:9.5px;font-weight:800;letter-spacing:.15em;
  color:var(--th);transition:.15s}
.ng::after{content:"";flex:1;height:1px;order:9;
  background:linear-gradient(90deg,var(--tm),transparent)}
html[dir="ltr"] .ng::after{background:linear-gradient(270deg,var(--tm),transparent)}
.ng:hover{background:var(--tf);border-color:var(--tm);color:var(--cream)}
.ng .ng-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ng .ng-dot{width:5px;height:5px;border-radius:50%;flex:0 0 auto;
  background:var(--th);box-shadow:0 0 7px var(--t)}
.ng .ng-n{font-family:var(--ff-m);font-size:9.5px;letter-spacing:0;color:var(--muted2);
  background:var(--tf);border:1px solid var(--tm);
  border-radius:20px;padding:0 6px;line-height:1.7;flex:0 0 auto}
.ng .ng-x{width:13px;height:13px;flex:0 0 auto;color:var(--t);
  transition:transform .26s cubic-bezier(.4,0,.2,1),color .15s}
.ngroup.open>.ng{color:var(--th);background:linear-gradient(90deg,var(--tf),transparent)}
.ngroup.open>.ng .ng-x{transform:rotate(180deg);color:var(--th)}
.ngroup.open>.ng .ng-n{color:var(--th);background:var(--tf);border-color:var(--tm)}

.ng-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s cubic-bezier(.4,0,.2,1)}
.ngroup.open>.ng-body{grid-template-rows:1fr}
.ng-inner{overflow:hidden;min-height:0}
.ngroup>.ng-body>.ng-inner{padding:0 0 2px}
.ngroup.open>.ng-body>.ng-inner{padding-bottom:6px}

/* بازشدن آبشاری: هر آیتم با تأخیر کوتاه پس از آیتم پیشین */
.ngroup .ni{opacity:0;transform:translateY(-5px);transition:opacity .01s,transform .01s}
.ngroup.open .ni{opacity:1;transform:none;
  transition:opacity .22s ease calc(var(--i,0) * 34ms + 70ms),
             transform .26s cubic-bezier(.34,1.3,.5,1) calc(var(--i,0) * 34ms + 70ms),
             background .13s,color .13s,border-color .13s}
@media(prefers-reduced-motion:reduce){
  .ng-body,.ng .ng-x,.ngroup .ni,.ngroup.open .ni{transition:none}
  .ngroup .ni{opacity:1;transform:none}
}

.ni{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px;cursor:pointer;color:var(--muted);
  font-size:13px;font-weight:600;border:1px solid transparent;position:relative;
  margin-inline-start:9px}
.ni::after{content:"";position:absolute;inset-inline-start:-9px;inset-block:6px;width:1px;
  background:linear-gradient(180deg,transparent,var(--tm,rgba(91,141,239,.3)),transparent)}
.ni svg{width:16px;height:16px;flex:0 0 auto;color:var(--t,var(--azure));transition:.13s}
.ni:hover{background:linear-gradient(90deg,var(--tf,rgba(91,141,239,.15)),transparent);color:var(--cream);
  border-color:var(--tm,rgba(91,141,239,.3))}
.ni:hover svg{color:var(--th,var(--azure-hi))}
.ni.on{background:linear-gradient(90deg,var(--tf,rgba(91,141,239,.18)),transparent);color:var(--cream);
  border-color:var(--tm,rgba(239,227,198,.26))}
.ni.on svg{color:var(--th,var(--cream))}
.ni.on::after{background:linear-gradient(180deg,var(--th,var(--azure-hi)),var(--t,var(--azure)));
  width:2px;inset-block:4px}
.ni .c{margin-inline-start:auto;font-family:var(--ff-m);font-size:10.5px;color:var(--th,var(--azure-hi));
  background:var(--tf,rgba(91,141,239,.12));padding:1px 6px;border-radius:20px;
  border:1px solid var(--tm,rgba(91,141,239,.26))}
.ni.on .c{color:var(--cream);background:var(--tf,rgba(239,227,198,.13))}
.ni .n0{font-family:var(--ff-m);font-size:9.5px;color:var(--muted2);opacity:.7}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.top{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:10px;padding:10px 17px;
  background:rgba(8,13,24,.9);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.burger{display:none}
.sw{position:relative;flex:1;max-width:430px}
.sw svg{position:absolute;inset-inline-start:11px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--muted2)}
.sw .inp{padding-inline-start:34px;background:#0B1120}
.who{display:flex;align-items:center;gap:9px;padding:5px 11px 5px 6px;border:1px solid var(--line);border-radius:11px;background:var(--panel)}
.who .av{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:linear-gradient(150deg,#26334E,#161F33);
  border:1px solid var(--line);font-weight:800;font-size:12px;color:var(--foil)}
.who b{font-size:12.5px;display:block;line-height:1.4}
.who span{font-size:10.5px;color:var(--muted2);display:block;line-height:1.4}
.clock{display:flex;flex-direction:column;justify-content:center;gap:1px;padding:4px 11px;border:1px solid var(--line);
  border-radius:11px;background:var(--panel);min-width:132px}
.clock .t1{font-family:var(--ff-m);font-size:13px;color:var(--foil-hi);letter-spacing:.06em;line-height:1.25}
.clock .t2{font-size:10px;color:var(--muted2);line-height:1.35;white-space:nowrap}
.clock .t2 b{color:var(--muted);font-weight:700}
.rolebar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:9px 13px;border-radius:12px;margin-bottom:16px;
  border:1px solid rgba(217,182,92,.28);background:linear-gradient(90deg,rgba(217,182,92,.11),rgba(217,182,92,.02))}
.rolebar svg{width:16px;height:16px;color:var(--foil)}
.rolebar b{font-size:12.5px}
.rolebar span{font-size:11.5px;color:var(--muted)}
.rolebar .sc{margin-inline-start:auto;font-size:11px;color:var(--muted2);font-family:var(--ff-m)}
.agechip{font-family:var(--ff-m);font-size:11px}
@media(max-width:840px){.clock{display:none}}
.tile{width:36px;height:36px;flex:0 0 36px;border-radius:11px;display:grid;place-items:center;cursor:pointer;
  border:1px solid var(--line);background:var(--panel);color:var(--muted);transition:.15s}
.tile:hover{border-color:var(--foil-dim);color:var(--paper)}
.tile svg{width:17px;height:17px}
.tile.exit{background:rgba(192,82,82,.13);border-color:rgba(192,82,82,.4);color:#E08D8D}
.tile.exit:hover{background:rgba(192,82,82,.25);border-color:var(--alert);color:#F3B4B4}
.view{padding:20px 17px 60px;flex:1;max-width:1460px;width:100%;margin:0 auto}

/* ---------- اجزا ---------- */
.ph{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.eb{font-size:10px;letter-spacing:.2em;color:var(--azure-hi);font-weight:800;margin-bottom:3px;font-family:var(--ff-m)}
.ph h2{margin:0;font-size:23px;font-weight:800;letter-spacing:-.03em;color:var(--cream)}
.ph p{margin:3px 0 0;color:var(--muted);font-size:12.5px;max-width:660px}
.pa{margin-inline-start:auto;display:flex;gap:8px;flex-wrap:wrap}
.card{background:linear-gradient(180deg,#121A2B,#0E1524);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh)}
.ch{padding:13px 15px;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;gap:9px}
.ch>svg{width:17px;height:17px;color:var(--azure);flex:0 0 auto}
.ch h3{margin:0;font-size:14px;font-weight:800;color:var(--cream)}
.ch .s{font-size:11.5px;color:var(--muted2)}
.cb{padding:15px}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g23{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr)}
.kpi{padding:14px 15px;border-radius:var(--r-lg);border:1px solid var(--line);position:relative;overflow:hidden;
  background:linear-gradient(180deg,#131B2D,#0E1523)}
.kpi::after{content:"";position:absolute;inset-block:0;inset-inline-start:0;width:3px;background:var(--foil);opacity:.6}
.kpi.s2::after{background:linear-gradient(180deg,var(--t-com),var(--t-com-hi))}
.kpi.s3::after{background:linear-gradient(180deg,var(--t-adm),var(--t-adm-hi))}
.kpi.s4::after{background:linear-gradient(180deg,var(--alert),#E79A9A)}
.kpi.s5::after{background:linear-gradient(180deg,var(--t-mk),var(--t-mk-hi))}
.kpi.s6::after{background:linear-gradient(180deg,var(--t-acct),var(--t-acct-hi))}
.kpi .l{font-size:11.5px;color:var(--azure-hi);opacity:.9;font-weight:600}
.kpi .v{font-family:var(--ff-d);font-size:28px;font-weight:700;letter-spacing:-.02em;line-height:1.4;color:var(--cream)}
.kpi .h{font-size:11px;color:var(--muted2)}
.tag svg{width:12px;height:12px;flex:0 0 auto}
.tag.cr{color:var(--cream);border-color:rgba(239,227,198,.32);background:rgba(239,227,198,.09)}
.tag.mk{color:var(--t-mk-hi);border-color:rgba(199,127,60,.38);background:rgba(199,127,60,.12)}
.tag.ad{color:var(--t-adm-hi);border-color:rgba(155,107,196,.38);background:rgba(155,107,196,.12)}
.tag.ac{color:var(--t-acct-hi);border-color:rgba(63,148,168,.4);background:rgba(63,148,168,.13)}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px;
  border:1px solid var(--line);background:#0C1322;color:var(--muted)}
.tag.f{color:var(--foil-hi);border-color:rgba(217,182,92,.38);background:rgba(217,182,92,.1)}
.tag.se{color:#7FD4BE;border-color:rgba(47,139,118,.42);background:rgba(47,139,118,.12)}
.tag.st{color:#E3A0C6;border-color:rgba(163,74,124,.45);background:rgba(163,74,124,.14)}
.tag.al{color:#E79A9A;border-color:rgba(192,82,82,.42);background:rgba(192,82,82,.12)}
.tw{overflow-x:auto;border-radius:var(--r-lg);border:1px solid var(--line);background:#0E1524}
table{width:100%;border-collapse:collapse;min-width:640px}
th{text-align:start;font-size:11px;letter-spacing:.05em;color:var(--azure-hi);font-weight:800;padding:11px 13px;
  background:#0A101E;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:10px 13px;border-bottom:1px solid var(--line-soft);font-size:12.5px;vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:#141D30}
.ra{display:flex;gap:6px}
.empty{padding:42px 20px;text-align:center;color:var(--muted2)}
.empty svg{width:32px;height:32px;opacity:.4;margin-bottom:8px}
.empty b{display:block;color:var(--paper);font-size:14px;margin-bottom:4px}
.filters{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:14px;align-items:flex-end}
.filters .field{margin:0;min-width:145px;flex:1 1 145px;max-width:220px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:#0C1322;color:var(--muted);border-radius:20px;padding:4px 12px;
  font-size:12px;cursor:pointer;font-weight:600;transition:.13s}
.chip:hover{border-color:var(--foil-dim);color:var(--paper)}
.chip.on{background:linear-gradient(90deg,rgba(91,141,239,.18),rgba(239,227,198,.12));
  border-color:rgba(239,227,198,.42);color:var(--cream)}
.dl{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:12.5px}
.dl dt{color:var(--azure-hi);opacity:.85;font-weight:600;white-space:nowrap}
.dl dd{margin:0}
.spec{display:grid;grid-template-columns:repeat(auto-fill,minmax(138px,1fr));gap:8px}
.spec div{background:#0B1120;border:1px solid var(--line-soft);border-radius:9px;padding:8px 10px}
.spec div{border-inline-start:2px solid rgba(91,141,239,.38)}
.spec .k{font-size:10.5px;color:var(--azure-hi);opacity:.85;font-weight:700}
.spec .v{font-size:13px;font-weight:700}
.bar{flex:1;height:5px;border-radius:5px;background:#0A101E;overflow:hidden}
.bar i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--foil-dim),var(--foil-hi))}
.bar.se i{background:linear-gradient(90deg,#1E5C4D,#7FD4BE)}
.bar.al i{background:linear-gradient(90deg,#7A2F2F,#E29A9A)}

/* ---------- امضای بصری: پاسپورت دیجیتال ---------- */
.pp{position:relative;border-radius:15px;overflow:hidden;isolation:isolate;
  background:linear-gradient(158deg,#16223A 0%,#0E1728 42%,#131C30 72%,#0B1220 100%);
  border:1px solid #2C3B5C;box-shadow:0 22px 46px -26px #000,inset 0 1px 0 rgba(255,255,255,.07)}
.pp::before{content:"";position:absolute;inset:0;z-index:0;opacity:.5;pointer-events:none;
  background:repeating-linear-gradient(115deg,rgba(217,182,92,.05) 0 1px,transparent 1px 5px)}
.pp .guil{position:absolute;inset:-10%;z-index:0;opacity:.34;pointer-events:none}
.pp .guil svg{width:100%;height:100%}
.pp-in{position:relative;z-index:1;padding:15px 16px}
.pp-top{display:flex;align-items:center;gap:9px;padding-bottom:10px;border-bottom:1px solid rgba(217,182,92,.24)}
.pp-top .em{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;flex:0 0 auto;
  background:linear-gradient(150deg,#F2DEA4,#B79A47);color:#191203}
.pp-top .em svg{width:18px;height:18px}
.pp-top .t1{font-size:9px;letter-spacing:.2em;color:var(--foil);font-family:var(--ff-m);line-height:1.5}
.pp-top .t2{font-size:12px;font-weight:800;letter-spacing:.02em}
.pp-top .ct{margin-inline-start:auto;text-align:end}
.pp-top .ct b{font-family:var(--ff-m);font-size:15px;color:var(--foil-hi);letter-spacing:.06em;display:block;line-height:1.3}
.pp-top .ct span{font-size:9px;letter-spacing:.16em;color:var(--muted2);font-family:var(--ff-m)}
.pp-body{display:grid;grid-template-columns:96px 1fr auto;gap:13px;padding:12px 0 10px}
.pp-photo{width:96px;height:72px;border-radius:8px;border:1px solid rgba(217,182,92,.3);overflow:hidden;
  background:linear-gradient(180deg,#1B2740,#0D1526);display:grid;place-items:center}
.pp-photo svg{width:72px;height:44px;color:rgba(217,182,92,.55)}
.pp-f{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px;min-width:0}
.pp-f .r{min-width:0}
.pp-f .k{font-size:8.5px;letter-spacing:.13em;color:var(--muted2);font-family:var(--ff-m)}
.pp-f .v{font-size:12px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-qr{width:74px;flex:0 0 74px;background:#fff;border-radius:7px;padding:5px;height:fit-content}
.pp-qr svg{width:100%;height:auto;display:block}
.pp-mrz{font-family:var(--ff-m);font-size:10.5px;letter-spacing:.09em;color:#B9C4DC;background:rgba(6,10,20,.66);
  border-top:1px solid rgba(217,182,92,.24);padding:7px 16px;overflow:hidden;white-space:nowrap;direction:ltr;text-align:left}
.pp-mrz div{line-height:1.6}
.pp-micro{position:absolute;z-index:1;inset-inline:0;bottom:34px;font-size:3.4px;letter-spacing:.25em;
  color:rgba(217,182,92,.34);font-family:var(--ff-m);white-space:nowrap;overflow:hidden;padding:0 6px;direction:ltr;pointer-events:none}
.pp.sm .pp-in{padding:12px 13px}
.pp.sm .pp-body{grid-template-columns:1fr auto;gap:10px}
.pp.sm .pp-photo{display:none}
.pp.sm .pp-qr{width:58px;flex-basis:58px}
.pp.sm .pp-mrz{font-size:9px;padding:6px 13px}

/* کارت خودرو */
.vg{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.vc{cursor:pointer;transition:transform .18s,box-shadow .18s;animation:fi .3s ease both}
.vc:hover{transform:translateY(-2px)}
@keyframes fi{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
.vc-meta{display:flex;gap:6px;flex-wrap:wrap;padding:9px 14px 12px}

/* شجره‌نامه */
.tree{position:relative;padding-inline-start:26px}
.tree::before{content:"";position:absolute;inset-inline-start:9px;top:8px;bottom:12px;width:2px;
  background:linear-gradient(180deg,var(--foil-dim),rgba(47,139,118,.55),rgba(163,74,124,.5))}
.node{position:relative;padding-bottom:15px}
.node::before{content:"";position:absolute;inset-inline-start:-22px;top:5px;width:12px;height:12px;border-radius:50%;
  background:var(--panel);border:2px solid var(--foil-dim);box-shadow:0 0 0 4px rgba(8,13,24,.9)}
.node.f::before{border-color:var(--foil);background:var(--foil)}
.node.o::before{border-color:var(--seal)}
.node.r::before{border-color:var(--stamp)}
.node.c::before{border-color:var(--foil-hi);background:var(--foil-hi);box-shadow:0 0 0 4px rgba(8,13,24,.9),0 0 12px rgba(242,222,164,.55)}
.node .yr{font-family:var(--ff-m);font-size:11px;color:var(--foil);letter-spacing:.05em}
.node b{font-size:13px;display:block}
.node p{margin:1px 0 0;font-size:12px;color:var(--muted)}
.node .doc{margin-top:5px;display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--seal);
  border:1px dashed rgba(47,139,118,.45);border-radius:7px;padding:2px 8px}
.node .doc svg{width:12px;height:12px}

/* بررسی اصالت */
.chk{display:flex;align-items:center;gap:9px;padding:8px 11px;border:1px solid var(--line-soft);
  border-radius:9px;background:#0B1120;margin-bottom:6px}
.chk .st{width:20px;height:20px;border-radius:6px;display:grid;place-items:center;flex:0 0 auto}
.chk .st svg{width:13px;height:13px}
.chk .st.y{background:rgba(47,139,118,.18);color:#7FD4BE;border:1px solid rgba(47,139,118,.42)}
.chk .st.n{background:rgba(192,82,82,.15);color:#E79A9A;border:1px solid rgba(192,82,82,.4)}
.chk .st.u{background:#141D30;color:var(--muted2);border:1px solid var(--line)}
.chk .t{flex:1;font-size:12.5px;min-width:0}
.vb{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;border-radius:20px;font-size:12px;font-weight:800;
  background:linear-gradient(180deg,rgba(47,139,118,.22),rgba(47,139,118,.1));border:1px solid rgba(47,139,118,.5);color:#8FE0C9}
.vb svg{width:14px;height:14px}
.vb.self{background:linear-gradient(180deg,rgba(217,182,92,.18),rgba(217,182,92,.08));border-color:rgba(217,182,92,.45);color:var(--foil-hi)}

/* کارتوگرام */
.cart{display:grid;gap:5px}
.cel{border-radius:8px;border:1px solid var(--line);background:#0B1120;padding:6px 5px;text-align:center;
  cursor:pointer;transition:.15s;min-height:52px;display:flex;flex-direction:column;justify-content:center}
.cel:hover{border-color:var(--foil);transform:translateY(-1px)}
.cel .n{font-size:10px;font-weight:700;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cel .v{font-family:var(--ff-m);font-size:11.5px;color:var(--foil-hi)}
.cel.e{opacity:.28;cursor:default}
.cel.e:hover{transform:none;border-color:var(--line)}

/* درخت مرجع */
.drill{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.dcol{border:1px solid var(--line);border-radius:12px;background:#0C1322;overflow:hidden;display:flex;flex-direction:column;max-height:340px}
.dcol h4{margin:0;padding:9px 12px;font-size:10.5px;letter-spacing:.13em;color:var(--muted2);
  background:#0A101E;border-bottom:1px solid var(--line);font-family:var(--ff-m)}
.dcol .list{overflow-y:auto;padding:6px}
.dit{padding:7px 10px;border-radius:8px;font-size:12.5px;cursor:pointer;color:var(--muted);transition:.12s}
.dit:hover{background:#151F35;color:var(--paper)}
.dit.on{background:rgba(217,182,92,.12);color:var(--foil-hi);font-weight:700}

/* مودال و پیام */
.modal{position:fixed;inset:0;z-index:70;display:none;background:rgba(4,7,14,.8);backdrop-filter:blur(4px);padding:20px;overflow-y:auto}
.modal.on{display:block}
.mb{width:min(780px,100%);margin:24px auto;background:linear-gradient(180deg,#131B2D,#0E1523);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:0 40px 80px -40px #000;animation:pop .22s ease both}
.mb.w{width:min(1060px,100%)}
@keyframes pop{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.mh{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--line);position:sticky;top:0;
  background:#131B2D;border-radius:var(--r-lg) var(--r-lg) 0 0;z-index:2}
.mh h3{margin:0;font-size:15px;font-weight:800}
.mh .x{margin-inline-start:auto;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;cursor:pointer;
  border:1px solid var(--line);background:var(--panel2);color:var(--muted)}
.mh .x:hover{color:var(--paper);border-color:var(--foil-dim)}
.mbo{padding:16px}
.mf{padding:12px 16px;border-top:1px solid var(--line);display:flex;gap:8px;flex-wrap:wrap}
.fg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.fg .full{grid-column:1/-1}
.st-t{font-size:10.5px;font-weight:800;letter-spacing:.13em;color:var(--foil-dim);margin:5px 0 2px;grid-column:1/-1;
  padding-top:9px;border-top:1px dashed var(--line);font-family:var(--ff-m)}
.st-t:first-child{border-top:none;padding-top:0}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px;border-bottom:1px solid var(--line);padding-bottom:10px}
.tab{padding:6px 13px;border-radius:9px;font-size:12.5px;cursor:pointer;font-weight:700;color:var(--muted);
  border:1px solid transparent;transition:.13s}
.tab:hover{color:var(--paper);background:#141D30}
.tab.on{background:linear-gradient(180deg,rgba(91,141,239,.2),rgba(239,227,198,.1));
  border-color:rgba(239,227,198,.38);color:var(--cream)}
.tw2{position:fixed;bottom:18px;inset-inline-start:18px;z-index:90;display:flex;flex-direction:column;gap:8px}
.toast{background:#162034;border:1px solid var(--line);border-inline-start:3px solid var(--foil);border-radius:11px;
  padding:10px 14px;font-size:12.5px;box-shadow:var(--sh);animation:sl .25s ease both;max-width:330px}
.toast.err{border-inline-start-color:var(--alert)}.toast.ok{border-inline-start-color:var(--seal)}
@keyframes sl{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.chart{width:100%;height:auto;display:block;overflow:visible}
.legend{display:flex;gap:12px;flex-wrap:wrap;margin-top:9px;font-size:11.5px;color:var(--muted)}
.legend i{width:9px;height:9px;border-radius:3px;display:inline-block;margin-inline-end:5px}
.rank{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px dashed var(--line-soft)}
.rank:last-child{border-bottom:none}
.rank .n{font-family:var(--ff-d);font-size:14px;color:var(--foil-dim);width:20px;text-align:center}
.rank .t{flex:1;font-size:12.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank .b{width:86px}
.rank .v{font-family:var(--ff-m);font-size:12px;color:var(--muted)}
.priv{display:inline-flex;align-items:center;gap:4px;font-size:10px;color:var(--muted2);
  border:1px solid var(--line);border-radius:6px;padding:0 6px;cursor:pointer}
.priv svg{width:11px;height:11px}
.priv.pub{color:#7FD4BE;border-color:rgba(47,139,118,.4)}
.mask{filter:blur(4px);user-select:none}

@media(max-width:1140px){.g4{grid-template-columns:repeat(2,1fr)}.g23,.g3{grid-template-columns:1fr}.drill{grid-template-columns:repeat(2,1fr)}}
@media(max-width:840px){
  .side{position:fixed;z-index:60;inset-inline-start:0;transform:translateX(-100%);transition:transform .24s ease}
  /* دو نکته که با هم کشو را وسط صفحه می‌انداختند:

     ۱) در راست‌به‌چپ، inset-inline-start خودش یعنی لبهٔ راست — پس جای کشو در
     قاعدهٔ بالا درست است و تنها جهتِ پنهان‌شدن باید وارونه شود. نسخهٔ پیشین
     به‌جای این inset-inline-end:0 می‌گذاشت، که در راست‌به‌چپ یعنی لبهٔ چپ.

     ۲) وزن html[dir="rtl"] .side از .side.open بیشتر است، پس transformِ
     پنهان‌شدن حتی در حالت باز هم برنده می‌شد. حالت باز هم باید همان
     پیشوند را داشته باشد وگرنه کشو هیچ‌وقت باز نمی‌شود. */
  html[dir="rtl"] .side{transform:translateX(100%)}
  .side.open,html[dir="rtl"] .side.open{transform:none}
  .burger{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;border:1px solid var(--line);
    background:var(--panel);cursor:pointer;color:var(--muted);flex:0 0 36px}
  .burger svg{width:18px;height:18px}
  .g2,.g4,.fg,.drill{grid-template-columns:1fr}
  .view{padding:15px 12px 60px}
  .who b,.who span{display:none}.who{padding:5px}
  .pp-body{grid-template-columns:1fr auto}.pp-photo{display:none}
  .pp-f{grid-template-columns:1fr}
  table{min-width:540px}.ph h2{font-size:19px}
  /* نوار بالا روی موبایل: جست‌وجو به سطر دوم می‌رود تا کاشی‌ها له نشوند */
  .top{flex-wrap:wrap;gap:8px;padding:9px 12px}
  .sw{order:9;flex-basis:100%;max-width:none}
  .ph{gap:10px;margin-bottom:14px}
  .pa{margin-inline-start:0;flex-basis:100%}
  .pa .btn{flex:1 1 auto;justify-content:center}
  .filters{gap:8px}
  .filters .field{max-width:none;flex:1 1 100%}
  .tabs{gap:4px;padding-bottom:8px;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tab{flex:0 0 auto;font-size:12px;padding:6px 10px}
  .modal{padding:10px}
  .mb{margin:8px auto}
  .mbo,.mf,.mh{padding-inline:12px}
  .cb,.ch{padding-inline:12px}
  .kpi .v{font-size:23px}
  .rolebar{padding:8px 11px;gap:7px}
  .rolebar .sc{flex-basis:100%;margin-inline-start:0}
}
@media(max-width:480px){
  .view{padding:12px 10px 52px}
  .ph h2{font-size:17px}
  .ph p{font-size:12px}
  .btn{padding:8px 12px;font-size:12.5px}
  .kpi{padding:12px}
  .kpi .v{font-size:20px}
  .chips{gap:5px}
  .chip{padding:4px 10px;font-size:11.5px}
  .side{width:min(86vw,300px);flex-basis:min(86vw,300px)}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* ===== چاپ کارت PVC استاندارد CR80 و سند A4 ===== */
#printroot{display:none}
.pv-stage{display:flex;gap:8mm;flex-wrap:wrap;justify-content:center;padding:6mm 0}
.pvc{position:relative;width:85.6mm;height:53.98mm;border-radius:3.18mm;overflow:hidden;
  background:linear-gradient(155deg,#16223A 0%,#0E1728 44%,#131C30 74%,#0B1220 100%);
  color:#E7EAF3;box-shadow:0 3mm 8mm -4mm rgba(0,0,0,.8);border:.2mm solid #2C3B5C;
  font-family:var(--ff);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.pvc.bleed{width:91.6mm;height:59.98mm;border-radius:0}
.pvc .safe{position:absolute;inset:0;padding:3.2mm 3.6mm;display:flex;flex-direction:column;z-index:2}
.pvc.bleed .safe{inset:3mm}
.pvc .g{position:absolute;inset:-8%;z-index:0;opacity:.3}
.pvc .g svg{width:100%;height:100%}
.pvc .sheen{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:repeating-linear-gradient(112deg,rgba(217,182,92,.05) 0 .2mm,transparent .2mm 1.1mm)}
.pvc .ch1{display:flex;align-items:center;gap:1.6mm;padding-bottom:1.4mm;border-bottom:.2mm solid rgba(217,182,92,.35)}
.pvc .em{width:5.6mm;height:5.6mm;border-radius:1.3mm;display:grid;place-items:center;flex:0 0 auto;
  background:linear-gradient(150deg,#F2DEA4,#B79A47);color:#191203}
.pvc .em svg{width:3.4mm;height:3.4mm}
.pvc .bt{font-size:2.9mm;font-weight:800;letter-spacing:-.02em;line-height:1.25}
.pvc .bs{font-size:1.6mm;letter-spacing:.14em;color:#D9B65C;font-family:var(--ff-m);line-height:1.4}
.pvc .cidbox{margin-inline-start:auto;text-align:end}
.pvc .cidbox b{display:block;font-family:var(--ff-m);font-size:2.7mm;color:#F2DEA4;letter-spacing:.05em;line-height:1.2}
.pvc .cidbox span{font-size:1.5mm;font-family:var(--ff-m);color:#7986A0;letter-spacing:.1em}
.pvc .body{display:flex;gap:2.4mm;padding-top:2mm;flex:1;min-height:0}
.pvc .ph{width:18mm;height:13.5mm;border-radius:1.4mm;border:.2mm solid rgba(217,182,92,.34);flex:0 0 auto;
  background:linear-gradient(180deg,#1B2740,#0D1526);display:grid;place-items:center}
.pvc .ph svg{width:13mm;height:8mm;color:rgba(217,182,92,.5)}
.pvc .fl{flex:1;min-width:0;display:grid;grid-template-columns:1fr 1fr;gap:.6mm 2.2mm;align-content:start}
.pvc .fl.one{grid-template-columns:1fr}
.pvc .k{font-size:1.35mm;letter-spacing:.1em;color:#7986A0;font-family:var(--ff-m);line-height:1.5}
.pvc .v{font-size:2mm;font-weight:700;line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pvc .qr{width:13mm;height:13mm;background:#fff;border-radius:1mm;padding:.5mm;flex:0 0 auto}
.pvc .qr svg{width:100%;height:100%;display:block}
.pvc .foot{display:flex;align-items:flex-end;gap:2mm;padding-top:1.4mm;margin-top:auto;
  border-top:.2mm solid rgba(217,182,92,.25)}
.pvc .badge{font-size:1.7mm;font-weight:800;padding:.5mm 1.6mm;border-radius:2mm;
  border:.2mm solid rgba(47,139,118,.6);background:rgba(47,139,118,.18);color:#8FE0C9}
.pvc .badge.self{border-color:rgba(217,182,92,.55);background:rgba(217,182,92,.14);color:#F2DEA4}
.pvc .mz{font-family:var(--ff-m);font-size:1.75mm;letter-spacing:.08em;color:#AFBBD4;direction:ltr;text-align:left;line-height:1.5}
.pvc .micro{font-size:.9mm;letter-spacing:.2em;color:rgba(217,182,92,.4);font-family:var(--ff-m);
  direction:ltr;white-space:nowrap;overflow:hidden;line-height:1.6}
.pvc .tiny{font-size:1.4mm;color:#7986A0;line-height:1.5}
.pvc.back{background:linear-gradient(155deg,#0E1728 0%,#16223A 46%,#0B1220 100%)}
.pvc .mag{position:absolute;inset-inline:0;top:6mm;height:9mm;background:linear-gradient(180deg,#0a0f1a,#1a2231);z-index:1;opacity:.55}
.crop{position:absolute;width:3mm;height:3mm;z-index:5}
.crop::before,.crop::after{content:"";position:absolute;background:#000}
.crop::before{width:3mm;height:.15mm;top:0;left:0}
.crop::after{height:3mm;width:.15mm;top:0;left:0}
.crop.tl{top:0;left:0}.crop.tr{top:0;right:0;transform:scaleX(-1)}
.crop.bl{bottom:0;left:0;transform:scaleY(-1)}.crop.br{bottom:0;right:0;transform:scale(-1)}
.pv-note{font-size:11.5px;color:var(--muted);text-align:center;margin-top:4px}
/* سند A4 */
.doc{width:186mm;background:#fff;color:#171B24;padding:0;font-family:var(--ff);
  -webkit-print-color-adjust:exact;print-color-adjust:exact;margin:0 auto;position:relative}
.doc .dh{display:flex;align-items:flex-start;gap:5mm;padding-bottom:4mm;border-bottom:.6mm solid #C09B3E}
.doc .dh .em{width:14mm;height:14mm;border-radius:3mm;display:grid;place-items:center;flex:0 0 auto;
  background:linear-gradient(150deg,#F2DEA4,#B79A47);color:#191203}
.doc .dh .em svg{width:8mm;height:8mm}
.doc h1{margin:0;font-size:5.2mm;font-weight:800;letter-spacing:-.02em}
.doc .dh p{margin:.6mm 0 0;font-size:3mm;color:#5C6478}
.doc .dh .qrw{margin-inline-start:auto;width:24mm;text-align:center}
.doc .dh .qrw svg{width:24mm;height:24mm;display:block}
.doc .dh .qrw span{font-family:var(--ff-m);font-size:2.2mm;color:#5C6478;letter-spacing:.04em}
.doc .sec{margin-top:5mm;break-inside:avoid}
.doc .sec h2{margin:0 0 2mm;font-size:3.2mm;font-weight:800;letter-spacing:.08em;color:#8A6E2F;
  border-inline-start:1mm solid #C09B3E;padding-inline-start:2.4mm}
.doc .sec h2 small{font-weight:600;color:#98A0B2;letter-spacing:.04em;font-size:2.6mm}
.doc .kv{display:grid;grid-template-columns:repeat(3,1fr);gap:1.6mm 4mm}
.doc .kv.two{grid-template-columns:repeat(2,1fr)}
.doc .kv div{border-bottom:.2mm dotted #C9CEDA;padding-bottom:1mm}
.doc .kv .k{font-size:2.4mm;color:#6C7488}
.doc .kv .v{font-size:3.1mm;font-weight:700}
.doc table.dt{width:100%;min-width:0;border-collapse:collapse;margin-top:1mm}
.doc table.dt th{background:#F2F0E8;color:#5C5334;font-size:2.4mm;padding:1.4mm 2mm;text-align:start;border:.2mm solid #D9D5C6}
.doc table.dt td{font-size:2.7mm;padding:1.4mm 2mm;border:.2mm solid #E2E0D6}
.doc .sign{display:flex;gap:6mm;margin-top:8mm}
.doc .sign div{flex:1;border-top:.3mm solid #9AA1B2;padding-top:2mm;font-size:2.5mm;color:#5C6478;text-align:center}
.doc .dfoot{margin-top:6mm;padding-top:3mm;border-top:.3mm solid #C09B3E;font-size:2.3mm;color:#6C7488;display:flex;gap:4mm}
.doc .stamp{position:absolute;left:14mm;bottom:24mm;width:32mm;height:32mm;border-radius:50%;
  border:.6mm dashed rgba(138,110,47,.55);display:grid;place-items:center;text-align:center;
  font-size:2.4mm;font-weight:800;color:rgba(122,98,36,.75);transform:rotate(-12deg);line-height:1.5}
@media print{body{background:#fff}.side,.top,.mf,.pa,.no-print{display:none!important}
  .modal{position:static;background:none;padding:0}.mb{box-shadow:none;border:none;margin:0}
  body.pmode>*{display:none!important}
  body.pmode #printroot{display:block!important;position:static}
  body.pmode .modal{display:none!important}
  #printroot .pv-stage{padding:0;gap:0;display:block}
  #printroot .pvc{page-break-after:always;break-after:page;box-shadow:none;margin:0}
  #printroot .pvc:last-child{page-break-after:auto;break-after:auto}
  #printroot .pv-note{display:none}
  #printroot .doc{width:auto}
}

/* ==================================================================
   پنل مدیریت — دسکتاپ و موبایل
   ================================================================== */
.hidden{display:none}
.vb.bad{background:linear-gradient(180deg,rgba(192,82,82,.2),rgba(192,82,82,.08));
  border-color:rgba(192,82,82,.5);color:#E79A9A}
#scrim{display:none;position:fixed;inset:0;z-index:55;background:rgba(4,7,14,.6);backdrop-filter:blur(2px)}
body.nav-open #scrim{display:block}

/* ---------- ریل ناوبری پنل مدیریت ---------- */
.adm-bar{display:flex;align-items:center;gap:10px;margin-bottom:18px;
  border-bottom:1px solid var(--line);padding-bottom:2px;position:relative}
.adm-rail{display:flex;gap:2px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;
  padding-bottom:2px;scroll-snap-type:x proximity}
.adm-rail::-webkit-scrollbar{display:none}
.adm-link{--t:var(--azure);--th:var(--azure-hi);
  display:inline-flex;align-items:center;gap:6px;padding:8px 11px;flex:0 0 auto;
  font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap;scroll-snap-align:start;
  border-bottom:2px solid transparent;transition:color .14s,border-color .14s,background .14s;
  border-radius:8px 8px 0 0}
.adm-link[data-tone="azure"]{--t:#5B8DEF;--th:#A6C4FC}
.adm-link[data-tone="brass"]{--t:#C79A3C;--th:#F2DEA4}
.adm-link[data-tone="amber"]{--t:#C77F3C;--th:#F0C38A}
.adm-link[data-tone="violet"]{--t:#9B6BC4;--th:#D3B4EC}
.adm-link[data-tone="teal"]{--t:#2F8B76;--th:#8FE0C9}
/* دو بخش تازهٔ پنل مدیریت (ماژول پانزدهم): شرکا و سفارش‌ها، و شکایت و تبلیغ */
.adm-link[data-tone="rust"]{--t:#C2563F;--th:#F0A48E}
.adm-link[data-tone="rose"]{--t:#B4537F;--th:#EBA3C2}
.adm-link svg{width:14px;height:14px;flex:0 0 auto;color:var(--t);transition:color .14s}
.adm-link:hover{color:var(--paper);background:rgba(255,255,255,.03)}
.adm-link:hover svg{color:var(--th)}
.adm-link.on{color:var(--th);border-bottom-color:var(--t);background:rgba(255,255,255,.04)}
.adm-link.on svg{color:var(--th)}
.adm-link:focus-visible{outline:2px solid var(--azure);outline-offset:-2px}

.adm-out{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;padding:7px 11px;
  font-size:12px;font-weight:700;color:var(--muted2);border:1px solid var(--line);
  border-radius:9px;transition:.14s;background:#0B1120}
.adm-out svg{width:14px;height:14px}
.adm-out:hover{color:var(--cream);border-color:rgba(91,141,239,.45)}

.adm-kpis{display:grid;gap:11px;grid-template-columns:repeat(4,minmax(0,1fr))}

@media(max-width:1180px){.adm-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:920px){
  .adm-link{padding:8px 9px;font-size:11.5px;gap:5px}
  .adm-out span{display:none}
  .adm-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:560px){
  .adm-kpis{gap:8px}
  .adm-kpis .kpi{padding:11px 12px}
  .adm-kpis .kpi .v{font-size:21px}
  .adm-kpis .kpi .l{font-size:10.5px}
}

/* جدول‌های مدیریتی روی موبایل به کارت تبدیل می‌شوند */
@media(max-width:700px){
  .tw{border:none;background:none;overflow:visible}
  .tw table,.tw thead,.tw tbody,.tw tr,.tw td{display:block;width:100%;min-width:0}
  .tw thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .tw tbody tr{background:linear-gradient(180deg,#121A2B,#0E1524);border:1px solid var(--line);
    border-radius:var(--r-lg);margin-bottom:10px;padding:4px 2px}
  .tw tbody tr:hover{background:linear-gradient(180deg,#141D30,#0E1524)}
  .tw td{border-bottom:1px solid var(--line-soft);padding:9px 13px;display:flex;gap:10px;
    align-items:center;justify-content:space-between;text-align:end}
  .tw td:last-child{border-bottom:none}
  .tw td::before{content:attr(data-label);color:var(--azure-hi);opacity:.85;font-size:11px;
    font-weight:700;text-align:start;flex:0 0 auto}
  .tw td .ra{justify-content:flex-end;flex-wrap:wrap}
  .tw td form{display:inline-flex}
}

/* انتخاب نقش در گردش ثبت‌نام */
.role-pick{cursor:pointer;transition:.15s;display:block}
.role-pick:hover{border-color:rgba(91,141,239,.5);transform:translateY(-1px)}
.role-pick .role-check{width:16px;height:16px;accent-color:#5B8DEF;flex:0 0 auto;cursor:pointer}
.role-pick:has(.role-check:checked){border-color:rgba(239,227,198,.55);
  background:linear-gradient(180deg,rgba(91,141,239,.12),rgba(14,21,36,1))}
.role-pick.held{opacity:.72;cursor:default}
.role-pick.held:hover{transform:none;border-color:var(--line)}

/* ---------- فرم ثبت‌نام استاندارد ---------- */
.gcard.wide{width:min(700px,100%)}
.reg-step{display:flex;align-items:center;gap:9px;margin:18px 0 10px;
  font-size:10.5px;font-weight:800;letter-spacing:.14em;color:var(--azure-hi)}
.reg-step:first-of-type{margin-top:6px}
.reg-step::after{content:"";flex:1;height:1px;
  background:linear-gradient(90deg,rgba(91,141,239,.4),rgba(239,227,198,.16),transparent)}
html[dir="ltr"] .reg-step::after{background:linear-gradient(270deg,rgba(91,141,239,.4),rgba(239,227,198,.16),transparent)}
.field .req{color:#E79A9A;font-size:12px;margin-inline-start:2px}
.field .fh{display:block;margin-top:4px;font-size:10.5px;color:var(--muted2);line-height:1.7}
.inp:invalid:not(:placeholder-shown){border-color:rgba(192,82,82,.55)}
.inp:valid:not(:placeholder-shown){border-color:rgba(47,139,118,.4)}
@media(max-width:560px){.fg{grid-template-columns:1fr}}

/* ---------- صفحهٔ نقش‌ها ---------- */
.legend-rows{display:grid;gap:9px}
.legend-rows>div{display:flex;align-items:center;gap:11px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}
.legend-rows .tag{flex:0 0 auto;min-width:168px;justify-content:center}
.role-sec{margin-bottom:22px}
.role-sec-h{display:flex;align-items:flex-start;gap:12px;margin-bottom:11px;padding-bottom:9px;
  border-bottom:1px solid var(--line)}
.role-sec-h .n{font-family:var(--ff-m);font-size:12px;color:var(--cream);flex:0 0 auto;
  background:rgba(91,141,239,.14);border:1px solid rgba(91,141,239,.3);
  border-radius:9px;padding:4px 9px;line-height:1.5}
.role-sec-h h3{margin:0;font-size:15px;font-weight:800;color:var(--cream)}
.role-sec-h p{margin:3px 0 0;font-size:12px;color:var(--muted);line-height:1.9}
.role-list{display:grid;gap:8px}
.role-row{display:grid;grid-template-columns:38px minmax(0,1fr) 250px;gap:13px;align-items:center;
  padding:12px 14px;border:1px solid var(--line);border-radius:12px;
  background:linear-gradient(180deg,#121A2B,#0E1524);transition:.15s}
.role-row:hover{border-color:rgba(91,141,239,.4);transform:translateY(-1px)}
.role-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;
  background:rgba(91,141,239,.1);border:1px solid rgba(91,141,239,.24);color:var(--azure)}
.role-ic svg{width:19px;height:19px}
.role-t{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
.role-t b{font-size:14px;color:var(--cream)}
.role-t .mono{font-size:10.5px;color:var(--muted2)}
.role-main p{margin:4px 0 0;font-size:12px;color:var(--muted);line-height:1.95}
.role-how{text-align:end}
.role-how .tag{white-space:normal;text-align:center;line-height:1.7}
@media(max-width:820px){
  .role-row{grid-template-columns:32px minmax(0,1fr)}
  .role-ic{width:32px;height:32px}
  .role-how{grid-column:1/-1;text-align:start}
}

/* ---------- گام‌های مسیر ---------- */
ol.steps{margin:0;padding:0;list-style:none;counter-reset:s;display:grid;gap:10px}
ol.steps li{counter-increment:s;display:grid;grid-template-columns:26px minmax(0,1fr);gap:11px;align-items:start}
ol.steps li::before{content:counter(s);font-family:var(--ff-m);font-size:11px;color:var(--cream);
  width:26px;height:26px;display:grid;place-items:center;border-radius:8px;
  background:rgba(91,141,239,.14);border:1px solid rgba(91,141,239,.3)}
ol.steps b{display:block;font-size:13px;color:var(--cream)}
ol.steps span{display:block;font-size:12px;color:var(--muted);line-height:1.9;margin-top:2px}

/* ==================================================================
   صفحهٔ نخست عمومی — «سند»، نه بروشور
   ------------------------------------------------------------------
   امضا: خودِ شناسنامهٔ زندهٔ خودرو، با گیوشه و QR واقعی از دیتابیس.
   ================================================================== */
.lp{--gut:clamp(18px,4vw,42px);max-width:1180px;margin:0 auto;padding-inline:var(--gut)}

/* --- خط اطلاعاتی به سبک نوار ماشین‌خوان --- */
.lp-strip{font-family:var(--ff-m);font-size:10px;letter-spacing:.22em;color:var(--foil-dim);
  display:flex;gap:14px;flex-wrap:wrap;align-items:center;direction:ltr;
  padding-bottom:9px;border-bottom:1px solid rgba(217,182,92,.22)}
.lp-strip b{color:var(--foil);font-weight:400}

/* --- قهرمان --- */
.lp-hero{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);
  gap:clamp(24px,5vw,56px);align-items:center;padding:clamp(28px,6vw,62px) 0 clamp(24px,4vw,44px)}
.lp-hero h1{margin:14px 0 0;font-family:var(--ff-d);font-weight:400;
  font-size:clamp(30px,4.6vw,52px);line-height:1.42;letter-spacing:-.015em;color:var(--paper)}
.lp-hero h1 em{font-style:normal;color:var(--foil-hi)}
.lp-lede{margin:16px 0 0;font-size:clamp(13.5px,1.35vw,15.5px);line-height:2.15;
  color:var(--muted);max-width:52ch}
.lp-eyebrow{font-family:var(--ff-m);font-size:10.5px;letter-spacing:.26em;color:var(--azure-hi);direction:ltr}
.lp-cta{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}
.lp-note{margin:14px 0 0;font-size:12px;line-height:1.95;color:var(--muted2);max-width:48ch}

/* --- امضا: کارت شناسنامه --- */
.lp-card{position:relative}
.lp-card .pp{transform:rotate(-1.4deg);transition:transform .5s cubic-bezier(.2,.8,.3,1)}
.lp-card:hover .pp{transform:rotate(0deg)}
.lp-seal{position:absolute;inset-inline-end:-10px;bottom:-14px;width:88px;height:88px;border-radius:50%;
  display:grid;place-items:center;text-align:center;z-index:3;
  border:1px dashed rgba(217,182,92,.5);background:rgba(10,16,30,.86);backdrop-filter:blur(3px);
  font-family:var(--ff-m);font-size:8px;letter-spacing:.16em;color:var(--foil);
  transform:rotate(-11deg);line-height:1.9}
.lp-seal b{display:block;font-family:var(--ff-d);font-size:17px;letter-spacing:.02em;color:var(--foil-hi)}

/* --- دفتر ثبت: نوار شناسه‌های واقعی --- */
.lp-ledger{display:flex;gap:0;flex-wrap:wrap;border:1px solid var(--line);border-radius:12px;
  overflow:hidden;background:#0B1120}
.lp-ledger div{flex:1 1 200px;padding:13px 16px;border-inline-end:1px solid var(--line-soft);min-width:0}
.lp-ledger div:last-child{border-inline-end:none}
.lp-ledger .k{font-family:var(--ff-m);font-size:9.5px;letter-spacing:.18em;color:var(--azure-hi);
  opacity:.8;direction:ltr}
.lp-ledger .v{font-family:var(--ff-m);font-size:12.5px;color:var(--cream);margin-top:4px;direction:ltr;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lp-ledger .n{font-family:var(--ff-d);font-size:22px;color:var(--cream);margin-top:2px;line-height:1.4}

/* --- بخش‌ها --- */
.lp-sec{padding:clamp(34px,6vw,64px) 0 0}
.lp-h{display:flex;align-items:baseline;gap:14px;margin-bottom:22px;
  padding-bottom:11px;border-bottom:1px solid var(--line)}
.lp-h .lbl{font-family:var(--ff-m);font-size:10px;letter-spacing:.24em;color:var(--foil-dim);
  flex:0 0 auto;direction:ltr}
.lp-h h2{margin:0;font-family:var(--ff-d);font-weight:400;font-size:clamp(19px,2.3vw,25px);
  color:var(--cream);letter-spacing:-.01em;line-height:1.5}
.lp-h p{margin:0;margin-inline-start:auto;font-size:12px;color:var(--muted);max-width:34ch;
  text-align:end;line-height:1.9}

/* --- کارت‌های ارزش --- */
.lp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;
  background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.lp-grid > article{background:#0D1524;padding:22px 20px;transition:background .2s}
.lp-grid > article:hover{background:#121B2D}
.lp-grid h3{margin:13px 0 8px;font-size:14.5px;font-weight:800;color:var(--cream)}
.lp-grid p{margin:0;font-size:12.5px;line-height:2.05;color:var(--muted)}
.lp-ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
  color:var(--foil);background:rgba(217,182,92,.09);border:1px solid rgba(217,182,92,.26)}
.lp-ic svg{width:17px;height:17px}

/* --- دو ستون: مهمان در برابر عضو --- */
.lp-split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.lp-col{border:1px solid var(--line);border-radius:14px;padding:22px 20px;background:#0D1524}
.lp-col.on{border-color:rgba(217,182,92,.42);
  background:linear-gradient(180deg,rgba(217,182,92,.07),#0D1524 60%)}
.lp-col h3{margin:0 0 4px;font-size:15px;font-weight:800;color:var(--cream)}
.lp-col .sub{font-family:var(--ff-m);font-size:10px;letter-spacing:.18em;color:var(--foil-dim);direction:ltr}
.lp-col ul{margin:15px 0 0;padding:0;list-style:none;display:grid;gap:9px}
.lp-col li{display:grid;grid-template-columns:16px 1fr;gap:9px;font-size:12.5px;
  line-height:1.95;color:var(--muted)}
.lp-col li svg{width:14px;height:14px;margin-top:4px;color:var(--seal)}
.lp-col.off li svg{color:var(--muted2)}

/* --- گام‌های ثبت‌نام: توالی واقعی، پس شماره‌گذاری معنا دارد --- */
.lp-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;
  border:1px solid var(--line);border-radius:14px;overflow:hidden}
.lp-steps > li{list-style:none;padding:20px 18px;background:#0D1524;
  border-inline-end:1px solid var(--line-soft);position:relative}
.lp-steps > li:last-child{border-inline-end:none}
.lp-steps > li::before{content:attr(data-n);font-family:var(--ff-m);font-size:10px;
  letter-spacing:.2em;color:var(--foil-dim);display:block;margin-bottom:10px;direction:ltr}
.lp-steps b{display:block;font-size:13px;color:var(--cream);margin-bottom:5px}
.lp-steps span{display:block;font-size:11.5px;line-height:1.9;color:var(--muted)}

/* --- هزینه --- */
.lp-fees{display:flex;flex-wrap:wrap;gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:14px;overflow:hidden}
.lp-fees > div{flex:1 1 160px;background:#0D1524;padding:17px 18px}
.lp-fees .k{font-size:12px;color:var(--muted)}
.lp-fees .v{font-family:var(--ff-d);font-size:20px;color:var(--foil-hi);margin-top:4px}

/* --- فراخوان پایانی --- */
.lp-close{margin:clamp(34px,6vw,64px) 0 0;padding:clamp(30px,5vw,48px) var(--gut);
  border:1px solid rgba(217,182,92,.3);border-radius:16px;text-align:center;position:relative;overflow:hidden;
  background:linear-gradient(180deg,#131C30,#0C1322)}
.lp-close::before{content:"";position:absolute;inset-inline:0;top:0;height:2px;
  background:linear-gradient(90deg,transparent,var(--foil),transparent)}
.lp-close h2{margin:0 0 10px;font-family:var(--ff-d);font-weight:400;
  font-size:clamp(20px,2.6vw,28px);color:var(--cream);line-height:1.5}
.lp-close p{margin:0 auto 20px;max-width:54ch;font-size:13px;line-height:2.05;color:var(--muted)}

/* --- پاورقی --- */
.lp-foot{margin-top:clamp(30px,5vw,52px);padding:20px 0 34px;
  border-top:1px solid var(--line);display:flex;gap:14px;flex-wrap:wrap;align-items:center;
  font-size:11.5px;color:var(--muted2)}
.lp-foot .m{font-family:var(--ff-m);letter-spacing:.16em;direction:ltr;color:var(--foil-dim)}
.lp-foot a{margin-inline-start:auto;color:var(--azure-hi)}

/* --- ورود آرام هنگام بارگذاری --- */
.lp-in{opacity:0;transform:translateY(10px);animation:lpIn .7s cubic-bezier(.2,.8,.3,1) forwards;
  animation-delay:calc(var(--d,0) * 90ms)}
@keyframes lpIn{to{opacity:1;transform:none}}

@media(max-width:960px){
  .lp-hero{grid-template-columns:1fr}
  .lp-grid{grid-template-columns:1fr}
  .lp-split{grid-template-columns:1fr}
  .lp-steps{grid-template-columns:1fr}
  .lp-steps > li{border-inline-end:none;border-bottom:1px solid var(--line-soft)}
  .lp-steps > li:last-child{border-bottom:none}
  .lp-h{flex-wrap:wrap}
  .lp-h p{margin-inline-start:0;text-align:start;max-width:none}
}
@media(prefers-reduced-motion:reduce){
  .lp-in{animation:none;opacity:1;transform:none}
  .lp-card .pp{transition:none;transform:none}
}

/* --- نمایش و پنهان‌کردن رمز --- */
.pw{position:relative}
.pw .inp{padding-inline-end:42px}
.pw-eye{position:absolute;inset-inline-end:6px;top:50%;transform:translateY(-50%);
  width:30px;height:30px;border-radius:8px;display:grid;place-items:center;cursor:pointer;
  border:1px solid transparent;background:none;color:var(--muted2);transition:.13s;padding:0}
.pw-eye:hover{color:var(--cream);background:rgba(91,141,239,.12);border-color:rgba(91,141,239,.28)}
.pw-eye svg{width:16px;height:16px}
.pw-eye:focus-visible{outline:2px solid var(--azure);outline-offset:1px}

/* --- سربرگ صفحه‌های عمومی --- */
.lp-page{min-height:100vh;
  background:radial-gradient(1100px 620px at 78% -8%,rgba(91,141,239,.09),transparent 62%),
             radial-gradient(900px 520px at 8% 4%,rgba(217,182,92,.06),transparent 58%),
             var(--ink)}
.lp-nav{position:sticky;top:0;z-index:40;backdrop-filter:blur(14px);
  background:rgba(8,13,24,.82);border-bottom:1px solid var(--line)}
.lp-nav-in{max-width:1180px;margin:0 auto;padding:12px clamp(18px,4vw,42px);
  display:flex;align-items:center;gap:14px}
.lp-brand{display:flex;align-items:center;gap:11px;min-width:0}
.lp-brand .mark{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto;
  background:linear-gradient(150deg,#F5E2AC,#D9B65C 46%,#87702C);color:#191203;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55),0 5px 14px -8px rgba(217,182,92,.6)}
.lp-brand .mark svg{width:19px;height:19px}
.lp-brand-t b{display:block;font-size:14.5px;color:var(--cream);line-height:1.4;letter-spacing:-.01em}
.lp-brand-t i{display:block;font-style:normal;font-family:var(--ff-m);font-size:8.5px;
  letter-spacing:.2em;color:var(--foil-dim);direction:ltr}
.lp-nav-links{margin-inline-start:auto;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.lp-nav-links > a:not(.btn){font-size:12.5px;color:var(--muted);padding:6px 4px;transition:.13s}
.lp-nav-links > a:not(.btn):hover{color:var(--cream)}
@media(max-width:520px){
  .lp-brand-t i{display:none}
  .lp-nav-links > a:not(.btn){display:none}
}

/* ---------- بازگشت و خروج ---------- */
html[dir="rtl"] .ico-back{transform:scaleX(-1)}
.tile.back{display:none}
.tile.back.on{display:grid}
.backbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.backbar .btn-d{margin-inline-start:auto}
@media(max-width:620px){
  .backbar{gap:6px}
  .backbar .btn-s{padding:7px 11px}
}

/* --- بازگشت در صفحه‌های دروازه --- */
.gback{width:min(700px,100%);margin:0 auto 12px}
.gswitch{margin-top:14px;padding-top:13px;border-top:1px solid var(--line-soft);
  display:flex;gap:8px;align-items:center;justify-content:center;font-size:12.5px;color:var(--muted)}
.gswitch a{color:var(--azure-hi);font-weight:700}
@media print{.backbar,.gback,.tile.back{display:none!important}}

/* ==================================================================
   گالری تصاویر خودرو
   ================================================================== */
.pp-photo img{width:100%;height:100%;object-fit:cover;display:block}
.pvc .ph img{width:100%;height:100%;object-fit:cover;display:block}
.lp-card .pp-photo img{filter:saturate(.95) contrast(1.03)}

.imgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:10px}
.imgcell{margin:0;position:relative;border:1px solid var(--line);border-radius:12px;overflow:hidden;
  background:#0B1120;transition:border-color .15s,transform .15s}
.imgcell:hover{border-color:rgba(63,148,168,.45);transform:translateY(-1px)}
.imgcell.primary{border-color:rgba(239,227,198,.5);box-shadow:0 0 0 1px rgba(239,227,198,.18)}
.imgcell > a{display:block;aspect-ratio:4/3;background:linear-gradient(180deg,#131C30,#0A101E)}
.imgcell img{width:100%;height:100%;object-fit:cover;display:block}
.imgcell figcaption{padding:8px 10px;display:grid;gap:3px;border-top:1px solid var(--line-soft)}
.imgcell .cat{font-family:var(--ff-m);font-size:9.5px;letter-spacing:.14em;color:var(--t-acct-hi);opacity:.85}
.imgcell figcaption b{font-size:12px;color:var(--cream);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.imgcell .meta{font-size:10.5px;color:var(--muted2)}
.imgcell .tag{justify-self:start}
.imgact{position:absolute;inset-inline-end:6px;top:6px;display:flex;gap:4px;opacity:0;transition:opacity .15s}
.imgcell:hover .imgact,.imgcell:focus-within .imgact{opacity:1}
.imgact .btn{padding:5px 7px;backdrop-filter:blur(6px);background:rgba(11,17,32,.82)}
.imgact svg{width:14px;height:14px;margin:0}

/* ناحیهٔ رها کردن فایل */
.drop{position:relative;border:1px dashed rgba(63,148,168,.42);border-radius:13px;
  background:rgba(63,148,168,.05);transition:.16s}
.drop:hover,.drop.over{border-color:var(--t-acct-hi);background:rgba(63,148,168,.11)}
.drop-in{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.drop-face{padding:24px 18px;text-align:center;display:grid;gap:7px;justify-items:center;pointer-events:none}
.drop-face svg{width:26px;height:26px;color:var(--t-acct-hi)}
.drop-face b{font-size:13px;color:var(--cream)}
.drop-face span{font-size:11.5px;color:var(--muted2);line-height:1.9}
.drop.over .drop-face b{color:var(--t-acct-hi)}
@media(prefers-reduced-motion:reduce){.imgcell,.drop{transition:none}}

/* ---------- جست‌وجوی چندمعیارهٔ درون‌صفحه ---------- */
.srch{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:13px}
.srch-in{position:relative;flex:1 1 280px;min-width:0;max-width:460px}
.srch-in>svg{position:absolute;inset-inline-start:11px;top:50%;transform:translateY(-50%);
  width:15px;height:15px;color:var(--muted2);pointer-events:none}
.srch-in .inp{padding-inline-start:34px;padding-inline-end:34px;background:#0B1120}
.srch-x{position:absolute;inset-inline-end:7px;top:50%;transform:translateY(-50%);
  width:22px;height:22px;border-radius:7px;display:grid;place-items:center;color:var(--muted2);transition:.13s}
.srch-x:hover{color:var(--cream);background:rgba(91,141,239,.14)}
.srch-x svg{width:13px;height:13px}
.srch-h{font-size:11px;color:var(--muted2);line-height:1.8;flex:1 1 220px;min-width:0}
.srch-n{font-family:var(--ff-m);font-size:11.5px;color:var(--cream);
  background:rgba(91,141,239,.12);border:1px solid rgba(91,141,239,.28);
  border-radius:20px;padding:2px 10px;flex:0 0 auto}
@media(max-width:840px){
  .srch-in{flex-basis:100%;max-width:none}
  .srch-h{flex-basis:100%}
}

/* پاورقی نسخه — نسخهٔ در حال اجرا و زمان ساخت، در همهٔ صفحه‌ها */
.appver{margin:26px 0 10px;padding-top:12px;border-top:1px dashed var(--line);
  text-align:center;color:var(--muted2);font-size:11px;letter-spacing:.02em}
.appver .mono{font-family:var(--ff-m)}
@media print{.appver{display:none}}

/* نوار نرخ — دلار، طلا و سکه در نوار بالای پنل */
.rates{display:flex;align-items:center;gap:14px;cursor:pointer;user-select:none;
  padding-inline-end:14px;border-inline-end:1px solid var(--line)}
.rates-empty{font-size:11.5px;color:var(--muted2)}
.rate-item{display:flex;flex-direction:column;line-height:1.35}
.rate-item b{font-size:12.5px;color:var(--cream);font-family:var(--ff-m);
  font-variant-numeric:tabular-nums;letter-spacing:.02em}
.rate-item span{font-size:10px;color:var(--muted2);white-space:nowrap}
/* نرخ کهنه یا نامعلوم باید دیده شود، نه اینکه شبیه نرخ زنده باشد */
.rate-item.is-stale b{color:var(--muted2)}
.rates-src{font-size:9.5px;color:var(--muted2);opacity:.8;font-family:var(--ff-m)}
/* در عرض کم، نوار بالا جای کافی ندارد و نوار نرخ آن را به هم می‌ریزد */
@media(max-width:1100px){.rates{display:none}}
@media print{.rates{display:none}}

/* ---------- حساب‌های نمونهٔ صفحهٔ ورود ----------
   فهرست تنها در نصبِ نمایشی رندر می‌شود (کلید Demo:ShowSeedCredentials).
   کارت ورود باریک است، پس در حالت نمونه عریض‌تر می‌شود وگرنه هر نقش
   دو خط می‌شکند و فهرست خوانده نمی‌شود. */
/* کارت دوستونی: فرم در یک ستون، فهرست حساب‌ها در ستون کناری با اسکرول خودش.
   زیرِ فرم که بود، صفحه آن‌قدر بلند می‌شد که دکمهٔ ورود از دید می‌رفت. */
/* ستون نخست پنل معرفی است و فهرست درونش؛ ستون دوم فرم. پنل عریض‌تر است
   چون جدولش چهار ستون دارد و فرم دو خانه. */
.gcard.split{width:min(1080px,100%);display:grid;gap:20px;align-items:start;
  grid-template-columns:minmax(0,1fr) minmax(0,360px);
  background:none;border:none;box-shadow:none;padding:0;overflow:visible}
.gcard.split::before{display:none}
#gate:has(.gcard.split) .gback{width:min(1080px,100%)}
/* در حالت دوستونی هر ستون کارت خودش است، پس نوار رنگیِ بالای کارتِ بیرونی
   می‌آید روی کارت فرم؛ وگرنه کارتی بی‌لبه کنار پنل می‌نشست. */
.gcard.split .gmain{min-width:0;position:relative;overflow:hidden;padding:24px 22px 18px;
  background:linear-gradient(180deg,#141D31,#0F1626);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--sh)}
.gcard.split .gmain::before{content:"";position:absolute;inset-inline:0;top:0;height:3px;
  background:linear-gradient(90deg,var(--foil-dim),var(--foil-hi),var(--stamp),var(--seal),var(--foil-dim))}
.gside{min-width:0}
.gcard.split .gside{padding:24px 22px;border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--sh);
  background:radial-gradient(ellipse at 85% -10%,rgba(217,182,92,.16),transparent 62%),
    linear-gradient(158deg,#17223A,#0B1120 72%)}
.gcard.split .gside .sub{margin:8px 0 18px}

/* کارتی جدا در دل پنل: فهرست بخشِ خودش است و نه دنبالهٔ معرفی. */
.demo{min-width:0;margin-top:20px;padding-top:16px;border-top:1px dashed var(--line)}
.gcard.split .demo{margin-top:0;padding:14px;border:1px solid var(--line);border-top:1px solid var(--line);
  border-radius:var(--r-lg);background:rgba(8,13,24,.72)}
.demo-h{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.demo-hi{display:flex;flex:0 0 auto;color:var(--foil)}
.demo-hi svg{width:17px;height:17px}
.demo-ht{font-size:13px;font-weight:700}
.demo-pw{margin-inline-start:auto;font-size:11px;color:var(--muted);background:#0B1120;
  border:1px solid var(--line);border-radius:var(--r);padding:2px 9px;white-space:nowrap}
.demo-warn{display:flex;align-items:flex-start;gap:8px;margin:0 0 10px;padding:8px 10px;font-size:11px;
  line-height:1.75;color:var(--muted2);background:rgba(214,158,46,.07);
  border:1px solid rgba(214,158,46,.3);border-radius:var(--r)}
.demo-warn svg{width:15px;height:15px;flex:0 0 auto;margin-top:3px;color:var(--foil)}
.demo-warn code{color:var(--foil-hi);font-size:10.5px}
/* فهرست هرچه بلند شود خودش می‌لغزد و نه صفحه؛ سرِ کادر و هشدار بیرونِ
   ناحیهٔ لغزان می‌مانند تا با رفتن فهرست پایین، گم نشوند. */
.demo-scroll{max-height:min(62vh,560px);overflow-y:auto;padding-inline-end:4px}
.demo-g{margin-bottom:16px}
.demo-g:last-child{margin-bottom:0}
.demo-g h4{display:flex;align-items:center;gap:7px;margin:0 0 7px;font-size:10.5px;letter-spacing:.14em;
  color:var(--muted);font-family:var(--ff-m);text-transform:uppercase}
.demo-n{color:var(--muted2);font-size:10px;letter-spacing:0}

/* جدول و نه کارت: نام کاربری و گذرواژه باید کنار هم و در یک ستون صاف خوانده
   شوند، وگرنه چشم برای هر حساب دوبار دنبال مقدار می‌گردد. */
.demo-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-lg);background:#0B1120}
/* چیدمان ثابت، وگرنه ستونِ نقش هرچه نام بلندتر باشد پهن‌تر می‌شود و
   ستون آخر — دکمهٔ پرکردن — از قاب بیرون می‌افتد و دیده نمی‌شود. */
/* min-width سراسریِ جدول‌ها (۶۴۰px) اینجا کنار می‌رود: این جدول درون یک
   ستون باریک می‌نشیند و باید با آن کوچک شود، نه اینکه از آن بزند بیرون. */
.demo-tb{width:100%;min-width:0;border-collapse:collapse;font-size:12px;table-layout:fixed}
.demo-tb th:nth-child(2){width:36%}
.demo-tb th:nth-child(3){width:74px}
.demo-tb th:nth-child(4){width:44px}
.demo-tb thead th{padding:7px 10px;text-align:start;font-size:9.5px;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap}
.demo-tb tbody th,.demo-tb tbody td{padding:7px 10px;border-bottom:1px solid var(--line-soft);
  text-align:start;font-weight:400;vertical-align:middle}
.demo-tb tbody tr:last-child th,.demo-tb tbody tr:last-child td{border-bottom:none}
.demo-tb code{display:block;font-family:var(--ff-m);font-size:11.5px;color:var(--paper);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.demo-tb td:last-child{white-space:nowrap}
.demo-tb td:nth-child(3) code{color:var(--azure-hi)}
.demo-i{cursor:pointer;transition:background .15s}
.demo-i:hover{background:var(--panel2)}
.demo-i.on{background:var(--panel3)}
.demo-i.on code{color:var(--gold)}
.demo-tb tbody th{width:46%;min-width:0}
.demo-cell{display:flex;align-items:center;gap:8px;min-width:0}
.demo-ic{display:flex;flex:0 0 auto;color:var(--azure-hi)}
.demo-ic svg{width:15px;height:15px}
.demo-t{display:flex;flex-direction:column;min-width:0;line-height:1.5}
.demo-t b{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.demo-t em{font-size:10.5px;color:var(--muted2);font-style:normal;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.demo-i .tag{flex:0 0 auto;font-size:9.5px}
.demo-fill{display:flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;
  cursor:pointer;color:var(--muted);background:transparent;border:1px solid var(--line);
  border-radius:var(--r);transition:color .15s,border-color .15s}
.demo-fill svg{width:14px;height:14px}
.demo-i:hover .demo-fill{color:var(--azure-hi);border-color:var(--azure-dim)}
.demo-fill:focus-visible{outline:2px solid var(--azure);outline-offset:2px}
/* یک‌ستونی که شد، فرم اول می‌آید: کسی که این نشانی را باز کرده آمده وارد
   شود، و چهل‌وهشت ردیف بالای فرم یعنی باید تا ته صفحه برود تا دکمه را ببیند. */
@media(max-width:900px){
  .gcard.split{grid-template-columns:1fr}
  .gcard.split .gmain{order:1}
  .gcard.split .gside{order:2}
  .demo-scroll{max-height:70vh}
}
/* روی گوشی چهار ستون در ۲۴۵ پیکسل جا نمی‌شود و ستون نقش به یک آیکون
   می‌رسد. هر ردیف کارت خودش می‌شود: نقش بالا، نام کاربری و گذرواژه زیرش
   با برچسب، و دکمهٔ پرکردن در گوشه. */
@media(max-width:560px){
  .demo-wrap{overflow:visible;border:none;background:none;border-radius:0}
  .demo-tb{font-size:11.5px;table-layout:auto}
  .demo-tb thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .demo-tb,.demo-tb tbody,.demo-tb tr,.demo-tb tbody th,.demo-tb tbody td{display:block;width:auto}
  .demo-tb tbody tr{position:relative;margin-bottom:8px;padding:9px 10px;background:#0B1120;
    border:1px solid var(--line);border-radius:var(--r-lg)}
  .demo-tb tbody tr:last-child{margin-bottom:0}
  .demo-tb tbody th{padding:0 0 7px;padding-inline-end:34px;border:none}
  .demo-tb tbody td{padding:3px 0;border:none;display:flex;align-items:center;
    justify-content:space-between;gap:10px}
  .demo-tb tbody td::before{content:attr(data-label);flex:0 0 auto;color:var(--muted);font-size:10.5px}
  .demo-tb tbody td code{display:inline-block}
  .demo-tb tbody td:last-child{position:absolute;inset-inline-end:9px;top:9px;padding:0;display:block}
  .demo-tb tbody td:last-child::before{content:none}
}

/* متنی که فقط صفحه‌خوان باید بخواند */
.vh{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- ماژول‌های ۶ تا ۱۵ ---------- */

/* میانگین امتیاز شریک. ستاره‌ها متن‌اند و نه تصویر، تا با بزرگ‌شدن قلم
   بزرگ شوند و در حالت پرینت هم بیایند. */
.stars{display:inline-flex;gap:1px;color:var(--foil-hi);font-size:12px;letter-spacing:1px}
.stars .off{color:var(--muted2);opacity:.45}
.score{display:inline-flex;align-items:baseline;gap:5px}
.score b{font-family:var(--ff-m);font-size:13px}
.score span{font-size:10.5px;color:var(--muted2)}

/* نوار پیشرفت سفارش خدمت — یک عدد که باید در یک نگاه خوانده شود */
.prog{height:6px;border-radius:99px;background:rgba(255,255,255,.07);overflow:hidden;margin:8px 0 4px}
.prog i{display:block;height:100%;background:linear-gradient(90deg,var(--t-svc),var(--t-svc-hi));border-radius:99px}
.prog-n{font-family:var(--ff-m);font-size:10.5px;color:var(--muted2)}

/* چهار قیمت ماژول چهاردهم، کنار هم. حکم سند این است که جدا نگه داشته
   شوند، پس جدا هم نشان داده می‌شوند — نه یک «قیمت» با زیرنویس. */
.prices{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:10px 0}
.price{padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.02)}
.price span{display:block;font-size:10.5px;color:var(--muted2);margin-bottom:3px}
.price b{font-family:var(--ff-m);font-size:13px}
.price.doc{border-color:rgba(217,182,92,.3)}
.price.app{border-color:rgba(91,141,239,.3)}

/* خط زمانی مراحل کار و خبرهای رویداد */
.tl{list-style:none;margin:10px 0 0;padding:0 14px 0 0;border-inline-start:1px dashed var(--line)}
html[dir="rtl"] .tl{padding:0 14px 0 0}
.tl li{position:relative;padding:0 0 14px}
.tl li::before{content:"";position:absolute;inset-inline-start:-18px;top:5px;width:7px;height:7px;
  border-radius:99px;background:var(--t-svc)}
.tl b{display:block;font-size:12.5px}
.tl time{font-family:var(--ff-m);font-size:10.5px;color:var(--muted2)}
.tl p{margin:4px 0 0;font-size:12px;color:var(--muted)}

/* کارت تبلیغ شریک — جایگاه‌های ماژول پانزدهم */
.ad{display:flex;gap:11px;align-items:center;padding:11px 13px;border:1px dashed var(--line);
  border-radius:10px;background:rgba(255,255,255,.02);margin-bottom:14px}
.ad-t{flex:1;min-width:0}
.ad-t b{display:block;font-size:12.5px}
.ad-t span{font-size:11px;color:var(--muted2)}
.ad-l{font-size:9.5px;color:var(--muted2);border:1px solid var(--line);border-radius:4px;padding:2px 5px}
