/* ============================================================
   DRUCK-STYLESHEET (Exposé-Modus, Feedback-Runde 8, 2026-08-20)
   ============================================================
   Eingebunden in templates/pages/base.html als
   <link rel="stylesheet" media="print"> -- NACH tailwind.css, damit die
   Overrides hier gegen Utility-Klassen gewinnen.

   Warum eine eigene Datei und nicht input.css:
   · Diese Regeln brauchen kein @apply und keine Tailwind-Tokens. Sie sind
     reines CSS und muessen deshalb nicht durch den Build.
   · Ausserhalb von input.css koennen sie nicht gepurgt werden. In input.css
     lagen sie nur deshalb ausserhalb aller @layer-Bloecke, weil
     Element-Selektoren wie `nav` keinen Klassen-Kandidaten haben, den der
     Content-Scanner finden koennte (dieselbe Falle wie bei der Energieskala,
     siehe .claude/guides/learnings.md).
   · media="print" blockiert das Rendern der Seite nicht.
   · input.css war auf ueber 1500 Zeilen gewachsen.

   ACHTUNG: `.nur-druck { display: none }` gehoert NICHT hierher, sondern in
   input.css -- ein media="print"-Stylesheet greift am Bildschirm nicht, die
   Karten-Ersatzzeile stuende sonst dauerhaft ueber der Karte.

   GRUNDLAGE (gemessen an echten Page.printToPDF-Laeufen mit
   preferCSSPageSize: true, nicht an einer Bildschirm-Emulation -- die behaelt
   die Viewport-Breite und log): A4 hochkant minus 1,5 cm Rand ergibt rund
   680 CSS-px Seitenbreite. Damit greift KEIN md:/lg:-Utility. Der Ausdruck
   ist die Handy-Darstellung; .objekt-split, .objekt-sidebar und
   .merkmal-liste sind auf Papier ohnehin einspaltig und statisch und
   brauchen hier keine Regel.
   Ergebnis der Runde: 12 Seiten -> 8 Seiten. */

@page {
  size: A4 portrait;
  margin: 1.5cm;
}

/* Farbschema festnageln. Ohne das druckt ein Nutzer mit aktivem Dark Mode
   die dunkle Palette -- --k-light waere dann 69 69 67, die Sidebar also ein
   schwarzer Block und --k-bg 19 18 17, also jedes bg-krueger-bg-Element
   fast schwarz (Kontaktfoto-Rahmen, Sections auf /immobilien/).
   Werte identisch mit :root in input.css. */
:root,
[data-theme="dark"] {
  --k-red: 227 6 19;
  --k-gray: 107 106 99;
  --k-dark: 18 17 16;
  --k-light: 241 240 236;
  --k-bg: 250 250 249;
  --k-hair: 227 224 216;
  color-scheme: light;
}

/* Seitengrund WEISS (User-Feedback 2026-08-20). --k-bg (250 250 249) ist am
   Bildschirm ein warmes Fastweiss, auf Papier wurde daraus ein grauer Schleier
   ueber jeder Seite -- und die Sidebar setzte einen zweiten Grauton daneben.
   Jetzt traegt nur noch die Sidebar ihre Flaeche. */
html,
body {
  background: #fff !important;
}

/* Bildschirm-Beiwerk. `nav`/`footer` gilt bewusst GLOBAL, also auch auf
   Impressum/Datenschutz/Objektliste -- Seitenkopf und -fuss gehoeren auf
   keinem Ausdruck aufs Papier. */
nav,
footer,
.nur-bildschirm,
/* Der Verlauf ueber dem Beschreibungs-Deckel: mit aufgeklapptem Text hat er
   nichts mehr zu verbergen und blasste sonst den letzten Absatz aus. */
.objekt-beschreibung-verlauf {
  display: none !important;
}

/* Gegenstueck zu .nur-druck in input.css. */
.nur-druck {
  display: block !important;
}

/* Beschreibungs-Deckel aufmachen. Alpine setzt max-h-[28rem] per :class --
   ohne !important entschiede die Ladereihenfolge. Gemessen: 448px sichtbar
   bei 1448px Inhalt, der Rest fiel weg. */
.objekt-beschreibung-deckel {
  max-height: none !important;
  overflow: visible !important;
}

/* Die Karte ersetzt .nur-druck: das Google-Embed laedt ohne
   external_media-Einwilligung gar nicht und druckt auch mit Einwilligung als
   leerer Kasten -- eine halbe Seite ohne Information. */
.objekt-karte {
  display: none !important;
}

/* Flaechen und Bilder muessen mitdrucken, sonst verschwinden die
   Energieskala-Balken und die Sidebar-Flaeche (Standardeinstellung vieler
   Druckdialoge ist "Hintergrundgrafiken aus"). Textfarben brauchen das
   nicht. */
.energieskala-balken,
.objekt-sidebar,
img {
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

/* Umbruchschutz -- BEWUSST nur auf kleine, geschlossene Einheiten. Ein
   erster Versuch setzte break-inside:avoid auf die Section-Bloecke
   (.objekt-split > div > div); die sind laenger als eine Seite, Chrome
   schiebt sie dann auf eine frische Seite und laesst sie trotzdem
   ueberlaufen -- Ergebnis waren zwei fast leere Seiten, im PDF gemessen.
   Der Ansprechpartner-Block dagegen passt auf eine Seite und riss im
   Ist-Zustand zwischen Ueberschrift und Foto. */
.objekt-ansprechpartner,
.merkmal-liste li,
.data-row,
.energieskala {
  break-inside: avoid;
}

.objekt-section-titel,
h1,
h2,
h3 {
  break-after: avoid;
}

/* Das Kontaktfoto ist am Bildschirm spaltenbreit; auf A4 waere es eine halbe
   Seite. Gemessen: durch break-inside:avoid schob der Block eine fast leere
   Seite davor und eine leere dahinter. Passbildgroesse loest beides und liest
   sich auf Papier ohnehin richtiger. */
.objekt-ansprechpartner-foto {
  max-width: 4.5cm;
}

/* Die Sidebar ist auf Papier ein normaler Block am Ende -- sticky ergibt
   dort keinen Sinn. */
.objekt-sidebar-inhalt {
  position: static !important;
}
