/* ===== سامانه مدیریت شرکت — هم‌ظاهر با وب‌سایت شرکت =====
   پالت و شکل‌ها با سایت یکی شد: آبی نیلی برای کنش‌ها، فیروزه‌ای
   به‌عنوان رنگ دوم، دکمه‌های قرصی و کارت‌های نرم‌تر. ساختار و
   نام کلاس‌ها دست‌نخورده است؛ فقط پوسته عوض شده. */
:root{
  --brand:#2F5BE0;--brand2:#4C7BF0;--brand-soft:#E7EDFD;--brand-ink:#1E3FAE;
  --teal:#0FB4C6;--teal-soft:#E4F8FB;--teal-ink:#068798;
  --bg:#F6F9FC;--card:#ffffff;--ink:#0C1B33;--muted:#6B7A90;--line:#E3E9F0;
  --ok:#16a34a;--ok-soft:#E7F8EE;--warn:#B45309;--warn-soft:#FEF3C7;--bad:#E11D48;--bad-soft:#FFE9EE;
  --side1:#0B1A30;--side2:#122642;--side-ink:#A9B8CC;
  --shadow:0 1px 2px rgba(12,27,51,.05),0 4px 14px rgba(12,27,51,.05);
  --shadow-lg:0 14px 44px rgba(12,27,51,.14);
  --r:16px;
}
[data-accent="teal"]{--brand:#0d9488;--brand2:#14b8a6;--brand-soft:#ccfbf1;--brand-ink:#0f766e}
[data-accent="purple"]{--brand:#7c3aed;--brand2:#8b5cf6;--brand-soft:#ede9fe;--brand-ink:#6d28d9}
[data-accent="rose"]{--brand:#e11d48;--brand2:#f43f5e;--brand-soft:#ffe4e6;--brand-ink:#be123c}
[data-accent="amber"]{--brand:#d97706;--brand2:#f59e0b;--brand-soft:#fef3c7;--brand-ink:#b45309}
[data-theme="dark"]{
  --bg:#0A1626;--card:#12233A;--ink:#E4ECF7;--muted:#8C9CB4;--line:#22344E;
  --brand-soft:#1C2E56;--teal-soft:#0E3A44;--ok-soft:#10331f;--warn-soft:#3a2a0a;--bad-soft:#3d1418;
  --side1:#070F1C;--side2:#0C1A2C;--side-ink:#8C9CB4;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.35);
  --shadow-lg:0 16px 50px rgba(0,0,0,.55);
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:Vazirmatn,'Segoe UI',Tahoma,sans-serif;background:var(--bg);color:var(--ink);
  direction:rtl;transition:background .3s,color .3s}
button,input,select,textarea{font-family:inherit;font-size:14px;color:var(--ink)}
.hidden{display:none!important}
a{color:var(--brand2)}
::selection{background:var(--brand2);color:#fff}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted) 40%,transparent);border-radius:9px}
::-webkit-scrollbar-track{background:transparent}

/* ---------- ورود ---------- */
#login-page{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;
  background:linear-gradient(135deg,#070d1a 0%,#0e1e42 45%,var(--brand) 145%);padding:18px}
#login-page::before,#login-page::after{content:"";position:absolute;border-radius:50%;filter:blur(80px);opacity:.55;animation:float 9s ease-in-out infinite}
#login-page::before{width:440px;height:440px;background:var(--brand2);top:-130px;left:-90px}
#login-page::after{width:360px;height:360px;background:#7c3aed;bottom:-110px;right:-70px;animation-delay:-4.5s}
@keyframes float{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(30px) scale(1.07)}}
.login-orbit{position:absolute;inset:0;pointer-events:none}
.login-orbit span{position:absolute;border:1px solid rgba(255,255,255,.09);border-radius:50%;
  top:50%;left:50%;transform:translate(-50%,-50%);animation:orbit 26s linear infinite}
.login-orbit span:nth-child(1){width:540px;height:540px}
.login-orbit span:nth-child(2){width:760px;height:760px;animation-duration:38s;animation-direction:reverse;border-style:dashed}
.login-orbit span:nth-child(3){width:1020px;height:1020px;animation-duration:55s;opacity:.6}
.login-orbit span::after{content:"";position:absolute;top:-4px;left:50%;width:8px;height:8px;border-radius:50%;
  background:#7dd3fc;box-shadow:0 0 14px 3px rgba(125,211,252,.8)}
@keyframes orbit{to{transform:translate(-50%,-50%) rotate(360deg)}}
.login-box{position:relative;z-index:2;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);
  border-radius:26px;padding:40px 36px 26px;width:400px;max-width:100%;
  box-shadow:0 30px 80px rgba(0,0,0,.5);backdrop-filter:blur(22px);animation:pop .5s cubic-bezier(.2,.9,.3,1.2);color:#eef3fb}
@keyframes pop{from{opacity:0;transform:translateY(24px) scale(.95)}to{opacity:1;transform:none}}
.login-box h1{font-size:21px;margin-bottom:4px;text-align:center;color:#fff;letter-spacing:-.3px}
.login-box p{color:#b9c6de;font-size:13px;text-align:center;margin-bottom:24px}
.login-box label{color:#c9d5ea}
.login-box .field{position:relative;display:flex;align-items:center}
.login-box .fi{position:absolute;inset-inline-start:12px;font-size:14px;opacity:.75;pointer-events:none}
.login-box input{background:rgba(255,255,255,.09);border:1.5px solid rgba(255,255,255,.18);color:#fff;
  padding:12px 38px 12px 40px;border-radius:13px;font-size:14.5px}
.login-box input::placeholder{color:#93a3c0}
.login-box input:focus{border-color:#7dd3fc;box-shadow:0 0 0 4px rgba(125,211,252,.18);background:rgba(255,255,255,.13)}
.eye{position:absolute;inset-inline-end:8px;background:none;border:0;cursor:pointer;font-size:15px;opacity:.7;padding:6px}
.eye:hover{opacity:1}
.login-btn{margin-top:6px;padding:13px;font-size:15px;border-radius:13px;display:flex;align-items:center;justify-content:center;gap:8px}
.login-foot{margin-top:20px!important;margin-bottom:0!important;font-size:11.5px!important;opacity:.85}
.spin{width:16px;height:16px;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;
  display:inline-block;animation:rot .7s linear infinite}
@keyframes rot{to{transform:rotate(360deg)}}
.logo{width:62px;height:62px;border-radius:18px;background:linear-gradient(135deg,var(--brand),#38bdf8);
  color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:23px;margin:0 auto 12px;
  box-shadow:0 10px 28px color-mix(in srgb,var(--brand) 55%,transparent)}
.logo.pulse{animation:pulse 2.6s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 10px 28px rgba(37,99,235,.55)}50%{box-shadow:0 10px 44px rgba(56,189,248,.85)}}
@media(max-width:520px){
  #login-page{align-items:flex-end;padding:0}
  .login-orbit{display:none}
  .login-box{width:100%;border-radius:28px 28px 0 0;padding:34px 24px calc(22px + env(safe-area-inset-bottom));
    animation:slideUp .45s cubic-bezier(.2,.9,.3,1.1)}
  .login-box input{padding:14px 40px 14px 42px;font-size:16px}
  .login-btn{padding:15px;font-size:16px}
  @keyframes slideUp{from{opacity:0;transform:translateY(60px)}to{opacity:1;transform:none}}
}

/* ---------- چیدمان ---------- */
#app{display:flex;min-height:100vh}
aside{width:236px;background:linear-gradient(180deg,var(--side1),var(--side2));color:var(--side-ink);
  padding:18px 0 0;flex-shrink:0;display:flex;flex-direction:column;position:sticky;
  /* نوارِ اشتراکِ ابری (saas-bar.js) بالای همه چیز می‌نشیند و ارتفاعش را در
     همین متغیر می‌گذارد. اگر این‌جا نادیده گرفته می‌شد، منو همان top:0 را
     می‌خواست و درست زیرِ نوار قایم می‌شد. */
  top:var(--saas-bar-h,0px);height:calc(100vh - var(--saas-bar-h,0px))}
aside .brand{display:flex;align-items:center;gap:10px;padding:0 18px 16px;border-bottom:1px solid rgba(255,255,255,.07);margin-bottom:10px}
aside .brand .logo{width:40px;height:40px;font-size:15px;margin:0;border-radius:12px}
aside .brand b{color:#fff;font-size:14px}
aside nav{flex:1;overflow-y:auto;padding-bottom:8px}
aside nav a{display:flex;align-items:center;gap:10px;padding:10px 18px;margin:2px 10px;border-radius:10px;
  color:var(--side-ink);text-decoration:none;font-size:13.5px;transition:all .18s;position:relative}
aside nav a:hover{background:rgba(255,255,255,.06);color:#fff;transform:translateX(-3px)}
aside nav a.active{background:linear-gradient(90deg,var(--m,var(--brand)),color-mix(in srgb,var(--m,var(--brand)) 65%,var(--brand2) 35%));
  color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 6px 18px color-mix(in srgb,var(--m,var(--brand)) 45%,transparent)}
aside .foot{padding:12px 18px;border-top:1px solid rgba(255,255,255,.07);font-size:12px}
.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand2));
  color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;
  box-shadow:0 4px 12px color-mix(in srgb,var(--brand) 40%,transparent)}
#whoami{display:flex;align-items:center;gap:9px;color:#dbe4f5}
#content{animation:pageIn .3s ease}
@keyframes pageIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
/* --main-pad تنها جایی است که این عدد نوشته می‌شود. هر چیزی که می‌خواهد
   تا لبهٔ صفحه پهن شود (نوارِ عنوان، نوارِ هشدارِ رمز) با همین حاشیهٔ منفی
   می‌گیردش. دو بار نوشتنش همان اشکالی بود که نوارِ هشدار را ۲۸ پیکسل از
   صفحهٔ گوشی بیرون می‌انداخت. */
main{flex:1;--main-pad:26px;padding:0 var(--main-pad) 22px;min-width:0;
  background-image:radial-gradient(color-mix(in srgb,var(--muted) 7%,transparent) 1px,transparent 1px);
  background-size:30px 30px}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;position:sticky;
  /* همان دلیلِ aside بالا: بدونِ این، نوارِ عنوانِ برنامه هنگامِ اسکرول
     دقیقاً زیرِ نوارِ اشتراک قایم می‌شد — روی گوشی که جای عمودی کم است
     همین باعث می‌شد نوارها روی هم بیفتند و کار کردن سخت شود. */
  top:var(--saas-bar-h,0px);z-index:20;
  background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:blur(10px);
  margin:0 calc(-1 * var(--main-pad,26px)) 18px;padding:16px var(--main-pad,26px);
  border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent)}
.topbar h2{font-size:19px;font-weight:800;
  background:linear-gradient(100deg,var(--brand),var(--teal));-webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent}
.topbar .date{color:var(--muted);font-size:13px}
.topbar .tools{display:flex;gap:8px;align-items:center}
/* ۴۰٫۰۰: انتخابگرِ شعبه */
.topbar .br-sel{width:auto;max-width:190px;padding:5px 8px;font-size:13.5px;margin:0}
.topbar .br-fixed{white-space:nowrap}
.icon-btn{border:1px solid var(--line);background:var(--card);border-radius:12px;width:36px;height:36px;
  cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .18s;box-shadow:var(--shadow)}
.icon-btn:hover{transform:translateY(-2px);border-color:var(--brand2)}

/* ---------- کارت‌ها ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:14px;margin-bottom:18px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;
  box-shadow:var(--shadow);transition:transform .2s,box-shadow .2s;position:relative;overflow:hidden}
.cards>.card::before{content:"";position:absolute;inset-inline-start:0;top:0;bottom:0;width:4px;
  background:linear-gradient(180deg,var(--teal),var(--brand2));opacity:.85;border-radius:0 4px 4px 0}
.cards>.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.card .chip{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  font-size:18px;margin-bottom:9px;background:var(--brand-soft)}
.card .chip.g{background:var(--ok-soft)}.card .chip.a{background:var(--warn-soft)}.card .chip.r{background:var(--bad-soft)}
.card .lbl{color:var(--muted);font-size:12.5px;margin-bottom:6px}
.card .val{font-size:20px;font-weight:800;letter-spacing:-.3px}
.card .val small{font-size:12px;color:var(--muted);font-weight:400}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin-bottom:16px;
  box-shadow:var(--shadow);animation:rise .3s ease}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.panel h3{font-size:15px;margin-bottom:12px;font-weight:800}

/* ---------- جدول‌ها ---------- */
table{width:100%;border-collapse:collapse;font-size:13.5px}
thead th{position:sticky;top:0;background:var(--card);z-index:2}
th{color:var(--muted);font-weight:700;text-align:right;padding:9px 10px;border-bottom:2px solid var(--line);white-space:nowrap;font-size:12.5px}
td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}
tbody tr{transition:background .15s}
tbody tr:hover td{background:color-mix(in srgb,var(--brand-soft) 45%,transparent)}
.badge{display:inline-block;padding:3px 10px;border-radius:99px;font-size:12px;background:var(--line);font-weight:600}
.badge.blue{background:var(--brand-soft);color:var(--brand-ink)}
.badge.green{background:var(--ok-soft);color:var(--ok)}
.badge.amber{background:var(--warn-soft);color:var(--warn)}
.badge.red{background:var(--bad-soft);color:var(--bad)}
[data-theme="dark"] .badge.blue{color:#93c5fd}
[data-theme="dark"] .badge.green{color:#4ade80}
[data-theme="dark"] .badge.amber{color:#fbbf24}
[data-theme="dark"] .badge.red{color:#f87171}
.progress{background:var(--line);border-radius:99px;height:8px;min-width:80px;overflow:hidden}
.progress i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),var(--brand2));
  border-radius:99px;transition:width .6s cubic-bezier(.2,.8,.3,1)}

/* ---------- دکمه و فرم ---------- */
.btn{border:0;border-radius:999px;padding:10px 20px;cursor:pointer;font-size:13.5px;background:var(--line);
  color:var(--ink);transition:all .18s;font-weight:600}
.btn:hover{filter:brightness(.96);transform:translateY(-1px)}
.btn:active{transform:scale(.97)}
.btn.primary{background:linear-gradient(135deg,var(--brand),var(--brand-ink));color:#fff;
  box-shadow:0 4px 14px color-mix(in srgb,var(--brand) 35%,transparent)}
.btn.green{background:linear-gradient(135deg,#15803d,#22c55e);color:#fff;box-shadow:0 4px 14px rgba(22,163,74,.3)}
.btn.danger{background:var(--bad-soft);color:var(--bad)}
.btn.sm{padding:6px 14px;font-size:12px;border-radius:999px}
.btn.wide{width:100%}
.bigbtn{width:100%;padding:20px;font-size:18px;border-radius:16px}
input,select,textarea{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:9px 12px;
  background:var(--card);outline:none;transition:border .18s,box-shadow .18s}
input:focus,select:focus,textarea:focus{border-color:var(--brand2);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--brand2) 18%,transparent)}
label{display:block;font-size:12.5px;color:var(--muted);margin:10px 0 5px;font-weight:600}
.row{display:flex;gap:12px}.row>*{flex:1}
.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.toolbar .spacer{flex:1}
.tabs{display:flex;gap:4px;margin-bottom:16px;background:var(--card);border:1px solid var(--line);border-radius:14px;
  border-radius:12px;padding:5px;flex-wrap:wrap;box-shadow:var(--shadow);width:fit-content;max-width:100%}
.tabs button{border:0;background:none;padding:8px 15px;cursor:pointer;font-size:13.5px;color:var(--muted);
  border-radius:9px;transition:all .18s;font-weight:600}
.tabs button:hover{color:var(--ink)}
.tabs button.active{background:linear-gradient(135deg,var(--brand),var(--brand-ink));color:#fff;
  box-shadow:0 4px 12px color-mix(in srgb,var(--brand) 35%,transparent)}

/* ---------- فرم تمام‌صفحه (به جای پنجره کوچک) ---------- */
#modal-bg{position:fixed;inset:0;background:var(--bg);z-index:50;overflow-y:auto;animation:fade .18s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}
#modal-top{position:sticky;top:0;z-index:6;background:var(--card);border-bottom:1px solid var(--line);
  padding:9px 16px;display:flex;align-items:center;gap:12px;box-shadow:0 1px 4px rgba(0,0,0,.05)}
#modal-top .mback{border:0;background:var(--brand-soft);color:var(--brand-ink);width:38px;height:38px;
  border-radius:11px;cursor:pointer;font-size:17px;flex-shrink:0}
#modal-top .mback:hover{background:var(--brand);color:#fff}
#modal-top b{font-size:14.5px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
#modal-top .mhint{margin-right:auto;font-size:11px;color:var(--muted);white-space:nowrap}
#modal{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:22px 26px;
  width:min(920px,calc(100vw - 20px));margin:16px auto 70px;box-shadow:var(--shadow-lg);animation:pop .25s ease}
/* صفحه‌ای واقعی: لبه‌تا‌لبه، بدون کادر */
/* 100vw نه، 100% — عرضِ 100vw نوارِ اسکرولِ عمودیِ #modal-bg را هم می‌شمارد،
   پس محتوا به‌اندازهٔ پهنای همان نوار (در ویندوز ۱۷ پیکسل، با بزرگ‌نماییِ
   سیستم بیشتر) از مانیتور بیرون می‌زد و اسکرولِ افقی می‌ساخت. min-height هم
   100vh بود که با نوارِ بالاییِ #modal-top جمع می‌شد و قدِ صفحه را همیشه از
   پنجره بلندتر می‌کرد — یعنی نوارِ اسکرول همیشه بود و این بیرون‌زدگی در هر
   بار بازکردنِ فرم تکرار می‌شد. (۳۸٫۷۹، از مشاهدهٔ میدانیِ مهدی) */
#modal.wide{width:100%;max-width:100%;margin:0;border-radius:0;border:0;
  min-height:0;padding:0 0 24px;box-shadow:none;animation:none}
#modal-bg:has(#modal.wide) #modal-top{border-radius:0}
#modal.wide > h3{padding:14px 18px 0}
#modal.wide > .row,#modal.wide > .panel,#modal.wide > .typebar,#modal.wide > p,
#modal.wide > label,#modal.wide > div:not(.iv-head):not(.iv-sec):not(.ivfoot){margin-inline:18px}
#modal h3{margin-bottom:6px;font-weight:800}
#modal input:not([type=checkbox]):not([type=radio]),#modal select,#modal textarea{padding:11px 13px;font-size:14px;border-radius:11px}
@media(max-width:700px){
  #modal{margin:8px auto 50px;padding:14px;border-radius:14px}
  #modal-top .mhint{display:none}
  /* روی آیفون، هر اینپوتی با فونتِ زیرِ ۱۶px که فوکوس شود، خودِ سافاری
     صفحه را زوم می‌کند — کاربر برای هر فیلدِ فرمِ فروش/خرید/هزینه باید
     دستی زوم را برگرداند. فونتِ فرم فقط در موبایل ۱۶px می‌شود تا این
     زوم ناخواسته اصلاً رخ ندهد؛ در دسکتاپ ۱۴px قبلی دست‌نخورده می‌ماند. */
  #modal input:not([type=checkbox]):not([type=radio]),#modal select,#modal textarea{font-size:16px}
}

/* ---------- تاریخ و ساعت ---------- */
input.dt-date,input.dt-month{text-align:center}
.dtbar{display:inline-flex;gap:4px;margin-top:5px}
.dtbar button{border:1px solid var(--line);background:var(--card);color:inherit;
  border-radius:9px;min-width:34px;height:32px;cursor:pointer;font-size:14px;line-height:1;
  display:inline-flex;align-items:center;justify-content:center}
.dtbar button:hover{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-ink)}
input.dt-time{text-align:center}
.dtcal{position:fixed;z-index:120;background:var(--card);border:1px solid var(--line);
  border-radius:14px;box-shadow:var(--shadow-lg);padding:10px;width:266px}
.dtc-h{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:8px}
.dtc-h b{font-size:14px}
.dtc-h button{border:0;background:var(--brand-soft);color:var(--brand-ink);border-radius:8px;
  width:30px;height:28px;cursor:pointer;font-size:15px}
.dtc-w,.dtc-g{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.dtc-w span{text-align:center;font-size:11px;color:var(--muted);padding-bottom:4px}
.dtc-g button{border:0;background:transparent;color:inherit;border-radius:8px;height:31px;
  cursor:pointer;font-size:13px}
.dtc-g button:hover{background:var(--brand-soft)}
.dtc-g button.today{outline:1px solid var(--brand);outline-offset:-1px}
.dtc-g button.sel{background:var(--brand);color:#fff;font-weight:700}
.dtc-g .e{height:31px}
.dtmon{width:250px}
.dtc-m{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.dtc-m button{border:1px solid var(--line);background:var(--card);color:inherit;border-radius:9px;
  height:36px;cursor:pointer;font-size:12.5px}
.dtc-m button:hover{background:var(--brand-soft)}
.dtc-m button.today{outline:1px solid var(--brand);outline-offset:-1px}
.dtc-m button.sel{background:var(--brand);color:#fff;font-weight:700;border-color:var(--brand)}
.dtc-f{display:flex;gap:6px;margin-top:9px;border-top:1px solid var(--line);padding-top:9px}
.dtc-f .tbtn{flex:1;border:1px solid var(--line);background:var(--card);color:inherit;
  border-radius:9px;height:31px;cursor:pointer;font-size:12.5px}
.dtc-f .tbtn:hover{background:var(--brand-soft)}

/* ---------- تنظیمات چاپ ---------- */
#printbar{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:80;
  display:flex;align-items:center;justify-content:center;padding:16px}
#printbar.hidden{display:none}
#printbar .pb-card{background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:20px 22px;width:min(420px,100%);max-height:92vh;overflow-y:auto;box-shadow:var(--shadow-lg)}
#printbar label{display:block;margin-top:12px;font-size:13px;font-weight:600}
#printbar select,#printbar input[type=range]{width:100%;margin-top:5px}
#printbar select{padding:10px 12px;font-size:14px;border-radius:11px;
  border:1px solid var(--line);background:var(--card);color:inherit}

/* ---------- چت ---------- */
.chat-wrap{display:flex;flex-direction:column;height:calc(100vh - 130px);background:var(--card);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow)}
.chat-msgs{flex:1;overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:12px}
.msg{max-width:78%;padding:11px 15px;border-radius:16px;font-size:13.5px;line-height:1.9;white-space:pre-wrap;animation:rise .25s ease}
.msg.user{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;align-self:flex-start;border-bottom-right-radius:5px}
.msg.assistant{background:var(--bg);align-self:flex-end;border-bottom-left-radius:5px;border:1px solid var(--line)}
.chat-input{display:flex;gap:10px;padding:12px;border-top:1px solid var(--line)}
.chat-input input{flex:1}
.hint{font-size:12px;color:var(--muted);margin-top:6px}
.err{color:var(--bad);font-size:13px;margin-top:8px;min-height:18px}

/* ---------- اعلان (توست) ---------- */
#toasts{position:fixed;bottom:20px;right:20px;z-index:100;display:flex;flex-direction:column;gap:10px}
.toast{background:var(--card);color:var(--ink);border:1px solid var(--line);border-inline-start:4px solid var(--ok);
  border-radius:12px;padding:12px 18px;font-size:13.5px;box-shadow:var(--shadow-lg);min-width:230px;
  animation:toastIn .35s cubic-bezier(.2,.9,.3,1.2);font-weight:600}
.toast.error{border-inline-start-color:var(--bad)}
.toast.warn{border-inline-start-color:var(--warn)}   /* ۴۰٫۱۱: هشدارِ غیرمسدودکننده */
.toast.out{animation:toastOut .3s ease forwards}
@keyframes toastIn{from{opacity:0;transform:translateY(16px) scale(.95)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(10px)}}

/* ---------- اسکلت بارگذاری ---------- */
.skel{border-radius:var(--r);background:linear-gradient(100deg,var(--line) 40%,color-mix(in srgb,var(--card) 60%,var(--line)) 50%,var(--line) 60%);
  background-size:200% 100%;animation:shimmer 1.1s infinite;height:90px;margin-bottom:14px}
@keyframes shimmer{to{background-position:-200% 0}}

/* ---------- لایسنس ---------- */
.lic-wrap{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:18px;
  background:linear-gradient(135deg,#070d1a,#0e1e42 55%,var(--brand) 150%)}
.lic-box{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:34px 30px;width:440px;max-width:100%;
  box-shadow:var(--shadow-lg);animation:pop .4s cubic-bezier(.2,.9,.3,1.15)}
.lic-box h1{font-size:20px;text-align:center;margin-bottom:6px}
.lic-box p{color:var(--muted);font-size:13px;text-align:center;margin-bottom:18px}
.lic-mid{background:var(--bg);border:1px dashed var(--line);border-radius:12px;padding:12px 14px;margin-bottom:14px}
.lic-code{font-family:monospace;font-size:16px;font-weight:700;letter-spacing:2px;color:var(--brand-ink);
  background:var(--brand-soft);border-radius:8px;padding:8px 12px;text-align:center;margin-top:4px}
#license-panel table td{padding:5px 8px}
#license-panel code{background:var(--bg);padding:2px 6px;border-radius:5px;font-size:12px}

/* ---------- تقویم ---------- */
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-head div{text-align:center;font-size:12px;color:var(--muted);font-weight:700;padding:6px 0}
.cal-cell{min-height:96px;border:1px solid var(--line);border-radius:10px;padding:6px;cursor:pointer;
  transition:all .15s;background:var(--card);overflow:hidden}
.cal-cell:hover{border-color:var(--brand2);transform:translateY(-2px);box-shadow:var(--shadow)}
.cal-cell.empty{background:transparent;border-color:transparent;cursor:default;box-shadow:none;transform:none}
.cal-cell.today{border:2px solid var(--brand2);background:color-mix(in srgb,var(--brand-soft) 55%,var(--card))}
.cal-num{font-weight:800;font-size:13px;margin-bottom:4px}
.cal-cell.today .cal-num{color:var(--brand-ink)}
.cal-ev{font-size:10.5px;padding:2px 5px;border-radius:6px;margin-bottom:3px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;background:var(--brand-soft)}
.cal-ev.amber{background:var(--warn-soft)}.cal-ev.red{background:var(--bad-soft)}.cal-ev.green{background:var(--ok-soft)}
.cal-more{font-size:10px;color:var(--muted)}
.cal-cell.friday .cal-num{color:#c9483f}
.cal-cell.holiday{background:color-mix(in srgb,var(--bad-soft) 45%,var(--card))}
.cal-cell.holiday .cal-num{color:#c9483f}
.cal-ev.holi{background:var(--bad-soft);color:#b03a32;font-weight:700}
@media(max-width:860px){.cal-cell{min-height:64px}.cal-ev{display:none}
  .cal-cell:has(.cal-ev)::after{content:"●";color:var(--brand2);font-size:9px}}

/* ---------- چاپ ---------- */
@media print{
  aside,.toolbar,.tabs,.btn,.icon-btn,#toasts{display:none!important}
  main{--main-pad:0px;padding:0}body{background:#fff}
  .panel,.card{box-shadow:none;border-color:#ccc;break-inside:avoid}
}

/* ---------- موبایل: منوی کشویی ---------- */
.nav-toggle{display:none}
#nav-backdrop{display:none}
@media(max-width:860px){
  #app{display:block}
  .nav-toggle{display:inline-flex}
  /* اینجا position از sticky به fixed عوض می‌شود، پس دیگر «top» از جریانِ
     صفحه نمی‌آید و باید دوباره گفته شود — وگرنه منوی کشویی از زیرِ نوارِ
     اشتراک شروع می‌شد و رویش می‌افتاد. height هم به‌جای درصدِ ثابت، از
     همان فاصله تا پایینِ صفحه حساب می‌شود. */
  aside{position:fixed;top:var(--saas-bar-h,0px);right:0;bottom:0;width:250px;max-width:82vw;
    height:calc(100% - var(--saas-bar-h,0px));
    flex-direction:column;overflow-y:auto;z-index:60;box-shadow:-8px 0 30px rgba(0,0,0,.35);
    transform:translateX(105%);transition:transform .25s ease;padding-bottom:24px}
  body.nav-open aside{transform:none}
  #nav-backdrop{display:block;position:fixed;inset:0;background:rgba(15,23,42,.5);
    opacity:0;pointer-events:none;transition:opacity .25s;z-index:55}
  body.nav-open #nav-backdrop{opacity:1;pointer-events:auto}
  aside nav a{margin:2px 8px}
  aside .foot{display:block}
  main{--main-pad:14px;padding:14px;width:100%}
  /* حاشیهٔ منفی خودش از --main-pad می‌آید؛ اینجا فقط فاصله‌ها کوچک می‌شوند. */
  .topbar{gap:6px;margin-bottom:14px;padding-top:12px;padding-bottom:12px}
  .topbar h2{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .topbar .tools{flex:0 0 auto}
  .topbar .date{font-size:11px}
  .cards{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
  .row{flex-direction:column}
  /* آیتم‌های flex به‌طور پیش‌فرض کوچک‌تر از محتوایشان نمی‌شوند و صفحه را پهن می‌کنند */
  .row>*{min-width:0;width:100%}
  .panel,.card{max-width:100%}
  .panel{overflow-x:auto}
  table{font-size:12.5px}
  .cards{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
}
@media(max-width:560px){
  .topbar .br-sel{max-width:128px}
  .topbar .date{display:none}              /* جا برای دکمه‌ها روی گوشی */
  .topbar .hide-sm{display:none}           /* کاشی‌ها از منوی کشویی در دسترس است */
  .topbar .icon-btn{width:32px;height:32px;font-size:13px}
  .topbar .tools{gap:4px}
}
/* اگر فایل فونت را کنار برنامه بگذارید (static/vazirmatn.woff2) از همان
   استفاده می‌شود؛ وگرنه از فونت نصب‌شدهٔ خودِ دستگاه. هیچ درخواستی به
   اینترنت نمی‌رود. */
/* ۳۸٫۸۹: فایلِ فونت حالا همراهِ برنامه فرستاده می‌شود (یک فایلِ وزن‌متغیر
   ۱۱۱ کیلوبایتی که همهٔ وزن‌ها را دارد). پیش از این فقط local() بود، پس
   روی هر دستگاهی که وزیرمتن نصب نداشت — یعنی تقریباً همهٔ گوشی‌ها — متن
   با Tahoma نمایش داده می‌شد. url اول می‌آید تا همه یک چیز ببینند. */
@font-face{font-family:Vazirmatn;font-display:swap;font-weight:100 900;
  src:url('/vazirmatn.woff2') format('woff2-variations'),
      url('/vazirmatn.woff2') format('woff2'),
      local('Vazirmatn'),local('Vazir')}


/* ================= چاپ صفحات داخل برنامه ================= */
#print-head{display:none}
@media print{
  @page{size:A4;margin:12mm}
  aside,.topbar,.tabs,.toolbar,#modal-bg,#toasts,.icon-btn,.fab,#printbar,
  button,.btn,input,select,textarea{display:none!important}
  /* #app روی صفحه min-height:100vh دارد تا منوی کناری تا پایین بیاید. سر چاپ
     همان ارتفاع یک صفحهٔ کامل کاغذ را می‌گرفت و اگر محتوا بعدش می‌آمد، برگ
     اول سفید چاپ می‌شد. سر چاپ ارتفاع باید به اندازهٔ محتوا باشد. */
  #app{min-height:0!important;height:auto!important;display:block!important}
  main{min-height:0!important;height:auto!important}
  /* چاپِ خودِ پنجره: صفحهٔ پشت پنهان می‌شود و پنجره عادی روی کاغذ می‌آید.
     (سربرگ چاپ #print-head سر جایش می‌ماند.) */
  body.print-modal #content{display:none!important}
  body.print-modal #modal-bg{display:block!important;position:static!important;
    inset:auto!important;background:none!important;overflow:visible!important;
    animation:none!important;z-index:auto!important}
  body.print-modal #modal-top{display:none!important}
  body.print-modal #modal{display:block!important;position:static!important;
    width:100%!important;max-width:100%!important;min-height:0!important;
    margin:0!important;padding:0!important;border:0!important;border-radius:0!important;
    box-shadow:none!important;overflow:visible!important;animation:none!important}
  body.print-modal #modal .row,
  body.print-modal #modal .ivfoot{display:none!important}
  #app{display:block!important}
  main{--main-pad:0px;padding:0!important;margin:0!important;width:100%!important}
  body{background:#fff!important;color:#000!important}
  #print-head{display:block!important;border-bottom:2.5px solid #1d4ed8;
    padding-bottom:8px;margin-bottom:12px}
  #print-head .ph-co{display:flex;align-items:center;gap:10px}
  #print-head img{width:46px;height:46px;object-fit:contain}
  #print-head b{font-size:17px}
  #print-head .ph-ln{color:#475569;font-size:11px;line-height:1.7}
  #print-head .ph-tt{margin-top:6px;font-size:14px;font-weight:800;color:#1d4ed8;
    display:flex;justify-content:space-between}
  .panel{border:1px solid #cbd5e1!important;box-shadow:none!important;background:#fff!important;
    break-inside:avoid;margin-bottom:10px}
  .cards{gap:8px}
  .card{border:1px solid #cbd5e1!important;box-shadow:none!important;background:#fff!important}
  table{font-size:11.5px!important;width:100%!important}
  th{background:#eff6ff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  th,td{border:1px solid #cbd5e1!important;color:#000!important}
  tr{break-inside:avoid}
  .badge{border:1px solid #94a3b8!important;background:#fff!important;color:#000!important}
  .hint,.muted{color:#475569!important}
  a{text-decoration:none;color:#000!important}
}

/* ================== منوی گروه‌بندی‌شده ================== */
aside .brand{position:relative}
.rail-btn{position:absolute;inset-inline-start:8px;top:2px;background:rgba(255,255,255,.08);border:0;
  color:#cbd5e1;width:24px;height:24px;border-radius:8px;cursor:pointer;font-size:12px;line-height:1}
.rail-btn:hover{background:rgba(255,255,255,.18);color:#fff}
.nav-solo{margin-bottom:6px}
.nav-group{margin:0 0 4px}
.nav-group .gh{display:flex;align-items:center;justify-content:space-between;cursor:pointer;
  padding:7px 20px;margin:2px 10px;border-radius:9px;color:#9fb0cc;font-size:11.5px;font-weight:700;
  letter-spacing:.2px;user-select:none;transition:background .15s}
.nav-group .gh:hover{background:rgba(255,255,255,.05);color:#dbe4f5}
.nav-group .gh .ar{transition:transform .2s;font-size:10px;opacity:.7}
.nav-group.open .gh .ar{transform:rotate(180deg)}
.nav-group .gi{display:none}
.nav-group.open .gi{display:block}
/* گروه‌های بخش در منو: هرکدام نشان و رنگ خودش را دارد */
.nav-group.modgrp .gh{font-size:12.5px;color:#c3d0e4;gap:8px}
.nav-group.modgrp .gh span:first-child{display:flex;align-items:center;gap:9px;min-width:0}
.nav-group.modgrp .gh .mi{width:22px;height:22px;border-radius:7px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;font-size:11.5px;
  background:linear-gradient(150deg,var(--m,var(--brand)),color-mix(in srgb,var(--m,var(--brand)) 60%,#000 18%));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 3px 9px color-mix(in srgb,var(--m,var(--brand)) 40%,transparent)}
.nav-group.modgrp.cur .gh{color:#fff;background:color-mix(in srgb,var(--m,var(--brand)) 20%,transparent)}
aside nav a .ic{width:18px;text-align:center;flex-shrink:0}
aside nav a .tx{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
aside nav a .pin{opacity:0;font-size:12px;color:#94a3b8;transition:opacity .15s;flex-shrink:0}
aside nav a:hover .pin{opacity:.7}
aside nav a .pin.on{opacity:1;color:#fbbf24}
aside nav a .pin:hover{opacity:1;color:#fbbf24;transform:scale(1.2)}

/* حالت جمع‌شده (فقط آیکون) */
body.rail aside{width:62px}
body.rail aside .brand b,body.rail .nav-group .gh span:first-child,
body.rail .nav-group .gh .ar,body.rail aside nav a .tx,body.rail aside nav a .pin,
body.rail aside .foot span:not(.avatar){display:none}
body.rail aside .brand{justify-content:center;padding:0 0 14px}
body.rail .nav-group .gh{padding:4px 0;margin:2px 12px;border-top:1px solid rgba(255,255,255,.08);
  min-height:1px;justify-content:center}
body.rail .nav-group .gi{display:block}
body.rail aside nav a{justify-content:center;padding:11px 0;margin:2px 8px}
body.rail .rail-btn{inset-inline-start:auto;left:50%;transform:translateX(-50%);top:auto;bottom:-6px}
body.rail aside .foot{display:flex;justify-content:center;padding:12px 0}
body.rail #whoami{justify-content:center}

/* ================== منوی کناریِ ماژولار (بازطراحی UI) ==================
   منوی کناری دیگر همیشه ۹ گروه/۳۶ آیتم را روی هم نشان نمی‌دهد؛ فقط بخشی که
   کاربر الان تویش است، با رنگ خودش. «خانه» گزینشگرِ بخش‌هاست (کارت‌های .modtile
   پایین‌تر) و از آنجا وارد هر بخش می‌شوید. */
.nav-empty{padding:16px 20px;font-size:12px;color:var(--side-ink);opacity:.75;line-height:1.9}
.nav-modhead{display:flex;align-items:center;gap:10px;padding:6px 18px 16px}
.nav-modhead .ic{width:32px;height:32px;border-radius:10px;
  background:linear-gradient(150deg,var(--m,var(--brand)),color-mix(in srgb,var(--m,var(--brand)) 60%,#000 18%));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 4px 12px color-mix(in srgb,var(--m,var(--brand)) 45%,transparent);
  display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
.nav-modhead span:last-child{color:#fff;font-weight:800;font-size:14.5px}
.nav-subh{padding:14px 20px 4px;font-size:10.5px;font-weight:700;color:#9fb0cc;letter-spacing:.2px}
.nav-back{padding:12px 18px 4px;margin-top:6px;border-top:1px solid rgba(255,255,255,.07)}
.nav-back a{display:block;color:var(--side-ink);font-size:12px;text-decoration:none;padding:10px 2px}
.nav-back a:hover{color:#fff}
body.rail .nav-modhead{justify-content:center;padding:6px 0 14px}
body.rail .nav-modhead span:last-child,body.rail .nav-subh,body.rail .nav-back a{display:none}
body.rail .nav-back{padding:10px 0 0}

/* نشانِ رنگیِ بخشِ فعال، بالای صفحه کنار عنوان */
#mod-badge{display:none;align-items:center;gap:6px;
  background:linear-gradient(100deg,var(--m,var(--brand)),color-mix(in srgb,var(--m,var(--brand)) 65%,#fff 12%));color:#fff;
  padding:6px 12px;border-radius:10px;font-size:12.5px;font-weight:700;flex-shrink:0;white-space:nowrap;
  box-shadow:0 4px 14px color-mix(in srgb,var(--m,var(--brand)) 40%,transparent)}
#mod-badge.show{display:flex}

/* کارت‌های بخش روی «خانه» — با کمی عمق و سایهٔ رنگی هم‌رنگ خودِ بخش */
.modtiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin-bottom:6px}
.modtile{background:var(--card);border:1px solid var(--line);border-top:4px solid var(--m,var(--brand));
  border-radius:var(--r);padding:16px 18px;display:flex;flex-direction:column;gap:11px;position:relative;overflow:hidden;
  text-decoration:none;color:var(--ink);transition:transform .2s cubic-bezier(.2,.8,.3,1.1),box-shadow .2s;
  box-shadow:0 2px 12px color-mix(in srgb,var(--m,var(--brand)) 12%,transparent);
  animation:tileIn .35s cubic-bezier(.2,.8,.3,1) backwards}
.modtile::after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  background:linear-gradient(140deg,color-mix(in srgb,var(--m,var(--brand)) 7%,transparent),transparent 50%)}
.modtiles .modtile:nth-child(1){animation-delay:.02s}
.modtiles .modtile:nth-child(2){animation-delay:.06s}
.modtiles .modtile:nth-child(3){animation-delay:.1s}
.modtiles .modtile:nth-child(4){animation-delay:.14s}
.modtiles .modtile:nth-child(5){animation-delay:.18s}
.modtiles .modtile:nth-child(6){animation-delay:.22s}
.modtiles .modtile:nth-child(n+7){animation-delay:.24s}
@keyframes tileIn{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.modtile:hover{transform:translateY(-4px);box-shadow:0 18px 36px color-mix(in srgb,var(--m,var(--brand)) 26%,transparent)}
.modtile .mt-head{display:flex;align-items:center;gap:10px}
.modtile .mt-ic{width:40px;height:40px;border-radius:12px;font-size:18px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,color-mix(in srgb,var(--m,var(--brand)) 22%,var(--card)),color-mix(in srgb,var(--m,var(--brand)) 10%,var(--card)));
  box-shadow:inset 0 1px 0 color-mix(in srgb,var(--m,var(--brand)) 30%,#fff 40%),0 3px 10px color-mix(in srgb,var(--m,var(--brand)) 20%,transparent)}
.modtile .mt-title{font-size:14.5px;font-weight:800}
.modtile .mt-badges{display:flex;gap:6px;flex-wrap:wrap}

/* ================== جستجوی سریع ================== */
#palette{position:fixed;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(3px);
  z-index:200;display:flex;align-items:flex-start;justify-content:center;padding-top:12vh}
.pal-box{width:min(520px,92vw);background:var(--card);border:1px solid var(--line);border-radius:16px;
  box-shadow:0 24px 60px rgba(0,0,0,.35);overflow:hidden;animation:popIn .18s ease}
#pal-input{width:100%;border:0;border-bottom:1px solid var(--line);border-radius:0;
  padding:16px 18px;font-size:15px;font-family:inherit;background:transparent;color:var(--ink)}
#pal-input:focus{outline:none;box-shadow:none}
#pal-list{max-height:330px;overflow:auto;padding:6px}
.pal-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;cursor:pointer;font-size:13.5px}
.pal-row:hover{background:color-mix(in srgb,var(--brand) 10%,transparent)}
.pal-row.sel{background:color-mix(in srgb,var(--brand) 16%,transparent);font-weight:700}
.pal-empty{padding:18px;color:var(--muted);text-align:center;font-size:13px}
@keyframes popIn{from{opacity:0;transform:translateY(-10px) scale(.98)}to{opacity:1;transform:none}}

/* ================== کاشی‌های شناور ================== */
#tiles{position:fixed;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(3px);
  z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}
.tiles-box{width:min(640px,96vw);max-height:88vh;overflow:auto;background:var(--card);
  border:1px solid var(--line);border-radius:18px;padding:18px 20px 22px;
  box-shadow:0 24px 60px rgba(0,0,0,.35);animation:popIn .18s ease}
.tiles-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.tiles-box h4{margin:14px 0 8px;font-size:12.5px;color:var(--muted);font-weight:700}
.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.tile{position:relative;background:var(--bg);border:1px solid var(--line);border-radius:14px;
  padding:16px 10px 12px;text-align:center;cursor:pointer;transition:all .18s}
.tile:hover{transform:translateY(-3px);border-color:var(--brand2);
  box-shadow:0 10px 24px color-mix(in srgb,var(--brand) 22%,transparent)}
.tile .ti{font-size:24px;line-height:1}
.tile .tt{margin-top:8px;font-size:12.5px;font-weight:600}
.tile .pin{position:absolute;inset-inline-end:7px;top:6px;font-size:12px;color:#94a3b8;opacity:.55}
.tile .pin.on{color:#fbbf24;opacity:1}
.tile .pin:hover{color:#fbbf24;opacity:1}
@media(max-width:860px){
  body.rail aside{width:250px}
  .rail-btn{display:none}
  .tile-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}
}

/* ================== کاشی‌های زنده نوار بالا ================== */
#live-tiles{display:flex;gap:8px;align-items:center;flex:1;min-width:0;
  justify-content:flex-start;overflow:hidden;padding:0 6px;
  -webkit-mask-image:linear-gradient(to left,#000 94%,transparent);
  mask-image:linear-gradient(to left,#000 94%,transparent)}
.ltile{display:flex;align-items:center;gap:7px;padding:7px 12px;border-radius:12px;
  background:var(--card);border:1px solid var(--line);cursor:pointer;white-space:nowrap;
  transition:all .18s;flex-shrink:0}
.ltile:hover{transform:translateY(-2px);border-color:var(--brand2);
  box-shadow:0 6px 16px color-mix(in srgb,var(--brand) 20%,transparent)}
.ltile .lt-i{font-size:15px;line-height:1}
.ltile .lt-v{font-weight:800;font-size:14px;color:var(--ink)}
.ltile .lt-t{font-size:11px;color:var(--muted)}
.ltile.warn{border-color:color-mix(in srgb,#f59e0b 55%,var(--line))}
.ltile.warn .lt-v{color:#d97706}
@media(max-width:1500px){.topbar .date{display:none}}
@media(max-width:1250px){.ltile .lt-t{display:none}.ltile{padding:7px 10px}}
@media(max-width:1000px){#live-tiles{display:none}}

/* کاشی میانبر و پنجره شخصی‌سازی */
.ltile.nav .lt-t.big{font-size:12.5px;color:var(--ink);font-weight:700}
.ltile-gear{border:1px dashed var(--line);background:transparent;border-radius:10px;
  width:28px;height:32px;cursor:pointer;color:var(--muted);font-size:13px;flex-shrink:0;opacity:.55}
.ltile-gear:hover{opacity:1;border-color:var(--brand2);color:var(--brand2)}
.tile-cfg-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);
  border-radius:10px;margin-bottom:6px;background:var(--bg);cursor:grab}
.tile-cfg-row .drag{color:var(--muted);cursor:grab}
@media(max-width:1250px){.ltile.nav .lt-t.big{display:inline}}

/* کارت داشبورد کلیک‌خور */
.card.click{cursor:pointer;transition:all .18s}
.card.click:hover{transform:translateY(-3px);border-color:var(--brand2);
  box-shadow:0 10px 24px color-mix(in srgb,var(--brand) 20%,transparent)}
.card.warn{border-color:color-mix(in srgb,#f59e0b 55%,var(--line))}

/* ================== ویرایشگر حرفه‌ای فاکتور ================== */
/* حالت عریض قدیمی حذف شد — به جایش تمام‌صفحه (بالای فایل) */
.inv-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;
  border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:14px}
.inv-grid{display:flex;gap:16px;align-items:flex-start}
.inv-main{flex:1;min-width:0}
.inv-side{flex:0 0 250px;position:sticky;top:0}
.inv-sec{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px;background:var(--bg)}
.inv-sec-h{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.inv-table{width:100%;border-collapse:collapse}
.inv-table th{font-size:11.5px;color:var(--muted);text-align:right;padding:4px 6px;border-bottom:1px solid var(--line)}
.inv-table td{padding:3px 4px;vertical-align:middle}
.inv-table input,.inv-table select{width:100%;padding:7px 8px;font-size:13px;margin:0}
.inv-sum{border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:var(--card)}
.inv-sum .r{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;
  border-bottom:1px dashed color-mix(in srgb,var(--line) 70%,transparent);font-size:13px}
.inv-sum .r:last-child{border-bottom:0}
.inv-sum .r input{width:110px;padding:6px 8px;margin:0;text-align:left}
.inv-sum .r.tot{font-size:14.5px}
.inv-sum .r.tot b{font-size:16px}
.inv-sum .r.remain b{font-size:16px}
.inv-sum .r.payrow{border-top:2px solid var(--line);margin-top:4px;padding-top:10px}
@media(max-width:900px){.inv-grid{flex-direction:column}.inv-side{flex:1;width:100%;position:static}}

/* ---------- سرچ آنلاین ستونی ---------- */
.fltrow td{padding:3px 4px;background:color-mix(in srgb,var(--brand-soft) 35%,var(--card));
  border-bottom:2px solid var(--line)}
.fltrow input{width:100%;min-width:44px;border:1px solid var(--line);border-radius:8px;
  padding:6px 8px;font-size:11.5px;background:var(--card)}
.fltrow input:focus{border-color:var(--brand2);outline:none;box-shadow:0 0 0 2px var(--brand-soft)}
mark{background:#fde047;color:#111;border-radius:3px;padding:0 1px}
.flt-info{font-size:11.5px;color:var(--muted);padding:7px 10px;border-top:1px dashed var(--line)}
@media print{.fltrow,.flt-info{display:none!important}}

/* شمارنده روی تب‌ها */
.tabs .tcnt{display:inline-block;background:var(--brand);color:#fff;border-radius:20px;
  font-size:10px;padding:1px 7px;margin-right:4px;font-weight:800}
.tabs button:not(.active) .tcnt{background:color-mix(in srgb,var(--muted) 30%,var(--card));color:var(--ink)}

/* تعریف سریع داخل فاکتور */
.qadd-box{background:var(--brand-soft);border:1.5px dashed var(--brand2);border-radius:11px;
  padding:9px;margin-top:8px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}

/* ---------- فهرست‌های قابل تعریف کاربر ---------- */
.listsel{display:flex;gap:6px;align-items:stretch}
.listsel select{flex:1;min-width:0}
.listsel .btn{padding:0 11px;font-weight:800;line-height:1}
#list-mgr{position:fixed;inset:0;z-index:70;background:rgba(15,23,42,.55);
  display:flex;align-items:center;justify-content:center;padding:16px;backdrop-filter:blur(2px)}
#list-mgr .lm-box{background:var(--card);border-radius:16px;padding:16px 18px;width:min(560px,96vw);
  max-height:88vh;overflow:auto;box-shadow:0 24px 60px rgba(0,0,0,.3)}
#list-mgr .lm-head{display:flex;justify-content:space-between;align-items:center;
  border-bottom:1.5px solid var(--line);padding-bottom:9px;margin-bottom:4px}
#list-mgr .lm-list{display:flex;flex-direction:column;gap:6px;margin-top:6px}
#list-mgr .lm-row{display:flex;gap:6px;align-items:center;background:var(--bg);
  border:1px solid var(--line);border-radius:10px;padding:6px 8px}
#list-mgr .lm-row input{flex:1;min-width:0;margin:0}
/* ---------- تنخواه‌گردان ---------- */
.petty-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px}
.petty-card{margin:0}
.petty-card.low{border:2px solid #fcd34d}
.petty-bal{margin:10px 0 6px}
.petty-bal .lbl{display:block;font-size:11.5px;color:var(--muted)}
.petty-bal b{font-size:19px;font-weight:800}
.pbar{height:8px;border-radius:99px;background:var(--line);overflow:hidden;margin:7px 0 3px}
.pbar span{display:block;height:100%;background:linear-gradient(90deg,var(--brand2),var(--brand));border-radius:99px}
.petty-stats{display:flex;gap:8px;flex-wrap:wrap}
.petty-stats div{flex:1;min-width:88px;background:var(--bg);border:1px solid var(--line);
  border-radius:10px;padding:7px 9px;text-align:center}
.petty-stats span{display:block;font-size:11px;color:var(--muted)}
.petty-stats b{font-size:14px}

/* ---------- ترددهای چندگانه یک روز ---------- */
.sess-wrap{display:flex;gap:6px;flex-wrap:wrap}
.sess{display:inline-flex;align-items:center;gap:6px;background:var(--ok-soft);
  border:1.5px solid #86efac;border-radius:10px;padding:3px 8px;font-size:12px;white-space:nowrap}
.sess.open{background:var(--warn-soft,#fef3c7);border-color:#fcd34d}
.sess b{background:rgba(0,0,0,.08);border-radius:6px;padding:0 5px;font-size:11px}
.sess small{color:var(--muted)}
.sess .sx{border:0;background:transparent;cursor:pointer;font-size:12px;padding:0 2px;
  color:var(--muted);font-family:inherit}
.sess .sx:hover{color:var(--brand-ink)}
.sess .sx.del:hover{color:#dc2626}
.lv-pending{border:2px solid #fcd34d;background:linear-gradient(0deg,var(--card),var(--card))}
.lm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px;margin-top:10px}
.lm-card{display:flex!important;align-items:center;gap:9px;justify-content:flex-start;
  padding:11px 13px!important;font-weight:700;text-align:right}
#list-mgr .lm-use{font-size:11px;color:var(--muted);white-space:nowrap;min-width:52px;text-align:center}

/* ---------- حالت‌های سطح دسترسی ---------- */
.ro-mode .btn.primary,.ro-mode .btn.danger,.ro-mode .btn.green,.ro-mode .fab{display:none!important}
.nodel-mode .btn.danger{display:none!important}

/* چیپ‌های فاکتور */
.inv-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.ichip{border:0;border-radius:10px;padding:9px 14px;font-size:12.5px;cursor:pointer;
  font-family:inherit;font-weight:700;color:#fff}
.ichip.g{background:#16a34a}.ichip.b{background:var(--brand2)}
.ichip.r{background:#dc2626}.ichip.a{background:#d97706}
.ichip:hover{filter:brightness(1.1)}

/* ---------- زنگوله هشدارها ---------- */
#bell-badge{position:absolute;top:2px;left:2px;background:#dc2626;color:#fff;border-radius:20px;
  font-size:9.5px;min-width:16px;height:16px;line-height:16px;text-align:center;padding:0 4px;font-weight:800}
#bell-panel{position:fixed;top:58px;left:14px;width:min(400px,calc(100vw - 20px));max-height:70vh;overflow-y:auto;
  background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-lg);
  z-index:60;padding:8px;animation:pop .2s ease}
.bell-row{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:11px;cursor:pointer;font-size:13px;line-height:1.8}
.bell-row:hover{background:var(--brand-soft)}
.bell-row.urgent{background:var(--bad-soft)}
.bell-row.urgent:hover{background:color-mix(in srgb,var(--bad-soft) 70%,var(--card))}
.bell-empty{text-align:center;color:var(--muted);padding:26px 10px;font-size:13px}

/* ================== فاکتور حرفه‌ای ================== */
/* عرض 100% نه 100vw — دلیلش کنارِ #modal.wide نوشته شده. min-height اینجا
   100vh می‌ماند چون نوارِ بازگشت برای فاکتور پنهان است و پانویسِ فاکتور با
   همین قد به ته صفحه چسبیده می‌شود. */
#modal.iv{width:100%;max-width:100%;margin:0;padding:0;border:0;border-radius:0;
  min-height:100vh;box-shadow:none;overflow:visible;animation:none;
  display:flex;flex-direction:column}
#modal.iv .ivfoot{margin-top:auto}
#modal-bg:has(#modal.iv) #modal-top{display:none}   /* فاکتور نوار بازگشت خودش را دارد */
.iv-head{border-radius:0}
.ivfoot{border-radius:0}
.iv-head{position:sticky;top:0;z-index:7;background:linear-gradient(90deg,var(--side1),var(--side2));
  color:#fff;padding:11px 16px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-radius:18px 18px 0 0}
.iv-head h3{color:#fff;font-size:15px}
.iv-head .iv-no{background:rgba(255,255,255,.14);border-radius:9px;padding:4px 12px;font-size:11.5px;white-space:nowrap}
.iv-head .btn{background:rgba(255,255,255,.14);color:#fff}
.iv-head .btn.primary{background:#22c55e;color:#fff;box-shadow:0 4px 14px rgba(34,197,94,.35)}
.iv-sec{padding:8px 16px 14px;border-bottom:1px solid var(--line)}
.iv-top{display:grid;grid-template-columns:2.4fr 1.4fr 1fr 1fr;gap:0 12px;align-items:start}
@media(max-width:900px){.iv-top{grid-template-columns:1fr 1fr}}
/* ۳۹٫۷۱: پرداخت‌های ثبت‌شدهٔ قبلیِ فاکتورِ خرید — هر ردیف با دکمهٔ ابطال */
.mpi-prev{margin-bottom:8px}
.mpi-prow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:5px 8px;margin-bottom:4px;
  border:1px solid var(--line);border-radius:10px;background:var(--card-2,transparent);font-size:13px}
.mpi-prow>.t{flex:1 1 140px}
.mpi-prow>b{flex:0 0 auto}
.iv-chips{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.cchip{font-size:11px;border-radius:9px;padding:4px 10px;font-weight:800}
.c-red{background:var(--bad-soft);color:#b91c1c}.c-blue{background:var(--brand-soft);color:var(--brand-ink)}
.c-green{background:var(--ok-soft);color:#15803d}.c-amber{background:var(--warn-soft);color:#b45309}

/* جدول ستون‌دار */
.ivgrid{overflow-x:auto;border:1.5px solid var(--line);border-radius:12px}
table.ivtable{width:100%;min-width:1040px;border-collapse:collapse;font-size:13px;margin:0}
.ivtable thead th{background:linear-gradient(180deg,var(--brand-ink),var(--brand));color:#fff;
  font-size:11.5px;font-weight:800;padding:11px 8px;border:1px solid var(--brand-ink);
  text-align:center;white-space:nowrap;position:sticky;top:0}
.ivtable td{border:1px solid var(--line);padding:0;height:46px;background:var(--card)}
.ivtable tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--bg) 55%,var(--card))}
.ivtable tbody tr:hover td{background:color-mix(in srgb,var(--brand-soft) 40%,var(--card))}
.ivtable tbody tr.on td{background:var(--brand-soft)!important}
.ivtable td.rn{background:var(--bg)!important;color:var(--muted);text-align:center;font-weight:800;width:38px;font-size:12px}
.ivtable td.ru{text-align:center;color:var(--muted);font-size:12px;padding:0 4px;line-height:1.5}
.ivtable td.ru small{color:#16a34a;font-size:10px}
.ivtable input{border:0!important;border-radius:0!important;height:46px;background:transparent;
  padding:0 10px;font-size:13.5px;box-shadow:none}
.ivtable input:focus{box-shadow:inset 0 0 0 2.5px var(--brand2)!important;background:var(--card)}
.ivtable td.rsum{background:var(--ok-soft)!important;text-align:left;direction:ltr;padding:0 12px;
  font-weight:800;color:#166534;white-space:nowrap}
.ivtable td.rdel{width:38px;text-align:center}
.ivtable td.rdel button{border:0;background:transparent;color:#f87171;cursor:pointer;font-size:15px;width:100%;height:46px}
.ivtable td.rdel button:hover{color:var(--bad);background:var(--bad-soft)}
.ivtable tfoot td{background:var(--bg)!important;font-weight:800;padding:11px 10px!important;font-size:13px}

/* جستجوی زنده کالا */
.iv-nm{position:relative}
.iv-dd{position:absolute;top:46px;right:0;left:0;background:var(--card);border:1.5px solid var(--brand2);
  border-radius:0 0 12px 12px;z-index:30;max-height:240px;overflow-y:auto;box-shadow:var(--shadow-lg)}
.iv-dd div{padding:9px 12px;cursor:pointer;display:flex;justify-content:space-between;gap:8px;
  font-size:13px;border-bottom:1px solid var(--line)}
.iv-dd div:hover{background:var(--brand-soft)}
.iv-dd small{color:var(--muted);white-space:nowrap}
.iv-dd div.on{background:var(--brand-soft)}

/* نوار «امروز تعطیل است» بالای حضور و غیاب */
.offbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;
  padding:9px 14px;border-radius:12px;font-size:13px;
  background:#fef2f2;border:1px solid #fecaca;color:#991b1b}
.offbar.friday{background:#eff6ff;border-color:#bfdbfe;color:#1e40af}
.offbar .hint{color:inherit;opacity:.75}

/* انتخابگرِ شخص با جستجو */
.pp-wrap{position:relative;flex:1;min-width:0}
.pp-q{width:100%;padding-left:30px}
.pp-x{position:absolute;left:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;
  color:var(--muted);cursor:pointer;font-size:13px;line-height:1;padding:4px 5px;border-radius:6px}
.pp-x:hover{background:var(--brand-soft);color:var(--ink)}
.pp-dd{top:100%;margin-top:3px;border-radius:12px}
.pp-dd .pp-none{color:var(--muted);font-size:12.5px;cursor:default;display:block}
.pp-dd .pp-none:hover{background:transparent}

/* نوار جمع پایین */
.ivfoot{position:sticky;bottom:0;z-index:7;background:linear-gradient(90deg,var(--side1),var(--side2));
  color:#fff;padding:10px 14px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  border-radius:0 0 18px 18px;box-shadow:0 -4px 20px rgba(0,0,0,.22)}
.ivfp{background:rgba(255,255,255,.09);border-radius:12px;padding:6px 12px;text-align:center;min-width:88px}
.ivfp .t{font-size:9.5px;color:#9fb3cc;margin-bottom:2px;white-space:nowrap}
.ivfp .v{font-size:14.5px;font-weight:800;white-space:nowrap;direction:ltr}
.ivfp input,.ivfp select{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);
  color:#fff;width:104px;padding:6px 9px;font-size:13px;text-align:left;direction:ltr;border-radius:8px}
.ivfp input::placeholder{color:#7e93ad}
.ivfp select option{color:var(--ink)}
.ivfp.hl{background:var(--brand)}
.ivfp.pf{background:rgba(34,197,94,.16);border:1.5px dashed #22c55e}
.ivfoot .gr{color:#4ade80}.ivfoot .rd{color:#f87171}
.ivfoot .am{color:#fbbf24;font-size:12.5px}
.ivfoot .btn{background:rgba(255,255,255,.14);color:#fff}
.ivfoot .btn.primary{background:#22c55e}
@media(max-width:700px){
  .ivfoot{gap:6px;padding:8px}.ivfp{min-width:76px;padding:5px 9px}
  .ivfp .v{font-size:13px}.ivfp input,.ivfp select{width:84px}
}
.iv-head .ivback{border:0;background:rgba(255,255,255,.14);color:#fff;width:36px;height:36px;
  border-radius:11px;cursor:pointer;font-size:17px;flex-shrink:0}
.iv-head .ivback:hover{background:rgba(255,255,255,.28)}

/* تعریف سریع کالا داخل فاکتور */
.qitem-box{position:fixed;inset:0;background:rgba(8,12,24,.55);z-index:70;display:flex;
  align-items:center;justify-content:center;padding:14px;backdrop-filter:blur(3px)}
.qitem-card{background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:18px 20px;width:min(780px,96vw);box-shadow:var(--shadow-lg);animation:pop .22s ease}

/* ---------- صفحه اجباری تغییر رمز پیش‌فرض ---------- */
#pw-gate{position:fixed;inset:0;z-index:80;background:var(--bg);
  display:flex;align-items:center;justify-content:center;padding:18px;overflow:auto}
#pw-gate.hidden{display:none}
#pw-gate .pwg-box{background:var(--card);border-radius:18px;padding:26px 24px;width:min(430px,96vw);
  box-shadow:0 22px 60px rgba(0,0,0,.18);text-align:center}
#pw-gate .pwg-box .logo{margin:0 auto 12px}
#pw-gate h2{margin:0 0 8px;font-size:18px;color:var(--bad)}
#pw-gate label{text-align:right;display:block;margin-top:10px}
#pw-gate .err{color:var(--bad);font-size:12.5px;min-height:18px;margin:6px 0}
#pw-warn{background:var(--bad);color:#fff;border-radius:0 0 12px 12px;
  padding:9px 16px;font-size:12.5px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  justify-content:center;margin:0 calc(-1 * var(--main-pad,26px)) 10px}
#pw-warn .btn{background:#fff;color:var(--bad);border:0;font-weight:800}
@media print{#pw-warn{display:none}}

/* ---------- گزارش کار پرسنل ---------- */
.wo-alert{border:2px solid #fca5a5}
tr.wo-new td{background:color-mix(in srgb,var(--brand-soft) 55%,transparent)}
tr.wo-issue td{background:color-mix(in srgb,var(--bad-soft) 60%,transparent)}
.mydesk-reply{border:2px solid var(--brand2)}

/* ---------- محیط حسابداری: نوار بخش‌ها، کاشی‌ها و صورت‌های مالی ---------- */
.secbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r);padding:8px 12px;margin-bottom:14px;font-size:13px}
.secbar .home{color:var(--brand-ink);font-weight:700;text-decoration:none}
.secbar .sep{color:var(--muted)}
.secbar .secline{display:flex;flex-wrap:wrap;gap:4px;margin-inline-start:auto}
.secbar .secline a{padding:5px 11px;border-radius:99px;text-decoration:none;color:var(--muted);
  font-weight:600;white-space:nowrap;transition:.15s}
.secbar .secline a:hover{background:var(--brand-soft);color:var(--brand-ink)}
.secbar .secline a.on{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff}
h3.sech{margin:18px 0 10px;font-size:13px;color:var(--muted);font-weight:800}
.acc-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:10px;margin-bottom:6px}
.acc-tile{display:flex;align-items:center;gap:9px;padding:13px 14px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r);text-decoration:none;color:var(--ink);
  font-weight:600;font-size:13.5px;transition:.15s}
.acc-tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--brand)}
.acc-tile .ic{font-size:19px}
.ledger-strip{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;
  padding:12px 16px}
.ledger-strip .lbl{color:var(--muted);font-size:12px;margin-inline-end:6px}
.panel.warn{border:2px solid #fca5a5}
.badge.purple{background:#ede9fe;color:#6d28d9}
tr.void td{opacity:.55;text-decoration:line-through}
tr.grp td{background:color-mix(in srgb,var(--line) 45%,transparent)}
table.je select,table.je input{width:100%;margin:0;padding:6px 8px;font-size:13px}
table.je td{padding:4px}
.panel.fin table td:last-child{text-align:end;white-space:nowrap;font-variant-numeric:tabular-nums}
.panel.fin tr.tot td{border-top:2px solid var(--line);background:color-mix(in srgb,var(--brand-soft) 40%,transparent)}
.fs-two{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
@media(max-width:900px){.fs-two{grid-template-columns:1fr}.secbar .secline{margin-inline-start:0}}

/* ---------- نسخه ۱۷: محاسبه‌گر، دستگاه‌ها، نقدینگی و کار آفلاین ---------- */
.dgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
.dgrid label{display:block;margin-bottom:4px;font-size:12.5px;color:var(--muted)}
.dgrid input,.dgrid select{width:100%;margin:0}
.off-bar{background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn);
  border-radius:var(--r);padding:9px 14px;margin-bottom:12px;font-size:13px;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.off-bar.sync{background:var(--brand-soft);color:var(--brand-ink);border-color:var(--brand)}
.cfchart{display:flex;gap:6px;align-items:flex-end;overflow-x:auto;padding:8px 0 0}
.cfw{flex:1;min-width:54px;text-align:center}
.cfw .bars{height:130px;display:flex;gap:3px;align-items:flex-end;justify-content:center}
.cfw .bars span{width:12px;border-radius:4px 4px 0 0;min-height:2px;display:block}
.bin{background:var(--ok)} .bout{background:var(--bad)}
.cfw .lb{font-size:10.5px;color:var(--muted);margin-top:5px;white-space:nowrap}
.cfw .bal{font-size:11px;font-weight:700;margin-top:2px}
.cfw .bal.neg{color:var(--bad)}
.cfw.short{background:var(--bad-soft);border-radius:8px}
.sq{display:inline-block;width:10px;height:10px;border-radius:3px;vertical-align:middle}

/* ---------- موقعیت مکانی پرسنل ---------- */
.mapbox{width:100%;min-height:340px;border:1px solid var(--line);border-radius:var(--r);
  overflow:hidden;background:var(--bg)}
.mapbox .leaflet-container{border-radius:var(--r)}
tr.muted-row td{opacity:.6}

/* ---------- گردش کار روزانه (نسخه ۱۸) ---------- */
.wfcard{padding-top:10px}
.wfhead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;
  border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:10px}
.wfhead .badge{margin-inline-start:4px}
.wfemps{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:6px;
  max-height:230px;overflow:auto;border:1px solid var(--line);border-radius:var(--r);padding:8px}
label.chk{display:flex;align-items:center;gap:6px;margin:0;padding:5px 7px;border-radius:8px;
  font-weight:600;cursor:pointer}
label.chk:hover{background:var(--brand-soft)}
label.chk input{width:auto;margin:0}
label.chk small{color:var(--muted);font-weight:500}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:560px){.row2{grid-template-columns:1fr}}
.ordcell{white-space:nowrap;width:74px}
.ordcell .btn{padding:1px 6px;line-height:1.5}
tr.wo-undone td{background:color-mix(in srgb,var(--bad-soft) 35%,transparent)}

/* ---------- صفحهٔ خانهٔ یکپارچه (نسخه ۱۹) ---------- */
.homehead{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between}
/* دکمه‌های کار پرتکرار — بزرگ، یک ردیف، روی موبایل هم قابل زدن */
.quickbar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.quickbar .btn{display:inline-flex;align-items:center;gap:7px;padding:11px 15px;font-size:13.5px;
  font-weight:700;border-radius:12px}
.quickbar .qi{font-size:16px;line-height:1}
@media(max-width:560px){
  .quickbar{display:grid;grid-template-columns:1fr 1fr;gap:7px}
  .quickbar .btn{justify-content:center;padding:13px 8px;font-size:13px}
}
.homesec{display:flex;align-items:center;gap:10px;margin:18px 0 8px}
.homesec h3{margin:0;font-size:13.5px;color:var(--muted);font-weight:800}
.homesec::after{content:"";flex:1;height:1px;background:var(--line)}
.homesec .ltile-gear{margin-inline-start:0}
/* هشدارها: به‌جای شش پنل دراز، یک پنل تاشو */
.panel.alerts details{border-top:1px solid var(--line);padding:2px 0}
.panel.alerts details:first-of-type{border-top:0}
.panel.alerts summary{display:flex;align-items:center;gap:10px;cursor:pointer;padding:9px 2px;
  font-weight:700;font-size:13px;list-style:none}
.panel.alerts summary::-webkit-details-marker{display:none}
.panel.alerts summary::before{content:"▸";color:var(--muted);transition:.15s}
.panel.alerts details[open] summary::before{transform:rotate(-90deg)}
.panel.alerts summary .btn{margin-inline-start:auto;text-decoration:none}
.panel.alerts .albody{padding:2px 4px 12px}

/* گزارش‌های تفصیلی‌تر خانه (روند شش‌ماهه، سود پروژه‌ها، آخرین پروژه‌ها) —
   جمع‌شده به‌طور پیش‌فرض تا صفحهٔ اصلی خلوت‌تر بماند؛ با یک کلیک باز می‌شود */
.home-detail-reports{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  margin-bottom:14px;overflow:hidden}
.home-detail-reports summary{display:flex;align-items:center;gap:8px;cursor:pointer;
  padding:14px 18px;font-weight:700;font-size:13.5px;list-style:none}
.home-detail-reports summary::-webkit-details-marker{display:none}
.home-detail-reports summary::before{content:"▸";color:var(--muted);font-size:12px;transition:.15s}
.home-detail-reports[open] summary::before{transform:rotate(-90deg)}
.home-detail-reports .hdr-body{padding:0 18px 18px;display:flex;flex-direction:column;gap:14px}
.home-detail-reports .hdr-body .panel{margin-bottom:0}

/* ردیف میان‌برهای سریع — فقط چندتای اصلی نمایان، بقیه پشت «بیشتر» */
.quickbar .qrest{display:none}
.quickbar.exp .qrest{display:contents}
.quickbar .qmore{opacity:.8}

/* صفحهٔ اصلی: کمی جمع‌وجورتر از بقیهٔ صفحه‌ها */
.home-page .panel{padding:14px 16px;margin-bottom:12px}
.home-page .cards{gap:10px;margin-bottom:12px}
.home-page .card{padding:12px 13px}
.home-page .modtiles{gap:10px}
.home-page .modtile{padding:13px 15px;gap:8px}
.home-page .homesec{margin:14px 0 6px}
.home-page .quickbar{margin-bottom:12px}

/* ---------- زنجیرهٔ «قدم بعدی» در پرونده پروژه ---------- */
.chain { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.chain-step { display: flex; align-items: center; gap: 12px; padding: 10px 12px;
  border: 1px solid var(--line); border-radius: 10px; background: var(--bg); }
.chain-step.ok { opacity: .72; }
.chain-step.now { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 7%, var(--bg));
  box-shadow: 0 0 0 1px var(--accent) inset; }
.chain-dot { width: 26px; height: 26px; border-radius: 50%; flex: none;
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 12.5px; background: var(--line); color: var(--muted); }
.chain-step.ok .chain-dot { background: #16a34a; color: #fff; }
.chain-step.now .chain-dot { background: var(--accent); color: #fff; }

/* ---------- کارهای جامانده در صفحهٔ خانه ---------- */
.stuck { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; }
.stuck-box { border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; background: var(--bg); }
.stuck-box h4 { font-size: 13.5px; margin: 0 0 8px; display: flex; align-items: center; gap: 7px; }
.stuck-box h4 .n { background: #dc2626; color: #fff; border-radius: 99px;
  padding: 1px 8px; font-size: 11.5px; font-weight: 800; }
.stuck-row { padding: 6px 0; border-bottom: 1px solid var(--line); font-size: 13px; cursor: pointer; }
.stuck-row:last-child { border-bottom: none; }
.stuck-row:hover { color: var(--accent); }
/* جمعِ پایینِ ستون (مطالبات / بدهی‌ها) — جداشده از ردیف‌ها تا با آن‌ها قاطی نشود */
.stuck-foot { margin-top: 8px; padding-top: 7px; border-top: 1px dashed var(--line);
  font-size: 13px; font-weight: 800; }

/* نام‌های کلیک‌پذیر داخل جدول‌ها (مانده طرف حساب‌ها و مانند آن) */
a.lnk { color: inherit; cursor: pointer; text-decoration: none;
  border-bottom: 1px dashed var(--line); transition: .15s; }
a.lnk:hover { color: var(--accent); border-bottom-color: var(--accent); }

/* پرش از گردش حساب به خود سند: نشانگر کوچک کنار نام سند + برجسته شدن
   ردیف مقصد، تا وقتی صفحه عوض می‌شود چشم بداند کجا را نگاه کند. */
a.lnk .goto { font-size: 10.5px; opacity: 0; transition: .15s; }
a.lnk:hover .goto { opacity: .8; }
tr.flash > td { animation: rowflash 2.2s ease-out; }
@keyframes rowflash {
  0%, 55% { background: #fde68a; }
  100%    { background: transparent; }
}

/* ---------- نمودارها ----------
   رنگ‌ها با ابزار سنجش کوررنگی آزموده شده‌اند: در هر دو حالت روشن و تیره،
   هر دو رنگِ کنارِ هم برای هر سه نوع کوررنگی از هم جدا دیده می‌شوند. رنگ
   تنها حاملِ معنا نیست — هر خط برچسبِ نامش را هم کنار خودش دارد. */
.viz{--s1:#2a78d6;--s2:#eb6834;--s3:#1baf7a;--good:#0ca30c;--bad:#d03b3b;
  --grid:color-mix(in srgb,var(--muted) 18%,transparent);
  --axis:color-mix(in srgb,var(--muted) 42%,transparent)}
[data-theme="dark"] .viz{--s1:#3987e5;--s2:#d95926;--s3:#199e70;--good:#0ca30c;--bad:#e66767}
.viz svg{width:100%;display:block;overflow:visible}
.viz .vz-lbl{font-size:11px;fill:var(--muted)}
.viz .vz-val{font-size:11px;fill:var(--ink);font-weight:700}
.viz .vz-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.viz .vz-dot{r:4;stroke:var(--card);stroke-width:2}
.viz .vz-hit{fill:transparent;cursor:crosshair}
.viz .vz-cross{stroke:var(--axis);stroke-width:1;stroke-dasharray:3 3;visibility:hidden}
.viz-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;font-size:12.5px;color:var(--muted)}
.viz-legend b{color:var(--ink);font-weight:700}
.viz-tip{position:fixed;z-index:60;background:var(--card);border:1px solid var(--line);
  border-radius:10px;padding:8px 11px;font-size:12.5px;box-shadow:0 8px 24px rgba(0,0,0,.14);
  pointer-events:none;display:none;min-width:140px}
.viz-tip .t{color:var(--muted);font-size:11.5px;margin-bottom:4px}
.viz-tip .r{display:flex;justify-content:space-between;gap:14px;line-height:1.9}
.viz-tip .r b{font-weight:700}
.viz-empty{color:var(--muted);text-align:center;padding:26px 0;font-size:13px}

/* ---------- مشاهدهٔ فاکتور (۳۸٫۵۵) ----------
   مهدی: «مشاهده فاکتور خیلی بی‌روحه… خیلی گنگ به نظر می‌رسه». پس اول چیزی
   که مدیر می‌خواهد بداند — چه فاکتوری، چند، تسویه شده یا نه — درشت در بالا؛
   بعد طرف حساب و تاریخ‌ها و پروژه در سه کارت، بعد اقلام با جمع‌بندی، و آخر
   پرداخت‌ها و توضیحات. رنگِ سربرگ نوع فاکتور را از دور نشان می‌دهد. */
#modal.wide > .ivv{max-width:1120px;margin:14px auto 0!important;padding:0 18px;box-sizing:border-box}
.ivv{--ivv-a:#17356B;--ivv-b:#2A5AA6}
.ivv-purchase{--ivv-a:#0E5C4A;--ivv-b:#1B8C70}
.ivv-quote{--ivv-a:#4B3F72;--ivv-b:#6C5BA8}
.ivv svg{width:15px;height:15px;vertical-align:-2px}
.ivv-hero{display:grid;grid-template-columns:1fr auto;gap:14px 20px;align-items:center;color:#fff;
  background:linear-gradient(135deg,var(--ivv-a),var(--ivv-b));border-radius:16px;padding:20px 22px;
  box-shadow:0 10px 26px -12px color-mix(in srgb,var(--ivv-a) 70%,transparent)}
.ivv-hero-main{display:flex;gap:14px;align-items:center;min-width:0}
.ivv-hero-ic{width:54px;height:54px;border-radius:14px;background:rgba(255,255,255,.16);display:grid;place-items:center;flex-shrink:0}
.ivv-hero-ic svg{width:28px;height:28px}
.ivv-kind{font-size:12px;opacity:.8}
.ivv-no{font-size:24px;font-weight:800;letter-spacing:.3px;line-height:1.35}
.ivv-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.ivv-chip{background:rgba(255,255,255,.15);border-radius:999px;padding:3px 10px;font-size:12px;white-space:nowrap}
.ivv-chip.ivv-st{background:#fff;color:var(--ivv-a);font-weight:700}
.ivv-hero-amt{text-align:left}
.ivv-amt{font-size:28px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.ivv-amt small{font-size:13px;font-weight:500;opacity:.85}
.ivv-settle{grid-column:1/-1}
.ivv-bar{height:8px;border-radius:99px;background:rgba(255,255,255,.2);overflow:hidden}
.ivv-bar i{display:block;height:100%;border-radius:99px;background:#fff;transition:width .5s ease}
.ivv-settle-t{margin-top:7px;font-size:13px;font-weight:700}
.ivv-settle-t.ok{color:#BBF7D0}.ivv-settle-t.bad{color:#FECACA}.ivv-settle-t.part{color:#FDE68A}
.ivv-settle-t.none,.ivv-settle-t.draft{color:rgba(255,255,255,.85)}
.ivv-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}
.ivv-cards.two{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}
.ivv-cards.two > :only-child{grid-column:1/-1}
.ivv-card,.ivv-box{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow)}
.ivv-box{margin-top:14px}
.ivv-cards .ivv-box{margin-top:0}
.ivv-lbl{font-size:12px;color:var(--muted);font-weight:700;margin-bottom:8px}
.ivv-lbl svg{color:var(--ivv-a)}
[data-theme="dark"] .ivv-lbl svg,[data-theme="dark"] .ivv-box-h svg{color:var(--brand)}
.ivv-party{display:flex;gap:10px;align-items:flex-start}
.ivv-party b{font-size:15px;display:block;line-height:1.5}
.ivv-av{width:40px;height:40px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;font-weight:800;font-size:17px;
  color:#fff;background:linear-gradient(135deg,var(--ivv-a),var(--ivv-b))}
.ivv-sub{font-size:12px;color:var(--muted);margin-top:2px;line-height:1.7}
.ivv-kv{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px dashed var(--line);font-size:13px}
.ivv-kv:last-child{border-bottom:0}
.ivv-kv span{color:var(--muted)}
.ivv-box-h{font-weight:800;font-size:14px;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.ivv-box-h svg{color:var(--ivv-a)}
.ivv-tw{overflow-x:auto;border:1px solid var(--line);border-radius:12px}
table.ivv-t{font-size:13.5px}
table.ivv-t th{background:var(--line-soft);position:static;border-bottom:1px solid var(--line);padding:10px 12px}
table.ivv-t td{padding:11px 12px;border-bottom:1px solid var(--line-soft)}
table.ivv-t tbody tr:last-child td{border-bottom:0}
table.ivv-t tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--line-soft) 55%,transparent)}
table.ivv-t tbody tr:hover td{background:var(--brand-soft)}
table.ivv-t .n{text-align:left;white-space:nowrap;font-variant-numeric:tabular-nums}
table.ivv-t .c{width:42px;text-align:center}
.ivv-n{display:inline-grid;place-items:center;min-width:24px;height:24px;border-radius:8px;background:var(--line-soft);
  color:var(--muted);font-size:12px;font-weight:700}
.ivv-q{background:var(--brand-soft);color:var(--brand-ink);border-radius:7px;padding:2px 8px;font-size:12.5px}
.ivv-disc{color:var(--bad)}
.ivv-extra td{color:var(--muted)}
.ivv-sum{width:min(380px,100%);margin:12px 0 0;margin-inline-start:auto;font-variant-numeric:tabular-nums}
.ivv-sum-r{display:flex;justify-content:space-between;gap:12px;padding:6px 4px;font-size:13.5px}
.ivv-sum-r span{color:var(--muted)}
.ivv-sum-r.disc b{color:var(--bad)}
.ivv-sum-r.grand{margin:6px 0;padding:10px 12px;border-radius:10px;font-size:16px;color:#fff;
  background:linear-gradient(135deg,var(--ivv-a),var(--ivv-b))}
.ivv-sum-r.grand span{color:rgba(255,255,255,.85)}
.ivv-sum-r.grand small{font-size:12px;font-weight:500}
.ivv-sum-r.paid b{color:var(--ok)}
.ivv-sum-r.due{background:var(--bad-soft);border-radius:8px}.ivv-sum-r.due b,.ivv-sum-r.due span{color:var(--bad)}
.ivv-sum-r.clear{background:var(--ok-soft);border-radius:8px}.ivv-sum-r.clear b,.ivv-sum-r.clear span{color:var(--ok)}
.ivv-pays{display:flex;flex-direction:column;gap:8px}
.ivv-pay{display:flex;gap:10px;align-items:center;padding:9px 10px;border-radius:11px;background:var(--line-soft)}
.ivv-pay-ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex-shrink:0;background:var(--ok-soft);color:var(--ok)}
.ivv-pay.back .ivv-pay-ic{background:var(--bad-soft);color:var(--bad)}
.ivv-pay-amt{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:14px}
.ivv-pay.back .ivv-pay-amt{color:var(--bad)}
.ivv-note{background:var(--line-soft);border-radius:10px;padding:10px 12px;line-height:1.9;font-size:13.5px}
.ivv-empty{text-align:center;color:var(--dim);padding:16px 0;font-size:13px}
.ivv-empty svg{width:26px;height:26px;opacity:.55;margin-bottom:4px}
.ivv-actions{position:sticky;bottom:0;z-index:5;display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:16px;
  padding:12px 0;background:var(--card);border-top:1px solid var(--line)}
.ivv-actions .spacer{flex:1}
@media(max-width:820px){
  .ivv-cards,.ivv-cards.two{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:600px){
  #modal.wide > .ivv{padding:0 10px;margin-top:10px!important}
  .ivv-hero{grid-template-columns:1fr;padding:16px}
  .ivv-hero-amt{text-align:right}
  .ivv-no{font-size:20px}.ivv-amt{font-size:23px}
  .ivv-hero-ic{width:44px;height:44px}
  /* روی گوشی جدولِ اقلام کارت‌به‌کارت: نام بالا، اعداد زیرش */
  table.ivv-t thead{display:none}
  table.ivv-t,table.ivv-t tbody,table.ivv-t tr,table.ivv-t td{display:block;width:auto}
  table.ivv-t tr{position:relative;padding:10px 12px 10px 12px;border-bottom:1px solid var(--line)}
  table.ivv-t tbody tr:nth-child(even) td{background:none}
  table.ivv-t td{border:0!important;padding:1px 0}
  table.ivv-t td.c{position:absolute;left:10px;top:10px;width:auto}
  table.ivv-t td.n{text-align:right;display:inline-block;margin-left:10px;font-size:12.5px}
  table.ivv-t td.n:last-child{display:block;margin-top:4px;font-size:14px}
  table.ivv-t td.n::before{content:attr(data-l) " ";color:var(--muted);font-size:11.5px}
  table.ivv-t .ivv-extra td[colspan]{padding-left:34px}
  .ivv-actions .btn{flex:1 1 auto}
  .ivv-actions .spacer{display:none}
  .ivv-actions .ivv-close{flex:0 0 100%}
}
@media print{ .ivv-actions{display:none} }

/* گروهِ بستهٔ فرم (۳۹٫۰۲) — فیلدهای کم‌کاربرد پشتِ یک سرتیتر جمع می‌شوند */
.fgroup{border:1px solid var(--line);border-radius:10px;padding:0 12px;margin:4px 0 12px;background:var(--bg,transparent)}
.fgroup>summary{cursor:pointer;padding:10px 0;font-weight:600;list-style:none;display:flex;align-items:center;gap:8px}
.fgroup>summary::-webkit-details-marker{display:none}
.fgroup>summary::before{content:"◂";font-size:12px;opacity:.6;transition:transform .15s}
.fgroup[open]>summary::before{transform:rotate(-90deg)}
.fgroup[open]>summary{border-bottom:1px solid var(--line);margin-bottom:10px}

/* برگهٔ کارها (۳۹٫۰۲) — فهرستِ عمودیِ کارهای یک پرونده، هرکدام یک دکمهٔ تمام‌عرض */
.sheet{display:flex;flex-direction:column;gap:6px}
.sheet .sheet-item{justify-content:flex-start;text-align:start;width:100%;padding:12px 14px;font-size:15px;gap:10px}
.sheet .sheet-item .ico{width:24px;text-align:center;flex-shrink:0}

/* فرمِ فروشِ گوشی/خط روی گوشی (۳۹٫۰۲): چهار راهِ پرداخت در یک ردیف، و سطرِ
   پرداخت افقی می‌ماند — دکمهٔ ✕ دیگر یک نوارِ قرمزِ تمام‌عرض نیست. */
.pay-methods{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:8px}
@media(max-width:860px){
  .row.pp-row{flex-direction:row;flex-wrap:wrap;align-items:center}
  .row.pp-row>*{width:auto;flex:1 1 120px}
  .row.pp-row>b{flex:0 0 auto;min-width:48px}
  .row.pp-row>.btn.danger{flex:0 0 auto;width:40px;padding:8px 0}
  .row.pp-row>select{flex:1 1 100%}
}

/* جعبهٔ «بنویس و انتخاب کن» (۳۹٫۰۶) — فهرست در جریانِ صفحه باز می‌شود، نه
   شناور: شناورش روی گوشی زیرِ نوارِ پایین بریده می‌شد. */
.combo{position:relative}
.combo-list{margin-top:4px;border:1px solid var(--line);border-radius:10px;
  background:var(--card);max-height:240px;overflow-y:auto;
  box-shadow:0 6px 18px rgba(0,0,0,.10)}
.combo-row{padding:12px 14px;cursor:pointer;border-top:1px solid var(--line);
  font-size:14px;line-height:1.5}
.combo-row:first-child{border-top:0}
.combo-row:hover,.combo-row.on{background:color-mix(in srgb,var(--ink) 8%,transparent)}
.combo-row.on{font-weight:700}
.combo-empty{padding:12px 14px;font-size:13px;opacity:.65}

/* ۳۹٫۴۹: ردیفِ فاکتورِ جمع‌شده و قلم‌هایش (امروز و دفتر) */
tr.mgrp-sub td{background:color-mix(in srgb,var(--brand) 4%,transparent);font-size:12.5px}
.mgrp-tog{padding:2px 8px;min-height:0;font-size:11.5px;margin-inline-start:6px}
.mgrp-tog[aria-expanded="true"]{background:var(--brand-soft);color:var(--brand-ink)}
/* ۳۹٫۴۹: مانده‌ٔ منفیِ حساب */
.neg-bal{color:var(--bad,#dc2626)!important}
/* ۳۹٫۴۹: یادداشتِ پرونده — ورودی پهن، دکمه‌ها به اندازهٔ خودشان */
#modal .mtev-add{display:flex;gap:6px;align-items:center;margin-top:10px}
#modal .mtev-add input{flex:1;min-width:0;margin:0}
#modal .mtev-add .btn,#modal .mtev-foot .btn{flex:0 0 auto;width:auto}
#modal .mtev-foot{display:flex;justify-content:flex-start;margin-top:12px}
/* ۳۹٫۴۹: پنجرهٔ تحویلِ تعمیر */
#mtd-box .mtd-sum{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline;justify-content:space-between;
  padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--brand-soft)}
#mtd-box .mtd-total{font-size:15px}
#mtd-box .mtd-war{margin-top:8px;padding:8px 12px;border-radius:10px;border:1px dashed var(--line);font-size:13px;line-height:1.9}
#mtd-box .mtd-print{display:flex;gap:6px;align-items:center;margin:8px 0 10px;font-weight:600}
#mtd-box .msi-part select{width:auto;max-width:190px}
#modal .msi-disc-btn{align-self:center}
#modal .warranty-hit{margin:-4px 0 10px;padding:8px 12px;border-radius:10px;border:1px solid var(--ok,#16a34a);
  background:var(--ok-soft,#ecfdf5);font-size:13px;line-height:1.9}
/* ۳۹٫۴۹: فاکتورِ تمام‌صفحه روی گوشی — فاصلهٔ ۱۶ پیکسلیِ #modal-bg (برای ناچ) سربرگ
   و نوارِ جمعِ چسبان را از لبه جدا می‌کرد و ردیف‌ها از زیر/بالایشان پیدا بودند.
   فاکتور فاصلهٔ ناچ را خودش در سربرگ و پانویس می‌گیرد. */
#modal-bg:has(#modal.iv){padding-top:0;padding-bottom:0}
#modal.iv .iv-head{padding-top:max(var(--ivh-pt,11px),env(safe-area-inset-top,0px))}
#modal.iv .ivfoot{padding-bottom:env(safe-area-inset-bottom,0px)}

/* ۳۹٫۵۰ — عکسِ چک، محدودیتِ کاربر، شیفتِ صندوق و شمارشِ اسکناس */
.chq-imgs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:6px}
.chq-img img{display:block;width:100%;height:150px;object-fit:contain;border:1px solid var(--line);
  border-radius:9px;background:var(--card)}
.chq-img-empty{height:150px;display:flex;align-items:center;justify-content:center;border:1.5px dashed var(--line);
  border-radius:9px;color:var(--muted);font-size:12.5px}
.ulim{margin-top:12px;border:1.5px solid var(--line);border-radius:11px;padding:10px 12px}
.ulim-h{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}
.ulim-g{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.ulim-g label{font-size:12px}
.ulim-cks{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:6px}
.ulim-ck{display:flex!important;align-items:center;gap:6px;font-size:13px;cursor:pointer;margin:0}
.ulim-ck input{width:auto!important;margin:0}
.shift-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.shift-hand{background:var(--warn-soft,#fff7e6);border:1px solid #f2d38a;border-radius:10px;padding:8px 10px;
  margin:0 0 8px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:13px}
.dn-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px}
.dn-row{display:grid;grid-template-columns:minmax(0,1.1fr) 76px minmax(0,1fr);gap:6px;align-items:center;margin-bottom:4px}
.dn-row input{padding:6px 8px;margin:0;text-align:center}
.dn-v{font-weight:700;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dn-t{color:var(--muted);font-size:12px;text-align:left;direction:ltr;white-space:nowrap}
.dn-sum{margin-top:8px;padding:8px 10px;border-radius:9px;background:color-mix(in srgb,var(--line) 45%,transparent);font-size:14px}
@media (max-width:640px){
  .ulim-g,.dn-grid{grid-template-columns:minmax(0,1fr)}
  .chq-img img,.chq-img-empty{height:110px}
}
@media print{.no-print{display:none!important}}
.chq-img-acts{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap}
.dn-sum{position:sticky;bottom:0;z-index:2;background:var(--card);border:1px solid var(--line);
  box-shadow:0 -4px 12px color-mix(in srgb,var(--ink) 8%,transparent)}

/* ۳۹٫۹۵: نوارِ «در حالِ بارگذاری» (netBusy در app.js) */
#netbar{position:fixed;top:0;right:0;left:0;height:3px;z-index:100000;pointer-events:none;overflow:hidden;
  opacity:0;transition:opacity .2s}
#netbar.on{opacity:1}
#netbar:before{content:"";position:absolute;top:0;bottom:0;width:40%;background:var(--brand,#2F5BE0);
  animation:netbar 1.1s ease-in-out infinite}
@keyframes netbar{from{right:-40%}to{right:100%}}
@media (prefers-reduced-motion:reduce){#netbar:before{animation:none;width:100%;right:0;opacity:.6}}

/* ۳۹٫۹۵: کادرِ پیامکِ سامانه در تنظیماتِ پیامک (psmsLoad) */
.psms{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:0 0 12px;background:var(--bg)}
.psms-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* ۳۹٫۹۵: «؟» کنارِ عنوانِ فرم‌ها و کادرِ شناورِ راهنما (helpQ/helpPop در app.js) */
.help-q{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;border:1px solid var(--line);
  background:var(--card,#fff);color:var(--brand,#2F5BE0);font:700 14px/1 inherit;cursor:pointer;vertical-align:middle;
  margin-inline-start:6px;padding:0}
.help-q:hover{background:var(--brand-soft,#eef2f9)}
#helppop{position:fixed;inset-inline-end:16px;bottom:16px;z-index:100001;width:min(380px,calc(100vw - 32px));
  max-height:70vh;overflow:auto;background:var(--card,#fff);color:var(--ink,#0b1220);border:1px solid var(--line);
  border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.18);padding:12px 14px;display:none;font-size:14px;line-height:1.9}
#helppop.open{display:block}
#helppop .hp-h{display:flex;align-items:center;gap:8px;justify-content:space-between;margin-bottom:6px}
#helppop .hp-x{border:0;background:transparent;font-size:16px;cursor:pointer;color:var(--muted)}
#helppop ol{margin:0;padding-inline-start:20px}
#helppop a{color:var(--brand,#2F5BE0);font-weight:600}

/* ۳۹٫۹۹: طراحِ سربرگ — سطرهای قابلِ جابه‌جایی */
.ph-lines{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.ph-line{display:flex;gap:6px;align-items:center;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.ph-line.off{opacity:.55}
.ph-line .btn{min-width:38px}

/* ۴۰٫۰۱: ریزِ اقلام در گردشِ تفصیلیِ اشخاص (هر سه ماژول) */
table.mst-lines{width:100%;margin:4px 0 0;font-size:13.5px;background:transparent}
table.mst-lines td{padding:2px 6px;border:0;border-top:1px dashed var(--line);color:var(--muted)}
table.mst-lines td:last-child{text-align:left;color:inherit}
@media print{table.mst-lines td{color:#333}}
