/* Print sheets: shown as paper on screen, printed edge to edge. */
.print-area { display: flex; flex-direction: column; align-items: safe center; gap: 22px; padding-bottom: 40px; overflow-x: auto; }
.sheet { background: #fff; color: #0C1015; width: 210mm; min-height: 297mm; padding: 12mm 11mm; box-shadow: 0 10px 40px rgba(0,0,0,.35); border-radius: 4px; display: flex; flex-direction: column; font-family: 'Rajdhani', 'Noto Kufi Arabic', Arial, sans-serif; font-size: calc(12.5px * var(--pz, 1)); font-weight: 500; position: relative; }
.sheet.landscape { width: 297mm; min-height: 210mm; }
.sheet-b { flex: 1; }
.ph-h { display: flex; align-items: center; gap: 12px; border-bottom: 3px solid #FFD23F; padding-bottom: 10px; margin-bottom: 12px; }
.ph-logo { height: 54px; max-width: 120px; object-fit: contain; }
.ph-t { flex: 1; min-width: 0; } .ph-org { font-family: 'IBM Plex Mono', monospace; font-size: 10px; letter-spacing: .16em; color: #5E645B; }
.ph-t h1 { margin: 2px 0; font-size: 22px; letter-spacing: .05em; text-transform: uppercase; line-height: 1.05; } .ph-sub { color: #5E645B; font-size: 12px; line-height: 1.35; }
.ph-logos { display: flex; gap: 10px; align-items: center; } .ph-logos img { height: 40px; max-width: 110px; object-fit: contain; }
.ph-f { margin-top: 14px; border-top: 1px solid #DDE1DA; padding-top: 8px; }
.ph-sp { display: flex; justify-content: center; gap: 18px; align-items: center; margin-bottom: 6px; flex-wrap: wrap; } .ph-sp img { height: 26px; max-width: 110px; object-fit: contain; }
.ph-fl { display: flex; justify-content: space-between; gap: 10px; font-family: 'IBM Plex Mono', monospace; font-size: 8.5px; color: #8A9086; }
table.pt { width: 100%; border-collapse: collapse; margin: 6px 0 10px; }
table.pt th { background: #0C1015; color: #F2F4F0; font-family: 'IBM Plex Mono', monospace; font-size: 8.5px; letter-spacing: .12em; text-transform: uppercase; text-align: start; padding: 5px 6px; font-weight: 500; }
table.pt td { border-bottom: 1px solid #E3E6E0; padding: 5px 6px; vertical-align: top; }
table.pt tbody tr:nth-child(even) td { background: #F6F7F4; }
table.pt.tall td { height: 30px; } table.pt.tot { width: 50%; margin-inline-start: auto; } table.pt.tot td:last-child { text-align: end; font-family: 'IBM Plex Mono', monospace; }
.pday { font-size: 14px; letter-spacing: .08em; text-transform: uppercase; margin: 14px 0 4px; border-inline-start: 4px solid #FFD23F; padding-inline-start: 8px; }
.sign { display: flex; justify-content: space-between; align-items: flex-end; margin-top: 24px; } .sign .line { width: 220px; border-top: 1px solid #0C1015; margin: 4px 0; }
.sheet .small { font-size: 10.5px; color: #5E645B; }
dl.pkv { display: grid; grid-template-columns: 200px 1fr; gap: 4px 12px; } dl.pkv dt { font-family: 'IBM Plex Mono', monospace; font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: #5E645B; padding-top: 2px; } dl.pkv dd { margin: 0; }
.pqr { width: 110px; margin-top: 12px; }
.inv-top { display: flex; justify-content: space-between; gap: 20px; margin-bottom: 10px; } .inv-top dl { display: grid; grid-template-columns: auto auto; gap: 2px 10px; margin: 0; } .inv-top dt { color: #5E645B; } .inv-top dd { margin: 0; font-family: 'IBM Plex Mono', monospace; }
.inv-pay { display: flex; gap: 20px; align-items: flex-start; margin-top: 10px; } .inv-qr { width: 90px; } .inv-pay pre { font-family: 'IBM Plex Mono', monospace; font-size: 10px; white-space: pre-wrap; margin: 4px 0; }
.sheet .lbl { font-family: 'IBM Plex Mono', monospace; font-size: 9px; letter-spacing: .14em; color: #5E645B; }
/* back numbers */
.sheet.bib { align-items: center; justify-content: center; text-align: center; } .bib-logo { height: 60px; position: absolute; top: 12mm; } .bib-n { font-family: 'Rajdhani'; font-weight: 700; font-size: 260px; line-height: 1; } .sheet.landscape .bib-n { font-size: 300px; } .bib-h { font-size: 30px; font-weight: 700; letter-spacing: .08em; } .bib-s { color: #5E645B; font-size: 16px; margin-bottom: auto; } .sheet.bib .ph-f { width: 100%; }
/* prize giving / certificates */
.podium { display: flex; flex-direction: column; gap: 8px; } .pg { display: flex; gap: 14px; align-items: center; border: 1px solid #E3E6E0; border-radius: 10px; padding: 10px 14px; font-size: 16px; } .pg .rk { font-family: 'IBM Plex Mono'; font-size: 28px; font-weight: 600; width: 50px; }
.cert-b { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 4px; } .cert-b h2 { font-size: 34px; letter-spacing: .05em; margin: 0; text-transform: uppercase; } .cert-b p { font-size: 16px; margin: 4px 0; color: #5E645B; } .cert-rank { font-family: 'Rajdhani'; font-size: 120px; font-weight: 700; line-height: 1; color: #8A6A00; } .cert-qr { width: 70px; margin-top: 14px; }
/* accreditation badges & licence cards */
.badges { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8mm; } .accb { border: 1px solid #DDE1DA; border-radius: 10px; overflow: hidden; height: 120mm; display: flex; flex-direction: column; align-items: center; text-align: center; break-inside: avoid; }
.bacc-top { width: 100%; padding: 8px; display: flex; gap: 8px; align-items: center; justify-content: center; font-weight: 700; letter-spacing: .06em; } .bacc-top img { height: 28px; } .bacc-role { margin-top: 14mm; font-family: 'IBM Plex Mono'; font-size: 12px; letter-spacing: .2em; background: #0C1015; color: #fff; padding: 4px 10px; border-radius: 4px; } .bacc-name { font-size: 26px; font-weight: 700; margin: 10px 8px; } .bacc-qr { width: 30mm; margin-top: auto; } .bacc-d { margin: 6px 0 10px; font-family: 'IBM Plex Mono'; }
.cards { display: grid; grid-template-columns: repeat(2, 85.6mm); gap: 6mm; justify-content: center; } .lcard { width: 85.6mm; height: 54mm; border-radius: 3.2mm; border: 1px solid #DDE1DA; overflow: hidden; position: relative; break-inside: avoid; background: #fff; }
.lc-top { display: flex; align-items: center; gap: 6px; padding: 5px 8px; font-size: 9px; letter-spacing: .1em; } .lc-top img { height: 18px; } .lc-b { padding: 6px 10px; } .lc-k { font-family: 'IBM Plex Mono'; font-size: 8px; letter-spacing: .14em; text-transform: uppercase; color: #5E645B; } .lc-n { font-size: 17px; font-weight: 700; margin: 3px 0 6px; line-height: 1.05; } .lc-row { display: flex; flex-direction: column; gap: 2px; font-size: 9.5px; } .lc-qr { position: absolute; right: 8px; bottom: 8px; width: 17mm; }
.formgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 14px; margin-bottom: 12px; } .formgrid label { font-family: 'IBM Plex Mono'; font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: #5E645B; } .formgrid .box { border-bottom: 1px solid #0C1015; height: 24px; }
.kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 10px; } .kpis div { border: 1px solid #E3E6E0; border-radius: 8px; padding: 8px; } .kpis span { display: block; font-family: 'IBM Plex Mono'; font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: #5E645B; } .kpis b { font-size: 22px; font-family: 'IBM Plex Mono'; } .kpis small { display: block; color: #8A9086; }
.letter { min-height: 140mm; line-height: 1.6; font-size: 13.5px; outline: none; }
.sheet svg { width: 100%; height: auto; display: block; }

@media print {
  html, body { background: #fff !important; height: auto; overflow: visible; }
  .nav, .top, .split, .fab-ai, .ai-panel, .no-print, .toasts, .pop, .scrim, .modal { display: none !important; }
  .app { display: block !important; height: auto !important; overflow: visible !important; } .main, .view { display: block !important; overflow: visible !important; padding: 0 !important; height: auto !important; }
  .view > * { max-width: none !important; } .print-area { display: block; padding: 0; gap: 0; }
  .sheet { box-shadow: none; border-radius: 0; width: auto !important; min-height: 0 !important; padding: 0; page-break-after: always; break-after: page; }
  .sheet:last-child { page-break-after: auto; break-after: auto; }
  .sheet.bib, .sheet.cert { height: 268mm; } .sheet.landscape.bib, .sheet.landscape.cert { height: 184mm; }
  * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
