/* ===========================================================================
   theme-base.css — MOTOR DE TEMAS (estructura compartida) para notzap2.0
   Contiene TODAS las formas/correcciones (bordes redondeados, sombras, fixes
   del buscador del sidebar, tipos de botón, etc.) usando tokens --mnd-*.
   Los COLORES los aporta el archivo de paleta (theme-<nombre>.css) que se
   carga junto a este. NO renombra clases. Cargar DESPUÉS de custom.css.

   >>> El tema activo se elige con la variable UI_THEME en el archivo .env.
   >>> ROLLBACK COMPLETO: comentar los <link> del motor de temas en
       resources/views/vendor/adminlte/master.blade.php.
   =========================================================================== */

:root{
  /* Forma / profundidad — compartido por TODAS las paletas (bordes redondeados) */
  --mnd-radius:10px;         --mnd-radius-sm:8px;    --mnd-radius-lg:14px;
  --mnd-radius-pill:999px;
  --mnd-shadow-sm:0 1px 3px rgba(0,0,0,.08);
  --mnd-shadow-md:0 4px 12px rgba(0,0,0,.10);
}

/* Tipografía base (Figtree -> ver master.blade para la fuente).
   Mantengo el escalado existente (html 82%) para no alterar densidad. */
body, .wrapper{ background-color:var(--mnd-bg); color:var(--mnd-text); }
/* Fuente configurable por UI_FONT (.env): master.blade.php publica --mnd-font. Fallback = Figtree. */
body{ font-family:var(--mnd-font, "Figtree","Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif); }
/* Numerales tabulares SOLO en contextos numéricos/montos (alinea cifras entre filas); nunca global. */
.v2-row--total dd, .v2-inv-monto, .num-tabular{ font-variant-numeric:tabular-nums; font-feature-settings:"tnum" 1; }

/* =====================================================================
   BORDES REDONDEADOS GLOBALES + sombras suaves
   El proyecto PREFIERE esquinas redondeadas en todos los controles.
   ===================================================================== */
.btn{ border-radius:var(--mnd-radius-sm); transition:all .15s ease; }
.box, .panel, .card{
  border-radius:var(--mnd-radius)!important;
  box-shadow:var(--mnd-shadow-sm);
  /* SIN overflow:hidden: recortaba los dropdowns ⋮ dentro de boxes con pocas
     filas (v1 y v2). El radio de las esquinas se preserva redondeando
     headers/footers hijos (reglas siguientes). */
}
.box .box-header:first-child, .card .card-header:first-child{
  border-top-left-radius:var(--mnd-radius); border-top-right-radius:var(--mnd-radius);
}
.box .box-footer:last-child, .card .card-footer:last-child{
  border-bottom-left-radius:var(--mnd-radius); border-bottom-right-radius:var(--mnd-radius);
}
/* Inputs, selects, textareas y addons */
.form-control, .custom-select, .input-group .form-control,
.select2-container--default .select2-selection,
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple{
  border-radius:var(--mnd-radius-sm)!important;
}
.input-group > .form-control:not(:last-child),
.input-group > .custom-select:not(:last-child){
  border-top-right-radius:0!important; border-bottom-right-radius:0!important;
}
.input-group > .form-control:not(:first-child),
.input-group > .custom-select:not(:first-child){
  border-top-left-radius:0!important; border-bottom-left-radius:0!important;
}
.input-group-text{ border-radius:var(--mnd-radius-sm); }
.input-group > .input-group-prepend > .input-group-text{ border-top-right-radius:0; border-bottom-right-radius:0; }
.input-group > .input-group-append > .input-group-text{ border-top-left-radius:0; border-bottom-left-radius:0; }
/* Menús, modales, alertas, popovers, tooltips, imágenes de tarjeta */
.dropdown-menu{ border-radius:var(--mnd-radius); box-shadow:var(--mnd-shadow-md); }
.modal-content{ border-radius:var(--mnd-radius-lg); overflow:hidden; }
.alert, .callout{ border-radius:var(--mnd-radius); }
.popover{ border-radius:var(--mnd-radius); }
.card-img-top{ border-top-left-radius:var(--mnd-radius); border-top-right-radius:var(--mnd-radius); }
/* Badges tipo "píldora" */
.badge{ border-radius:var(--mnd-radius-pill); }
/* Tablas dentro de boxes: respetar el redondeo del contenedor */
.box > .box-body > .table-responsive, .box > .table-responsive{ border-radius:var(--mnd-radius); }
.table thead th:first-child{ border-top-left-radius:var(--mnd-radius); }
.table thead th:last-child{ border-top-right-radius:var(--mnd-radius); }

/* Zebra striping sutil para tablas densas (alto volumen de datos) */
.table-striped tbody tr:nth-of-type(odd){ background-color:var(--mnd-surface-2); }
.table thead th{ color:var(--mnd-text-muted); border-bottom:2px solid var(--mnd-border); }
.table td, .table th{ border-top:1px solid var(--mnd-border); }
/* Vistas v1 con DataTables dentro de un box: si la tabla es más ancha que la caja
   (p.ej. /predespachos, 10 columnas), scroll horizontal EN LUGAR de derramarse fuera.
   El tema v2 no pone overflow:hidden en .box (recortaba los dropdowns ⋮), así que
   la contención la damos aquí, acotada al wrapper de DataTables (no afecta a las v2). */
.box .dataTables_wrapper{ overflow-x:auto; }

/* =====================================================================
   BOTONES
   ===================================================================== */

/* --- PRIMARIO: hadron + proto --- */
.btn-hadron, .btn-proto, .btn-noedge-proto{
  background-color:var(--mnd-blue); color:#fff; border-color:var(--mnd-blue);
}
.btn-hadron:hover,.btn-hadron:focus,.btn-hadron:active,
.btn-proto:hover,.btn-proto:focus,.btn-proto:active,.btn-proto.active,
.btn-noedge-proto:hover,.btn-noedge-proto:focus,.btn-noedge-proto:active{
  background-color:var(--mnd-blue-hover); color:#fff; border-color:var(--mnd-blue-hover);
}
.btn-outline-hadron, .btn-outline-proto{
  background-color:transparent; color:var(--mnd-blue); border-color:var(--mnd-blue);
}
.btn-outline-hadron:hover,.btn-outline-hadron:focus,.btn-outline-hadron:active,
.btn-outline-proto:hover,.btn-outline-proto:focus,.btn-outline-proto:active{
  background-color:var(--mnd-blue); color:#fff; border-color:var(--mnd-blue);
}

/* --- SECUNDARIO: neutro + pion + lepton --- */
.btn-neutro, .btn-pion, .btn-lepton{
  background-color:var(--mnd-purple); color:#fff; border-color:var(--mnd-purple);
}
.btn-neutro:hover,.btn-neutro:focus,.btn-neutro:active,
.btn-pion:hover,.btn-pion:focus,.btn-pion:active,
.btn-lepton:hover,.btn-lepton:focus,.btn-lepton:active{
  background-color:var(--mnd-purple-dark); color:#fff; border-color:var(--mnd-purple-dark);
}

/* --- N° de despacho copiable en TODOS los listados ---
   En v2 el N° de despacho es un enlace al detalle: <a class="btn btn-xs btn-lepton"> dentro de una .table.
   Bootstrap aplica user-select:none a todo .btn, lo que impide copiarlo con el mouse. Aquí se restaura la
   selección de texto en esos enlaces dentro de tablas → el usuario puede seleccionar el número y copiarlo
   (doble clic o arrastrando) sin perder el clic que navega al detalle. Convención: mantener ese patrón en las listas. */
.table a.btn-lepton, .table-responsive a.btn-lepton{
  -webkit-user-select:text; -moz-user-select:text; -ms-user-select:text; user-select:text;
  -webkit-user-drag:none;
}
.btn-outline-neutro{ background-color:transparent; color:var(--mnd-purple-dark); border-color:var(--mnd-purple); }
.btn-outline-neutro:hover,.btn-outline-neutro:focus,.btn-outline-neutro:active{
  background-color:var(--mnd-purple); color:#fff; border-color:var(--mnd-purple);
}

/* --- WARNING: electro + foton (texto oscuro = AA) --- */
.btn-electro, .btn-foton{
  background-color:var(--mnd-orange); color:var(--mnd-text); border-color:var(--mnd-orange);
}
.btn-electro:hover,.btn-electro:focus,.btn-electro:active,
.btn-foton:hover,.btn-foton:focus,.btn-foton:active{
  background-color:var(--mnd-orange-dark); color:var(--mnd-text); border-color:var(--mnd-orange-dark);
}
.btn-outline-electro,.btn-outline-foton{ background-color:transparent; color:var(--mnd-orange-dark); border-color:var(--mnd-orange); }
.btn-outline-electro:hover,.btn-outline-foton:hover{ background-color:var(--mnd-orange); color:var(--mnd-text); border-color:var(--mnd-orange); }

/* --- PELIGRO: boson (rojo-dark con texto blanco = AA) --- */
.btn-boson{ background-color:var(--mnd-red-dark); color:#fff; border-color:var(--mnd-red-dark); }
.btn-boson:hover,.btn-boson:focus,.btn-boson:active{
  background-color:var(--mnd-red-dark); color:#fff; border-color:var(--mnd-red-dark); filter:brightness(.92);
}
.btn-outline-boson{ background-color:transparent; color:var(--mnd-red-dark); border-color:var(--mnd-red); }
.btn-outline-boson:hover,.btn-outline-boson:focus,.btn-outline-boson:active{
  background-color:var(--mnd-red-dark); color:#fff; border-color:var(--mnd-red-dark);
}

/* --- POSITIVO / ÉXITO: btn-success (verde-dark + blanco = AA) --- */
.btn-success{
  background-color:var(--mnd-green-dark)!important; color:#fff!important; border-color:var(--mnd-green-dark)!important;
}
.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active{
  background-color:var(--mnd-green-dark)!important; color:#fff!important; border-color:var(--mnd-green-dark)!important; filter:brightness(.9);
}
.btn-outline-success{ background-color:transparent!important; color:var(--mnd-green-dark)!important; border-color:var(--mnd-green-dark)!important; }
.btn-outline-success:hover,.btn-outline-success:focus{ background-color:var(--mnd-green-dark)!important; color:#fff!important; }

/* --- UTILITARIOS claros/oscuros: gluon / quartz / fermion --- */
.btn-gluon{ background-color:var(--mnd-surface-2); color:var(--mnd-text); border-color:var(--mnd-border); }
.btn-gluon:hover,.btn-gluon:focus,.btn-gluon:active{
  background-color:var(--mnd-blue); color:#fff; border-color:var(--mnd-blue);
}
.btn-quartz, .btn-fermion{ background-color:var(--mnd-text); color:#fff; border-color:var(--mnd-text); }
.btn-quartz:hover,.btn-fermion:hover{ background-color:var(--mnd-text); color:#fff; filter:brightness(.7); }
.btn-outline-quartz{ background-color:transparent; color:var(--mnd-text); border-color:var(--mnd-border-strong); }
.btn-outline-quartz:hover{ background-color:var(--mnd-text); color:#fff; }

/* --- DESTACADO / branding: colision (gradiente primario->secundario) --- */
.btn-colision{
  background:linear-gradient(135deg,var(--mnd-blue) 0%,var(--mnd-purple) 100%);
  color:#fff; border-color:transparent; border-radius:var(--mnd-radius);
}
.btn-colision-round{
  background:linear-gradient(135deg,var(--mnd-blue) 0%,var(--mnd-purple) 100%);
  color:#fff; border-color:transparent; border-radius:var(--mnd-radius-pill);
}
.btn-colision:hover,.btn-colision:focus,
.btn-colision-round:hover,.btn-colision-round:focus,.btn-colision-round:active{
  background:linear-gradient(135deg,var(--mnd-blue-hover) 0%,var(--mnd-purple-dark) 100%);
  color:#fff; border-color:transparent;
}
.bg-colision{ background:linear-gradient(135deg,var(--mnd-blue) 0%,var(--mnd-purple) 100%); color:#fff; border-color:transparent; }
.bg-colision-new{ background:linear-gradient(135deg,var(--mnd-blue) 0%,var(--mnd-purple) 100%)!important; color:#fff; }

/* --- Contenedor de acciones de cabecera (detalles v2, palette-agnostic) --- */
.v2-actions{ display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:.5rem; min-width:0; }
.v2-actions > .btn{ margin:0; }
@media (max-width:575.98px){ .v2-actions{ justify-content:flex-start; } }

/* =====================================================================
   BADGES / LABELS  (forma píldora definida arriba en .badge)
   ===================================================================== */
.badge-hadron, .label-hadron{ background-color:var(--mnd-blue); color:#fff; border-color:var(--mnd-blue); }
.badge-hadron:hover,.badge-hadron:focus{ background-color:var(--mnd-blue-hover); color:#fff; }
.badge-outline-hadron{ background-color:transparent; color:var(--mnd-blue); border:1px solid var(--mnd-blue); }
.badge-outline-hadron:hover{ background-color:var(--mnd-blue); color:#fff; }
.badge-electro{ background-color:var(--mnd-orange); color:var(--mnd-text); border-color:var(--mnd-orange); }
.badge-neutro{ background-color:var(--mnd-purple); color:#fff; border-color:var(--mnd-purple); }
.badge-neutro:hover,.badge-neutro:focus{ background-color:var(--mnd-purple-dark); color:#fff; }
.badge-boson{ background-color:var(--mnd-red-dark); color:#fff; border-color:var(--mnd-red-dark); }
.label-azul{ background-color:var(--mnd-blue); }
.badge-light-custom{ background-color:var(--mnd-surface-2); color:var(--mnd-text-muted); }

/* Notificaciones */
.badge-notify-danger{ background:var(--mnd-red)!important; color:#fff!important; }
.badge-notify-warning{ background:var(--mnd-orange); color:var(--mnd-text); }
.badge-notify-gray{ background:var(--mnd-text-muted); }
.navbar-light .badge-notify-gray{ background-color:var(--mnd-blue); color:#fff; }

/* =====================================================================
   TEXTO / ENLACES TEMÁTICOS
   ===================================================================== */
.text-hadron{ color:var(--mnd-blue)!important; }
.text-neutro{ color:var(--mnd-purple-dark)!important; }
.text-neutro-mute{ color:var(--mnd-text-muted)!important; }
.cod_seg{ color:var(--mnd-blue); }
.nav-link > .text-lightblue{ color:var(--mnd-blue)!important; }

/* =====================================================================
   BOXES / PANELES / CARDS  (radio global definido arriba)
   ===================================================================== */
.box{
  background:var(--mnd-surface);
  border-top:3px solid var(--mnd-border);
  box-shadow:var(--mnd-shadow-sm);
}
.box.box-hadron{ border-top-color:var(--mnd-blue)!important; }
.box.box-primary{ border-top-color:var(--mnd-blue); }
.box.box-secondary{ border-top-color:var(--mnd-border); }
.box.box-hadron td > a:not(.btn){ color:var(--mnd-blue); }
.box.box-hadron td > a:not(.btn):hover{ color:var(--mnd-blue-hover); }

.box-filter{
  background:var(--mnd-surface-2); border:1px solid var(--mnd-border);
  border-radius:var(--mnd-radius);
}
.box-filter > .btn{ color:var(--mnd-blue); }
.box-filter > .btn:hover{ box-shadow:var(--mnd-shadow-md); }

.panel{ box-shadow:var(--mnd-shadow-sm); }
.panel-neutro > .panel-heading{ color:var(--mnd-purple-dark); background-color:var(--mnd-surface-2); border-color:var(--mnd-purple); }

/* Cards de formulario */
.card-form{ background-color:var(--mnd-surface); border:1px solid var(--mnd-border); box-shadow:var(--mnd-shadow-sm); }
.card-form:hover{ border:1px solid var(--mnd-blue); box-shadow:var(--mnd-shadow-md); }
.card-form-unique, .card-form-unique-plus{ background-color:var(--mnd-surface-2); }
.card-form > .card-form-header{ color:var(--mnd-text); }
.card-form > .card-form-body{ background-color:var(--mnd-surface-2); color:var(--mnd-text-muted); }

/* =====================================================================
   CHROME ADMINLTE: navbar, sidebar, brand
   ===================================================================== */
.navbar-white{ background:var(--mnd-surface)!important; color:var(--mnd-text)!important; box-shadow:var(--mnd-shadow-sm); }
.navbar-white > ul > li > a{ color:var(--mnd-text)!important; }
.os-theme-light, .brand-link{ background:var(--mnd-surface)!important; }
.brand-text{
  background:-webkit-linear-gradient(var(--mnd-blue),var(--mnd-purple));
  -webkit-background-clip:text; -webkit-text-fill-color:transparent;
}
[class*="sidebar-light"] .form-control-sidebar,
[class*="sidebar-light"] .btn-sidebar{
  background-color:var(--mnd-surface); border:1px solid var(--mnd-border); color:var(--mnd-text);
  border-radius:var(--mnd-radius-sm);
}
/* Buscador del sidebar: el texto quedaba recortado contra el ícono de la lupa.
   No se fuerza altura fija (eso clippeaba la caja de línea de Figtree): se deja
   altura automática y se controla solo font-size / line-height / padding. */
.input-group[data-widget="sidebar-search"] .form-control-sidebar,
.form-inline .input-group .form-control-sidebar,
.form-control-sidebar{
  font-size:.85rem !important;
  line-height:1.5 !important;
  height:auto !important;
  min-height:calc(1.5em + .55rem + 2px);
  padding:.28rem .55rem !important;
}
.form-inline .input-group .btn-sidebar,
.btn-sidebar{
  font-size:.85rem !important;
  line-height:1.5 !important;
  height:auto !important;
  min-height:calc(1.5em + .55rem + 2px);
  padding-top:.28rem !important; padding-bottom:.28rem !important;
  display:inline-flex; align-items:center; justify-content:center;
}
.btn-sidebar i, .btn-sidebar .fa, .btn-sidebar .fas{ font-size:.85rem; line-height:1; }
/* El input-group del buscador se desbordaba (más ancho que el sidebar).
   Se reduce ~2 columnas (a 10/12 ≈ 83.33%) alineado a la IZQUIERDA (sin margin
   auto) y se le da el MISMO ancho a los resultados, que son hermanos flex dentro
   del .form-inline: así el input y la lista de resultados quedan cuadrados.
   min-width:0 permite que el input encoja dentro del flex sin rebasar. */
.form-inline .input-group[data-widget="sidebar-search"],
.sidebar .form-inline .input-group{
  width:83.333%; max-width:83.333%; flex:0 0 83.333%;
  flex-wrap:nowrap;
}
.form-inline .input-group[data-widget="sidebar-search"] .form-control-sidebar,
.sidebar .form-inline .input-group .form-control-sidebar{
  flex:1 1 auto; min-width:0; width:auto;
}
.form-inline .input-group[data-widget="sidebar-search"] .input-group-append,
.sidebar .form-inline .input-group .input-group-append{ flex:0 0 auto; }
/* Resultados de la búsqueda: mismo ancho y misma alineación que el input */
.form-inline .sidebar-search-results,
.sidebar .form-inline .sidebar-search-results{
  width:83.333%; max-width:83.333%; flex:0 0 83.333%;
}
.sidebar-search-results .list-group{ width:100%; }
.sidebar-search-results .list-group > .list-group-item{ font-size:.85rem; }
/* Items del menú: pastillas redondeadas con inset CONSISTENTE en TODOS los
   niveles (top-level y submenús). Antes el inset solo estaba en el primer
   nivel, así el ítem activo sobrepasaba el contenedor y el submenú quedaba
   descuadrado. Ahora todos comparten el mismo margen lateral y los submenús
   llevan indentación de jerarquía. */
/* --- FIX: la pastilla desbordaba a la derecha ------------------------------
   AdminLTE (sidebar_mini activo en config) fija width:calc(250px - 1rem) en
   .nav-link SIN descontar nuestros márgenes de 8px (234+16=250 → topa borde),
   y lo re-aplica con especificidad 0-6-0 en el sidebar colapsado expandido
   por hover/focus. width:auto!important lo neutraliza en TODOS los estados y
   niveles; el estado icon-only recupera aparte su ancho compacto. */
.sidebar .nav-sidebar .nav-item > .nav-link{
  border-radius:var(--mnd-radius-sm);
  margin:2px 8px;
  width:auto !important;
  max-width:calc(100% - 16px);
}

/* Sidebar mini COLAPSADO sin expandir (icon-only): restaurar el ancho compacto
   de AdminLTE (3.6rem) que el !important de arriba pisaría. */
.sidebar-collapse.sidebar-mini .main-sidebar:not(:hover):not(.sidebar-focused) .nav-sidebar .nav-item > .nav-link,
.sidebar-collapse.sidebar-mini-md .main-sidebar:not(:hover):not(.sidebar-focused) .nav-sidebar .nav-item > .nav-link,
.sidebar-collapse.sidebar-mini-xs .main-sidebar:not(:hover):not(.sidebar-focused) .nav-sidebar .nav-item > .nav-link{
  width:3.6rem !important;
  margin:2px auto;
}

/* Anular el gradiente legado de custom.css (.sidebar-light-primary …
   .nav-link.active, 0-5-0 !important) que pisaba la pastilla sólida del tema.
   Mismo selector = misma especificidad; theme-base carga después y gana. */
.sidebar-light-primary .nav-sidebar > .nav-item > .nav-link.active{
  background:var(--mnd-nav-active, var(--mnd-blue-hover)) !important;
}
/* Submenús (treeview): sin padding propio del <ul>; la indentación la da el
   padding-left del enlace, así el margen derecho coincide con el nivel padre. */
.sidebar .nav-sidebar .nav-treeview{ padding-left:0; }
.sidebar .nav-sidebar .nav-treeview .nav-link{ padding-left:1.75rem; }
.sidebar .nav-sidebar .nav-treeview .nav-treeview .nav-link{ padding-left:2.75rem; }

/* Aire al final del menú: con todas las secciones expandidas, las últimas
   opciones quedaban pegadas al borde inferior de la página. Un colchón dentro
   del área scrolleable del sidebar deja las últimas opciones "respiradas". */
.sidebar .nav-sidebar{ padding-bottom:2.75rem; }

/* Botón único "colapsar/expandir todo" (sin título; el menú se entiende solo). */
.nz-tool{
  appearance:none; border:0; background:transparent; cursor:pointer;
  width:32px; height:32px; border-radius:6px; padding:0; line-height:1;
  display:inline-flex; align-items:center; justify-content:center;
  color:var(--mnd-text-muted,#8a9aa0); transition:background-color .15s ease, color .15s ease;
}
.nz-tool:hover, .nz-tool:focus-visible{
  background:color-mix(in srgb, var(--mnd-text, #143034) 8%, transparent);
  color:var(--mnd-text,#143034); outline:none;
}
.nz-tool:focus-visible{ box-shadow:var(--mnd-focus,0 0 0 3px rgba(14,156,165,.35)); }
.nz-tool i{ font-size:.9rem; }

/* En el renglón del buscador: el input-group ocupa 83.333% a la izquierda, así que
   el botón se ancla en el hueco libre de la derecha, centrado verticalmente con el
   input (posición absoluta → no afecta el ancho del input ni el wrap de resultados). */
.sidebar .form-inline{ position:relative; }
.nz-tool--search{
  position:absolute; top:0; right:.1rem;
  height:calc(1.5em + .55rem + 2px); /* = alto del input del buscador */
  width:32px;
}
/* Fallback sin buscador: fila propia, botón a la derecha. */
.sidebar .nav-sidebar > .nz-menu-tools{
  display:flex; justify-content:flex-end; align-items:center;
  margin:0; padding:.15rem .8rem .3rem;
}
/* =====================================================================
   JERARQUÍA DE MENÚ (acordada en 3 rondas diseñador↔cliente):
   "La pastilla sólida siempre marca DÓNDE ESTOY y vive en el ítem visible
    más profundo; una sola pastilla sólida en pantalla, siempre."
   - Página actual visible  -> sólido var(--mnd-nav-active), texto blanco.
   - Padre ABIERTO c/ hijo activo -> susurro: tinte + texto nav-active + barra 3px.
   - Padre COLAPSADO c/ hijo activo -> hereda la pastilla sólida completa.
   - Hover -> gris neutro (el color de marca solo significa "estoy aquí").
   Tokens por paleta: --mnd-nav-active (tinta profundo, AA c/ blanco) y
   --mnd-nav-open-bg. Fallbacks por si una paleta no los define.
   ===================================================================== */

/* Hover neutro en ambos niveles (nunca color de marca) */
.sidebar .nav-sidebar .nav-link:hover:not(.active){
  background:rgba(0,0,0,.05);
  background:color-mix(in srgb, var(--mnd-text) 6%, transparent);
  color:var(--mnd-text);
}

/* Página actual visible (nivel 1 o submenú): pastilla sólida, sin gradiente */
.sidebar .nav-sidebar .nav-link.active{
  background:var(--mnd-nav-active, var(--mnd-blue-hover))!important;
  color:#fff!important;
  font-weight:600;
}

/* Padre ABIERTO con hijo activo: susurro (el énfasis vive en el hijo) */
.sidebar .nav-sidebar .nav-item.menu-open:has(.nav-treeview .nav-link.active) > .nav-link,
.sidebar .nav-sidebar .nav-item.menu-open:has(.nav-treeview .nav-link.active) > .nav-link.active{
  background:var(--mnd-nav-open-bg, rgba(0,0,0,.06))!important;
  color:var(--mnd-nav-active, var(--mnd-blue-hover))!important;
  font-weight:600;
  box-shadow:inset 3px 0 0 var(--mnd-blue);
}

/* Padre COLAPSADO con hijo activo: hereda la pastilla completa
   (siempre hay exactamente UNA marca fuerte de ubicación) */
.sidebar .nav-sidebar .nav-item:not(.menu-open):has(.nav-treeview .nav-link.active) > .nav-link{
  background:var(--mnd-nav-active, var(--mnd-blue-hover))!important;
  color:#fff!important;
  font-weight:600;
  box-shadow:inset 3px 0 0 var(--mnd-blue);
}

/* =====================================================================
   BREADCRUMBS
   ===================================================================== */
a.breadcrumbs, .breadcrumb-item > a{ color:var(--mnd-blue); }
a.breadcrumbs:hover, .breadcrumb-item > a:hover{ color:var(--mnd-blue-hover); }

/* =====================================================================
   PAGINACIÓN  (extremos redondeados)
   ===================================================================== */
.pagination{ border-radius:var(--mnd-radius-sm); }
.pagination > li > a, .pagination > li > span{ color:var(--mnd-blue); }
.pagination > li:first-child > a, .pagination > li:first-child > span,
.page-item:first-child .page-link{ border-top-left-radius:var(--mnd-radius-sm); border-bottom-left-radius:var(--mnd-radius-sm); }
.pagination > li:last-child > a, .pagination > li:last-child > span,
.page-item:last-child .page-link{ border-top-right-radius:var(--mnd-radius-sm); border-bottom-right-radius:var(--mnd-radius-sm); }
.pagination > .active > a, .pagination > .active > span,
.page-item.active .page-link{
  background-color:var(--mnd-blue)!important; border-color:var(--mnd-blue)!important; color:#fff;
}

/* =====================================================================
   FORM CONTROLS / SELECT2 / CHECKS
   ===================================================================== */
.check-custom, .radio-custom, .check-hadron,
.box.box-hadron .form-check > .check-custom,
.login-box input[type="checkbox"]{ accent-color:var(--mnd-blue); }
.custom-control-input:checked ~ .custom-control-label::before{ background-color:var(--mnd-blue)!important; border-color:var(--mnd-blue)!important; }
.select2-container--default .select2-results__option--highlighted[aria-selected]{ background-color:var(--mnd-blue)!important; }
.box.box-hadron .select2-selection__choice,
.swal2-container .select2-selection__choice{ background-color:var(--mnd-blue)!important; border-color:var(--mnd-blue)!important; color:#fff!important; border-radius:var(--mnd-radius-sm)!important; }
.box.box-primary .select2-selection__choice{ background-color:var(--mnd-blue)!important; border-color:var(--mnd-blue)!important; border-radius:var(--mnd-radius-sm)!important; }
.applyBtn.btn-primary, .login-box .btn-primary{ background-color:var(--mnd-blue)!important; border-color:var(--mnd-blue)!important; }
.login-box .card-primary.card-outline{ border-top:3px solid var(--mnd-blue); }
.calendar-table .table-condensed td.active{ background-color:var(--mnd-blue)!important; }
.box.box-hadron .dropdown-item:active,
.box.box-default .dropdown-item:active,
.navbar-light .dropdown-item:active{ background-color:var(--mnd-blue)!important; }

/* Login branding */
.login-logo{ background:linear-gradient(135deg,var(--mnd-blue) 10%,var(--mnd-purple) 100%); }

/* Errores de formulario */
.help-block, .form-group.has-error label{ color:var(--mnd-red-dark); }
.form-group.has-error .form-control{ border-color:var(--mnd-red); }

/* =====================================================================
   PROGRESS TRACKER (estados)
   ===================================================================== */
ol.progtrckr li.progtrckr-done, ol.progtrckr li.progtrckr-inprocess{ border-bottom-color:var(--mnd-blue); }
ol.progtrckr li.progtrckr-done:before, ol.progtrckr li.progtrckr-inprocess:before{ background-color:var(--mnd-blue); }
/* Primer y ÚLTIMO paso: custom.css los deja sin border-bottom y dibuja el
   tramo con un ::after posicionado. Esa capa distinta se desalinea al
   subpíxel con los border-bottom vecinos en zoom fraccional y produce el
   efecto de "línea doble/cortada". Solución: se RESTAURA el border real
   (toda la línea es un único primitivo, sin costuras) y el ::after se
   reutiliza como "borrador" color superficie que oculta la mitad de línea
   que sobra (antes del primer círculo / después del último). */
ol.progtrckr li:first-child.progtrckr-done,
ol.progtrckr li:first-child.progtrckr-inprocess{ border-bottom:4px solid var(--mnd-blue); }
ol.progtrckr li:first-child.progtrckr-warning,
ol.progtrckr li:first-child.progtrckr-inwarning{ border-bottom:4px solid var(--mnd-orange); }
ol.progtrckr li:first-child.progtrckr-error,
ol.progtrckr li:first-child.progtrckr-inerror{ border-bottom:4px solid var(--mnd-red); }
ol.progtrckr li:first-child.progtrckr-todo,
ol.progtrckr li:first-child.progtrckr-intodo{ border-bottom:4px solid silver; }
ol.progtrckr li:first-child[class*="progtrckr-"]::after{
  content:""; position:absolute;
  left:0; right:auto; bottom:-5px;
  width:calc(50% - 1em); height:6px;
  background:var(--mnd-surface);
}
ol.progtrckr[data-progtrckr-steps="6"] li:nth-child(6).progtrckr-done,
ol.progtrckr[data-progtrckr-steps="6"] li:nth-child(6).progtrckr-inprocess{ border-bottom:4px solid var(--mnd-blue); }
ol.progtrckr[data-progtrckr-steps="6"] li:nth-child(6).progtrckr-warning,
ol.progtrckr[data-progtrckr-steps="6"] li:nth-child(6).progtrckr-inwarning{ border-bottom:4px solid var(--mnd-orange); }
ol.progtrckr[data-progtrckr-steps="6"] li:nth-child(6).progtrckr-error,
ol.progtrckr[data-progtrckr-steps="6"] li:nth-child(6).progtrckr-inerror{ border-bottom:4px solid var(--mnd-red); }
ol.progtrckr[data-progtrckr-steps="6"] li:nth-child(6).progtrckr-todo,
ol.progtrckr[data-progtrckr-steps="6"] li:nth-child(6).progtrckr-intodo{ border-bottom:4px solid silver; }
ol.progtrckr[data-progtrckr-steps="6"] li:nth-child(6)[class*="progtrckr-"]::after{
  content:""; position:absolute;
  right:0; left:auto; bottom:-5px;
  width:calc(50% - 1em); height:6px;
  background:var(--mnd-surface);
}
ol.progtrckr li.progtrckr-warning, ol.progtrckr li.progtrckr-inwarning{ color:var(--mnd-orange-dark); border-bottom-color:var(--mnd-orange); }
ol.progtrckr li.progtrckr-warning:before, ol.progtrckr li.progtrckr-inwarning:before{ background-color:var(--mnd-orange); color:var(--mnd-text); }
ol.progtrckr li.progtrckr-error, ol.progtrckr li.progtrckr-inerror{ color:var(--mnd-red-dark); border-bottom-color:var(--mnd-red); }
ol.progtrckr li.progtrckr-error:before, ol.progtrckr li.progtrckr-inerror:before{ background-color:var(--mnd-red); }

/* =====================================================================
   ESTADOS DE FOCO ACCESIBLES (WCAG 2.4.7)
   ===================================================================== */
.btn:focus-visible, .form-control:focus, .page-link:focus,
a.breadcrumbs:focus, .nav-link:focus-visible{
  outline:none; box-shadow:var(--mnd-focus)!important;
}

/* =====================================================================
   CHIPS (componente reutilizable, palette-agnostic)
   Deriva del token --mnd-orange vía color-mix, sin hex fijo.
   ===================================================================== */
.chip-wrap{display:flex;flex-wrap:wrap;gap:.4rem;padding:.25rem 0;max-height:7.5rem;overflow:hidden}
.chip-wrap--expanded{max-height:none}
.chip{display:inline-flex;align-items:center;gap:.35rem;border-radius:var(--mnd-radius-pill);padding:.2rem .7rem;font-size:.8rem;line-height:1.4;background:var(--mnd-surface-2);color:var(--mnd-text);border:1px solid var(--mnd-border)}
.chip small{color:var(--mnd-text-muted)}
.chip--pend{background:color-mix(in srgb, var(--mnd-orange) 12%, var(--mnd-surface));border-color:color-mix(in srgb, var(--mnd-orange) 35%, var(--mnd-surface));color:var(--mnd-orange-dark)}

/* =====================================================================
   SWITCH (toggle CSS local, reemplaza bootstrap-toggle CDN)
   Envuelve un <input type="checkbox"> — palette-agnostic (--mnd-*).
   ===================================================================== */
.switch{position:relative;display:inline-block;width:52px;height:28px;vertical-align:middle}
.switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:2}
.switch .switch-slider{position:absolute;inset:0;border-radius:var(--mnd-radius-pill);background:var(--mnd-surface-2);border:1px solid var(--mnd-border);transition:background .15s ease,border-color .15s ease}
.switch .switch-slider::before{content:"";position:absolute;left:3px;top:50%;transform:translateY(-50%);width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:var(--mnd-shadow-sm);transition:transform .15s ease}
.switch input:checked + .switch-slider{background:var(--mnd-blue);border-color:var(--mnd-blue)}
.switch input:checked + .switch-slider::before{transform:translate(24px,-50%)}
.switch input:focus-visible + .switch-slider{box-shadow:var(--mnd-focus)}
.switch-onoff{display:inline-block;margin-left:.55rem;font-size:.85rem;font-weight:600;color:var(--mnd-text-muted);vertical-align:middle}

/* =====================================================================
   MINI-CARD DE FACTURA (lista de facturas agregadas, v2)
   ===================================================================== */
.v2-inv-list{display:flex;flex-direction:column;gap:.5rem}
.v2-inv-empty{font-size:.85rem;color:var(--mnd-text-muted);padding:.5rem 0}
.v2-inv-item{display:flex;align-items:flex-start;gap:.5rem;padding:.55rem .7rem;background:var(--mnd-surface);border:1px solid var(--mnd-border);border-radius:var(--mnd-radius-sm);box-shadow:var(--mnd-shadow-sm)}
.v2-inv-body{flex:1 1 auto;min-width:0}
.v2-inv-l1{display:flex;justify-content:space-between;gap:.75rem;align-items:baseline}
.v2-inv-num{font-weight:700;color:var(--mnd-text)}
.v2-inv-monto{font-weight:700;color:var(--mnd-blue);white-space:nowrap}
.v2-inv-l2{display:flex;gap:.75rem;align-items:baseline;font-size:.8rem;color:var(--mnd-text-muted);margin-top:.15rem}
.v2-inv-file{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto}
.v2-inv-del{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px;padding:0;border:none;background:transparent;color:var(--mnd-red-dark);border-radius:var(--mnd-radius-sm);cursor:pointer;transition:background .15s ease}
.v2-inv-del:hover,.v2-inv-del:focus{background:color-mix(in srgb, var(--mnd-red) 12%, var(--mnd-surface))}

/* ===== Centro Documental v2: celda de acciones (grupo compacto de íconos) ===== */
/* .v2-doc-actions hereda .v2-actions (flex, flex-end): una sola línea + gap chico. */
.v2-doc-actions{ flex-wrap:nowrap; gap:4px; }
@media (max-width:575.98px){ .v2-doc-actions{ flex-wrap:wrap; justify-content:flex-start; } }

/* TODOS los botones de la columna Acciones (partial + filas de sistema que no usan el partial):
   íconos cuadrados uniformes de 28px → aspecto coherente en toda la tabla. */
.v2-doc-table td:last-child{ text-align:right; }
.v2-doc-table td:last-child .btn{
  width:28px; height:28px; padding:0; margin:0 0 0 2px;
  display:inline-flex; align-items:center; justify-content:center;
  line-height:1; font-size:.8rem; border-radius:var(--mnd-radius-sm);
  vertical-align:middle;
}
.v2-doc-table td:last-child .btn > i{ margin:0; }

/* ===== Centro Documental v2: dimensionado de columnas (compacto) ===== */
/* Por defecto NADA envuelve (fechas, estado, acciones en una sola línea → filas bajas).
   Solo Documento (col 2) y Tipo (col 3) pueden envolver; ambas van ANTES de "Usuario"
   (col 5, que se oculta al cliente), así que nth-child 2/3 es estable en ambos roles. */
.v2-doc-table td, .v2-doc-table th{
  vertical-align:middle; white-space:nowrap;
  padding-top:.4rem; padding-bottom:.4rem;
}
/* Solo la columna 2 (Documento, fusionada tipo+concepto) puede envolver; el resto en 1 línea. */
.v2-doc-table td:nth-child(2), .v2-doc-table th:nth-child(2){ white-space:normal; }
/* Acciones: pegadas a la derecha, ancho justo (sin reservar espacio de más → no "flotan") */
.v2-doc-table .col-acciones{ text-align:right; }
/* Documento unificado: tipo + concepto del desembolso en 2 líneas legibles */
.v2-doc-table .col-doc{ max-width:300px; font-weight:400; }
.v2-doc-table .col-doc .doc-main{ display:block; font-weight:700; color:var(--mnd-text); overflow-wrap:break-word; }
.v2-doc-table .col-doc .doc-sub{ display:block; margin-top:1px; font-size:.82rem; line-height:1.25; color:var(--mnd-text-muted); overflow-wrap:break-word; }
/* Usuario: acotar para que no empuje al resto */
.v2-doc-table .col-usuario{ max-width:160px; overflow:hidden; text-overflow:ellipsis; }

/* =====================================================================
   Sidebar v2: secciones de primer nivel COLAPSABLES + título destacado
   (feedback gerente: "el menú quedó largo; colapsar y colorear los títulos").
   Diseño: título en --mnd-blue, regla separadora, chevron a la derecha.
   El JS (master.blade.php) inyecta el caret, togglea .section-collapsed y
   anima los ítems con slideUp/slideDown de jQuery (misma transición que el
   treeview de AdminLTE). No cambia la estructura del menú (config intacto).
   ===================================================================== */
.nav-sidebar .nav-header{
  display:flex; align-items:center; justify-content:space-between;
  min-height:38px; margin-top:.5rem; padding:.55rem 1rem .4rem;
  border-top:1px solid var(--mnd-border);
  /* Tinta neutra oscura (no el acento azul: varios usuarios lo sintieron muy fuerte y distraía).
     La jerarquía "menú mayor" la dan las mayúsculas + peso + letter-spacing + la regla separadora. */
  color:color-mix(in srgb, var(--mnd-text) 68%, var(--mnd-text-muted) 32%);
  font-weight:600; font-size:.72rem;
  letter-spacing:.06em; text-transform:uppercase;
  cursor:pointer; user-select:none;
  transition:background .15s ease, color .15s ease;
}
.nav-sidebar .nav-header:first-child{ border-top:0; margin-top:0; }
.nav-sidebar .nav-header:hover{ background:color-mix(in srgb, var(--mnd-text) 6%, transparent); color:var(--mnd-text); }
.nav-sidebar .nav-header:focus-visible{ outline:2px solid var(--mnd-blue); outline-offset:-2px; }
.nav-sidebar .nav-header .nav-header-caret{ font-size:.7rem; opacity:.6; transition:transform .18s ease; }
.nav-sidebar .nav-header.section-collapsed .nav-header-caret{ transform:rotate(-90deg); }
@media (prefers-reduced-motion:reduce){ .nav-sidebar .nav-header-caret{ transition:none; } }
/* Hint sutil (solo la 1ª vez, usuario nuevo): pulso de fondo tenue en 1-2 secciones
   colapsadas para invitar al clic. Se detiene solo (3 iteraciones) y al primer toggle. */
@keyframes nz-hint-pulse{ 0%,100%{ background-color:transparent; } 50%{ background-color:color-mix(in srgb, var(--mnd-blue) 14%, transparent); } }
.nav-sidebar .nav-header.nz-hint{ animation:nz-hint-pulse 1.4s ease-in-out 3; }
@media (prefers-reduced-motion:reduce){ .nav-sidebar .nav-header.nz-hint{ animation:none; } }
