/*
 * ============================================================
 *  infino-rechner-print.css  v2.1
 *  Infino Beratungsportal — Rechner-Stylesheet (Druck/PDF)
 *
 *  Ziel:
 *  - Im Druck/PDF erscheint nur der Rechnerinhalt
 *  - WordPress / Astra / Elementor / Cookie-Banner etc. nicht
 *  - Interaktive UI-Elemente werden nicht gedruckt
 *  - Stattdessen werden strukturierte Print-Blöcke gedruckt
 *  - Layout bleibt in Chrome-zu-PDF robust und lesbar
 *
 *  Erwartete Architektur pro Rechner:
 *  .ifr-root
 *    .ifr-app
 *      .ifr-print-header.ifr-print-only
 *      .ifr-print-summary.ifr-print-only
 *      .ifr-print-inputs.ifr-print-only
 *      .ifr-print-results
 *      .ifr-print-details
 *      .ifr-print-footer.ifr-print-only
 *
 *  Wichtige Hinweise:
 *  1. Für beste Ergebnisse jeder Rechner mit befüllten
 *     .ifr-print-only Blöcken arbeiten lassen.
 *  2. Inputs/Buttons/Slider werden im Druck bewusst ausgeblendet.
 *  3. Primäre Isolierung über .ifr-rechner-inhalt (Klasse am
 *     Elementor "Beitrag Inhalt"-Container im Theme Builder Template).
 *     Fallback: body.ifr-printing per JS vor window.print() setzen.
 * ============================================================
 */

@media print {

  /* ─────────────────────────────────────────────────────────
     1 · PAGE SETUP
  ───────────────────────────────────────────────────────── */
  @page {
    size: A4 portrait;
    margin: 14mm 12mm 16mm 12mm;
  }

  html,
  body {
    background: #ffffff !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  *,
  *::before,
  *::after {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }

  a,
  a:visited {
    color: inherit !important;
    text-decoration: none !important;
  }

  /* ─────────────────────────────────────────────────────────
     2 · SEITE AUF RECHNER REDUZIEREN
     Primär: .ifr-rechner-inhalt (Klasse am Elementor "Beitrag Inhalt"-
     Container im Theme Builder Template — einmalig gesetzt, gilt für
     alle CPT-Rechner-Seiten automatisch).
     Fallback A: body.ifr-printing (per JS gesetzt vor window.print())
     Fallback B: :has()-Selektor + bekannte Astra/Elementor-Elemente
  ───────────────────────────────────────────────────────── */

  /* --- Primär: ifr-rechner-inhalt ist gesetzt --- */
  /* Alles ausblenden was den Rechner NICHT enthält — display:none belegt keinen Platz */
  body:has(.ifr-rechner-inhalt) *:not(:has(.ifr-rechner-inhalt)):not(.ifr-rechner-inhalt):not(.ifr-rechner-inhalt *) {
    display: none !important;
  }

  /* Rechner selbst und alles darin: normal anzeigen */
  .ifr-rechner-inhalt,
  .ifr-rechner-inhalt * {
    display: revert !important;
    visibility: visible !important;
  }

  /* --- Fallback A: body.ifr-printing (JS-gestützt, kein Theme Builder) --- */
  body.ifr-printing * {
    visibility: hidden !important;
  }

  body.ifr-printing .ifr-root,
  body.ifr-printing .ifr-root *,
  body.ifr-printing .ifr-root::before,
  body.ifr-printing .ifr-root::after {
    visibility: visible !important;
  }

  body.ifr-printing .ifr-root {
    position: absolute !important;
    left: 0 !important;
    top: 0 !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  /* --- Fallback B: Bekannte Astra/Elementor/WP-Elemente ausblenden ---
     Greift wenn weder .ifr-rechner-inhalt noch body.ifr-printing vorhanden. */
  header,
  footer,
  nav,
  aside,
  form[action*="search"],
  iframe:not(.ifr-print-allow),
  .site-header,
  .site-footer,
  .site-navigation,
  .main-header-bar,
  .main-footer-bar,
  .main-navigation,
  .ast-builder-grid-row,
  .ast-breadcrumbs-wrapper,
  .sidebar,
  .widget-area,
  .comments-area,
  .post-navigation,
  .related-posts,
  .elementor-location-header,
  .elementor-location-footer,
  .elementor-widget-theme-post-content + .elementor-widget,
  .cookie-banner,
  .cookie-notice,
  .cmplz-cookiebanner,
  .cmplz-blocked-content-container,
  .borlabs-cookie,
  #wpadminbar,
  .ifr-no-print {
    display: none !important;
  }

  /* Fallback B: Container ohne Rechnerinhalt ausblenden (:has-Support vorausgesetzt) */
  body > *:not(:has(.ifr-root)) {
    display: none !important;
  }

  /* Elementor/Astra-Wrapper, die den Rechner enthalten, neutralisieren */
  body *:has(> .ifr-root),
  body *:has(.ifr-root) {
    background: transparent !important;
    box-shadow: none !important;
    border: 0 !important;
  }

  /* ─────────────────────────────────────────────────────────
     3 · RECHNER-CONTAINER
  ───────────────────────────────────────────────────────── */
  .ifr-root {
    font-size: 10.5pt !important;
    line-height: 1.35 !important;
    color: #242A34 !important;
    background: #ffffff !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  .ifr-root,
  .ifr-root * {
    text-shadow: none !important;
  }

  .ifr-root .ifr-app,
  .ifr-root .ifr-app-sm,
  .ifr-root .ifr-app-md,
  .ifr-root .ifr-app-lg {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: #ffffff !important;
    overflow: visible !important;
  }

  /* ─────────────────────────────────────────────────────────
     4 · SICHTBARKEITSREGELN FÜR PRINT
  ───────────────────────────────────────────────────────── */
  .ifr-root .ifr-no-print {
    display: none !important;
  }

  .ifr-root .ifr-print-only {
    display: block !important;
  }

  .ifr-root .ifr-print-only-flex {
    display: flex !important;
  }

  .ifr-root .ifr-print-only-grid {
    display: grid !important;
  }

  /* Interaktive UI-Elemente im Druck grundsätzlich ausblenden */
  .ifr-root input,
  .ifr-root select,
  .ifr-root textarea,
  .ifr-root button,
  .ifr-root .ifr-input,
  .ifr-root .ifr-select,
  .ifr-root .ifr-slider,
  .ifr-root .ifr-slider-wrap,
  .ifr-root .ifr-slider-row,
  .ifr-root .ifr-toggle-group,
  .ifr-root .ifr-btn,
  .ifr-root .ifr-btn-navy,
  .ifr-root .ifr-btn-ghost,
  .ifr-root .ifr-btn-text,
  .ifr-root .ifr-btn-add,
  .ifr-root .ifr-toggle-btn,
  .ifr-root .ifr-actions,
  .ifr-root .ifr-form-actions {
    display: none !important;
  }

  /* Canvas direkt drucken ist oft okay, aber nicht ideal.
     Wer eine Print-Grafik hat, soll canvas per Klasse ausblenden können. */
  .ifr-root .ifr-chart-canvas.ifr-no-print,
  .ifr-root canvas.ifr-no-print {
    display: none !important;
  }

  /* ─────────────────────────────────────────────────────────
     5 · TYPOGRAFIE
  ───────────────────────────────────────────────────────── */
  .ifr-root h1,
  .ifr-root h2,
  .ifr-root h3,
  .ifr-root h4,
  .ifr-root h5,
  .ifr-root h6,
  .ifr-root p,
  .ifr-root ul,
  .ifr-root ol,
  .ifr-root li,
  .ifr-root table,
  .ifr-root tr,
  .ifr-root td,
  .ifr-root th,
  .ifr-root span,
  .ifr-root small {
    color: #242A34 !important;
  }

  .ifr-root .ifr-header {
    margin: 0 0 10pt 0 !important;
    padding: 0 !important;
  }

  .ifr-root .ifr-title {
    font-size: 19pt !important;
    line-height: 1.15 !important;
    font-weight: 900 !important;
    text-align: left !important;
    margin: 0 0 3pt 0 !important;
    page-break-after: avoid !important;
    break-after: avoid !important;
  }

  .ifr-root .ifr-subtitle {
    font-size: 9pt !important;
    line-height: 1.45 !important;
    color: #64748B !important;
    text-align: left !important;
    margin: 0 0 10pt 0 !important;
  }

  .ifr-root .ifr-section-label,
  .ifr-root .ifr-box-label {
    font-size: 7.8pt !important;
    line-height: 1.3 !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.06em !important;
    color: #64748B !important;
  }

  /* ─────────────────────────────────────────────────────────
     6 · PRINT-HEADER / FOOTER
  ───────────────────────────────────────────────────────── */
  .ifr-root .ifr-print-header {
    display: flex !important;
    justify-content: space-between !important;
    align-items: flex-end !important;
    gap: 12pt !important;
    margin: 0 0 14pt 0 !important;
    padding: 0 0 8pt 0 !important;
    border-bottom: 2px solid #242A34 !important;
    page-break-after: avoid !important;
    break-after: avoid !important;
  }

  .ifr-root .ifr-print-header-logo {
    font-size: 16pt !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    color: #242A34 !important;
  }

  .ifr-root .ifr-print-header-logo span {
    color: #EF5E18 !important;
  }

  .ifr-root .ifr-print-header-logo img {
    box-shadow: none !important;
    border-radius: 0 !important;
  }

  .ifr-root .ifr-print-header-meta {
    margin-left: auto !important;
    font-size: 7.5pt !important;
    line-height: 1.55 !important;
    color: #64748B !important;
    text-align: right !important;
  }

  .ifr-root .ifr-print-footer {
    display: block !important;
    margin-top: 16pt !important;
    padding-top: 8pt !important;
    border-top: 1px solid #CBD5E1 !important;
    font-size: 7pt !important;
    line-height: 1.55 !important;
    color: #64748B !important;
    page-break-inside: avoid !important;
    break-inside: avoid !important;
  }

  .ifr-root .ifr-print-footer-strong {
    display: block !important;
    font-weight: 700 !important;
    color: #242A34 !important;
    margin-bottom: 2pt !important;
  }

  .ifr-root .ifr-print-footer-disclaimer,
  .ifr-root .ifr-disclaimer {
    margin-top: 8pt !important;
    padding-top: 8pt !important;
    border-top: 1px solid #E5E7EB !important;
    background: transparent !important;
    border-radius: 0 !important;
    font-size: 7pt !important;
    line-height: 1.55 !important;
    color: #64748B !important;
    page-break-inside: avoid !important;
    break-inside: avoid !important;
  }

  /* ─────────────────────────────────────────────────────────
     7 · LAYOUTS
  ───────────────────────────────────────────────────────── */
  .ifr-root .ifr-layout-2col,
  .ifr-root .ifr-layout-2col.wide-result,
  .ifr-root .ifr-g2,
  .ifr-root .ifr-g3,
  .ifr-root .ifr-g4 {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 8pt !important;
    align-items: start !important;
  }

  /* Optionale gezielte Print-Helfer */
  .ifr-root .ifr-print-1col {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 8pt !important;
  }

  .ifr-root .ifr-print-2col {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 10pt !important;
  }

  .ifr-root .ifr-field-group,
  .ifr-root .ifr-card,
  .ifr-root .ifr-box,
  .ifr-root .ifr-chart-wrap,
  .ifr-root .ifr-table-wrap,
  .ifr-root .ifr-print-summary,
  .ifr-root .ifr-print-inputs,
  .ifr-root .ifr-print-results,
  .ifr-root .ifr-print-details {
    page-break-inside: avoid !important;
    break-inside: avoid !important;
  }

  .ifr-root .ifr-divider {
    margin: 8pt 0 !important;
    border: 0 !important;
    border-top: 1px solid #E5E7EB !important;
  }

  /* ─────────────────────────────────────────────────────────
     8 · KARTEN / ERGEBNISBOXEN
  ───────────────────────────────────────────────────────── */
  .ifr-root .ifr-card {
    border: 1px solid #E5E7EB !important;
    border-radius: 6px !important;
    background: #ffffff !important;
    padding: 10pt !important;
    margin: 0 0 8pt 0 !important;
  }

  .ifr-root .ifr-card-title {
    font-size: 9pt !important;
    line-height: 1.35 !important;
    font-weight: 800 !important;
    color: #203F5A !important;
    margin: 0 0 6pt 0 !important;
  }

  .ifr-root .ifr-box {
    border: 1px solid #CBD5E1 !important;
    border-radius: 6px !important;
    background: #F8FAFC !important;
    padding: 9pt 10pt !important;
  }

  .ifr-root .ifr-box.success {
    background: #F0FDF4 !important;
    border-color: #86EFAC !important;
  }

  .ifr-root .ifr-box.neutral {
    background: #F8FAFC !important;
    border-color: #CBD5E1 !important;
  }

  .ifr-root .ifr-box.highlight {
    background: #FEF0E9 !important;
    border-color: #FDBA74 !important;
  }

  .ifr-root .ifr-box.danger {
    background: #FFF1F2 !important;
    border-color: #FECDD3 !important;
  }

  .ifr-root .ifr-result-number {
    display: block !important;
    font-size: 19pt !important;
    line-height: 1.1 !important;
    font-weight: 900 !important;
    color: #242A34 !important;
    margin-top: 3pt !important;
  }

  .ifr-root .ifr-result-number.xl {
    font-size: 24pt !important;
  }

  .ifr-root .ifr-result-number.lg {
    font-size: 15pt !important;
  }

  .ifr-root .ifr-result-sub {
    display: block !important;
    font-size: 7.8pt !important;
    line-height: 1.4 !important;
    color: #64748B !important;
    margin-top: 2pt !important;
  }

  /* ─────────────────────────────────────────────────────────
     9 · ACCORDION / TOGGLES / HINWEISE
  ───────────────────────────────────────────────────────── */
  .ifr-root .ifr-acc-body {
    display: block !important;
    max-height: none !important;
    overflow: visible !important;
  }

  .ifr-root .ifr-acc-header {
    display: none !important;
  }

  /* ─────────────────────────────────────────────────────────
     10 · PRINT-WERTE FÜR EINGABEN
  ───────────────────────────────────────────────────────── */
  .ifr-root .ifr-print-inputs,
  .ifr-root .ifr-print-summary {
    margin: 0 0 10pt 0 !important;
  }

  .ifr-root .ifr-print-value-row {
    display: flex !important;
    justify-content: space-between !important;
    align-items: baseline !important;
    gap: 10pt !important;
    padding: 4pt 0 !important;
    border-bottom: 1px dotted #E5E7EB !important;
  }

  .ifr-root .ifr-print-value-row:last-child {
    border-bottom: 0 !important;
  }

  .ifr-root .ifr-pvr-label {
    flex: 0 1 auto !important;
    min-width: 0 !important;
    font-size: 8pt !important;
    line-height: 1.35 !important;
    color: #64748B !important;
  }

  .ifr-root .ifr-pvr-value {
    flex: 0 0 auto !important;
    font-size: 8.8pt !important;
    line-height: 1.35 !important;
    font-weight: 700 !important;
    color: #242A34 !important;
    text-align: right !important;
    white-space: nowrap !important;
  }

  /* ─────────────────────────────────────────────────────────
     11 · TABELLEN
  ───────────────────────────────────────────────────────── */
  .ifr-root .ifr-table-wrap {
    overflow: visible !important;
    border: 1px solid #E5E7EB !important;
    border-radius: 6px !important;
  }

  .ifr-root .ifr-table {
    width: 100% !important;
    border-collapse: collapse !important;
    font-size: 8.4pt !important;
    line-height: 1.3 !important;
  }

  .ifr-root .ifr-table thead {
    display: table-header-group !important;
  }

  .ifr-root .ifr-table tfoot {
    display: table-row-group !important;
  }

  .ifr-root .ifr-table th,
  .ifr-root .ifr-table td {
    padding: 4pt 6pt !important;
    border-bottom: 1px solid #E5E7EB !important;
    vertical-align: top !important;
  }

  .ifr-root .ifr-table thead th {
    background: #F1F5F9 !important;
    font-size: 7.8pt !important;
    font-weight: 800 !important;
    color: #203F5A !important;
    white-space: nowrap !important;
  }

  .ifr-root .ifr-table tbody tr:nth-child(even) td {
    background: #FAFAFA !important;
  }

  .ifr-root .ifr-table tr,
  .ifr-root .ifr-table thead,
  .ifr-root .ifr-table tbody,
  .ifr-root .ifr-table tfoot {
    page-break-inside: avoid !important;
    break-inside: avoid !important;
  }

  .ifr-root .ifr-num,
  .ifr-root .ifr-ta-right {
    text-align: right !important;
    white-space: nowrap !important;
  }

  .ifr-root .ifr-ta-center {
    text-align: center !important;
  }

  /* ─────────────────────────────────────────────────────────
     12 · CHARTS
  ───────────────────────────────────────────────────────── */
  .ifr-root .ifr-chart-wrap {
    overflow: visible !important;
    max-height: none !important;
    margin: 4pt 0 0 0 !important;
  }

  .ifr-root .ifr-chart-title {
    font-size: 9pt !important;
    font-weight: 800 !important;
    color: #203F5A !important;
    margin: 0 0 6pt 0 !important;
  }

  .ifr-root .ifr-chart-canvas,
  .ifr-root canvas {
    max-width: 100% !important;
    height: auto !important;
  }

  .ifr-root .ifr-print-chart {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
  }

  /* ─────────────────────────────────────────────────────────
     13 · UMBRUCH-HILFEN
  ───────────────────────────────────────────────────────── */
  .ifr-root .ifr-page-break,
  .ifr-root .ifr-break-before {
    page-break-before: always !important;
    break-before: page !important;
  }

  .ifr-root .ifr-break-after {
    page-break-after: always !important;
    break-after: page !important;
  }

  .ifr-root .ifr-avoid-break {
    page-break-inside: avoid !important;
    break-inside: avoid !important;
  }

  .ifr-root .ifr-keep-with-next {
    page-break-after: avoid !important;
    break-after: avoid !important;
  }

  /* ─────────────────────────────────────────────────────────
     14 · KLEINE DEFENSIVE RESETS
  ───────────────────────────────────────────────────────── */
  .ifr-root [style*="position: sticky"] {
    position: static !important;
  }

  .ifr-root [style*="overflow: auto"],
  .ifr-root [style*="overflow:auto"],
  .ifr-root [style*="overflow: scroll"],
  .ifr-root [style*="overflow:scroll"] {
    overflow: visible !important;
  }
}