@media print {
  /* Dialogs (e.g. new-student) use transform: scale on .mdc-dialog__surface — Chrome often prints a blank
     page unless transforms are cleared for print. */
  html,
  body {
    overflow: visible !important;
    height: auto !important;
  }
  body.cdk-global-scrollblock {
    overflow: visible !important;
  }
  /* لا تُطبَّع على #report ولا على إستمارة الحوار — وإلا تُلغى عروض القالب/المحرر (تنسيق بالعرض) */
  body *:not(#report):not(#report *):not(#student-registration-form):not(#student-registration-form *) {
    width: auto !important;
  }
  body * {
    visibility: hidden;
  }
  #sidebar {
    display: none;
  }
  /* School shell: keep print focused on #report */
  .header-outer,
  app-breadcrumb {
    display: none !important;
  }
  .page-header {
    display: none;
  }
  .report-title {
    display: none;
  }
  /* Printable islands: everything else stays visibility:hidden */
  #report,
  #report *,
  #student-registration-form,
  #student-registration-form * {
    visibility: visible !important;
  }
  .page-wrapper{
    right: 0px !important;
    margin-left: 0px !important;
  }
  #report {
    display: block !important;
    position: absolute;
    right: 0!important;
    top: 0!important;
    width: 100%;
    z-index: 11111;
    width: 100% !important;
    max-width: 100% !important;
    overflow: visible !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }
  /* اتجاه الطباعة بالعرض لاستمارة التسجيل: يُحقَن من التطبيق عبر @page الافتراضي (غير المسمى) */
  /* إستمارة التسجيل (new-student dialog) — fixed to viewport avoids clipped composited layers under dialog transform */
  #student-registration-form {
    display: block !important;
    position: fixed !important;
    right: 0 !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    z-index: 2147483647 !important;
    overflow: visible !important;
    transform: none !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    break-inside: auto !important;
    page-break-inside: auto !important;
  }
  #student-registration-form .reg-print-inner {
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    break-inside: auto !important;
    page-break-inside: auto !important;
  }
  /* Dialog overlay: don’t cover/clobber print */
  .cdk-overlay-backdrop {
    display: none !important;
    visibility: hidden !important;
  }
  .cdk-overlay-pane {
    position: static !important;
    max-width: 100% !important;
    width: 100% !important;
    visibility: visible !important;
  }
  /* Chrome print: descendants can stay unpainted if intermediate overlay nodes keep visibility:hidden */
  .cdk-overlay-pane * {
    visibility: visible !important;
  }
  .mat-mdc-dialog-container,
  .mat-mdc-dialog-surface,
  .mdc-dialog__surface,
  .custom-dialog-container .mdc-dialog__surface {
    overflow: visible !important;
    max-height: none !important;
    height: auto !important;
    box-shadow: none !important;
    transform: none !important;
    filter: none !important;
  }
  .cdk-overlay-container {
    visibility: visible !important;
    position: static !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
  }
  /* When printing registration from students dialog, suppress MatDialog so only the form prints */
  body.printing-student-registration-form .cdk-overlay-container,
  body.printing-student-registration-form .cdk-overlay-pane,
  body.printing-student-registration-form .cdk-overlay-pane * {
    display: none !important;
    visibility: hidden !important;
  }
  /* Global * { width:auto } breaks table layout and logos in Chrome print */
  #report table {
    display: table !important;
    width: 100% !important;
    max-width: 100% !important;
    table-layout: auto !important;
    border-collapse: collapse !important;
  }
  #report thead {
    display: table-header-group !important;
  }
  #report tbody {
    display: table-row-group !important;
  }
  #report tr {
    display: table-row !important;
  }
  #report th,
  #report td,
  #student-registration-form th,
  #student-registration-form td {
    display: table-cell !important;
    width: auto !important;
    max-width: none !important;
    vertical-align: middle !important;
    word-wrap: break-word !important;
    overflow: visible !important;
  }
  #student-registration-form table {
    display: table !important;
    width: 100% !important;
    max-width: 100% !important;
    table-layout: auto !important;
    border-collapse: collapse !important;
  }
  #student-registration-form thead {
    display: table-header-group !important;
  }
  #student-registration-form tbody {
    display: table-row-group !important;
  }
  #student-registration-form tr {
    display: table-row !important;
  }
  #student-registration-form .reg-summary-row {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
  }
  #student-registration-form .reg-summary-box {
    display: block !important;
    width: auto !important;
    max-width: 100% !important;
  }
  /* Fee grid may span pages; thead repeats via table-header-group above */
  #student-registration-form .reg-fees-table {
    break-inside: auto !important;
    page-break-inside: auto !important;
  }
  #report .account-report-print-intro {
    visibility: visible !important;
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    page-break-inside: avoid !important;
  }
  #report .account-report-header-message {
    visibility: visible !important;
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    page-break-inside: avoid !important;
  }
  #report img,
  #student-registration-form img {
    display: inline-block !important;
    max-width: 140px !important;
    max-height: 72px !important;
    width: auto !important;
    height: auto !important;
    object-fit: contain !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    page-break-inside: avoid !important;
  }
  /*
   * Other PrimeNG dialogs: hide. Registration form lives inside .p-dialog-mask
   * (appendTo=body); display:none on that ancestor blanks Chrome print entirely.
   */
  .p-dialog-mask:not(:has(#student-registration-form)),
  .p-overlay-mask:not(:has(#student-registration-form)) {
    display: none !important;
    visibility: hidden !important;
  }

  .p-dialog-mask:has(#student-registration-form),
  .p-overlay-mask:has(#student-registration-form) {
    display: block !important;
    visibility: visible !important;
    position: static !important;
    inset: auto !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    bottom: auto !important;
    width: 100% !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    background: transparent !important;
    background-color: transparent !important;
    pointer-events: none !important;
  }

  .p-dialog-mask:has(#student-registration-form) .p-dialog.registration-form-preview-dialog,
  .p-overlay-mask:has(#student-registration-form) .p-dialog.registration-form-preview-dialog,
  .p-dialog-mask:has(#student-registration-form) .p-dialog-content,
  .p-overlay-mask:has(#student-registration-form) .p-dialog-content {
    display: block !important;
    visibility: visible !important;
    position: static !important;
    transform: none !important;
    filter: none !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    box-shadow: none !important;
    background: #fff !important;
  }

  /* Hide dialog chrome; keep only the form island (toolbar uses print:hidden too) */
  .p-dialog-mask:has(#student-registration-form) .p-dialog-header,
  .p-dialog-mask:has(#student-registration-form) .p-dialog-footer,
  .p-dialog-mask:has(#student-registration-form) .p-dialog-header-icons,
  .p-overlay-mask:has(#student-registration-form) .p-dialog-header,
  .p-overlay-mask:has(#student-registration-form) .p-dialog-footer,
  .p-overlay-mask:has(#student-registration-form) .p-dialog-header-icons,
  .registration-form-preview__toolbar,
  .registration-form-preview__status {
    display: none !important;
    visibility: hidden !important;
  }
  /* Term grades report: was shifted with right:-17rem and broke landscape/full-width print */
  .grades-table {
    direction: rtl;
    position: static !important;
    top: auto !important;
    right: auto !important;
    left: auto !important;
    font-family: "Tajawal", sans-serif;
    width: 100% !important;
    max-width: 100% !important;
    visibility: visible !important;
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
  }

  .grades-table.card .card-body,
  .grades-table > .card-body {
    border: none !important;
  }

  #report .p-paginator {
    display: none !important;
  }

  /* PrimeNG 18 p-table scrollable: expand so all columns print */
  #report .p-datatable-scrollable,
  #report .p-datatable-table-container,
  #report .p-virtualscroller,
  #report .p-scroller {
    overflow: visible !important;
    max-height: none !important;
    height: auto !important;
  }

  #report .sticky-col,
  #report .sticky-col-right {
    position: static !important;
  }

  /*
   * Termly grades: global #report uses position:absolute;right:0 which in RTL lets a wide table
   * extend past the left sheet edge (looks “cut off”). Use normal flow here so width:100% clips to the page.
   */
  .grades-table #report {
    position: relative !important;
    right: auto !important;
    left: auto !important;
    top: auto !important;
    width: 100% !important;
    max-width: 100% !important;
  }

  /* Full-width table; wrapper borders removed so no stray line under the grid */
  #report > p {
    font-size: 8pt !important;
    margin: 0 0 3px !important;
  }

  #report .term-result-print-fit,
  #report p-table,
  #report .p-datatable,
  #report .p-datatable-table-container {
    width: 100% !important;
    max-width: 100% !important;
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
  }

  #report .p-datatable-table {
    table-layout: fixed !important;
    width: 100% !important;
    max-width: 100% !important;
    font-size: 5.25pt !important;
    line-height: 1.15 !important;
    border-collapse: collapse !important;
  }

  #report .p-datatable-table th,
  #report .p-datatable-table td {
    min-width: 0 !important;
    padding: 1px 2px !important;
    white-space: normal !important;
    word-break: break-word !important;
    overflow-wrap: break-word !important;
    vertical-align: middle !important;
    box-sizing: border-box !important;
  }

  #report .p-datatable-table thead tr:first-child .subject-header {
    white-space: normal !important;
    text-align: center !important;
    font-size: 4.75pt !important;
    line-height: 1.1 !important;
    padding: 1px 1px !important;
  }

  #report .p-datatable-table thead tr:last-child th:nth-child(1),
  #report .p-datatable-table tbody td:nth-child(1) {
    width: 2.5% !important;
  }

  #report .p-datatable-table thead tr:last-child th:nth-child(2),
  #report .p-datatable-table tbody td:nth-child(2) {
    width: 11% !important;
    text-align: right !important;
    white-space: normal !important;
  }

  /* Grade headers: wrap in tiny cells so fixed layout can stay within page width */
  #report .p-datatable-table thead tr:last-child th:nth-child(n + 3) {
    white-space: normal !important;
    word-break: break-word !important;
    overflow-wrap: break-word !important;
    text-align: center !important;
    font-size: 4.5pt !important;
    line-height: 1.05 !important;
    padding: 0 1px !important;
  }

  #report .p-datatable-table tbody td:nth-child(n + 3) {
    white-space: nowrap !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
    text-align: center !important;
    font-size: 5.25pt !important;
    padding: 0 1px !important;
  }

  .grades-table #report .w-12rem,
  #report .w-12rem {
    width: auto !important;
    min-width: 0 !important;
  }

  #report .w-6rem {
    width: auto !important;
    min-width: 0 !important;
  }
}