/* Dokumente: A4-Layout nach Vorbild der Original-PDFs */
.doc {
  --blue: #1f5fa8; --line: #c9d4e3; --soft: #eef3fa; --ink: #222;
  box-sizing: border-box; width: 210mm; min-height: 297mm; padding: 16mm 17mm 20mm;
  background: #fff; color: var(--ink); font: 10pt/1.5 "DejaVu Sans", "Segoe UI", Arial, sans-serif;
  position: relative; margin: 0 auto;
}
.doc * { box-sizing: border-box; }
.doc h2 { color: var(--blue); font-size: 12.5pt; margin: 14pt 0 5pt; }
.doc p { margin: 0 0 6pt; }

/* Angebot */
.d-head { display: flex; align-items: center; gap: 12pt; border-bottom: 1px solid #555; padding-bottom: 8pt; margin-bottom: 10pt; }
.d-logo { max-height: 18mm; max-width: 45mm; }
.d-brand { color: var(--blue); font-size: 21pt; font-weight: 800; letter-spacing: .5px; line-height: 1.1; }
.d-sub { color: #666; font-size: 10pt; }
.d-meta-line { display: flex; justify-content: space-between; gap: 12pt; font-size: 9pt; color: #444; }
.d-meta { text-align: right; }
.d-title { color: var(--blue); font-size: 22pt; margin: 10pt 0 0; letter-spacing: .5px; }
.d-lead { color: #555; margin-bottom: 8pt; }
.d-kv { width: 92%; margin-left: 4%; border-collapse: collapse; }
.d-kv th, .d-kv td { border: 1px solid var(--line); padding: 5pt 8pt; text-align: left; font-size: 9.5pt; }
.d-kv th { background: var(--soft); width: 50%; }
.d-heizlast { background: var(--soft); border-left: 3pt solid var(--blue); padding: 5pt 9pt; }
.d-list { list-style: none; padding: 0; margin: 0; }
.d-list li { margin: 0 0 4pt; }
.d-list li::before { content: "• "; }
.d-price { width: 92%; margin-left: 4%; border-collapse: collapse; }
.d-price td { border: 1px solid var(--line); padding: 7pt 10pt; vertical-align: middle; }
.d-price small { display: block; font-size: 8pt; color: #444; }
.d-price .d-total td small { display: inline; margin-left: 4pt; color: #666; }
.d-price .amt { text-align: right; color: var(--blue); font-weight: 800; font-size: 15pt; white-space: nowrap; width: 35%; }
.d-total td { background: var(--soft); }
.d-sign-firm { margin: 14pt 0 10pt; }
.d-note { font-size: 8.5pt; color: #444; margin-top: 12pt; }
.d-foot { position: absolute; left: 17mm; right: 17mm; bottom: 9mm; border-top: 1px solid #ddd; padding-top: 3pt; font-size: 7.5pt; color: #777; }

/* Auftragsbestätigung / Rechnung */
.doc-ab { font-size: 8.6pt; line-height: 1.4; }
.ab-title { text-align: center; font-size: 15pt; margin: 0 0 12pt; letter-spacing: .5px; }
.ab-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 3pt 20pt; margin-bottom: 4pt; }
.ab-parties { margin: 10pt 0 14pt; }
.ab-caption { margin-bottom: 2pt; }
.ab-table, .ab-sum { width: 100%; border-collapse: collapse; }
.ab-table th, .ab-table td { border: 1px solid #888; padding: 4pt 5pt; text-align: left; vertical-align: middle; }
.ab-table th { background: #ddd; font-weight: 600; }
.ab-table td:nth-child(1) { width: 5%; } .ab-table td:nth-child(2) { width: 30%; }
.ab-sum { margin-top: 6pt; }
.ab-sum td { border: 1px solid #888; padding: 4pt 5pt; font-weight: 700; }
.ab-sum td:last-child { text-align: right; width: 25%; }
.ab-grand td { background: #ddd; }
.doc-ab h3 { font-size: 9pt; margin: 8pt 0 2pt; }
.ab-small { margin: 4pt 0; }
.ab-pay { width: 100%; border-collapse: collapse; }
.ab-pay td { padding: 1pt 4pt; }
.ab-pay td:last-child { text-align: right; font-weight: 700; }
.ab-signs { display: grid; grid-template-columns: 1fr 1fr; gap: 30pt; margin-top: 22pt; }
.ab-line { border-bottom: 1px solid #333; height: 40pt; display: flex; align-items: flex-end; padding-bottom: 2pt; font-size: 10pt; }
.ab-line img { max-height: 46pt; max-width: 100%; }
.ab-signinfo { margin-top: 8pt; font-size: 7pt; color: #777; }

@media print {
  @page { size: A4; margin: 14mm 15mm 14mm; }
  html, body { background: #fff !important; margin: 0; }
  .doc { width: auto; min-height: 0; padding: 0; margin: 0; box-shadow: none !important; break-after: page; }
  .doc:last-child { break-after: auto; }
  .d-foot { position: static; margin-top: 18pt; }
  .d-price tr, .d-kv tr, .ab-table tr, .ab-signs { break-inside: avoid; }
  .doc h2 { break-after: avoid; }
  .no-print { display: none !important; }
}

/* Heizlast */
.d-hl th { width: 58%; font-weight: 600; }
.d-hl .d-hl-res th, .d-hl .d-hl-res td { background: #e3ecf8; color: #12457f; }
.d-hl-table { margin-top: 4pt; font-size: 8.5pt; }
.d-hl-table td:not(:first-child), .d-hl-table th:not(:first-child) { text-align: right; }
.doc-anlage { break-before: page; }
.d-hl-table td:nth-child(1), .d-hl-table th:nth-child(1) { width: 34%; }
.d-hl-table td:nth-child(2) { width: auto; }
.doc-anlage h2 { margin-top: 10pt; }

/* Raumweise Heizlast */
.d-rw { font-size: 7.4pt; }
.d-rw th, .d-rw td { padding: 2.5pt 3.5pt !important; }
.d-rw small { color: #666; font-size: 6.6pt; }
.d-rw tr.d-warn td { background: #fff3e0; }
.doc-bericht h3 { font-size: 10pt; margin: 12pt 0 4pt; color: #12457f; }
.doc-bericht h3 small { display: block; font-weight: 400; color: #555; font-size: 7.8pt; margin-top: 1pt; }
.d-raum { break-inside: avoid; border-top: 1px solid #c9d4e3; margin-top: 8pt; }
.d-calc { font-size: 7.6pt; line-height: 1.5; color: #333; margin: 4pt 0; }
.d-method p { margin: 0 0 5pt; }
.d-rw td:nth-child(1), .d-rw th:nth-child(1) { width: auto; }
.d-raum .d-rw td:nth-child(4) { white-space: nowrap; }
.d-raum .d-rw td:nth-child(2) { text-align: left; }
.d-raum .d-rw td:nth-child(2) small { display: block; white-space: nowrap; }
.d-price .d-sub td { padding: 4pt 10pt; font-size: 9pt; color: #444; }
.d-price .amt-s { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }

/* Zahlungsvarianten */
.doc .d-h3 { color: var(--blue); font-size: 10.5pt; margin: 12pt 0 6pt; }
.d-price .d-nachlass td { color: #15803d; font-weight: 600; }
.d-plaene { display: grid; grid-template-columns: repeat(auto-fit, minmax(48mm, 1fr)); gap: 8pt; width: 92%; margin-left: 4%; }
.d-plan { border: 1px solid var(--line); border-radius: 6pt; padding: 8pt 10pt; break-inside: avoid; }
.d-plan.chosen { border: 1.5pt solid var(--blue); background: var(--soft); }
.d-plan.dim { opacity: .55; }
.d-plan-h { display: flex; align-items: center; gap: 6pt; flex-wrap: wrap; }
.d-plan-b { display: inline-grid; place-items: center; width: 15pt; height: 15pt; border-radius: 50%; background: var(--blue); color: #fff; font-size: 8pt; font-weight: 700; }
.d-plan-h strong { font-size: 9.5pt; }
.d-plan-h em { font-style: normal; font-size: 7pt; font-weight: 700; color: #b45309; background: #fff3e0; padding: 1pt 5pt; border-radius: 8pt; }
.d-plan-h em.ok { color: #15803d; background: #e8f6ee; }
.d-plan p { font-size: 8pt; color: #555; margin: 3pt 0 0; }
.d-plan-amt { color: var(--blue); font-weight: 800; font-size: 14pt; margin-top: 4pt; }
.d-plan-n { font-size: 7.6pt; color: #15803d; margin-bottom: 4pt; }
.d-plan table { width: 100%; border-collapse: collapse; font-size: 8pt; }
.d-plan td { padding: 2pt 0; border-top: 1px solid #e6ebf2; vertical-align: top; }
.d-plan td small { display: block; color: #777; font-size: 7pt; }
.d-plan td:last-child { text-align: right; white-space: nowrap; font-weight: 600; padding-left: 6pt; }
.ab-variante { border: 1px solid #bbb; padding: 4pt 6pt; margin: 4pt 0; break-inside: avoid; }
.ab-variante-h { display: flex; gap: 8pt; align-items: center; }
.ab-variante-h span:last-child { margin-left: auto; font-weight: 700; }
.ab-box { width: 9pt; height: 9pt; border: 1px solid #333; display: inline-block; flex: none; }
.ab-muted { color: #666; }

/* ---------- Auftragsbestätigung / Rechnung (neues Layout) ---------- */
.abx { font-size: 8.8pt; line-height: 1.45; color: #1d2733; }
.abx .r { text-align: right; } .abx .c { text-align: center; } .abx .b { font-weight: 700; }
.abx-head { display: flex; justify-content: space-between; gap: 16pt; align-items: flex-start; padding-bottom: 10pt; border-bottom: 2pt solid var(--blue); }
.abx-firm { display: flex; gap: 10pt; align-items: center; }
.abx-firm img { max-height: 15mm; max-width: 40mm; }
.abx-firm-n { font-size: 17pt; font-weight: 800; color: var(--blue); letter-spacing: .3px; line-height: 1.1; }
.abx-firm-a { font-size: 7.6pt; color: #667; margin-top: 2pt; }
.abx-meta { border-collapse: collapse; font-size: 8pt; }
.abx-meta th { text-align: left; font-weight: 400; color: #667; padding: 1pt 10pt 1pt 0; white-space: nowrap; }
.abx-meta td { text-align: right; font-weight: 600; padding: 1pt 0; white-space: nowrap; }
.abx-title { font-size: 15pt; margin: 14pt 0 10pt; color: #1d2733; letter-spacing: .2px; }
.abx-parties { display: grid; grid-template-columns: 1fr 1fr; gap: 8pt; margin-bottom: 4pt; }
.abx-parties > div { background: var(--soft); border-radius: 4pt; padding: 7pt 9pt; font-size: 8.4pt; }
.abx-lbl { display: block; font-size: 6.8pt; font-weight: 700; text-transform: uppercase; letter-spacing: .6px; color: var(--blue); margin-bottom: 2pt; }
.abx-h { font-size: 10pt; color: var(--blue); margin: 14pt 0 5pt; padding-bottom: 3pt; border-bottom: 1px solid var(--line); }
.abx-h span { font-weight: 400; color: #555; font-size: 9pt; margin-left: 6pt; }
.abx-pos { width: 100%; border-collapse: collapse; }
.abx-pos th { font-size: 7.4pt; font-weight: 700; color: #445; text-align: left; padding: 4pt 5pt; border-bottom: 1.2pt solid #1d2733; background: none; }
.abx-pos td { padding: 5pt 5pt; border-bottom: 1px solid #e3e8ef; vertical-align: top; }
.abx-pos th.r, .abx-pos td.r { text-align: right; white-space: nowrap; }
.abx-pos th.c, .abx-pos td.c { text-align: center; width: 7%; }
.abx-pos tbody tr:nth-child(even) td { background: #f8fafc; }
.abx-muted { color: #8a94a3; }
.abx-sumwrap { display: flex; flex-direction: column; align-items: flex-end; margin-top: 8pt; break-inside: avoid; }
.abx-sum { width: 62%; border-collapse: collapse; }
.abx-sum td { padding: 3.5pt 6pt; }
.abx-sum td:last-child { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.abx-sum td small { display: block; font-size: 7pt; color: #777; font-weight: 400; }
.abx-sum .abx-sub td { font-weight: 700; border-top: 1px solid #c9d4e3; }
.abx-sum .abx-minus td { color: #15803d; }
.abx-sum .abx-total td { font-weight: 800; font-size: 11pt; background: var(--blue); color: #fff; padding: 6pt; }
.abx-sum .abx-total td small { color: #dbe7f6; }
.abx-note { width: 62%; font-size: 7.2pt; color: #666; margin: 4pt 0 0; }
.abx-rates { width: 100%; border-collapse: collapse; }
.abx-rates td { padding: 4pt 5pt; border-bottom: 1px solid #e3e8ef; vertical-align: top; }
.abx-rates td.c { width: 7%; color: var(--blue); font-weight: 700; text-align: center; }
.abx-rates td small { display: block; color: #777; font-size: 7.4pt; }
.abx-rates td.r { text-align: right; white-space: nowrap; }
.abx-rates tfoot td { font-weight: 800; border-bottom: 0; border-top: 1.2pt solid #1d2733; }
.abx-rates.sm td { padding: 2.5pt 4pt; font-size: 8pt; }
.abx-small { margin: 3pt 0; }
.abx-vars { display: grid; grid-template-columns: 1fr 1fr; gap: 8pt; }
.abx-var { border: 1px solid #c9d4e3; border-radius: 4pt; padding: 6pt 8pt; break-inside: avoid; }
.abx-var-h { display: flex; align-items: center; gap: 6pt; }
.abx-var-n { color: #555; flex: 1; }
.abx-var-a { font-weight: 800; color: var(--blue); white-space: nowrap; }
.abx-var-s { font-size: 7.6pt; color: #15803d; margin: 2pt 0 2pt 15pt; }
.abx-info { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6pt 12pt; margin-top: 10pt; padding: 8pt 10pt; border: 1px solid var(--line); border-radius: 4pt; font-size: 8.2pt; break-inside: avoid; }
.abx-cond { background: #fff8e8; border-left: 2.5pt solid #e8a33c; padding: 5pt 8pt; font-size: 8pt; margin: 4pt 0 6pt; }
.abx-foot { margin-top: 16pt; padding-top: 5pt; border-top: 1px solid #ddd; font-size: 6.8pt; color: #888; text-align: center; }
.abx .ab-signs { margin-top: 26pt; }
/* Angebot: Preisblock */
.d-price .d-strong td { font-weight: 700; color: #222; border-top: 1px solid var(--line); }
.d-price .d-zahl .amt { color: #15803d; }
/* Farben beim Drucken erhalten, kompaktere Abstände */
.doc { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.abx-head { padding-bottom: 8pt; }
.abx-title { font-size: 13.5pt; margin: 10pt 0 8pt; }
.abx-parties > div { padding: 6pt 8pt; }
.abx-h { margin: 11pt 0 4pt; }
.abx-pos td { padding: 4pt 5pt; }
.abx-sum td { padding: 2.6pt 6pt; }
.abx-sum .abx-sub td { padding-top: 4pt; }
.abx-info { margin-top: 8pt; padding: 6pt 9pt; gap: 4pt 12pt; }
.abx-beauftragung { break-inside: avoid; }
.abx .ab-signs { margin-top: 20pt; }
.abx-foot { margin-top: 12pt; }
.abx-sum td small { display: inline; margin-left: 5pt; }
.abx .ab-signs { margin-top: 14pt; }
.abx .ab-line { height: 30pt; }
.abx-beauftragung .abx-h { margin-top: 9pt; }
.abx-note { margin-top: 3pt; }
.abx-foot { margin-top: 6pt; padding-top: 4pt; }
.abx .ab-signinfo { margin-top: 4pt; }
.abx-title { margin: 8pt 0 7pt; }

/* ---------- Auftragsbestätigung: ruhiges, seriöses Layout ---------- */
.abx-intro { display: flex; justify-content: space-between; gap: 20pt; margin: 12pt 0 0; font-size: 9pt; line-height: 1.45; }
.abx-addr.r { text-align: right; }
.abx-title { font-size: 15pt; margin: 14pt 0 6pt; }
.abx-lead { font-size: 9.2pt; line-height: 1.55; margin: 0 0 10pt; color: #2b3644; }
.abx-pos td:nth-child(2) { font-weight: 600; }
.abx-mid { display: grid; grid-template-columns: 1fr 1fr; gap: 18pt; margin-top: 10pt; align-items: start; break-inside: avoid; }
.abx-incl h3 { font-size: 9.5pt; color: var(--blue); margin: 0 0 4pt; }
.abx-incl ul { list-style: none; margin: 0; padding: 0; }
.abx-incl li { position: relative; padding: 1.6pt 0 1.6pt 13pt; font-size: 8.2pt; line-height: 1.35; }
.abx-incl li::before { content: "✓"; position: absolute; left: 0; color: #15803d; font-weight: 700; }
.abx-sumbox .abx-sum { width: 100%; }
.abx-sum td { padding: 2.4pt 0; }
.abx-sum .abx-minus td { color: #15803d; font-weight: 600; }
.abx-total { display: flex; justify-content: space-between; align-items: center; margin-top: 5pt; padding: 8pt 10pt; background: var(--blue); color: #fff; border-radius: 3pt; }
.abx-total span { font-size: 10pt; font-weight: 600; }
.abx-total strong { font-size: 15pt; font-weight: 800; }
.abx-save { margin-top: 4pt; text-align: right; color: #15803d; font-weight: 700; font-size: 9pt; }
.abx-vat { text-align: right; color: #888; font-size: 7.4pt; margin-top: 1pt; }
.abx-vars { display: grid; grid-template-columns: 1fr 1fr; gap: 10pt; }
.abx-var { border: 1px solid #c9d4e3; border-radius: 4pt; padding: 8pt 10pt; break-inside: avoid; }
.abx-var.rec { border: 1.5pt solid var(--blue); background: #f4f8fd; }
.abx-var-h { display: flex; align-items: center; gap: 7pt; }
.abx-var-h strong { font-size: 9.5pt; }
.abx-var-h em { margin-left: auto; font-style: normal; font-size: 7.4pt; font-weight: 700; color: #fff; background: var(--blue); padding: 1pt 6pt; border-radius: 8pt; }
.abx-var-a { font-size: 14pt; font-weight: 800; color: var(--blue); margin: 4pt 0 3pt 16pt; display: flex; align-items: baseline; gap: 8pt; }
.abx-var-a span { font-size: 8.4pt; font-weight: 700; color: #15803d; }
.abx-rates td.c { width: 6%; text-align: left; color: #667; font-weight: 400; }
.abx-rates.sm { margin-left: 16pt; width: calc(100% - 16pt); }
.abx-payline { font-size: 8pt; color: #445; margin: 8pt 0 0; }
.abx-beauftragung p { font-size: 9.2pt; line-height: 1.5; margin: 0 0 4pt; }
.abx-cond { font-size: 8.4pt !important; color: #444; }
.abx .ab-line { height: 34pt; }
.abx .ab-signs { margin-top: 18pt; font-size: 8.4pt; color: #445; }
/* kompakter, damit die Unterschrift auf Seite 1 bleibt */
.abx-head { padding-bottom: 6pt; }
.abx-intro { margin-top: 8pt; }
.abx-title { margin: 10pt 0 4pt; }
.abx-lead { margin-bottom: 8pt; }
.abx-pos td { padding: 3.5pt 5pt; }
.abx-mid { margin-top: 8pt; }
.abx-incl li { padding: .8pt 0 .8pt 12pt; font-size: 7.9pt; line-height: 1.3; }
.abx-var { padding: 6pt 9pt; }
.abx-var-a { font-size: 12.5pt; margin: 2pt 0 2pt 16pt; }
.abx-rates.sm td { padding: 1.8pt 4pt; }
.abx-h { margin: 9pt 0 4pt; }
.abx-payline { margin-top: 9pt; }
.abx .ab-line { height: 28pt; }
.abx .ab-signs { margin-top: 12pt; }

/* ---------- Auftragsbestätigung, zweiseitig ---------- */
.ab2 { font-size: 9pt; }
.ab2-title { font-size: 20pt; font-weight: 800; color: var(--blue); margin: 12pt 0 6pt; letter-spacing: .2px; }
.ab2 .abx-lead { font-size: 9.6pt; line-height: 1.6; margin-bottom: 12pt; }
.ab2-h { font-size: 11.5pt; color: #1d2733; margin: 16pt 0 6pt; padding-left: 8pt; border-left: 3pt solid var(--blue); line-height: 1.2; }
.ab2-h.first { margin-top: 12pt; }
.ab2-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); gap: 6pt; margin: 4pt 0 2pt; }
.ab2-facts > div { background: var(--soft); border-radius: 4pt; padding: 7pt 9pt; }
.ab2-facts span { display: block; font-size: 7.6pt; color: #5a6b80; }
.ab2-facts strong { font-size: 9.4pt; color: #12457f; }
.ab2 .abx-pos td { padding: 5pt 5pt; }
.ab2-incl { list-style: none; margin: 0; padding: 0; columns: 2; column-gap: 18pt; }
.ab2-incl li { break-inside: avoid; position: relative; padding: 2.2pt 0 2.2pt 15pt; font-size: 8.8pt; line-height: 1.4; }
.ab2-incl li::before { content: "✓"; position: absolute; left: 0; top: 1.6pt; width: 10pt; height: 10pt; border-radius: 50%; background: #15803d; color: #fff; font-size: 6.5pt; font-weight: 700; display: grid; place-items: center; line-height: 10pt; text-align: center; }
.ab2-quote { margin-top: 14pt; padding: 10pt 12pt; background: #f8fafc; border-left: 3pt solid #15803d; border-radius: 0 4pt 4pt 0; break-inside: avoid; }
.ab2-quote h3 { margin: 0 0 3pt; font-size: 9.6pt; color: #15803d; }
.ab2-quote p { margin: 0; font-size: 8.8pt; line-height: 1.55; color: #33404f; }
.ab2-page2 { break-before: page; }
.ab2-price { display: grid; grid-template-columns: 1.15fr 1fr; gap: 16pt; align-items: center; }
.ab2-price .abx-sum { width: 100%; }
.ab2-price .abx-sum td { padding: 3pt 0; font-size: 9pt; }
.ab2-totalcard { background: var(--blue); color: #fff; border-radius: 5pt; padding: 12pt 14pt; text-align: center; }
.ab2-totalcard span { display: block; font-size: 9.5pt; opacity: .9; }
.ab2-totalcard strong { display: block; font-size: 22pt; font-weight: 800; margin: 2pt 0; letter-spacing: -.3px; }
.ab2-totalcard em { font-style: normal; font-size: 8pt; opacity: .8; }
.ab2-save { margin: 7pt auto 0; display: inline-block; background: #fff; color: #15803d; font-weight: 800; font-size: 9pt; padding: 2.5pt 9pt; border-radius: 10pt; }
.ab2 .abx-vars { gap: 10pt; }
.ab2 .abx-var { padding: 9pt 11pt; }
.ab2 .abx-var-a { font-size: 14pt; }
.ab2-steps { list-style: none; margin: 2pt 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 6pt; counter-reset: none; }
.ab2-steps li { display: flex; flex-direction: column; gap: 4pt; background: #f8fafc; border-radius: 4pt; padding: 8pt 9pt; font-size: 8.4pt; line-height: 1.35; }
.ab2-steps b { display: grid; place-items: center; width: 16pt; height: 16pt; border-radius: 50%; background: var(--blue); color: #fff; font-size: 8pt; }
.ab2-steps li:first-child { background: #e8f6ee; }
.ab2-steps li:first-child b { background: #15803d; }
.ab2-contact { margin-top: 12pt; display: flex; gap: 10pt; align-items: baseline; font-size: 8.8pt; color: #33404f; padding: 7pt 10pt; border: 1px solid var(--line); border-radius: 4pt; }
.ab2-contact span { color: #5a6b80; }
.ab2-contact strong { color: #1d2733; }
.ab2-sign { margin-top: 4pt; }
.ab2 .ab-signs { margin-top: 26pt; }
.ab2 .ab-line { height: 38pt; }
@media screen { .ab2-page2 { margin-top: 26pt; padding-top: 18pt; border-top: 1px dashed #c9d4e3; } }

/* ---------- Auftragsbestätigung: mehr Freiraum ---------- */
@page ab { size: A4; margin: 17mm 19mm 16mm; }
@media print { .ab2 { page: ab; } }
.ab2 { font-size: 9.4pt; line-height: 1.55; }
.ab2 .abx-head { padding-bottom: 10pt; border-bottom-width: 1.5pt; }
.ab2 .abx-intro { margin-top: 16pt; font-size: 9.4pt; }
.ab2-title { font-size: 22pt; margin: 22pt 0 10pt; }
.ab2 .abx-lead { font-size: 10pt; line-height: 1.7; margin-bottom: 20pt; max-width: 92%; }
.ab2-facts { gap: 9pt; margin-bottom: 6pt; }
.ab2-facts > div { padding: 10pt 12pt; border-radius: 5pt; }
.ab2-facts span { margin-bottom: 2pt; }
.ab2-facts strong { font-size: 9.8pt; line-height: 1.35; }
.ab2-h { font-size: 12pt; margin: 26pt 0 10pt; padding-left: 9pt; }
.ab2-h.first { margin-top: 22pt; }
.ab2 .abx-pos th { padding: 6pt 6pt; font-size: 7.8pt; }
.ab2 .abx-pos td { padding: 8pt 6pt; font-size: 9.2pt; }
.ab2-incl { column-gap: 26pt; }
.ab2-incl li { padding: 3.6pt 0 3.6pt 17pt; font-size: 9pt; }
.ab2-incl li::before { top: 3.4pt; }
.ab2-quote { margin-top: 26pt; padding: 14pt 16pt; }
.ab2-quote h3 { margin-bottom: 5pt; font-size: 10pt; }
.ab2-quote p { font-size: 9.2pt; line-height: 1.65; }
.ab2-price { gap: 24pt; }
.ab2-price .abx-sum td { padding: 4.5pt 0; font-size: 9.4pt; }
.ab2-totalcard { padding: 18pt 16pt; border-radius: 6pt; }
.ab2-totalcard strong { font-size: 25pt; margin: 4pt 0; }
.ab2-save { margin-top: 10pt; padding: 3pt 11pt; }
.ab2 .abx-vars { gap: 14pt; }
.ab2 .abx-var { padding: 12pt 14pt; border-radius: 5pt; }
.ab2 .abx-var-a { margin: 6pt 0 6pt 16pt; }
.ab2 .abx-rates td { padding: 5pt 5pt; }
.ab2 .abx-payline { margin-top: 12pt; font-size: 8.4pt; line-height: 1.5; }
.ab2-steps { gap: 9pt; }
.ab2-steps li { padding: 12pt 11pt; gap: 7pt; font-size: 8.8pt; }
.ab2-steps b { width: 18pt; height: 18pt; font-size: 8.5pt; }
.ab2-contact { margin-top: 22pt; padding: 10pt 14pt; }
.ab2-sign p { font-size: 9.6pt; line-height: 1.6; }
.ab2 .ab-signs { margin-top: 38pt; gap: 36pt; }
.ab2 .ab-line { height: 42pt; }
/* Feinabstimmung: großzügig, aber genau 2 Seiten */
@page ab { size: A4; margin: 15mm 17mm 14mm; }
.ab2 .abx-intro { margin-top: 12pt; }
.ab2-title { margin: 16pt 0 8pt; }
.ab2 .abx-lead { margin-bottom: 14pt; }
.ab2-facts > div { padding: 8pt 11pt; }
.ab2-h { margin: 20pt 0 8pt; }
.ab2-h.first { margin-top: 18pt; }
.ab2 .abx-pos td { padding: 6.5pt 6pt; }
.ab2-incl li { padding: 2.6pt 0 2.6pt 17pt; }
.ab2-incl li::before { top: 2.6pt; }
.ab2-quote { margin-top: 20pt; padding: 12pt 14pt; }
.ab2-quote p { line-height: 1.55; }
.ab2-totalcard { padding: 14pt 14pt; }
.ab2-totalcard strong { font-size: 23pt; }
.ab2 .abx-var { padding: 10pt 12pt; }
.ab2 .abx-var-a { margin: 4pt 0 4pt 16pt; }
.ab2 .abx-rates td { padding: 3.5pt 5pt; }
.ab2-steps li { padding: 10pt 10pt; gap: 5pt; }
.ab2-contact { margin-top: 16pt; padding: 8pt 12pt; flex-wrap: wrap; gap: 4pt 10pt; }
.ab2-contact > * { white-space: nowrap; }
.ab2 .ab-signs { margin-top: 30pt; }
.ab2 .ab-line { height: 36pt; }
.ab2-quote { break-inside: auto; }
.ab2-quote { break-inside: avoid; margin-top: 14pt; padding: 10pt 14pt; }
.ab2-quote p { line-height: 1.5; }
.ab2-incl li { padding: 2.2pt 0 2.2pt 17pt; }
.ab2-incl li::before { top: 2.2pt; }
.ab2-h { margin: 18pt 0 8pt; }

/* ---------- Angebot: Marketing-Layout ---------- */
.ang-hero { margin: 18pt 0 8pt; }
.ang-hero span { display: inline-block; font-size: 8pt; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; color: #15803d; background: #e8f6ee; padding: 2pt 8pt; border-radius: 10pt; }
.ang-hero h1 { font-size: 21pt; line-height: 1.2; color: var(--blue); margin: 8pt 0 0; font-weight: 800; letter-spacing: -.2px; }
.ang-benefits { display: grid; grid-template-columns: 1fr 1fr; gap: 10pt 14pt; }
.ang-benefits > div { display: flex; gap: 9pt; align-items: flex-start; padding: 10pt 11pt; border: 1px solid var(--line); border-radius: 5pt; break-inside: avoid; }
.ang-bi { flex: none; display: grid; place-items: center; width: 24pt; height: 24pt; border-radius: 6pt; background: var(--blue); color: #fff; }
.ang-bi svg { width: 13pt; height: 13pt; }
.ang-benefits strong { display: block; font-size: 9.6pt; color: #1d2733; margin-bottom: 2pt; }
.ang-benefits p { margin: 0; font-size: 8.5pt; line-height: 1.45; color: #4a5768; }
.ang-block { break-inside: avoid; }
.ang-p { font-size: 9.2pt; line-height: 1.6; color: #33404f; margin: 0 0 8pt; }
.ang-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); gap: 8pt; }
.ang-kpis > div { text-align: center; padding: 10pt 6pt; border-radius: 5pt; background: linear-gradient(180deg, #f4f8fd, #eaf1fb); }
.ang-kpis span { display: block; font-size: 7.6pt; color: #5a6b80; }
.ang-kpis strong { display: block; font-size: 13pt; color: var(--blue); margin-top: 2pt; }
.ang-vars { display: grid; grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); gap: 10pt; align-items: stretch; }
.ang-var { position: relative; border: 1px solid #c9d4e3; border-radius: 6pt; padding: 12pt 12pt 10pt; break-inside: avoid; display: flex; flex-direction: column; }
.ang-var.rec { border: 1.6pt solid var(--blue); background: #f6f9fe; box-shadow: 0 2pt 8pt rgba(31, 95, 168, .12); }
.ang-var.chosen { border: 1.6pt solid #15803d; }
.ang-var.dim { opacity: .5; }
.ang-ribbon { position: absolute; top: -7pt; left: 12pt; background: var(--blue); color: #fff; font-size: 7pt; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; padding: 2pt 8pt; border-radius: 8pt; }
.ang-var-n { font-size: 10pt; color: #1d2733; }
.ang-var p { font-size: 8pt; color: #5a6b80; margin: 3pt 0 0; line-height: 1.4; }
.ang-var-a { font-size: 17pt; font-weight: 800; color: var(--blue); margin: 6pt 0 2pt; letter-spacing: -.2px; }
.ang-pill { align-self: flex-start; font-size: 7.8pt; font-weight: 700; color: #15803d; background: #e8f6ee; padding: 1.5pt 7pt; border-radius: 8pt; margin-bottom: 4pt; }
.ang-rates { list-style: none; margin: 6pt 0 0; padding: 6pt 0 0; border-top: 1px solid #e3e8ef; }
.ang-rates li { display: flex; justify-content: space-between; gap: 8pt; font-size: 8pt; padding: 1.8pt 0; color: #33404f; }
.ang-rates b { white-space: nowrap; color: #1d2733; }
.ang-var.single { max-width: 60%; }
.ang-close { margin-top: 20pt; break-inside: avoid; }
.ang-close p { font-size: 9.4pt; line-height: 1.6; margin: 0 0 12pt; }
.ang-sig strong { display: block; font-size: 10pt; }
.ang-sig span { font-size: 8.4pt; color: #5a6b80; }
.ang-note { margin-top: 18pt; font-size: 7.4pt; color: #8a94a3; line-height: 1.45; }
.ang-hero p { margin: 4pt 0 0; font-size: 10pt; color: #4a5768; }
/* Angebot: Abschnitte dürfen umbrechen, Überschriften bleiben beim Inhalt */
.ang2 .ang-block { break-inside: auto; }
.ang2 .ang-invest, .ang2 .ang-kpis, .ang2 .ang-vars { break-inside: avoid; }
.ang2 .ab2-h { break-after: avoid; margin: 18pt 0 8pt; }
.ang2 .ab2-incl li { padding: 2pt 0 2pt 17pt; }
.ang2 .ab2-incl li::before { top: 2pt; }
.ang2 .ab2-quote { margin-top: 16pt; }
.ang2 .ang-close { margin-top: 16pt; }
/* Angebot: drei klar gegliederte Seiten */
.ang2 .ang-page { break-before: page; }
.ang2 .ang-page > .ang-block:first-child .ab2-h, .ang2 .ang-invest.first .ab2-h { margin-top: 4pt; }
.ang2 .ab2-steps, .ang2 .ab2-steps li { break-inside: avoid; }
.ang2 .ang-block { break-inside: avoid; }
.ang2 .ang-kpis strong { font-size: 12.5pt; }
.ang2 .ang-page .ab2-quote { margin-top: 22pt; }
.ang2 .ang-page .ab2-h { margin-top: 24pt; }
.ang2 .ang-close { margin-top: 26pt; }
@media screen { .ang2 .ang-page { margin-top: 26pt; padding-top: 18pt; border-top: 1px dashed #c9d4e3; } }
.ang2 .ang-page > .ang-block:first-child .ab2-h { margin-top: 4pt; }
.ang2 > .ab2-quote { margin-top: 22pt; }
.ang-cta { display: flex; gap: 12pt; align-items: center; margin-top: 24pt; padding: 14pt 16pt; border-radius: 6pt; background: linear-gradient(135deg, #1f5fa8, #174a85); color: #fff; break-inside: avoid; }
.ang-cta .ang-bi { background: rgba(255,255,255,.18); width: 30pt; height: 30pt; }
.ang-cta strong { font-size: 11pt; display: block; }
.ang-cta p { margin: 2pt 0 0; font-size: 9pt; opacity: .92; line-height: 1.45; }

/* ---------- Druck ohne Browser-Kopf-/Fußzeile (URL, Datum) ----------
   Seitenränder 0 → der Browser hat keinen Platz für seine Kopf-/Fußzeilen.
   Der Rand kommt stattdessen als Innenabstand, der auf jeder Seite wiederholt wird. */
@page { margin: 0; }
@page ab { margin: 0; }
@media print {
  .doc { padding: 14mm 15mm; -webkit-box-decoration-break: clone; box-decoration-break: clone; }
  .ab2 { padding: 13mm 16mm 11mm; }
}

/* ---------- Auftragsbestätigung: kompakter, damit es bei 2 Seiten bleibt ---------- */
.ab2 .abx-head { padding-bottom: 7pt; }
.ab2 .abx-intro { margin-top: 9pt; }
.ab2-title { font-size: 19pt; margin: 10pt 0 5pt; }
.ab2 .abx-lead { line-height: 1.5; margin-bottom: 10pt; }
.ab2-facts > div { padding: 6pt 10pt; }
.ab2-h { margin: 13pt 0 6pt; }
.ab2-h.first { margin-top: 12pt; }
.ab2 .abx-pos th { padding: 4pt 6pt; }
.ab2 .abx-pos td { padding: 4.5pt 6pt; line-height: 1.4; }
.ab2-incl li { padding: 1.6pt 0 1.6pt 17pt; line-height: 1.35; }
.ab2-incl li::before { top: 1.8pt; }
.ab2-quote { margin-top: 12pt; padding: 8pt 12pt; }
.ab2-quote p { line-height: 1.45; }
.ab2-totalcard { padding: 11pt 14pt; }
.ab2-price .abx-sum td { padding: 3pt 0; }
.ab2 .abx-vars { gap: 10pt; }
.ab2 .abx-var { padding: 8pt 11pt; }
.ab2 .abx-payline { margin-top: 8pt; }
.ab2-steps li { padding: 8pt 9pt; }
.ab2-contact { margin-top: 12pt; padding: 6pt 12pt; }
.ab2 .ab-signs { margin-top: 22pt; }
.ab2 .ab-line { height: 32pt; }
