/* Square AI AILRA - print.css
   O relatorio impresso E o PDF do relatorio. Carregar depois de app.css.

   Contrato de marcacao esperado pelo front (view-report.js):
   - a raiz imprimivel e .do-report
   - cabecalho de pagina: <div class="do-print-head" aria-hidden="true"> com a
     marca (.do-logo) e o titulo do documento em .do-print-head__title
   - rodape de pagina: <div class="do-print-foot" aria-hidden="true"
     data-cliente="Nome do cliente" data-data="21/07/2026"></div>
     (os dois atributos sao impressos nas pontas do rodape de cada pagina)
   - qualquer elemento com data-print="hide" some na impressao, nas DUAS saidas
   - .do-print-only aparece so no papel, .do-no-print some no papel

   DUAS SAIDAS (painel): o front marca <html data-print-doc="socio|cliente"> antes de
   window.print() e remove no afterprint (report-parts.js, imprimirDocumento):
   - .do-doc-socio    material interno: imprime APENAS com data-print-doc="socio"
   - .do-doc-cliente  texto substituto do cliente: imprime apenas SEM o modo socio
   Sem atributo (Ctrl+P avulso) o resultado e o documento do cliente, o padrao seguro. */

.do-print-head,
.do-print-foot,
.do-print-only { display: none; }

@page {
  size: A4 portrait;
  margin: 22mm 14mm 20mm;
}

@media print {
  /* ---- Base da pagina ----
     A TELA e dark; o PAPEL continua branco. Este bloco re-pina TODOS os tokens
     de cor para a paleta clara de impressao, entao nenhum var() das outras
     folhas resolve para valor escuro no papel. Nao remover: sem ele o tema
     dark vaza para o PDF. */
  :root {
    color-scheme: light;
    --do-section-y: 0;

    --do-primary: #3D5431;
    --do-secondary: #E4E8D3;
    --do-accent: #7C8C43;
    --do-accent-light: #8B9B52;
    --do-sage: #B6BF93;
    --do-cinza: #9AA88F;
    --do-dark: #24261A;
    --do-deep: #24261A;
    --do-light: #EFF1E4;
    --do-white: #ffffff;
    --do-wine: #ffffff;
    --do-risk: #9A3527;

    --do-accent-ink: #55622B;
    --do-accent-soft: rgba(124, 140, 67, 0.14);
    --do-accent-line: rgba(124, 140, 67, 0.55);

    --do-bg: var(--do-white);
    --do-bg-alt: var(--do-white);
    --do-bg-bege: var(--do-white);
    --do-bg-dark: var(--do-white);
    --do-surface: var(--do-white);
    --do-surface-mute: #F2F4E9;
    --do-surface-tint: #F2F4E9;
    --do-panel-bg: var(--do-white);

    --do-ink: #24261A;
    --do-ink-soft: #454C33;
    --do-ink-mute: #59614A;
    --do-ink-invert: #EDEFE2;
    --do-ink-invert-soft: rgba(237, 239, 226, 0.78);

    --do-line: rgba(61, 84, 49, 0.24);
    --do-line-strong: rgba(61, 84, 49, 0.46);
    --do-line-dark: rgba(61, 84, 49, 0.24);

    --do-ok: #2F6B52;
    --do-ok-soft: rgba(47, 107, 82, 0.12);
    --do-warn: #7A551A;
    --do-warn-soft: rgba(160, 120, 40, 0.15);
    --do-danger: #9A3527;
    --do-danger-soft: rgba(154, 53, 39, 0.11);
    --do-danger-line: rgba(154, 53, 39, 0.42);

    --do-focus: #3D5431;
    --do-shadow-md: none;
  }

  html,
  body {
    background: var(--do-white) !important;
    color: #000;
    font-size: 10.5pt;
    line-height: 1.45;
  }

  /* Cores da marca preservadas: as barras e o radar perdem o sentido em cinza */
  *,
  *::before,
  *::after {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    box-shadow: none !important;
    text-shadow: none !important;
    transition: none !important;
    animation: none !important;
  }

  /* ---- Fora do papel: navegacao, acoes, avisos de tela ---- */
  .do-skip,
  .do-header,
  .do-footer,
  .do-nav,
  .do-toasts,
  .do-blockdots,
  .do-steps,
  .do-progress,
  .do-skeleton,
  .do-btn,
  .do-no-print,
  [data-print='hide'] { display: none !important; }

  .do-print-only { display: block; }

  /* ---- Duas saidas: documento do socio x documento do cliente ----
     A regra do atributo tem especificidade maior que a generica, entao a ordem aqui
     nao e fragil: no modo socio o material interno SEMPRE vence. */
  .do-doc-socio { display: none !important; }
  :root[data-print-doc='socio'] .do-doc-socio { display: block !important; }
  .do-doc-cliente { display: block !important; }
  :root[data-print-doc='socio'] .do-doc-cliente { display: none !important; }

  /* Faixa que identifica o documento do socio no papel */
  .do-print-banner {
    padding: 3mm 4mm;
    margin-bottom: 4mm;
    border: 1.5pt solid var(--do-accent);
    border-radius: 2mm;
    background: var(--do-accent-soft) !important;
    font-size: 8.5pt;
    color: #000;
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* ---- Marca no alto do documento e assinatura no fim ----
     Testado no Chrome e no Edge: elemento com position fixed nao fica na margem da
     pagina. Com deslocamento pequeno ele invade a area util e cobre o texto, e com
     deslocamento grande o navegador joga a faixa para a borda oposta, onde ela
     tambem encosta no conteudo. Por isso as duas faixas entram no fluxo normal: a
     marca abre o documento e a assinatura o encerra, sem risco de sobreposicao. */
  .do-print-head {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 8mm;
    margin-bottom: 4mm;
    padding-bottom: 2mm;
    border-bottom: 1px solid var(--do-line-strong);
    break-after: avoid;
    page-break-after: avoid;
  }
  /* Arte oficial e branca sobre transparente; em papel branco, inverter da preto (logo monocromatico). */
  .do-logo__img { height: 9mm; filter: invert(1); }
  .do-print-head .do-logo__symbol { height: 11mm; }
  .do-print-head .do-logo__word { font-size: 13pt; }
  /* No papel a caixa da marca imprime escura com o texto claro (a caixa clara
     da tela sumiria no fundo branco); o wordmark sai na tinta do documento. */
  .do-logo__word { color: var(--do-ink) !important; }
  .do-logo__symbol .sq-mark__bg { fill: var(--do-dark) !important; }
  .do-logo__symbol .sq-mark__tx { fill: #EDEFE2 !important; }
  .do-print-head__title {
    font-size: 8.5pt;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--do-ink-mute);
    text-align: right;
  }

  .do-print-foot {
    display: block !important;
    margin-top: 6mm;
    padding-top: 2mm;
    border-top: 1px solid var(--do-line);
    font-size: 7.5pt;
    color: var(--do-ink-mute);
    overflow: hidden;
    break-inside: avoid;
    page-break-inside: avoid;
  }
  .do-print-foot::before { content: attr(data-cliente); float: left; }
  .do-print-foot::after { content: attr(data-data); float: right; }

  /* ---- Fluxo do documento ---- */
  .do-shell { display: block; min-height: 0; }
  .do-main { display: block; }
  .do-section { padding-block: 0 !important; background: var(--do-white) !important; }
  .do-container,
  .do-container--narrow {
    max-width: none;
    width: 100%;
    padding-inline: 0;
    margin: 0;
  }

  .do-report { display: block; }
  .do-report__header {
    margin-bottom: 8mm;
    padding-bottom: 4mm;
    border-bottom: 1.5pt solid var(--do-accent);
    break-after: avoid;
    page-break-after: avoid;
  }
  .do-report__title { font-size: 20pt; }
  .do-report__meta { font-size: 8.5pt; }
  .do-report > * + .do-report__block { margin-top: 8mm; }
  .do-report__lead { font-size: 11pt; color: #000; }

  /* Nada de titulo orfao no pe da pagina */
  h1, h2, h3, h4, h5, .do-eyebrow, .do-card__title {
    break-after: avoid;
    page-break-after: avoid;
    color: #000;
  }
  .do-eyebrow { font-size: 15pt; margin-bottom: 3mm; color: var(--do-accent-ink); }
  p, li { orphans: 3; widows: 3; max-width: none; }

  /* ---- Blocos que nao podem partir no meio ---- */
  .do-card,
  .do-panel,
  .do-kpi,
  .do-likert,
  .do-dim,
  .do-gap,
  .do-arlscale,
  .do-scorebig,
  .do-empty,
  .do-table tr,
  .do-radar,
  figure {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  .do-card,
  .do-panel {
    border: 1px solid var(--do-line-strong) !important;
    background: var(--do-white) !important;
    padding: 5mm;
    margin-bottom: 4mm;
  }
  /* Cartao de grafico-lista (barras, comparativo, listas de evidencia): PODE partir
     entre linhas. Sem isso, um cartao do tamanho exato de uma pagina pulava inteiro
     e deixava a pagina anterior quase em branco (medido no documento do cliente).
     As linhas em si (.do-dim, .do-gap, li com orphans/widows) seguem atomicas. */
  .do-card--fluido { break-inside: auto; page-break-inside: auto; }
  .do-card--accent { border-left: 2pt solid var(--do-accent) !important; }
  .do-kpi { border: 1px solid var(--do-line-strong) !important; padding: 4mm; }
  .do-kpi--accent { background: var(--do-accent-soft) !important; }

  /* ---- Dados ---- */
  .do-tablewrap { overflow: visible !important; }
  .do-table { min-width: 0; font-size: 9pt; }
  .do-table thead { display: table-header-group; }
  .do-table thead th { border-bottom: 1px solid #000; }
  .do-table tbody tr { border-bottom: 1px solid var(--do-line); background: transparent !important; }
  .do-table th,
  .do-table td { padding: 2mm 3mm; }

  .do-badge { border: 1px solid var(--do-line-strong) !important; padding: 0.5mm 2mm; font-size: 7.5pt; }
  .do-dim__track,
  .do-gap__axis { background: var(--do-light) !important; border: 0.5pt solid var(--do-line); }
  .do-dim__fill { background: var(--do-primary) !important; }
  .do-dim__fill--accent,
  .do-gap__bar--over { background: var(--do-accent) !important; }
  .do-gap__bar--under { background: var(--do-primary) !important; }
  .do-arlscale__step { border: 0.5pt solid var(--do-line-strong) !important; height: 9mm; }
  .do-arlscale__step.is-filled { background: var(--do-accent-soft) !important; }
  .do-arlscale__step.is-current { background: var(--do-accent) !important; color: var(--do-dark) !important; }
  .do-scorebig__value { font-size: 40pt; }

  /* ---- Radar: precisa aparecer inteiro e colorido ---- */
  .do-radar {
    display: block !important;
    width: 120mm;
    max-width: 100%;
    margin: 4mm auto;
  }
  .do-radar__shape { fill: rgba(124, 140, 67, 0.35) !important; stroke: var(--do-accent-ink) !important; }
  .do-radar__shape--alt { fill: none !important; stroke: var(--do-primary) !important; }
  .do-radar__grid,
  .do-radar__axis { stroke: var(--do-line-strong) !important; }
  .do-radar__label { fill: #000 !important; font-size: 8pt; }

  /* ---- Quebras controladas pelo front ---- */
  .do-print-break { break-before: page; page-break-before: always; }
  .do-print-keep { break-inside: avoid; page-break-inside: avoid; }

  /* ---- Resumo de uma pagina: fecha a primeira pagina do documento ---- */
  .do-cover { break-after: page; page-break-after: always; }
  .do-cover .do-card { margin-bottom: 0; }
  .do-cover__kpis { grid-template-columns: repeat(4, 1fr); }
  .do-cover__cols { grid-template-columns: 1fr 1fr; }
  .do-cover__value { font-size: 16pt; }

  /* ---- Anexo de leitura: comeca em pagina propria, DEPOIS do conteudo da pessoa,
     e sai por inteiro mesmo com a secao recolhida na tela ---- */
  .do-report__block--anexo { break-before: page; page-break-before: always; }
  .do-collapse__btn { display: none !important; }
  .do-collapse__body[hidden] { display: block !important; }

  /* ---- Bloco de decisao do socio (papel, somente documento do socio) ---- */
  .do-decisao__row { border-bottom: 0.5pt solid var(--do-line); padding: 2.5mm 0; }
  .do-decisao__label { flex-basis: 50mm; }
  .do-decisao__blank { border-bottom: 0.5pt solid #000; min-height: 5mm; }
  .do-decisao-bloco { break-inside: avoid; page-break-inside: avoid; }

  /* ---- Faixas de leitura e mediana nas barras por dimensao ---- */
  .do-dim__tick { background: var(--do-line-strong) !important; }
  .do-dim__mark { background: var(--do-dark) !important; border-color: var(--do-white) !important; }

  /* ---- Trechos citados (documento do socio) ---- */
  .do-quote {
    border-left: 1.5pt solid var(--do-accent) !important;
    background: var(--do-white) !important;
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* ---- Matriz Nine Box no papel ----
     Paleta clara re-pinada e legibilidade em preto e branco: a celula do avaliado
     tem borda grossa + selo textual, entao a posicao sobrevive a uma copia P&B;
     o vermelho do Risco Sistemico e reforco, nunca o unico sinal. */
  .do-9box { break-inside: avoid; page-break-inside: avoid; }
  .do-9box__grid { gap: 1.5mm; }
  .do-9box__cell {
    border: 0.75pt solid var(--do-line-strong) !important;
    background: var(--do-white) !important;
    padding: 2.5mm;
    gap: 1mm;
    border-radius: 1.5mm;
  }
  /* Numero ancorado no topo da celula (como no site); baseline com corpos
     diferentes rendia 1px de dança entre celulas vizinhas no papel. */
  .do-9box__head { align-items: flex-start; }
  .do-9box__name { font-size: 8.5pt; color: #000; }
  .do-9box__n { font-size: 7pt; color: var(--do-ink-mute); }
  .do-9box__desc { display: block !important; font-size: 7pt; line-height: 1.35; color: var(--do-ink-mute); }
  .do-9box__ylab,
  .do-9box__xlab { font-size: 6.5pt; color: var(--do-ink-mute); }
  .do-9box__cell--risk { border-color: var(--do-danger) !important; background: var(--do-danger-soft) !important; }
  .do-9box--report .do-9box__cell--pos {
    border: 1.6pt solid var(--do-accent-ink) !important;
    background: var(--do-accent-soft) !important;
  }
  .do-9box--report .do-9box__cell--pos.do-9box__cell--risk {
    border-color: var(--do-danger) !important;
    background: var(--do-danger-soft) !important;
  }
  /* Selo absoluto tambem no papel: as celulas reservam a mesma folga inferior e as
     tres linhas da matriz saem com altura identica nas tres impressoes. */
  .do-9box--report .do-9box__cell { padding-bottom: 7mm; }
  .do-9box__pos-tag {
    left: 2.5mm;
    bottom: 1.5mm;
    max-width: calc(100% - 5mm);
    background: var(--do-accent) !important;
    color: var(--do-dark) !important;
    font-size: 6.5pt;
    padding: 0.4mm 2mm;
  }
  .do-9box__reading { break-inside: avoid; page-break-inside: avoid; }
  .do-9box__axis-band { color: var(--do-accent-ink); }

  /* ---- Terceiro documento: versao executiva (1 pagina) ----
     Com data-print-doc="executivo" APENAS o bloco .do-exec imprime. O cabecalho e o
     rodape correntes do relatorio saem junto com o resto: a pagina executiva tem
     marca, identificacao e rodape de auditoria proprios. */
  :root[data-print-doc='executivo'] .do-report > :not(.do-exec) { display: none !important; }
  :root[data-print-doc='executivo'] .do-exec { display: block !important; }

  .do-exec__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8mm;
    padding-bottom: 3mm;
    border-bottom: 1.5pt solid var(--do-accent);
    margin-bottom: 5mm;
  }
  .do-exec__head .do-logo__symbol { height: 12mm; }
  .do-exec__head .do-logo__word { font-size: 14pt; }
  .do-exec__head-right { display: flex; flex-direction: column; align-items: flex-end; gap: 1mm; }
  .do-exec__doc { font-size: 8.5pt; letter-spacing: 0.12em; text-transform: uppercase; color: var(--do-ink-mute); }
  .do-exec__doc--sub { color: var(--do-accent-ink); font-size: 7.5pt; }
  .do-exec__nome { font-size: 19pt; }
  .do-exec__cargo { font-size: 10pt; color: var(--do-ink-soft); margin-top: 1mm; }
  .do-exec__meta { font-size: 8pt; color: var(--do-ink-mute); margin-top: 1mm; }
  .do-exec__aviso {
    margin-top: 4mm;
    padding: 3mm 4mm;
    border: 1pt solid var(--do-warn);
    border-radius: 1.5mm;
    background: var(--do-warn-soft) !important;
  }
  .do-exec__aviso p + p { margin-top: 1mm; }
  .do-exec__kpis { display: grid; grid-template-columns: 1fr 1fr; gap: 4mm; margin-top: 5mm; }
  .do-exec__kpi { border: 1pt solid var(--do-line-strong); border-radius: 2mm; padding: 4mm; }
  .do-exec__kpi--accent { background: var(--do-accent-soft) !important; border-color: var(--do-accent-ink); }
  .do-exec__kpi-label { font-size: 7.5pt; text-transform: uppercase; letter-spacing: 0.1em; color: var(--do-ink-mute); }
  /* tabular-nums: mesmo desenho de numero de todos os outros valores da marca */
  .do-exec__kpi-value { font-family: var(--do-font-display); font-size: 26pt; font-weight: 600; margin-top: 1mm; font-variant-numeric: tabular-nums; }
  .do-exec__kpi-sub { font-size: 8pt; color: var(--do-ink-mute); margin-top: 1mm; }
  .do-exec__cols { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: 6mm; margin-top: 6mm; }
  .do-exec__coltitle {
    font-size: 8pt;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--do-accent-ink);
    margin-bottom: 2mm;
  }
  .do-exec__coltitle--gap { margin-top: 5mm; }
  .do-exec__cell { margin-top: 3mm; font-size: 9pt; }
  .do-exec__nota { margin-top: 2mm; font-size: 7.5pt; color: var(--do-ink-mute); }
  .do-exec__list { margin: 0; padding-left: 4mm; font-size: 9pt; }
  .do-exec__list li + li { margin-top: 1.5mm; }
  .do-exec__rec { font-size: 9pt; }
  .do-exec__foot { margin-top: 6mm; padding-top: 2mm; border-top: 0.75pt solid var(--do-line); }
  .do-exec__foot > p { margin-top: 1.5mm !important; font-size: 7pt; }
  .do-exec .do-9box__grid { gap: 1mm; }
  .do-exec .do-9box__cell { padding: 1.6mm 2mm; min-height: 11mm; padding-bottom: 5mm; }
  .do-exec .do-9box__name { font-size: 7pt; }
  .do-exec .do-9box__n { font-size: 6pt; }
  /* Celula rasa da versao executiva: selo curto, sem quebrar linha. */
  .do-exec .do-9box__pos-tag { left: 2mm; bottom: 1mm; max-width: calc(100% - 4mm); font-size: 5.5pt; padding: 0.3mm 1.5mm; }
  .do-exec .do-9box__pos-tag-full { display: none; }
  .do-exec .do-9box__pos-tag-short { display: inline; }
  .do-exec .do-9box__ylab,
  .do-exec .do-9box__xlab { font-size: 6pt; }
  /* Legenda do eixo X sem seta orfa: setas numa linha, rotulo do eixo noutra. */
  .do-exec .do-9box__xlab { flex-wrap: wrap; row-gap: 0.5mm; }
  .do-exec .do-9box__xlab span:first-child,
  .do-exec .do-9box__xlab span:last-child { white-space: nowrap; }
  .do-exec .do-9box__xlab span:nth-child(2) { flex: 1 0 100%; order: 1; }

  /* Links: sem sublinhado e sem URL colada no texto, e um documento, nao uma pagina */
  a { color: #000 !important; text-decoration: none !important; }
  a[href^='http']::after { content: ''; }
}
