/* ============================================================
   Zweistufiges CSS (Production) — Platzhalter, bis das volle Bundle da ist
   ============================================================
   Blockierend lädt nur das Sofort-CSS (AssetBundler::CSS_CRITICAL: Grundlagen, Header, Nav,
   Teaser, Cookie-Banner + das ganze Kunden-Tier). Das volle Bundle kommt danach ohne zu
   blockieren; bis dahin setzt FrontendView `css-pending` auf <html>.

   Sichtbar bleibt nur, was das Sofort-CSS vollständig gestaltet — alles andere ist so lange
   unsichtbar (visibility, nicht display: Bildladen läuft weiter) UND aus dem Fluss (s. unten).
   Neues Element direkt unter <body>, das beim ersten Bild sichtbar sein muss → hier ausnehmen
   UND sein CSS in CSS_CRITICAL aufnehmen.

   ⚠ Warum position: absolute: `body` ist ein Grid mit benannten Zeilen (banner, header, …). Ein
   unsichtbares Element OHNE seine Regeln aus dem vollen Bundle wurde automatisch in die erste freie
   Zeile gesetzt — bei ips.saarland der Rückruf-Kasten #info-overlay in „banner" ÜBER dem Kopf:
   247 px leerer Raum, beim Eintreffen des Bundles sprang alles nach oben (CLS 0,263, gemessen
   01.10.2026). Absolut belegt es keine Zeile; volle Breite, damit Skripte, die vorher messen,
   keine Schrumpfmaße sehen.

   Fallstrick abgesichert: Lädt das volle Bundle nie (Fehler, kein JS), entfernt ein Timeout bzw.
   onerror die Klasse; ohne JS wird sie gar nicht erst gesetzt (s. FrontendView::get_css_links). */

html.css-pending body > :not(#site-header, #teaser-slider, #cookie-consent, script, dialog) {
  visibility: hidden;
  position: absolute;
  inset-inline: 0;
}
