/* ============================================================
   Volleyball-Portal — print styles (Spielplan-Druckbögen, A4 hoch)
   Loaded after style.css with media="print": it never blocks rendering on
   screen. The sheet layout in app/views/turniere/spielplan_druck.php and the
   constants in spielplan_logik.php are measured against these rules —
   run bin/druck-check.sh after any change here.
   ============================================================ */

@media print {
    .site-header,
    .seitenleiste,
    .leiste-schleier,
    .topbar,
    .skip-link,
    .turnier-nav,
    .site-footer,
    .flash,
    .nur-bildschirm {
        display: none !important;
    }
    .nur-druck {
        display: block;
    }
    body {
        background: #fff;
        color: #000;
        font-size: 10pt;
    }
    /* On paper the page frame is plain blocks: WebKit ignores page breaks (forced
       and avoided) inside flex and grid containers, and body/.shell/.shell-main are
       both on screen — Safari then cut QR cards in half. */
    body,
    .shell,
    .shell-main {
        display: block;
        min-height: 0;
    }
    main.container {
        max-width: none;
        margin: 0;
        padding: 0;
    }

    @page {
        size: A4 portrait;
        margin: 18mm 12mm 12mm;
    }

    .druck-blatt {
        margin-bottom: 0;
    }
    /* Jedes Blatt beginnt auf einer neuen Seite. */
    .druck-blatt + .druck-blatt {
        break-before: page;
    }
    /* Entfallene Spiele bleiben im Ausdruck stehen, nur durchgestrichen —
       auf Papier ist Ausgrauen unzuverlaessig. */
    .spiel-entfaellt td {
        opacity: 1;
        text-decoration: line-through;
    }
    /* Pausenzeile mitten in der Spielplan-Tabelle. */
    .druck-pause-zeile td {
        background: #eaeaea;
        text-align: center;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }
    /* Der Pausenhinweis klebt am Ende der ersten Spielplan-Seite. */
    .druck-pause-text {
        background: #eaeaea;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    /* Rahmenmodell (siehe Bildschirm-Block): dieselben geteilten Kanten, nur die Farbe
       auf reines Schwarz. */
    .druck-tabelle,
    .druck-tabelle tr th,
    .druck-tabelle tr td {
        border-color: #000;
    }
    /* Zeilenhoehe ist der Hebel fuer die Blattzahl: Jede Spielplanzeile ist
       zweizeilig (Zeit + Feld, Begegnung + Runde), mit 5px Innenabstand und
       1.5er Zeilenabstand wird sie ~14mm hoch — 16 Zeilen je Blatt. Mit den
       Werten hier sind es ~10,5mm und 19 bzw. 21 Zeilen, ohne dass die
       Ergebniszelle zu flach zum Hineinschreiben wird. Die Kapazitaeten in
       spielplan_logik.php sind gegen genau diese Werte gemessen — beides
       zusammen aendern. */
    .druck-tabelle tr th,
    .druck-tabelle tr td {
        padding: 3px 6px;
        line-height: 1.25;
    }
    .druck-tabelle thead th {
        background: #eaeaea;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }
    .druck-tabelle tr {
        break-inside: avoid;
    }
    /* Kopfzeile jeder (Teil-)Tabelle auf Folgeseiten wiederholen, falls eine
       Tabelle doch einmal länger als eine Seite wird. */
    .druck-tabelle thead {
        display: table-header-group;
    }
    /* Zeilenhöhe kommt aus der Ansicht: Sie kennt die Blattaufteilung und
       verteilt, was unten frei bleibt, auf die Zeilen — von Hand eingetragen
       wird auf Papier, nicht in Pixeln. Ohne Variable der alte Festwert. */
    .spielplan-druck tbody td {
        height: var(--spielzeile, 9mm);
    }
    /* Zeilen mit noch offener Paarung bekommen den Rest des Blattes: Sie sind
       die, in die von Hand geschrieben wird. */
    .spielplan-druck tbody tr.zeile-offen td {
        height: var(--spielzeile-offen, var(--spielzeile, 9mm));
    }
    .erfassung {
        font-size: 9pt;
    }
    /* Spezifität beachten: `.druck-tabelle tr th/td` (0,1,2) weiter oben schlägt
       jede Regel `.erfassung th/td` (0,1,1) — die Tabelle trägt beide Klassen,
       deshalb hier ebenfalls über `tr`. Ohne das greifen dort 5px Innenabstand;
       zusammen mit der zweizeiligen Beschriftung („Spiel-/nummer“) wird jede
       Zeile 10,2mm statt 8mm hoch, das Blatt 277mm statt der verfügbaren 267mm —
       und die achte Mannschaft rutscht auf eine zweite Seite. Nur Abstände, am
       Rahmenmodell ändert das nichts. */
    .erfassung tr th,
    .erfassung tr td {
        padding: 2px 4px;
    }
    /* Zeilenhöhe kommt aus der Ansicht (--erf-zeile): Sie rechnet sie aus der
       Mannschaftszahl so aus, dass der Bogen auf ein Blatt passt — 8mm bei
       acht Mannschaften, knapp 6,7mm bei zwölf. Ohne Variable (alte Seite im
       Browser-Cache) bleibt es beim bisherigen Wert. */
    .erfassung tbody td {
        height: var(--erf-zeile, 8mm);
    }
    .erfassung tr.gruppen-zeile td {
        background: #eaeaea;
        height: auto;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }
    .tabelle-druck tbody td,
    .endrunde-druck tbody td {
        height: var(--tab-zeile, 9mm);
    }
}
