/*
 * Etiquetas (F4-02, CU-16): la imagen se pinta a su tamaño físico en milímetros, de modo que lo que se ve
 * en pantalla es lo que sale por la impresora, y la hoja de impresión deja fuera la navegación.
 *
 * Las reglas de impresión se acotan con :has() al contenedor de la etiqueta, para que imprimir cualquier
 * otra pantalla de la aplicación siga saliendo como siempre.
 */

.horreum-label {
    display: block;
    background-color: white;
    /* La etiqueta es un mapa de bits en blanco y negro: sin interpolación se lee mejor el código. */
    image-rendering: pixelated;
}

.horreum-label-frame {
    display: inline-block;
    padding: 2mm;
    background-color: white;
    border: 1px solid var(--border-default);
    border-radius: var(--radius-xs);
}

.horreum-label-sheet {
    display: flex;
    flex-wrap: wrap;
    align-content: flex-start;
    gap: 4mm;
}

.horreum-label-cell {
    break-inside: avoid;
    page-break-inside: avoid;
}

@media print {
    @page {
        margin: 6mm;
    }

    /* Ni barra superior, ni cajón de navegación, ni los controles de la propia pantalla. */
    body:has(.horreum-label-print) .mud-appbar,
    body:has(.horreum-label-print) .mud-drawer,
    body:has(.horreum-label-print) .mud-overlay,
    body:has(.horreum-label-print) .mud-snackbar-location-bottom-start,
    body:has(.horreum-label-print) .horreum-print-hide {
        display: none !important;
    }

    /* La hoja ocupa el papel entero: fuera los márgenes del armazón de la aplicación. */
    body:has(.horreum-label-print) .mud-main-content {
        padding: 0 !important;
        margin: 0 !important;
    }

    body:has(.horreum-label-print) .mud-container {
        max-width: none !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    body:has(.horreum-label-print) .horreum-label-frame {
        padding: 0;
        border: 0;
    }

    /*
     * Desde el diálogo se imprime solo la etiqueta y no la pantalla que queda detrás: todo se oculta con
     * visibility (que se hereda) y se devuelve la visibilidad al contenedor de la etiqueta.
     */
    body:has(.mud-dialog .horreum-label-print) * {
        visibility: hidden !important;
    }

    body:has(.mud-dialog .horreum-label-print) .horreum-label-print,
    body:has(.mud-dialog .horreum-label-print) .horreum-label-print * {
        visibility: visible !important;
    }

    body:has(.mud-dialog .horreum-label-print) .horreum-label-print {
        position: absolute !important;
        top: 0 !important;
        left: 0 !important;
    }

    body:has(.mud-dialog .horreum-label-print) .mud-dialog-container,
    body:has(.mud-dialog .horreum-label-print) .mud-dialog {
        position: static !important;
        box-shadow: none !important;
        background-color: transparent !important;
    }
}
