/* ============================================================
   ارزیابی اقتصادی پروژه‌های ساختمانی — دیزاین‌سیستم
   financial-grade light UI (inspired by Linear / Stripe / Notion)
   ============================================================ */
/* Team profile editor: scoped so other dialogs retain their layout. */
#tenantDialog.team-edit-dialog{width:min(700px,calc(100vw - 32px))!important;padding:0!important;background:var(--paper)!important;max-height:calc(100dvh - 32px)!important;border-radius:18px!important;box-sizing:border-box;box-shadow:0 24px 80px #102a3330;}
#tenantDialog.team-edit-dialog>header{padding:20px 24px;border-bottom:1px solid var(--line);gap:16px;background:var(--paper);position:sticky;top:0;z-index:2;}
.team-edit-dialog>header h3{margin:0;font-size:1.08rem;line-height:1.7;overflow-wrap:anywhere;}
.team-edit-dialog>header button{flex-shrink:0;}
.team-edit-dialog>[data-error]:empty{display:none;}
.team-edit-dialog>[data-error]:not(:empty){margin:16px 24px 0;padding:12px;background:var(--bad-bg);border-radius:8px;}
.team-edit-body{padding:0 24px 20px;}
.team-edit-intro{color:var(--muted);font-size:.85rem;margin:18px 0 22px;}
.team-edit-section{border:0;padding:0;margin:0 0 24px;min-width:0;}
.team-edit-section legend{font-size:.92rem;font-weight:800;padding:0;margin-bottom:12px;color:var(--ink);}
.team-edit-section legend span{font-size:.75rem;font-weight:400;color:var(--muted);margin-inline-start:6px;}
.team-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;}
.team-edit-grid .field{margin:0;min-width:0;display:grid;gap:7px;}
.team-edit-grid .field>span{font-size:.82rem;color:var(--ink2);font-weight:600;}
.team-edit-grid input{width:100%;min-width:0;box-sizing:border-box;min-height:44px;background:var(--paper);font-size:.9rem;}
.team-edit-grid input[dir=ltr]{text-align:left;}
.team-edit-wide{grid-column:1/-1;}
.team-edit-status{padding:15px 16px;border:1px solid var(--line);border-radius:12px;background:var(--softer);}
.team-edit-toggle{display:flex;align-items:center;gap:12px;cursor:pointer;}
.team-edit-toggle input[type=checkbox]{width:20px;height:20px;min-height:20px;margin:0;flex:0 0 20px;accent-color:var(--brand);}
.team-edit-status strong{display:block;font-size:.86rem;}
.team-edit-status small,.team-edit-status p{display:block;font-size:.78rem;color:var(--muted);margin:4px 0 0;line-height:1.8;}
.team-edit-note{font-size:.76rem;color:var(--muted);margin:12px 0 0;line-height:1.8;}
.team-edit-actions{display:flex;gap:10px;align-items:center;padding:16px 24px;border-top:1px solid var(--line);background:var(--paper);position:sticky;bottom:0;z-index:1;}
.team-edit-actions .btn{min-height:44px;min-width:105px;}
.team-edit-dialog :focus-visible{outline:2px solid var(--brand);outline-offset:3px;}
@media(max-width:560px){.team-edit-grid{grid-template-columns:minmax(0,1fr);gap:14px;}.team-edit-wide{grid-column:auto;}#tenantDialog.team-edit-dialog>header{padding:16px;}.team-edit-body{padding:0 16px 16px;}.team-edit-actions{padding:14px 16px;}.team-edit-actions .btn{flex:1;min-width:0;}.team-edit-section{margin-bottom:20px;}}
:root{
  --bg:#F4F6F9; --bg-grad-1:#EEF2F8; --bg-grad-2:#F6F8FB;
  --paper:#FFFFFF; --card:#FFFFFF; --paper-2:#FBFCFE; --soft:#F1F4F9; --softer:#F7F9FC;
  --ink:#16202E; --ink2:#3A4757; --ink-2:#3A4757; --muted:#6B7787; --ink3:#6B7787; --faint:#97A1AE;
  --line:#E4E9F0; --line-2:#EDF1F6; --line-strong:#D4DBE5;
  --brand:#0B7C82; --brand-ink:#076065; --brand-2:#6E4B66; --brand-3:#1AA7AD;
  --brand-soft:#E4F4F4; --brand-soft-2:#F0E9EF; --accent:#C2823A;
  --glow-1:rgba(11,124,130,.07); --glow-2:rgba(110,75,102,.07);
  --good:#0E8A53; --good-bg:#E7F7EE; --good-line:#B6E6CC;
  --warn:#B5781A; --warn-bg:#FCF3E1; --warn-line:#F0DBA8;
  --bad:#C0392B;  --bad-bg:#FCEDEB;  --bad-line:#F2C9C3;
  /* آبیِ «تاریخ مبنا» — عمداً از رنگِ برند جداست تا در همهٔ تم‌ها (سبز/بنفش/نارنجی/قرمز/طوسی) متمایز بماند */
  --basedate:#2C5FA8; --basedate-bg:#E4EDFB; --basedate-line:#B7CDEE;
  --shadow-xs:0 1px 2px rgba(16,32,46,.04),0 1px 3px rgba(16,32,46,.06);
  --shadow-sm:0 2px 4px rgba(16,32,46,.04),0 4px 12px rgba(16,32,46,.06);
  --shadow-md:0 4px 8px rgba(16,32,46,.04),0 12px 28px rgba(16,32,46,.08);
  --shadow-lg:0 18px 50px rgba(16,32,46,.12);
  --shadow-brand:0 8px 22px rgba(11,124,130,.22);
  --radius:16px; --radius-sm:11px; --radius-xs:8px; --radius-lg:22px;
  --font:'Vazirmatn',Tahoma,Arial,sans-serif;
  --mono:'IBM Plex Mono','Vazirmatn',ui-monospace,monospace;
  --sidebar-bg:#0E1B2A; --sidebar-bg-2:#13243A;
}
*{box-sizing:border-box}
html,body{height:100%}
html{font-size:15px} /* مبنای rem: کوچک‌سازیِ متناسبِ کلِ تایپوگرافی (از ۱۶ پیش‌فرض) */
body{margin:0;background:radial-gradient(1200px 520px at 88% -8%,var(--glow-1),transparent 60%),radial-gradient(1000px 480px at 6% -6%,var(--glow-2),transparent 58%),linear-gradient(180deg,var(--bg-grad-2) 0%,var(--bg-grad-1) 100%);background-attachment:fixed;color:var(--ink);font-family:var(--font);line-height:1.75;letter-spacing:-.003em;overflow-x:hidden;-webkit-font-smoothing:antialiased;font-size:13.5px}
button,input,select,textarea{font-family:inherit}
a{color:var(--brand);text-decoration:none}
.hidden{display:none!important}
/* ★ صفت hidden باید همه‌جا واقعاً پنهان کند (وگرنه display:flex ِ .field بر قاعدهٔ پیش‌فرضِ مرورگر می‌چربد) */
[hidden]{display:none!important}
.ltr{direction:ltr;text-align:left}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-thumb{background:#C9D2DE;border-radius:99px;border:3px solid transparent;background-clip:padding-box}
::selection{background:rgba(11,124,130,.16)}

h1,h2,h3,h4{margin:0 0 12px;line-height:1.4;font-weight:800;letter-spacing:-.02em;color:var(--ink)}
h1{font-size:1.55rem} h2{font-size:1.22rem} h3{font-size:1.05rem} h4{font-size:.92rem;color:var(--ink-2)}
.muted{color:var(--muted)} .small{font-size:.82rem;color:var(--muted);line-height:1.65}
.amount,.value,.total-cell,.kpi .value,.mini-stat .value,.point,td .amount,.ltr{font-variant-numeric:tabular-nums}

/* app shell */
.app{min-height:100vh;display:grid;grid-template-columns:280px 1fr}
@media(max-width:880px){.app{grid-template-columns:1fr}}
.sidebar{position:sticky;top:0;height:100vh;padding:20px 16px;background:var(--paper);color:var(--ink);overflow:auto;border-inline-end:3px solid var(--brand);display:flex;flex-direction:column}
@media(max-width:880px){.sidebar{position:relative;height:auto}}
/* ارتفاعِ ثابت تا با تعویضِ کارفرما/پروژه/سناریو کارت جابه‌جا/پرش نکند؛ متن داخلِ همین قاب کوتاه (…) می‌شود */
.side-brand{display:flex;align-items:center;gap:12px;margin-bottom:8px;padding:13px;border-radius:15px;background:var(--softer);border:1px solid var(--line);min-height:104px;box-sizing:border-box}
.side-brand strong{font-size:1.02rem;font-weight:800}
.side-footer{margin-top:auto;font-size:.74rem;line-height:1.7;color:var(--muted);padding:14px 12px;border-radius:13px;background:var(--softer);border:1px solid var(--line)}
.side-footer strong{color:var(--ink)}
.logo-mark{flex:0 0 auto;width:40px;height:40px;border-radius:13px;background:linear-gradient(140deg,var(--brand-3),var(--brand-ink));display:grid;place-items:center;color:#fff;font-weight:900;font-size:1.15rem;box-shadow:var(--shadow-brand);overflow:hidden}
/* نشانِ برند خودش کاشیِ گِرد و گرادیانِ خودش را دارد → قابِ بیرونی نباید پس‌زمینه/گردیِ دوم بگذارد */
.logo-mark.brand-tile{width:44px;height:44px;background:none;box-shadow:none;border-radius:0;overflow:visible}
#brandText{min-width:0;flex:1;overflow:hidden}
/* نام تا ۲ خط و «پروژه·سناریو» تا ۲ خط، بدونِ ارتفاعِ ثابت روی متن تا هیچ خطی بریده/کلیپ نشود.
   ارتفاعِ کلِ کارت با min-height/max-height ثابت می‌ماند (نه با بریدنِ متن) تا با تعویض پرش نکند. */
#brandText strong{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;word-break:break-word;line-height:1.45;font-size:1.02rem;font-weight:800}
#brandText .small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;line-height:1.4;margin-top:3px}
.nav{display:flex;flex-direction:column;gap:4px;margin-top:18px}
/* سرعنوانِ دستهٔ ناوبری */
.nav-group{font-size:.68rem;font-weight:800;color:var(--faint);letter-spacing:.02em;padding:6px 13px 3px;margin-top:12px;border-top:1px solid var(--line-2)}
.nav-group:first-child{margin-top:2px;border-top:0;padding-top:2px}
.nav button{background:transparent;border:0;color:var(--ink2);padding:11px 13px;border-radius:12px;text-align:right;display:flex;align-items:center;gap:11px;cursor:pointer;font-weight:700;font-size:.9rem;width:100%;transition:.15s;position:relative}
/* آیکونِ مربعی: هر آیکونِ ساید‌بار داخلِ یک کاشیِ مربعیِ کاملاً هم‌اندازه (اندازهٔ گلیف هم یکنواخت می‌شود) */
.nav button span:first-child{font-size:16px;line-height:1;width:28px;height:28px;min-width:28px;flex:0 0 28px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;background:var(--soft);border:1px solid var(--line-2);transition:.15s}
.nav button span:first-child>*{max-width:100%;max-height:100%}
.nav button:hover span:first-child,.nav button.active span:first-child{background:var(--brand-soft);border-color:var(--brand-3)}
.nav button:hover{background:var(--soft);color:var(--brand-ink)}
.nav button.active{background:var(--brand-soft);color:var(--brand-ink);box-shadow:inset 0 0 0 1px rgba(26,167,173,.3)}
.nav button.active:before{content:"";position:absolute;right:-16px;top:50%;transform:translateY(-50%);width:3.5px;height:22px;border-radius:99px;background:var(--brand-3)}

.main{min-height:100vh;display:flex;flex-direction:column;min-width:0}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px 30px;flex-wrap:wrap;background:rgba(251,252,254,.82);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}
.topbar h2{margin:0;font-size:1.15rem}
.crumbs{font-size:.8rem;color:var(--muted);margin-top:3px;display:flex;gap:6px;flex-wrap:wrap}
#appBody{padding:30px;max-width:none;width:100%}
@media(max-width:560px){.topbar{padding:16px}#appBody{padding:18px}.live-bar.show{padding:0 18px}}

/* panels / cards */
.panel,.card,.modal-box,.auth-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius)}
.panel,.card{padding:24px;margin-bottom:22px;position:relative}
.panel{box-shadow:var(--shadow-sm)} .card{box-shadow:var(--shadow-xs)}
.panel-title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--line-2);flex-wrap:wrap}
.panel-title h3,.panel-title h4{margin:0;display:flex;align-items:center;gap:9px}
.panel-title h3:before{content:"";width:4px;height:19px;border-radius:99px;background:linear-gradient(180deg,var(--brand-3),var(--brand-ink));flex-shrink:0}
.panel-title p{margin:6px 0 0;font-size:.84rem;color:var(--muted)}

/* grids */
.grid{display:grid;gap:16px}
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.grid-5{display:grid;grid-template-columns:repeat(5,1fr);gap:13px}
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.form-grid.four{grid-template-columns:repeat(4,1fr)}
.span-2{grid-column:span 2} .span-3{grid-column:span 3} .span-4{grid-column:span 4}
.split{display:grid;grid-template-columns:1.6fr 1fr;gap:18px}
.split-form{display:grid;grid-template-columns:340px minmax(0,1fr);gap:18px}
@media(max-width:1024px){.grid-4,.grid-5,.form-grid.four{grid-template-columns:repeat(2,1fr)}}
@media(max-width:980px){.split-form{grid-template-columns:1fr}}
@media(max-width:860px){.grid-2,.grid-3,.split,.form-grid{grid-template-columns:1fr}.span-2,.span-3,.span-4{grid-column:auto}}
@media(max-width:620px){.grid-4,.grid-5{grid-template-columns:1fr}}

/* forms */
.field{display:flex;flex-direction:column;gap:7px;margin-bottom:14px}
.field label{font-size:.8rem;color:var(--ink-2);font-weight:700}
input,select,textarea{width:100%;border:1.5px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--paper);padding:11px 13px;color:var(--ink);outline:none;transition:border-color .16s,box-shadow .16s;font-size:.92rem}
input::placeholder,textarea::placeholder{color:var(--faint)}
textarea{min-height:80px;resize:vertical;line-height:1.7}
input:hover,select:hover,textarea:hover{border-color:#C0C9D5}
input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3.5px rgba(11,124,130,.12)}
select{cursor:pointer}

/* buttons */
.btn{border:0;border-radius:var(--radius-sm);padding:11px 16px;cursor:pointer;font-weight:700;font-size:.9rem;display:inline-flex;gap:8px;align-items:center;justify-content:center;white-space:nowrap;transition:transform .14s,box-shadow .16s,background .16s,border-color .16s}
.btn:active{transform:translateY(0) scale(.985)}
.btn-primary{background:linear-gradient(140deg,var(--brand-3),var(--brand-ink));color:#fff;box-shadow:var(--shadow-brand)}
.btn-primary:hover{transform:translateY(-1.5px);box-shadow:0 11px 26px rgba(11,124,130,.3)}
.btn-secondary{background:var(--paper);color:var(--brand-ink);border:1.5px solid rgba(11,124,130,.28)}
.btn-secondary:hover{background:var(--brand-soft);border-color:var(--brand);transform:translateY(-1px)}
.btn-purple{background:linear-gradient(140deg,#8A6280,var(--brand-2));color:#fff}
.btn-danger{background:var(--bad-bg);color:var(--bad);border:1.5px solid var(--bad-line)}
.btn-danger:hover{background:#F9DEDA}
/* دکمهٔ «سبز» — نشانهٔ اینکه پشتِ ردیف یک الگوی محاسباتی تعریف شده است (هم‌خانوادهٔ btn-danger با رنگِ good) */
.btn-good{background:var(--good-bg);color:var(--good);border:1.5px solid var(--good-line)}
.btn-good:hover{background:#D6F1E4;border-color:var(--good)}
.btn-soft{background:var(--soft);color:var(--ink-2);border:1.5px solid transparent}
.btn-soft:hover{background:#E7ECF3}
.btn-sm{padding:7px 11px;border-radius:9px;font-size:.8rem}
.btn:disabled,.btn:disabled:hover,.btn:disabled:active{background:var(--soft);color:var(--muted);border-color:var(--line);font-weight:500;box-shadow:none;transform:none;cursor:not-allowed;text-shadow:none}

/* chips / pills / status */
.chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;background:var(--soft);color:var(--ink-2);border-radius:99px;font-size:.78rem;font-weight:700;border:1px solid var(--line-2)}
.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:99px;font-size:.74rem;font-weight:800;background:var(--soft);color:var(--ink-2)}
.pill.brand{background:var(--brand-soft);color:var(--brand-ink)}
/* چیپِ «مدل مالی» در نوارِ بالا + دکمهٔ بستنِ آن (ابتدای چیپ = سمتِ راست در RTL) */
.crumb-fin{padding-inline-start:11px;padding-inline-end:6px}
.crumb-x{margin-inline-end:7px;flex:0 0 auto;width:18px;height:18px;padding:0;border:0;border-radius:50%;
  background:rgba(255,255,255,.55);color:var(--brand-ink);font-size:15px;font-weight:700;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
  box-shadow:inset 0 0 0 1px rgba(11,124,130,.18);transition:background .15s,color .15s,box-shadow .15s,transform .15s}
.crumb-x:hover{background:var(--bad);color:#fff;box-shadow:inset 0 0 0 1px var(--bad);transform:scale(1.08)}
.crumb-x:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(192,57,43,.28)}
.status-good,.status-warn,.status-bad{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:99px;font-size:.76rem;font-weight:800}
.status-good:before,.status-warn:before,.status-bad:before{content:"";width:7px;height:7px;border-radius:50%}
.status-good{background:var(--good-bg);color:var(--good);border:1px solid var(--good-line)} .status-good:before{background:var(--good)}
.status-warn{background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-line)} .status-warn:before{background:var(--warn)}
.status-bad{background:var(--bad-bg);color:var(--bad);border:1px solid var(--bad-line)} .status-bad:before{background:var(--bad)}

/* alerts */
.alert,.hint{border-radius:var(--radius-sm);padding:13px 15px;font-size:.85rem;line-height:1.7;border:1px solid var(--line);background:var(--softer);color:var(--ink-2)}
.hint{background:var(--brand-soft);border-color:#C5E6E6;color:var(--brand-ink);border-inline-start:3px solid var(--brand)}
.alert.good{background:var(--good-bg);border-color:var(--good-line);color:#0A6B41;border-inline-start:3px solid var(--good)}
.alert.warn{background:var(--warn-bg);border-color:var(--warn-line);color:#8C5D14;border-inline-start:3px solid var(--warn)}
.alert.bad{background:var(--bad-bg);border-color:var(--bad-line);color:#9A2D22;border-inline-start:3px solid var(--bad)}
.good{color:var(--good)} .warn{color:var(--warn)} .bad{color:var(--bad)}

/* tables */
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);box-shadow:var(--shadow-xs);margin-bottom:8px}
table{width:100%;border-collapse:collapse;font-size:.85rem}
thead th{background:var(--softer);text-align:right;padding:11px 13px;font-weight:800;font-size:.76rem;color:var(--ink-2);white-space:nowrap;border-bottom:1.5px solid var(--line);position:sticky;top:0}
/* گزارش‌های پاپ‌آپ: تیترِ ستون‌ها وسط‌چین تا با محتوای وسط‌چینِ رکوردها هم‌راستا شود؛ ستونِ اول (برچسبِ دوره/سرفصل/…) راست‌چین می‌ماند تا با دادهٔ راست‌چینِ خودش هم‌راستا بماند. */
.modal-backdrop .table-wrap thead th:not(:first-child){text-align:center}
/* جدولِ مخارج: همهٔ عناوینِ ستون‌ها وسط‌چین (سرستون‌های دوسطری هم وسط می‌نشینند) */
.cost-tbl thead th{text-align:center;vertical-align:middle}
tbody td{padding:10px 13px;border-bottom:1px solid var(--line-2);vertical-align:middle;color:var(--ink-2)}
tbody tr{transition:background .12s}
tbody tr:hover{background:var(--softer)}
tbody tr:last-child td{border-bottom:none}
/* ردیفِ «جمع» جدول‌ها: خاکستریِ ملایم، هم‌ارتفاعِ ردیف‌های بدنه و عددهای وسط‌چینِ tabular */
tfoot td{background:var(--softer);color:var(--ink-2);font-weight:700;padding:10px 13px;border-top:1px solid var(--line);border-bottom:none}
tfoot td:not(:first-child){text-align:center;font-variant-numeric:tabular-nums}
tfoot td:first-child{color:var(--ink)}
table .amount,table .value,.total-cell{font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink)}
.total-cell{background:var(--brand-soft);color:var(--brand-ink);font-weight:800}
td input,td select{padding:7px 9px;font-size:.82rem;border-radius:8px}
/* ★ جدول‌های «گزارش جامع سناریو» (.rep-tbl) — خوانایی در جدولِ پرستون و اسکرول‌دار.
   سرستون از قاعدهٔ عمومیِ thead چسبان است؛ این‌جا ستونِ «دوره» هم هنگام اسکرولِ افقی سرِ جا می‌ماند،
   نوارِ «جمع کل» بالای بدنه برجسته می‌شود، و صفرها کم‌رنگ می‌شوند تا عددهای واقعی به چشم بیایند. */
.rep-tbl tbody tr:nth-child(even of :not(.sum-row)){background:color-mix(in srgb, var(--softer) 55%, transparent)}
.rep-tbl tbody tr:hover{background:var(--softer)}
/* ستونِ اولِ ثابت (دوره) — روی اسکرولِ افقی گم نمی‌شود */
.rep-tbl th:first-child,.rep-tbl td:first-child{position:sticky;inset-inline-start:0;z-index:2;background:var(--paper);font-weight:700;color:var(--ink);box-shadow:1px 0 0 var(--line-2)}
.rep-tbl thead th:first-child{z-index:4;background:var(--softer)}
.rep-tbl tbody tr:hover td:first-child{background:var(--softer)}
/* نوارِ «جمع کل» */
.rep-tbl tr.sum-row td{background:var(--brand-soft);color:var(--brand-ink);font-weight:800;border-bottom:1.5px solid var(--line)}
.rep-tbl tr.sum-row td:first-child{background:var(--brand-soft);color:var(--brand-ink);z-index:3}
.rep-tbl tbody tr.sum-row:hover td{background:var(--brand-soft)}
/* صفرها کم‌رنگ · اعدادِ منفی قرمز (در هر دو ستونِ جریان نقدی) */
.rep-tbl td.zero{color:var(--muted);opacity:.55}
.rep-tbl td.neg{color:var(--bad);font-weight:700}
.rep-tbl td.total-cell.neg{color:var(--bad)}
.rep-tbl tbody td:not(:first-child){text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}
/* خطِ «ستون‌های پنهان‌شده» — حذف باید دیده شود، نه خاموش باشد */
.rep-hidden{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;margin:0 2px 8px;padding:7px 10px;border:1px dashed var(--line-strong);border-radius:10px;background:var(--soft);color:var(--muted)}
.rep-hidden-names{color:var(--ink-2);font-weight:700;overflow:hidden;text-overflow:ellipsis}
.rep-hidden-hint{color:var(--muted);opacity:.85}
/* چک‌باکس‌های داخلِ جدول: قاعدهٔ بالا (padding مخصوصِ ورودی‌های متنی) اندازهٔ چک‌باکسِ ردیف‌ها را با
   سرستون ناهم‌اندازه می‌کرد. این‌جا همه‌شان یک اندازه و کمی بزرگ‌تر از پیش‌فرضِ مرورگر می‌شوند. */
th input[type="checkbox"],td input[type="checkbox"]{width:16px;height:16px;padding:0;margin:0;flex:none;border-radius:4px;vertical-align:middle;cursor:pointer}

/* selectable rows */
.row-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);margin-bottom:10px;cursor:pointer;transition:.15s}
.row-item:hover{border-color:rgba(11,124,130,.4);box-shadow:var(--shadow-sm);transform:translateX(-2px)}
.row-item.selected{border-color:var(--brand);background:linear-gradient(135deg,var(--brand-soft),var(--paper));box-shadow:inset 0 0 0 1px var(--brand)}

/* KPI */
.kpi,.mini-stat{background:linear-gradient(160deg,var(--paper) 0%,var(--paper-2) 100%);border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 16px;box-shadow:var(--shadow-xs);transition:.16s;position:relative;overflow:hidden}
.kpi:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--brand-3),var(--brand-2));opacity:.85}
.kpi:hover,.mini-stat:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.kpi .label,.mini-stat .label{font-size:.78rem;color:var(--muted);font-weight:700;margin-bottom:7px}
.kpi .value{font-size:1.5rem;font-weight:800;color:var(--ink);line-height:1.2;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.kpi .hint{font-size:.74rem;color:var(--faint);margin-top:5px}
.kpi.good:before{background:linear-gradient(90deg,var(--good),#3FB984)} .kpi.good .value{color:var(--good)}
.kpi.warn:before{background:linear-gradient(90deg,var(--warn),#E0A53A)} .kpi.warn .value{color:var(--warn)}
.kpi.bad:before{background:linear-gradient(90deg,var(--bad),#E0695B)} .kpi.bad .value{color:var(--bad)}
.mini-stat{padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.mini-stat .value{font-size:1.05rem;font-weight:800}

/* tabs (sub) */
.subtabs{display:flex;gap:4px;flex-wrap:wrap;background:var(--soft);padding:5px;border-radius:13px;margin-bottom:18px;border:1px solid var(--line-2)}
.subtabs button{border:0;background:transparent;padding:9px 15px;border-radius:9px;cursor:pointer;font-weight:700;font-size:.85rem;color:var(--muted)}
.subtabs button:hover{color:var(--ink-2)}
.subtabs button.active{background:var(--paper);color:var(--brand-ink);box-shadow:var(--shadow-xs)}
.chips[data-tenant-tabs] .btn.active{background:linear-gradient(140deg,var(--brand-3),var(--brand-ink));color:#fff}
/* تب‌های سفارشیِ کاربر (افزوده‌شده با +) — رنگِ متمایز از تب‌های ثابت */
.subtabs button.fin-tab-custom{color:#8e44ad;background:rgba(142,68,173,.08);box-shadow:inset 0 0 0 1px rgba(142,68,173,.25)}
.subtabs button.fin-tab-custom:hover{color:#7d3c98;background:rgba(142,68,173,.15)}
.subtabs button.fin-tab-custom.active{background:var(--paper);color:#7d3c98;box-shadow:var(--shadow-xs),inset 0 0 0 1.5px rgba(142,68,173,.6)}
/* تبِ «تأمین مالی از محل بدهی» — رنگِ آبیِ متمایز (مثلِ تب‌های مشارکت، ولی هویتِ آبیِ بدهی)، جدا از تب‌های ثابت */
.subtabs button.fin-tab-debt{color:#2c5fa8;background:rgba(44,95,168,.08);box-shadow:inset 0 0 0 1px rgba(44,95,168,.25)}
.subtabs button.fin-tab-debt:hover{color:#24518f;background:rgba(44,95,168,.15)}
.subtabs button.fin-tab-debt.active{background:var(--paper);color:#24518f;box-shadow:var(--shadow-xs),inset 0 0 0 1.5px rgba(44,95,168,.6)}
/* دکمهٔ دایره‌ایِ «+» انتهای ردیفِ زیرتب‌ها (افزودن تب جدید) */
.subtabs .subtab-add{width:26px;height:26px;min-width:26px;padding:0;border-radius:50%;border:1.5px dashed var(--line-strong);background:transparent;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;font-size:1.15rem;font-weight:700;line-height:1;cursor:pointer;align-self:center;transition:border-color .12s,color .12s,background .12s}
.subtabs .subtab-add:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}

/* آکاردئونِ تفکیکِ تسهیلات (per-facility per-period): سرصفحهٔ رنگِ برند + مثلثِ چرخان */
details.facacc{border:1px solid var(--line-2);border-radius:11px;overflow:hidden;background:var(--softer);transition:border-color .15s,box-shadow .15s}
details.facacc[open]{border-color:var(--brand-3);box-shadow:var(--shadow-xs)}
details.facacc>summary{list-style:none;cursor:pointer;padding:11px 14px;display:flex;align-items:center;gap:9px;font-weight:700;color:var(--brand-ink);background:var(--brand-soft);user-select:none;transition:filter .15s}
details.facacc>summary::-webkit-details-marker{display:none}
details.facacc>summary::before{content:"\25BE";display:inline-block;flex:none;color:var(--brand);font-size:.82em;transition:transform .18s;transform:rotate(90deg)}
details.facacc[open]>summary::before{transform:rotate(0)}
details.facacc>summary:hover{filter:brightness(.97)}
details.facacc .facacc-sum{font-weight:500;color:var(--brand-ink);opacity:.72}
details.facacc .facacc-body{padding:6px 14px 12px}
details.facacc .facacc-body .table-wrap{margin-top:0}

/* empty / notes */
.empty,.readonly-note{font-size:.83rem;color:var(--muted);padding:16px;border-radius:var(--radius-sm);background:var(--softer);border:1px dashed var(--line-strong);text-align:center}
.empty{padding:36px 20px}
.empty strong{display:block;color:var(--ink-2);font-size:1rem;margin-bottom:6px}
.danger-zone{border:1px solid var(--bad-line);background:var(--bad-bg);border-radius:var(--radius-sm);padding:16px;margin-top:16px}
.danger-zone h4{color:var(--bad)}

/* timeline */
.timeline{display:flex;flex-direction:column;padding-inline-start:8px}
.timeline .point{position:relative;padding:12px 0;padding-inline-start:26px;border-inline-start:2px solid var(--line-strong);margin-inline-start:6px}
.timeline .point:before{content:"";position:absolute;inset-inline-start:-7px;top:16px;width:12px;height:12px;border-radius:50%;background:var(--paper);border:3px solid var(--brand)}
.date{font-size:.8rem;color:var(--muted)}

/* chart */
.chart{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-xs)}
.chart svg{width:100%;height:auto;display:block;overflow:visible}

/* modal */
.modal-backdrop{position:fixed;inset:0;background:rgba(14,27,42,.5);backdrop-filter:blur(6px);display:none;align-items:flex-start;justify-content:center;z-index:200;padding:42px 20px;overflow-y:auto}
.modal-backdrop.show{display:flex}
.modal-box{max-width:680px;width:100%;padding:28px;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-height:calc(100vh - 84px);overflow-y:auto}
.modal-backdrop.modal-wide .modal-box{max-width:1080px}
.modal-backdrop.modal-mid .modal-box{max-width:900px}
/* کارتِ هر جزءِ وصول (پیش‌پرداخت/تحویل/سند) — خوانا و مرتب */
.rec-amt-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px}
@media(max-width:640px){.rec-amt-grid{grid-template-columns:1fr}}
.rec-amt-item{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 13px}
.rec-amt-item>label{display:block;margin-bottom:7px}
.period-anchor-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;direction:rtl}
.period-anchor-pair>.field{grid-column:1/-1}
.period-anchor-side{min-width:0;padding:18px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--softer)}
.period-anchor-side h4{margin:0 0 16px;color:var(--brand)}
.period-anchor-side .field{min-width:0}
.period-anchor-side select{width:100%;min-width:0}
.period-anchor-stops{display:flex;gap:8px;align-items:center;margin:14px 0;font-size:12px}
.period-anchor-stops input{width:auto}
.period-anchor-help{font-size:12px;line-height:1.9;color:var(--muted)}
@media(max-width:720px){.period-anchor-pair{grid-template-columns:1fr}.period-anchor-side{padding:12px}}
.rec-amount-form{box-shadow:none;background:var(--softer);margin-top:12px}
.rec-amount-form .rec-mode-field{max-width:380px;margin:0 0 18px}
.rec-amount-form .rec-payment-title{font-size:13px;font-weight:750;color:var(--ink)}
.rec-amount-form .rec-amt-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.rec-amount-form .rec-amt-item{min-width:0;padding:16px}
.rec-amount-form .rec-amt-item>select{margin-bottom:10px}
.rec-amount-form .rec-value-unit{display:flex;align-items:center;gap:8px;min-width:0}
.rec-amount-form .rec-value-unit input{width:100%;min-width:0;flex:1;text-align:center}
.rec-amount-form .rec-value-unit>span{font-size:11px;color:var(--muted);max-width:80px;line-height:1.6}
.rec-install-panel{margin-top:18px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper)}
.rec-install-panel h4{margin:0;font-size:13px}
.rec-form-help{font-size:12px;color:var(--muted);line-height:1.9;margin:6px 0 14px}
.rec-install-fields{display:flex;align-items:flex-end;flex-wrap:wrap;gap:12px}
.rec-install-fields>.field{margin:0;flex:1 1 200px;min-width:0}
.rec-install-fields [data-action="rec-fixed-window"]{min-height:44px;width:100%}
.rec-schedule-note{margin:14px 0 0;padding:10px 12px;background:var(--softer);border-inline-start:3px solid var(--brand);border-radius:6px}
.rec-amount-form input:focus-visible,.rec-amount-form select:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
@media(max-width:640px){.rec-amount-form .rec-amt-grid{grid-template-columns:1fr}.rec-amount-form .rec-mode-field{max-width:none}.rec-install-fields>.field{flex:1 1 100%}.rec-install-panel,.rec-amount-form .rec-amt-item{padding:12px}}
.sr-table th,.sr-table td{white-space:nowrap;padding:7px 9px}
.sr-table td .small,.sr-table th .small{opacity:.6}
.modal-backdrop.modal-full{padding:12px}
.modal-backdrop.modal-full .modal-box{max-width:none;width:100%;height:calc(100vh - 24px);max-height:calc(100vh - 24px)}
/* گزارشِ تسهیلات: اتوفیتِ جدول تا نیازی به اسکرولِ افقی نباشد (ستون‌ها به عرضِ ظرف؛ متن/سرستون می‌شکند؛ فونتِ فشرده). */
.debt-rep-fit .table-wrap{overflow-x:auto}
.debt-rep-fit table{width:100%;table-layout:fixed;font-size:.78rem}
.debt-rep-fit th,.debt-rep-fit td{padding:5px 4px;white-space:normal;word-break:break-word;overflow-wrap:anywhere}
.debt-rep-fit th{font-size:.72rem;line-height:1.35}
/* در تمام‌صفحه، جدول فضای بیشتری دارد و اعداد راحت‌تر جا می‌شوند */
.modal-full .debt-rep-fit table{font-size:.82rem}

/* toast */
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:12px 22px;border-radius:13px;box-shadow:var(--shadow-lg);z-index:1000;font-size:.88rem;font-weight:600;opacity:0;pointer-events:none;transition:.25s;max-width:90vw}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* مرکز هشدارها (نوار بالا) */
.warn-center{position:relative;display:inline-flex}
.warn-btn{display:inline-flex;align-items:center;gap:5px;border:1.5px solid var(--line-2);background:var(--paper);border-radius:99px;padding:5px 12px;cursor:pointer;font-weight:700;font-size:.78rem;color:var(--ink-2);transition:.15s}
.warn-btn:hover{border-color:var(--brand);transform:translateY(-1px)}
.warn-btn.warn{border-color:rgba(224,164,88,.55);color:var(--warn);background:rgba(224,164,88,.08)}
.warn-btn.bad{border-color:rgba(214,90,74,.55);color:var(--bad);background:rgba(214,90,74,.08)}
.warn-btn.ok{color:var(--good)}
.warn-btn .warn-count{min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:var(--ink);color:#fff;font-size:.7rem;display:inline-flex;align-items:center;justify-content:center}
.warn-btn.warn .warn-count{background:var(--warn)} .warn-btn.bad .warn-count{background:var(--bad)} .warn-btn.ok .warn-count{background:var(--good)}
.warn-pop{position:absolute;top:calc(100% + 8px);left:0;width:380px;max-width:88vw;max-height:70vh;overflow:auto;background:var(--paper);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow-lg);z-index:130;padding:8px}
.warn-pop.hidden{display:none}
.warn-pop-head{font-weight:800;padding:6px 8px 10px;border-bottom:1px solid var(--line-2);margin-bottom:8px;font-size:.85rem}
.warn-item{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:9px 10px;border-radius:9px;border-inline-start:3px solid var(--warn);background:var(--softer);margin-bottom:6px}
.warn-item.bad{border-inline-start-color:var(--bad)}
.warn-item-txt{flex:1;min-width:0}
.warn-item-txt .small{color:var(--muted);line-height:1.6;margin-top:2px}
.warn-item .btn{flex-shrink:0}
.warn-empty{padding:16px 8px;color:var(--good);text-align:center;font-weight:700}

/* دستگیرهٔ کشیدن ردیف‌های زمان‌بندی */
.tl-drag{cursor:grab;color:var(--faint);text-align:center;user-select:none;font-size:1rem;line-height:1}
.tl-drag:active{cursor:grabbing}
.tl-drag:hover{color:var(--brand)}
tr[data-dnd]{transition:box-shadow .12s}
.tl-drag-over{box-shadow:inset 0 3px 0 -1px var(--brand),inset 0 -3px 0 -1px var(--brand);background:var(--brand-soft)!important}

.report-paper{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:30px 32px;box-shadow:var(--shadow-sm);max-width:960px;margin:0 auto;line-height:1.6}

/* ============ گزارش مفصل (rep-*) ============ */
.rep-full{line-height:1.85}
.rep-cover{text-align:center;padding:20px 0 24px;border-bottom:3px double var(--brand);margin-bottom:6px}
.rep-title{margin:0;font-size:1.5rem;font-weight:800;color:var(--brand-ink);letter-spacing:-.01em}
.rep-metaline{margin-top:12px;font-size:.95rem}
.rep-status{display:inline-block;margin-top:14px;padding:7px 18px;border-radius:99px;font-weight:800;font-size:.9rem;border:1.5px solid}
.rep-status.good{color:var(--good);background:rgba(15,157,88,.08);border-color:rgba(15,157,88,.4)}
.rep-status.warn{color:var(--warn);background:rgba(224,164,88,.1);border-color:rgba(224,164,88,.45)}
.rep-status.bad{color:var(--bad);background:rgba(214,90,74,.08);border-color:rgba(214,90,74,.4)}
.rep-sec{break-inside:avoid}
.rep-h{margin:0 0 10px;font-size:1.12rem;font-weight:800;color:var(--brand-ink);padding-bottom:7px;border-bottom:2px solid var(--brand-soft)}
.rep-sub{font-weight:700;font-size:.9rem;color:var(--ink-2);margin:0 0 6px}
/* گزارش روی صفحه: فشرده و خوانا (هماهنگ با نسخهٔ چاپی) — عناوین کوچک‌تر، اعداد یک‌خطیِ جمع‌وجور */
.rep-full .rep-title{font-size:1.32rem}
.rep-full .rep-h{font-size:1rem}
.rep-full h4,.rep-full .rep-sub{font-size:.85rem}
.rep-full p{margin:6px 0}
.rep-full .kpi{padding:12px 13px 10px}
.rep-full .kpi .value{font-size:1.18rem}
.rep-full .kpi .label{font-size:.72rem;margin-bottom:4px}
.rep-full .kpi .hint{font-size:.68rem}
.rep-full table{font-size:.8rem}
.rep-full th,.rep-full td{padding:5px 8px;white-space:nowrap;font-variant-numeric:tabular-nums}
.rep-full .rep-kv td{padding:4px 9px}
.rep-kv table{width:100%}
.rep-kv td{padding:6px 10px;border-bottom:1px solid var(--line)}
.rep-ul{margin:4px 0;padding-inline-start:20px}
.rep-ul li{margin-bottom:5px}
.rep-full .card{break-inside:avoid}
.rep-footer{margin-top:28px;padding-top:16px;border-top:2px solid var(--brand-soft)}

/* ============ مدیریت دانش: آیکونِ راهنما + تولتیپ + یادداشت‌ها ============ */
.km-btn{display:inline-flex;align-items:center;justify-content:center;position:relative;flex:0 0 auto;padding:2px;margin-inline-start:7px;border:0;background:transparent;border-radius:8px;cursor:pointer;line-height:0;vertical-align:middle;opacity:.72;transition:opacity .15s,transform .15s,background .15s}
.km-btn:hover,.km-btn:focus-visible{opacity:1;transform:translateY(-1px);background:var(--brand-soft);outline:none}
.km-btn:focus-visible{box-shadow:0 0 0 3px rgba(11,124,130,.2)}
.km-btn.has-notes{opacity:1}
.km-svg{width:17px;height:17px;isolation:isolate;filter:drop-shadow(0 1px 1.5px rgba(16,32,46,.14))}
.km-badge{position:absolute;top:-4px;inset-inline-end:-5px;min-width:15px;height:15px;padding:0 3px;border-radius:99px;background:var(--brand-2);color:#fff;font-size:.62rem;font-weight:800;line-height:15px;text-align:center;box-shadow:0 1px 3px rgba(16,32,46,.28)}
/* نشانِ جمع‌نشده: وقتی کاربر «نمایش متنِ راهنما» را روشن گذاشته، متن می‌ماند و آیکون کنارش می‌آید */
.km-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px 3px 4px;border-radius:99px;background:var(--softer);border:1px solid var(--line);font-size:.75rem;font-weight:700;color:var(--muted);vertical-align:middle}
.km-chip .km-btn{margin:0}
.panel-title h3 .km-btn,.panel-title h4 .km-btn{margin-inline-start:8px}
.field label .km-btn{margin-inline-start:5px}
.km-tip{position:fixed;z-index:1200;max-width:min(420px,92vw);padding:11px 14px;border-radius:var(--radius-sm);background:var(--ink);color:#F2F5F9;font-size:.81rem;line-height:1.75;font-weight:500;box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transition:opacity .14s;pointer-events:none;text-align:start}
.km-tip.show{opacity:1;visibility:visible}
.km-tip.bad{background:#922b21;color:#fff}
.km-notes{display:flex;flex-direction:column;gap:10px}
.km-note{border:1px solid var(--line);background:var(--softer);border-radius:var(--radius-sm);padding:11px 13px}
.km-note.editing{background:var(--paper);border-color:var(--brand)}
.km-note-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:6px}
.km-note-act{margin-inline-start:auto;display:inline-flex;gap:6px}
.km-note-body{font-size:.86rem;line-height:1.8;color:var(--ink-2);white-space:pre-wrap;overflow-wrap:anywhere}

/* ============ چاپ / PDF (عمودی و افقی) ============ */
@media print{
  .km-btn,.km-chip,.km-tip{display:none!important}
  .sidebar,.topbar,.no-print,.live-bar{display:none!important}
  .app,.main{display:block}
  #appBody{padding:0!important;max-width:none}
  .panel{box-shadow:none;border:none;padding:0;margin:0}
  .report-paper{box-shadow:none;border:none;max-width:none;padding:0;margin:0}
  .card,.kpi,.mini-stat{box-shadow:none!important}
  body{background:#fff}
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  /* بخش‌های بلند (جدولِ ماهانه) اجازهٔ شکستن بین صفحه‌ها دارند؛ کارت‌ها/کاورِ کوتاه یکجا می‌مانند */
  .rep-sec{break-inside:auto}
  .rep-cover,.kpi,.rep-kv,.rep-status{break-inside:avoid}
  .rep-h{break-after:avoid}
  .rep-footer{break-inside:avoid}
  /* جدول‌ها: سرستون در هر صفحه تکرار شود، هر ردیف نشکند، کلِ جدول چاپ شود */
  .table-wrap{overflow:visible!important;max-height:none!important;border:none}
  table{break-inside:auto;width:100%!important} thead{display:table-header-group} tfoot{display:table-footer-group} tr{break-inside:avoid}
  /* ── گزارش: تراکمِ خوانا برای A4، عناوینِ کوچک‌تر، و اعدادِ کامل (بدونِ بریدگی/سه‌نقطه) ── */
  .report-paper,.rep-full{line-height:1.5;font-size:9pt}
  .rep-full .rep-title,.rep-full h1{font-size:15pt;line-height:1.25}
  .rep-full h2{font-size:12.5pt}
  .rep-full .rep-h,.rep-full h3{font-size:11pt;padding-bottom:4px;margin-bottom:6px}
  .rep-full h4,.rep-full .rep-sub{font-size:9pt}
  .rep-cover{padding:4px 0 12px;margin-bottom:4px}
  .rep-metaline{font-size:9pt;margin-top:8px}
  .rep-status{font-size:8.6pt;margin-top:8px;padding:4px 12px}
  .rep-sec{margin-top:14px!important}
  .rep-full .kpi{padding:8px 10px 7px!important}
  .rep-full .kpi .label{font-size:7.2pt;margin-bottom:3px}
  .rep-full .kpi .value{font-size:11.5pt;line-height:1.15}
  .rep-full .kpi .hint{font-size:6.8pt;margin-top:2px}
  .rep-full p{margin:4px 0} .rep-ul li{margin-bottom:2px} .rep-kv td{padding:3px 8px}
  /* جدول‌ها: چیدمانِ خودکار تا ستون‌ها به‌اندازهٔ عدد باز شوند؛ عدد یک‌خطی و کامل — هیچ‌وقت با «…» بریده نشود */
  .rep-full table{font-size:7.6pt;table-layout:auto;width:100%!important}
  .rep-full th,.rep-full td{padding:2px 5px;white-space:nowrap;overflow:visible;text-overflow:clip}
  .rep-full .grid-5{grid-template-columns:repeat(3,1fr)!important}
  /* افقی: فضای بیشتر → فونتِ کمی بزرگ‌تر و KPI پنج‌ستونه */
  html[data-print-orient="landscape"] .rep-full table{font-size:8.6pt}
  html[data-print-orient="landscape"] .rep-full .kpi .value{font-size:12.5pt}
  html[data-print-orient="landscape"] .rep-full .grid-5{grid-template-columns:repeat(5,1fr)!important}
  /* نمودارها: هر نمودار یکجا در یک صفحه بماند و ارتفاعِ چاپی فشرده‌تر */
  .rep-charts .card{break-inside:avoid;margin-bottom:10px!important;padding:8px 10px!important}
  .rep-charts .card>div{height:200px!important}
  html[data-print-orient="landscape"] .rep-charts .card>div{height:240px!important}
  @page{margin:12mm}
}

/* ============ تم‌های رنگی (data-theme روی <html>) ============ */
html[data-theme="blue"]{ --brand:#1F6FE0; --brand-ink:#1657B8; --brand-2:#4C5B8A; --brand-3:#4C93F5; --brand-soft:#E7F0FE; --brand-soft-2:#EAECF6; --accent:#2E86DE; --shadow-brand:0 8px 22px rgba(31,111,224,.22); --glow-1:rgba(31,111,224,.08); --glow-2:rgba(76,91,138,.07); }
html[data-theme="violet"]{ --brand:#6C5CE7; --brand-ink:#5346C4; --brand-2:#6E4B84; --brand-3:#8F82F0; --brand-soft:#ECEAFD; --brand-soft-2:#F0EAF6; --accent:#8E7CFF; --shadow-brand:0 8px 22px rgba(108,92,231,.22); --glow-1:rgba(108,92,231,.09); --glow-2:rgba(110,75,132,.07); }
html[data-theme="green"]{ --brand:#0E8A53; --brand-ink:#0A6E42; --brand-2:#4B6E52; --brand-3:#26A96C; --brand-soft:#E6F6EE; --brand-soft-2:#E9F1EB; --accent:#1FA96C; --shadow-brand:0 8px 22px rgba(14,138,83,.22); --glow-1:rgba(14,138,83,.08); --glow-2:rgba(75,110,82,.07); }
html[data-theme="plum"]{ --brand:#9B3B72; --brand-ink:#7C2E5B; --brand-2:#6E4B66; --brand-3:#B95C92; --brand-soft:#F7E9F1; --brand-soft-2:#F3E9EF; --accent:#C2568F; --shadow-brand:0 8px 22px rgba(155,59,114,.22); --glow-1:rgba(155,59,114,.09); --glow-2:rgba(110,75,102,.07); }
html[data-theme="orange"]{ --brand:#D9822B; --brand-ink:#B26A1E; --brand-2:#8A6B4B; --brand-3:#EDA24E; --brand-soft:#FCEFDD; --brand-soft-2:#F6EEE4; --accent:#E08A2E; --shadow-brand:0 8px 22px rgba(217,130,43,.22); --glow-1:rgba(217,130,43,.09); --glow-2:rgba(138,107,75,.07); }
html[data-theme="red"]{ --brand:#D0392B; --brand-ink:#A82C20; --brand-2:#8A4B4B; --brand-3:#E0685C; --brand-soft:#FCE9E7; --brand-soft-2:#F6E9E9; --accent:#D9534F; --shadow-brand:0 8px 22px rgba(208,57,43,.22); --glow-1:rgba(208,57,43,.09); --glow-2:rgba(138,75,75,.07); }
html[data-theme="slate"]{ --brand:#51637A; --brand-ink:#3D4C60; --brand-2:#5A6472; --brand-3:#6E819A; --brand-soft:#EBEFF5; --brand-soft-2:#EDEFF3; --accent:#64748B; --shadow-brand:0 8px 22px rgba(81,99,122,.22); --glow-1:rgba(81,99,122,.09); --glow-2:rgba(90,100,114,.06); }

/* حالت تیره */
html[data-theme="dark"]{
  --bg:#0E1520; --bg-grad-1:#0C121C; --bg-grad-2:#111A26;
  --paper:#182432; --card:#182432; --paper-2:#1C2A3A; --soft:#1E2C3C; --softer:#1A2734;
  --ink:#E8EDF3; --ink2:#B4C0CE; --ink-2:#B4C0CE; --muted:#8A99AB; --ink3:#8A99AB; --faint:#6D7C8E;
  --line:#28374A; --line-2:#233141; --line-strong:#33465C;
  --brand:#2AB3BA; --brand-ink:#7FE3E8; --brand-3:#43C7CD; --brand-soft:#123138; --brand-soft-2:#241E2C;
  --good-bg:#123024; --warn-bg:#332813; --bad-bg:#331E1B;
  --basedate:#8CB8F5; --basedate-bg:#182A44; --basedate-line:#31507C;
  --glow-1:rgba(42,179,186,.10); --glow-2:rgba(110,75,102,.08);
  --shadow-xs:0 1px 2px rgba(0,0,0,.3); --shadow-sm:0 2px 8px rgba(0,0,0,.35); --shadow-md:0 12px 28px rgba(0,0,0,.45); --shadow-lg:0 18px 50px rgba(0,0,0,.55);
}
html[data-theme="dark"] body{-webkit-font-smoothing:auto}
html[data-theme="dark"] thead th{background:var(--soft)}
html[data-theme="dark"] ::-webkit-scrollbar-thumb{background:#33465C}

/* ---- نوار زندهٔ محاسبات ---- */
.live-bar{display:none}
.live-bar.show{display:block;position:sticky;top:0;z-index:20;padding:0 30px;margin:0 0 14px;animation:lbfade .18s ease}
.chart-card:fullscreen{background:var(--paper);padding:24px 28px;display:flex;flex-direction:column}
.chart-card:fullscreen .chart-box{height:auto!important;flex:1;min-height:0}
.chart-card:fullscreen .panel-title h4{font-size:1.15rem}
@keyframes lbfade{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.lb-inner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;padding:10px 16px;background:linear-gradient(90deg,var(--brand-soft),var(--paper));border:1px solid var(--line);border-inline-start:4px solid var(--brand);border-radius:12px;box-shadow:var(--shadow-sm);cursor:pointer}
.lb-inner:hover{border-color:var(--brand)}
.lb-item{display:flex;flex-direction:column;line-height:1.25;min-width:70px}
.lb-l{font-size:.68rem;color:var(--muted);font-weight:700}
.lb-v{font-size:1rem;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.lb-item.good .lb-v{color:var(--good)} .lb-item.bad .lb-v{color:var(--bad)}
.lb-more{margin-inline-start:auto;font-size:.78rem;font-weight:800;color:var(--brand-ink);white-space:nowrap}
/* ★ پرشِ سریع بینِ فرم‌ها (public/js/jumpTo.js): کارتِ مقصد یک لحظه برجسته می‌شود تا چشم پیدایش کند */
.fs-jump-flash{animation:fsJumpFlash 1.5s ease-out 1}
@keyframes fsJumpFlash{0%{box-shadow:0 0 0 0 var(--brand-3,#0B7C82)}18%{box-shadow:0 0 0 4px var(--brand-soft,#E4F4F4)}100%{box-shadow:0 0 0 0 rgba(0,0,0,0)}}
@media(prefers-reduced-motion:reduce){.fs-jump-flash{animation:none;outline:2px solid var(--brand-3,#0B7C82);outline-offset:2px}}
/* ★ «کاربری» چندگزینه‌ای (public/js/multiUse.js): خودِ کادر دکمهٔ افزودن است و فهرست زیرش باز می‌شود */
.mu-wrap{position:relative}
.mu-box{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:38px;transition:border-color .12s,box-shadow .12s}
.mu-box:hover{border-color:var(--brand-3)}
.mu-box:focus-visible{outline:none;border-color:var(--brand-ink);box-shadow:0 0 0 3px var(--brand-soft)}
.mu-box.mu-open{border-color:var(--brand-ink);box-shadow:0 0 0 3px var(--brand-soft)}
.mu-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 6px 3px 9px;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:.76rem;font-weight:800;white-space:nowrap}
.mu-x{border:0;background:transparent;color:inherit;cursor:pointer;font-weight:900;line-height:1;padding:0 2px;opacity:.65}
.mu-x:hover{opacity:1;color:var(--bad)}
.mu-plus{margin-inline-start:auto;font-size:.72rem;font-weight:800;color:var(--brand-ink);white-space:nowrap;opacity:.85}
.mu-box:hover .mu-plus,.mu-box.mu-open .mu-plus{opacity:1}
.mu-empty{font-size:.74rem;color:var(--muted)}
.mu-hint{font-size:.66rem;color:var(--muted);font-weight:600}
/* فهرستِ بازشو — روی بقیهٔ فرم می‌نشیند و با کلیکِ بیرون/Esc بسته می‌شود */
.mu-menu{position:absolute;inset-inline-start:0;inset-inline-end:0;top:calc(100% + 4px);z-index:40;max-height:220px;overflow:auto;padding:5px;border:1px solid var(--line-strong,#cfd6e0);border-radius:10px;background:var(--paper);box-shadow:var(--shadow-lg,0 10px 30px rgba(16,32,58,.16))}
.mu-opt{display:block;width:100%;text-align:start;border:0;background:transparent;padding:8px 10px;border-radius:7px;font:inherit;font-size:.8rem;color:var(--ink);cursor:pointer}
.mu-opt:hover,.mu-opt:focus-visible{background:var(--brand-soft);color:var(--brand-ink);outline:none}
.lb-live{width:8px;height:8px;border-radius:50%;background:var(--good);box-shadow:0 0 0 0 var(--good);animation:lbpulse 1.6s infinite}
@keyframes lbpulse{0%{box-shadow:0 0 0 0 rgba(14,138,83,.4)}70%{box-shadow:0 0 0 6px rgba(14,138,83,0)}100%{box-shadow:0 0 0 0 rgba(14,138,83,0)}}

/* ---- انتخابگر تقویمیِ سال-ماه ---- */
.ym-field{cursor:pointer;background:var(--paper);caret-color:transparent}
.ym-field:hover{border-color:var(--brand)}
.ym-pop{position:absolute;z-index:1200;background:var(--paper);border:1px solid var(--line-strong);border-radius:12px;box-shadow:var(--shadow-md);padding:8px;width:242px;font-family:var(--font)}
.ymp-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:8px}
.ymp-nav{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--softer);cursor:pointer;font-size:18px;line-height:1;color:var(--ink)}
.ymp-nav:hover{background:var(--brand-soft);color:var(--brand-ink)}
.ymp-year{flex:1;height:30px;border:0;background:transparent;font-weight:800;font-size:15px;cursor:pointer;color:var(--brand-ink)}
.ymp-year:hover{color:var(--brand)}
.ymp-months{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.ymp-m{padding:9px 4px;border:1px solid var(--line);border-radius:8px;background:var(--paper);cursor:pointer;font-size:13px;font-family:var(--font);color:var(--ink)}
.ymp-m:hover{background:var(--brand-soft);border-color:var(--brand)}
.ymp-m.sel{background:var(--brand);color:#fff;border-color:var(--brand)}
/* ماهِ «تاریخ مبنا / شروع محاسبات» — کمی آبی‌تر تا در هر تقویمی فوری پیدا شود (اگر خودش انتخاب هم باشد، پُررنگ) */
.ymp-m.base{background:var(--basedate-bg);border-color:var(--basedate-line);color:var(--basedate);font-weight:800}
.ymp-m.base:hover{background:var(--basedate-bg);border-color:var(--basedate)}
.ymp-m.base.sel{background:var(--basedate);border-color:var(--basedate);color:#fff}
/* ماهی که پیش‌تر برای همین سرفصل «تعیین شده» است (مثلِ عملیاتِ گروهیِ وصول) — سبز، تا بازهٔ اشغال‌شده فوری دیده شود */
.ymp-m.taken{background:var(--good-bg);border-color:var(--good-line);color:var(--good);font-weight:800}
.ymp-m.taken:hover{background:var(--good-bg);border-color:var(--good)}
.ymp-m.taken.sel{background:var(--good);border-color:var(--good);color:#fff}
.ymp-years{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;max-height:220px;overflow:auto}
.ymp-y{padding:6px 2px;border:1px solid var(--line);border-radius:7px;background:var(--paper);cursor:pointer;font-size:12px;font-family:var(--font);color:var(--ink)}
.ymp-y:hover{background:var(--brand-soft)}
.ymp-y.sel{background:var(--brand);color:#fff;border-color:var(--brand)}
/* تقویمِ روزانهٔ شمسی (jdpicker.js) — هم‌خانوادهٔ ym-pop؛ fixed چون داخلِ <dialog> هم باز می‌شود */
.jd-pop{position:fixed;z-index:1300;background:var(--paper);border:1px solid var(--line-strong);border-radius:12px;box-shadow:var(--shadow-md);padding:8px;width:262px;font-family:var(--font);direction:rtl}
.jdp-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:6px;color:var(--brand-ink)}
.jdp-nav{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--softer);cursor:pointer;font-size:18px;line-height:1;color:var(--ink)}
.jdp-nav:hover{background:var(--brand-soft);color:var(--brand-ink)}
.jdp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.jdp-w{font-size:11px;color:var(--muted);text-align:center;padding:2px 0}
.jdp-d{padding:6px 0;border:1px solid var(--line);border-radius:7px;background:var(--paper);cursor:pointer;font-size:12.5px;font-family:var(--font);color:var(--ink)}
.jdp-d:hover{background:var(--brand-soft);border-color:var(--brand)}
.jdp-d.today{border-color:var(--brand);font-weight:800}
.jdp-d.start{background:var(--basedate-bg);border-color:var(--basedate-line);color:var(--basedate);font-weight:800}
.jdp-d.sel{background:var(--brand);color:#fff;border-color:var(--brand)}
.jdp-span{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.jdp-span label{display:block;font-size:12px;font-weight:700;color:var(--ink2);margin-bottom:4px}
.jdp-span-row{display:flex;gap:6px}
.jdp-span-inp{flex:1;min-width:0;padding:6px 8px;border:1px solid var(--line);border-radius:7px;font-family:var(--font);text-align:center}
.jdp-span-btn{padding:6px 12px;border:0;border-radius:7px;background:var(--brand);color:#fff;cursor:pointer;font-family:var(--font);font-weight:700}
.jdp-span-now{margin-top:4px;color:var(--muted)}
.ymp-y.view{border-color:var(--brand)}
.ymp-m[disabled]{opacity:.3;cursor:not-allowed;background:var(--softer);border-color:var(--line)}
.ymp-m[disabled]:hover{background:var(--softer);border-color:var(--line)}
.ymp-span{margin-top:8px;background:var(--brand-soft);border:1px solid var(--brand);border-radius:9px;padding:8px 9px}
.ymp-span>label{display:block;font-size:11px;font-weight:800;color:var(--brand-ink);margin-bottom:5px}
.ymp-span-row{display:flex;gap:6px}
.ymp-span-inp{flex:1;height:30px;min-width:0;border:1px solid var(--line);border-radius:8px;padding:0 8px;font-family:var(--font);font-size:13px;background:var(--paper);color:var(--ink)}
.ymp-span-btn{height:30px;padding:0 12px;border:0;border-radius:8px;background:var(--brand);color:#fff;font-weight:700;cursor:pointer;font-family:var(--font);white-space:nowrap}
.ymp-span-btn:hover{background:var(--brand-ink)}

/* انتخابگر تم در تاپ‌بار */
.theme-dots{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
/* همه دایره‌های تم دقیقاً یک‌سایز و یک‌شکل؛ انتخاب با حلقهٔ داخلی نشان داده می‌شود (بدونِ تغییرِ اندازه) */
.theme-dot{width:22px;height:22px;border-radius:50%;border:2px solid var(--line-strong);cursor:pointer;padding:0;box-sizing:border-box;flex:0 0 auto;transition:border-color .12s}
.theme-dot:hover{border-color:var(--ink3)}
.theme-dot.active{border-color:var(--ink);box-shadow:inset 0 0 0 2px var(--paper)}

/* کنترلِ سگمنتی برای گروه‌های رادیو (فشرده، یک‌خطی، کارت‌گونه) — جایگزینِ رادیوهای پخش‌وپلا */
.seg{display:flex;gap:8px;flex-wrap:wrap}
.seg-opt{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border:1.5px solid var(--line-strong,var(--line));border-radius:10px;cursor:pointer;font-weight:600;font-size:.85rem;white-space:nowrap;background:var(--paper);color:var(--ink2);transition:border-color .12s,background .12s,box-shadow .12s;user-select:none}
.seg-opt:hover{border-color:var(--brand-3)}
.seg-opt input{margin:0;accent-color:var(--brand);cursor:pointer}
.seg-opt:has(input:checked){border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink);box-shadow:inset 0 0 0 1px var(--brand)}

/* شبکهٔ ۱۲ستونیِ فرم‌های پاپ‌آپیِ پرفیلد (فرمِ «ورود اطلاعات ردیف مخارج») —
   هر فیلد با grid-column:span N عرضِ متناسبِ خودش را می‌گیرد؛ روی صفحهٔ باریک تک‌ستونه می‌شود. */
.sif-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px 14px;align-items:end}
.sif-grid>.field{margin:0;min-width:0}
.sif-grid>.field select,.sif-grid>.field input{width:100%;min-width:0}
@media(max-width:760px){.sif-grid{grid-template-columns:1fr}.sif-grid>.field,.sif-grid>*{grid-column:auto!important}}
/* ★ کارتِ «بازهٔ سیستمی» (شروع/پایانِ گره‌خورده به تاریخ‌های سیستمی) — دو سطرِ هم‌ترازِ
   [برچسب | قاعده | نتیجه] با ستون‌های واقعی (نه فلکسِ سطری) تا تاریخ‌های حل‌شده زیرِ هم بنشینند،
   و یک نوارِ عمل با دکمهٔ تنظیم و خلاصهٔ بازه. حالتِ ناقص/نادرست کلِ کارت را قرمز می‌کند. */
.sys-range{display:grid;gap:5px;border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:8px 10px}
.sys-range.bad{border-color:var(--bad-line);background:var(--bad-bg)}
.sys-range-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;font-size:.78rem}
.sys-range-tag{font-weight:800;color:var(--muted);min-width:30px}
.sys-range-rule{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2)}
.sys-range-val{padding:2px 9px;border-radius:7px;background:var(--brand-soft);color:var(--brand-ink);font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums}
.sys-range-val.none{background:var(--soft);color:var(--muted);font-weight:700}
.sys-range-foot{display:flex;align-items:center;gap:8px;border-top:1px dashed var(--line-2);padding-top:7px;margin-top:1px}
.sys-range-note{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;color:var(--muted)}
.sys-range.bad .sys-range-note{color:var(--bad);font-weight:700}
/* ★ پوستهٔ فشردهٔ فرمِ ردیفِ مخارج — کلِ محتوای پاپ‌آپ داخلِ .sif-form می‌نشیند و همهٔ قواعدِ زیر
   فقط در همین دامنه اثر دارند؛ چگالیِ فرم‌های دیگرِ برنامه دست‌نخورده می‌ماند.
   هدف: همان فیلدها با ارتفاعِ به‌مراتب کمتر (کارتِ تودرتوی ۲۴px → قابِ سبکِ ۱۰px، ورودیِ ۴۴px → ۳۲px). */
.modal-box:has(>.sif-form){padding:16px 18px}
.sif-form>.panel-title{margin-bottom:9px;padding-bottom:8px;gap:10px}
.sif-form>.panel-title h3{font-size:.98rem}
.sif-form>.panel-title h3:before{height:15px}
.sif-form>.panel-title p{margin-top:3px;font-size:.78rem}
.sif-form .sif-grid{gap:8px 10px}
.sif-form .field{gap:4px;margin-bottom:0}
.sif-form .field label{font-size:.75rem;line-height:1.4}
.sif-form input,.sif-form select,.sif-form textarea{padding:6px 9px;font-size:.85rem;border-radius:9px}
.sif-form input[type=checkbox]{padding:0}
.sif-form .small{font-size:.76rem;line-height:1.55}
.sif-form .btn-sm{padding:5px 9px;font-size:.76rem;border-radius:8px}
.sif-form .btn{padding:8px 13px;font-size:.85rem}
/* بخشِ موضوعی: قابِ سبک به‌جای .card تودرتو */
.sif-sec{border:1px solid var(--line);border-radius:12px;background:var(--softer);padding:9px 11px 11px;margin-bottom:8px}
.sif-sec-h{font-size:.75rem;font-weight:800;color:var(--brand-ink);margin-bottom:7px;display:flex;align-items:center;gap:6px}
.sif-sec-h:before{content:"";width:3px;height:13px;border-radius:99px;background:linear-gradient(180deg,var(--brand-3),var(--brand-ink));flex-shrink:0}
/* ردیفِ چهارتاییِ «مبلغ و تورم» — روی نمایشگرِ باریک‌تر دوتایی می‌شود */
.sif-form .sif-quarter{grid-column:span 3}
@media(max-width:1040px){.sif-form .sif-quarter{grid-column:span 6}}

/* ورودی‌های عددی (مقدار / فی / مبالغ) وسط‌چین — هم پیش از تبدیلِ خودکارِ formatNumInputs
   (type=number) و هم پس از آن (type=text + data-num). ورودی‌های متنی دست‌نخورده‌اند. */
input[type="number"],input[data-num]{text-align:center}

/* ردیفِ تب‌های پروژه: تبِ «اطلاعات پروژه» طوسیِ پررنگ می‌ماند و تب‌های سناریو سفیدِ فعلی؛
   تبِ فعال — هر کدام که باشد — با خطِ طوسیِ دورِ خودش مشخص می‌شود. */
.subtabs.projtabs button.active{box-shadow:var(--shadow-xs),inset 0 0 0 1.5px var(--muted)}

/* زیرتبِ غیرفعال (هنوز ساخته نشده): دیده می‌شود تا معلوم باشد در راه است، ولی کلیک‌پذیر نیست. */
.subtabs button.subtab-off{opacity:.45;cursor:not-allowed;font-weight:600}
.subtabs button.subtab-off:hover{color:var(--muted)}

/* ────────── پاپ‌آپِ «افزودن محدوده» (سه‌ستونی: دسته‌ها / موارد / انتخاب‌شده‌ها) ──────────
   ★ چرا کلاسِ اختصاصی و نه .row-item: عنوان‌های بلند (نامِ مدلِ فروش، کاربریِ چندکلمه‌ای) در
     ستون بیرون می‌زدند. علتش دو چیز بود: ستونِ گرید کفِ عرضِ محتوا داشت (min-width:auto)، و
     متن داخلِ فلکس نمی‌توانست جمع شود. minmax(0,…) + min-width:0 + شکستِ کلمه هر دو را می‌بندد. */
.rsc-grid{display:grid;grid-template-columns:minmax(140px,.85fr) minmax(0,1.4fr) minmax(0,1.5fr);gap:12px;align-items:stretch}
@media (max-width:860px){.rsc-grid{grid-template-columns:1fr}}
.rsc-panel{display:flex;flex-direction:column;min-width:0;background:var(--softer);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 11px}
.rsc-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding-bottom:7px;border-bottom:1px solid var(--line-2,var(--line))}
.rsc-head .rsc-title{font-weight:700;flex:1;min-width:0}
.rsc-count{flex:none;font-size:11px;font-weight:800;background:var(--brand-soft);color:var(--brand);border-radius:999px;padding:1px 9px;min-width:22px;text-align:center;font-variant-numeric:tabular-nums}
.rsc-body{flex:1;min-width:0;min-height:250px;max-height:52vh;overflow-y:auto;overflow-x:hidden;padding-inline-end:2px}
.rsc-item{display:flex;align-items:flex-start;gap:8px;min-width:0;padding:9px 11px;margin-bottom:7px;border:1px solid var(--line);border-radius:9px;background:var(--paper);cursor:pointer;transition:.15s}
.rsc-item:last-child{margin-bottom:0}
.rsc-item:hover{border-color:rgba(11,124,130,.45);box-shadow:var(--shadow-sm)}
.rsc-item.on{border-color:var(--brand);background:linear-gradient(135deg,var(--brand-soft),var(--paper));box-shadow:inset 0 0 0 1px var(--brand)}
/* هستهٔ رفعِ سرریز: متن جمع می‌شود و کلمهٔ بلند می‌شکند، پس دکمه/تیک هرگز از کادر بیرون نمی‌رود. */
.rsc-txt{flex:1;min-width:0;overflow-wrap:anywhere;word-break:break-word;line-height:1.75}
.rsc-type{display:block;font-size:10.5px;font-weight:700;color:var(--muted);margin-bottom:1px}
.rsc-mark{flex:none;font-size:13px;line-height:1.7;color:var(--muted);opacity:.75}
.rsc-item:hover .rsc-mark{color:var(--brand);opacity:1}
.rsc-item.on .rsc-mark{color:var(--brand);opacity:1}
.rsc-x{flex:none;border:0;background:none;cursor:pointer;color:var(--bad);font-size:16px;line-height:1.5;padding:0 3px;border-radius:6px}
.rsc-x:hover{background:rgba(192,57,43,.1)}
.rsc-empty{padding:20px 12px;text-align:center;color:var(--muted);font-size:12px;line-height:2}
.rsc-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;padding-top:11px;border-top:1px solid var(--line)}
.rsc-foot .rsc-spacer{flex:1}

/* ────────── نوارِ زندهٔ «منظرِ مالکانه» (صفحهٔ تأمین مالی) ──────────
   ★ مشکل قبلی: ده قلمِ هم‌وزن پشتِ سرِ هم، با عددهای بلندِ اعشاردار — چشم نمی‌دانست کجا را ببیند.
   حالا: بافتِ مدل → شاخصِ سرآمد (IRR-E) → بقیهٔ شاخص‌ها → ارقامِ تأمین → هشدار → دکمهٔ اقدام،
   با جداکنندهٔ دیداری بینِ گروه‌ها. کلاس‌ها جدا از .lb-* پایه‌اند تا نوارِ «محاسبات» دست‌نخورده بماند. */
.lb-inner.lbf{gap:7px 14px}
.lbf-sep{width:1px;align-self:stretch;min-height:26px;background:var(--line);opacity:.9;flex:none}
.lbf-ctx{display:flex;flex-direction:column;line-height:1.25;padding-inline-end:2px}
.lbf-ctx b{font-size:.92rem;font-weight:800;color:var(--brand)}
.lbf-ctx span{font-size:.68rem;color:var(--muted);font-weight:700}
/* شاخصِ سرآمد: بزرگ‌تر و رنگی، چون اولین چیزی است که کاربر دنبالش می‌گردد */
.lbf-hero{display:flex;flex-direction:column;line-height:1.2;padding:2px 11px;border-radius:10px;background:var(--paper);border:1px solid var(--line);flex:none}
.lbf-hero .lbf-hl{font-size:.66rem;color:var(--muted);font-weight:700;white-space:nowrap}
.lbf-hero .lbf-hv{font-size:1.22rem;font-weight:900;font-variant-numeric:tabular-nums}
.lbf-hero.good{border-color:var(--good);background:linear-gradient(135deg,rgba(12,107,82,.09),var(--paper))}
.lbf-hero.good .lbf-hv{color:var(--good)}
.lbf-hero.bad{border-color:var(--bad);background:linear-gradient(135deg,rgba(192,57,43,.09),var(--paper))}
.lbf-hero.bad .lbf-hv{color:var(--bad)}
.lb-inner.lbf .lb-item{min-width:0}
.lb-inner.lbf .lb-v{font-size:.94rem;white-space:nowrap}
.lb-inner.lbf .lb-l{white-space:nowrap}
.lbf-u{font-size:.62rem;font-weight:700;color:var(--muted);margin-inline-start:3px}
/* هشدارِ کسری: پیلِ قرمز تا در انبوهِ ارقام گم نشود */
.lbf-alert{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:999px;background:rgba(192,57,43,.1);border:1px solid var(--bad);color:var(--bad);font-weight:800;font-size:.8rem;white-space:nowrap}
.lbf-alert .lbf-au{font-weight:700;font-size:.66rem;opacity:.85}
.lbf-cta{display:inline-flex;align-items:center;gap:7px;margin-inline-start:auto;padding:7px 13px;border-radius:10px;background:var(--brand);color:#fff;border:1px solid var(--brand);font-weight:800;font-size:.8rem;cursor:pointer;white-space:nowrap;transition:.15s}
.lbf-cta:hover{filter:brightness(1.08);box-shadow:var(--shadow-sm)}
@media(max-width:860px){.lbf-sep{display:none}.lbf-cta{margin-inline-start:0}}

/* ────────── دکمهٔ حذفِ ردیف (✕) ──────────
   ★ کلاسِ .ofdel در هفت جای برنامه به‌کار می‌رفت ولی **هیچ تعریفی در CSS نداشت**؛ یعنی دکمهٔ خامِ
   مرورگر رندر می‌شد (کادرِ خاکستریِ بدشکل با فونت و اندازهٔ ناهمگون). این تعریف همان‌جاها را هم درست می‌کند. */
.ofdel{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;flex:none;
  border:1px solid transparent;border-radius:50%;background:transparent;cursor:pointer;
  color:var(--muted);font-size:13px;line-height:1;font-family:inherit;transition:.15s}
.ofdel:hover{background:rgba(192,57,43,.1);border-color:var(--bad);color:var(--bad,var(--bad))}
.ofdel:focus-visible{outline:2px solid var(--bad);outline-offset:1px}
.ofdel:disabled{opacity:.4;cursor:not-allowed;background:transparent;border-color:transparent;color:var(--muted)}

/* واحد/نشانهٔ ٪ سمتِ چپِ فیلدِ عددی — همان الگوی .ownfin .suffix، این‌بار به‌صورتِ کلاسِ مستقل
   تا هر جدولی که «درصد» می‌گیرد بتواند بدونِ وابستگی به والدِ .ownfin از آن استفاده کند. */
.suffix.pct-left{position:relative}
.suffix.pct-left input{padding-left:26px;text-align:center;width:100%;box-sizing:border-box}
.suffix.pct-left .u{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:11px;pointer-events:none}

/* توضیحِ روشِ هر «ردیفِ تقسیم منافع» — دیدنی بالای جدول.
   ★ عمداً کلاسِ small/muted/hint نیست: تبدیلِ خودکارِ KM آن‌ها را به آیکونِ راهنما جمع می‌کند و کاربر
   اصلاً نمی‌دید ردیف با چه روشی حساب شده. */
.pr-method{margin:0 0 10px;padding:9px 12px;border-radius:9px;background:var(--paper);border:1px solid var(--line);
  border-inline-start:3px solid var(--brand);font-size:.82rem;line-height:1.85;color:var(--ink)}

/* جمعِ گزارش پوشش: طوسی خنثی، مستقل از رنگ برند؛ فقط همین ردیف. */
.cost-coverage-total > td{
  background:#F0F1F3;color:#454B54;border-top:2px solid #D5D8DD;
  padding:16px 14px;font-weight:700;line-height:1.9;font-variant-numeric:tabular-nums;
}
.cost-coverage-total > td:first-child{white-space:nowrap}
html[data-theme="dark"] .cost-coverage-total > td{
  background:#292D33;color:#E3E5E8;border-top-color:#484E57;
}
.crt-person-list{display:grid;gap:8px;max-height:50vh;overflow:auto;padding:2px}
.crt-person-option{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--softer);cursor:pointer}
.crt-person-option input[type="checkbox"]{width:18px;height:18px;flex:0 0 18px;margin:0;accent-color:var(--brand)}
.crt-person-option:focus-within{outline:2px solid var(--brand);outline-offset:1px}
.crt-tab-with-delete{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:10px}
.subtabs .crt-tab-delete{padding:4px 8px;margin-inline-end:3px;font-size:18px;line-height:1;color:var(--muted)}
.subtabs .crt-tab-delete:hover{background:var(--paper);color:var(--bad)}
/* Share comparison: percentages and project totals have separate visual hierarchy. */
.sc-comparison{color:var(--text);font-size:.85rem;min-width:0}
.sc-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.sc-heading h5,.sc-summary h5{margin:0;font-size:1rem;font-weight:800}
.sc-intro{color:var(--muted);font-size:.78rem;line-height:1.9;margin:6px 0 14px}
.sc-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--paper);max-width:100%}
.sc-scroll:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
.sc-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:auto;font-size:.83rem}
.sc-table th,.sc-table td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle}
.sc-table thead th{background:var(--soft);font-size:.8rem;text-align:center;min-width:108px;max-width:180px;overflow-wrap:anywhere}
.sc-table thead th:first-child{min-width:190px;text-align:start;width:44%}
.sc-table tbody th{text-align:start;font-weight:600;line-height:1.7}
.sc-table tbody tr:last-child>*{border-bottom:0}
.sc-table .sc-group-start:not(:first-child)>*{border-top:4px solid var(--soft)}
.sc-table tbody tr:hover>*{background:var(--softer)}
.sc-method{display:flex;justify-content:space-between;align-items:center;gap:8px}
.sc-method .sbp-btn{flex-shrink:0;min-width:30px;min-height:30px;margin:0}
.sc-tag{display:inline-block;font-size:.68rem;font-weight:600;border:1px solid var(--line);background:var(--soft);color:var(--muted);padding:2px 7px;border-radius:6px;white-space:nowrap;line-height:1.7}
.sc-tag-infl{background:var(--brand-soft);color:var(--brand)}
.sc-share{text-align:center;min-width:108px;font-variant-numeric:tabular-nums}
.sc-share strong{display:block;font-size:.98rem;white-space:nowrap}
.sc-table .sc-contract>*{background:var(--brand-soft);border-top:1px dashed var(--brand)}
.sc-contract-title{margin-top:5px;font-weight:700;overflow-wrap:anywhere}
.sc-tag-contract{color:var(--brand);border-color:var(--brand);background:var(--paper)}
.sc-summary{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.sc-summary h5{display:flex;align-items:center;gap:8px}
.sc-summary dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0 0}
.sc-kpi{padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}
.sc-kpi dt{font-size:.75rem;color:var(--muted);line-height:1.8}
.sc-kpi dd{margin:7px 0 0;font-size:.95rem;font-weight:800;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.sc-kpi-note{font-size:.68rem;line-height:1.8;color:var(--muted);margin-top:7px}
.sc-sr{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
@media(max-width:480px){.sc-table th,.sc-table td{padding:10px}.sc-summary dl{grid-template-columns:1fr}.sc-table thead th:first-child{min-width:170px}.sc-intro{font-size:.75rem}}
/* Center and wrap share comparison column headings, including the method column. */
.sc-table thead th,.sc-table thead th:first-child{text-align:center;white-space:normal;overflow-wrap:anywhere;word-break:normal;line-height:1.8}
/* Installment window editor: shared date controls, scoped presentation. */
#rvbPop.rec-bulk-editor{box-sizing:border-box}
#rvbPop.rec-bulk-editor>.card{max-width:720px!important;max-height:calc(100dvh - 32px);overflow-y:auto;background:var(--paper)!important}
.rec-bulk-editor .field{min-width:0}
.rec-bulk-editor #rvbCountAnchorField{flex:1 0 100%;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--brand-soft);gap:8px}
.rec-bulk-editor #rvbCountAnchor{align-self:flex-start;min-height:42px;font-weight:700}
.rec-bulk-editor #rvbCountInfo{line-height:1.9}
.rec-bulk-editor #rvbCountModeField{flex:1 1 180px}
.rec-bulk-editor #rvbLog{border-top:1px solid var(--line);margin-top:18px;padding-top:10px}
.rec-window-editor .panel-title{align-items:flex-start}
.rec-window-editor .panel-title p{font-size:.8rem;line-height:1.9;max-width:65ch}
.rec-window-editor .rec-window-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.rec-window-boundary{min-width:0;margin:0;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--paper);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.rec-window-boundary legend{font-weight:800;color:var(--brand-ink);padding:0 8px}
.rec-window-boundary .field{min-width:0;margin:0}
.rec-window-boundary .field:first-of-type,.rec-window-boundary [id^="perAnchorYMWrap"],.rec-window-boundary [id^="perAnchorAnchorWrap"],.rec-window-boundary [id^="perAnchorProgWrap"]{grid-column:1/-1}
.rec-window-boundary select{width:100%;min-width:0}
.rec-window-editor #recWindowPreview{border:1px solid var(--line);padding:16px;margin-bottom:20px!important}
.rec-window-editor #recWindowPreview[data-state="error"]{border-color:var(--bad)}
.rec-window-editor #recWindowPreview strong{display:block;margin-top:6px;font-size:.9rem}
.rec-window-editor #recDeliveryTimingNote{margin:16px 0;line-height:1.9;color:var(--muted)}
.rec-window-editor details summary{cursor:pointer;padding:6px 0;font-weight:700}
.rec-window-editor .rec-window-actions{position:sticky;bottom:0;background:var(--paper);border-top:1px solid var(--line);padding:14px 0 0;z-index:2}
@media(max-width:600px){.rec-window-editor .rec-window-form{grid-template-columns:1fr}.rec-window-editor #recWindowPreview .grid{grid-template-columns:1fr}.rec-window-editor .rec-window-actions .btn{flex:1 1 auto}#rvbPop.rec-bulk-editor{padding:8px!important}}
.rec-window-editor .rec-window-form>.field{grid-column:1/-1;margin:0}

[data-sitem-locked="1"]{background:var(--soft);color:var(--muted);cursor:not-allowed}

/* Non-editable data fields share the system-value appearance.
   .ym-field calendar pickers are readonly only to block typing: they stay clickable and keep the editable look
   unless actually disabled. aria-readonly styling applies to inputs only. */
input:is(:disabled,:not(.ym-field):is([readonly],[aria-readonly="true"])):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=button]):not([type=submit]):not([type=hidden]),
select:disabled,textarea:is(:disabled,[readonly]){
  box-sizing:border-box;padding:7px 11px!important;font-size:.82rem!important;
  border:1.5px solid var(--line-strong)!important;border-radius:8px!important;
  background:var(--soft)!important;color:var(--ink)!important;font-weight:700!important;
  font-variant-numeric:tabular-nums;opacity:1!important;-webkit-text-fill-color:var(--ink);
  box-shadow:none!important;cursor:default;
}
/* «موضوعیت ندارد»: فیلدی که در این وضع چیزی برای باز شدن ندارد، فلشِ بازشوندهٔ دراپ‌داون هم نمی‌گیرد
   (خواستهٔ کاربر ۲۰۲۶-۰۹-۲۴؛ فلش القا می‌کرد که فهرست باز می‌شود و انتخابی در کار است). */
/* ارتفاع و قلمِ همان فیلدهای عادیِ کنارش (قاعدهٔ select:disabled آن را کوتاه‌تر می‌کرد و ردیف ناهموار می‌شد). */
select[data-na="1"]{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:none;text-align:start;
  padding:11px 13px!important;font-size:.92rem!important;border-radius:var(--radius-sm)!important;font-weight:400!important;color:var(--muted)!important;-webkit-text-fill-color:var(--muted)}
/* Narrow grid cells (e.g. 52px receivable cells): the locked padding must not clip the value. */
:is(td,th) input:is(:disabled,:not(.ym-field):is([readonly],[aria-readonly="true"])):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=button]):not([type=submit]):not([type=hidden]){padding:4px 2px!important;text-overflow:clip}
.ym-field:not(:disabled){cursor:pointer}

#contractualBulkDialog{width:min(720px,calc(100vw - 32px));max-height:85vh;overflow:auto;box-sizing:border-box;border:1px solid var(--line-strong);border-radius:16px;background:var(--paper);color:var(--ink);padding:22px;box-shadow:var(--shadow);font-family:inherit}
#contractualBulkDialog::backdrop{background:rgba(15,23,42,.48)}
#contractualBulkDialog .field{flex:1 1 220px;max-width:none!important}

.sc-value-tooltip{position:fixed;z-index:2147483647;pointer-events:none;direction:rtl;width:290px;max-width:calc(100vw - 16px);box-sizing:border-box;padding:10px 12px;border:1px solid var(--line-strong);border-radius:10px;background:var(--paper);color:var(--ink);box-shadow:0 5px 18px #0002;font-size:.76rem;line-height:1.6}.sc-value-tooltip dl{margin:6px 0}.sc-value-tooltip dl>div{display:flex;justify-content:space-between;gap:12px}.sc-value-tooltip dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums}.sc-tip-note{font-size:.69rem;color:var(--muted)}[data-sc-tip]{cursor:help}
.pr-final-control{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;margin:6px 0 12px;border:1px solid var(--line);border-radius:8px;font-size:12px;background:var(--card,#fff)}
.pr-final-switch{display:inline-flex;align-items:center;gap:8px;background:none;border:0;color:var(--muted);font:inherit;cursor:pointer;padding:4px}
.pr-final-track{width:36px;height:20px;border-radius:20px;background:#849294;position:relative;flex-shrink:0}
.pr-final-track:after{content:'';position:absolute;top:3px;left:3px;width:14px;height:14px;background:white;border-radius:50%;transition:transform .15s}
.pr-final-switch[aria-checked=true]{color:var(--brand,#12665f);font-weight:700}
.pr-final-switch[aria-checked=true] .pr-final-track{background:var(--brand,#12665f)}
.pr-final-switch[aria-checked=true] .pr-final-track:after{transform:translateX(16px)}
.pr-final-switch:focus-visible{outline:2px solid var(--brand,#12665f);outline-offset:3px;border-radius:5px}
/* Product administration has a customer context, never a project toolbar. */
body[data-fs-workspace="product"] #warnCenter,
body[data-fs-workspace="product"] #liveBar,
body[data-fs-workspace="product"] .topbar [data-action="quick-save"],
body[data-fs-workspace="product"] .topbar #saveState { display: none !important; }

/* Contract form (tenantAdmin.js): an invalid count or date is marked, never silently sent. */
#tenantDialog [aria-invalid="true"] { border-color: var(--bad) !important; box-shadow: 0 0 0 1px var(--bad); }
#tenantDialog [data-date-preview] { display: block; margin-top: 4px; }
/* فرمِ کاربرِ تیم: مشخصات در دو ستون، دسترسی‌ها در کادرِ گروه‌بندی‌شده با کارت‌های تیک‌دار */
.fs-form-2col { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; }
@media (max-width: 640px) { .fs-form-2col { grid-template-columns: 1fr; } }
.fs-caps { border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; margin: 12px 0 16px; background: var(--card); }
.fs-caps-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.fs-caps-head [data-caps-count] { color: var(--muted); }
.fs-caps-actions { display: flex; gap: 6px; margin-inline-start: auto; }
.fs-caps-group { margin-top: 12px; }
.fs-caps-title { font-size: .8rem; font-weight: 700; color: var(--ink3); margin-bottom: 6px; }
.fs-caps-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 8px; }
.fs-caps label.fs-cap { display: flex; align-items: flex-start; gap: 10px; width: auto; margin: 0; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; cursor: pointer; background: var(--card); }
.fs-caps label.fs-cap:hover { border-color: var(--line-strong); }
.fs-caps label.fs-cap.on { border-color: var(--brand); background: var(--brand-soft); }
.fs-caps label.fs-cap input { width: auto; margin: 3px 0 0; flex: 0 0 auto; }
.fs-caps label.fs-cap b { display: block; font-size: .86rem; color: var(--ink); }
.fs-caps label.fs-cap small { display: block; margin-top: 2px; font-size: .76rem; color: var(--muted); line-height: 1.6; }
/* Customer contract and capacity dialogs */
dialog.tenant-form-dialog{padding:0!important;width:min(960px,calc(100vw - 32px))!important;color:var(--ink);background:var(--paper)}
.tenant-form-dialog>header{position:sticky;top:0;z-index:3;padding:16px 24px;background:var(--paper);border-bottom:1px solid var(--line);gap:16px}
.tenant-form-dialog>header h3{margin:0;font-size:1.1rem}
.tenant-form-dialog>[data-error]{margin:0 24px;color:var(--bad)}
.tenant-form-body{padding:20px 24px}
.tenant-account-picker{padding:16px;background:var(--soft);border:1px solid var(--line);border-radius:12px;margin-bottom:20px}
.tenant-account-picker select{width:100%}
.tenant-field-heading{display:flex;align-items:center;gap:6px;margin-bottom:7px;min-height:30px}
.tenant-field-heading label{margin:0;font-weight:600;font-size:.86rem}
.tenant-form-intro p,.tenant-section-intro{color:var(--muted);font-size:.82rem;line-height:1.8;margin:6px 0 16px}
.tenant-form-section{min-width:0;border:1px solid var(--line);border-radius:12px;padding:16px;margin:20px 0}
.tenant-form-section legend{padding:0 8px;font-weight:700;font-size:.93rem}
.tenant-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.tenant-form-field{min-width:0}.tenant-form-field[hidden]{display:none}
.tenant-form-field input,.tenant-form-field select{width:100%;box-sizing:border-box;min-height:42px;margin:0}
.tenant-form-field small{display:block;min-height:1.5em;font-size:.75rem;color:var(--muted);margin-top:5px}
.tenant-form-field input:disabled{background:var(--soft);color:var(--muted)}
.tenant-form-wide{grid-column:1/-1}
.tenant-toggle-row{display:flex;align-items:center;gap:8px;margin-top:8px}
.tenant-toggle-row label{display:flex;align-items:center;gap:8px;margin:0;font-size:.82rem}
.tenant-toggle-row input{width:18px;height:18px;accent-color:var(--brand)}
.tenant-capacity-field{padding:12px;border-radius:10px;background:var(--softer);border:1px solid var(--line)}
.tenant-form-actions{display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid var(--line);padding:18px 0 4px}
.tenant-form-actions small{display:block;color:var(--muted);font-size:.75rem;margin-top:4px}
.tenant-form-errors{color:var(--bad);white-space:pre-line}.tenant-form-errors:empty{display:none}
.tenant-status-toggle{display:flex;align-items:flex-start;justify-content:flex-start;gap:10px;padding:14px;margin:16px 0;border:1px solid var(--line);border-radius:10px;background:var(--soft);cursor:pointer;text-align:start}
.tenant-status-toggle input[type="checkbox"]{width:20px;height:20px;min-height:20px;flex:0 0 20px;margin:3px 0 0;padding:0;accent-color:var(--brand);cursor:pointer}
.tenant-status-toggle span{min-width:0}.tenant-status-toggle strong{display:block;font-size:.88rem}.tenant-status-toggle small{display:block;margin-top:5px;font-size:.78rem;line-height:1.8;color:var(--muted)}
.tenant-status-toggle input:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
/* فهرست تیک‌زدنی دامنهٔ دسترسی (tenantAdmin.js): یک یا چند شرکت/پروژه با چک‌باکس انتخاب می‌شود */
.scope-title{display:block;font-size:.8rem;color:var(--ink-2);font-weight:700}
.scope-list{max-height:180px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:6px;background:var(--soft)}
/* .field label را خنثی می‌کند تا نام شرکت‌ها مثل عنوانِ فیلد درشت و پررنگ نشوند */
.scope-item{display:flex;align-items:center;gap:8px;width:auto;margin:0;padding:3px 6px;border-radius:8px;cursor:pointer;text-align:start;font-size:.84rem;font-weight:500;color:var(--ink)}
.scope-item:hover{background:var(--card,rgba(0,0,0,.04))}
.scope-item input[type="checkbox"]{width:18px;height:18px;min-height:18px;flex:0 0 18px;margin:0;padding:0;accent-color:var(--brand);cursor:pointer}
.scope-item input:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
.scope-item span{min-width:0;overflow-wrap:anywhere}
.scope-badge{flex:none;padding:1px 7px;border-radius:999px;border:1px solid var(--line);color:var(--muted);font-size:.72rem;white-space:nowrap}
.scope-list.is-locked{opacity:.55}
.tenant-help-host .tenant-km{flex:none;position:static;width:28px;height:28px;padding:2px}
.tenant-help-host .tenant-km:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
.tenant-help-host .tenant-form-tip{position:fixed;display:none;max-width:min(340px,calc(100vw - 32px));box-sizing:border-box;pointer-events:none;z-index:20;padding:12px;line-height:1.8;font-size:.8rem;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 24px #0002;white-space:normal}
.tenant-help-host .tenant-form-tip.show{display:block;opacity:1;visibility:visible}
.gs-control-help{display:flex;align-items:center;gap:8px}
.gs-control-help>input,.gs-control-help>select,.gs-control-help>textarea{flex:1;min-width:0;width:100%}
[data-gs-help-root] .tenant-form-tip{z-index:1200}
[data-gs-help-root] [data-gs-value]{min-width:180px}
.tenant-capacity-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}
.tenant-capacity-stat{padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}
.tenant-capacity-stat strong{display:block;font-size:1.3rem;margin:8px 0}.tenant-capacity-stat small{color:var(--muted)}
.tenant-capacity-warning{border-inline-start:3px solid var(--warn);padding:12px;background:var(--soft);line-height:1.9}
.tenant-capacity-result{line-height:1.9;white-space:pre-line;margin-top:16px}
@media(max-width:640px){.tenant-form-body{padding:16px}.tenant-form-dialog>header{padding:14px 16px}.tenant-form-grid,.tenant-capacity-summary{grid-template-columns:1fr}.tenant-form-actions{align-items:stretch;flex-direction:column}.tenant-form-section{padding:12px}}

/* Stacked user creation dialog keeps the unfinished customer form intact. */
.initial-admin-dialog{width:min(580px,calc(100vw - 32px));max-height:calc(100dvh - 40px);box-sizing:border-box;overflow:auto;padding:24px;border:1px solid var(--line);border-radius:16px;background:var(--bg,#fff);color:var(--ink);box-shadow:0 20px 70px #0004}
.initial-admin-dialog::backdrop{background:rgb(15 23 42 / .48)}
.initial-admin-dialog h3{margin-top:0}.initial-admin-dialog form{display:grid;gap:12px}
.initial-admin-dialog .chips{justify-content:flex-start;margin-top:8px}

.reset-credentials{position:fixed;inset:auto;margin:0;width:min(410px,calc(100vw - 32px));max-height:calc(100dvh - 16px);overflow:auto;box-sizing:border-box;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--bg,#fff);color:var(--ink);box-shadow:0 12px 40px #0003;z-index:100000}
.idc-field{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0 0 12px;min-width:0}.idc-field>legend{padding:0 6px}.idc-field [data-idc-search]{width:100%;box-sizing:border-box;margin-bottom:8px}.idc-list{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow:auto}.idc-item{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.idc-item[hidden]{display:none}.idc-item small{color:var(--muted)}
/* چک‌باکسِ فهرست‌های انتخاب: بدون این، قاعدهٔ عمومیِ input تمام‌عرضش می‌کند و متن به خطِ بعد می‌افتد (گزارشِ کاربر ۲۰۲۶-۰۹-۲۶). */
.idc-item input[type="checkbox"]{width:17px;height:17px;min-height:17px;flex:0 0 17px;margin:0;padding:0;accent-color:var(--brand);cursor:pointer}
.idc-item>span{flex:1 1 auto;min-width:0}
.tenant-customer-missing{color:var(--bad);font-weight:600}.tenant-customer-warn{color:var(--warn,#b26a00);font-weight:600}.tab-stale-note{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bad-bg,#fff4e5)}
.reset-credential-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;margin-bottom:12px;align-items:center}.reset-credential-row>span{grid-column:1/-1;font-size:12px;color:var(--muted)}.reset-credential-row code{overflow-wrap:anywhere;white-space:pre-wrap;user-select:text;text-align:left}.reset-credentials .small{margin:8px 0 12px}
/* ---------- قیمت بازار مسکن (marketPrices.js) ---------- */
.mk-controls{display:grid;grid-template-columns:minmax(200px,1.6fr) repeat(7,minmax(100px,1fr));gap:12px;align-items:start}
.mk-controls .field{margin-bottom:6px}
.mk-major{margin-top:6px}
.mk-chip{cursor:pointer}
.mk-chip.active{background:var(--brand-soft);color:var(--brand-ink);border-color:var(--brand-3)}
.mk-scanbar{margin:6px 0 16px}
.mk-scanrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:space-between;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--softer)}
.mk-running{position:relative}
.mk-progress{height:6px;border-radius:99px;background:var(--soft);margin:8px 0 4px;overflow:hidden}
.mk-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--brand-3),var(--brand));transition:width .4s}
.mk-spin{display:inline-block;width:12px;height:12px;border:2px solid var(--brand-soft);border-top-color:var(--brand);border-radius:50%;animation:mkspin .9s linear infinite;vertical-align:-2px;margin-inline-end:6px}
@keyframes mkspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.mk-spin{animation:none}.mk-progress span{transition:none}}
.mk-bad{background:var(--bad-bg);color:#9A2D22;border-color:var(--bad-line)}
.mk-warnchip{background:var(--warn-bg);color:#8C5D14;border-color:var(--warn-line);font-size:.7rem;padding:2px 8px}
.mk-kpis{margin-bottom:18px}
.mk-kpis .mk-range{font-size:1.25rem}
.mk-kpis .mk-note{font-size:.74rem;color:var(--muted);margin-top:5px;line-height:1.6}
.mk-card{margin-bottom:18px;padding:18px 18px 14px}
.mk-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.mk-card-head h4,.mk-tablehead h4{margin:0}
.mk-chart{width:100%;min-height:120px}
.mk-chart-sm{height:280px}
.mk-two{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.mk-two>.mk-card{margin-bottom:18px;min-width:0}
.mk-selbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 14px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--softer);border:1px solid var(--line);font-size:.85rem}
.mk-actions{display:inline-flex;gap:8px;flex-wrap:wrap;margin-inline-start:auto}
#mkBody{transition:opacity .15s}
#mkBody.mk-stale{opacity:.55}
.mk-srcchip{font-size:.68rem;padding:1px 7px}
/* نقشه: کاشی‌های پایه خاکستری و کم‌رنگ تا فقط داده رنگی باشد؛ در تمِ تیره وارونه */
.mk-mapwrap{border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--line)}
.mk-map{height:460px;width:100%;background:#f2efe9;direction:ltr}
.mk-map .leaflet-tile-pane{filter:grayscale(1) contrast(.92) brightness(1.04);opacity:.85}
.mk-map.mk-map-dark{background:#1a1a19}
.mk-map.mk-map-dark .leaflet-tile-pane{filter:grayscale(1) invert(1) brightness(.82) contrast(.9);opacity:.9}
.mk-map .leaflet-control-attribution{font-size:10px}
.mk-maplegend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-top:10px}
.mk-swatch{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;color:var(--ink-2)}
.mk-swatch i{display:inline-block;width:14px;height:14px;border-radius:50%;border:2px solid var(--paper)}
.mk-swatch i.mk-faint{opacity:.4}
.mk-swatch i.mk-sq{border-radius:3px;border:none}
.mk-subhead{font-size:.82rem;font-weight:700;color:var(--ink-2);margin:6px 0 4px}
.mk-two-flat{gap:22px;margin-bottom:8px}
.mk-sub td.small{white-space:nowrap}
.mk-dailyrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:space-between;margin-top:8px;padding:8px 12px;border-radius:var(--radius-sm);border:1px dashed var(--line);color:var(--ink-2)}
.mk-toggle{display:inline-flex;align-items:center;gap:6px;font-weight:700;cursor:pointer}
/* فیلترهای پیشرفته، سوییچ‌ها و شاخص‌های تفصیلی */
.mk-adv{margin:4px 0 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--softer);padding:0 12px}
.mk-adv>summary{cursor:pointer;padding:10px 0;font-weight:700;color:var(--ink-2);font-size:.88rem}
.mk-adv[open]>summary{border-bottom:1px solid var(--line-2);margin-bottom:10px}
.mk-advcount{color:var(--brand-ink);font-weight:700}
.mk-advgrid{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:10px 12px;align-items:start}
.mk-checks{border:0;margin:0 0 14px;padding:0;display:flex;flex-wrap:wrap;gap:6px 14px;align-content:flex-start}
.mk-checks legend{font-size:.8rem;color:var(--ink-2);font-weight:700;margin-bottom:6px;padding:0}
.mk-checks label{display:inline-flex;align-items:center;gap:6px;font-size:.84rem;cursor:pointer}
.mk-advactions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;padding:4px 0 12px}
.mk-seg{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.mk-seg button{background:var(--paper);border:0;padding:5px 11px;font:inherit;font-size:.78rem;font-weight:700;color:var(--ink-2);cursor:pointer}
.mk-seg button+button{border-inline-start:1px solid var(--line)}
.mk-seg button[aria-pressed="true"]{background:var(--brand-soft);color:var(--brand-ink)}
.mk-seg button:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.mk-subtitle{font-weight:700;color:var(--ink-2);font-size:.9rem;margin:2px 0 10px}
.mk-kpis2 .kpi .value{font-size:1.25rem}
.mk-delta.up{color:#0A6B41}.mk-delta.down{color:#9A2D22}
html[data-theme="dark"] .mk-delta.up{color:#0ca30c} html[data-theme="dark"] .mk-delta.down{color:#e66767}
.mk-three{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:10px}
@media (max-width:1100px){.mk-advgrid{grid-template-columns:repeat(2,1fr)}.mk-three{grid-template-columns:1fr}}
@media (max-width:640px){.mk-advgrid{grid-template-columns:1fr}}
.mk-leaflet-tip{direction:rtl;text-align:right;font-family:inherit;font-size:.8rem;line-height:1.7;border-radius:10px;padding:8px 10px}
.mk-leaflet-tip strong{display:block;font-size:.85rem;margin-bottom:2px}
@media (max-width:900px){.mk-two{grid-template-columns:1fr}.mk-map{height:360px}}
.mk-tablehead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:6px 0 8px}
.mk-tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-sm)}
.mk-table th,.mk-table td{white-space:nowrap}
.mk-table tr.mk-thin td{opacity:.72}
.mk-table tr.mk-open td{background:var(--brand-soft)}
.mk-table .mk-dim,.mk-sub tr.mk-dim td{color:var(--muted)}
.mk-link{background:none;border:none;padding:0;font:inherit;font-weight:700;color:var(--brand-ink);cursor:pointer;text-align:start}
.mk-link:hover{text-decoration:underline}
.mk-link:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}
.mk-detail>td{background:var(--softer);padding:10px 12px}
.mk-sub{font-size:.8rem}
.mk-sub td{white-space:normal}
.mk-source{margin-top:18px}
@media (max-width:1100px){.mk-controls{grid-template-columns:repeat(3,1fr)}.mk-controls .mk-city{grid-column:1/-1}}
@media (max-width:640px){.mk-controls{grid-template-columns:1fr 1fr}}

/* ===== «شروع سریع» و افشای تدریجی (intake.js / disclosure.js) ===== */
.ik{display:grid;gap:14px;max-width:1180px;margin-inline:auto}
.ik-hero h3{margin:0 0 4px}
.ik-hero textarea{width:100%;box-sizing:border-box;min-height:84px;padding:12px 14px;border:1px solid var(--line-strong,var(--line));border-radius:12px;font:inherit;line-height:1.9;background:var(--card,#fff);color:inherit;resize:vertical}
.ik-hero textarea:focus{outline:2px solid var(--brand);outline-offset:1px}
.ik-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-top:10px}
.ik-chips{display:flex;flex-wrap:wrap;gap:6px}
.ik-chip{cursor:pointer;border:1px solid var(--line);background:var(--brand-soft,transparent)}
.ik-err{margin-top:8px;color:var(--bad)}
.ik-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.ik-field{border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:grid;gap:6px;align-content:start}
.ik-field>label{font-weight:600}
.ik-field.ik-check{border-color:var(--warn);background:var(--warn-bg,transparent)}
.ik-field.ik-ask{border-style:dashed}
.ik-in{display:flex;gap:8px;align-items:center}
.ik-in input[data-ik-val]{flex:1;min-width:0;padding:7px 10px;border:1px solid var(--line-strong,var(--line));border-radius:8px;font:inherit;background:var(--card,#fff);color:inherit}
.ik-unit{font-size:.8rem;color:var(--muted);white-space:nowrap}
.ik-ok{display:flex;gap:4px;align-items:center;font-size:.85rem;white-space:nowrap;cursor:pointer}
.ik-meta{font-size:.8rem;color:var(--muted);line-height:1.7}
.ik-q{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:8px 0}
.ik-ql{font-weight:600;min-width:150px}
.ik-radio{display:flex;gap:4px;align-items:center;cursor:pointer}
.ik-small{font-size:.8rem}
.ik-notice{border-inline-start:4px solid var(--brand)}
.ik-verdict{display:flex;gap:10px;align-items:center}
.ik-verdict h3{margin:0}
.ik-dot{width:14px;height:14px;border-radius:50%;flex:none;background:var(--muted)}
.ik-result.ik-good .ik-dot{background:var(--good)}
.ik-result.ik-warn .ik-dot{background:var(--warn)}
.ik-result.ik-bad .ik-dot{background:var(--bad)}
.ik-result.ik-good{border-inline-start:4px solid var(--good)}
.ik-result.ik-warn{border-inline-start:4px solid var(--warn)}
.ik-result.ik-bad{border-inline-start:4px solid var(--bad)}
.dz-nav{margin:10px 8px 4px;padding:8px;border-top:1px solid var(--line);display:grid;gap:6px;font-size:.8rem}
.dz-level{color:var(--muted)}
.dz-nav button{font:inherit;cursor:pointer;border:1px dashed var(--line-strong,var(--line));border-radius:8px;padding:6px 8px;background:transparent;color:inherit;text-align:start}
.dz-nav .dz-more{border-style:solid;border-color:var(--brand);color:var(--brand)}
@media (max-width:600px){.ik-fields{grid-template-columns:1fr}.ik-ql{min-width:0;width:100%}}
.ik-ok input,.ik-radio input{width:auto;padding:0}
.ik-check{display:grid;gap:10px;margin:12px 0}
.ik-risk{padding:8px 12px;border-radius:10px;border:1px solid var(--line)}
.ik-risk.ik-good{background:var(--good-bg);border-color:var(--good-line,var(--line))}
.ik-risk.ik-warn{background:var(--warn-bg);border-color:var(--warn-line,var(--line))}
.ik-risk.ik-bad{background:var(--bad-bg);border-color:var(--bad-line,var(--line))}
.ik-warnings{margin:0;padding-inline-start:20px;display:grid;gap:6px;line-height:1.8}
.ik-w-bad::marker{color:var(--bad)}.ik-w-warn::marker{color:var(--warn)}.ik-w-info::marker{color:var(--muted)}
.ik-tips p{margin:6px 0;line-height:1.9}
.ik-qs{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:12px}
.ik-qf{margin:0}
.ik-more{margin-top:12px}
.ik-more>summary{cursor:pointer;color:var(--brand);font-weight:600;padding:4px 0}
.ik-more textarea{width:100%;box-sizing:border-box;min-height:84px;margin-top:8px;padding:12px 14px;border:1px solid var(--line-strong,var(--line));border-radius:12px;font:inherit;line-height:1.9;background:var(--card,#fff);color:inherit}
.ik-basis{margin:0 4px}
.ik-need{border-inline-start:4px solid var(--warn)}
.ik-group{border-top:1px solid var(--line);padding:8px 0}
.ik-group>summary{cursor:pointer;font-weight:700;padding:6px 0}
.ik-group .ik-fields{margin-top:8px}
.ik-in input[data-ik-field],.ik-in select[data-ik-field],.ik-in input[data-ik-ans]{flex:1;min-width:0}
.ik-field.ik-low{border-style:dashed}
.ik-src{display:inline-block;font-size:.72rem;font-weight:600;padding:1px 8px;border-radius:999px;margin-inline-start:6px;vertical-align:middle;background:var(--softer,#f2f4f7);color:var(--muted);border:1px solid var(--line)}
.ik-src-user{background:var(--brand-soft,#e8f0fe);color:var(--brand);border-color:transparent}
.ik-src-market,.ik-src-materials,.ik-src-rates,.ik-src-official{background:var(--good-bg,#e7f6ee);color:var(--good,#0c6b52);border-color:transparent}
.ik-src-ai,.ik-src-rules{background:var(--warn-bg,#fff4e0);color:var(--ink,inherit);border-color:transparent}
.ik-src-missing{background:var(--bad-bg,#fdecec);color:var(--bad);border-color:transparent}
.ik-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.ik-card{border:1px solid var(--line);border-radius:12px;padding:12px;display:grid;gap:8px;align-content:start;border-inline-start-width:4px}
.ik-card.ik-good{border-inline-start-color:var(--good)}.ik-card.ik-warn{border-inline-start-color:var(--warn)}.ik-card.ik-bad{border-inline-start-color:var(--bad)}
.ik-card.ik-good .ik-dot{background:var(--good)}.ik-card.ik-warn .ik-dot{background:var(--warn)}.ik-card.ik-bad .ik-dot{background:var(--bad)}
.ik-pick{display:flex;gap:6px;align-items:center;font-weight:700;font-size:1.02rem;cursor:pointer}
.ik-pick input{width:auto;padding:0}
.ik-kpis{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}
.ik-kpis div{display:grid;gap:2px}
.ik-kpis span{font-size:.75rem;color:var(--muted)}
.ik-kpis b{font-size:1rem}
.ik-warnline{color:var(--bad);margin:0}
.isg-chip{display:inline-flex;gap:4px;align-items:center;margin-inline-start:6px;margin-top:4px;padding:3px 8px;border-radius:99px;border:1px solid var(--brand);background:var(--brand-soft,transparent);color:var(--brand);font:inherit;font-size:.75rem;cursor:pointer;white-space:nowrap}
.isg-chip.isg-maybe{border-style:dashed;color:var(--muted);border-color:var(--line-strong,var(--line))}
/* «قیمت مصالح و برآورد ساخت» (materialsCost.js) — بر پایهٔ کلاس‌های mk-* صفحهٔ بازارِ مسکن */
.mc-controls{display:grid;grid-template-columns:minmax(220px,2fr) minmax(150px,1fr);gap:12px;align-items:start;max-width:760px}
.mc-controls .field{margin-bottom:6px}
.mc-page .subtabs{margin:8px 0 10px}
.mc-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:4px 14px}
.mc-form-choices{margin-top:8px;padding-top:10px;border-top:1px dashed var(--line)}
.mc-field{margin-bottom:6px}
.mc-field input::placeholder,.mc-num::placeholder{color:var(--muted);opacity:.75}
.mc-check{display:flex;align-items:center;gap:8px;min-height:38px;cursor:pointer}
.mc-num{width:130px;text-align:center;font-variant-numeric:tabular-nums}
.mc-table .mc-grouprow td{background:var(--softer);font-weight:800;font-size:.8rem;color:var(--ink-2)}
.mc-conf{font-size:.68rem;padding:1px 8px}
.mc-conf-h{background:var(--good-bg,#e8f5ec);border-color:var(--good-line,#b9dfc5)}
.mc-conf-m{background:var(--softer)}
.mc-conf-l,.mc-conf-n{background:var(--warn-bg);border-color:var(--warn-line)}
.mc-params td{white-space:normal;vertical-align:top}
.mc-params td:first-child{min-width:260px}
.mc-params tr.mc-changed td{background:var(--brand-soft)}
.mc-details>summary,.mc-pkg>summary{cursor:pointer;padding:4px 0;list-style-position:inside}
.mc-details[open]>summary{margin-bottom:8px}
.mc-detail-actions{display:flex;justify-content:flex-end;margin-bottom:8px}
.mc-pkg{border-top:1px solid var(--line);padding:6px 0}
.mc-pkg>summary{display:flex;justify-content:space-between;gap:10px}
.mc-pkg[open]>summary{margin-bottom:8px}
.mc-lines td{white-space:normal}
.mc-lines td:first-child{min-width:220px}
.mc-bill td:first-child{white-space:normal;min-width:180px}
.mc-obs{width:100%}
.mc-obs td{white-space:normal;vertical-align:top}
.mc-warn ul{margin:6px 0 0;padding-inline-start:18px}
.mc-warn li{margin:2px 0}
@media (max-width:640px){.mc-controls{grid-template-columns:1fr}.mc-num{width:100%}.mc-form{grid-template-columns:1fr 1fr}}
@media (max-width:420px){.mc-form{grid-template-columns:1fr}}
.mc-controls{grid-template-columns:minmax(220px,2fr) minmax(150px,1fr) minmax(210px,1fr);max-width:980px}
.mc-label{display:block;font-size:.8rem;font-weight:700;color:var(--ink-2);margin-bottom:6px}
.mc-seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--paper)}
.mc-seg button{border:0;background:none;padding:8px 16px;font:inherit;font-size:.85rem;cursor:pointer;color:var(--ink-2)}
.mc-seg button+button{border-inline-start:1px solid var(--line)}
.mc-seg button.active{background:var(--brand-soft);color:var(--brand-ink);font-weight:800}
.mc-seg button:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.mc-table .mc-tiercol{background:var(--brand-soft)}
.mc-tiersel{min-width:130px;font-size:.8rem}
.mc-subhead{font-size:.82rem;font-weight:700;color:var(--ink-2);margin:4px 0 6px}
.mc-histtable{margin:6px 0 12px}
@media (max-width:640px){.mc-controls{grid-template-columns:1fr}}
.mc-official{background:var(--brand-soft);border:1px solid var(--line);line-height:1.9}
.mc-official .btn{margin-inline-start:8px}
.mc-transfer{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;background:var(--brand-soft);border:1px solid var(--line);line-height:1.9;margin:10px 0}
/* «تحلیل‌های پروژهٔ شما» (dynamicBlocks.js) — بلوک‌های پویا زیرِ نتیجهٔ «شروع سریع»؛ جای ثابت، فقط باز/جمع */
:root{--db-s1:#2a78d6;--db-s2:#eb6834;--db-track:#ecebe6}
html[data-theme="dark"]{--db-s1:#3987e5;--db-s2:#d95926;--db-track:#2c2c2a}
#ikBlocks:empty{display:none}
#ikBlocks{margin:14px 0 4px}
.db-head{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;margin-bottom:8px}
.db-head h4{margin:0}
.db-list{display:grid;gap:8px}
.db-block{border:1px solid var(--line);border-radius:12px;background:var(--card,#fff)}
.db-block>summary{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;padding:10px 14px;cursor:pointer;list-style:none;min-height:24px}
.db-block>summary::-webkit-details-marker{display:none}
.db-block>summary::before{content:"‹";display:inline-block;width:12px;color:var(--muted);transition:transform .15s}
.db-block[open]>summary::before{transform:rotate(-90deg)}
.db-block:not([open])>summary{color:var(--muted)}
.db-block:not([open])>summary .db-title{color:var(--ink)}
.db-title{font-weight:600}
.db-sum{font-size:.85rem;color:var(--muted);margin-inline-start:auto}
.db-badge{font-size:.72rem;padding:1px 8px;border-radius:99px;border:1px solid var(--brand);color:var(--brand)}
.db-badge-bad{border-color:var(--bad);color:var(--bad)}
.db-body{padding:0 14px 12px}
.db-chart{height:240px;width:100%}
.db-chart-sm{height:180px}
.db-bar,.db-tl-row{display:grid;grid-template-columns:minmax(110px,190px) 1fr auto;gap:10px;align-items:center;margin:6px 0;font-size:.9rem}
.db-bl{color:var(--muted)}
.db-track{height:10px;border-radius:5px;background:var(--db-track);overflow:hidden;display:block}
.db-track i{display:block;height:100%;border-radius:5px}
.db-s1{background:var(--db-s1)}.db-s2{background:var(--db-s2)}
.db-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.db-stats>div{display:grid;gap:2px}
.db-stats span{font-size:.8rem;color:var(--muted)}
.db-neg{color:var(--bad)}.db-warn{color:var(--warn)}
.db-note{margin:8px 0 0;font-size:.85rem;line-height:1.9}
.db-note.bad{color:var(--bad)}.db-note.warn{color:var(--warn)}.db-note.good{color:var(--good)}
.db-table{width:100%;border-collapse:collapse;font-size:.9rem}
.db-table th,.db-table td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:start}
.db-table th{color:var(--muted);font-weight:500}
.db-base td{font-weight:600}
@media (max-width:600px){.db-bar,.db-tl-row{grid-template-columns:1fr auto}.db-bar .db-track,.db-tl-row .db-track{grid-column:1/-1;order:3}.db-sum{margin-inline-start:0;width:100%}}
.mc-required{line-height:1.9;margin-bottom:14px}
.mc-reqrows{display:grid;gap:10px;margin-top:8px}
.mc-reqrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.mc-reqrow label{min-width:260px;font-weight:700}
.mc-reqrow .small{flex-basis:100%}
.kpi.mc-incomplete .value{opacity:.72}
@media (max-width:640px){.mc-reqrow label{min-width:0;flex-basis:100%}}

/* پیوندِ «برآورد هزینه‌ها» با برآوردِ قیمت مصالح (materialsLink.js) و آمارِ رسمی کنارِ دیوار */
.bc-matlink:empty{display:none}
.ml-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;margin-bottom:12px}
.ml-lines{display:flex;flex-direction:column;gap:4px;min-width:0}
.ml-cmp{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.mk-official th[rowspan],.mk-official th[colspan]{text-align:center}
.ik-alts{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 2px}
.ik-alt{font:inherit;font-size:12px;padding:3px 10px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer}
.ik-alt.on{border-color:var(--brand);background:var(--brand-soft);color:var(--ink);font-weight:600}
.ik-alt:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
