/* ============================================================================
   Impressão de um pedaço da tela.

   Trabalha junto com `js/impressao.js`, que copia o pedaço para um `div` filho
   direto do `body`. Por isso a regra aqui é a mais simples possível: esconder os
   filhos diretos do body, menos esse. Sem `:has()`, sem desfazer `position:
   fixed`, sem mexer em rolagem de modal — nada disso é preciso quando o que vai
   para o papel já é conteúdo de fluxo normal.

   Fica num arquivo próprio, e não no `<style>` de um componente, porque a área
   de impressão vive FORA do componente: se o componente desmontar, a regra
   precisa continuar de pé.
   ============================================================================ */

/* Na tela a área não existe. Ela só ganha corpo no papel. */
#nx-area-impressao {
    display: none;
}

@media print {

    html.nx-imprimindo body > *:not(#nx-area-impressao) {
        display: none !important;
    }

    html.nx-imprimindo #nx-area-impressao {
        display: block !important;
    }

    /* `visibility` além de `display`, de propósito.

       O `print.css` do projeto apaga `body *` com `visibility: hidden` e só
       reacende `.print-area`. A cópia é filha do body, então caía nessa regra:
       ocupava a folha e não pintava nada — uma página em branco. O `print.css`
       já ganhou uma guarda para não fazer isso aqui, e esta linha é a segunda
       tranca: qualquer outra folha de estilo que repita o truque não derruba a
       impressão de novo. */
    html.nx-imprimindo #nx-area-impressao,
    html.nx-imprimindo #nx-area-impressao * {
        visibility: visible !important;
    }

    /* Convenção do projeto: `.so-impressao` é o bloco que existe só no papel.
       Serve para o que na tela mora fora da área copiada — o nome do aluno, que
       fica no cabeçalho do modal e não viria junto. Na tela ele é `display: none`;
       aqui, e só aqui, ele aparece. */
    html.nx-imprimindo #nx-area-impressao .so-impressao {
        display: block !important;
    }

    /* A altura da janela e a rolagem travada pelo modal empurram folha em branco. */
    html.nx-imprimindo,
    html.nx-imprimindo body {
        height: auto !important;
        overflow: visible !important;
        margin: 0 !important;
        padding: 0 !important;
        background: #fff !important;
    }

    /* Cor é informação aqui — a faixa do conceito e a nota em vermelho ou verde são
       o que faz o documento ser lido num relance. Sem isto o navegador imprime
       tudo em cinza. */
    html.nx-imprimindo #nx-area-impressao,
    html.nx-imprimindo #nx-area-impressao * {
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }

    /* Tabela longa parte entre folhas: o cabeçalho repete e a linha não é cortada
       ao meio. */
    html.nx-imprimindo #nx-area-impressao thead {
        display: table-header-group;
    }

    html.nx-imprimindo #nx-area-impressao tr {
        page-break-inside: avoid;
    }

    @page {
        margin: 12mm;
    }
}
