/* گزارش رسمی قابل ارائه — چیدمان A4 و یکسان برای همه‌ی خدمات محاسباتی.
 *
 * چرا چاپ مرورگر و نه کتابخانه‌ی PDF: تولید PDF فارسی با کتابخانه‌های جاوااسکریپت
 * نیازمند جاسازی فونت و پیاده‌سازی شکل‌دهی حروف (letter shaping) است و معمولاً متن
 * را به‌هم‌ریخته می‌کند. موتور چاپ مرورگر فارسی را درست می‌چیند، A4 واقعی می‌سازد و
 * «ذخیره به‌صورت PDF» را رایگان می‌دهد — بدون هیچ وابستگی تازه.
 */


/* Vazirmatn همراه خود سایت است (مجوز OFL — fonts/vazirmatn/OFL.txt). پیش از این فقط نامش در
   font-family بود و روی دستگاهی که نصبش نداشت Segoe UI یا Tahoma جایش می‌نشست؛ هر دستگاه یک قلم.
   وزن‌های ایستا (نه فایل متغیر): مرورگر فقط وزن‌های به‌کاررفته را می‌گیرد، و PDF گزارش که سرور با
   همین قلم می‌سازد کوچک و دقیقاً هم‌اندازه‌ی چاپ مرورگر می‌ماند. */
@font-face { font-family: "Vazirmatn"; src: url("/fonts/vazirmatn/Vazirmatn-Regular.woff2") format("woff2"); font-weight: 100 449; font-display: swap; }
@font-face { font-family: "Vazirmatn"; src: url("/fonts/vazirmatn/Vazirmatn-Medium.woff2") format("woff2"); font-weight: 450 549; font-display: swap; }
@font-face { font-family: "Vazirmatn"; src: url("/fonts/vazirmatn/Vazirmatn-SemiBold.woff2") format("woff2"); font-weight: 550 649; font-display: swap; }
@font-face { font-family: "Vazirmatn"; src: url("/fonts/vazirmatn/Vazirmatn-Bold.woff2") format("woff2"); font-weight: 650 749; font-display: swap; }
@font-face { font-family: "Vazirmatn"; src: url("/fonts/vazirmatn/Vazirmatn-ExtraBold.woff2") format("woff2"); font-weight: 750 1000; font-display: swap; }

@page {
  size: A4;
  /* حاشیه عمداً کم است: گزارش باید صفحه را پر کند نه اینکه فضای خالی چاپ شود.
     ۸ میلی‌متر از محدوده‌ی چاپ‌ناپذیر بیشتر چاپگرهای خانگی و اداری بیرون است. */
  margin: 9mm 8mm 10mm;
}

/* ——— پوشش تمام‌صفحه هنگام آماده‌سازی گزارش ——— */
.rp-overlay {
  position: fixed; inset: 0; z-index: 9999;
  background: #F1EFEA; overflow-y: auto;
  padding: 24px 16px 60px;
}
.rp-toolbar {
  position: sticky; top: 0; z-index: 2;
  max-width: 210mm; margin: 0 auto 18px;
  display: flex; gap: 10px; flex-wrap: wrap; align-items: center; justify-content: flex-end;
  padding: 12px 16px; border-radius: 14px;
  background: rgba(255,255,255,.94); backdrop-filter: blur(10px);
  border: 1px solid rgba(15,76,69,.12);
}
.rp-toolbar .rp-spacer { margin-inline-end: auto; font-size: 13.5px; color: #4A5A55; }
.rp-toolbar button {
  padding: 10px 18px; border-radius: 10px; cursor: pointer;
  font-family: inherit; font-size: 14px; font-weight: 600;
  border: 1px solid transparent; background: #0F4C45; color: #fff;
}
.rp-toolbar button.ghost { background: transparent; color: #0F4C45; border-color: rgba(15,76,69,.22); }
.rp-toolbar button:hover { opacity: .88; }

/* ——— برگه ——— */
/* برگه‌ی روی صفحه به اندازه‌ی محتواست (نه یک A4 کامل با پایین خالی) و همان قلم و اندازه‌های چاپ را دارد؛ چاپ و
   PDF دقیقاً همین را می‌چینند (خواست کارفرما، ۱۲ مهر ۱۴۰۵: «نسخه‌ی پرینت دقیق همان نسخه‌ی گزارش سایت»).
   لیگچرها خاموش‌اند: ظاهر Vazirmatn عوض نمی‌شود (لا همان شکل را دارد) ولی در PDF هر نویسه گلیف خودش را
   می‌گیرد و متن کپی‌شده درست می‌ماند — با لیگچر «اطلاعات» در کپی «اطالعات» می‌شد. */
.rp-sheet {
  width: 210mm; min-height: 0;
  margin: 0 auto; padding: 9mm 8mm 10mm;
  box-sizing: border-box;
  background: #fff; color: #17211E;
  font-family: Vazirmatn, "IRANSansX", Tahoma, sans-serif;
  font-size: 11.5pt; line-height: 1.85;
  font-variant-ligatures: none; font-feature-settings: "liga" 0, "rlig" 0, "dlig" 0;
  box-shadow: 0 10px 40px rgba(0,0,0,.13);
}

/* ——— سربرگ ——— */
.rp-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
  padding-bottom: 10px; margin-bottom: 14px;
  border-bottom: 2px solid #0F4C45;
}
.rp-brand { display: flex; align-items: center; gap: 10px; }
.rp-brand img { height: 42px; width: auto; }
.rp-brand-txt strong { display: block; font-size: 13pt; color: #0F4C45; line-height: 1.4; }
/* نام «بارو» داخل خودِ لوگو است؛ سربرگ فقط شرح سامانه و نشانی سایت را می‌آورد. */
.rp-brand-txt span { display: block; font-size: 8.5pt; color: #5A6B66; line-height: 1.6; }
.rp-brand-txt .rp-brand-site { color: #0F4C45; direction: ltr; text-align: right; letter-spacing: .2px; }
.rp-head-left { text-align: left; font-size: 8.5pt; color: #5A6B66; line-height: 1.7; }
.rp-head-left a { color: #0F4C45; text-decoration: none; }

.rp-title { text-align: center; margin: 0 0 12px; }
.rp-title h1 { font-size: 15pt; margin: 0 0 4px; color: #0F4C45; }
.rp-title p { margin: 0; font-size: 9pt; color: #5A6B66; }

/* ——— نوار شناسه ——— */
.rp-meta {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
  margin-bottom: 14px; padding: 9px 12px;
  background: #F5F8F7; border: 1px solid #DCE6E3; border-radius: 8px;
  font-size: 9pt;
}
.rp-meta div span { color: #5A6B66; }
.rp-meta div strong { color: #17211E; font-weight: 700; }

/* ——— بخش‌ها ——— */
/* بخش بلند (مسیر محاسبه، جدول سهم وراث) بین برگ‌ها جاری می‌شود. پیش‌تر کل بخش «نشکن» بود و اگر در باقی‌مانده‌ی
   برگ جا نمی‌شد یکجا به برگ بعد می‌پرید — برگ اول بعد از «مبلغ نهایی» خالی می‌ماند و تأییدها تنها روی برگ سوم.
   حالا فقط واحدهای کوچک (یک گام، یک ردیف، جمع، کادر تأیید) نمی‌شکنند و عنوان بخش از محتوایش جدا نمی‌افتد. */
.rp-section { margin-bottom: 14px; }
.rp-section > h2 {
  font-size: 11pt; margin: 0 0 8px; padding: 6px 10px;
  background: #0F4C45; color: #fff; border-radius: 6px;
  break-after: avoid; page-break-after: avoid;
}
.rp-pair, .rp-table tr { break-inside: avoid; }
.rp-table thead { display: table-header-group; }

/* جدول چهارستونی سهم وراث روی صفحه‌ی موبایل از قاب بیرون می‌زد و کل صفحه را افقی
   اسکرول می‌کرد. اسکرول باید داخل خودِ جدول بماند — و در چاپ اصلاً وجود نداشته باشد. */
.rp-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.rp-table { width: 100%; border-collapse: collapse; font-size: 9.5pt; }
.rp-table th, .rp-table td {
  border: 1px solid #DCE6E3; padding: 7px 9px; text-align: right; vertical-align: top;
}
.rp-table th { background: #F5F8F7; font-weight: 700; color: #17211E; white-space: nowrap; }
.rp-table td.num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.rp-table tr:nth-child(even) td { background: #FAFCFB; }

/* دو ستونه برای ورودی‌ها تا صفحه هدر نرود */
.rp-pairs { display: grid; grid-template-columns: 1fr 1fr; gap: 0 14px; }
.rp-pair {
  display: flex; justify-content: space-between; gap: 10px;
  padding: 5px 0; border-bottom: 1px dotted #D5E0DD; font-size: 9.5pt;
}
.rp-pair span { color: #5A6B66; }
.rp-pair strong { font-weight: 700; text-align: left; }

/* ——— مبلغ نهایی ——— */
.rp-total {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 12px 16px; margin: 12px 0;
  background: #0F4C45; color: #fff; border-radius: 8px;
  break-inside: avoid;
}
.rp-total span { font-size: 10.5pt; }
.rp-total strong { font-size: 15pt; font-variant-numeric: tabular-nums; }

/* ——— مسیر محاسبه ——— */
.rp-step {
  border: 1px solid #DCE6E3; border-radius: 6px;
  padding: 8px 10px; margin-bottom: 7px; break-inside: avoid; font-size: 9pt;
}
.rp-step b { display: block; color: #0F4C45; margin-bottom: 3px; font-size: 9.5pt; }
.rp-step .rp-formula { color: #4A5A55; }
.rp-step .rp-sub {
  display: block; margin-top: 4px; padding: 5px 8px;
  background: #F5F8F7; border-radius: 4px;
  /* جانشانی‌ها گاهی فرمول لاتین‌اند و گاهی جمله‌ی فارسیِ حاوی عدد. plaintext جهت را
     از نخستین نویسه‌ی قوی هر بند می‌گیرد، پس هر دو درست چیده می‌شوند؛ با ltr ثابت،
     عددِ ابتدای جمله‌ی فارسی به انتها می‌پرید. همان راهکاری که .af-step code دارد. */
  direction: ltr; unicode-bidi: plaintext; text-align: start;
  /* قلم اصلی گزارش، نه قلم کد: قلم‌های monospace جداکننده‌ی هزارگان فارسی (٬) را ندارند و
     جایگزینش شبیه نقطه می‌شد — «۵۰۰.۰۰۰.۰۰۰» که با ممیز اشتباه گرفته می‌شود. */
  font-family: Vazirmatn, "IRANSansX", Tahoma, sans-serif; font-variant-numeric: tabular-nums;
  font-size: 8.5pt; overflow-wrap: anywhere;
}
.rp-step .rp-src { display: block; margin-top: 4px; color: #7C8C87; font-size: 8pt; }

/* توضیح کوتاه زیر یک بخش جدولی (مثل طبقه‌ی تشخیص‌داده‌شده‌ی وراث). */
.rp-section-note { margin: 6px 0 0; font-size: 8.5pt; color: #5A6B66; line-height: 1.8; }

/* بخش تصویری (شجره‌نامه). SVG نباید هنگام چاپ بین دو صفحه بشکند. */
.rp-figure { margin: 4px 0 8px; text-align: center; break-inside: avoid; page-break-inside: avoid; }
.rp-figure svg,
.rp-figure img { max-width: 100%; height: auto; }

/* ——— یادداشت و تذکر ——— */
.rp-notes { list-style: none; margin: 0; padding: 0; }
.rp-notes li {
  padding: 6px 10px; margin-bottom: 5px; font-size: 9pt; line-height: 1.8;
  background: #FFF9EC; border-inline-start: 3px solid #D6A44D; border-radius: 4px;
  break-inside: avoid;
}

.rp-disclaimer {
  font-size: 8.5pt; line-height: 1.85; color: #4A5A55;
  padding: 9px 12px; border: 1px solid #DCE6E3; border-radius: 6px;
  background: #FAFCFB; break-inside: avoid;
}
.rp-disclaimer strong { color: #17211E; }

/* ——— پایان گزارش: جای مهر و تأیید کارشناس + پاورقی، با هم و همیشه در آخر ——— */
.rp-end { break-inside: avoid; page-break-inside: avoid; }
.rp-sign {
  display: grid; grid-template-columns: 1fr 1fr; gap: 14px;
  margin-top: 16px; break-inside: avoid;
}
.rp-sign-box {
  border: 1px dashed #9FB3AE; border-radius: 8px;
  padding: 10px 12px; min-height: 34mm;
  display: flex; flex-direction: column;
}
.rp-sign-box h3 { margin: 0 0 4px; font-size: 9.5pt; color: #0F4C45; }
.rp-sign-box .rp-sign-hint { font-size: 8pt; color: #7C8C87; line-height: 1.7; }
.rp-sign-lines { margin-top: auto; font-size: 8.5pt; color: #5A6B66; }
.rp-sign-lines i { display: block; font-style: normal; margin-top: 9px; }

/* ——— پاورقی ——— */
.rp-foot {
  margin-top: 14px; padding-top: 8px; border-top: 1px solid #DCE6E3;
  display: flex; justify-content: space-between; gap: 12px;
  font-size: 8pt; color: #7C8C87;
}
.rp-foot a { color: #0F4C45; text-decoration: none; }

/* ═══════════ حالت فشرده — یک برگ A4 ═══════════
 *
 * برای استعلام‌هایی که خروجی‌شان کوتاه است و شکستنشان بین دو صفحه فقط برگه‌ی دوم
 * نیمه‌خالی می‌سازد. عمداً بیرون از @media print نوشته شده تا پیش‌نمایش روی صفحه
 * دقیقاً همان چیزی باشد که چاپ می‌شود؛ اگر فقط در چاپ اعمال می‌شد، هر تغییری باید
 * کورکورانه و با آزمون‌وخطای چاپ سنجیده می‌شد.
 *
 * خدماتی که compact نمی‌دهند هیچ‌کدام از این قاعده‌ها را نمی‌بینند.
 */
.rp-sheet.rp-compact { font-size: 9.5pt; line-height: 1.65; padding: 8mm 8mm 7mm; }

.rp-compact .rp-head { padding-bottom: 7px; margin-bottom: 9px; }
.rp-compact .rp-brand img { height: 34px; }
.rp-compact .rp-title { margin-bottom: 8px; }
.rp-compact .rp-title h1 { font-size: 13pt; }
.rp-compact .rp-title p { font-size: 8pt; }
.rp-compact .rp-meta { margin-bottom: 9px; padding: 6px 10px; font-size: 8pt; }

.rp-compact .rp-section { margin-bottom: 9px; }
.rp-compact .rp-section > h2 { font-size: 9.5pt; padding: 4px 9px; margin-bottom: 6px; }

/* مشخصات کنار کروکی. ستون نقشه کمی پهن‌تر است چون تصویر افقی است. */
.rp-grid { display: grid; grid-template-columns: 1fr 1.18fr; gap: 10px; align-items: start; }
.rp-grid .rp-section { margin-bottom: 0; }

/* در ستون باریکِ چیدمان دوستونه، جفت‌های دوستونه دیگر جا نمی‌شوند. */
.rp-compact .rp-grid .rp-pairs { grid-template-columns: 1fr; }
.rp-compact .rp-pair { padding: 4px 0; font-size: 9pt; }

.rp-compact .rp-table { font-size: 8.5pt; }
.rp-compact .rp-table th,
.rp-compact .rp-table td { padding: 4px 8px; }

.rp-compact .rp-figure { margin: 0; }
.rp-compact .rp-figure img { max-height: 58mm; }
.rp-compact .rp-section-note { font-size: 7.5pt; margin-top: 5px; line-height: 1.7; }

.rp-compact .rp-notes li { padding: 4px 8px; margin-bottom: 3px; font-size: 8.5pt; line-height: 1.6; }
.rp-compact .rp-disclaimer { font-size: 8pt; line-height: 1.7; padding: 7px 10px; }

/* در حالت فشرده فقط کادر تأیید کارشناس می‌ماند — کادر «مرجع دریافت‌کننده» در استعلام
   کاربردی ندارد. پس تک‌ستونه می‌شود، وگرنه نیمی از عرض برگه خالی می‌ماند.
   شرحِ بلندِ داخل کادر هم برداشته می‌شود؛ خودِ کادر و خط‌های امضا می‌مانند. */
.rp-compact .rp-sign { margin-top: 10px; gap: 10px; grid-template-columns: 1fr; }
.rp-compact .rp-sign-box { padding: 8px 10px; min-height: 22mm; }
.rp-compact .rp-sign-box h3 { font-size: 9pt; }
.rp-compact .rp-sign-box .rp-sign-hint { display: none; }
.rp-compact .rp-sign-lines { font-size: 8pt; }
.rp-compact .rp-sign-lines i { margin-top: 7px; }

.rp-compact .rp-foot { margin-top: 10px; padding-top: 6px; font-size: 7.5pt; }

/* ═══════════ حالت چاپ ═══════════ */
@media print {
  /* کاغذ سفید: زمینه‌ی کرم صفحه‌ی خدمت (calculator.css) زیر پایان گزارش در برگ آخر خاکستری چاپ می‌شد. */
  html, body { background: #fff !important; }
  /* همه‌ی صفحه پنهان، فقط برگه چاپ شود */
  body > *:not(.rp-overlay) { display: none !important; }
  .rp-overlay {
    position: static; padding: 0; background: #fff; overflow: visible;
  }
  .rp-toolbar { display: none !important; }
  .rp-sheet {
    width: auto; min-height: 0; margin: 0; padding: 0;
    box-shadow: none;
  }
  /* حاشیه در چاپ از @page می‌آید، نه از padding برگه. اگر این نبود، padding حالت
     فشرده روی حاشیه‌ی صفحه سوار می‌شد و ارتفاع مفید را دو برابرِ لازم کم می‌کرد —
     یعنی پیش‌نمایش روی صفحه یک برگ نشان می‌داد ولی چاپ دو برگ می‌شد. */
  .rp-sheet.rp-compact { padding: 0; }
  /* سربرگ در هر صفحه تکرار نمی‌شود؛ واحدهای کوچک وسط نمی‌شکنند، بخش‌های بلند جاری می‌شوند. */
  .rp-step, .rp-total, .rp-sign, .rp-disclaimer, .rp-end, .rp-pair, .rp-table tr { break-inside: avoid; }
  .rp-table-wrap { overflow: visible; }
  .rp-section > h2 { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .rp-total, .rp-section > h2, .rp-table th, .rp-notes li {
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
  a[href]::after { content: ""; }
}

@media (max-width: 760px) {
  .rp-sheet { width: 100%; padding: 16px; }
  .rp-meta { grid-template-columns: 1fr; }
  .rp-pairs, .rp-sign { grid-template-columns: 1fr; }
}

/* گزارش بازشده از تاریخچه: فرم خالی صفحه پنهان است (markReopened در report-print.js). */
.rp-reopen-hidden { display: none !important; }
