/* =====================================================================
   SEGURANÇA DO PACIENTE — diagrama de Ishikawa e relatório impresso

   Duas coisas moram aqui, e as duas são específicas deste módulo:
   o desenho do diagrama de análise de causa (apoio visual da
   investigação) e a folha de impressão do relatório consolidado.

   ⚠️ ESTE ARQUIVO NÃO SE CONFUNDE COM `assets/css/notificacao.css`.
   Aquele é da área PÚBLICA — o formulário do cidadão e o relato
   confidencial —, que de propósito não carrega o tema administrativo:
   numa sala de espera, em rede de operadora, o peso vira desistência.
   Este vive dentro do tema, nas telas do NSP.
===================================================================== */


/* =====================================================================
   DIAGRAMA DE ISHIKAWA

   ⚠️ AS CORES SAEM DAS VARIÁVEIS DO TEMA, e é isso que o faz sobreviver
   ao modo escuro e à impressão. O diagrama de referência é vermelho sobre
   creme; cravar esses dois valores deixaria o desenho ilegível no tema
   escuro (vermelho sobre preto) e desperdiçaria tinta na impressão do
   relatório. `danger` é a cor que o tema já usa para o que é adverso.
===================================================================== */
.isk-caixa {
    border: 1px solid var(--phoenix-border-color);
    border-radius: .5rem;
    background: var(--phoenix-body-highlight-bg);
    padding: .5rem;
    /* ⚠️ Altura MÍNIMA, não fixa: o SVG tem `viewBox` e se ajusta à
       largura disponível — travar a altura o achataria. */
    min-height: 12rem;
    display: flex;
    align-items: center;
    overflow-x: auto;
}

.isk {
    width: 100%;
    /* ⚠️ Um piso em pixels para o desenho não virar um risco ilegível
       numa janela estreita; a caixa rola na horizontal se precisar.
       ⚠️ E ele é MENOR que a largura útil do drawer (760px menos os
       recuos): com o piso acima dela, o desenho rolaria na horizontal
       DENTRO da caixa em toda abertura — foi assim que o diagrama
       apareceu "pequeno demais", espremido em meia coluna. */
    min-width: 420px;
    height: auto;
    display: block;
}

/* ⚠️ A VERSÃO AMPLIADA NÃO REDESENHA NADA — é o mesmo SVG, com mais
   largura para o `viewBox` se esticar. O ganho é todo de escala: os
   rótulos de causa saem de ~8px no drawer para ~15px aqui. */
.isk-grande {
    min-height: 20rem;
    padding: 1rem;
}

/* o contorno do peixe e a espinha */
.isk-corpo {
    fill: none;
    stroke: var(--phoenix-danger);
    stroke-width: 1.6;
    opacity: .55;
}

.isk-espinha,
.isk-osso,
.isk-ramo {
    stroke: var(--phoenix-danger);
    fill: none;
}

.isk-espinha { stroke-width: 1.6; }
.isk-osso    { stroke-width: 1.4; }
.isk-ramo    { stroke-width: 1; opacity: .75; }

.isk-seta { fill: var(--phoenix-danger); }

/* as caixas de família (Tarefa, Paciente…) e o problema */
.isk-familia-fundo { fill: var(--phoenix-danger); }

.isk-familia-texto {
    fill: #fff;
    font-size: 10px;
    font-weight: 700;
    font-family: 'Nunito Sans', sans-serif;
}

/* as caixas de causa primária / secundária / terciária */
.isk-causa-fundo {
    fill: var(--phoenix-danger);
    opacity: .55;
}

.isk-causa-texto {
    fill: #fff;
    font-size: 7px;
    font-family: 'Nunito Sans', sans-serif;
}


/* =====================================================================
   RELATÓRIO CONSOLIDADO
===================================================================== */
.sp-relatorio-cabecalho {
    display: none;
}

.sp-bloco {
    break-inside: avoid;
}

.sp-barra {
    height: .5rem;
    border-radius: .25rem;
    background: var(--phoenix-border-color-translucent);
    overflow: hidden;
}

.sp-barra i {
    display: block;
    height: 100%;
    background: var(--phoenix-primary);
}

.sp-linha {
    display: grid;
    grid-template-columns: minmax(8rem, 16rem) 1fr auto;
    align-items: center;
    gap: .75rem;
    padding: .3rem 0;
    font-size: .8125rem;
}

.sp-linha-rotulo {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sp-linha-valor {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    color: var(--phoenix-secondary-color);
}

@media (max-width: 767.98px) {
    .sp-linha {
        grid-template-columns: 1fr auto;
    }
    .sp-linha .sp-barra {
        grid-column: 1 / -1;
    }
}


/* =====================================================================
   IMPRESSÃO — o "salvar em PDF" que o NSP anexa ao relatório mensal

   ⚠️ O PDF É O DO NAVEGADOR, e isso é decisão. Gerar PDF no servidor
   exigiria um Chrome headless na máquina — dependência pesada, que quebra
   a cada atualização e que este projeto evita por princípio. O diálogo de
   impressão já faz exatamente o que o usuário pede, com a paginação e o
   cabeçalho que ele conhece.

   ⚠️ O QUE ESTA FOLHA REMOVE É O QUE NÃO É O RELATÓRIO: barra lateral,
   cabeçalho do sistema, filtros e botões. Sem isso o PDF sai com o menu
   de navegação impresso na primeira página, e o documento que vai para
   fora da casa parece um print de tela.
===================================================================== */
@media print {

    /* ⚠️ `@page` com margem: sem ela o Chrome usa a margem padrão dele e
       o conteúdo encosta na borda em algumas impressoras. */
    @page {
        margin: 12mm 10mm;
    }

    body {
        background: #fff !important;
    }

    /* fora tudo o que é navegação e controle */
    .navbar-vertical,
    .navbar-top,
    .nav-underline,
    .sp-nao-imprime,
    footer,
    .btn {
        display: none !important;
    }

    /* o conteúdo ocupa a página inteira: o tema reserva a coluna da
       barra lateral com padding no `.content` */
    .content,
    main.main {
        margin: 0 !important;
        padding: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
    }

    /* ⚠️ O CABEÇALHO DO DOCUMENTO SÓ EXISTE NO PAPEL. Na tela ele seria
       redundante com o cabeçalho da página; no PDF ele é a única coisa
       que diz de que unidade e de que período é aquele relatório — e um
       consolidado sem período é um número sem significado. */
    .sp-relatorio-cabecalho {
        display: block !important;
        border-bottom: 2px solid #000;
        padding-bottom: .5rem;
        margin-bottom: 1rem;
    }

    .card,
    .sp-bloco {
        border: 1px solid #ccc !important;
        box-shadow: none !important;
        break-inside: avoid;
        page-break-inside: avoid;
    }

    /* ⚠️ Fundo das barras e dos badges IMPRESSO. Por padrão o navegador
       descarta cor de fundo, e as barras de proporção sairiam brancas —
       o relatório perderia justamente a leitura visual. */
    .sp-barra,
    .sp-barra i,
    .badge {
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    /* o diagrama, quando impresso junto de uma investigação */
    .isk-caixa {
        border: 1px solid #ccc !important;
        overflow: visible !important;
    }

    a[href]::after {
        content: none !important;
    }
}


/* ⚠️ O ATRIBUTO `hidden` PRECISA DESTA LINHA PARA VALER — a mesma
   armadilha já documentada em `dashboard.css`, `notificacao.css` e
   `pesquisa.css`. `hidden` só esconde porque o navegador traz
   `[hidden] { display: none }` na folha DELE, e qualquer regra de autor
   que defina `display` ganha dessa; com `!important` (as utilitárias
   `d-*` do Bootstrap) ganha de goleada. */
[hidden] {
    display: none !important;
}
