/* ============================================================
   Lieferschein A4-Druckbogen — DeliveryNotes/DeliveryNotePrintSheet.razor
   Prefix: lsp-

   Einzige Quelle für das Lieferschein-Layout: Die SPA lädt diese Datei für Designer-Vorschau
   und Browser-Druck, die WebAPI schickt sie (eingebettet) samt Schriften an Gotenberg für das
   PDF. Deshalb gilt:
   - Relative url()s nur auf Dateien im selben Ordner (Gotenberg legt alle Dateien flach ab).
   - Kein @page hier: In der SPA ist die Datei global geladen, und printHost (util.js) kopiert
     alle Stylesheets ins Druck-iframe — ein @page würde den Druck der Tagesliste verändern.
     @page { size: A4; margin: 0 } setzen printDeliveryNote bzw. das Server-HTML.
   - Nicht auf app.css oder MudBlazor verlassen; der Reset unten ersetzt MudBlazors
     *{margin:0;padding:0;box-sizing:border-box}.
   ============================================================ */

/* Roboto (SIL OFL 1.1, siehe Roboto-OFL.txt) unter eigenem Namen, damit eine lokal installierte
   Roboto das Schriftbild nicht verändert. Statische Schnitte statt Variable Font: Chromium bettet
   sie im PDF als TrueType ein (ein Variable Font würde zu Type-3-Schriften). Benötigt werden
   genau 400, 400 kursiv (Slogan), 600 und 700 (<b>) — bei neuen Gewichten hier ergänzen.
   Latin deckt Deutsch inkl. Umlaute, ß und € ab, Latin-Extended weitere Namen (z. B. č, ő). */
@font-face {
    font-family: 'GaiGo Roboto';
    font-style: normal;
    font-display: block;
    font-weight: 400;
    src: url(roboto-latin-400-normal.woff2) format('woff2');
    unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

@font-face {
    font-family: 'GaiGo Roboto';
    font-style: normal;
    font-display: block;
    font-weight: 400;
    src: url(roboto-latin-ext-400-normal.woff2) format('woff2');
    unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

@font-face {
    font-family: 'GaiGo Roboto';
    font-style: italic;
    font-display: block;
    font-weight: 400;
    src: url(roboto-latin-400-italic.woff2) format('woff2');
    unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

@font-face {
    font-family: 'GaiGo Roboto';
    font-style: italic;
    font-display: block;
    font-weight: 400;
    src: url(roboto-latin-ext-400-italic.woff2) format('woff2');
    unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

@font-face {
    font-family: 'GaiGo Roboto';
    font-style: normal;
    font-display: block;
    font-weight: 600;
    src: url(roboto-latin-600-normal.woff2) format('woff2');
    unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

@font-face {
    font-family: 'GaiGo Roboto';
    font-style: normal;
    font-display: block;
    font-weight: 600;
    src: url(roboto-latin-ext-600-normal.woff2) format('woff2');
    unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

@font-face {
    font-family: 'GaiGo Roboto';
    font-style: normal;
    font-display: block;
    font-weight: 700;
    src: url(roboto-latin-700-normal.woff2) format('woff2');
    unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

@font-face {
    font-family: 'GaiGo Roboto';
    font-style: normal;
    font-display: block;
    font-weight: 700;
    src: url(roboto-latin-ext-700-normal.woff2) format('woff2');
    unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* Reset nur innerhalb des Bogens; :where() hält die Spezifität bei 0 wie MudBlazors *-Reset,
   sodass jede lsp-Regel unten gewinnt. */
:where(.lsp-sheet, .lsp-sheet *, .lsp-sheet *::before, .lsp-sheet *::after) {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

.lsp-sheet {
    width: 794px; /* A4 @ 96dpi */
    min-height: 1123px;
    background: #fff;
    box-shadow: 0 2px 6px rgba(16, 24, 40, .10), 0 16px 40px rgba(16, 24, 40, .14);
    color: #111;
    padding: 57px 57px 46px;
    display: flex;
    flex-direction: column;
    font-family: 'GaiGo Roboto', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    font-size: 13px;
    line-height: 1.45;
}

.lsp-font-s { font-size: 11.5px; }
.lsp-font-m { font-size: 13px; }
.lsp-font-l { font-size: 14.5px; }

.lsp-head {
    display: flex;
    gap: 20px;
    align-items: flex-start;
    margin-bottom: 8px;
}

.lsp-head-pos-c {
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.lsp-head-pos-r .lsp-logo {
    order: 3;
}

.lsp-logo {
    display: flex;
    align-items: center;
    flex: none;
}

.lsp-logo img { height: 100%; }
.lsp-logo-s { height: 38px; }
.lsp-logo-m { height: 52px; }
.lsp-logo-l { height: 68px; }

.lsp-sender {
    font-size: .92em;
    color: #333;
}

.lsp-sender b {
    font-size: 1.1em;
    color: #111;
}

.lsp-slogan {
    font-style: italic;
    color: #555;
    font-size: .92em;
    margin-top: 2px;
}

.lsp-docmeta {
    margin-left: auto;
    text-align: right;
}

.lsp-head-pos-r .lsp-docmeta {
    margin-left: 0;
    margin-right: auto;
    text-align: left;
}

.lsp-head-pos-c .lsp-docmeta {
    margin: 0;
    text-align: center;
}

.lsp-doctitle {
    font-size: 19px;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: .01em;
}

.lsp-docno {
    font-variant-numeric: tabular-nums;
}

.lsp-rule {
    border: none;
    border-top: 2px solid #111;
    margin: 14px 0 16px;
}

.lsp-addr {
    display: flex;
    gap: 24px;
    margin-bottom: 22px;
}

.lsp-addr-to {
    flex: 1;
}

.lsp-addr-to b {
    font-size: 1.05em;
}

/* Rechnungstext des Stammkunden (z. B. Kostenstelle) zwischen Empfänger und Positionen. */
.lsp-invoicetext {
    margin: -10px 0 18px;
    font-weight: 600;
    white-space: pre-line;
}

.lsp-cap {
    font-size: 10px;
    font-weight: 600;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: #666;
    margin-bottom: 6px;
}

.lsp-facts {
    text-align: right;
    font-size: .92em;
    color: #333;
    font-variant-numeric: tabular-nums;
    border-collapse: collapse;
    align-self: flex-start;
}

.lsp-facts td {
    padding: 1px 0 1px 18px;
    text-align: right;
}

.lsp-facts td:first-child {
    color: #666;
    text-align: left;
    padding-left: 0;
}

table.lsp-pos {
    width: 100%;
    border-collapse: collapse;
    font-variant-numeric: tabular-nums;
}

table.lsp-pos th {
    font-size: .82em;
    font-weight: 600;
    line-height: 1.3;
    text-transform: uppercase;
    letter-spacing: .05em;
    text-align: left;
    padding: 7px 8px;
    border-top: 1.5px solid #111;
    border-bottom: 1.5px solid #111;
    white-space: nowrap;
}

table.lsp-pos td {
    padding: 6px 8px;
    border-bottom: 1px solid #ddd;
    vertical-align: top;
}

table.lsp-pos tbody tr:nth-child(even) td {
    background: #fafafa;
}

table.lsp-pos .lsp-r,
table.lsp-pos th.lsp-r {
    text-align: right;
}

.lsp-sums {
    margin-top: 14px;
    margin-left: auto;
    width: 320px;
    font-variant-numeric: tabular-nums;
    border-collapse: collapse;
}

.lsp-sums td {
    padding: 3.5px 8px;
}

.lsp-sums td:last-child {
    text-align: right;
}

.lsp-sums tr.lsp-total td {
    border-top: 2px solid #111;
    font-weight: 600;
    font-size: 1.1em;
    padding-top: 7px;
}

.lsp-sums tr.lsp-sub td {
    color: #555;
    font-size: .92em;
}

.lsp-qty-total {
    margin-top: 14px;
    border-top: 2px solid #111;
    padding-top: 8px;
    text-align: right;
    font-weight: 600;
}

.lsp-pay {
    margin-top: 10px;
    font-size: .95em;
}

/* Artikel „Kein Kundenrabatt“: Zeichen an der Position, Fußnote unter den Summen. */
.lsp-fnm {
    font-size: .7em;
    margin-left: 2px;
}

.lsp-fn {
    margin-top: 6px;
    text-align: right;
    color: #555;
    font-size: .85em;
}

/* QR „Digitaler Zettel“ (Shared/ZettelQrBlock.razor) — auch auf dem Rechnungsbogen. */
.lsp-zettel {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: none;
    break-inside: avoid;
    page-break-inside: avoid;
}

.lsp-zettel-qr {
    display: block;
    flex: none;
    width: 90px;
    height: 90px;
    image-rendering: pixelated;
}

.lsp-zettel-cap {
    font-size: .8em;
    color: #555;
    line-height: 1.35;
}

/* Lieferschein: QR neben den Summen bzw. über der Unterschrift im Fuß. */
.lsp-sumrow {
    display: flex;
    align-items: flex-start;
    gap: 24px;
    margin-top: 14px;
}

.lsp-sumrow .lsp-zettel {
    margin-top: 4px;
}

.lsp-sumrow .lsp-sums {
    margin-top: 0;
}

.lsp-foot > .lsp-zettel {
    margin-bottom: 18px;
}

.lsp-notes {
    margin-top: 20px;
    font-size: .92em;
    color: #333;
}

.lsp-foot {
    margin-top: auto;
    padding-top: 26px;
}

.lsp-sign {
    display: flex;
    gap: 60px;
    margin-bottom: 26px;
}

.lsp-sign-line {
    flex: 1;
    border-top: 1px solid #111;
    padding-top: 5px;
    font-size: .85em;
    color: #444;
    text-align: center;
}

.lsp-footer {
    border-top: 1px solid #999;
    padding-top: 8px;
    font-size: .78em;
    color: #666;
    white-space: pre-line;
    text-align: center;
}

.lsp-pageno {
    text-align: right;
    font-size: .78em;
    color: #999;
    margin-top: 6px;
}

/* ---- Druck (Browser-Druck über printDeliveryNote und PDF über Gotenberg) ----
   Ein Bogen je Seite in echter A4-Größe. Die Seitengröße selbst (@page) kommt vom Aufrufer. */
@media print {
    .lsp-sheet {
        width: 210mm;
        min-height: 296mm;
        box-shadow: none;
        padding: 15mm 15mm 12mm;
        break-after: page;
        page-break-after: always;
    }

    .lsp-sheet:last-child {
        break-after: auto;
        page-break-after: auto;
    }
}
