/* Eigene Ergänzungen zu Tabler. Inline-Styles gibt es nicht (CSP style-src 'self'). */
.portal-logo { height: 28px; width: auto; }
.portal-logo-gross { height: 40px; }
.portal-marke { margin-left: .6rem; font-weight: 600; color: var(--tblr-secondary); }
.portal-schmal { max-width: 28rem; margin-inline: auto; }
.portal-mittel { max-width: 46rem; }
.portal-oeffentlich .portal-mittel { margin-inline: auto; }
.nummer { font-family: var(--tblr-font-monospace); white-space: nowrap; }
.betrag { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
/* Tablers img-responsive setzt das Bild per Inline-Style — das sperrt die CSP */
.portal-kachel-bild { width: 100%; aspect-ratio: 21 / 9; object-fit: cover; object-position: top; }
.portal-leistung-bild { width: 100%; max-height: 18rem; object-fit: cover; border-radius: var(--tblr-border-radius); }
/* Webfont-Icons erben sonst die Textgröße; Tabler rechnet in Avatar und Timeline mit SVG-Icons */
.avatar .ti, .timeline-event-icon .ti, .nav-link-icon .ti { font-size: 1.25rem; }
.empty-icon .ti { font-size: 3rem; }
.avatar-lg .ti { font-size: 1.75rem; }
.portal-code-eingabe { font-size: 1.5rem; letter-spacing: .4em; text-align: center; font-family: var(--tblr-font-monospace); }
.portal-vorformatiert { white-space: pre-line; }
form.portal-inline { display: inline; }
@media print {
    .page-body { margin: 0; }
    .card { border: 0; box-shadow: none; }
}
/* Tabellenköpfe wie im ERP: kein Uppercase, kein Letter-Spacing */
.table thead th { text-transform: none; letter-spacing: normal; font-size: .8125rem; background: transparent; }
