/* ==========================================================================
   BASE COMPARTIDA: utilidades, modales y tokens visuales
   ========================================================================== */
.form-hidden { display: none !important; }

/* Listados: contexto/búsqueda visibles y refinamientos en un único panel. */
.consulta-filtros { min-width: 0; }
.consulta-barra { display: grid; grid-template-columns: repeat(var(--consulta-campos-visibles, 1), minmax(0, 1fr)) auto; align-items: end; gap: .75rem; }
.consulta-visible { min-width: 0; }
.consulta-barra-acciones, .consulta-acciones { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; align-items: end; gap: .5rem; width: max-content; }
.consulta-barra-acciones--con-vistas { grid-template-columns: minmax(0, 1fr) auto; }
.consulta-filtros[data-consulta-sin-campos] .consulta-barra { grid-template-columns: 1fr; }
.consulta-filtros[data-consulta-sin-campos] .consulta-barra-acciones { justify-self: start; }
.consulta-filtros :is(.consulta-barra, .consulta-panel) :is(.btn, .form-control, .form-select) {
  box-sizing: border-box; height: var(--app-control-altura); min-height: var(--app-control-altura);
  font-size: var(--app-control-fuente); line-height: 1.25; border-radius: var(--app-control-radio);
}
.consulta-filtros :is(.consulta-barra, .consulta-panel) .btn { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; padding: .6rem .85rem; white-space: nowrap; }
.consulta-filtros .consulta-barra .btn-group .btn { width: var(--app-control-altura); flex: 0 0 var(--app-control-altura); padding-inline: 0; }
.consulta-filtros :is(.consulta-barra, .consulta-panel) .btn .bi { font-size: var(--app-control-fuente); line-height: 1; flex-shrink: 0; }
.consulta-visible .form-label, .consulta-campo .form-label { font-size: .875rem; margin-bottom: .25rem; }
.consulta-toggle { gap: .4rem; }
.consulta-resumen { margin-top: .4rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.consulta-resumen:empty, .consulta-error:empty { display: none; }
.consulta-panel { margin-top: .75rem; padding: 1rem; border: 1px solid var(--bs-border-color); border-radius: .65rem; background: var(--bs-tertiary-bg, #f8f9fa); }
.consulta-panel[hidden], .consulta-confirmados[hidden] { display: none !important; }
.consulta-campos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); gap: .75rem; }
.consulta-campo { min-width: 0; }
.consulta-acciones { margin-top: .85rem; margin-inline-start: auto; }
.consulta-error { margin-top: .5rem; }
.consulta-paginacion { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); width: max-content; max-width: 100%; margin-inline: auto; }
.consulta-paginacion > .btn { width: 100%; }
@media (max-width: 767.98px) {
  .consulta-barra { grid-template-columns: minmax(0, 1fr); }
  .consulta-barra-acciones, .consulta-acciones { width: 100%; }
}
@media (max-width: 575.98px) {
  .consulta-campos { grid-template-columns: minmax(0, 1fr); }
  .consulta-panel { padding: .75rem; }
}

#alert-container { pointer-events: none; z-index: 3010 !important; }
#alert-container .alert { pointer-events: auto; width: 100%; }

.modal { z-index: var(--modal-z-index, 3000) !important; }
.modal-backdrop { z-index: var(--modal-backdrop-z-index, 2990) !important; }
/* Solo el paso inmediatamente anterior queda visible como contexto. */
.modal.modal-jerarquia-anterior { pointer-events: none; }
.modal.modal-jerarquia-anterior .modal-content { opacity: .5; filter: saturate(.7); }
.modal.modal-jerarquia-profundo { display: none !important; }

/* Patrón único para modales: en móvil se comportan como pantallas de la app. */
.modal .modal-content { overflow: hidden; }
.modal .modal-header,
.modal .modal-footer { flex: 0 0 auto; }
.modal .modal-body { min-height: 0; }
.modal .modal-header {
  background-color: var(--app-color-mostaza, #d4a017) !important;
  color: #1f1a0c;
}
.modal .modal-header .btn-close { opacity: .8; }
#accionesModalVenta > div { width: 100%; margin: 0 !important; display: grid !important; grid-template-columns: 1fr auto auto; align-items: center; gap: .75rem; }
#accionesModalVenta #btnGuardarVenta { min-height: 3rem; }
#accionesModalVenta #btnCancelarVenta { grid-column: 2; }
#accionesModalVenta #btnGuardarVenta { grid-column: 3; }

:root { --app-color-mostaza: #d4a017; }

#panelListas .list-group-item.active {
  z-index: 0;
  color: #4b3407;
  background: #fff5d8;
  border-color: #ecd18d;
  border-left: 4px solid var(--app-color-mostaza);
}

#panelListas .list-group-item.active small {
  color: #72551b !important;
  opacity: 1 !important;
}

.precio-producto-tarjeta {
  border: 1px solid #f0dfb7;
}

.precio-producto-actual {
  color: #4b3407;
  font-size: 1.1rem;
  font-weight: 700;
}

.formatos-documentos__filtros { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.formato-documento-tarjeta { border: 1px solid #f0dfb7; }
.formato-documento-tarjeta__codigo { color: #76530a; font-weight: 600; letter-spacing: .04em; }
.formato-documento-tarjeta__encabezado { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: .75rem; }
.formato-documento-tarjeta__editar { display: grid; width: 2.75rem; min-width: 2.75rem; height: 2.75rem; padding: 0; place-items: center; border-radius: .55rem; }
.formato-documento-tarjeta--asignable { cursor: pointer; }
.formato-documento-tarjeta--asignable:focus-visible { outline: 3px solid rgba(212, 160, 23, .35); outline-offset: 2px; }

.caja-tarjeta { height: 100%; cursor: pointer; transition: background-color .16s ease, border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
.caja-tarjeta__encabezado { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; min-height: 0; }
.caja-tarjeta__nombre { margin: 0; overflow-wrap: anywhere; font-size: clamp(1.1rem, 1.7vw, 1.6rem); line-height: 1.2; }
.estado-diario { font-size: .78rem; padding: .5rem .7rem; align-self: start; }
.inventario-vista, .inventario-operacion { min-height: 3.65rem; display: inline-flex; align-items: center; justify-content: center; }

/* Paleta mostaza para acciones y jerarquías de toda la aplicación. */
.btn-primary, .btn-success, .btn-warning, .btn-danger {
  --bs-btn-color: #251b04;
  --bs-btn-bg: #d4a017;
  --bs-btn-border-color: #d4a017;
  --bs-btn-hover-color: #251b04;
  --bs-btn-hover-bg: #b7860d;
  --bs-btn-hover-border-color: #aa7c0c;
  --bs-btn-active-color: #251b04;
  --bs-btn-active-bg: #9b710b;
  --bs-btn-active-border-color: #916a0a;
  --bs-btn-disabled-color: #251b04;
  --bs-btn-disabled-bg: #d4a017;
  --bs-btn-disabled-border-color: #d4a017;
}
.btn-secondary, .btn-outline-primary, .btn-outline-success, .btn-outline-warning, .btn-outline-danger, .btn-outline-secondary, .btn-outline-light {
  --bs-btn-color: #76530a;
  --bs-btn-border-color: #b7860d;
  --bs-btn-hover-color: #251b04;
  --bs-btn-hover-bg: #e7c66d;
  --bs-btn-hover-border-color: #b7860d;
  --bs-btn-active-color: #251b04;
  --bs-btn-active-bg: #d4a017;
  --bs-btn-active-border-color: #aa7c0c;
  --bs-btn-disabled-color: #76530a;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #b7860d;
}
.btn-secondary {
  --bs-btn-bg: #ead597;
  --bs-btn-border-color: #d4b55a;
  --bs-btn-disabled-bg: #ead597;
  --bs-btn-disabled-border-color: #d4b55a;
}
/* Acciones internas neutrales; reutilizable sin alterar los botones existentes. */
:root { --app-action-tertiary-bg: #fff7e8; --app-action-tertiary-border: #eee5d8; }
.btn-tertiary {
  --bs-btn-color: var(--app-ink, #211f1d);
  --bs-btn-bg: var(--app-action-tertiary-bg);
  --bs-btn-border-color: var(--app-action-tertiary-border);
  --bs-btn-hover-bg: var(--app-border, #eee5d8);
  --bs-btn-hover-border-color: var(--app-gold, #b77800);
  --bs-btn-active-bg: var(--app-border, #eee5d8);
  --bs-btn-active-border-color: var(--app-gold, #b77800);
  --bs-btn-disabled-bg: var(--app-action-tertiary-bg);
  --bs-btn-disabled-border-color: var(--app-action-tertiary-border);
}
.btn-carrito {
  --bs-btn-color: #503907;
  --bs-btn-bg: #ead597;
  --bs-btn-border-color: #d4b55a;
  --bs-btn-hover-color: #251b04;
  --bs-btn-hover-bg: #dec06d;
  --bs-btn-hover-border-color: #b7860d;
}
.btn-logout {
  --bs-btn-color: #251b04;
  --bs-btn-bg: #f5df9d;
  --bs-btn-border-color: #f5df9d;
  --bs-btn-hover-color: #251b04;
  --bs-btn-hover-bg: #d4a017;
  --bs-btn-hover-border-color: #d4a017;
}
.alert-primary { --bs-alert-color: #503907; --bs-alert-bg: #fff3c8; --bs-alert-border-color: #e2bf58; }
#totalEfectivoApertura, #totalEfectivoCierre { color: #5c4205; }

#btnAgregarVentaRapida { --bs-btn-bg: #d4a017; --bs-btn-border-color: #d4a017; }
#btnGasto { --bs-btn-bg: #b7860d; --bs-btn-border-color: #b7860d; }
#btnEntrada { --bs-btn-bg: #e0bd57; --bs-btn-border-color: #e0bd57; }
#btnSalida { --bs-btn-bg: #9b710b; --bs-btn-border-color: #9b710b; }
#btnEstadoProductos, #btnVerMovimientos { --bs-btn-bg: #f3df9e; --bs-btn-border-color: #d4b55a; --bs-btn-color: #503907; }
.verificacion-rapida--mostaza { width: 1.8rem; height: 1.8rem; border-color: #c58a00; cursor: pointer; }
.verificacion-rapida--mostaza:checked { background-color: var(--app-gold) !important; border-color: #8c5900 !important; }
.tarjeta-producto-alterna { background: #fffdf8; transition: background-color .16s ease, border-color .16s ease; }
.tarjeta-producto-alterna:nth-child(even), #listadoEstadoProductos > .row > .col:nth-child(even) .tarjeta-producto-alterna { background: #fff3d6; }
.tarjeta-producto-alterna:hover { border-color: #d4a017 !important; background: #fff8e8; }
.tabla-estado-productos thead th { color: #6e4d09; background: #fff9ed; white-space: nowrap; }
.movimientos-filtros { display: grid; grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); gap: .55rem; }
.movimientos-filtros .selector-movimiento { min-height: 2.7rem; padding: .45rem .7rem; white-space: nowrap; }
.movimientos-filtros .selector-movimiento .bi { margin-right: .3rem; }
#btnCerrar { --bs-btn-bg: #76530a; --bs-btn-border-color: #76530a; --bs-btn-color: #fffaf0; }

#catalogoSalidaProductos .col:nth-child(even) .producto-salida-catalogo:not(.btn-primary),
#catalogoSalidaProductos .col:nth-child(odd) .producto-salida-catalogo:not(.btn-primary) { background-color: #fffaf0; }
#catalogoSalidaProductos .col:nth-child(even) .producto-salida-catalogo:not(.btn-primary) { background-color: #f4e5bd; }
.ver-ventas-producto { --bs-btn-bg: #d4a017; --bs-btn-border-color: #d4a017; --bs-btn-color: #251b04; }
.movimiento-acordeon > .d-flex { min-width: 0; }
.movimiento-detalle-toggle {
  flex: 1 1 auto;
  min-width: 0;
  text-align: left;
}
.movimiento-detalle-toggle::after { display: none !important; }
.movimiento-resumen { min-width: 0; }
.movimiento-flecha {
  align-self: center;
  flex: 0 0 auto;
  margin-left: .65rem;
  font-size: 1.5rem;
  line-height: 1;
  transition: transform .18s ease;
}
.accordion-button:not(.collapsed) .movimiento-flecha { transform: rotate(180deg); }
.movimiento-acciones {
  display: flex;
  flex: 0 0 auto;
  flex-direction: column;
  justify-content: center;
  gap: .35rem;
  padding: .45rem;
  border-left: 1px solid var(--bs-border-color, #dee2e6);
  background: var(--bs-body-bg, #fff);
}
.movimiento-accion {
  min-height: 2.35rem;
  margin: 0 !important;
  white-space: nowrap;
}
@media (max-width: 575.98px) {
  .movimiento-acciones { padding: .35rem; }
  .movimiento-accion { padding-inline: .5rem; font-size: .78rem; }
}
.resumen-pendientes { cursor: pointer; }
.resumen-producto-alterno:nth-child(odd) { background-color: #fffaf0; }
.resumen-producto-alterno:nth-child(even) { background-color: #f4e5bd; }
.modal button[data-bs-dismiss="modal"]:not(.btn-close),
.modal .modal-footer .btn { min-height: 3rem; padding-inline: 1.25rem; font-size: 1rem; }
.acciones-usuarios { display: inline-flex; gap: .5rem; }
.estado-diario { display: grid; place-items: center; min-width: 5.5rem; min-height: 2.85rem; padding: .4rem .65rem; text-align: center; font-size: .85rem; line-height: 1.1; }

#catalogoProductos .col:nth-child(odd) .producto-catalogo:not(.btn-primary),
#catalogoPedido .col:nth-child(odd) .producto-pedido-catalogo:not(.btn-primary),
#catalogoEntradaProductos .col:nth-child(odd) .producto-entrada:not(.btn-primary),
#catalogoSalidaProductos .col:nth-child(odd) .producto-salida:not(.btn-primary),
#catalogoProductosInventario .col:nth-child(odd) .producto-catalogo-inventario:not(.btn-primary) { background-color: #fffaf0; }
#catalogoProductos .col:nth-child(even) .producto-catalogo:not(.btn-primary),
#catalogoPedido .col:nth-child(even) .producto-pedido-catalogo:not(.btn-primary),
#catalogoEntradaProductos .col:nth-child(even) .producto-entrada:not(.btn-primary),
#catalogoSalidaProductos .col:nth-child(even) .producto-salida:not(.btn-primary),
#catalogoProductosInventario .col:nth-child(even) .producto-catalogo-inventario:not(.btn-primary),
.fila-producto-alterna:nth-child(even), .tarjeta-producto-alterna:nth-child(even) { background-color: #f4e5bd; }
.fila-producto-alterna:nth-child(odd), .tarjeta-producto-alterna:nth-child(odd) { background-color: #fffaf0; }
.tarjeta-producto-alterna { border-color: #d9bb61 !important; }

#modalCambioVenta .modal-body { background: linear-gradient(135deg, #fff5cf, #e7c66d); }
#valorCambioFinal { color: #5c4205 !important; font-size: clamp(4.5rem, 22vw, 10rem); line-height: 1; text-shadow: 0 .15rem .35rem rgba(92, 66, 5, .18); }

.campo-edicion-doble-clic[readonly] { background-color: var(--bs-tertiary-bg); }

@media (max-width: 767.98px) {
  .modal .modal-dialog {
    width: 100%;
    max-width: none;
    min-height: 100dvh;
    height: 100dvh;
    margin: 0;
  }

  .modal .modal-content,
  .modal.modal-dialog-scrollable .modal-content,
  .modal .modal-dialog-scrollable .modal-content {
    height: 100%;
    max-height: none;
    border: 0;
    border-radius: 0;
  }

  .modal .modal-body { overflow-y: auto; }
  .modal .modal-footer { padding-bottom: max(.75rem, env(safe-area-inset-bottom)); }

  #diarioApp.diario-operacion-activa #menuDiario {
    min-height: 100dvh;
    margin-inline: -0.75rem;
    margin-bottom: 0;
  }

  #diarioApp.diario-operacion-activa #menuDiario > .card-body {
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    padding: 1rem;
  }

  #diarioApp.diario-operacion-activa #accionesDiario { flex: 1 1 auto; }
  #diarioApp.diario-operacion-activa .diario-accion { min-height: 4.75rem !important; }
}

/* ==========================================================================
   NAVEGACIÓN CLÁSICA: barra, marca, enlaces y submenús
   ========================================================================== */
.navbar {
  border-bottom: 1px solid rgba(255,255,255,0.08);
  backdrop-filter: blur(6px);
  position: relative;
  z-index: 1100;
}

/* 🔹 LOGO */
.logo-box {
  width: 32px;
  height: 32px;
  background: linear-gradient(135deg, #e0bd57, #b7860d);
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-weight: bold;
}

/* 🔹 LINKS */
.nav-link {
  border-radius: 6px;
  padding: 10px 16px !important;
}

.nav-link:hover {
  background-color: rgba(255,255,255,0.08);
}

.nav-link.active {
  background-color: rgba(212,160,23,0.32);
  color: #fff !important;
}

.navbar-sedes {
  align-items: center;
  gap: .35rem;
  color: rgba(255, 255, 255, .75);
  font-size: .8rem;
  white-space: nowrap;
}

.sede-context {
  border: 1px solid var(--bs-border-color);
  border-radius: .75rem;
  background: var(--bs-body-bg);
  padding: .9rem 1rem;
}

.sede-context__status {
  display: flex;
  align-items: center;
  gap: .5rem;
  min-height: 38px;
  color: var(--bs-secondary-color);
  font-size: .9rem;
}

.sede-context__status .bi { color: var(--bs-primary); }

.quick-access { transition: transform .15s ease, box-shadow .15s ease; }
.quick-access:hover { transform: translateY(-2px); box-shadow: var(--bs-box-shadow) !important; }

.inicio-encabezado { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.35rem; border: 1px solid var(--app-border); border-radius: 14px; background: linear-gradient(120deg, #fffdf8, #fff4d9); }
.inicio-encabezado h1 { font-size: clamp(1.7rem, 3vw, 2.25rem); font-weight: 700; letter-spacing: -.04em; }
.inicio-sedes { display: flex; flex: 0 0 auto; align-items: center; gap: .8rem; padding: .8rem 1rem; border: 1px solid #edd9a8; border-radius: .8rem; background: rgba(255,255,255,.72); }
.inicio-sedes > .bi, .inicio-notificaciones__icon { color: var(--app-gold); font-size: 1.35rem; }
.inicio-sedes span, .inicio-sedes strong { display: block; }
.inicio-sedes span { color: var(--app-muted); font-size: .8rem; }
.inicio-sedes strong { font-size: 1.15rem; }
.inicio-buscador { display: flex; align-items: center; gap: .5rem; min-width: min(100%, 17rem); padding: .55rem .75rem; border: 1px solid #ddd5ca; border-radius: .7rem; background: #fff; color: var(--app-gold); }
.inicio-buscador:focus-within { border-color: #d49a28; box-shadow: 0 0 0 .2rem rgba(183,120,0,.12); }
.inicio-buscador input { width: 100%; border: 0; outline: 0; color: var(--app-ink); background: transparent; }
.quick-access { border-color: var(--app-border) !important; }
.quick-access__icon { display: grid; width: 2.6rem; height: 2.6rem; place-items: center; border-radius: .7rem; background: var(--app-gold-light); color: var(--app-gold); font-size: 1.25rem; }
.quick-access__action { display: flex; align-items: center; justify-content: space-between; color: #76530a; font-size: .84rem; font-weight: 600; }
.quick-access:hover .quick-access__action { color: var(--app-brown); }
.inicio-filtro-notificacion { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 3.2rem; padding: .75rem .9rem; border: 1px solid var(--app-border); border-radius: .7rem; cursor: pointer; }
.inicio-filtro-notificacion:hover { border-color: #d49a28; background: var(--app-gold-light); }
@media (max-width: 575.98px) { .inicio-encabezado { align-items: flex-start; flex-direction: column; padding: 1.1rem; } .inicio-sedes { width: 100%; } .inicio-buscador { width: 100%; } }

#contenidoDiario:not(.d-none) { display: flex; flex-direction: column; }
#contenidoDiario #resumenDiario { order: 1; }
#contenidoDiario #zonaVenta { order: 2; }
#contenidoDiario > .card:not(#zonaVenta):first-of-type { order: 3; }
#contenidoDiario > .card:last-child { order: 4; }

/* 🔹 DROPDOWN */
.dropdown-menu {
  border-radius: 10px;
  padding: 6px;
  backdrop-filter: blur(10px);
  z-index: 2000;
}

.dropdown-item {
  border-radius: 6px;
}

.dropdown-item:hover {
  background-color: rgba(255,255,255,0.08);
}

/* 🔥 SUBMENÚ */
.dropdown-submenu {
  position: relative;
}

/* DESKTOP */
.dropdown-submenu > .dropdown-menu {
  top: 0;
  left: 100%;
  display: none;
}

.dropdown-submenu:hover > .dropdown-menu {
  display: block;
}

/* 🔥 MOBILE */
@media (max-width: 991.98px) {

  #navbarMain {
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    background-color: rgb(33, 37, 41);
    z-index: 2000;
    padding: 1rem;
    border-top: 1px solid rgba(255,255,255,0.1);
  }

  .nav-item {
    margin-bottom: 10px;
  }

  /* 🔥 SUBMENÚS */
  .dropdown-submenu > .dropdown-menu {
    position: static;
    display: none;
    padding-left: 12px;
  }

  .dropdown-submenu.show > .dropdown-menu {
    display: block;
  }

  /* 🔥 IMPORTANTE: permitir ver niveles internos */
  .dropdown-menu .dropdown-menu {
    display: none;
  }

.dropdown-menu .dropdown-submenu.show > .dropdown-menu {
    display: block;
  }

}

/* ==========================================================================
   APP SHELL: superficie, navegación lateral y navegación móvil
   ========================================================================== */
/* Sistema visual Dutrocheff: superficie clara, acentos mostaza y navegación adaptable. */
:root { --app-ink: #211f1d; --app-muted: #757575; --app-gold: #b77800; --app-gold-light: #fff7e8; --app-brown: #2b1b05; --app-border: #eee5d8; --app-control-altura: 2.8rem; --app-control-fuente: 1rem; --app-control-radio: .7rem; }
body.app-shell { background: #fcfcfc !important; color: var(--app-ink); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; padding-left: 13rem; }
body.app-shell .container { max-width: 1440px; }
body.app-shell .card { border: 1px solid var(--app-border) !important; border-radius: 14px; box-shadow: 0 3px 10px rgba(45, 31, 9, .06) !important; }
body.app-shell .card-body { padding: 1.35rem; }
body.app-shell .form-control, body.app-shell .form-select { min-height: var(--app-control-altura); border-color: #ddd5ca; border-radius: var(--app-control-radio); }
body.app-shell .btn:not(.btn-sm):not(.btn-lg) { min-height: var(--app-control-altura); font-size: var(--app-control-fuente); line-height: 1.25; }
body.app-shell :is(.app-card__icon-action, .formato-documento-tarjeta__editar) { width: var(--app-control-altura); min-width: var(--app-control-altura); height: var(--app-control-altura); min-height: var(--app-control-altura); padding: 0; }
body.app-shell .form-control:focus, body.app-shell .form-select:focus { border-color: #d49a28; box-shadow: 0 0 0 .2rem rgba(183, 120, 0, .12); }
body.app-shell .table > :not(caption) > * > * { border-color: #f0ebe3; }
.app-page__heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.app-page__heading h1 { font-size: clamp(1.8rem, 3vw, 2.35rem); font-weight: 700; letter-spacing: -.04em; }
.app-page__heading p { color: var(--app-muted); font-size: 1rem; }

.app-sidebar { width: 13rem; background: radial-gradient(circle at 10% 0%, #4b3210 0, var(--app-brown) 48%, #1f1303 100%); border: 0; color: #fff; }
.app-sidebar__brand { min-height: 8.8rem; justify-content: center; padding: 1.35rem 1rem; border-bottom: 1px solid rgba(255,255,255,.08); }
.app-brand { flex-direction: column; gap: .35rem; color: #fff6df; text-align: center; letter-spacing: .05em; }
.app-brand__mark { width: 3.15rem; height: 3.15rem; object-fit: contain; mix-blend-mode: screen; }
.app-brand__text { display: grid; line-height: 1; font-family: Georgia, serif; font-size: 1.08rem; }
.app-brand__text small { margin-top: .25rem; font-family: inherit; font-size: .54rem; letter-spacing: .2em; }
.app-brand__version {
  display: block;
  margin-top: .45rem;
  color: rgba(255, 246, 223, .82);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .02em;
  line-height: 1.2;
}
.app-sidebar__navigation { padding: 1rem .55rem; }
.app-nav__link, .app-nav__group-toggle { min-height: 3.55rem; border-radius: .6rem; padding: .7rem .85rem; color: #fffaf0; }
.app-nav__link:hover, .app-nav__group-toggle:hover { background: rgba(255,255,255,.09); color: #fff; }
.app-nav__link.is-active { position: relative; background: linear-gradient(90deg, #fffdf8, #fff3d7); color: #2b1b05; box-shadow: inset 4px 0 #d99c18; }
.app-nav__link > .bi, .app-nav__group-toggle > .bi:first-child, .app-nav__chevron { color: #fff4dc; }
.app-nav__link.is-active > .bi { color: var(--app-gold); }
.app-nav__sublist { border-left-color: rgba(255,255,255,.2); }
.app-sidebar__footer { border-top-color: rgba(255,255,255,.09); background: transparent; }
.app-sidebar__label, .app-user-context, .app-user-context > .bi, .app-logout { color: #fff6df; }
.app-sidebar .form-select { background-color: rgba(255,255,255,.12); border-color: rgba(255,255,255,.25); color: #fff; }
.app-sidebar .form-select option { color: #211f1d; }

.diario-dashboard { display: grid; gap: 1.5rem; }
.diario-dashboard__date { display: grid; gap: 1rem; }
.diario-fecha-card { display: flex; align-items: center; gap: 1rem; padding: 1.35rem; border: 1px solid var(--app-border); border-radius: 14px; background: #fff; box-shadow: 0 3px 10px rgba(45,31,9,.05); }
.diario-fecha-card > .bi { display: grid; flex: 0 0 auto; width: 3.7rem; height: 3.7rem; place-items: center; border-radius: 50%; background: var(--app-gold-light); color: var(--app-gold); font-size: 1.65rem; }
#resumenMenuDiario { display: grid; gap: 1rem; }
#accionesDiario .diario-accion { min-height: 7.8rem !important; border-radius: .85rem; font-weight: 650; font-size: 1rem; }
#btnAgregarVentaRapida, #btnGasto { color: #fff; background: linear-gradient(135deg, #e7a900, #bd7900); border: 0; }
#btnEntrada, #btnSalida { color: #2b1b05; background: #fffdf8; border: 1px solid #ecd4a2; }
#btnEstadoProductos, #btnVerMovimientos { color: #2b1b05; background: #fff; border: 1px solid #ecd4a2; }
#btnCerrar { color: #fff; background: linear-gradient(100deg, #2b1b05, #4b3210); border: 0; }
#resumenDiario > [class*="col"] .card { height: 100%; }

.app-mobile-nav { display: none; }
.app-mobile-nav__link[aria-busy="true"], .app-nav__link[aria-busy="true"] { position: relative; }
.app-mobile-nav__link [data-nav-loading] { position: absolute; top: .2rem; right: .35rem; width: .65rem; height: .65rem; }
@media (max-width: 991.98px) {
  body.app-shell { padding: 4.7rem 0 5.7rem; }
  body.app-shell .container { width: 100%; max-width: none; }
  .app-sidebar { width: min(20rem, calc(100vw - 2.5rem)); }
  .app-sidebar__brand { min-height: 9.3rem; }
  .app-mobile-nav { position: fixed; right: 0; bottom: 0; left: 0; z-index: 1180; display: grid; grid-template-columns: repeat(var(--mobile-links, 5), 1fr); min-height: 5.2rem; padding: .45rem .25rem calc(.45rem + env(safe-area-inset-bottom)); border-top: 1px solid #eee8df; background: rgba(255,255,255,.97); box-shadow: 0 -3px 10px rgba(39, 28, 11, .04); }
  .app-mobile-nav__link { display: grid; place-items: center; gap: .22rem; border: 0; background: transparent; color: #665d53; font-size: .7rem; text-decoration: none; }
  .app-mobile-nav__link .bi { font-size: 1.6rem; line-height: 1; }
  .app-mobile-nav__link.is-active { color: var(--app-gold); font-weight: 700; }
  .app-page { padding-top: 1rem !important; padding-bottom: 1rem !important; }
  .app-page__heading { align-items: flex-start; }
  .app-page__heading h1 { font-size: 2rem; }
  .diario-dashboard { gap: 1rem; }
  .diario-fecha-card { padding: 1.1rem; }
  #accionesDiario .diario-accion { min-height: 7rem !important; font-size: .95rem; }
  body.app-shell .card-body { padding: 1rem; }
}

/* Navegación lateral principal */
body.app-shell {
  min-height: 100dvh;
  padding-left: 17.5rem;
  transition: padding-left .2s ease;
}

.app-sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 1200;
  display: flex;
  flex-direction: column;
  width: 17.5rem;
  background: #fff;
  border-right: 1px solid #ead597;
  color: #332a1a;
}

.app-sidebar__brand {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 4.5rem;
  padding: 1rem 1.15rem;
  border-bottom: 1px solid #f1dfaa;
}

.app-brand { display: inline-flex; align-items: center; gap: .7rem; color: #332a1a; font-weight: 700; text-decoration: none; }
.app-brand__mark { display: grid; width: 2rem; height: 2rem; place-items: center; border-radius: .55rem; background: var(--app-color-mostaza); color: #251b04; }
.app-sidebar__navigation { flex: 1 1 auto; overflow-y: auto; padding: .85rem .65rem 1.25rem; scrollbar-width: none; -ms-overflow-style: none; }
.app-sidebar__navigation::-webkit-scrollbar { display: none; }
.app-nav, .app-nav__sublist { margin: 0; padding: 0; list-style: none; }
.app-nav__item { margin: .12rem 0; }
.app-nav__link, .app-nav__group-toggle { display: flex; align-items: center; width: 100%; min-height: 2.8rem; gap: .75rem; border: 0; border-radius: .55rem; padding: .6rem .7rem; background: transparent; color: #493b21; font: inherit; font-size: .98rem; line-height: 1.25; text-align: left; text-decoration: none; }
.app-nav__link:hover, .app-nav__group-toggle:hover { background: #fffaf0; color: #332a1a; }
.app-nav__link.is-active { background: #fff3c8; color: #332a1a; font-weight: 600; }
.app-nav__link > .bi, .app-nav__group-toggle > .bi:first-child { width: 1.25rem; color: #b7860d; font-size: 1.15rem; text-align: center; }
.app-nav__chevron { margin-left: auto; color: #b7860d; font-size: .9rem; transition: transform .18s ease; }
.app-nav__group-toggle[aria-expanded="true"] .app-nav__chevron { transform: rotate(180deg); }
.app-nav__sublist { display: none; margin: .15rem 0 .5rem 1.45rem; padding: .15rem 0 .15rem .7rem; border-left: 1px solid #ead597; }
.app-nav__sublist.is-open { display: block; }
.app-nav__sublist .app-nav__link { min-height: 2.55rem; padding-block: .5rem; }
.app-nav__sublist .app-nav__sublist { margin-left: .85rem; }

.app-sidebar__footer { flex: 0 0 auto; padding: 1rem; border-top: 1px solid #f1dfaa; background: #fffdf8; }
.app-sidebar__label { display: block; margin-bottom: .35rem; color: #76530a; font-size: .74rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
.app-user-context { display: flex; align-items: center; gap: .55rem; min-width: 0; margin-top: .85rem; color: #493b21; font-size: .9rem; }
.app-user-context > .bi { color: #b7860d; font-size: 1.25rem; }
.app-logout { display: grid; width: 2rem; height: 2rem; place-items: center; margin-left: auto; border: 0; border-radius: .45rem; background: transparent; color: #76530a; }
.app-logout:hover { background: #fff0bd; }
.app-menu-close { display: none; }
.app-nav-backdrop { display: none; }

@media (max-width: 991.98px) {
  body.app-shell { padding-left: 0; padding-top: 3.75rem; }
  .app-sidebar { width: min(19rem, calc(100vw - 3rem)); transform: translateX(-105%); transition: transform .2s ease; box-shadow: 0 .5rem 1.5rem rgba(80, 57, 7, .2); }
  .app-sidebar.is-mobile-open { transform: translateX(0); }
  .app-menu-close { display: grid; width: 2rem; height: 2rem; place-items: center; border: 0; border-radius: .4rem; background: transparent; color: #76530a; }
  .app-nav-backdrop.is-visible { position: fixed; inset: 0; z-index: 1190; display: block; background: rgba(20, 30, 45, .35); }
}

/* Tablet: la densidad visual del escritorio resulta demasiado pequeña. */
@media (min-width: 576px) and (max-width: 991.98px) {
  body.app-shell { font-size: 1.125rem; }
  body.app-shell .container { max-width: 100%; padding-inline: 1.25rem; }
  body.app-shell .quick-access .card-body { padding: 1.25rem; }
  body.app-shell .quick-access > .card-body > .bi { font-size: 1.45rem; }
}

/* Sobrescrituras finales: mantienen el sistema visual por encima de reglas heredadas. */
body.app-shell { padding-left: 17.5rem; background: #fcfcfc !important; color: var(--app-ink); }
.app-sidebar { width: 17.5rem; background: radial-gradient(circle at 10% 0%, #4b3210 0, var(--app-brown) 48%, #1f1303 100%); border: 0; color: #fff; }
.app-sidebar__brand { min-height: 8.8rem; justify-content: center; padding: 1.35rem 1rem; border-bottom-color: rgba(255,255,255,.08); }
.app-brand { flex-direction: column; gap: .35rem; color: #fff6df; text-align: center; letter-spacing: .05em; }
.app-brand__mark { width: 3.15rem; height: 3.15rem; object-fit: contain; mix-blend-mode: screen; }
.app-brand__text { display: grid; line-height: 1; font-family: Georgia, serif; font-size: 1.08rem; }
.app-brand__text small { margin-top: .25rem; font-size: .54rem; letter-spacing: .2em; }
.app-sidebar__navigation { padding: 1rem .55rem; }
.app-nav__link, .app-nav__group-toggle { min-height: 3.55rem; border-radius: .6rem; padding: .7rem .85rem; color: #fffaf0; }
.app-nav__link:hover, .app-nav__group-toggle:hover { background: rgba(255,255,255,.09); color: #fff; }
.app-nav__link.is-active { background: linear-gradient(90deg, #fffdf8, #fff3d7); color: #2b1b05; box-shadow: inset 4px 0 #d99c18; }
.app-nav__link > .bi, .app-nav__group-toggle > .bi:first-child, .app-nav__chevron { color: #fff4dc; }
.app-nav__link.is-active > .bi { color: var(--app-gold); }
.app-nav__sublist { border-left-color: rgba(255,255,255,.2); }
.app-sidebar__footer { border-top-color: rgba(255,255,255,.09); background: transparent; }
.app-sidebar__label, .app-user-context, .app-user-context > .bi, .app-logout { color: #fff6df; }
.app-sidebar .form-select { background-color: rgba(255,255,255,.12); border-color: rgba(255,255,255,.25); color: #fff; }
.app-nav__link > .bi, .app-nav__group-toggle > .bi:first-child { flex: 0 0 1.4rem; font-size: 1.3rem; }

/* Navegación adaptable: la apertura queda disponible desde la navegación móvil. */
@media (max-width: 1199.98px) {
  /* La navegación lateral se repliega en tableta; el contenido no reserva su ancho. */
  body.app-shell { padding-left: 0; }
  body.app-shell .container,
  body.app-shell main.container,
  body > main.container { width: 100% !important; max-width: none !important; margin-right: 0 !important; margin-left: 0 !important; }
}

@media (max-width: 991.98px) {
  body.app-shell { padding: 4.7rem 0 5.7rem; }
  .app-sidebar { width: min(20rem, calc(100vw - 2.5rem)); }
  .app-sidebar__brand { position: relative; }
  .app-menu-close { position: absolute; top: .85rem; right: .75rem; display: grid; width: 2.3rem; height: 2.3rem; place-items: center; padding: 0; border: 1px solid rgba(255,255,255,.24); border-radius: .5rem; background: rgba(255,255,255,.1); color: #fff6df; font-size: 1rem; }
}

@media (min-width: 768px) and (max-width: 1199.98px) {
  .app-sidebar { width: min(20rem, calc(100vw - 2.5rem)); transform: translateX(-105%); transition: transform .2s ease; box-shadow: 0 .5rem 1.5rem rgba(80, 57, 7, .2); }
  .app-sidebar.is-mobile-open { transform: translateX(0); }
  .app-nav-backdrop.is-visible { position: fixed; inset: 0; z-index: 1190; display: block; background: rgba(20, 30, 45, .35); }
  .app-mobile-nav { position: fixed; right: 0; bottom: 0; left: 0; z-index: 1180; display: grid; grid-template-columns: repeat(var(--mobile-links, 5), 1fr); min-height: 5.2rem; padding: .45rem .25rem calc(.45rem + env(safe-area-inset-bottom)); border-top: 1px solid #eee8df; background: rgba(255,255,255,.97); box-shadow: 0 -3px 10px rgba(39, 28, 11, .04); }
  .app-mobile-nav__link { display: grid; place-items: center; gap: .22rem; border: 0; background: transparent; color: #665d53; font-size: .7rem; text-decoration: none; }
  .app-mobile-nav__link .bi { font-size: 1.35rem; }
}

/* ==========================================================================
   DIARIO: jerarquía, tarjetas y acciones operativas
   ========================================================================== */
/* Diario: jerarquía, iconografía y tarjetas de la guía visual. */
.diario-dashboard__section > h2 { margin: 0 0 1rem; font-size: 1.25rem; font-weight: 700; letter-spacing: -.02em; }
.diario-estado-card, .diario-responsable-card { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .9rem; padding: 1rem 1.15rem; border: 1px solid #eadfd0; border-radius: 1rem; background: #fff; box-shadow: 0 2px 8px rgba(45,31,9,.04); color: var(--app-ink); }
.diario-estado-card.is-open { border-color: #cce8d1; background: #f4fbf5; }
.diario-estado-card__icon { display: grid; width: 2.5rem; height: 2.5rem; place-items: center; color: #888; font-size: 1.4rem; }
.diario-estado-card.is-open .diario-estado-card__icon { color: #12913b; }
.diario-estado-card__copy, .diario-responsable-card__copy { display: grid; min-width: 0; gap: .12rem; }
.diario-estado-card__copy strong { color: #70552c; font-size: 1.35rem; line-height: 1.1; }
.diario-estado-card.is-open .diario-estado-card__copy strong { color: #168436; }
.diario-estado-card__copy small, .diario-responsable-card__copy small { color: #6e6a63; font-size: .98rem; line-height: 1.25; }
.diario-responsable-card { background: #fffdf8; border-color: #eee0c5; }
.diario-responsable-card__icon { display: grid; width: 3.2rem; height: 3.2rem; place-items: center; border-radius: 50%; background: var(--app-gold-light); color: #805908; font-size: 1.55rem; }
.diario-responsable-card__copy strong { color: #17130d; font-size: 1.22rem; line-height: 1.15; overflow-wrap: anywhere; }
.resumen-tarjeta { overflow: hidden; }
.resumen-tarjeta .card-body { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: .8rem; min-height: 6.5rem; padding: 1rem; }
.resumen-tarjeta__icon { display: grid; flex: 0 0 auto; width: 3.15rem; height: 3.15rem; place-items: center; border-radius: 50%; background: var(--app-gold-light); color: var(--app-gold); font-size: 1.35rem; }
.resumen-tarjeta .card-body > div { min-width: 0; overflow-wrap: anywhere; }
.resumen-tarjeta small, .resumen-tarjeta .fw-bold { display: block; overflow-wrap: anywhere; }
.resumen-tarjeta small { font-size: .82rem; line-height: 1.2; }
.resumen-tarjeta .fw-bold { margin-top: .15rem; color: #191714; font-size: clamp(1.05rem, 1.35vw, 1.25rem); line-height: 1.2; }
.diario-dashboard .diario-accion { display: flex; align-items: center; justify-content: flex-start; gap: 1rem; padding: 1.15rem 1.35rem; text-align: left; }
.diario-accion__icon { display: grid; flex: 0 0 auto; width: 3.55rem; height: 3.55rem; place-items: center; border-radius: 50%; background: rgba(255,255,255,.94); color: var(--app-gold); font-size: 1.6rem; }
.diario-accion__copy { display: grid; gap: .25rem; min-width: 0; }
.diario-accion__copy strong { font-size: 1rem; }
.diario-accion__copy small { color: inherit; font-weight: 400; opacity: .82; }
#btnEntrada .diario-accion__icon, #btnSalida .diario-accion__icon, #btnEstadoProductos .diario-accion__icon, #btnVerMovimientos .diario-accion__icon { background: var(--app-gold-light); }
#btnEstadoProductos, #btnVerMovimientos { min-height: 8.2rem !important; }
#btnCerrar { min-height: 6.2rem !important; }
.diario-accion__arrow { margin-left: auto; font-size: 1.25rem; }
@media (max-width: 767.98px) {
  .diario-dashboard__date, #resumenMenuDiario { gap: .75rem; }
  .diario-fecha-card { gap: .85rem; padding: 1rem; }
  .diario-fecha-card > .bi { width: 3.35rem; height: 3.35rem; font-size: 1.5rem; }
  .diario-estado-card, .diario-responsable-card { gap: .75rem; padding: .9rem 1rem; }
  .diario-estado-card__icon { width: 2rem; height: 2rem; font-size: 1.15rem; }
  .diario-estado-card__copy strong { font-size: 1.18rem; }
  .diario-estado-card__copy small, .diario-responsable-card__copy small { font-size: .88rem; }
  .diario-responsable-card__icon { width: 2.75rem; height: 2.75rem; font-size: 1.3rem; }
  .diario-responsable-card__copy strong { font-size: 1.08rem; }
  .resumen-tarjeta .card-body { grid-template-columns: none; place-items: center; min-height: 8.35rem; padding: .7rem; text-align: center; }
  .resumen-tarjeta__icon { width: 2.85rem; height: 2.85rem; font-size: 1.2rem; }
  .resumen-tarjeta .fw-bold { font-size: 1.12rem; }
  #accionesDiario .diario-accion { min-height: 7.15rem !important; padding: 1rem; }
  #accionesDiario .col-6 .diario-accion { flex-direction: column; align-items: flex-start; gap: .6rem; }
  #accionesDiario .col-6 .diario-accion__icon { width: 3rem; height: 3rem; font-size: 1.35rem; }
  #accionesDiario .col-6 .diario-accion__copy small { display: none; }
  #btnEstadoProductos, #btnVerMovimientos { min-height: 6.15rem !important; }
}

/* Ajustes de composición solicitados para escritorio y móvil. */
@media (min-width: 992px) {
  #menuDiario.diario-dashboard { grid-template-columns: minmax(0, 1fr); row-gap: 1.5rem; }
  .diario-dashboard__date { align-content: start; }
  #resumenDiario { align-content: start; }
  .diario-dashboard__section { grid-column: 1 / -1; }
  #detalleDiarioCerrado { grid-column: 1 / -1; }
  #detalleDiarioCerrado .row > [class*="col-"] { display: flex; }
  #detalleDiarioCerrado .row > [class*="col-"] > * { width: 100%; }
  #accionesDiario > .col-6 { width: 50%; }
}

.resumen-detalle, [data-gestionar-responsable] { cursor: pointer; }

#btnEntrada, #btnSalida { justify-content: center !important; flex-direction: column; text-align: center !important; }
#btnEntrada .diario-accion__copy, #btnSalida .diario-accion__copy { justify-items: center; }
.diario-dashboard .diario-accion__icon { width: 3.85rem; height: 3.85rem; font-size: 1.75rem; border: 1px solid rgba(183, 120, 0, .12); }
#btnEntrada .diario-accion__icon, #btnSalida .diario-accion__icon { background: #fff7e8; border-color: #f0dcae; color: #ad7100; }
.venta-linea-cantidad { max-width: 14rem; }
.venta-linea-cantidad .cantidad-linea { min-width: 0; background: #fff; }
@media (max-width: 1199.98px) {
  #modalVenta .modal-content { display: flex; flex-direction: column; min-height: 0; }
  #modalVenta .modal-body { display: flex; flex: 1 1 auto; min-height: 0; flex-direction: column; overflow: hidden; }
  #modalVenta #zonaVenta { display: flex; flex: 1 1 auto; min-height: 0; margin-bottom: 0 !important; }
  #modalVenta #zonaVenta .card-body,
  #modalVenta #zonaVenta .card-body > .mt-3 { display: flex; flex: 1 1 auto; min-height: 0; flex-direction: column; }
  #modalVenta .venta-temporal-movil { flex: 1 1 0; height: auto; min-height: 0; max-height: none; overflow-y: auto; }
  .venta-linea-cantidad { width: 100%; max-width: none; }
  .venta-linea-cantidad .btn { min-width: 4rem; }
  .venta-linea-precios .form-label { font-size: .95rem; }
  .venta-linea-precios .form-control { min-height: 3.1rem; font-size: 1.05rem; font-weight: 600; }
}

/* ==========================================================================
   SINCRONIZACIÓN GLOBAL
   ========================================================================== */
/* Sincronización global: acceso desacoplado de la navegación del módulo. */
.app-sincronizacion-acceso {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  z-index: 1045;
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  border: 1px solid var(--bs-border-color);
  border-radius: 999px;
  background: var(--bs-body-bg);
  box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .16);
  color: var(--bs-body-color);
}
.app-sincronizacion-acceso--atencion { border-color: var(--bs-warning); background: var(--bs-warning-bg-subtle, #fff3cd); }
.app-sincronizacion-acceso--sincronizando .bi-arrow-repeat { animation: sincronizacion-girar .9s linear infinite; }
.app-sincronizacion-acceso .badge { min-width: 1.25rem; }
.app-centro-notificaciones { display: flex; align-items: center; width: 100%; gap: .65rem; min-height: 2.8rem; border: 1px solid rgba(255,255,255,.2); border-radius: .55rem; padding: .6rem .7rem; background: rgba(255,255,255,.08); color: #fff6df; font: inherit; text-align: left; }
.app-centro-notificaciones:hover { background: rgba(255,255,255,.16); }
.app-centro-notificaciones > .bi { color: #fff4dc; font-size: 1.15rem; }
.app-centro-notificaciones .badge { margin-left: auto; }
.centro-notificacion { display: flex; align-items: stretch; padding: 0 !important; }
.centro-notificacion__abrir { display: block; flex: 1 1 auto; min-width: 0; border: 0; padding: .85rem 1rem; background: transparent; color: inherit; text-align: left; }
.centro-notificacion__abrir:hover { background: #fffaf0; }
.centro-notificacion__accion { display: flex; align-items: center; padding: .7rem; border-left: 1px solid #e7e1d8; }
.centro-notificacion__ok { min-width: 4rem; min-height: 3rem; font-weight: 700; }
.sincronizacion-movimiento { cursor: pointer; }
.sincronizacion-movimiento:hover, .sincronizacion-movimiento:focus-visible { background: #fffaf0; outline: 2px solid rgba(212, 160, 23, .45); outline-offset: -2px; }
@keyframes sincronizacion-girar { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .app-sincronizacion-acceso--sincronizando .bi-arrow-repeat { animation: none; } }
@media (max-width: 1200px) {
  .app-sincronizacion-acceso { bottom: calc(5.75rem + env(safe-area-inset-bottom)); width: var(--app-control-altura); height: var(--app-control-altura); justify-content: center; padding: 0; }
  .app-sincronizacion-acceso span:not(.badge) { display: none; }
  .app-sincronizacion-acceso .badge { position: absolute; top: -.4rem; right: -.4rem; }
}

/* Diario: teléfono y tableta comparten una superficie operativa amplia y legible. */
@media (min-width: 768px) and (max-width: 1199.98px) {
  #modalVenta .modal-dialog { width: 100%; max-width: none; min-height: 100dvh; height: 100dvh; margin: 0; }
  #modalVenta .modal-content { height: 100%; max-height: none; border: 0; border-radius: 0; }
  #modalVenta .modal-footer { padding-bottom: max(.75rem, env(safe-area-inset-bottom)); }
  #menuDiario.diario-dashboard { grid-template-columns: none; }
  #resumenDiario > .col-6 { width: 50%; }
}
/* ==========================================================================
   CAJA: tarjetas, tabla y confirmación de movimientos
   ========================================================================== */
.caja-tarjeta .card-body { display: flex; flex-direction: column; }
.caja-tarjeta__encabezado { display: grid; grid-template-columns: minmax(0, 1fr); gap: .65rem; }
.caja-tarjeta__encabezado h5 { margin: 0; font-size: clamp(1.1rem, 1.25vw, 1.25rem); line-height: 1.2; }
.caja-tarjeta__acciones { display: flex; align-items: center; justify-self: end; gap: .45rem; }
.caja-tarjeta__principal, .caja-tarjeta__estado, .caja-tarjeta .editar-caja, .caja-tarjeta .eliminar-caja, .caja-tarjeta .habilitar-caja { display: grid; min-height: 2.2rem; height: 2.2rem; place-items: center; border-radius: .55rem; }
.caja-tarjeta__principal { min-width: 4.7rem; padding: .35rem .6rem; background: var(--app-gold); color: #fff; font-size: .78rem; font-weight: 600; text-align: center; white-space: normal; }
.caja-tarjeta .editar-caja, .caja-tarjeta .eliminar-caja, .caja-tarjeta .habilitar-caja { width: 2.2rem; min-width: 2.2rem; padding: 0; }
.caja-tarjeta__estado { min-width: 4.25rem; padding: .35rem .55rem; font-size: .75rem; font-weight: 600; }
.caja-tarjeta__estado--activa { background: #f8edcf; color: #76530a; }
.caja-tarjeta__estado--inactiva { background: #ece8e1; color: #665d53; }
.caja-tarjeta__informacion { margin-top: 1rem; }
.caja-tarjeta__saldo { margin-bottom: .35rem; }
.caja-tarjeta__sede { display: block; }
.caja-tarjeta__interno { color: var(--app-gold-dark); font-size: .9em; }
.caja-tarjeta__movimientos { margin-top: auto; padding-top: 1rem; border-top: 1px solid #e7e0d6; }
.caja-tarjeta:hover, .caja-tarjeta:focus-visible { border-color: rgba(212, 160, 23, .45) !important; background: #fffaf0; box-shadow: 0 .5rem 1.25rem rgba(91, 65, 13, .12) !important; transform: translateY(-2px); outline: 0; }
.caja-tarjeta--inactiva { opacity: .82; }
.caja-tabla-wrap { border: 1px solid #e7e0d6; border-radius: .75rem; background: #fff; overflow: hidden; }
.caja-tabla { min-width: 50rem; }
.caja-tabla thead th { border-bottom-width: 1px; background: #fff9ed; color: #6e4d09; font-size: .8rem; font-weight: 700; text-transform: uppercase; white-space: nowrap; }
.fila-caja { cursor: pointer; transition: background-color .16s ease, box-shadow .16s ease; }
.fila-caja:hover, .fila-caja:focus-visible { background: #fff7e6; outline: 0; }
.fila-caja:focus-visible { box-shadow: inset .2rem 0 var(--app-gold); }
.fila-caja--inactiva { opacity: .7; }
.movimiento-caja--confirmable { cursor: pointer; transition: background-color .16s ease, border-color .16s ease; }
.movimiento-caja--confirmable:hover, .movimiento-caja--confirmacion-activa { border-color: rgba(212, 160, 23, .55) !important; background: #fffaf0; }
.movimiento-caja--confirmable .alternar-confirmacion-movimiento { max-width: 0; min-width: 0; overflow: hidden; padding: 0; border-width: 0; opacity: 0; transition: max-width .16s ease, padding .16s ease, opacity .16s ease; }
.movimiento-caja--confirmacion-activa .alternar-confirmacion-movimiento { max-width: 9rem; min-width: 6.5rem; padding: .25rem .5rem; border-width: 1px; opacity: 1; }
.vista-cajas-lista .caja-tarjeta--lista .card-body { display: grid; grid-template-columns: minmax(14rem, 1.3fr) minmax(10rem, .8fr) minmax(12rem, 1fr); align-items: center; gap: 1rem; }
.vista-cajas-lista .caja-tarjeta--lista .caja-tarjeta__encabezado { display: contents; }
.vista-cajas-lista .caja-tarjeta--lista .caja-tarjeta__acciones { grid-column: 1 / -1; grid-row: 1; }
.vista-cajas-lista .caja-tarjeta--lista .caja-tarjeta__nombre { grid-column: 1; grid-row: 2; }
.vista-cajas-lista .caja-tarjeta--lista .caja-tarjeta__informacion { grid-column: 2; grid-row: 2; margin: 0; }
.vista-cajas-lista .caja-tarjeta--lista .caja-tarjeta__movimientos { grid-column: 3; grid-row: 2; margin: 0; padding-top: 0; border-top: 0; }
/* App Shell y cabecera de página en móvil/tableta. */
@media (max-width: 991.98px) {
  body.app-shell main.container { padding-right: 1.25rem !important; padding-left: 1.25rem !important; }
  .app-page__heading { margin-top: .35rem; }
}

/* Diario en móvil/tableta. */
@media (max-width: 991.98px) {
  #btnEntrada, #btnSalida { min-height: 9.5rem !important; }
  #btnEntrada .diario-accion__copy, #btnSalida .diario-accion__copy { width: 100%; }
}

/* Caja en móvil/tableta. */
@media (max-width: 991.98px) {
  .caja-tarjeta .card-body { padding: 1.35rem; }
  .caja-tabla { min-width: 44rem; }
}

/* Diario en tableta. */
@media (min-width: 768px) and (max-width: 1199.98px) {
  #accionesDiario > .col-6 { width: 50%; }
}

/* ==========================================================================
   TARJETAS DE ENTIDADES
   ========================================================================== */
/* Tarjetas de entidades: estado y acciones compactas en una sola jerarquía. */
.app-entity-card .card-body { display: flex; min-height: 100%; flex-direction: column; }
.app-card__header { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; }
.app-card__title { min-width: 0; margin: 0; overflow-wrap: anywhere; font-size: 1.2rem; line-height: 1.22; }
.app-card__actions { display: flex; flex: 0 0 auto; align-items: center; justify-content: flex-end; gap: .4rem; }
.app-card__status { display: inline-grid; min-height: 2.2rem; max-width: 7rem; place-items: center; padding: .3rem .55rem; border-radius: .5rem; font-size: .75rem; font-weight: 600; line-height: 1.05; text-align: center; white-space: normal; }
.app-card__icon-action { display: inline-grid; width: 2.2rem; min-width: 2.2rem; height: 2.2rem; min-height: 2.2rem; place-items: center; padding: 0; border-radius: .5rem; }
.app-card__icon-action .bi { font-size: 1rem; }
.app-selection-cart__item { display: flex; align-items: center; justify-content: space-between; gap: .75rem; width: 100%; padding: .75rem; border: 1px solid var(--app-border); border-radius: var(--app-control-radio, .5rem); background: var(--app-surface-soft, var(--bs-tertiary-bg)); }
.app-selection-cart__item > :first-child { min-width: 0; }
.app-selection-cart__item > button { flex-shrink: 0; }
@media (max-width: 575.98px) {
  .app-card__header { gap: .55rem; }
  .app-card__title { font-size: 1.08rem; }
  .app-card__actions { gap: .3rem; }
  .app-card__status { max-width: 5.6rem; font-size: .68rem; }
}

/* ==========================================================================
   CATÁLOGOS Y PRODUCTOS
   ========================================================================== */
/* Catálogo común de productos: alternancia crema y selección mostaza. */
.selector-producto { border: 1px solid #e8dcc1; color: #26231c; }
.selector-producto:hover, .selector-producto:focus-visible { border-color: #b88900; }
.selector-producto--activo, .selector-producto--activo:hover, .selector-producto--activo:focus-visible { background: #d4a017; border-color: #b88900; color: #231c08; }
.selector-producto--activo .text-muted { color: #3f3516 !important; }
input[type="number"].cantidad-item::-webkit-inner-spin-button, input[type="number"].cantidad-item::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
input[type="number"].cantidad-item { appearance: textfield; -moz-appearance: textfield; }


/* ==========================================================================
   SELECTOR GLOBAL DE SEDE
   ========================================================================== */
/* Selector global de sede para teléfono y tableta. */
.app-mobile-sede { display: none; }
@media (max-width: 1199.98px) {
  .app-sidebar__sede { display: block; }
  .app-mobile-sede {
    position: fixed;
    top: max(.55rem, env(safe-area-inset-top));
    right: .75rem;
    left: .75rem;
    z-index: 1170;
    display: flex;
    min-height: 3.1rem;
    align-items: center;
    gap: .55rem;
    padding: .35rem .55rem;
    border: 1px solid #ead597;
    border-radius: .75rem;
    background: rgba(255, 253, 248, .97);
    box-shadow: 0 .2rem .7rem rgba(80, 57, 7, .12);
    backdrop-filter: blur(10px);
  }
  .app-mobile-sede > .bi {
    flex: 0 0 auto;
    color: var(--app-gold);
    font-size: 1.15rem;
  }
  .app-mobile-sede .form-select {
    min-height: 2.35rem;
    padding-top: .25rem;
    padding-bottom: .25rem;
    border: 0;
    background-color: transparent;
    color: var(--app-ink);
    font-weight: 600;
    box-shadow: none;
  }
  body.app-shell { padding-top: 4.85rem; }
}
@media (min-width: 768px) and (max-width: 1199.98px) {
  .app-mobile-sede { left: 4.35rem; }
}
@media (max-width: 575.98px) {
  .app-mobile-sede {
    right: .55rem;
    left: .55rem;
    min-height: 2.9rem;
  }
  .app-mobile-sede .form-select { font-size: .95rem; }
}
@media (min-width: 1200px) {
  .app-sidebar__sede { display: block; }
  .app-mobile-sede { display: none !important; }
}


/* ==========================================================================
   APP SHELL: CARGA, PIE Y MARCOS DE COMPATIBILIDAD
   ========================================================================== */
/* Carga global de navegación: evita clics repetidos durante recargas de documento. */
.app-page-loader {
  position: fixed;
  inset: 0;
  z-index: 5000;
  display: grid;
  place-items: center;
  padding: 1.5rem;
  visibility: hidden;
  background: rgba(255, 253, 248, .92);
  opacity: 0;
  pointer-events: none;
  backdrop-filter: blur(4px);
  transition: opacity .12s ease, visibility .12s ease;
}
.app-page-loader.is-visible {
  visibility: visible;
  opacity: 1;
  pointer-events: all;
}
.app-page-loader__panel {
  display: grid;
  min-width: 10rem;
  justify-items: center;
  gap: .9rem;
  padding: 1.35rem 1.6rem;
  border: 1px solid #ead597;
  border-radius: 1rem;
  background: #fffdf8;
  color: #503907;
  box-shadow: 0 .7rem 2rem rgba(80, 57, 7, .14);
}
.app-page-loader__spinner {
  width: 2.8rem;
  height: 2.8rem;
  border-width: .28rem;
  color: var(--app-gold);
}
body.app-page-loading { overflow: hidden !important; }

/* Barra de sede móvil/tableta: rectángulo superior de ancho completo. */
@media (max-width: 1199.98px) {
  .app-mobile-sede {
    top: 0 !important;
    right: 0 !important;
    left: 0 !important;
    min-height: 3.2rem;
    padding: max(.35rem, env(safe-area-inset-top)) .9rem .35rem;
    border: 0;
    border-bottom: 1px solid #e5c46d;
    border-radius: 0;
    background: rgba(255, 253, 248, .98);
    box-shadow: 0 .15rem .45rem rgba(80, 57, 7, .1);
  }
  .app-mobile-sede .form-select {
    min-height: 2.35rem;
    padding-right: 2.25rem;
    border: 0;
    border-radius: 0;
    background-color: transparent;
    font-weight: 700;
  }
  body.app-shell { padding-top: 3.65rem !important; }
}
@media (max-width: 575.98px) {
  .app-mobile-sede { padding-inline: .75rem; }
}


/* Superficies inferiores móviles sin separadores ni sombras que crucen controles o iconos. */
@media (max-width: 1199.98px) {
  .app-mobile-nav {
    border-top: 0 !important;
    background: #fff !important;
    box-shadow: none !important;
    opacity: 1;
    isolation: isolate;
  }

  .modal .modal-footer {
    border-top: 0 !important;
    background: #fff !important;
    box-shadow: none !important;
  }
}


/* El pie de versión no compite con la navegación fija en móvil. */
.app-version-footer {
  border: 0 !important;
  box-shadow: none !important;
}
@media (max-width: 1199.98px) {
  .app-version-footer { display: none !important; }
}


/* App Shell de compatibilidad: los módulos aún no convertidos viven en un
   documento aislado para conservar su JavaScript sin recargar la navegación. */
.app-shell-frame-deck {
  position: relative;
  width: 100%;
  height: 100dvh;
  min-height: 30rem;
  overflow: hidden;
  background: var(--bs-light-bg-subtle, #f8f9fa);
}
.app-shell-frame-slot {
  position: absolute;
  inset: 0;
  background: var(--bs-light-bg-subtle, #f8f9fa);
}
.app-shell-frame-slot[hidden],
.app-shell-frame-deck[hidden] { display: none !important; }
.app-shell-frame-slot.is-prewarming {
  position: fixed !important;
  top: 0 !important;
  left: -220vw !important;
  right: auto !important;
  bottom: auto !important;
  width: 100vw !important;
  height: 100dvh !important;
  min-height: 100dvh !important;
  visibility: hidden !important;
  pointer-events: none !important;
  overflow: hidden !important;
}
.app-shell-frame {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  background: var(--bs-light-bg-subtle, #f8f9fa);
}
.app-shell-frame-loading {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .65rem;
  background: var(--bs-light-bg-subtle, #f8f9fa);
  color: var(--bs-secondary-color);
  pointer-events: none;
}
.app-shell-frame-slot.is-ready .app-shell-frame-loading { display: none; }
.app-shell-frame-slot--espera-corta .app-shell-frame-loading { opacity: 0; }
body.app-shell-frame-active > .app-version-footer { display: none !important; }

body.app-shell.app-shell-frame {
  min-height: 100dvh;
  padding: 0 !important;
  margin: 0 !important;
}
body.app-shell-frame > [data-app-shell-frame-context] { display: none !important; }
body.app-shell-frame > main {
  width: 100%;
  max-width: none;
}

@media (max-width: 1199.98px) {
  .app-shell-frame-deck {
    height: calc(100dvh - 9.35rem);
    min-height: 22rem;
  }
}


/* Los marcos de precarga permanecen fuera de pantalla, no display:none:
   así Chromium/Brave los descarga y prepara realmente en segundo plano. */
.app-shell-frame-deck.is-prewarming {
  position: fixed !important;
  top: 0 !important;
  left: -220vw !important;
  width: 100vw !important;
  height: 100dvh !important;
  min-height: 100dvh !important;
  visibility: hidden !important;
  pointer-events: none !important;
  overflow: hidden !important;
}


/* ==========================================================================
   DIARIO: VENTA, SELECTORES Y ARQUEO
   ========================================================================== */
/* Diario: mantiene el carrito de venta estable y con objetivo táctil cómodo. */
.venta-eliminar-linea {
  width: 2.75rem;
  min-width: 2.75rem;
  height: 2.75rem;
  min-height: 2.75rem;
}
.venta-eliminar-linea .bi {
  font-size: 1.35rem;
  line-height: 1;
}


/* INT-018: el modal de venta mantiene la densidad y altura inicial al abrir/cerrar teclado móvil. */
@media (max-width: 1199.98px) {
  #modalVenta {
    position: fixed !important;
    inset: 0 !important;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }
  #modalVenta .modal-dialog { height: 100dvh !important; min-height: 100dvh !important; max-height: 100dvh !important; }
  #modalVenta .modal-content {
    height: 100% !important;
    max-height: 100% !important;
  }
  #modalVenta .modal-body { padding-inline: 1rem; }
}

.form-check-lg .form-check-input { width: 1.55rem; height: 1.55rem; margin-top: .18rem; }
.form-check-lg .form-check-label { padding-left: .35rem; }

/* Diario: selectores de cliente y lista de precios con la paleta de la aplicación. */
#modalVenta #clienteVentaGrupo { padding-inline: .2rem; }
.venta-cliente-selector, .venta-lista-precio { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .9rem; }
.venta-selector-icon { display: grid; width: 3rem; height: 3rem; place-items: center; border-radius: 50%; background: #fff0cf; color: #806010; font-size: 1.45rem; }
.venta-selector-copy { overflow: hidden; font-size: 1.2rem; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.venta-selector-arrow { font-size: 1.35rem; }
.venta-cliente-selector { min-height: 4.9rem; padding: .7rem 1rem; border: 1px solid #dcd6cd; border-radius: .8rem; background: #fff; color: var(--app-ink); }
.venta-cliente-selector:hover, .venta-cliente-selector:focus { border-color: var(--app-gold); background: #fff7e5; color: var(--app-ink); }
.venta-lista-precio { min-height: 5.15rem; padding: .65rem 1rem; border: 1px solid #ead9ad; border-radius: .8rem; background: #fff8e7; color: #6b521a; }
.venta-lista-precio:hover, .venta-lista-precio:focus { border-color: var(--app-gold); background: #fff2d5; color: #4d3810; }
.venta-lista-copy { display: grid; gap: .1rem; min-width: 0; }
.venta-lista-copy small { font-size: .92rem; font-weight: 500; }
.venta-lista-copy strong { overflow: hidden; color: var(--app-ink); font-size: 1.15rem; text-overflow: ellipsis; white-space: nowrap; }
#modalVenta .diario-producto-toolbar-wrap { margin: .7rem .9rem .2rem; width: auto; padding: 0; border: 0; background: transparent; }
#modalVenta .diario-producto-toolbar { min-height: 5.1rem; border: 2px dashed #c9a64a; border-radius: .8rem; background: #fff; color: #89640b; font-size: 1.22rem; text-align: center !important; }
#modalVenta .diario-producto-toolbar .bi { font-size: 1.65rem; vertical-align: -.12em; }
#modalSeleccionClienteVenta .list-group, #modalListaPrecioVenta .list-group { gap: .65rem; }
#modalSeleccionClienteVenta .list-group-item, #modalListaPrecioVenta .list-group-item { border: 1px solid #eadfce; border-radius: .7rem !important; background: #fffdf9; color: var(--app-ink); }
#modalSeleccionClienteVenta .list-group-item:hover, #modalListaPrecioVenta .list-group-item:hover { border-color: #c9a64a; background: #fff7e6; color: var(--app-ink); }
#modalSeleccionClienteVenta .list-group-item.active, #modalListaPrecioVenta .list-group-item.active { border-color: var(--app-gold); background: #dba90d; color: #2e2107; }
#modalSeleccionClienteVenta .list-group-item.active .text-muted { color: #4f3c10 !important; }
@media (max-width: 767.98px) {
  #modalVenta #clienteVentaGrupo { margin-bottom: .7rem !important; }
  #modalVenta .venta-cliente-selector { min-height: 3.85rem; padding: .45rem .7rem; gap: .65rem; }
  #modalVenta .venta-lista-precio { min-height: 4.15rem; padding: .45rem .7rem; gap: .65rem; }
  #modalVenta .venta-selector-icon { width: 2.45rem; height: 2.45rem; font-size: 1.2rem; }
  #modalVenta .venta-selector-copy { font-size: 1.05rem; }
  #modalVenta .venta-lista-copy strong { font-size: 1rem; }
  #modalVenta .venta-lista-copy small { font-size: .82rem; }
  #modalVenta .venta-selector-arrow { font-size: 1.1rem; }
  #modalVenta .diario-producto-toolbar-wrap { margin: .4rem .7rem .1rem; padding: 0 !important; }
  #modalVenta .diario-producto-toolbar { min-height: 3.9rem; font-size: 1.08rem; }
  #modalVenta .diario-producto-toolbar .bi { font-size: 1.35rem; }
}


/* INT-022 · El selector superior de sede queda subordinado a modales y navegación. */
@media (max-width: 1199.98px) {
  body.modal-open .app-mobile-sede,
  body.app-frame-modal-open .app-mobile-sede,
  body.app-menu-open .app-mobile-sede {
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
  }
  .app-mobile-sede { transition: opacity .08s linear, visibility .08s linear; }

  /* Un modal abierto dentro de un marco de compatibilidad ocupa el viewport
     completo del shell; ocultar el selector no debe dejar reservado su alto. */
  body.app-frame-modal-open {
    overflow: hidden !important;
  }
  body.app-frame-modal-open .app-shell-frame-deck {
    position: fixed !important;
    inset: 0 !important;
    z-index: 2980 !important;
    width: 100vw !important;
    height: 100dvh !important;
    min-height: 100dvh !important;
  }
}

/* INT-022 · Venta, entrada y salida: título, Agregar producto fijo y contenido desplazable. */
.diario-producto-toolbar-wrap {
  position: relative;
  z-index: 4;
  flex: 0 0 auto;
  width: 100%;
  padding: .7rem .9rem;
  border-bottom: 1px solid var(--app-border, #eee5d8);
  background: #fffdf8;
}
.diario-producto-toolbar {
  min-height: 3.15rem;
  margin: 0 !important;
  border-radius: .65rem;
  font-weight: 650;
}
#modalVenta #contenidoModalVenta,
#modalEntrada .diario-operacion-modal__body,
#modalSalidaInventario .diario-operacion-modal__body {
  display: flex;
  min-height: 0;
  flex-direction: column;
  padding: 0 !important;
  overflow: hidden !important;
}
#modalVenta #zonaVenta {
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  background: #fff;
}
#modalVenta #zonaVenta > .diario-carrito-modal__contenido {
  display: flex;
  height: 100%;
  min-height: 0;
  flex-direction: column;
  padding: 0 !important;
}
#modalVenta .venta-carrito-superficie {
  display: flex;
  flex: 1 1 auto;
  min-height: 0;
  flex-direction: column;
  margin: 0 !important;
  overflow: hidden;
}
#modalVenta #ventaTemporalMovil {
  flex: 1 1 auto;
  width: 100%;
  min-height: 0 !important;
  max-height: none !important;
  padding: .75rem .9rem 1rem;
  overflow-y: auto !important;
}
#modalVenta .venta-carrito-tabla {
  flex: 1 1 auto;
  min-height: 0;
  margin: 0;
  padding: .75rem .9rem 1rem;
  overflow: auto;
}
.diario-operacion-modal__scroll {
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  overflow-y: auto;
  padding: 1rem;
}
.diario-inventario-carrito { width: 100%; min-height: 0; }
@media (max-width: 767.98px) {
  #modalVenta .diario-producto-toolbar-wrap,
  #modalEntrada .diario-producto-toolbar-wrap,
  #modalSalidaInventario .diario-producto-toolbar-wrap { padding: .6rem .75rem; }
  #modalVenta #ventaTemporalMovil { padding-inline: .75rem; }
  #modalVenta #ventaTemporalMovil > .venta-producto-card {
    margin-bottom: .75rem;
  }
}


/* INT-023 · Cada producto de la venta se distingue como una tarjeta sutil,
   siguiendo el patrón visual del carrito de salida de inventario. */
#modalVenta .venta-producto-card {
  border-color: #ddd9d2 !important;
  border-radius: .7rem !important;
  background: #fff !important;
  box-shadow: none !important;
}
#modalVenta .venta-producto-card:last-child {
  margin-bottom: 0;
}


/* ==========================================================================
   PEDIDOS
   ========================================================================== */
/* Pedidos: acciones principales primero y con mayor jerarquía táctil. */
.pedidos-acciones-principales .pedido-accion-principal {
  min-height: 4.5rem;
  font-size: 1.05rem;
  font-weight: 700;
}
.pedidos-acciones-principales .pedido-accion-principal:disabled {
  opacity: .45;
  cursor: not-allowed;
}
@media (max-width: 575.98px) {
  .pedidos-acciones-principales .pedido-accion-principal { min-height: 4.15rem; }
}


/* Pedidos: acciones del producto visibles y táctiles en la esquina superior derecha. */
.pedido-producto-card .card-body {
  min-height: 5.25rem;
  padding-right: 7rem !important;
}
.pedido-producto-acciones {
  position: absolute;
  top: .75rem;
  right: .75rem;
  display: flex;
  gap: .5rem;
  align-items: center;
}
.pedido-producto-accion {
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: .7rem;
  font-size: 1.05rem;
}


/* Pedidos INT-051: verificación táctil y acciones operativas dentro del contenido. */
.pedido-verificacion-check {
  display: inline-flex;
  align-items: center;
  gap: .65rem;
  min-height: 2.75rem;
}
.pedido-verificacion-check .form-check-input {
  width: 1.75rem;
  height: 1.75rem;
  margin-top: 0;
  flex: 0 0 auto;
}
.pedidos-acciones-contenido .btn {
  min-height: 3.15rem;
  font-weight: 600;
}


/* Pedidos INT-057: estados y edición explícita de datos. */
.app-card__status.text-bg-info {
  color: #083344 !important;
}
.pedido-destino-editable[readonly],
.pedido-destino-editable:disabled {
  background: var(--bs-tertiary-bg, #f8f9fa);
  opacity: 1;
}


/* Pedidos INT-058: botones de edición normalizados y táctiles. */
.pedido-boton-editar {
  width: 3rem;
  height: 3rem;
  min-width: 3rem;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: .75rem;
  font-size: 1.1rem;
  flex: 0 0 auto;
}


/* ==========================================================================
   MODALES COMPARTIDOS
   ========================================================================== */
/* INT-063 · Apertura móvil de modal en un solo estado visual.
   El shell desaparece antes del primer paint del modal y reaparece después
   del cierre; así no se ve cómo el frame se expande entre barras. */
@media (max-width: 1199.98px) {
  body.app-frame-modal-open .app-mobile-sede,
  body.app-frame-modal-open .app-mobile-nav,
  body.app-modal-visual-open .app-mobile-sede,
  body.app-modal-visual-open .app-mobile-nav {
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transition: none !important;
  }

  body.app-frame-modal-open .app-shell-frame-deck {
    transition: none !important;
  }
}

@media (max-width: 767.98px) {
  /* En teléfono el modal es una pantalla: no hace falta animar desde una
     caja parcial hasta fullscreen. Se presenta ya en su tamaño definitivo. */
  .modal.fade {
    transition: none !important;
  }
  .modal.fade .modal-dialog,
  .modal.show .modal-dialog {
    transform: none !important;
    transition: none !important;
  }
}


/* INT-064 · Regla global de presentación de modales.
   Cualquier modal gestionado por Bootstrap/ModalManager oculta primero el
   chrome móvil del App Shell. Aplica igual a padre, hijo, nieto, etc. */
@media (max-width: 1199.98px) {
  body.app-modal-visual-open .app-nav-backdrop,
  body.app-modal-visual-open .app-sidebar.is-mobile-open,
  body.app-frame-modal-open .app-nav-backdrop,
  body.app-frame-modal-open .app-sidebar.is-mobile-open {
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transition: none !important;
  }
}

/* Diario · venta: el cuerpo completo se desplaza; encabezado y acciones siguen fijos. */
#modalVenta .modal-body,
#modalVenta #contenidoModalVenta {
  display: block !important;
  min-height: 0;
  overflow-y: auto !important;
}
#modalVenta #zonaVenta,
#modalVenta #zonaVenta > .diario-carrito-modal__contenido,
#modalVenta .venta-carrito-superficie {
  display: block !important;
  min-height: auto;
  overflow: visible !important;
}
#modalVenta #ventaTemporalMovil,
#modalVenta .venta-carrito-tabla {
  max-height: none !important;
  overflow: visible !important;
}

/* Diario · arqueo: los importes principales se distinguen sin perder densidad móvil. */
#modalCierre #denominacionesCierre > section {
  margin-bottom: 1rem !important;
  padding: 1rem;
  border: 1px solid #eadfca;
  border-radius: .9rem;
  background: #fffdf8;
}
#modalCierre #denominacionesCierre > section h6 {
  margin-bottom: .85rem !important;
  color: #4d3611;
  font-size: 1.05rem;
  font-weight: 700;
}
#modalCierre #denominacionesCierre > div:last-child {
  display: grid;
  gap: .35rem;
  padding: .9rem 1rem;
  border-radius: .9rem;
  background: #f8f5ef;
  color: #4d4334;
}
#modalCierre #denominacionesCierre [data-total] { color: #241b0d; font-size: 1.05rem; }
#modalCierre #totalEfectivoCierre {
  color: #76530a;
  font-size: 1.55rem;
}
#modalCierre #diferenciaArqueoCierre {
  align-items: center;
  padding: .85rem 1rem !important;
  border: 1px solid currentColor;
  font-size: 1.05rem;
}
#modalCierre #diferenciaArqueoCierre strong { font-size: 1.3rem; }
#modalCierre #verificacionesMedios {
  padding: .85rem 1rem;
  border: 1px solid #eadfca;
  border-radius: .9rem;
  background: #fff;
}
#modalCierre .verificar-medio { width: 1.45rem; height: 1.45rem; margin-top: .1rem; }
@media (max-width: 767.98px) {
  #modalCierre #denominacionesCierre > section { padding: .8rem; }
  #modalCierre #totalEfectivoCierre { font-size: 1.4rem; }
}

/* La sede continúa disponible en el menú lateral en todos los módulos. */
.app-mobile-sede[data-sede-superior-visible="false"] { display: none !important; }
@media (max-width: 1199.98px) {
  body.app-shell:not(:has(.app-mobile-sede[data-sede-superior-visible="true"])) { padding-top: 0 !important; }
}
.documento-producto { display: flex; align-items: flex-start; gap: .5rem; padding: .75rem; border: 1px solid var(--bs-border-color); border-radius: .5rem; background: var(--bs-tertiary-bg); }
.documento-producto__datos { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.documento-producto__acciones { display: flex; flex-shrink: 0; gap: .25rem; margin-left: auto; }
.documento-arrastre { touch-action: none; cursor: grab; }
.documento-insercion { height: 3px; background: #000; flex-shrink: 0; pointer-events: none; }
.documento-producto.is-dragging { opacity: .45; }
