/* Scoped print foundation. Each printable family owns its page size. */
@page erp-portrait-page { size: A4 portrait; margin: 6mm; }
@page erp-receipt-page { size: A4 portrait; margin: 6mm; }
@page erp-id-page { size: A4 portrait; margin: 0; }
@page erp-record-page { size: A4 portrait; margin: 8mm; }
@page final-marksheet-page { size: A4 landscape; margin: 5mm; }

.print-guidance {
  margin: 12px auto 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
  text-align: center;
}

.print-asset-fallback {
  display: none;
  width: 100%;
  height: 100%;
  place-items: center;
  border-radius: inherit;
  color: #fff;
  background: linear-gradient(135deg, #1777a7, #2aa69a);
  font-weight: 800;
  text-transform: uppercase;
}

.print-asset-failed > .print-asset-fallback,
.print-asset-empty > .print-asset-fallback { display: grid; }
.print-asset-failed > img[data-print-asset] { display: none !important; }
.marksheet-header-photo.print-asset-failed { display: grid !important; }

/* Screen-side measurement mirrors the printable box before opening the PDF dialog. */
html.print-fit-measuring .certificate-print.premium-certificate,
html.print-fit-measuring .welcome-letter-sheet,
html.print-fit-measuring .salary-slip-sheet,
html.print-fit-measuring .assessment-result-sheet {
  width: 210mm !important;
  height: 284mm !important;
  min-height: 284mm !important;
  max-height: 284mm !important;
  box-sizing: border-box !important;
}
html.print-fit-measuring .premium-final-marksheet {
  width: 287mm !important;
  height: 199mm !important;
  min-height: 199mm !important;
  max-height: 199mm !important;
  box-sizing: border-box !important;
}
html.print-fit-measuring [data-print-fit] > * { flex-shrink: 0 !important; }
html.print-fit-measuring .print-fit-compact.certificate-print.premium-certificate { padding: 10mm 12mm 8mm !important; }
html.print-fit-measuring .print-fit-compact .certificate-body { min-height: 0 !important; font-size: 10.5pt !important; line-height: 1.48 !important; }
html.print-fit-measuring .print-fit-compact .certificate-authority { margin-top: 6mm !important; }
html.print-fit-measuring .print-fit-compact.welcome-letter-sheet { padding: 10mm 12mm 8mm !important; }
html.print-fit-measuring .print-fit-compact .welcome-letter-message { font-size: 10pt !important; line-height: 1.48 !important; }
html.print-fit-measuring .print-fit-compact .welcome-letter-details,
html.print-fit-measuring .print-fit-compact .welcome-letter-information { margin-block: 3mm !important; }
html.print-fit-measuring .print-fit-compact.salary-slip-sheet { padding: 7mm 9mm !important; }
html.print-fit-measuring .print-fit-tight.certificate-print.premium-certificate,
html.print-fit-measuring .print-fit-tight.welcome-letter-sheet,
html.print-fit-measuring .print-fit-tight.salary-slip-sheet { padding: 5.5mm 7mm !important; }
html.print-fit-measuring .print-fit-tight .balanced-document-header { min-height: 20mm !important; padding-bottom: 3mm !important; }
html.print-fit-measuring .print-fit-tight .document-header-copy h1,
html.print-fit-measuring .print-fit-tight .welcome-letter-school h1 { font-size: 18pt !important; }
html.print-fit-measuring .print-fit-tight .certificate-body,
html.print-fit-measuring .print-fit-tight .welcome-letter-message { font-size: 9.2pt !important; line-height: 1.35 !important; }
html.print-fit-measuring .assessment-result-sheet.print-fit-compact { padding: 8mm 10mm !important; }
html.print-fit-measuring .assessment-result-sheet.print-fit-compact .assessment-result-table th,
html.print-fit-measuring .assessment-result-sheet.print-fit-compact .assessment-result-table td { padding: 5px 6px !important; font-size: 9px !important; }
html.print-fit-measuring .assessment-result-sheet.print-fit-tight { padding: 6mm 8mm !important; }
html.print-fit-measuring .assessment-result-sheet.print-fit-tight .assessment-result-table th,
html.print-fit-measuring .assessment-result-sheet.print-fit-tight .assessment-result-table td { padding: 3px 4px !important; font-size: 8px !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-compact { padding: 6mm 8mm !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-compact .premium-marksheet-table th,
html.print-fit-measuring .premium-final-marksheet.print-fit-compact .premium-marksheet-table td { padding: 3.5px 3px !important; font-size: 8.5px !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-tight { padding: 4.5mm 6mm !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-tight .premium-marksheet-table th,
html.print-fit-measuring .premium-final-marksheet.print-fit-tight .premium-marksheet-table td { padding: 2px 3px !important; font-size: 8px !important; line-height: 1.05 !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-tight .premium-marksheet-header { min-height: 76px !important; padding-bottom: 5px !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-tight .marksheet-header-side { height: 75px !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-tight .premium-marksheet-header h1 { font-size: 22px !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-tight .premium-marksheet-header p { margin: 1px 0 !important; font-size: 8px !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-tight .premium-marksheet-header strong { padding: 2px 12px !important; font-size: 8px !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-tight .marksheet-student-details-table { margin: 4px 0 !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-tight .marksheet-student-details-table td { padding: 3px 5px !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-tight .premium-result-strip > div { padding: 3px !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-tight .premium-result-strip strong { margin-top: 1px !important; font-size: 10px !important; }
html.print-fit-measuring .premium-final-marksheet.print-fit-tight .premium-marksheet-signatures { padding: 15px 34px 0 !important; }

.receipt-school-copy,
.document-header-copy,
.welcome-letter-school,
.id-card-print h1,
.id-card-print h2,
.id-card-print p,
.id-card-print dd,
.certificate-body,
.joining-letter-recipient,
.assessment-result-meta strong,
.marksheet-student-details-table strong,
.premium-marksheet-table td:first-child {
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: normal;
}

@media print {
  html,
  body {
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
  }

  .document-print-page,
  .welcome-letter-page,
  .salary-slip-page,
  .assessment-result-print-page {
    page: erp-portrait-page;
  }

  .receipt-page { page: erp-receipt-page; }
  .id-card-page,
  .bulk-print-page,
  .single-id-a4-sheet,
  .bulk-a4-sheet { page: erp-id-page; }
  .marksheet-print-body,
  .premium-final-marksheet { page: final-marksheet-page; }
  .complete-record-page,
  .complete-record-document { page: erp-record-page; }

  .receipt-page,
  .document-print-page,
  .welcome-letter-page,
  .salary-slip-page,
  .assessment-result-print-page,
  .bulk-print-page,
  .marksheet-print-body,
  .complete-record-page,
  .complete-record-document,
  .premium-fee-receipt,
  .single-id-a4-sheet,
  .bulk-a4-sheet,
  .certificate-print,
  .welcome-letter-sheet,
  .salary-slip-sheet,
  .assessment-result-sheet,
  .premium-final-marksheet {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }
  .premium-final-marksheet > * { flex-shrink: 0 !important; }

  .print-toolbar,
  .bulk-print-toolbar,
  .receipt-actions,
  .receipt-cancel-form,
  .print-guidance,
  [data-screen-only] {
    display: none !important;
  }

  /* Portrait documents stay inside the real printable box, including borders. */
  .document-print-page,
  .welcome-letter-page,
  .salary-slip-page,
  .assessment-result-print-page {
    width: 100% !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    background: #fff !important;
  }

  .certificate-print.premium-certificate,
  .welcome-letter-sheet,
  .salary-slip-sheet,
  .assessment-result-sheet {
    width: 100% !important;
    height: 284mm !important;
    min-height: 284mm !important;
    max-height: 284mm !important;
    margin: 0 !important;
    box-shadow: none !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    break-inside: avoid-page;
    page-break-inside: avoid;
  }

  .salary-slip-sheet {
    display: flex !important;
    flex-direction: column !important;
    padding: 9mm 11mm !important;
  }
  .salary-slip-sheet .balanced-document-header { padding-bottom: 4mm !important; }
  .salary-slip-meta { margin: 4mm 0 !important; }
  .salary-slip-staff { margin-bottom: 4mm !important; }
  .salary-slip-table th,
  .salary-slip-table td { padding: 2.2mm 3.2mm !important; }
  .salary-slip-authority { margin: 3mm 0 0 auto !important; }
  .salary-slip-sheet footer { margin-top: 3mm !important; padding-top: 2mm !important; }

  /* Signature assets and permanent footers must share the final page band. */
  .certificate-authority { margin-top: 4mm !important; margin-right: 5mm !important; }
  .certificate-authority .authority-composite { height: 20mm !important; }
  .certificate-authority .authority-seal { width: 18mm !important; height: 18mm !important; }
  .certificate-authority .authority-signature { width: 32mm !important; height: 12mm !important; }
  .premium-certificate footer {
    left: 10mm !important;
    right: 10mm !important;
    bottom: 8mm !important;
    padding-top: 2mm !important;
    line-height: 1.2 !important;
  }
  .joining-letter-authority { margin-top: 2mm !important; }
  .joining-letter-authority .authority-composite { height: 14mm !important; }
  .joining-letter-authority .authority-seal { width: 14mm !important; height: 14mm !important; }
  .joining-letter-authority .authority-signature { width: 27mm !important; height: 10mm !important; }

  .welcome-letter-header { min-height: 27mm !important; padding-bottom: 4mm !important; }
  .welcome-letter-date { margin: 4mm 0 2mm auto !important; }
  .welcome-letter-title { margin: 1mm 0 3mm !important; }
  .welcome-letter-message { line-height: 1.55 !important; }
  .welcome-letter-message p { margin-bottom: 3mm !important; }
  .welcome-letter-details,
  .welcome-letter-information { margin-block: 3mm !important; }
  .welcome-letter-closing { min-height: 23mm !important; }
  .welcome-authority-assets { height: 18mm !important; }
  .welcome-letter-sheet footer { margin-top: 3mm !important; padding-top: 2mm !important; }

  /* Compact and tight modes are applied only when measured content needs them. */
  .print-fit-compact.certificate-print.premium-certificate {
    padding: 10mm 12mm 8mm !important;
  }
  .print-fit-compact .certificate-body { min-height: 0 !important; font-size: 10.5pt !important; line-height: 1.48 !important; }
  .print-fit-compact .certificate-authority { margin-top: 6mm !important; }
  .print-fit-compact.welcome-letter-sheet { padding: 10mm 12mm 8mm !important; }
  .print-fit-compact .welcome-letter-message { font-size: 10pt !important; line-height: 1.48 !important; }
  .print-fit-compact .welcome-letter-details,
  .print-fit-compact .welcome-letter-information { margin-block: 3mm !important; }
  .print-fit-compact.salary-slip-sheet { padding: 7mm 9mm !important; }
  .print-fit-compact .salary-slip-authority { margin-top: 4mm !important; }
  .print-fit-compact .salary-slip-sheet footer { margin-top: 3mm !important; }

  .print-fit-tight.certificate-print.premium-certificate,
  .print-fit-tight.welcome-letter-sheet,
  .print-fit-tight.salary-slip-sheet { padding: 5.5mm 7mm !important; }
  .print-fit-tight .balanced-document-header { min-height: 20mm !important; padding-bottom: 3mm !important; }
  .print-fit-tight .document-header-copy h1,
  .print-fit-tight .welcome-letter-school h1 { font-size: 18pt !important; }
  .print-fit-tight .certificate-body,
  .print-fit-tight .welcome-letter-message { font-size: 9.2pt !important; line-height: 1.35 !important; }
  .print-fit-tight .certificate-authority,
  .print-fit-tight .salary-slip-authority { margin-top: 4mm !important; }

  /* Fee receipt: normal records remain two half-A4 copies on one sheet. */
  .receipt-page {
    width: 100% !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
  }
  .receipt-page:not(.receipt-page-expanded) .receipt-print-sheet {
    width: 100% !important;
    height: 284mm !important;
    grid-template-rows: repeat(2, 140mm) !important;
    gap: 4mm !important;
  }
  .receipt-page-expanded {
    padding: 0 !important;
  }
  .receipt-page-expanded .receipt-print-sheet {
    display: block !important;
    width: 100% !important;
    height: auto !important;
  }
  .receipt-page-expanded .premium-fee-receipt {
    width: 100% !important;
    height: auto !important;
    min-height: 284mm !important;
    max-height: none !important;
    padding: 10mm 12mm !important;
    border-radius: 0 !important;
    break-after: page;
    page-break-after: always;
    break-inside: auto !important;
    page-break-inside: auto !important;
    overflow: visible !important;
  }
  .receipt-page-expanded .premium-fee-receipt::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 6;
    box-sizing: border-box;
    border: .3mm solid #cbdbe3;
    border-top: 1.2mm solid var(--primary, #176786);
    pointer-events: none;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .receipt-page-expanded .premium-fee-receipt:last-child {
    break-after: auto;
    page-break-after: auto;
  }
  .receipt-page-expanded .receipt-table { font-size: 9pt !important; }
  .receipt-page-expanded .receipt-table th,
  .receipt-page-expanded .receipt-table td { padding: 2.2mm 2.5mm !important; }
  .receipt-page-expanded .receipt-table tr { break-inside: avoid; page-break-inside: avoid; }

  /* Exact CR80-size ID card sheets. */
  .id-card-page,
  .single-id-a4-sheet,
  .bulk-a4-sheet {
    width: 210mm !important;
    height: 297mm !important;
    min-height: 297mm !important;
  }
  .id-card-page,
  .single-id-a4-sheet { break-after: avoid-page; page-break-after: avoid; }
  .bulk-a4-sheet { break-after: page; page-break-after: always; }
  .bulk-a4-sheet:last-child { break-after: auto; page-break-after: auto; }

  /* Assessment result density remains one Portrait page. */
  .assessment-result-sheet.print-density-compact { padding: 8mm 10mm !important; }
  .assessment-result-sheet.print-fit-compact { padding: 8mm 10mm !important; }
  .assessment-result-sheet.print-density-compact .assessment-result-header { padding-bottom: 8px !important; }
  .assessment-result-sheet.print-density-compact .assessment-result-meta { margin: 8px 0 !important; }
  .assessment-result-sheet.print-density-compact .assessment-result-table th,
  .assessment-result-sheet.print-density-compact .assessment-result-table td,
  .assessment-result-sheet.print-fit-compact .assessment-result-table th,
  .assessment-result-sheet.print-fit-compact .assessment-result-table td { padding: 5px 6px !important; font-size: 9px !important; }
  .assessment-result-sheet.print-density-compact .assessment-result-summary { margin-top: 8px !important; }
  .assessment-result-sheet.print-density-compact footer { padding-top: 28px !important; }
  .assessment-result-sheet.print-density-tight { padding: 6mm 8mm !important; }
  .assessment-result-sheet.print-fit-tight { padding: 6mm 8mm !important; }
  .assessment-result-sheet.print-density-tight .assessment-result-table th,
  .assessment-result-sheet.print-density-tight .assessment-result-table td,
  .assessment-result-sheet.print-fit-tight .assessment-result-table th,
  .assessment-result-sheet.print-fit-tight .assessment-result-table td { padding: 3px 4px !important; font-size: 8px !important; }

  /* Final marksheet is the only Landscape family. */
  .marksheet-print-body {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
  }
  .premium-final-marksheet {
    width: 100% !important;
    height: 199mm !important;
    min-height: 199mm !important;
    max-height: 199mm !important;
    margin: 0 !important;
    padding: 8mm 10mm !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    break-inside: avoid-page;
    page-break-inside: avoid;
    break-after: page;
    page-break-after: always;
  }
  .premium-final-marksheet:last-child { break-after: auto; page-break-after: auto; }
  .premium-final-marksheet.print-density-compact { padding: 6mm 8mm !important; }
  .premium-final-marksheet.print-fit-compact { padding: 6mm 8mm !important; }
  .premium-final-marksheet.print-density-compact .premium-marksheet-table th,
  .premium-final-marksheet.print-density-compact .premium-marksheet-table td,
  .premium-final-marksheet.print-fit-compact .premium-marksheet-table th,
  .premium-final-marksheet.print-fit-compact .premium-marksheet-table td { padding: 3.5px 3px !important; font-size: 8.5px !important; }
  .premium-final-marksheet.print-density-compact .premium-result-strip,
  .premium-final-marksheet.print-density-compact .marksheet-progress-notes,
  .premium-final-marksheet.print-density-compact .marksheet-grade-guide { margin-top: 5px !important; }
  .premium-final-marksheet.print-density-tight { padding: 4.5mm 6mm !important; }
  .premium-final-marksheet.print-fit-tight { padding: 4.5mm 6mm !important; }
  .premium-final-marksheet.print-density-tight .premium-marksheet-table th,
  .premium-final-marksheet.print-density-tight .premium-marksheet-table td,
  .premium-final-marksheet.print-fit-tight .premium-marksheet-table th,
  .premium-final-marksheet.print-fit-tight .premium-marksheet-table td { padding: 2px 3px !important; font-size: 8px !important; line-height: 1.05 !important; }
  .premium-final-marksheet.print-density-tight .premium-marksheet-header,
  .premium-final-marksheet.print-fit-tight .premium-marksheet-header { min-height: 76px !important; padding-bottom: 5px !important; }
  .premium-final-marksheet.print-density-tight .marksheet-header-side,
  .premium-final-marksheet.print-fit-tight .marksheet-header-side { height: 75px !important; }
  .premium-final-marksheet.print-density-tight .premium-marksheet-header h1,
  .premium-final-marksheet.print-fit-tight .premium-marksheet-header h1 { font-size: 22px !important; }
  .premium-final-marksheet.print-density-tight .premium-marksheet-header p,
  .premium-final-marksheet.print-fit-tight .premium-marksheet-header p { margin: 1px 0 !important; font-size: 8px !important; }
  .premium-final-marksheet.print-density-tight .premium-marksheet-header strong,
  .premium-final-marksheet.print-fit-tight .premium-marksheet-header strong { padding: 2px 12px !important; font-size: 8px !important; }
  .premium-final-marksheet.print-density-tight .marksheet-student-details-table,
  .premium-final-marksheet.print-fit-tight .marksheet-student-details-table { margin: 4px 0 !important; }
  .premium-final-marksheet.print-density-tight .marksheet-student-details-table td,
  .premium-final-marksheet.print-fit-tight .marksheet-student-details-table td { padding: 3px 5px !important; }
  .premium-final-marksheet.print-density-tight .premium-marksheet-table td:first-child,
  .premium-final-marksheet.print-fit-tight .premium-marksheet-table td:first-child,
  .premium-final-marksheet.print-density-tight .premium-marksheet-table .subject-mark,
  .premium-final-marksheet.print-fit-tight .premium-marksheet-table .subject-mark,
  .premium-final-marksheet.print-density-tight .premium-marksheet-table tbody td:nth-last-child(3) strong,
  .premium-final-marksheet.print-fit-tight .premium-marksheet-table tbody td:nth-last-child(3) strong {
    padding-left: 2px !important;
    font-size: 8px !important;
    line-height: 1.05 !important;
  }
  .premium-final-marksheet.print-density-tight .premium-marksheet-table .subject-grade,
  .premium-final-marksheet.print-fit-tight .premium-marksheet-table .subject-grade {
    min-height: 12px !important;
    height: auto !important;
    font-size: 8px !important;
    line-height: 1 !important;
  }
  .premium-final-marksheet.print-density-tight .premium-result-strip,
  .premium-final-marksheet.print-fit-tight .premium-result-strip,
  .premium-final-marksheet.print-density-tight .marksheet-progress-notes,
  .premium-final-marksheet.print-fit-tight .marksheet-progress-notes,
  .premium-final-marksheet.print-density-tight .marksheet-grade-guide,
  .premium-final-marksheet.print-fit-tight .marksheet-grade-guide,
  .premium-final-marksheet.print-density-tight .premium-marksheet-signatures,
  .premium-final-marksheet.print-fit-tight .premium-marksheet-signatures { flex-shrink: 0 !important; }
  .premium-final-marksheet.print-density-tight .premium-result-strip > div,
  .premium-final-marksheet.print-fit-tight .premium-result-strip > div { padding: 3px !important; }
  .premium-final-marksheet.print-density-tight .premium-result-strip strong,
  .premium-final-marksheet.print-fit-tight .premium-result-strip strong { margin-top: 1px !important; font-size: 10px !important; }
  .premium-final-marksheet.print-density-tight .premium-marksheet-signatures,
  .premium-final-marksheet.print-fit-tight .premium-marksheet-signatures { padding: 15px 34px 0 !important; }
}

@media print {
  html body .document-type-label,
  html body .premium-fee-receipt .document-header-copy .document-type-label {
    font-size: 10.5pt !important;
  }
  html body .premium-certificate .certificate-title > .document-type-label {
    font-size: 13.5pt !important;
    font-weight: 800;
    line-height: 1.2;
    letter-spacing: 1.7px;
  }
  html body .premium-final-marksheet .premium-marksheet-header .document-type-label {
    margin-top: 1mm !important;
    padding-block: 1mm !important;
    font-size: 8.5pt !important;
    line-height: 1.1 !important;
  }
  .premium-final-marksheet .marksheet-school-copy { min-width: 0 !important; }
  .premium-final-marksheet .premium-result-strip {
    min-height: 10mm !important;
    flex-shrink: 0 !important;
  }
}
