/* CNBC Finance Tool — Print/PDF Stylesheet (CNBC-48)
   Wird via <link media="print"> geladen — gilt ausschließlich beim Drucken/PDF-Export.
   Browser-Druckdialog → „Als PDF speichern" liefert das saubere Layout. */

/* ── @page: A4 Querformat mit Footer (Seitenzahl + Datum) ──────────── */
@page {
  size: A4 landscape;
  margin: 14mm 12mm 18mm 12mm;
  @bottom-left   { content: "CNBC Finance Tool"; font-family: 'Inter', system-ui, sans-serif; font-size: 8pt; color: #6b7280; }
  @bottom-right  { content: "Seite " counter(page) " / " counter(pages); font-family: 'Inter', system-ui, sans-serif; font-size: 8pt; color: #6b7280; }
}

/* Hochformat für narrative Tabs (Settings, APIs, Open Items als Liste) — via named page */
@page portrait { size: A4 portrait; margin: 18mm 14mm 20mm 14mm; }
body.print-portrait .tab.print-active { page: portrait; }

/* Hintergrundfarben + Border-Akzente bewahren (Badges, KPI-Cards, Status) */
*, *::before, *::after {
  -webkit-print-color-adjust: exact !important;
  print-color-adjust: exact !important;
  color-adjust: exact !important;
}

/* ── Reset Body + Container ─────────────────────────────────────────── */
html, body {
  background: #fff !important;
  color: #1a2238 !important;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 9.5pt;
  line-height: 1.45;
}

/* ── Layout-Elemente komplett ausblenden ────────────────────────────── */
.sidebar,
.sidebar-user,
.nav-export-buttons,
#toast-wrap,
#screen-login,
.cell-action,
.btn-primary, .btn-secondary, .btn-ghost,
.tab-filter button, .filter-bar button,
.head-pills, .view-toggle,
.period-pills, .pill,
.oi-actions, .form-actions,
button {
  display: none !important;
}

#screen-app { display: block !important; padding: 0 !important; }
.content { padding: 0 !important; max-width: 100% !important; margin: 0 !important; }
.content > section { max-width: 100% !important; }

/* ── Nur den aktiven Tab zeigen ──────────────────────────────────────── */
.tab { display: none !important; }
.tab.print-active { display: block !important; }

/* ── Erste-Seite-Header (via .print-header div, von JS eingefügt) ───── */
.print-header {
  display: flex !important; align-items: flex-end; justify-content: space-between;
  border-bottom: 2px solid #003087; padding-bottom: 5mm; margin-bottom: 6mm;
  page-break-after: avoid;
}
.print-header .ph-brand { font-size: 14pt; font-weight: 700; color: #003087; }
.print-header .ph-brand small { display: block; font-size: 9pt; color: #6b7280; font-weight: 500; }
.print-header .ph-meta { font-size: 9pt; color: #6b7280; text-align: right; line-height: 1.4; }
.print-header .ph-meta strong { color: #1a2238; font-weight: 600; }

/* ── Tab-Head: H1 bleibt, Pills/Filter raus ─────────────────────────── */
.tab-head {
  display: block !important;
  border-bottom: 1px solid #cdd3da !important;
  padding-bottom: 3mm !important; margin-bottom: 5mm !important;
}
.tab-head h1 { font-size: 17pt; margin: 0; color: #003087 !important; font-weight: 700; }

h2 { font-size: 12pt; margin: 6mm 0 3mm; page-break-after: avoid; color: #1a2238; }
h3 { font-size: 10.5pt; margin: 4mm 0 2mm; page-break-after: avoid; color: #1a2238; }
.hint, .empty { font-size: 8.5pt; color: #6b7280; }

/* ── KPI-Karten ──────────────────────────────────────────────────────── */
.kpi-grid { display: grid !important; gap: 4mm !important; margin-bottom: 6mm !important; }
.kpi-grid-6 { grid-template-columns: repeat(3, 1fr) !important; }
.kpi-grid:not(.kpi-grid-6) { grid-template-columns: repeat(4, 1fr) !important; }

.kpi-card, .card, .bs-card, .ergebnis-card, .elim-card, .chart-card, .oi-card, .error-log-card {
  background: #fff !important;
  border: 1px solid #cdd3da !important;
  border-radius: 6px !important;
  padding: 10px 12px !important;
  box-shadow: none !important;
  break-inside: avoid;
  page-break-inside: avoid;
}
.kpi-label { font-size: 8pt !important; color: #6b7280 !important; text-transform: uppercase; letter-spacing: .1em; margin-bottom: 4px; }
.kpi-value { font-size: 14pt !important; font-weight: 700; color: #1a2238 !important; line-height: 1.15; }
.kpi-sub { font-size: 8.5pt !important; margin-top: 4px; }
.kpi-desc { font-size: 8pt !important; color: #6b7280 !important; margin-top: 4px; }

/* Statusfarben erhalten */
.pos, .kpi-card.pos .kpi-value, .kpi-sub.pos { color: #047a5a !important; }
.neg, .kpi-card.neg .kpi-value, .kpi-sub.neg { color: #c22d4b !important; }
.warn, .kpi-card.warn .kpi-value, .kpi-sub.warn { color: #ad6d00 !important; }

/* Farbiger Border-Akzent links bei KPI-Cards */
.kpi-card.pos  { border-left: 3px solid #047a5a !important; }
.kpi-card.neg  { border-left: 3px solid #c22d4b !important; }
.kpi-card.warn { border-left: 3px solid #ad6d00 !important; }

/* ── Charts ──────────────────────────────────────────────────────────── */
.chart-grid { display: grid !important; grid-template-columns: repeat(2, 1fr) !important; gap: 6mm !important; }
.chart-card { height: 75mm !important; min-height: 0 !important; display: flex !important; flex-direction: column !important; }
.chart-card canvas { max-height: 60mm !important; width: 100% !important; }
.chart-card h3 { font-size: 9pt !important; margin-bottom: 2mm; flex: 0 0 auto; }
/* Donut/Pie: quadratisch zentriert, nicht verzerrt (JS schaltet maintainAspectRatio um) */
.chart-card[data-chart-type="doughnut"],
.chart-card[data-chart-type="pie"] {
  align-items: center;
}
.chart-card[data-chart-type="doughnut"] canvas,
.chart-card[data-chart-type="pie"] canvas {
  max-width: 60mm !important; max-height: 60mm !important;
  width: 60mm !important; height: 60mm !important;
}

/* CNBC-48c: Alle-Seiten-Druck → harter Seitenumbruch vor jedem Tab außer dem ersten */
body.print-all-mode .tab.print-active.print-page-break { page-break-before: always; }
body.print-all-mode .tab.print-active { display: block !important; }

/* ── Tabellen: kompakt, Header wiederholt sich auf jeder Seite ──────── */
table {
  border-collapse: collapse !important;
  width: 100% !important;
  font-size: 8pt;
  page-break-inside: auto;
}
thead { display: table-header-group; }
tfoot { display: table-footer-group; }
tr { page-break-inside: avoid; }
th, td {
  padding: 3px 6px !important;
  border: 1px solid #d4d9e0 !important;
  vertical-align: middle;
}
.pnl-table th, .staff-table th, .journal-table th, .audit-table th, .pnl-monthly thead th {
  background: #eef1f5 !important;
  color: #1a2238 !important;
  font-weight: 700;
  font-size: 7.5pt;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.pnl-table tr.group td, .pnl-monthly tr.group td {
  background: #e2eaf5 !important;
  color: #003087 !important;
  font-weight: 700;
}
.pnl-table tr.total td, .cf-table tr.total td, .pnl-table .ergebnis td { background: #f5f7fa !important; font-weight: 700; }
.pnl-table tr.highlight td, .cf-table tr.highlight td { background: #e2eaf5 !important; font-weight: 700; }

/* Wrapper: keine eigenen Borders/Boxen mehr im Druck */
.pnl-monthly-wrap, .staff-wrap, .journal-wrap, .error-log-wrap, .pnl-wrap {
  overflow: visible !important;
  max-height: none !important;
  max-width: 100% !important;
  box-shadow: none !important;
  border: none !important;
  padding: 0 !important;
  background: transparent !important;
  isolation: auto !important;
}

/* Monatsansicht: sticky-col aufheben (kein Scrolling beim Druck) */
.pnl-monthly { min-width: 0 !important; }
.pnl-monthly td.sticky-col, .pnl-monthly th.sticky-col {
  position: static !important; min-width: 0 !important; max-width: none !important;
  background: transparent !important; box-shadow: none !important; z-index: auto !important;
  overflow: visible !important; white-space: normal !important;
}
.cf-table td.left, .cf-table th.left {
  position: static !important; box-shadow: none !important; min-width: 0 !important;
  background: transparent !important;
}

/* ── Inputs/Selects als nackter Text drucken ────────────────────────── */
input, select, textarea {
  border: none !important;
  background: transparent !important;
  padding: 0 !important;
  font: inherit !important;
  color: inherit !important;
  width: auto !important;
  -webkit-appearance: none !important;
     -moz-appearance: none !important;
          appearance: none !important;
  box-shadow: none !important;
}
input[type=date]::-webkit-calendar-picker-indicator,
input[type=number]::-webkit-inner-spin-button { display: none; }
input[type=checkbox] { display: inline-block !important; }
select { padding-right: 0 !important; background-image: none !important; }

/* ── Badges + Status-Chips ───────────────────────────────────────────── */
.badge-status, .role-badge, .prio, .err-source, .badge-method {
  display: inline-block !important;
  padding: 1px 6px !important;
  border-radius: 3px !important;
  font-size: 7.5pt !important;
  font-weight: 700 !important;
  border: 1px solid #cdd3da;
}
.badge-status.offen, .badge-status.in_progress, .prio-MEDIUM { background: #fff5d6 !important; color: #ad6d00 !important; }
.badge-status.bezahlt, .badge-status.resolved        { background: #d6f0e3 !important; color: #047a5a !important; }
.badge-status.open, .prio-HIGH                       { background: #fce6ec !important; color: #c22d4b !important; }
.badge-status.storniert, .prio-LOW                   { background: #eef1f5 !important; color: #6b7280 !important; }

/* ── Open Items als Liste ────────────────────────────────────────────── */
.oi-card { margin-bottom: 4mm !important; padding: 8px 10px !important; }
.oi-detail[open] > summary { font-weight: 600; }
.oi-detail-body { white-space: pre-wrap; font-size: 8.5pt; }

/* ── Fehler-Log Cards ────────────────────────────────────────────────── */
.error-log-card { margin-bottom: 4mm !important; padding: 8px 10px !important; }
.error-log-card .err-stack { font-size: 7.5pt; max-height: none; overflow: visible; }
.error-log-card details.err-stack-wrap[open] .err-stack { background: #f5f7fa !important; }

/* ── Page-Break Helpers ──────────────────────────────────────────────── */
.print-break-before { page-break-before: always !important; }
.print-break-after  { page-break-after: always !important; }
.print-avoid-break  { page-break-inside: avoid !important; break-inside: avoid !important; }
h2, h3 { page-break-after: avoid; }

/* Letzte Tabelle pro Tab darf keine leere Seite produzieren */
.tab.print-active > *:last-child { page-break-after: auto !important; }

/* Charts manchmal zu hoch — auf 1 Reihe begrenzen */
@media print {
  .chart-grid { page-break-inside: auto; }
  .chart-grid > .chart-card { page-break-inside: avoid; }
}

/* Druck-Header in JS injiziert: .print-header (siehe printActiveTab) */
