/* ============================================================
   MODO PRIVACIDAD ("ojito")
   Activo cuando #app-shell tiene la clase .privacy-on.

   Estrategia A PRUEBA DE FUGAS (lista blanca):
   1. Por defecto se OCULTA todo el texto del área de datos
      (se vuelve un borrón suave). Cualquier valor que se olvide,
      queda oculto igual — incluso montos con color (verde/rojo).
   2. Se dejan NÍTIDOS solo títulos, etiquetas, encabezados,
      botones, pestañas e íconos.
   3. Las gráficas (canvas) se desenfocan aparte.

   NOTA de especificidad: el bloque (1) usa :where() para tener
   especificidad BAJA y uniforme (1 id + 1 clase), de modo que los
   bloques (2)(3)(4) —con una clase más— SIEMPRE le ganen y dejen
   los títulos/íconos nítidos. Si se cambia, mantener esa relación.
   ============================================================ */

/* Botón del top bar cuando está activo */
#btn-privacy.active { color: var(--accent); }

/* (1) Ocultar TODO el texto de las áreas de datos (incluye valores con color) */
#app-shell.privacy-on :where(main, .modal, .contact-panel, .search-results, .sidebar-notif-panel) * {
  color: transparent !important;
  /* Gris suave + halo amplio → ilegible pero con aspecto esmerilado
     limpio (no "manchas" de tinta como con un color oscuro y denso). */
  text-shadow: 0 0 9px rgba(110,112,128,0.78), 0 0 16px rgba(110,112,128,0.5) !important;
  transition: text-shadow .15s ease;
}

/* (2) Mantener los ÍCONOS visibles (usan currentColor) */
#app-shell.privacy-on :where(main, .modal, .contact-panel, .search-results, .sidebar-notif-panel) svg,
#app-shell.privacy-on :where(main, .modal, .contact-panel, .search-results, .sidebar-notif-panel) svg * {
  color: var(--text-secondary) !important;
  text-shadow: none !important;
}

/* (3) Desenfocar gráficas (no son texto) */
#app-shell.privacy-on canvas { filter: blur(8px); }

/* (4) Dejar NÍTIDOS títulos, etiquetas, encabezados, botones y pestañas */
#app-shell.privacy-on :is(
  h1, h2, h3, h4, label, th, .subtitle, .modal-head-row, .contactos-head,
  .nav-section, .snp-header, .uni-head,
  .dash-section, .od-sec, .od-lbl, .pcard-title, .opp-otras-lbl,
  .kpi-label, .kpi-edit-head, .fin-card-label, .inv-label, .vt-obj-label,
  .param-label, .col-title, .kanban-col-header, .tax-title,
  .investment-card-title, .est-card-title, .est-card-headrow, .est-detalle-head,
  .mk-content-title, .mk-plan-title, .mk-plan-head, .mk-card-head,
  .mk-metric-head, .mk-day-lbl, .mk-plan-item-lbl, .mk-plan-aside-label,
  .crono-head, .crono-task-title, .dec-cat-head, .gasto-cat-head,
  .flujo-box-head, .cli-detalle-head, .dash-bar-label, .bar-label-row,
  .dash-compare-head, .switch-label, .cfg-nav-label,
  .task-title, .task-row-title, .pt-title, .pt-title-line, .tac-name,
  button, select, .btn-primary, .btn-secondary, .fin-tab, .panel-tab,
  .mk-tab, .proy-vtab
) {
  color: var(--text-primary) !important;
  text-shadow: none !important;
}

/* Botón primario: texto blanco sobre el acento (no oscuro) */
#app-shell.privacy-on .btn-primary { color: #fff !important; }
