/* © 2026 Carlos Sanz Izquierdo — clicgest.es */
/* ============================================================
   HOJA DE IMPRESIÓN ÚNICA DEL SAAS (media="print")
   ------------------------------------------------------------
   Un solo formato de papel para todas las pantallas de gestión que llevan
   el botón «Imprimir» (window.print()): borradores fiscales (303/347/390/
   IRPF/200), cuentas anuales, libro de IVA, memoria, presupuesto,
   justificación de subvención, situación de tesorería, acta de asamblea…

   Coherente con los PDF de servidor (src/Core/PdfEstilo.php): misma familia
   tipográfica (DejaVu Sans / Arial), 11 px, negro sobre blanco, tablas con
   borde fino #d1d5db y cabecera gris #f3f4f6 en versalitas.

   Se enlaza UNA sola vez desde templates/tenant_sidebar.php (el shell de
   gestión), así que alcanza a toda página autenticada con menú. Los tickets
   térmicos del TPV (80 mm) y los PDF del servidor NO pasan por aquí: no
   incluyen el shell.

   Qué NO se imprime: el menú lateral y sus cintas (demo, «ver como»,
   «actuando como»), los botones, los formularios de filtro (GET), tooltips,
   toasts, modales, y todo lo marcado con .noprint / .no-print /
   .d-print-none (las tres clases conviven en el código: aquí se aceptan
   todas para no renombrar cien ocurrencias).

   Regla de la casa: el color NUNCA es el único canal. Los badges pasan a
   texto negro con borde gris: lo que informa es la palabra, no el fondo.
   ============================================================ */

@page {
  size: A4;
  margin: 12mm 10mm;
}

@media print {

  /* ── 1. Lienzo ─────────────────────────────────────────────
     Fondo blanco plano, sin degradado del SAAS ni alturas mínimas que
     fuerzan páginas en blanco al final. */
  html, body {
    background: #fff !important;
    min-height: 0 !important;
    height: auto !important;
    color: #000 !important;
    -webkit-font-smoothing: auto;
  }
  body, h1, h2, h3, h4, h5, h6,
  .h1, .h2, .h3, .h4, .h5, .h6,
  .topbar-title, .doc-paper h1 {
    font-family: "DejaVu Sans", Arial, Helvetica, sans-serif !important;
    letter-spacing: 0 !important;
  }
  body { font-size: 11px !important; line-height: 1.4; }
  /* Los iconos conservan su fuente: son parte del texto (estado + icono). */
  .bi, [class^="bi-"], [class*=" bi-"] { font-family: "bootstrap-icons" !important; }

  /* ── 2. Fuera el shell ─────────────────────────────────────
     Menú, asa del menú, hamburguesa móvil, cintas superiores y todo lo
     que sea interacción (botones, tooltips, toasts, modales). */
  .sidebar,
  .sidebar-handle,
  .sidebar-mobile-toggle,
  .impersonate-bar,
  .demo-ribbon,
  .actuando-bar,
  .demo-banner,
  .print-bar,
  .dashboard-panel,
  .tooltip,
  .popover,
  .toast,
  .toast-container,
  .modal,
  .modal-backdrop,
  .offcanvas,
  .offcanvas-backdrop,
  .dropdown-menu,
  .btn,
  .btn-group,
  .pagination,
  .noprint,
  .no-print,
  .d-print-none,
  form[method="get" i],
  select,
  .form-select,
  .form-control,
  .form-check,
  .input-group {
    display: none !important;
  }

  /* El contenido ocupa toda la hoja: sin hueco del menú ni de las cintas. */
  .main {
    margin: 0 !important;
    padding: 0 !important;
    max-width: none !important;
    width: auto !important;
  }
  html.sb-collapsed .main { margin-left: 0 !important; }

  /* ── 3. Cabecera de página (topbar) ───────────────────────
     Se mantiene porque lleva el título; pierde la banda de marca, la
     sombra y el relleno. Queda como cabecera de documento subrayada. */
  .topbar {
    background: none !important;
    box-shadow: none !important;
    border: 0 !important;
    border-bottom: 1px solid #000 !important;
    border-radius: 0 !important;
    padding: 0 0 6px !important;
    margin: 0 0 10px !important;
  }
  .topbar-actions { display: none !important; }

  /* ── 4. Tarjetas ──────────────────────────────────────────
     .card / .f-card canónicas y el dialecto «*-card» de las vistas
     (.ca-card, .libro-card, .table-card, .stat-card, .info-card,
     .calc-card…): sin sombra, sin radio, borde fino. El papel no tiene
     capas. */
  /* OJO: sin page-break-inside:avoid aquí. Una tarjeta con un cuadro largo
     (cuentas anuales, libro de IVA) ocupa más de una hoja; con «avoid» Chrome
     la empujaba entera a la página 2 y dejaba la 1 en blanco (visto en la
     pasada del 07/09). El «no cortar» va por FILA (§6), que es lo que importa. */
  .card, .f-card, [class*="-card"], .doc-paper, .accordion-item {
    box-shadow: none !important;
    border-radius: 0 !important;
    border: 1px solid #d1d5db !important;
    background: #fff !important;
  }
  .card-body { padding: 8px 10px !important; }

  /* ── 5. Tipografía de titulares ───────────────────────────
     Mismos tamaños que los PDF del servidor. Un título nunca se queda
     huérfano al pie de la página. */
  h1, .h1 { font-size: 17px !important; }
  h2, .h2 { font-size: 15px !important; }
  h3, .h3, h4, .h4 { font-size: 13px !important; }
  h5, .h5, h6, .h6 { font-size: 12px !important; }
  h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
    color: #000 !important;
    margin-top: 0;
    page-break-after: avoid;
  }

  /* ── 6. Tablas ────────────────────────────────────────────
     Ancho completo, borde fino, cabecera gris en versalitas que se REPITE
     en cada página, y ninguna fila partida entre dos hojas. Los totales de
     cada vista (bordes de 2 px, negrita) tienen más especificidad que estas
     reglas y se conservan. */
  table, .table {
    width: 100% !important;
    border-collapse: collapse !important;
    font-size: 10.5px !important;
    color: #000 !important;
    --bs-table-bg: #fff;
    --bs-table-color: #000;
    --bs-table-striped-bg: #fafafa;
    --bs-table-border-color: #d1d5db;
  }
  table th, table td,
  .table > :not(caption) > * > * {
    border: 1px solid #d1d5db;
    padding: 3px 5px;
    vertical-align: top;
    color: #000;
  }
  thead { display: table-header-group; }
  tfoot { display: table-footer-group; }
  thead th, thead td, table th {
    background: #f3f4f6 !important;
    font-size: 9.5px !important;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .2px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  tr, td, th { page-break-inside: avoid; }
  /* Filas de epígrafe / sección / subtotal de las vistas contables: fondo
     gris claro que sí debe salir impreso (es la jerarquía del cuadro). */
  tr.epigrafe td, tr.seccion td, tr.subtotal td, .table-light,
  .table-secondary, .table-group-divider {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .table-responsive { overflow: visible !important; }

  /* ── 7. Enlaces y avisos ──────────────────────────────────
     En papel un enlace es texto: sin subrayado, sin URL al lado. */
  a, a:visited { color: #000 !important; text-decoration: none !important; }
  a[href]::after { content: none !important; }
  .alert {
    border: 1px solid #9ca3af !important;
    border-radius: 0 !important;
    background: #fff !important;
    color: #000 !important;
    padding: 6px 8px !important;
    margin-bottom: 8px !important;
    page-break-inside: avoid;
  }

  /* ── 8. Badges y estados: la palabra manda ────────────────
     Chrome descarta los fondos al imprimir y un badge blanco-sobre-color se
     quedaría INVISIBLE. Aquí todos pasan a negro sobre blanco con borde gris:
     legibles en cualquier impresora, en gris o en color. */
  .badge, .estado-badge, .casilla, .chip, .pill {
    color: #000 !important;
    background: #fff !important;
    border: 1px solid #6b7280 !important;
    border-radius: 3px !important;
    font-weight: 700;
    font-size: 9px !important;
    padding: 1px 4px !important;
    white-space: normal;
  }

  /* Colores de texto de Bootstrap que sobre blanco no llegan al 4,5:1
     (warning 1,6:1, info 2,3:1): se oscurecen para que el texto siga
     leyéndose aunque el matiz no importe en papel. Los demás (.text-muted
     4,7:1, .text-danger 4,5:1, .text-success 4,5:1) ya cumplen AA. */
  .text-warning { color: #7a4a00 !important; }   /* 7,6:1 sobre blanco */
  .text-info    { color: #055160 !important; }   /* 8,3:1 sobre blanco */
  .text-muted, .text-secondary { color: #4b5563 !important; }  /* 7,6:1 */
  .text-white, .text-light { color: #000 !important; }
  /* «Heros» de cifra reina (modelo 390, 303…): banda oscura pintada inline con
     texto blanco o pastel. En papel la banda es blanca, así que TODO lo que
     declare color:#fff inline —y sus hijos— pasa a negro. Sin esto la cifra
     principal se imprimía blanco sobre blanco (visto en la pasada del 07/09). */
  [style*="color:#fff"], [style*="color: #fff"], [style*="color:white"],
  [style*="color:#fff"] *, [style*="color: #fff"] *, [style*="color:white"] * {
    color: #000 !important;
    opacity: 1 !important;
  }
  /* Fondos de color de Bootstrap (bg-*): no se imprimen; el texto va en negro. */
  [class*="bg-"] { background: #fff !important; color: #000 !important; }

  /* ── 9. Controles que SÍ forman parte del contenido ───────
     Un <input> dentro de una tabla (p. ej. la columna «Previsto» del
     presupuesto) se imprime como texto plano: sin caja, sin fondo. */
  input:not([type="hidden"]) {
    border: 0 !important;
    background: none !important;
    box-shadow: none !important;
    color: #000 !important;
    padding: 0 !important;
  }

  /* ── 10. Utilidades ───────────────────────────────────────
     .salto-pagina fuerza hoja nueva; .no-cortar mantiene junto un bloque. */
  .salto-pagina { page-break-before: always; }
  .no-cortar { page-break-inside: avoid; }
}
