/* ---
Design System: SecurIA Modern - Diseño Global Unificado
--- */

:root {
  /* Typography */
  --font-family: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;

  /* Layout & Background (BitStream) */
  --bg: #F7F8FA;
  --surface: #FFFFFF;
  --border: #EAECEF;

  /* Text Colors */
  --text: #1A202C;
  --muted: #6B7280;
  --placeholder: #9CA3AF;

  /* Brand Palette (BitStream) */
  /* Paleta azul OSCURA - actualizada al color del navbar */
  --brand: #2b405e;        /* base (navbar color) */
  --brand-600: #244058;    /* hover (navbar bottom gradient) */
  --brand-700: #1d3548;    /* active (más oscuro) */
  --brand-100: #e8ebf2;    /* suaves fondos */
  --brand-50: #f5f6f9;     /* fondo muy tenue */

  /* Status Colors */
  --success: #0D925D;
  --warning: #F59E0B;
  --danger: #EF4444;
  --info: #2b405e;

  /* Shadows */
  --shadow-sm: 0 1px 2px rgba(16,24,40,.06);
  --shadow-md: 0 4px 10px rgba(16,24,40,.08);

  /* Radii */
  --radius: 12px;
  --radius-sm: 10px;
  --radius-pill: 999px;

  /* Typography Scale */
  --fs-h1: 24px; --lh-h1: 32px; --fw-h1: 700;
  --fs-h2: 18px; --lh-h2: 24px; --fw-h2: 600;
  --fs-h3: 16px; --lh-h3: 22px; --fw-h3: 600;
  --fs-body: 15px; --lh-body: 22px; --fw-body: 500;
  --fs-small: 14px; --lh-small: 20px; --fw-small: 500;
  --fs-label: 12px; --lh-label: 16px; --fw-label: 600;

  /* Component Heights */
  --h-input: 44px;
  --h-btn: 44px;
  --h-btn-lg: 52px;
  --h-btn-icon: 40px;
  --h-topbar: 72px;

  /* Spacing Scale */
  --space-4: 4px;
  --space-8: 8px;
  --space-12: 12px;
  --space-16: 16px;
  --space-20: 20px;
  --space-24: 24px;
  --space-32: 32px;
  /* Alias consistente para normalizaciones previas que usan --radius-12 */
  --radius-12: 12px; /* mantener igual que --radius deseado */
}

/* ---
Global Styles & Typography
--- */

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  padding: 0;
  background-color: var(--bg);
  color: var(--text);
  font-family: var(--font-family);
  font-size: 16px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1, .h1 { 
  font-size: var(--fs-h1); 
  line-height: var(--lh-h1); 
  font-weight: var(--fw-h1); 
  margin: 0 0 var(--space-20) 0;
}

h2, .h2 { 
  font-size: var(--fs-h2); 
  line-height: var(--lh-h2); 
  font-weight: var(--fw-h2); 
  margin: 0 0 var(--space-16) 0;
}

h3, .h3 { 
  font-size: var(--fs-h3); 
  line-height: var(--lh-h3); 
  font-weight: var(--fw-h3); 
  margin: 0 0 var(--space-12) 0;
}

p {
  margin: 0 0 var(--space-16) 0;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
}

label, .form-label { 
  display: block;
  font-size: var(--fs-label); 
  line-height: var(--lh-label); 
  font-weight: var(--fw-label); 
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: var(--space-8);
}

small, .text-muted {
  font-size: var(--fs-small);
  line-height: var(--lh-small);
  color: var(--muted);
}

hr {
  border: none;
  border-top: 1px solid var(--border);
  margin: var(--space-16) 0;
}

/* ---
App Shell / Layout
--- */

.app-shell {
  display: flex;
  height: 100vh;
}

.sidebar {
  width: 240px;
  flex-shrink: 0;
  border-right: 1px solid var(--border);
  padding: var(--space-16);
  display: flex;
  flex-direction: column;
}

.sidebar-header {
  padding: var(--space-8) var(--space-8) var(--space-12);
  display: flex;
  align-items: center;
  gap: var(--space-12);
  justify-content: center;
}

.sidebar-logo {
  display: block;
  width: 60%; /* más grande para mejor visibilidad */
  height: auto; /* mantiene proporción */
  max-width: 100%;
  margin-left: 0;
  margin-right: 0;
}

/* Mostrar solo el logo en la cabecera lateral (ocultar texto) */
.sidebar-header span { display: none; }

.sidebar-nav {
  flex-grow: 1;
}

.nav-item {
  display: flex;
  align-items: center;
  padding: 12px 20px;
  border-radius: 10px;
  color: var(--muted);
  text-decoration: none;
  font-weight: 500;
  font-size: var(--fs-body);
  margin-bottom: var(--space-8);
  transition: all 280ms cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
  background: transparent;
  transform: scale(1);
  box-shadow: 0 0 0 rgba(31, 58, 138, 0);
  border-left: 3px solid transparent;
}

.nav-item:hover {
  background-color: var(--brand-50);
  color: var(--brand-700);
  transform: translateX(2px);
  box-shadow: 0 2px 8px rgba(43, 64, 94, 0.08);
  border-left-color: var(--brand);
}

.nav-item.active {
  background: linear-gradient(135deg, var(--brand-100) 0%, var(--brand-50) 100%);
  color: var(--brand-700);
  font-weight: 600;
  transform: translateX(2px);
  box-shadow: 0 2px 12px rgba(43, 64, 94, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.5);
  border-left: 3px solid var(--brand);
  border-right: 1px solid var(--brand-100);
  border-top: 1px solid var(--brand-100);
  border-bottom: 1px solid var(--brand-100);
}

/* Navegación deshabilitada (features próximas) */
.nav-item.nav-item-disabled {
  opacity: .45;
  filter: grayscale(.4) brightness(.95);
  cursor: not-allowed;
  transform: scale(1) !important;
  box-shadow: none !important;
}
.nav-item.nav-item-disabled:hover {
  background: transparent;
  color: var(--muted);
  transform: scale(1) !important;
  box-shadow: none !important;
}

/* Contenedor para etiqueta secundaria en items deshabilitados */
.nav-disabled-wrap { display:flex; flex-direction:column; line-height:1.1; }
.nav-disabled-wrap .nav-label-line { display:flex; align-items:center; gap:8px; }
.nav-coming-inline {
  margin-top:4px;
  font-size:11px;
  font-weight:600;
  letter-spacing:.5px;
  text-transform:uppercase;
  color: var(--brand-600);
  opacity: .9;
}

/* Nueva pila para alineación vertical conjunta (icono + texto principal + sub) */
.nav-item .nav-text-stack { display:flex; flex-direction:column; line-height:1.15; }
.nav-item .nav-text-main { font-weight:500; font-size: var(--fs-body); }
.nav-item .nav-text-main-short { display:none; }
.nav-item .nav-text-sub { margin-top:2px; font-size:11px; font-weight:600; letter-spacing:.5px; text-transform:uppercase; color: var(--brand-600); }
.nav-item.nav-item-disabled { align-items:flex-start; }
.nav-item.nav-item-disabled i { margin-top:2px; }

/* Badge de cantidad de personas ingresadas */
.nav-badge {
  position: absolute;
  top: 50%;
  right: 12px;
  transform: translateY(-50%);
  background: var(--brand-500);
  color: white;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 10px;
  min-width: 20px;
  text-align: center;
  line-height: 1.4;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
  transition: all 0.3s ease;
}

.nav-item:hover .nav-badge {
  background: var(--brand-600);
  transform: translateY(-50%) scale(1.05);
}

.nav-item.active .nav-badge {
  background: white;
  color: var(--brand-500);
}

/* Asegurar que el nav-item tenga position relative para el badge absoluto */
.nav-item {
  position: relative;
}

.nav-item i {
  font-size: 20px;
  margin-right: var(--space-16);
  width: 20px;
  text-align: center;
  transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1);
}

/* Efecto sutil en el icono al hover */
.nav-item:hover:not(.nav-item-disabled) i {
  transform: scale(1.1);
}

.nav-item.active i {
  transform: scale(1.1);
}

.main-wrapper {
  flex-grow: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.topbar {
  height: var(--h-topbar);
  background-color: var(--surface);
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 var(--space-32);
  flex-shrink: 0;
}

/* Ajuste estabilidad topbar en móviles: evita desplazamientos bruscos al cambiar a vista scan */
@media (max-width: 640px) {
  .topbar { transition: none !important; }
  body.nav-scan-active .topbar { position:sticky !important; top:0 !important; background:#fff !important; z-index:1200 !important; }
}

body.nav-scan-active .topbar {
  justify-content: flex-end;
}

body.nav-scan-active .topbar-left {
  display: none;
}

body.nav-scan-active #scan-view .breadcrumb-nav {
  display: none;
}

body.nav-scan-active #scan-view .page-header {
  margin-bottom: var(--space-16);
}

body.nav-scan-active #scan-view .page-header .page-header-content {
  justify-content: flex-end;
}

body.nav-scan-active #scan-view .page-header .page-header-content > div:first-child {
  display: none;
}

#main-menu .records-toolbar,
#obreros-view .records-toolbar {
  display: flex;
  justify-content: flex-end;
  margin-bottom: var(--space-16);
  padding-top: var(--space-8);
  padding-bottom: var(--space-8);
}

.topbar-left {
  display: flex;
  align-items: center;
  gap: var(--space-16);
}

.topbar-title {
  font-size: var(--fs-h2);
  font-weight: 500;
  color: var(--text);
  margin: 0;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.btn-back {
  height: 36px;
  padding: 0 var(--space-16);
  font-size: var(--fs-small);
  border-radius: var(--radius-sm);
}

.btn-back i {
  margin-right: var(--space-8);
  font-size: 16px;
}

.topbar-actions {
  display: flex;
  align-items: center;
  gap: var(--space-16);
}

.user-info {
  display: flex;
  align-items: center;
  gap: var(--space-12);
  font-size: var(--fs-body);
  font-weight: 500;
  color: #2b405e;
  background: #EEF2FF;
  padding: 4px 12px;
  border-radius: 9999px;
  transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
  transform: scale(1);
  box-shadow: 0 0 0 rgba(59, 130, 246, 0);
  cursor: default;
}

.user-info:hover {
  background: #DBEAFE;
  color: #244058;
  transform: scale(1.05);
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15);
}

.user-info i {
  font-size: 24px;
  transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1);
  color: #2b405e;
}

.user-info:hover i {
  transform: scale(1.1);
  color: #244058;
}

.content-area {
  flex: 1;
  padding: var(--space-32);
  padding-bottom: 0;
  overflow-y: auto;
  max-width: 1280px;
  margin: 0 auto;
  width: 100%;
  display: flex;
  flex-direction: column;
}

/* Las vistas dentro de content-area */
.content-area > [id$="-view"] {
  flex: 1 0 auto;
}

/* ---
Component: Card
--- */

.card {
  background-color: var(--surface);
  border: 1px solid var(--border);
  /* Unificado: mismo radio que capas grises (headers / footers) */
  border-radius: var(--radius);
  box-shadow: 0 2px 6px rgba(0,0,0,0.03);
  margin-bottom: var(--space-24);
  transition: box-shadow 150ms ease;
}

/* Desactivado efecto elevación en hover */
.card:hover { box-shadow: inherit; }

.card-header {
  padding: var(--space-20) var(--space-24);
  border-bottom: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.card-body {
  padding: var(--space-24);
}

/* Fix: Eliminar padding de card-body en la tabla de registros de Obreros para apariencia unificada */
#obreros-view .card-registros .card-body {
  padding: 0 !important;
}

/* Fix: Botones completamente redondeados en Acciones rápidas de Obreros */
#obreros-view .card-quick-actions .quick-actions .btn {
  height: 36px !important;
  min-height: 36px !important;
  padding: 0 20px !important;
  font-size: 13px !important;
}

#obreros-view .card-quick-actions .quick-actions .btn-secondary {
  background: #F5F7FA !important;
  border: 1px solid #E5E7EB !important;
}

/* Eliminar sombreados de botones en acciones rápidas */
#main-menu #startScanButton.btn-primary,
#main-menu .card-quick-actions .quick-actions .btn,
#main-menu .card-quick-actions .quick-actions .btn-primary,
#main-menu .card-quick-actions .quick-actions .btn-secondary,
#obreros-view .card-quick-actions .quick-actions .btn,
#obreros-view .card-quick-actions .quick-actions .btn-primary,
#obreros-view .card-quick-actions .quick-actions .btn-secondary,
.card-quick-actions .quick-actions .btn,
.card-quick-actions .quick-actions .btn-primary,
.card-quick-actions .quick-actions .btn-secondary {
  box-shadow: none !important;
}

#main-menu .card-quick-actions .quick-actions .btn:hover,
#main-menu .card-quick-actions .quick-actions .btn-primary:hover,
#main-menu .card-quick-actions .quick-actions .btn-secondary:hover,
#main-menu .card-quick-actions .quick-actions .btn:active,
#main-menu .card-quick-actions .quick-actions .btn-primary:active,
#main-menu .card-quick-actions .quick-actions .btn-secondary:active,
#obreros-view .card-quick-actions .quick-actions .btn:hover,
#obreros-view .card-quick-actions .quick-actions .btn-primary:hover,
#obreros-view .card-quick-actions .quick-actions .btn-secondary:hover,
#obreros-view .card-quick-actions .quick-actions .btn:active,
#obreros-view .card-quick-actions .quick-actions .btn-primary:active,
#obreros-view .card-quick-actions .quick-actions .btn-secondary:active,
.card-quick-actions .quick-actions .btn:hover,
.card-quick-actions .quick-actions .btn-primary:hover,
.card-quick-actions .quick-actions .btn-secondary:hover,
.card-quick-actions .quick-actions .btn:active,
.card-quick-actions .quick-actions .btn-primary:active,
.card-quick-actions .quick-actions .btn-secondary:active,
.card-quick-actions .quick-actions .btn:focus-visible,
.card-quick-actions .quick-actions .btn-primary:focus-visible,
.card-quick-actions .quick-actions .btn-secondary:focus-visible {
  box-shadow: none !important;
}

/* === SECCIÓN HERO DE REGISTRO === */
.registro-hero {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
  margin-bottom: 24px;
}

.registro-actions {
  display: contents;
}

/* === ACTION CARDS === */
.action-card {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  gap: 16px;
  padding: 20px;
  background: var(--surface);
  border: 2px solid var(--border);
  border-radius: var(--radius);
  cursor: pointer;
  transition: all 0.2s ease;
  text-align: left;
  position: relative;
  overflow: hidden;
  min-height: 80px;
}

.action-card:hover {
  border-color: var(--brand);
  box-shadow: 0 6px 16px rgba(43, 64, 94, 0.15);
  transform: translateY(-2px);
}

.action-card:active {
  transform: translateY(0);
}

.action-card__icon {
  flex-shrink: 0;
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  font-size: 28px;
  transition: all 0.2s ease;
}

.action-card--primary {
  background: var(--brand);
  border-color: var(--brand);
}

.action-card--primary .action-card__icon {
  background: rgba(255, 255, 255, 0.15);
  color: white;
}

.action-card--primary .action-card__content h3,
.action-card--primary .action-card__content p {
  color: white !important;
}

.action-card--primary .action-card__arrow {
  color: white !important;
}

.action-card--secondary .action-card__icon {
  background: linear-gradient(135deg, #6B7280, #8B92A0);
  color: white;
}

.action-card:hover .action-card__icon {
  transform: scale(1.1);
}

.action-card__content {
  width: 100%;
}

.action-card__content h3 {
  margin: 0 0 4px 0;
  font-size: 18px;
  font-weight: 600;
  color: var(--text);
  line-height: 1.2;
}

.action-card__content p {
  margin: 0;
  font-size: 14px;
  color: var(--muted);
  line-height: 1.3;
}

.action-card--disabled {
  cursor: not-allowed;
  opacity: 0.72;
  box-shadow: none;
  transform: none;
  overflow: visible;
}

.action-card--disabled:hover {
  border-color: var(--border);
  box-shadow: none;
  transform: none;
}

.action-card__badge {
  position: absolute;
  top: -12px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 11px;
  font-weight: 600;
  color: #475569;
  background: #F8FAFC;
  border: 1px solid #CBD5E1;
  border-radius: 999px;
  padding: 2px 10px;
  letter-spacing: 0.2px;
  white-space: nowrap;
  z-index: 2;
}

/* === STATS CARD === */
.registro-stats {
  display: flex;
  flex-direction: column;
}

.stats-card {
  background: linear-gradient(135deg, #2b405e 0%, #3d5a82 100%);
  border-radius: var(--radius);
  padding: 12px;
  color: white;
  box-shadow: 0 4px 12px rgba(43, 64, 94, 0.15);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.stats-card__header {
  font-size: 11px;
  font-weight: 500;
  opacity: 0.9;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 6px;
}

.stats-card__label {
  font-size: 11px;
  font-weight: 500;
  opacity: 0.9;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.stats-card__main {
  flex: 1;
  min-width: 0;
}

.stats-card__body {
  margin-bottom: 0;
}

.stats-card__value {
  font-size: 28px;
  font-weight: 700;
  line-height: 1;
  margin-bottom: 6px;
}

.stats-card__comparison {
  display: flex;
  align-items: center;
  gap: 8px;
}

.stats-badge {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 3px 8px;
  border-radius: 5px;
  font-size: 11px;
  font-weight: 600;
}

.stats-badge--positive {
  background: rgba(16, 185, 129, 0.2);
  color: #10b981;
}

.stats-badge--negative {
  background: rgba(239, 68, 68, 0.2);
  color: #ef4444;
}

.stats-badge--neutral {
  background: rgba(255, 255, 255, 0.15);
  color: white;
}

.stats-badge__text {
  font-size: 10px;
  opacity: 0.8;
}

.stats-card__footer {
  display: flex;
  gap: 24px;
  align-items: center;
}

.stats-mini {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.stats-mini__label {
  font-size: 10px;
  opacity: 0.8;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.stats-mini__value {
  font-size: 24px;
  font-weight: 700;
  line-height: 1;
}

/* Responsive */
@media (max-width: 1024px) {
  .registro-hero {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  
  .registro-stats {
    order: -1;
  }
}

@media (max-width: 768px) {
  .registro-hero {
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }

  #main-menu .action-card {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 10px;
    gap: 8px;
    min-height: 92px;
    aspect-ratio: auto;
  }

  #main-menu .action-card__icon {
    width: 36px;
    height: 36px;
    font-size: 22px;
  }

  #main-menu .action-card__content {
    width: 100%;
  }

  #main-menu .action-card__content h3 {
    font-size: 13px;
    margin-bottom: 2px;
  }

  #main-menu .action-card__content p {
    font-size: 10px;
  }

  .stats-card {
    padding: 20px;
  }
  
  .stats-card__value {
    font-size: 40px;
  }
  
  .stats-mini__value {
    font-size: 20px;
  }
}

.card-footer {
  padding: var(--space-20) var(--space-24);
  background-color: var(--brand-50);
  border-top: 1px solid var(--border);
  display: flex;
  justify-content: flex-end;
  gap: var(--space-12);
  border-radius: 0 0 var(--radius) var(--radius);
}

/* ---
NUEVO: Modificadores de estado para tarjetas
--- */
.card-help {
  background-color: #F0FDF4; /* Verde claro de éxito */
  border-color: #A7F3D0;
}

.card-help h1, .card-help h2, .card-help h3 {
  color: #15803D; /* Verde oscuro para texto */
}

.card-help ul {
  list-style-position: inside;
  padding-left: 0;
  color: #166534;
}

.card-help ul li {
   margin-bottom: var(--space-8);
}

/* ---
Component: Buttons
--- */

.btn {
  height: var(--h-btn);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 var(--space-20);
  border-radius: var(--radius);
  font-weight: 600;
  font-size: var(--fs-body);
  line-height: 1;
  border: 1px solid transparent;
  text-decoration: none;
  cursor: pointer;
  transition: all 150ms ease;
  white-space: nowrap;
}

.btn:focus-visible, .btn:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.3);
}

.btn i {
  margin-right: var(--space-12);
  font-size: 18px;
}

.btn-primary {
  background-color: #2b405e;
  color: #FFF;
  border-color: #2b405e;
  box-shadow: 0 2px 4px rgba(36,50,79,0.25);
  transition: background-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.btn-primary:hover {
  background-color: #244058;
  border-color: #244058;
  box-shadow: 0 3px 6px rgba(36,50,79,0.30);
}
.btn-primary:active {
  background-color: #1d3548;
  border-color: #1d3548;
  box-shadow: 0 2px 4px rgba(36,50,79,0.35) inset;
}
.btn-primary:focus-visible { box-shadow: 0 0 0 3px rgba(36,50,79,0.35); }

.btn-secondary {
  background: transparent;
  color: var(--brand);
  border: 1px solid var(--border);
}

.btn-secondary:hover {
  background-color: var(--brand-50);
  border-color: #D1D5DB;
}

.btn-ghost {
  background-color: transparent;
  color: var(--muted);
  border-color: transparent;
  font-size: var(--fs-small);
}

.btn-ghost:hover {
  background-color: var(--brand-50);
  color: var(--brand);
}

.btn-icon {
  width: var(--h-btn-icon);
  height: var(--h-btn-icon);
  padding: 0;
  background: transparent;
  border: none;
  color: var(--muted);
  border-radius: 50%;
  transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
  transform: scale(1);
  box-shadow: 0 0 0 rgba(31, 58, 138, 0);
}

.btn-icon:hover {
  background-color: var(--brand-100);
  border-color: var(--brand-100);
  color: var(--brand-700);
  transform: scale(1.1);
  box-shadow: 0 4px 12px rgba(31, 58, 138, 0.12);
}

.btn-icon:active {
  transform: scale(0.95);
}

.btn-icon i {
  margin: 0;
  font-size: 20px;
  transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1);
}

.btn-icon:hover i {
  transform: scale(1.1);
}

/* Logout: hover con fondo circular explícito */
#logoutButton { 
  border-radius: 50% !important;
  transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1) !important;
  transform: scale(1);
}
#logoutButton:hover { 
  background: var(--brand-50) !important; 
  color: var(--brand-700) !important; 
  border-radius: 50% !important;
  transform: scale(1.1) !important;
  box-shadow: 0 4px 12px rgba(31, 58, 138, 0.12) !important;
}
#logoutButton:active {
  transform: scale(0.95) !important;
}

.btn-sm {
  height: 32px;
  padding: 0 var(--space-12);
  font-size: var(--fs-small);
  border-radius: var(--radius-sm);
}

.btn-lg {
  height: var(--h-btn-lg);
  padding: 0 var(--space-32);
  font-size: var(--fs-h3);
}

.btn-success {
  background-color: var(--success);
  color: white;
  border-color: var(--success);
}

.btn-success:hover {
  background-color: #15803D;
  border-color: #15803D;
  color: white;
  transform: none;
}

.btn-danger {
    background-color: var(--danger);
    color: white;
    border-color: var(--danger);
}

.btn-danger:hover {
    background-color: #d02a2a;
    border-color: #d02a2a;
    color: white;
}

/* ---
Component: Form Inputs
--- */

.form-group {
  margin-bottom: var(--space-20);
}

.form-group:last-child {
  margin-bottom: 0;
}

.form-control, .form-select {
  height: var(--h-input);
  width: 100%;
  padding: 0 var(--space-16);
  border: 1px solid var(--border);
  border-radius: 10px;
  background-color: #F7F8FA;
  font-size: var(--fs-body);
  font-weight: 500;
  color: var(--text);
  transition: all 150ms ease;
}

.form-control::placeholder {
  color: var(--placeholder);
  font-weight: 400;
}

.form-control:focus, .form-select:focus {
  outline: none;
  border-color: #E5E7EB;
  box-shadow: none;
  background-color: var(--surface);
}

textarea.form-control {
  height: auto;
  min-height: 80px;
  padding: var(--space-12) var(--space-16);
  resize: vertical;
}

/* Estilos para inputs tipo date y month */
input[type="date"].form-control,
input[type="month"].form-control {
  height: var(--h-input);
  padding: 0 var(--space-16);
  font-family: 'Inter', sans-serif;
  font-size: var(--fs-body);
  font-weight: 500;
  cursor: pointer;
}

input[type="date"].form-control-sm,
input[type="month"].form-control-sm {
  height: 36px;
  padding: 0 12px;
  font-size: 13px;
}

/* Mejorar la apariencia del calendario en navegadores WebKit (Chrome, Edge, Safari) */
input[type="date"]::-webkit-calendar-picker-indicator,
input[type="month"]::-webkit-calendar-picker-indicator {
  cursor: pointer;
  filter: opacity(0.6);
  transition: filter 0.2s ease;
}

input[type="date"]::-webkit-calendar-picker-indicator:hover,
input[type="month"]::-webkit-calendar-picker-indicator:hover {
  filter: opacity(1);
}

/* Asegurar que el input month tenga el mismo aspecto */
input[type="month"]::-webkit-datetime-edit-fields-wrapper {
  padding: 0;
}

input[type="month"]::-webkit-datetime-edit-month-field,
input[type="month"]::-webkit-datetime-edit-year-field {
  padding: 2px;
}

.form-check {
  display: flex;
  align-items: center;
  margin: var(--space-16) 0;
}

.form-check-input {
  width: 16px;
  height: 16px;
  margin-right: var(--space-12);
  accent-color: var(--brand);
}

.form-check-label {
  text-transform: none;
  letter-spacing: 0;
  font-size: var(--fs-body);
  font-weight: 500;
  color: var(--text);
  margin-bottom: 0;
}

/* ---
Component: Chips / Badges
--- */

.chip {
  display: inline-flex;
  align-items: center;
  gap: var(--space-8);
  padding: 6px var(--space-12);
  border-radius: var(--radius-pill);
  font-size: var(--fs-label);
  font-weight: 600;
  line-height: 1.4;
  min-height: 28px;
}

.chip-success { 
  background-color: #E6F7F0; 
  color: #0D925D; 
}

.chip-warn { 
  background-color: #FEF3C7; 
  color: #92400E; 
}

.chip-alert { 
  background-color: #FEE2E2; 
  color: #991B1B; 
}

.chip-neutral {
  background-color: var(--border);
  color: var(--muted);
}

/* ---
Component: Table
--- */

.table-wrapper {
  overflow-x: auto;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  overflow: hidden;
}

.table {
  width: 100%;
  border-collapse: collapse;
  background-color: var(--surface);
  margin: 0;
}

.table thead {
    position: sticky;
    top: 0;
    z-index: 10;
}

.table th {
  background: transparent;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  padding: 16px 16px; /* espacio igual arriba y abajo */
  text-align: left;
  border-bottom: 1px solid var(--border);
}

.table td {
  border: none;
  padding: 20px 16px;
  font-size: 14px;
  font-weight: 500;
  color: var(--text);
  border-bottom: 1px solid var(--border);
  background: transparent;
  vertical-align: middle;
}

.table tbody tr:last-child td {
  border-bottom: none;
}



/* Evitar que el contenedor complete parezca azul al pasar el mouse por múltiples filas */
#main-menu .table-wrapper:hover { background-color: var(--surface) !important; }

/* Table Hierarchy Styles */
/* (Eliminado bloque legacy .table-day-header – centralizado ahora en registro.css) */

.table-lote-header {
  background-color: #F8FAFC !important;
  cursor: pointer;
  transition: all 150ms ease;
}

.table-lote-header:hover {
  background-color: #F6F7FA !important;
}

.table-lote-header td {
  font-weight: 600;
  color: var(--muted);
  padding-left: var(--space-32) !important;
  font-size: var(--fs-small) !important;
}

.record-row-lote td {
  padding-left: 48px !important;
  background-color: transparent !important;
  border-left: none !important;
}
.record-row-lote:hover td { background-color: transparent !important; }

.bi-caret-right-fill, .bi-caret-down-fill {
  transition: transform 150ms ease;
  margin-right: var(--space-8);
}

.active-row {
  background-color: rgba(233, 238, 248, 0.7) !important;
}

/* ---
Component: Modal
--- */
.modal-content {
  border-radius: var(--radius);
  box-shadow: var(--shadow-md);
  border: none;
}
.modal-header {
  padding: var(--space-24);
  border-bottom: 1px solid var(--border);
}
.modal-title {
  margin: 0;
  font-size: var(--fs-h2);
}
.modal-body {
  padding: var(--space-24);
}
.modal-body p {
  font-size: var(--fs-body);
  color: var(--text);
  margin: 0;
}
.modal-body p.text-muted {
  color: var(--muted);
  font-size: var(--fs-small);
  margin-top: var(--space-4);
}
.modal-footer {
  padding: var(--space-20) var(--space-24);
  background-color: var(--brand-50);
  border-top: 1px solid var(--border);
  border-radius: 0 0 var(--radius) var(--radius);
}
.btn-close {
  opacity: 1;
  border-radius: 50%;
  background-color: var(--border);
  width: 32px;
  height: 32px;
  transition: all 150ms ease;
  filter: invert(1);
}
.btn-close:hover {
  background-color: var(--muted);
  color: white;
}
.modal-icon {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto var(--space-16);
}
.modal-icon i {
  font-size: 28px;
  color: white;
}
.modal-icon-success {
  background-color: var(--success);
}
.modal-icon-danger {
  background-color: var(--danger);
}

/* ---
Login View
--- */

.login-view {
  display: none; /* Oculto por defecto, se muestra solo si no hay sesión */
  align-items: center;
  justify-content: center;
  height: 100vh;
  width: 100%;
  padding: var(--space-20);
}

.login-card {
  width: 100%;
  max-width: 420px;
  background-color: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-md);
  padding: var(--space-32);
}

.login-logo {
  height: 110px;
}

/* ---
Page Header & Breadcrumbs
--- */

/* Header del formulario - Título principal destacado */
.page-header {
  margin-bottom: 32px;
}

.page-header h1 {
  font-size: 32px;
  font-weight: 700;
  color: #0F172A;
  margin-bottom: 8px;
  letter-spacing: -0.03em;
}

.page-subtitle {
  font-size: 16px;
  color: #64748B;
  margin: 0;
  font-weight: 400;
    white-space: nowrap;
}

.page-header-content {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 24px;
}

/* Responsive header */
@media (max-width: 768px) {
  .page-header h1 {
    font-size: 24px;
  }

  .page-subtitle {
    font-size: 14px;
  }

  .page-header-content {
    flex-direction: column;
    gap: 16px;
  }

  .page-header-actions {
    width: 100%;
  }

  .page-header-actions .btn {
    width: 100%;
  }
}

.page-header-actions {
  display: flex;
  align-items: center;
  gap: var(--space-12);
  flex-shrink: 0;
}

.breadcrumb-nav {
  margin-bottom: var(--space-24);
}

.breadcrumb {
  display: flex;
  align-items: center;
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: var(--fs-small);
}

.breadcrumb-item {
  display: flex;
  align-items: center;
}

.breadcrumb-item + .breadcrumb-item::before {
  content: "/";
  margin: 0 var(--space-8);
  color: var(--muted);
}

.breadcrumb-link {
  color: var(--brand);
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: var(--space-8);
  transition: color 150ms ease;
  cursor: pointer;
}

.breadcrumb-link:hover {
  color: var(--brand-600);
}

.breadcrumb-item.active {
  color: var(--muted);
  font-weight: 500;
}

/* ---
Dashboard View
--- */

.dashboard-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-20);
  margin-bottom: var(--space-32);
}

.stat-card {
  background-color: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: var(--space-24);
  display: flex;
  align-items: center;
  gap: var(--space-16);
  transition: all 150ms ease;
}

/* Desactivado efecto hover en tarjetas de estadística */
.stat-card:hover { box-shadow: inherit; transform:none; }

.stat-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--radius);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  flex-shrink: 0;
}

.stat-icon-primary {
  background-color: var(--brand-100);
  color: var(--brand);
}
.stat-icon-warning {
  background-color: #FEF3C7;
  color: var(--warning);
}
.stat-icon-success {
  background-color: #DCFCE7;
  color: var(--success);
}
.stat-icon-info {
  background-color: #DBEAFE;
  color: var(--info);
}

.stat-content h3 {
  font-size: var(--fs-h1);
  font-weight: var(--fw-h1);
  color: var(--text);
  margin: 0 0 var(--space-4) 0;
}

.stat-content p {
  font-size: var(--fs-small);
  color: var(--muted);
  margin: 0;
  font-weight: 500;
}

.quick-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-16);
}

.activity-list {
  /* Ajustado para mostrar ~6 items (antes 8) */
  max-height: 450px;
  overflow-y: auto;
}
/* Consistencia visual con filas de registro */
.activity-item { padding:16px 20px; }
.activity-icon { width:40px; height:40px; font-size:18px; }
.activity-title { font-size:14px; font-weight:500; margin-bottom:4px; }
.activity-subtitle { font-size:12px; font-weight:500; }
.activity-time { font-size:12px; font-weight:600; }
/* Espaciado botón 'Ver todos' en actividad reciente */
#view-all-records { display:inline-flex; align-items:center; gap:6px; }
#view-all-records i { margin:0 !important; }
.activity-item {
  display: flex;
  align-items: center;
  gap: var(--space-16);
  padding: var(--space-16) var(--space-24);
  border-bottom: 1px solid var(--border);
  transition: background-color 150ms ease;
}
.activity-item:hover {
  background-color: var(--brand-50);
}
.activity-item:last-child {
  border-bottom: none;
}
.activity-icon {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  flex-shrink: 0;
}
.activity-icon.ingreso {
  background-color: #DCFCE7;
  color: var(--success);
}
.activity-icon.egreso {
  background-color: #F3F4F6;
  color: var(--muted);
}
.activity-content {
  flex: 1;
  min-width: 0;
}
.activity-title {
  font-weight: 600;
  font-size: var(--fs-body);
  color: var(--text);
  margin: 0 0 var(--space-4) 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.activity-subtitle {
  font-size: var(--fs-small);
  color: var(--muted);
  margin: 0;
}
.activity-time {
  font-size: var(--fs-label);
  color: var(--muted);
  font-weight: 600;
  flex-shrink: 0;
}

/* ---
Search & Banners
--- */

.search-container {
  display: flex;
  align-items: center;
}

.search-input-wrapper {
  position: relative;
  width: 280px;
}

.search-input {
  border-radius: var(--radius-pill) !important;
  padding-right: 48px !important;
  background-color: var(--surface) !important;
}


/* Buscador minimalista y alineado */
.search-btn {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: none;
  color: #b0b6c3;
  border: none;
  box-shadow: none;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: color .18s;
}
.search-btn i {
  font-size: 18px;
  margin: 0;
}
.search-btn:hover, .search-btn:focus {
  background: none;
  color: var(--brand-600);
  box-shadow: none;
}

/* === ESTILOS COMPARTIDOS PARA HEADERS DE REGISTROS (Registro + Obreros) === */
/* Header wrapper - distribución horizontal */
.registros-header-inline-wrapper {
  display: flex !important;
  justify-content: flex-start !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  gap: 12px !important;
}

/* Contenedor interno de elementos */
.registros-header-inline {
  display: flex !important;
  align-items: center !important;
  gap: 16px !important;
  width: 100% !important;
  flex-wrap: nowrap !important;
}

/* Título - tamaño fijo a la IZQUIERDA */
.registros-tabs {
  flex-shrink: 0 !important;
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin-right: auto !important; /* Empuja todo lo demás a la derecha */
}

/* Wrapper del selector de páginas - empujado a la DERECHA */
.registros-header-inline #pageSizeWrapper,
.registros-header-inline #pageSizeWrapperObreros {
  flex-shrink: 0 !important;
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin-left: 0 !important; /* Sin margin-left, se posiciona después del título */
}

/* Reducir tipografía en selector de obreros */
.registros-header-inline #pageSizeWrapperObreros {
  font-size: 11px !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
}

.registros-header-inline #pageSizeWrapperObreros .form-label,
.registros-header-inline #pageSizeWrapperObreros .small,
.registros-header-inline #pageSizeWrapperObreros span {
  font-size: 11px !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
}

/* Centrar paginación en obreros - solo layout, sin forzar colores */
.records-pagination-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  margin-top: 20px;
}

.pagination-info {
  text-align: center;
}

.pagination-info .small.text-muted {
  font-size: 13px;
  font-weight: 600;
  color: #64748B;
  text-transform: uppercase;
}

.pagination-pages {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px;
}

/* Selector pequeño con estilos consistentes */
.registros-page-size-select {
  min-width: 70px !important;
  width: auto !important;
  padding: 4px 8px !important;
  font-size: 13px !important;
  border-radius: 10px !important;
  border-color: #E2E8F0 !important;
  background-color: #FFFFFF !important;
  color: #475569 !important;
}

/* Selector específico de registros generales con fondo blanco y bordes redondeados */
#main-menu .registros-header-inline #pageSizeWrapper select.form-select {
  background-color: #FFFFFF !important;
  border-radius: 12px !important;
  border-color: #E2E8F0 !important;
}

#main-menu #pageSizeSelect {
  background-color: #FFFFFF;
  border-radius: 12px;
  border-color: #E2E8F0;
}

.registros-page-size-select:focus {
  border-color: var(--brand-500) !important;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important;
}

/* Labels del selector */
.registros-header-inline label.form-label {
  margin-bottom: 0 !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  color: #64748B !important;
}

.registros-header-inline span.text-muted {
  font-size: 13px !important;
  color: #64748B !important;
}

/* Contenedor de búsqueda - pegado al selector (derecha) */
.registros-search-container {
  margin-left: 0 !important; /* Pegado al selector, sin espacio auto */
  flex-shrink: 0 !important;
}

/* Input de búsqueda con estilos consistentes */
.registros-search-container .search-input {
  border-radius: 9999px;
  padding-right: 48px;
  background-color: white !important;
  border-color: #E2E8F0;
  font-size: 14px;
  transition: all 0.2s ease;
}

.registros-search-container .search-input:focus {
  border-color: var(--brand-500);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
  background-color: white !important;
}

/* Botón de búsqueda - icono sin fondo */
.registros-search-container .search-btn {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: transparent;
  color: #b0b6c3;
  border: none;
  box-shadow: none;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: color 0.18s ease;
}

.registros-search-container .search-btn i {
  font-size: 18px;
  margin: 0;
}

.registros-search-container .search-btn:hover,
.registros-search-container .search-btn:focus {
  background: transparent;
  color: var(--brand-600);
  box-shadow: none;
}
/* === FIN ESTILOS COMPARTIDOS HEADERS === */


.search-btn:hover {
  background: none;
  color: var(--brand-600);
}

/* Registro: botón de lupa con fondo circular en hover (sin romper estilos globales) */
#searchButton { border-radius: 50% !important; }
#searchButton:hover, #searchButton:focus-visible {
  background: transparent !important;
  color: var(--brand-700) !important;
  border-radius: 50% !important;
}

.alert-banner {
  background-color: #FEF2F2;
  border-bottom: 1px solid #FECACA;
  padding: var(--space-12) var(--space-24);
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.alert-content {
  display: flex;
  align-items: center;
  gap: var(--space-12);
  color: #B91C1C;
  font-weight: 600;
  font-size: var(--fs-small);
}

.alert-content i {
  font-size: 16px;
}

/* ---
NUEVO: Estilos para estados de carga y error
--- */

.loading-placeholder {
  color: var(--muted);
  padding: var(--space-32) var(--space-24);
  text-align: center;
  font-style: italic;
  font-size: var(--fs-body);
}

.error-message {
  padding: var(--space-16) var(--space-24);
  background-color: #FEF2F2; /* Rojo claro */
  color: #B91C1C; /* Rojo oscuro */
  border-left: 4px solid var(--danger);
  margin: var(--space-16) 0;
  font-weight: 500;
}

/* ---
Time Indicators & Tooltips
--- */
.time-warning {
  position: relative;
}
.time-warning::after {
  content: '';
  position: absolute;
  top: 50%;
  right: -8px;
  transform: translateY(-50%);
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background-color: var(--warning);
}
.time-critical::after {
  background-color: var(--danger);
  animation: pulse 1s infinite;
}
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}
.time-badge {
  font-size: 10px;
  padding: 2px 6px;
  border-radius: var(--radius-pill);
  margin-left: var(--space-8);
  font-weight: 600;
}
.time-badge.warning {
  background-color: #FEF3C7;
  color: #92400E;
}
.time-badge.critical {
  background-color: #FEE2E2;
  color: #B91C1C;
}

.obs-tooltip {
  position: relative;
}
.obs-tooltip::before {
  content: attr(data-tooltip);
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%) translateY(-4px);
  background-color: var(--text);
  color: white;
  padding: var(--space-8) var(--space-12);
  border-radius: var(--radius-sm);
  font-size: var(--fs-label);
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: all 150ms ease;
  z-index: 1000;
}
.obs-tooltip:hover::before {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ---
Manual Form Layout
--- */

.manual-form .form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-20);
  margin-bottom: 16px;
}

.manual-form .form-row:last-child {
  margin-bottom: 0;
}

/* Form-row con footer inline (observaciones + botones) */
.manual-form .form-row-with-footer {
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 20px;
}

/* Footer inline a la derecha de observaciones */
.form-footer-inline {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: 0;
}

/* Ocultar footer inline cuando aparecen campos de vehículo */
#campos-personalizados-container:not([style*="display: none"]) ~ .form-footer-inline {
  display: none;
}

/* Footer bottom - aparece debajo de campos de vehículo */
.form-footer-bottom {
  grid-column: 1 / -1;
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  margin-top: 24px;
  padding-top: 24px;
  border-top: 2px solid #E5E7EB;
}

/* Form-group con label a la izquierda del input */
.manual-form .form-group {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 10px;
  align-items: center;
  margin-bottom: 0;
}

.manual-form .patente-row .form-group {
  grid-template-columns: 1fr;
  align-items: start;
}

.manual-form .patente-row .form-label {
  white-space: normal;
}

/* Excepción: Observaciones con label arriba */
.manual-form .form-group-vertical {
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: stretch;
}

.manual-form .form-group-vertical .form-label {
  width: auto;
  align-self: flex-start;
  height: auto;
  padding: 6px 12px;
}

/* Label a la izquierda con fondo azul sólido */
.manual-form .form-label {
  background: #EEF2FF;
  padding: 8px 12px;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 600;
  color: #2b405e;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  white-space: nowrap;
  margin-bottom: 0;
  text-align: center;
  height: 100%;
}

.manual-form .form-label i {
  font-size: 13px;
  color: #60A5FA;
}

/* Input ocupa el resto del ancho */
.manual-form .form-control,
.manual-form .form-select {
  padding: 10px 5px;
  background: #FFFFFF;
  border: 1.5px solid #E2E8F0;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.manual-form .form-control:focus,
.manual-form .form-select:focus {
  border-color: #E5E7EB;
  box-shadow: none;
  outline: none;
}

.form-text {
  font-size: var(--fs-label);
  color: var(--muted);
  margin-top: var(--space-8);
}

/* ---
Scan View
--- */

.scan-status {
  display: flex;
  align-items: center;
  justify-content: center;
}
.scan-indicator {
  display: flex;
  align-items: center;
  gap: var(--space-12);
}
.indicator-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: var(--success);
  animation: pulse 1.5s infinite;
}
.scan-text {
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--muted);
}
.video-container {
  position: relative;
  overflow: hidden;
  background-color: #000;
}
.scan-overlay {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}
.scan-frame {
  width: 60%;
  height: 60%;
  max-width: 60vw;
  max-height: 60vh;
  border: 3px solid rgba(255, 255, 255, 0.7);
  border-radius: var(--radius);
  position: absolute;
  top: 20%;
  left: 20%;
  right: 20%;
  bottom: 20%;
  box-shadow: 0 0 0 9999px rgba(0,0,0,0.5);
  pointer-events: none;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color 0.12s linear, box-shadow .25s ease;
}

.scan-frame.success {
  border-color: var(--success) !important;
  box-shadow: 0 0 0 9999px rgba(0,0,0,0.55), 0 0 10px 2px rgba(13,146,93,0.55) inset;
}

/* Región activa sutil donde se intenta decodificar (puede cambiar de tamaño/posición) */
.scan-active-region {
  position: absolute;
  border: 2px dashed rgba(255,255,255,0.40);
  border-radius: 3px;
  box-sizing: border-box;
  top: 0; left: 0; width: 0; height: 0;
  pointer-events: none;
  opacity: 0;
  transition: none; /* seguimiento en tiempo real sin delay */
}
.scan-active-region.visible { opacity: 1; }
.scan-active-region.progressing {
  border-color: rgba(255, 200, 80, 0.65);
  box-shadow: 0 0 6px 2px rgba(255,200,80,0.35);
}
.scan-active-region.locked {
  border-color: rgba(13,146,93,0.85);
  box-shadow: 0 0 10px 2px rgba(13,146,93,0.55);
}

/* (Eliminados controles zoom/torch) */

/* Mensaje distancia / blur */
#scan-distance-msg {
  position: absolute;
  top: 12px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(0,0,0,0.55);
  color: #fff;
  font-size: 13px;
  padding: 6px 14px;
  border-radius: 999px;
  opacity: 0;
  transition: opacity .18s ease;
  letter-spacing:.3px;
  pointer-events: none;
}
#scan-distance-msg.visible { opacity: 1; }

/* ---
Bootstrap Grid Compatibility & Utilities
--- */
.row {
  display: flex;
  flex-wrap: wrap;
  margin-right: calc(-0.5 * var(--space-16));
  margin-left: calc(-0.5 * var(--space-16));
}
.row > * {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--space-16) * .5);
  padding-left: calc(var(--space-16) * .5);
  margin-top: 0;
}
@media (min-width: 768px) {
  .col-md-6 {
    flex: 0 0 auto;
    width: 50%;
  }
}
.fw-medium, .fw-bold { font-weight: 600 !important; }
.d-grid { display: grid !important; }
.gap-3 { gap: var(--space-16) !important; }
.mt-4 { margin-top: var(--space-24) !important; }
.text-center { text-align: center !important; }
.mb-0 { margin-bottom: 0 !important; }
.mb-4 { margin-bottom: 0 !important; }
.my-3 { margin-top: var(--space-16) !important; margin-bottom: var(--space-16) !important; }
.p-0 { padding: 0 !important; }
.p-4 { padding: var(--space-24) !important; }
.mt-3 { margin-top: var(--space-16) !important; }
.opacity-50 { opacity: .5 !important; }
.mobile-action-bar .opacity-50 { opacity: .35 !important; pointer-events: none !important; }

/* Forzar ocultar items deshabilitados en cualquier ancho cuando se active modo móvil via clase */
html.is-mobile .sidebar-nav .nav-item.nav-item-disabled { display:none !important; }
.d-none { display: none !important; }

/* ---
Mobile Action Bar
--- */

.mobile-action-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background-color: var(--surface);
  border-top: 1px solid var(--border);
  padding: var(--space-8) var(--space-12);
  display: flex;
  justify-content: space-around;
  z-index: 1000;
  box-shadow: 0 -2px 10px rgba(0,0,0,0.1);
  padding-bottom: calc(var(--space-8) + env(safe-area-inset-bottom));
}

.mobile-action-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-6);
  background: none;
  border: none;
  color: var(--muted);
  font-size: var(--fs-label);
  font-weight: 600;
  cursor: pointer;
  transition: all 150ms ease;
  border-radius: var(--radius-sm);
  min-width: 60px;
}

.mobile-action-btn:hover,
.mobile-action-btn.active {
  color: var(--brand);
  background-color: var(--brand-50);
}

.mobile-action-btn i {
  font-size: 18px;
}

.mobile-action-btn span {
  font-size: 9px;
  line-height: 1;
}

/* ---
Responsive Design System
--- */
@media (max-width: 992px) {
  .manual-form .form-row {
    grid-template-columns: 1fr;
    gap: var(--space-16);
  }
   .dashboard-stats {
    grid-template-columns: repeat(2, 1fr);
  }
}
  /* Escala tipografía global ligeramente menor */
  body { font-size: 15px; }
  h1.topbar-title, .topbar-title { font-size: 12px !important; }
  .card { margin-bottom: var(--space-16) !important; }
  .card-body { padding: 18px 18px !important; }
  .card-header { padding: 14px 18px !important; }
  .stat-card { padding: 16px 16px !important; }
  .stat-card .stat-icon { width:38px; height:38px; font-size:18px; }
  .stat-card h3 { font-size:18px !important; }
  /* Más aire entre bloques principales */
  .dashboard-stats { gap: var(--space-12) !important; margin-bottom: var(--space-16) !important; }
  .quick-actions { gap: var(--space-12) !important; }
  /* Inputs y botones un poco más compactos */
  .form-control, .form-select { min-height:40px !important; padding:0 12px !important; font-size:14px !important; }
  .btn { min-height:40px !important; padding:10px 18px !important; font-size:14px !important; }
  .btn-icon { width:38px !important; height:38px !important; }
  /* Lista móvil registros: más separación entre filas */
  .mobile-table-row { margin-bottom: 14px; }
  .mobile-row-header { padding: 12px 14px; }
  .mobile-lote { font-size:11px; }
  /* Reducir grid interior para disminuir altura total al expandir */
  .mobile-detail-grid { grid-template-columns: 1fr; gap:10px; margin-bottom:12px; }
  .mobile-detail-label { font-size:10px; }
  .mobile-detail-value { font-size:12px; }
  /* Paneles flotantes (notificaciones/export) ligeramente más angostos en móvil */
  .overstay-panel { max-width:420px; }

@media (max-width: 768px) {
  /* Global Adjustments */
  :root { --mobile-nav-height: 66px; }
  .app-shell { flex-direction: column; }
  .content-area {
    padding: var(--space-16);
    /* Dejamos espacio para la nueva barra inferior de navegación */
    padding-bottom: calc(var(--mobile-nav-height) + var(--space-24) + env(safe-area-inset-bottom));
  }

  /* Sidebar ahora funciona como barra de navegación inferior fija */
  .sidebar {
    position: fixed;
    bottom: 0; left: 0; right: 0;
    width: 100%;
    height: var(--mobile-nav-height);
    flex-direction: row;
    align-items: stretch;
    justify-content: space-around;
    overflow-x: auto;
    border-right: none;
    border-bottom: none;
    border-top: 1px solid var(--border);
    padding: 0 var(--space-12);
    background: var(--surface);
    z-index: 1200;
    box-shadow: 0 -2px 6px rgba(0,0,0,0.05);
  }
  .sidebar-header { display: none; }
  .sidebar-nav {
    display: flex;
    flex-direction: row;
    gap: var(--space-4);
    width: 100%;
  /* Tras ocultar items deshabilitados, distribuimos equitativamente los activos */
  justify-content: space-evenly;
  }
  .nav-item {
    flex: 1 1 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 4px 4px 2px;
    margin-bottom: 0;
    font-size: 11px;
    border-radius: 10px;
    min-height: unset;
  }
  /* Ocultar entradas deshabilitadas (las de baja opacidad) en la barra inferior móvil */
  .sidebar-nav .nav-item.nav-item-disabled { display: none !important; }
  .nav-item i {
    margin: 0;
    font-size: 18px;
    line-height: 1;
  }
  /* Compactar texto secundario en items deshabilitados */
  .nav-item .nav-text-main { font-size: 11px; }
  .nav-item .nav-text-sub { display: none; }
  .nav-item .nav-text-main-full { display: none; }
  .nav-item .nav-text-main-short { display: inline; }

  /* Ocultar antigua barra de acciones móvil para no duplicar elementos */
  /* La barra inferior específica (.mobile-action-bar) vuelve a estar activa sólo cuando la necesitamos.
    Si se prefiere usar únicamente la barra convertida desde .sidebar, dejar comentado. */
  /* .mobile-action-bar { display: none !important; } */

  /* Topbar */
  .topbar {
    padding: 0 var(--space-16);
    height: 60px;
    position: sticky;
    top: 0;
    z-index: 1200; /* por encima de contenido pero debajo de overlays */
    background: var(--surface);
    backdrop-filter: blur(6px);
  }
  /* Asegurar scroll interno sin cortar y dejar espacio inicial si hay superposición */
  .content-area {
    padding-top: calc(60px + var(--space-16));
  }
  .topbar-left {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-4);
  }
  .topbar-title {
    font-size: var(--fs-h3);
  }
  
  /* Page Headers */
  .page-header-content {
    flex-direction: column;
    align-items: stretch;
    gap: var(--space-16);
  }
  /* Mostrar contenedor de acciones en móvil solo para el botón icono */
  .page-header { position:relative; }
  .page-header-actions {
    display:flex;
    justify-content:flex-end;
    align-items:flex-start;
    width:100%;
    min-height:0;
    padding:0;
  }
  /* Ajustar spacing del título al dejar botón flotante */
  .page-header-content > div:first-child { padding-right:56px; position:relative; }

  /* Cards */
  .card-header {
    flex-direction: column;
    gap: var(--space-16);
    align-items: stretch;
  }
  
  /* Quick Actions */
  .quick-actions {
    grid-template-columns: 1fr;
    gap: var(--space-12);
  }

  /* Search */
  .search-input-wrapper {
    width: 100%;
  }

  /* Dashboard */
  .dashboard-stats {
    grid-template-columns: 1fr;
    gap: var(--space-12);
  }
  .stat-card {
    padding: var(--space-16);
  }
  .stat-icon {
    width: 40px;
    height: 40px;
    font-size: 20px;
  }
  .stat-content h3 {
    font-size: var(--fs-h2);
  }
  .activity-item {
    padding: var(--space-12) var(--space-16);
    gap: var(--space-12);
  }
  .activity-icon {
    width: 28px;
    height: 28px;
    font-size: 12px;
  }

  /* Mobile Table */
  .table-wrapper {
    display: none;
  }
  .table-mobile-wrapper {
    display: block;
    padding: 0 0 var(--space-20) 0;
  }
  .mobile-table-row {
    background-color: var(--surface);
    border: 1px solid var(--border);
    border-radius: 0;
    margin-bottom: var(--space-24);
    overflow: visible;
    position: relative;
    padding-top: var(--space-8);
  }
  /* Solo la última tarjeta tiene border-radius */
  .mobile-table-row:last-child {
    border-radius: var(--radius);
  }
  
  /* OBREROS: tarjetas sin border-radius */
  #obreros-view .mobile-table-row,
  #obreros-view .mobile-table-row:last-child {
    border-radius: 0 !important;
  }
  
  /* Labels flotantes que cortan el borde */
  .mobile-border-label {
    position: absolute;
    top: -15px;
    padding: 2px var(--space-8);
    display: flex;
    align-items: center;
    gap: var(--space-4);
    z-index: 1;
  }
  
  .mobile-border-label-left {
    left: var(--space-12);
    background: var(--brand-50);
    border-radius: 4px;
  }
  
  .mobile-border-label-right {
    right: var(--space-12);
  }
  
  .mobile-label-text {
    font-size: 9px;
    font-weight: 700;
    color: var(--brand);
    text-transform: uppercase;
    letter-spacing: 0.8px;
    line-height: 1;
  }
  
  .mobile-label-value {
    font-size: 13px;
    font-weight: 700;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    color: var(--text);
    line-height: 1;
  }
  
  /* Forzar bold en obreros específicamente */
  #obreros-view .mobile-label-value,
  #mobileResultsObrerosRegistrados .mobile-label-value {
    font-weight: 700;
  }
  
  .mobile-row-header {
    padding: var(--space-8) var(--space-16) var(--space-12);
    display: flex;
    align-items: center;
    gap: var(--space-12);
    position: relative;
    cursor: pointer;
    transition: background-color 150ms ease;
  }
  .mobile-row-header:hover {
    background-color: transparent;
  }
  
  /* Contenedor del contenido */
  .mobile-content-wrapper {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    flex: 1;
    min-width: 0;
  }
  
  /* Columna derecha con estado y flecha */
  .mobile-right-column {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-4);
    flex-shrink: 0;
    align-self: flex-start;
    padding-top: var(--space-4);
  }
  
  .mobile-nombre-line {
    font-size: 15px;
    font-weight: 600;
    color: var(--text);
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  
  .mobile-meta-line {
    font-size: 13px;
    color: var(--muted);
    line-height: 1.2;
  }
  
  .mobile-motivo {
    color: var(--text);
    font-weight: 500;
  }
  
  .mobile-separator {
    opacity: 0.6;
  }
  
  /* Ícono de expansión */
  .mobile-expand-icon {
    color: var(--muted);
    transition: transform 150ms ease;
    font-size: 16px;
    flex-shrink: 0;
  }
  .mobile-expand-icon.expanded {
    transform: rotate(180deg);
  }
  
  /* Estilo "floating label" para DNI */
  .mobile-floating-label {
    font-size: 11px;
    font-weight: 500;
    color: var(--brand);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: -4px;
  }
  
  .mobile-floating-value {
    font-size: 13px;
    font-weight: 600;
    color: var(--text);
    margin-bottom: var(--space-4);
  }
  
  /* Contenedor del contenido principal */
  .mobile-content-wrapper {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    flex: 1;
  }
  
  .mobile-content-line {
    display: flex;
    align-items: center;
    gap: var(--space-8);
    flex-wrap: wrap;
  }
  
  .mobile-line-primary {
    justify-content: space-between;
  }
  
  .mobile-nombre-text {
    font-size: 15px;
    font-weight: 600;
    color: var(--text);
    flex: 1;
    min-width: 0;
  }
  
  .chip-mini {
    font-size: 11px !important;
    padding: 3px 8px !important;
    height: auto !important;
    line-height: 1.2 !important;
    flex-shrink: 0;
  }
  
  .mobile-line-secondary {
    gap: var(--space-6);
  }
  
  .mobile-meta-text {
    font-size: 13px;
    color: var(--muted);
  }
  
  .mobile-meta-motivo {
    color: var(--text);
    font-weight: 500;
  }
  
  .mobile-meta-separator {
    color: var(--muted);
    opacity: 0.5;
  }
  
  /* Mantener estilos legacy para compatibilidad */
  .mobile-row-main {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    flex: 1;
    gap: var(--space-12);
  }
  .mobile-row-primary {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    flex: 1;
    min-width: 0;
  }
  .mobile-row-secondary {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    align-items: flex-end;
    flex-shrink: 0;
  }
  .mobile-nombre {
    font-weight: 600;
    font-size: var(--fs-body);
    color: var(--text);
    line-height: 1.4;
  }
  .mobile-motivo {
    font-size: var(--fs-small);
    color: var(--text);
    font-weight: 500;
    text-align: right;
  }
  .mobile-status-lote-group {
    display: flex;
    align-items: center;
    gap: var(--space-8);
    flex-wrap: wrap;
    justify-content: flex-end;
  }
  .mobile-lote-inline {
    font-size: var(--fs-small);
    color: var(--muted);
    white-space: nowrap;
  }
  .mobile-lote {
    font-size: var(--fs-small);
    color: var(--muted);
  }
  .mobile-status {
    display: flex;
    align-items: center;
    gap: var(--space-12);
    margin-right: var(--space-8);
    flex-shrink: 1;
    min-width: 0;
    max-width: 140px;
  }
  .mobile-status .chip {
    white-space: normal !important;
    height: auto !important;
    line-height: 1.3 !important;
    padding: 4px 8px !important;
    font-size: 11px !important;
    max-width: 100%;
  }
  .mobile-expand-icon {
    color: var(--muted);
    transition: transform 150ms ease;
  }
  .mobile-expand-icon.expanded {
    transform: rotate(180deg);
  }
  .mobile-row-details {
  padding: 12px;
  border-top: 1px solid var(--border);
  background-color: #E8EBF0;
  display: none;
  /* Sin max-height ni scroll interno */
  overflow: visible;
  transition: opacity .18s ease; /* transición ligera */
  border-bottom-left-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
  }
  /* Prevención de desbordes horizontales en detalles */
  .mobile-row-details, .mobile-detail-grid, .mobile-detail-item { max-width:100%; }
  .mobile-detail-item { flex-wrap: wrap; }
  .mobile-detail-label, .mobile-detail-value { max-width:100%; }
  .mobile-detail-value { white-space:normal; text-overflow:clip; }
  .mobile-row-actions { flex-wrap:wrap; }
  /* Botones con tamaño natural, no estirados */
  .mobile-row-actions .btn, .mobile-row-actions .btn-icon { flex:0 0 auto; }
  /* Botón egreso circular no estirado */
  .mobile-row-actions .btn-egreso { 
    flex:0 0 auto !important;
    width:44px !important; height:44px !important; min-width:44px !important; min-height:44px !important;
    border-radius:50% !important; padding:0 !important; 
    display:flex !important; align-items:center; justify-content:center;
  }

  /* Estilo verde puro para botón de egreso (tabla y móvil) */
  .btn.btn-egreso {
    background-color: #00C853 !important; /* verde intenso */
    border: none !important;
    color: #ffffff !important;
    box-shadow: none !important;
  }
  .btn.btn-egreso .bi { color: #ffffff !important; }
  .btn.btn-egreso:hover {
    background-color: #00B14A !important;
    border: none !important;
  }
  .btn.btn-egreso:active {
    background-color: #00A043 !important;
    border: none !important;
  }
  /* Disabled/mutado */
  .btn.btn-egreso.btn-egreso-disabled,
  .btn.btn-egreso:disabled,
  .btn.btn-egreso[aria-disabled="true"] {
  background-color: #E2E8F0 !important; /* gris neutro */
  border: none !important;
  color: #475569 !important; /* slate-600 */
  }

  /* Overrides específicos para botón de egreso en el cuadro de registro (desktop) */
  #main-menu #scanResults .btn-egreso,
  #main-menu .table .btn-egreso {
    background: #00C853 !important;
    border: none !important;
    color: #FFFFFF !important;
    box-shadow: none !important;
  }
  #main-menu #scanResults .btn-egreso .bi,
  #main-menu .table .btn-egreso .bi { color:#FFFFFF !important; }
  #main-menu #scanResults .btn-egreso:hover,
  #main-menu .table .btn-egreso:hover {
    background: #00B14A !important;
    border: none !important;
    color: #FFFFFF !important;
  }
  #main-menu #scanResults .btn-egreso:active,
  #main-menu .table .btn-egreso:active {
    background: #00A043 !important;
    border: none !important;
    color: #FFFFFF !important;
  }
  /* Aún deshabilitado debe verse claramente diferente */
  #main-menu #scanResults .btn-egreso.btn-egreso-disabled,
  #main-menu #scanResults .btn-egreso[aria-disabled="true"],
  #main-menu .table .btn-egreso.btn-egreso-disabled,
  #main-menu .table .btn-egreso[aria-disabled="true"] {
  background: #E2E8F0 !important; /* gris neutro */
  border: none !important;
  color: #475569 !important;
  }
  .mobile-row-details.show {
  display: block;
  opacity: 1;
  animation: slideDown 160ms ease;
  }
  .mobile-detail-grid {
    display: grid;
    grid-template-columns: 1fr; /* una columna: cada item ocupa todo el ancho */
    gap: 8px;
    margin-bottom: 12px;
  }
  .mobile-detail-item {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
    padding: 12px;
    background-color: white;
    border-radius: 8px;
    border: none;
    min-height: 44px;
  }
  .mobile-detail-item:last-child { border-bottom:none; }
  .mobile-detail-label {
    flex: 0 0 54%;
    font-size: 9px;
    font-weight: 600;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: .45px;
    line-height:1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .mobile-detail-value {
    flex:1;
    text-align: right;
    font-size: 12px;
    color: var(--text);
    font-weight: 600;
    line-height:1.25;
    overflow-wrap: break-word;
    word-wrap: break-word;
    word-break: break-word;
    white-space: normal;
  }
  .mobile-row-actions {
    display: flex;
    gap: 12px;
    justify-content: center;
    padding-top: 12px;
    border-top: none;
  }

  /* Improved Touch Targets */
  .btn {
    min-height: 44px;
  }
  .btn-icon {
    min-width: 44px;
    min-height: 44px;
  }
  .form-control, .form-select {
    min-height: 44px;
  }
  .nav-item {
    min-height: 44px;
  }
}

/* =============================================================
   Fallback adicional: Forzar barra inferior en móviles/tablets
   usando clase de contexto (.is-mobile) para cubrir casos donde
   el ancho lógico supera 768px (por ejemplo dispositivos 800-912px)
   o caching impide aplicar la media query original.
   ============================================================= */
html.is-mobile .content-area {
  padding-bottom: calc(var(--mobile-nav-height, 66px) + 32px + env(safe-area-inset-bottom));
}
html.is-mobile .sidebar {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  width: 100%;
  height: var(--mobile-nav-height, 66px);
  flex-direction: row;
  align-items: stretch;
  justify-content: space-around;
  border-top: 1px solid var(--border);
  border-right: none;
  border-bottom: none;
  padding: 8px 12px;
  background: var(--surface);
  z-index: 1300;
  box-shadow: 0 -2px 6px rgba(0,0,0,0.05);
}
html.is-mobile .sidebar-header { display: none; }
html.is-mobile .sidebar-nav { display:flex; flex:1; gap:4px; justify-content:space-between; }
html.is-mobile .nav-item {
  flex:1 1 0;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:4px; padding:4px 4px 2px; margin-bottom:0;
  font-size:11px; border-radius:10px; min-height:unset;
}
html.is-mobile .nav-item i { margin:0; font-size:18px; line-height:1; }
html.is-mobile .nav-item .nav-text-main { font-size:11px; }
html.is-mobile .nav-item .nav-text-sub { display:none; }
html.is-mobile .nav-item .nav-text-main-full { display:none; }
html.is-mobile .nav-item .nav-text-main-short { display:inline; }

/* Badge en modo mobile - esquina superior derecha del bloquito */
html.is-mobile .nav-badge {
  top: 3px;
  right: 3px;
  transform: none;
  font-size: 9px;
  padding: 1px 5px;
  min-width: 16px;
  border-radius: 8px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}

html.is-mobile .nav-item:hover .nav-badge {
  transform: scale(1.05);
}

/* Se elimina el ocultamiento forzado para permitir mostrar sólo los botones funcionales */
/* html.is-mobile .mobile-action-bar { display:none !important; } */

/* Ajustes de distribución cuando la barra esté visible (por ejemplo en vistas que requieran acciones rápidas) */
html.is-mobile .mobile-action-bar {
  display: flex !important;
  justify-content: space-evenly;
}

/* Prioridad: asegurar que nada sobreescriba el posicionamiento */
@media (max-width: 1024px) {
  html.is-mobile .sidebar { position:fixed; }
}

@keyframes slideDown {
  from {
    opacity: 0;
    max-height: 0;
    padding-top: 0;
    padding-bottom: 0;
  }
  to {
    opacity: 1;
    max-height: 500px;
    padding-top: var(--space-16);
    padding-bottom: var(--space-16);
  }
}

/* Registro: wrapper tabla (unificado)
   - Se elimina border-top y radio específico para no romper estilo "REGISTRO MINIMALISTA Y SUTIL"
   - Se mantiene sólo overflow para recortar contenido dentro del borde uniforme (1.5px #e0e6f2 / 18px) */
#main-menu .card .table-wrapper {
  overflow: hidden;
}

/* Limpieza registro: se eliminan overrides previos para unificar borde/sombra con estilo minimalista */

/* Fallback mínimo sin :has(): asegurar fondo transparente interno */
#main-menu .card .card-body.p-0 {
  background: transparent;
}

/* =============================================================
   OVERRIDES: Fondo más oscuro y azul de acento menos saturado
   (No se modifica HTML ni JS)
   ============================================================= */
:root {
  /* Azul oscuro unificado */
  --brand: #2b405e;        /* Base */
  --brand-600: #193075;    /* Hover */
  --brand-700: #14265E;    /* Active */
  --brand-100: #D9E2F6;    /* Tint activo */
  --brand-50:  #ECF1FA;    /* Fondo suave */
}

/* Fondo general ligeramente más oscuro para resaltar tarjetas */
body { background: #EBEEF2; }

/* Panel principal (derecha) ahora fondo claro uniforme para mayor homogeneidad */
.content-area {
  /* Fondo anterior (gradiente) eliminado para aclarar: linear-gradient(180deg,#ECEFF3,#E6E9EE) */
  background: var(--bg);
  background-attachment: local;
}

/* Tarjetas: asegurar contraste limpio */
.card, .stat-card, .login-card, .table-wrapper, .mobile-table-row {
  background:#FFFFFF;
  box-shadow: 0 3px 10px rgba(20,30,50,0.06), 0 1px 2px rgba(20,30,50,0.08);
}

/* Navegación activa/hover adaptada al nuevo azul */
.nav-item:hover { background: var(--brand-50); color: var(--brand-700); }
.nav-item.active { background: var(--brand-100); color: var(--brand-700); }

/* Botón primario menos saturado */
.btn-primary {
  background: var(--brand);
  border-color: var(--brand);
  box-shadow: 0 2px 4px rgba(31,58,138,0.28);
}
.btn-primary, .btn-primary i { color:#FFF; }
.btn-primary:hover { background: var(--brand-600); border-color: var(--brand-600); box-shadow: 0 3px 8px rgba(25,48,117,0.34); }
.btn-primary:active { background: var(--brand-700); border-color: var(--brand-700); box-shadow: 0 2px 4px rgba(20,38,94,0.38) inset; }

/* Forzar azul oscuro consistente en botones clave (IDs específicos) */
/* Ajustes: se mantiene override del quick nuevo registro ya aplicado más arriba y ahora se unifica Escanear DNI */
#paqueteria-view .filter-buttons .filter-btn.active {
  background:#425273 !important; /* se conserva color anterior sólo para filtros activos paquetería */
  border-color:#425273 !important;
  color:#FFF !important;
  box-shadow:0 2px 4px rgba(0,0,0,0.25) !important;
}
#paqueteria-view .filter-buttons .filter-btn.active:hover { background:#3A495F !important; border-color:#3A495F !important; }
#paqueteria-view .filter-buttons .filter-btn.active:active { background:#324052 !important; border-color:#324052 !important; }

/* Escanear DNI: aplicar color del navbar */
#startScanButton.btn-primary {
  background:#2b405e !important;
  border-color:#2b405e !important;
  color:#FFFFFF !important;
}
#startScanButton.btn-primary:hover { background:#244058 !important; border-color:#244058 !important; }
#startScanButton.btn-primary:active { background:#1d3548 !important; border-color:#1d3548 !important; box-shadow:0 2px 4px rgba(29,53,72,0.45) inset !important; }
#startScanButton.btn-primary:focus-visible { outline:0; box-shadow:0 0 0 3px rgba(43,64,94,0.35) !important; }
.btn-primary:hover { background: var(--brand-600); border-color: var(--brand-600); box-shadow: 0 3px 8px rgba(36,64,88,0.34); }
.btn-primary:active { background: var(--brand-700); border-color: var(--brand-700); box-shadow: 0 2px 4px rgba(29,53,72,0.38) inset; }

/* Estado deshabilitado específico Escanear (desktop + mobile) */
#startScanButton[disabled],
#startScanButton:disabled {
  opacity: .45 !important;
  cursor: not-allowed !important;
  filter: saturate(.6);
  box-shadow: none !important;
}
#startScanButton[disabled]:hover,
#startScanButton:disabled:hover,
#startScanButton[disabled]:active,
#startScanButton:disabled:active { background:#2b405e !important; border-color:#2b405e !important; }

/* Mobile scan button estado disabled */
#mobile-scan[disabled],
#mobile-scan:disabled {
  opacity:.4 !important;
  cursor:not-allowed !important;
  filter:grayscale(.35) brightness(.9);
}
#mobile-scan[disabled] i,
#mobile-scan:disabled i { opacity:.85; }
#mobile-scan[disabled]:hover,
#mobile-scan:disabled:hover { background:none; color:var(--muted); }

/* Botón secundario: borde neutro, texto azul sobrio */
.btn-secondary { color: var(--brand-700); border-color: #D0D5DD; }
.btn-secondary:hover { background: var(--brand-50); }

/* Icon buttons más discretos */
.btn-icon { color: var(--muted); }
.btn-icon:hover { background: var(--brand-50); color: var(--brand-700); }

/* Chips estado con nuevo esquema mantiene contraste */
.chip-success { background:#E3F6EE; color:#0A7147; }

/* (Eliminado override tint .table-day-header – usar tokens en registro.css) */

/* Hover filas tabla acorde al nuevo fondo */


/* Inputs: sin contorno focal */
.form-control:focus, .form-select:focus { box-shadow: none; border-color: #E5E7EB; }

/* Breadcrumb y links en azul atenuado */
.breadcrumb-link { color: var(--brand); }
.breadcrumb-link:hover { color: var(--brand-600); }

/* Barra usuario (chip) - mismo azul que los indicadores del formulario */
.user-info { background: #EEF2FF; color: #2b405e; }
.user-info i { color: #2b405e; }

/* Ajuste de foco accesible */
.btn:focus-visible, .nav-item:focus-visible, .form-control:focus-visible { box-shadow: none; outline: none; }

/* =============================================================
   FIX: Espaciado inferior excesivo en panel de edición (móvil)
   - Aplica sólo en contexto móvil (html.is-mobile) o anchos <= 900px
   - No afecta escritorio ni otros paneles reutilizados
   ============================================================= */
html.is-mobile #editPanel .panel-body {
  padding-bottom: 8px !important;   /* antes ~22px por reglas generales */
}
html.is-mobile #editPanel .panel-body > :last-child {
  margin-bottom: 0 !important;
}
html.is-mobile #editPanel .d-grid {
  margin-bottom: 0 !important;       /* evita dejar un gap debajo de los botones */
}
html.is-mobile #editPanel #edit-mobile-status {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
html.is-mobile #editPanel #edit-mobile-status:empty { display: none !important; }

@media (max-width: 900px) {
  /* Cobertura adicional para tablets que disparan vista móvil sin clase aún */
  #editPanel { max-height: 82vh !important; }
  #editPanel .panel-body { padding-bottom: 8px !important; }
  #editPanel .panel-body > :last-child { margin-bottom: 0 !important; }
  #editPanel .d-grid { margin-bottom: 0 !important; }
  #editPanel #edit-mobile-status { margin-top: 0 !important; margin-bottom: 0 !important; }
  #editPanel #edit-mobile-status:empty { display: none !important; }
}

/* Fin overrides */

/* =============================================================
   EXTRA OVERRIDES: Fondo aún más oscuro + tarjetas glass pastel
   ============================================================= */
/* Revertimos el oscurecimiento global para volver a la paleta clara base */
body { background: var(--bg); }
/* Aseguramos nuevamente el fondo claro uniforme (anula posibles overrides previos) */
.content-area { background: var(--bg); }






/* =============================================================
   GLOBAL ROUNDING ENHANCEMENT + PILL ACTION BUTTONS
   ============================================================= */
:root {
  /* Unificación final de radios */
  --radius: 12px;
  --radius-sm: 8px;
  --block-radius: var(--radius);
}

/* Bloques principales con mayor curvatura */
.card, .login-card, .table-wrapper, .mobile-table-row, .modal-content, .activity-item, .breadcrumb,
.search-input, .form-control, .form-select, textarea.form-control {
  border-radius: var(--block-radius) !important;
}
/* Cabeceras de día y lote interior planas dentro de la tabla */
.table-day-header td, .table-lote-header td { border-radius: 0 !important; }

/* Footer/header de tarjetas coherentes */
/* Cabecera y footer: se mantienen para cortar y cerrar la card */
.card-header { border-top-left-radius: var(--radius) !important; border-top-right-radius: var(--radius) !important; }
.card-footer { border-bottom-left-radius: var(--radius) !important; border-bottom-right-radius: var(--radius) !important; }

/* Cards sin footer: asegurar que el último .card-body cierra con radios */
.card:not(:has(>.card-footer)) > .card-body:last-child {
  border-bottom-left-radius: var(--block-radius) !important;
  border-bottom-right-radius: var(--block-radius) !important;
}

/* Botones de acción totalmente redondeados (pill) */
/* Botones: mismo radio que bloques (eliminar pill global) */
.btn, .btn-primary, .btn-secondary, .btn-success, .btn-danger, .btn-ghost { border-radius: var(--radius) !important; }
.btn-icon { border-radius: var(--radius) !important; }

/* Ajuste de padding para mantener proporción visual al cambiar radio */
.btn { padding: 12px 28px !important; height: auto !important; min-height: 44px; }
.btn-sm { padding: 8px 18px !important; }
.btn-icon { width: 44px; height: 44px; }

/* Chips ya son pill: reforzar coherencia */
.chip { border-radius: 9999px !important; }

/* Campos de búsqueda pill más marcados */
.search-input { border-radius: 9999px !important; }

/* Asegurar que las tarjetas estadísticas (ya pill) mantienen bordes homogéneos */
/* Tarjetas estadísticas coherentes */
.stat-card, .stat-card::before { border-radius: var(--radius) !important; }

/* Fin global rounding enhancement */

/* =============================================================
   REGISTRO: Remover bordes redondos internos
   (Solo dentro de #main-menu para que el interior sea recto)
   ============================================================= */
#main-menu .table-wrapper { border-radius: var(--block-radius) !important; }
#main-menu .table { border-radius: var(--block-radius) !important; overflow: hidden; }
#main-menu .table thead th:first-child { border-top-left-radius: var(--block-radius) !important; }
#main-menu .table thead th:last-child { border-top-right-radius: var(--block-radius) !important; }
#main-menu .table tbody tr:last-child td:first-child { border-bottom-left-radius: var(--block-radius) !important; }
#main-menu .table tbody tr:last-child td:last-child { border-bottom-right-radius: var(--block-radius) !important; }
#main-menu .table-day-header td, #main-menu .table-lote-header td { border-radius: 0 !important; }
#main-menu .mobile-table-row { border-radius: var(--block-radius) !important; }
#main-menu .mobile-row-details { border-bottom-left-radius: var(--block-radius) !important; border-bottom-right-radius: var(--block-radius) !important; }

/* Evitar doble redondeo en combinación con tarjetas estadísticas si se muestran en registro */
#main-menu .stat-card { border-radius: var(--radius) !important; }

/* Excepción: el buscador dentro del registro debe ser redondeado tipo pill */
#main-menu .search-input { border-radius: 9999px !important; }

/* Fin registro sin bordes internos redondeados */

/* =============================================================
   REGISTRO COMPACTO & ALINEACIÓN VERTICAL (solo datos)
   - Celdas de datos más bajas y tipografía un poco menor
   - Encabezados de día y lote conservan tamaño original
   - Separadores sutiles entre columnas para mayor legibilidad
   - Sin modificar estructura HTML ni JS
   ============================================================= */
#main-menu .table tbody tr:not(.table-day-header):not(.table-lote-header) td {
  padding: 10px 12px !important;          /* Reduce altura */
  font-size: 13px !important;             /* Más compacto (no afecta días) */
  line-height: 1.35 !important;
  vertical-align: middle !important;      /* Asegura centrado vertical */
}

/* Refuerzo de centrado si hay contenedores internos con flex/inline */
#main-menu .table tbody tr:not(.table-day-header):not(.table-lote-header) td > * {
  vertical-align: middle;
}

/* Ajuste específico para filas de registros dentro de lotes (ya con padding adicional) */
#main-menu .table tbody tr.record-row-lote td {
  padding-left: 44px !important; /* Mantener indent pero proporcional al nuevo padding */
}

/* Separadores verticales sutiles entre columnas de los datos (no en headers) */
#main-menu .table tbody tr:not(.table-day-header):not(.table-lote-header) td + td {
  position: relative;
}
#main-menu .table tbody tr:not(.table-day-header):not(.table-lote-header) td + td::before {
  content: "";
  position: absolute;
  left: 0;
  top: 22%;
  bottom: 22%;
  width: 1px;
  background: var(--border);
  opacity: 0.9;
}

/* Hover fila: mantener efecto suave pero sin alterar separadores */
#main-menu .table tbody tr:hover td::before { background: var(--border); }

/* Encabezados de día (mantener) – asegurar que NO se reduzcan */
#main-menu .table-day-header td { font-size: var(--fs-body) !important; padding: 16px 16px !important; }

/* Encabezados de lote también mantienen legibilidad */
#main-menu .table-lote-header td { font-size: 12px !important; }

/* Ajustar chips y botones dentro de filas compactas para armonía */
#main-menu .table tbody tr:not(.table-day-header):not(.table-lote-header) .chip {
  padding: 4px 10px;
  font-size: 11px;
  line-height: 1.1;
}
#main-menu .table tbody tr:not(.table-day-header):not(.table-lote-header) .btn-icon {
  width: 36px;
  height: 36px;
  min-width: 36px;
  min-height: 36px;
  font-size: 16px;
}

/* Asegurar que iconos de expansión / caret queden centrados visualmente */
#main-menu .table tbody tr .bi-caret-right-fill,
#main-menu .table tbody tr .bi-caret-down-fill { margin-right: 6px; }

/* Espaciado uniforme final inferior de tabla para que no se vea tan alta la última fila */
#main-menu .table tbody tr:last-child td { border-bottom: none; }

/* Fin registro compacto */

/* (Eliminado bloque 'OVERRIDE FINAL COLOR ENCABEZADOS DÍA REGISTRO') */

/* =============================================================
   REGISTRO: Restaurar bordes inferiores redondeados del bloque
   (Table wrapper dentro de la card de "Registros")
   ============================================================= */
#main-menu .table-wrapper {
  border-radius: var(--radius) !important;
  overflow: hidden;
}
/* Fin restauración bordes inferiores */

/* =============================================================
  REGISTRO NO DESPLEGABLE (vista expandida minimalista)
  ============================================================= */
#main-menu .table-day-header.no-collapse { cursor: default !important; }
#main-menu .table-day-header.no-collapse td { border-top: 2px solid var(--border); }
#main-menu .table-day-header.no-collapse:first-of-type td { border-top: none; }
#main-menu .table-day-header.no-collapse i { display:none !important; }

#main-menu .table-lote-header.no-collapse { cursor: default !important; }
#main-menu .table-lote-header.no-collapse i { display:none !important; }

/* Color diferenciado solo para el bloque del día */
#main-menu .table-day-header.no-collapse {
  background:#2b405e !important;
  position: relative;
}
#main-menu .table-day-header.no-collapse::after {
  content:none !important;
}
#main-menu .table-day-header.no-collapse td {
  color:#FFFFFF !important;
  font-size:17px !important;
  font-weight:700;
  letter-spacing:.3px;
}
/* Encabezado especial para bloque En curso (amarillo pastel) */
#main-menu .table-day-header.en-curso-header.no-collapse {
  background:#FEF3C7 !important; /* mismo pastel usado en chip warn */
}
#main-menu .table-day-header.en-curso-header.no-collapse td {
  color:#92400E !important; /* tono marrón/ámbar para contraste */
}
/* Asegurar celda también hereda fondo (algunas tablas aplican background en td) */
#main-menu .table-day-header.en-curso-header.no-collapse td { background:#FEF3C7 !important; }

/* Versión móvil encabezado En curso */
/* Encabezado móvil 'En curso': fondo sólido completo */
.mobile-day-header.en-curso-header { 
  background:#FEF3C7 !important; 
  border-radius:0 !important; 
  padding:8px 14px 20px 14px !important; 
  display:block;
}
.mobile-day-header.en-curso-header h3 { 
  background:transparent !important; 
  color:#92400E !important; 
  margin:0 !important; 
  padding:0 !important; 
  font-weight:700 !important; 
  letter-spacing:.5px !important; 
}
/* Mantener mismo aspecto al hover (sin oscurecer) */
#main-menu .table-day-header.no-collapse:hover { background:#244058 !important; }
#main-menu .table-day-header.no-collapse:hover td { color: var(--brand-700) !important; }

/* Lotes neutros, menos contraste */
#main-menu .table-lote-header.no-collapse { background:#EEF2F7 !important; }
#main-menu .table-lote-header.no-collapse td { color:#5A6470 !important; }

/* Filas de datos minimalistas: quitar indent de borde izquierdo extra si no se necesita color */
#main-menu .record-row-lote td { background:transparent !important; border-left:2px solid transparent !important; }

/* Hover muy sutil */
#main-menu .record-row-lote:hover td { background:#F5F7FA !important; }

/* Eliminar efectos de colapso (estaban ligados a .collapsed / .active-row) */
#main-menu .table-day-header.collapsed, #main-menu .table-lote-header.collapsed { background:inherit !important; }
#main-menu .table-day-header.active-row, #main-menu .table-lote-header.active-row { background:inherit !important; }

/* Ajuste de separación vertical entre grupos (margen visual) */
/* (Regla eliminada para evitar bloque vacío) */

/* Fin registro no desplegable */

/* =============================================================
   DASHBOARD: Eliminar efecto "rebote" en indicadores (stat-card)
   - Quita transiciones, filtros y transform para que no cambien
     al entrar/salir del viewport o en hover
   ============================================================= */
.stat-card, .stat-card:hover {
  transition: none !important;
  transform: none !important;
  filter: none !important;
}
.stat-card::before { transition: none !important; }
/* Mantener solo un shadow estático suave */
.stat-card { box-shadow: 0 2px 8px rgba(20,30,50,0.08) !important; }
.stat-card:hover { box-shadow: 0 2px 8px rgba(20,30,50,0.08) !important; }
/* Fin eliminación rebote */

/* (Eliminado bloque neutro #main-menu .table-day-header – sustituido por tokens en registro.css) */

/* Override: NO hover color en filas de datos del registro */
#main-menu .table tbody tr:hover,
#main-menu .table tbody tr:hover td,
#main-menu .table tbody tr:not(.table-day-header):not(.table-lote-header):hover,
#main-menu .table tbody tr:not(.table-day-header):not(.table-lote-header):hover td {
  background: none !important;
  background-color: transparent !important;
}

/* === REGISTRO MINIMALISTA Y SUTIL === */
#main-menu .card, #main-menu .table-wrapper {
  background: rgba(255,255,255,0.92) !important;
  box-shadow: 0 2px 12px rgba(38,63,128,0.07) !important;
  border: 1.5px solid #e0e6f2 !important;
  border-radius: 18px !important;
  padding: 0 !important;
}
#main-menu .table {
  background: transparent !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
}
#main-menu .table th, #main-menu .table td {
  background: transparent !important;
  border: none !important;
  font-size: 14px !important;
  color: #2b405e !important;
  padding: 10px 10px !important;
  text-align: left;
  vertical-align: middle;
}
#main-menu .table th {
  font-weight: 700 !important;
  color: #7a8bbd !important;
  letter-spacing: 0.02em;
  background: none !important;
  border-bottom: 1.5px solid #e0e6f2 !important;
}
#main-menu .table td {
  font-weight: 500 !important;
  border-bottom: 1px solid #f0f2f7 !important;
}
#main-menu .table tbody tr:last-child td {
  border-bottom: none !important;
}
#main-menu .form-control, #main-menu input, #main-menu select {
  background: #f7fafd !important;
  border: 1.5px solid #e0e6f2 !important;
  border-radius: 10px !important;
  font-size: 14px !important;
  color: #2b405e !important;
  padding: 8px 12px !important;
  box-shadow: none !important;
  transition: border-color 0.18s, box-shadow 0.18s;
}
#main-menu .form-control:focus, #main-menu input:focus, #main-menu select:focus {
  border-color: #2b405e !important;
  background: #fff !important;
  outline: none !important;
}
#main-menu label, #main-menu .form-label {
  color: #7a8bbd !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em !important;
  margin-bottom: 4px !important;
  text-transform: uppercase !important;
}
#main-menu .btn, #main-menu .btn-primary, #main-menu .btn-secondary {
  border-radius: var(--radius) !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  padding: 10px 16px !important;
  min-height: 36px !important;
  box-shadow: 0 1px 4px rgba(38,63,128,0.06) !important;
}
#main-menu .btn-primary {
  background: #2b405e !important;
  color: #fff !important;
  border: none !important;
}
#main-menu .btn-primary:hover, #main-menu .btn-primary:focus {
  background: #244058 !important;
}
#main-menu .btn-secondary {
  background: #f7fafd !important;
  color: #2b405e !important;
  border: 1.5px solid #e0e6f2 !important;
}
#main-menu .btn-secondary:hover, #main-menu .btn-secondary:focus {
  background: #e9eef6 !important;
  color: #244058 !important;
}
#main-menu .chip {
  border-radius: 9999px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  padding: 3px 12px !important;
  background: #e3f6ee !important;
  color: #0a7147 !important;
  letter-spacing: 0.03em;
}
#main-menu .chip.chip-warn {
  background: #fef3c7 !important;
  color: #92400e !important;
}
#main-menu .chip.chip-neutral {
  background: #f0f2f7 !important;
  color: #7a8bbd !important;
}
#main-menu .chip.chip-danger {
  background: #ffeaea !important;
  color: #b3261e !important;
}
#main-menu .chip.chip-info {
  background: #dbeafe !important;
  color: #2b405e !important;
}
#main-menu .indicator {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-right: 6px;
  vertical-align: middle;
}
#main-menu .indicator.success { background: #0a7147 !important; }
#main-menu .indicator.warn { background: #f59e0b !important; }
#main-menu .indicator.danger { background: #b3261e !important; }
#main-menu .indicator.info { background: #2b405e !important; }

/* Simetría y alineación */
#main-menu .table th, #main-menu .table td {
  text-align: center !important;
  vertical-align: middle !important;
}
#main-menu .table th:first-child, #main-menu .table td:first-child {
  border-top-left-radius: 10px !important;
}
#main-menu .table th:last-child, #main-menu .table td:last-child {
  border-top-right-radius: 10px !important;
}

/* Fin registro minimalista */

/* =============================================================
   TABLA OBREROS: Estilos idénticos a registros generales
   ============================================================= */
#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header) td {
  padding: 8px 12px !important;
  font-size: 13px !important;
  line-height: 1.35 !important;
  vertical-align: middle !important;
  border-left: none !important;
  border-right: none !important;
}

#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header) td > * {
  vertical-align: middle;
}

#tabla-obreros-full tbody tr.record-row-lote td {
  padding-left: 44px !important;
}

/* Separadores verticales sutiles entre columnas - DESHABILITADO */
#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header) td + td {
  position: relative;
}
#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header) td + td::before {
  display: none !important;
  content: none !important;
}

#tabla-obreros-full tbody tr:hover td::before { 
  display: none !important;
  background: transparent !important; 
}

#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header) .chip {
  padding: 3px 12px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  line-height: 1.1;
  border-radius: 9999px !important;
  letter-spacing: 0.03em;
  background: #e3f6ee !important;
  color: #0a7147 !important;
}

#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header) .chip.chip-warn {
  background: #fef3c7 !important;
  color: #92400e !important;
  font-weight: 600 !important;
}

/* También para vista mobile de obreros */
#obreros-view .mobile-table-row .chip.chip-warn {
  background: #fef3c7 !important;
  color: #92400e !important;
  font-weight: 600 !important;
}

#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header) .chip.chip-success {
  background: #e3f6ee !important;
  color: #0a7147 !important;
}

#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header) .chip.chip-neutral {
  background: #f0f2f7 !important;
  color: #7a8bbd !important;
}

#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header) .chip.chip-danger {
  background: #ffeaea !important;
  color: #b3261e !important;
}

#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header) .chip.chip-info {
  background: #dbeafe !important;
  color: #2b405e !important;
}

#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header) .btn-icon {
  width: 36px;
  height: 36px;
  min-width: 36px;
  min-height: 36px;
  font-size: 16px;
}

#tabla-obreros-full tbody tr:last-child td { 
  border-bottom: none; 
}

/* Unificar estilo de encabezado con tabla de registros */
#obreros-view .table-wrapper {
  border-top-left-radius: 0 !important;
  border-top-right-radius: 0 !important;
}

#tabla-obreros-full {
  border-top-left-radius: 0 !important;
  border-top-right-radius: 0 !important;
}

#obreros-view #tabla-obreros-full thead th,
#obreros-view #tabla-obreros-registrados thead th {
  padding-top: 8px !important;
  padding-bottom: 8px !important;
  border-bottom: 2px solid #E5E7EB !important;
  background: var(--bg-2) !important;
  color: #6B7280 !important;
  font-weight: 600 !important;
  font-size: 11px !important;
  border-radius: 0 !important;
  position: sticky !important;
  top: 0 !important;
  z-index: 10 !important;
}

/* Estilos para separadores de lote */
#tabla-obreros-full .table-lote-header.no-collapse,
#tabla-obreros-registrados .table-lote-header.no-collapse { 
  cursor: default !important;
  background:#EEF2F7 !important; 
}

#tabla-obreros-full .table-lote-header.no-collapse i,
#tabla-obreros-registrados .table-lote-header.no-collapse i { 
  display:none !important; 
}

#tabla-obreros-full .table-lote-header.no-collapse td,
#tabla-obreros-registrados .table-lote-header.no-collapse td { 
  color:#5A6470 !important;
  padding: 8px 16px !important;
  font-weight: 600;
  font-size: 12px !important;
}

#tabla-obreros-full .table-lote-header td,
#tabla-obreros-registrados .table-lote-header td { 
  font-size: 12px !important; 
}

/* Hover sutil para filas de datos */
#tabla-obreros-full .record-row-lote td { 
  background:transparent !important; 
  border-left:2px solid transparent !important; 
}

#tabla-obreros-full .record-row-lote:hover td,
#tabla-obreros-registrados .record-row-lote:hover td { 
  background:#F5F7FA !important; 
}

/* Estilos para separadores de día */
#tabla-obreros-full .table-day-header.no-collapse,
#tabla-obreros-registrados .table-day-header.no-collapse {
  cursor: default !important;
  background:#DBEAFE !important; /* Mismo celeste que registros generales */
}

/* Sin hover para separadores de día */
#tabla-obreros-full .table-day-header.no-collapse:hover,
#tabla-obreros-registrados .table-day-header.no-collapse:hover {
  background:#DBEAFE !important; /* Mantener mismo color en hover */
}

#tabla-obreros-full .table-day-header.no-collapse td,
#tabla-obreros-registrados .table-day-header.no-collapse td {
  border-top: 2px solid var(--border);
  background: #DBEAFE !important; /* Fondo celeste también en td */
  color: #2b405e !important; /* Mismo texto azul oscuro que registros generales */
  font-weight: 700;
  font-size: 15px !important;
  letter-spacing: 0.4px;
  padding: 14px 18px !important;
}

#tabla-obreros-full .table-day-header.no-collapse:hover td,
#tabla-obreros-registrados .table-day-header.no-collapse:hover td {
  background: #DBEAFE !important; /* Mantener celeste en hover */
  color: #2b405e !important; /* Mantener mismo color en hover */
}

#tabla-obreros-full .table-day-header.no-collapse:first-of-type td,
#tabla-obreros-registrados .table-day-header.no-collapse:first-of-type td {
  border-top: none;
}

#tabla-obreros-full .table-day-header.no-collapse i,
#tabla-obreros-registrados .table-day-header.no-collapse i {
  display:none !important;
}

/* Separador "En curso" - fondo amarillo */
#tabla-obreros-full .table-day-header.en-curso-header.no-collapse,
#tabla-obreros-registrados .table-day-header.en-curso-header.no-collapse {
  background:#244058 !important;
}

#tabla-obreros-full .table-day-header.en-curso-header.no-collapse td,
#tabla-obreros-registrados .table-day-header.en-curso-header.no-collapse td {
  background:#FEF3C7 !important;
  color:#92400E !important;
}

#tabla-obreros-full .table-day-header.en-curso-header.no-collapse:hover td,
#tabla-obreros-registrados .table-day-header.en-curso-header.no-collapse:hover td {
  background:#FEF3C7 !important;
  color:#92400E !important;
}


#tabla-obreros-full .table-lote-header.collapsed, 
#tabla-obreros-full .table-lote-header.collapsed { 
  background:inherit !important; 
}

#tabla-obreros-full .table-lote-header.active-row, 
#tabla-obreros-full .table-lote-header.active-row { 
  background:inherit !important; 
}

/* Sin hover color en filas - solo cambio en active-row */
#tabla-obreros-full tbody tr:hover,
#tabla-obreros-full tbody tr:hover td,
#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header):hover,
#tabla-obreros-full tbody tr:not(.table-day-header):not(.table-lote-header):hover td {
  background: none !important;
  background-color: transparent !important;
}

/* Active row - sin indicador visual */
#tabla-obreros-full tbody tr.active-row td {
  background: transparent !important;
}

#tabla-obreros-full tbody tr.active-row td:first-child {
  border-left: none !important;
}

/* Header "En curso" - mismo estilo que registros generales */
#obreros-view .table-day-header.en-curso-header.no-collapse,
#obreros-view .day-header-row.en-curso-header.no-collapse {
  background: #FEF3C7 !important;
}

#obreros-view .table-day-header.en-curso-header.no-collapse td,
#obreros-view .day-header-row.en-curso-header.no-collapse td {
  color: #92400E !important;
  background: #FEF3C7 !important;
}
/* Fin tabla obreros */

/* =============================================================
   TABLA OBREROS REGISTRADOS (Base de Datos)
   ============================================================= */

#tabla-obreros-registrados tbody tr {
  border-left: 4px solid transparent !important;
}

#tabla-obreros-registrados tbody tr td {
  padding: 8px 12px !important;
  font-size: 13px !important;
  line-height: 1.35 !important;
  vertical-align: middle !important;
  white-space: nowrap !important;
}

/* Permitir salto de línea en la columna de Apellido y Nombre (3ra columna) */
#tabla-obreros-registrados tbody tr td:nth-child(3) {
  white-space: normal !important;
  max-width: 200px !important;
  min-width: 150px !important;
  word-wrap: break-word !important;
}

/* Permitir salto de línea en la columna de Estado (penúltima columna) */
#tabla-obreros-registrados tbody tr td:nth-last-child(2) {
  white-space: normal !important;
  max-width: 180px !important;
  min-width: 150px !important;
  word-wrap: break-word !important;
}

/* Padding extra en la primera columna para el borde de estado */
#tabla-obreros-registrados tbody tr td:first-child {
  padding-left: 16px !important;
}

#tabla-obreros-registrados tbody tr td > * {
  vertical-align: middle;
}

/* Sin hover invasivo */
#tabla-obreros-registrados tbody tr:hover,
#tabla-obreros-registrados tbody tr:hover td {
  background: none !important;
  background-color: transparent !important;
}

/* Active row - sin efectos visuales */
#tabla-obreros-registrados tbody tr.active-row td {
  background: transparent !important;
}

#tabla-obreros-registrados tbody tr.active-row td:first-child {
  border-left: none !important;
}

/* Quitar fondos de colores (bg-red, bg-yellow) */
#tabla-obreros-registrados tbody tr.bg-red,
#tabla-obreros-registrados tbody tr.bg-yellow {
  background: transparent !important;
}

#tabla-obreros-registrados tbody tr.bg-red td,
#tabla-obreros-registrados tbody tr.bg-yellow td {
  background: transparent !important;
}

/* Asegurar que las celdas de estado no se rompan en múltiples líneas */
#tabla-obreros-registrados tbody tr td span {
  white-space: nowrap !important;
  display: inline-block !important;
}

/* EXCEPCIÓN: Permitir wrap en los spans de la columna Estado */
#tabla-obreros-registrados tbody tr td:nth-last-child(2) span {
  white-space: normal !important;
  display: inline !important;
}

/* Estilos para botones de acción en tabla obreros registrados */
#tabla-obreros-registrados .btn-icon {
  width: 30px !important;
  height: 30px !important;
  min-width: 30px !important;
  min-height: 30px !important;
  font-size: 14px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 50% !important;
  padding: 0 !important;
}

#tabla-obreros-registrados .btn-primary.btn-icon {
  background: #244058 !important;
  border: 1px solid #244058 !important;
  color: #fff !important;
}

#tabla-obreros-registrados .btn-primary.btn-icon:hover {
  background: #244058 !important;
  border-color: #244058 !important;
}

#tabla-obreros-registrados .btn-danger.btn-icon {
  background: transparent !important;
  border: none !important;
  color: #94A3B8 !important;
}

#tabla-obreros-registrados .btn-danger.btn-icon:hover {
  background: transparent !important;
  color: #64748B !important;
}

#tabla-obreros-registrados .reg-actions {
  gap: 12px !important;
}

/* Versión móvil - obreros registrados */
#mobileResultsObrerosRegistrados .mobile-action-buttons {
  display: flex !important;
  gap: 16px !important;
  margin-top: 20px !important;
  padding-top: 16px !important;
  border-top: 1px solid #E5E7EB !important;
}

#mobileResultsObrerosRegistrados .mobile-action-buttons .btn {
  flex: 1 !important;
  min-height: 44px !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  border-radius: 12px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}

#mobileResultsObrerosRegistrados .mobile-action-buttons .btn-primary {
  background: #244058 !important;
  border: 1px solid #244058 !important;
  color: #fff !important;
}

#mobileResultsObrerosRegistrados .mobile-action-buttons .btn-primary:hover {
  background: #244058 !important;
  border-color: #244058 !important;
}

#mobileResultsObrerosRegistrados .mobile-action-buttons .btn-danger {
  background: transparent !important;
  border: 1px solid #DC2626 !important;
  color: #DC2626 !important;
}

#mobileResultsObrerosRegistrados .mobile-action-buttons .btn-danger:hover {
  background: #FEE2E2 !important;
  border-color: #DC2626 !important;
  color: #B91C1C !important;
}

/* Fin tabla obreros registrados */

/* (Eliminado override redundante: ahora usa estilos de "REGISTRO MINIMALISTA Y SUTIL") */

/* (Eliminado override contenedor redundante) */

/* (Eliminado fallback adicional; se confía en estilos unificados) */

/* === REGISTRO: Fix radio visible bloque principal ===
   Forzamos nuevamente los radios en la card contenedora y su table-wrapper
   para evitar que alguna regla previa (reset interno a 0) los aplane.
   Mantiene valores coherentes con estilo "REGISTRO MINIMALISTA Y SUTIL".
   No altera lógica ni estructura. */
#main-menu .card:has(.table-wrapper) {
  border-radius: 18px !important;
  overflow: hidden;
}

#main-menu .card .table-wrapper {
  border-radius: 18px !important;
  overflow: hidden;
}

/* Fallback sin :has(): aplica a última card si coincide patrón común */
@supports not(selector(:has(*))) {
  #main-menu .card .card-body.p-0 > .table-wrapper {
    border-radius: 18px !important;
  }
  #main-menu .card:last-of-type {
    border-radius: 18px !important;
    overflow: hidden;
  }
}
/* Fin fix radio visible registro */

/* (Eliminado bloque 'Encabezado de día (AZUL OSCURO plano)' – ya definido en registro.css) */

/* =============================================================
   ACCIÓN: Actualización color exacto botones de acción (#2b405e)
   - Estados hover / active derivados
   - Secundario inverso con borde y texto base
   ============================================================= */
.btn-primary {
  background:#2b405e !important;
  border-color:#2b405e !important;
  box-shadow:0 2px 4px rgba(0,0,0,0.18) !important;
  color:#FFFFFF !important;
}
.btn-primary:hover {
  background:#244058 !important;
  border-color:#244058 !important;
}
.btn-primary:active,
.btn-primary:focus {
  background:#1d3548 !important;
  border-color:#1d3548 !important;
}

/* Especificación puntual: botón "Nuevo registro" con color del navbar
   Mantiene jerarquía sin afectar otros .btn-primary (se coloca después del override global). */
#dashboard-view #nuevo-registro-quick.btn-primary {
  background:#2b405e !important; /* base */
  border-color:#2b405e !important;
}
#dashboard-view #nuevo-registro-quick.btn-primary:hover {
  background:#244058 !important; /* hover más oscuro */
  border-color:#244058 !important;
}
#dashboard-view #nuevo-registro-quick.btn-primary:active {
  background:#1d3548 !important; /* active más profundo */
  border-color:#1d3548 !important;
  box-shadow:0 2px 4px rgba(20,29,42,0.45) inset !important;
}
#dashboard-view #nuevo-registro-quick.btn-primary:focus-visible { outline:0; box-shadow:0 0 0 3px rgba(37,99,235,0.35) !important; }


.btn-secondary {
  background:#F4F7FA !important;
  color:#2b405e !important;
  border:1px solid #2b405e !important;
}
.btn-secondary:hover {
  background:#E8ECF4 !important;
  color:#1d3548 !important;
  border-color:#1d3548 !important;
}

/* Botones fantasma / icono */
.btn-ghost, .btn-icon {
  color:#2b405e !important;
}
.btn-ghost:hover, .btn-icon:hover {
  background:rgba(56,70,103,0.08) !important;
  color:#1d3548 !important;
}

/* Unificación visual Accesos rápidos / Acciones rápidas */
.card:has(.quick-actions) {
  background: rgba(255,255,255,0.92) !important;
  box-shadow: 0 2px 12px rgba(56,70,103,0.08) !important;
  border:1.5px solid #e0e6f2 !important;
  border-radius:18px !important;
  padding:0 !important;
}
.card:has(.quick-actions) .card-header {
  border-bottom:1.5px solid #e0e6f2 !important;
}
.card:has(.quick-actions) .card-body {
  padding:24px !important;
}

/* Unificación vertical y botones pill en quick-actions (dashboard y registro) */
.card-quick-actions .quick-actions {
  align-items: stretch;
}
.card-quick-actions .quick-actions .btn {
  height:40px !important; /* compacto */
  line-height:1 !important;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:14px !important; /* igual tipografía del bloque registro */
  border-radius:9999px !important; /* full pill */
  padding:0 20px !important;
  font-weight:600;
}
/* (Eliminado bloque dashboard quick actions - ya no se usa) */
.card-quick-actions .quick-actions .btn i { margin-right:8px; }

/* Igualar altura de ambas cards quick-actions (dashboard vs registro) si hubiese diferencias por margin internos */
.card-quick-actions .card-header { padding-bottom:12px !important; }
.card-quick-actions .card-body { padding-top:20px !important; }

@supports not(selector(:has(*))) {
  /* Fallback parcial (sin poder estilizar el contenedor desde el hijo) */
  #dashboard-view .quick-actions {
    gap:16px;
  }
}
/* Fin actualización color y unificación quick actions */

/* ==== Calendario de rango exportación ==== */
.range-calendar { border:1px solid #E2E8F0; border-radius:12px; padding:8px 10px; background:#FFF; width:100%; max-width:none; }
.range-calendar .cal-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:4px; }
.range-calendar .cal-month-label { font-weight:600; font-size:13px; color:#1E293B; text-transform:capitalize; }
.range-calendar .cal-weekdays { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; margin:2px 0 4px; font-size:10px; font-weight:600; color:#64748B; }
.range-calendar .cal-weekdays span { text-align:center; }
.range-calendar .cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; }
.range-calendar .day { position:relative; aspect-ratio:1/1; font-size:11px; border-radius:6px; display:flex; align-items:center; justify-content:center; cursor:pointer; user-select:none; font-weight:500; color:#334155; background:#F1F5F9; transition:background .15s, color .15s; }
.range-calendar .day:hover:not(.disabled):not(.outside) { background:#E2E8F0; }
.range-calendar .day.disabled { opacity:.18; cursor:not-allowed; background:#F8FAFC; }
.range-calendar .day.outside { opacity:.25; }
.range-calendar .day.start, .range-calendar .day.end, .range-calendar .day.in-range { background: var(--brand-700); color:#FFF; }
.range-calendar .day.today::after { content:''; position:absolute; bottom:4px; width:4px; height:4px; background:#10B981; border-radius:50%; }
.range-calendar .cal-selection-info { display:flex; flex-wrap:wrap; gap:4px; font-size:11px; }
.range-calendar .btn-icon { background:transparent; border:0; color:#475569; width:26px; height:26px; border-radius:6px; display:inline-flex; align-items:center; justify-content:center; font-size:14px; }
.range-calendar .btn-icon:hover { background:#E2E8F0; }


/* =============================================================
   MODAL PERMANENCIAS (Campana) - Overlay + Panel centrado
   - Convierte #overstayPanel en modal real sobre todo el contenido
   - Fondo difuminado bloquea interacción detrás
   - Cuerpo bloquea scroll cuando está abierto (body.modal-overstay-open)
   - Punto rojo (.sev-dot) indica alerta crítica (10 min) dentro del nombre
   ============================================================= */
.overstay-overlay {
  position: fixed;
  inset: 0;
  background: rgba(15,23,42,0.38);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  z-index: 3200; /* Muy por debajo de los modales (>=5400) */
  cursor: pointer;
}
.overstay-overlay.d-none { display: none !important; }

.overstay-panel {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 480px;
  max-width: 92vw;
  max-height: 80vh;
  background: #FFFFFF;
  border: 1px solid #E2E8F0;
  /* Unificado con tarjetas */
  border-radius: var(--radius);
  box-shadow:
    0 24px 56px -14px rgba(15,23,42,0.35),
    0 8px 24px rgba(15,23,42,0.18);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  z-index: 4100;
  animation: overstayModalIn .3s cubic-bezier(.4,.14,.3,1);
}
.overstay-panel.d-none { display: none !important; }

/* Variante pequeña para confirmar egresos */
.overstay-panel.overstay-panel--small {
  width: 420px;
  max-width: 90vw;
}
@media (max-width: 480px) {
  .overstay-panel.overstay-panel--small {
    width: 360px;
    max-width: 92vw;
  }
}

/* Centro robusto solo para el panel de edición (sin afectar otros) */
#editPanel {
  top: auto !important;
  left: auto !important;
  transform: none !important;
  right: auto !important;
  bottom: auto !important;
  inset: 0 !important;            /* ocupa toda la pantalla como caja de posicionamiento */
  margin: auto !important;         /* centra en ambos ejes según su tamaño */
  height: auto !important;         /* ajusta al contenido */
}

@keyframes overstayModalIn {
  from { opacity: 0; transform: translate(-50%, -46%) scale(.96); }
  to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

.overstay-panel .panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 22px;
  background: #F8FAFC;
  border-bottom: 1px solid #E2E8F0;
  /* Asegurar radios superiores coherentes */
  border-top-left-radius: var(--radius);
  border-top-right-radius: var(--radius);
}
.overstay-panel .panel-title {
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .4px;
  color: #2b405e;
  text-transform: uppercase;
  margin: 0;
}
.overstay-panel .btn-close-panel {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: transparent;
  color: #5B6475;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background-color .18s ease, color .18s ease;
}
.overstay-panel .btn-close-panel:hover {
  background: #E6ECF2;
  color: #2b405e;
}

.overstay-panel .panel-body {
  flex: 1;
  overflow: auto;
  padding: 18px 20px 22px;
  background: #FFFFFF;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  /* Mantener continuidad de radio si hay color de fondo interior gris futuro */
  border-bottom-left-radius: var(--radius);
  border-bottom-right-radius: var(--radius);
}

/* Cuerpo del panel: encoge a su contenido (evita espacio vacío bajo los botones) */


.overstay-list {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin: 0;
  padding: 0;
}

.overstay-empty {
  text-align: center;
  font-size: 14px;
  font-weight: 500;
  color: #6A7484;
  padding: 32px 12px;
  border: 2px dashed #E2E8F0;
  border-radius: 18px;
  background: #F8FAFC;
}

.overstay-item {
  border: 1px solid #E2E8F0;
  border-radius: 18px;
  padding: 14px 16px 16px;
  background: #FFFFFF;
  display: flex;
  flex-direction: column;
  gap: 12px;
  position: relative;
  box-shadow: 0 2px 4px rgba(30,40,60,0.04);
  /* Sin transición para evitar efecto de elevación */
  transition: none !important;
}
/* Hover neutralizado */
.overstay-item:hover { box-shadow: 0 2px 4px rgba(30,40,60,0.04); transform:none !important; }

.overstay-name {
  font-weight: 600;
  font-size: 15px;
  color: #2b405e;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.overstay-meta {
  font-size: 12px;
  font-weight: 500;
  color: #5B6475;
  margin-top: 4px;
  letter-spacing: .25px;
}

.overstay-actions {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.overstay-actions .form-control-sm {
  flex: 1 1 auto;
  min-width: 140px;
  height: 36px;
  border-radius: 10px;
  font-size: 12px;
  padding: 4px 10px;
  background: #F5F7FA;
  border: 1px solid #D5DEE8;
  box-shadow: none;
}
.overstay-actions .form-control-sm:focus {
  background: #FFFFFF;
  border-color: #2E4C9A;
  box-shadow: 0 0 0 2px rgba(46,76,154,0.18);
  outline: none;
}

.overstay-actions .btn {
  height: 36px;
  border-radius: 999px !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  padding: 0 18px !important;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.overstay-actions .btn-egresar-directo {
  background: #1d3548 !important;
  color: #FFF !important;
  border: none !important;
  box-shadow: 0 2px 4px rgba(30,64,175,0.3) !important;
  transition: all 0.2s ease !important;
}

.overstay-actions .btn-egresar-directo:hover {
  background: #2b405e !important;
  box-shadow: 0 3px 6px rgba(30,64,175,0.4) !important;
  transform: translateY(-1px);
}

.overstay-actions .btn-egresar-directo:active {
  transform: translateY(0);
  box-shadow: 0 1px 3px rgba(30,64,175,0.3) !important;
}

.overstay-item.severity-critical {
  border-left: 5px solid #DC3545;
  background: linear-gradient(95deg,#FFE9EC 0%, #FFF 60%);
}
.overstay-item.severity-extreme {
  border-left: 5px solid #244058;
  background: linear-gradient(95deg,#EFF6FF 0%, #FFF 60%);
}
.overstay-item.severity-early {
  border-left: 5px solid #F3C969;
  background: linear-gradient(95deg,#FFF9E6 0%, #FFF 60%);
}
.overstay-item.severity-medium {
  border-left: 5px solid #F5A733;
  background: linear-gradient(95deg,#FFF4E0 0%, #FFF 60%);
}

/* Separador entre visitantes y obreros */
.overstay-separator {
  padding: 16px 0;
  margin: 0;
}
.overstay-separator-line {
  height: 2px;
  background: linear-gradient(90deg, transparent 0%, #CBD5E1 15%, #94A3B8 50%, #CBD5E1 85%, transparent 100%);
  margin: 0 12px;
  border-radius: 1px;
}

/* Punto rojo indicador (alerta crítica / 10 min) */
.sev-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #DC3545;
  box-shadow: 0 0 0 4px rgba(220,53,69,0.18), 0 0 0 0 rgba(220,53,69,0.35);
  position: relative;
  display: inline-block;
  animation: sevPulse 1.8s infinite cubic-bezier(.66,0,.4,1);
}
@keyframes sevPulse {
  0% { box-shadow: 0 0 0 4px rgba(220,53,69,0.20), 0 0 0 0 rgba(220,53,69,0.35); }
  65% { box-shadow: 0 0 0 4px rgba(220,53,69,0.12), 0 0 0 10px rgba(220,53,69,0); }
  100% { box-shadow: 0 0 0 4px rgba(220,53,69,0.20), 0 0 0 0 rgba(220,53,69,0); }
}

body.modal-overstay-open {
  overflow: hidden;
  touch-action: none;
}

@media (max-width: 640px) {
  .overstay-panel {
  width: 92%; /* dejar margen lateral */
  max-width: 440px; /* limitar expansión */
  height: auto;
  max-height: 82vh; /* un poco más alta para evitar encogimiento visual */
  border-radius: 18px;
  left:50%;
  transform: translate(-50%, -50%); /* conservar centrado */
  }
  /* En móvil, asegurar centrado del editPanel también con inset */
  #editPanel { inset: 0 !important; margin: auto !important; transform: none !important; }
  .overstay-panel .panel-body {
    padding: 16px 16px 22px;
  }
  /* Compactar espacio inferior sólo en el panel de edición móvil */
  #editPanel .panel-body { padding-bottom: 0 !important; }
  #editPanel .d-grid { margin-bottom: 0 !important; }
  #editPanel #edit-mobile-status { margin-top: 0 !important; margin-bottom: 0 !important; }
  #editPanel #edit-mobile-status:empty { display: none !important; }
  #editPanel .panel-body > :last-child { margin-bottom: 0 !important; }
  .overstay-item {
    padding: 12px 14px 14px;
    border-radius: 16px;
  }
  .overstay-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .overstay-actions .form-control-sm {
    width: 100%;
  }
  .overstay-actions .btn {
    width: 100%;
    justify-content: center;
  }
}

/* =========================================================
   PERFORMANCE & UNIFICACION DASHBOARD STAT-CARDS (24-08-2025)
   - Simplifica estilos de .stat-card (remueve glass, blur, gradientes,
     radios extremos y múltiples sombras)
   - Mantiene iconos con su fondo de color
   - Reduce costo de repintado y composición al hacer scroll
   - Elimina backdrop-filter de header sticky de la tabla (costoso)
   - Añade contain para aislar la capa de scroll principal
   ========================================================= */
.dashboard-stats .stat-card,
.stat-card {
  border-radius: var(--radius) !important;
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  box-shadow: 0 2px 6px rgba(0,0,0,0.04) !important;
  padding: var(--space-24) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  transform: none !important;
  filter: none !important;
  transition: none !important;
}
.stat-card::before { content: none !important; }
/* Hover neutralizado también aquí */
.dashboard-stats .stat-card:hover { box-shadow: 0 2px 6px rgba(0,0,0,0.04) !important; }

.stat-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-sm);
  font-size: 24px;
  display:flex;
  align-items:center;
  justify-content:center;
}

/* Mantener fondos de iconos (consolidado) */
.stat-icon-primary { background-color: var(--brand-100) !important; color: var(--brand) !important; }
.stat-icon-warning { background-color: #FEF3C7 !important; color: var(--warning) !important; }
.stat-icon-success { background-color: #DCFCE7 !important; color: var(--success) !important; }
.stat-icon-info    { background-color: #DBEAFE !important; color: var(--info) !important; }

/* Neutralizar estilos previos definidos vía :has() (sin eliminarlos) */
.dashboard-stats .stat-card:has(.stat-icon-primary),
.dashboard-stats .stat-card:has(.stat-icon-warning),
.dashboard-stats .stat-card:has(.stat-icon-success),
.dashboard-stats .stat-card:has(.stat-icon-info) {
  background: var(--surface) !important;
  border:1px solid var(--border) !important;
  box-shadow: 0 2px 6px rgba(0,0,0,0.04) !important;
  backdrop-filter:none !important;
}

/* Sticky header registro: quitar blur costoso durante scroll */
#main-menu #scanResults thead th {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* Aislar área de scroll para reducir invalidaciones de layout global */
.content-area {
  contain: layout paint;
  will-change: auto;
}

/* Fin overrides rendimiento */

/* =========================================================
   Ajuste (04-09-2025): Mayor separación entre títulos de la
   tabla de registros y las filas de datos. Se incrementa el
   padding vertical de los <th> para dar más aire visual.
   (Pedido: "separa un poco mas las casillas del titulo")
   ========================================================= */
#main-menu #scanResults thead th {
  padding-top: 14px !important;
  padding-bottom: 14px !important; /* antes 10px */
}

/* Línea divisoria un poco más marcada para reforzar separación */
#main-menu #scanResults thead th {
  border-bottom: 2px solid var(--registro-border) !important;
}

/* =========================================================
   CAMPANA NOTIFICACIONES: Contorno rojo cuando hay alertas
   - Activado por clase .has-alert agregada vía JS
   - No altera dimensiones ni otros botones
   - Efecto accesible (alto contraste) sin animaciones costosas
   ========================================================= */
#overstayBell.has-alert,
.notification-bell.has-alert {
  border: none !important;             /* sin contorno */
  color: var(--danger) !important;      /* texto/ícono rojo pastel */
  background: #FFECEC !important;       /* fondo rojo pastel como antes */
  box-shadow: none !important;          /* sin halo */
}

#overstayBell.has-alert i,
.notification-bell.has-alert i {
  color: var(--danger) !important;      /* ícono rojo pastel */
}

#overstayBell.has-alert:hover,
.notification-bell.has-alert:hover {
  background: #FFD9D9 !important;       /* hover pastel más oscuro suave */
}

/* === Ajuste campana: forma circular y dimensiones iguales a bloque de usuario === */
#overstayBell, .notification-bell {
  width:36px !important; height:36px !important; min-width:36px !important; min-height:36px !important;
  border-radius:50% !important; padding:0 !important; display:inline-flex !important; align-items:center; justify-content:center;
  aspect-ratio:1/1; line-height:1; position:relative;
  transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1) !important;
  transform: scale(1);
}
#overstayBell:hover, .notification-bell:hover {
  transform: scale(1.1) !important;
}
#overstayBell:active, .notification-bell:active {
  transform: scale(0.95) !important;
}
/* Efecto especial para campana con alertas - animación sutil de balanceo */
#overstayBell.has-alert, .notification-bell.has-alert {
  animation: bellRing 2s ease-in-out infinite;
}
@keyframes bellRing {
  0%, 100% { transform: scale(1) rotate(0deg); }
  10% { transform: scale(1.05) rotate(-10deg); }
  20% { transform: scale(1.05) rotate(10deg); }
  30% { transform: scale(1.05) rotate(-10deg); }
  40% { transform: scale(1.05) rotate(10deg); }
  50% { transform: scale(1) rotate(0deg); }
}
#overstayBell.has-alert:hover, .notification-bell.has-alert:hover {
  animation: none;
  transform: scale(1.15) !important;
}
/* Badge se ajusta centrado relativo */
#overstayBell .notif-badge { top:3px; right:3px; }
/* Mobile tamaños ya definidos abajo; reforzar borde redondo */
@media (max-width:768px){
  #overstayBell, .notification-bell { width:34px !important; height:34px !important; min-width:34px !important; min-height:34px !important; }
}
@media (max-width:480px){
  #overstayBell, .notification-bell { width:30px !important; height:30px !important; min-width:30px !important; min-height:30px !important; }
}

/* =========================================================
   DESIGN TOKENS OPERATIVA SEGURIDAD (Añadidos sin romper IDs)
   ========================================================= */
:root{
  /* Brand (azul operativo) */
  --brand-700:#1d3548;
  --brand-600:#244058; /* primario */
  --brand-500:#2b405e;
  --brand-100:#DBEAFE; /* fondo activo/hover sidebar */

  /* Semantic */
  --success-600:#16A34A; /* OK/Guardar */
  --success-700:#15803D;
  --danger-600:#DC2626;  /* Denegado/Error */
  --warning-500:#F59E0B; /* En curso/activo */
  --info-600:#244058;    /* Info/Pendiente */

  /* Neutrales */
  --bg-0:#FFFFFF;
  --bg-1:#F8FAFC;       /* fondos de panel */
  --bg-2:#F3F4F6;       /* headers suaves */
  --line-1:#E5E7EB;     /* bordes */
  --line-2:#D1D5DB;

  --text-900:#0F172A;   /* títulos */
  --text-700:#374151;   /* cuerpo */
  --text-500:#6B7280;   /* meta/labels */
  --placeholder:#9CA3AF;

  /* Dimensiones y efectos */
  --radius-8:8px;
  --radius-12:12px;
  --shadow-1:0 1px 3px rgba(0,0,0,.08);
  --shadow-2:0 6px 16px rgba(0,0,0,.08);

  /* Focus visible (accesibilidad) */
  --focus-ring:0 0 0 3px rgba(37,99,235,.35);
}

/* Base tipografía / fondo (no altera tamaños existentes) */
body {
  background: var(--bg-1) !important;
  color: var(--text-700) !important;
  font-family: 'Inter','Segoe UI',system-ui,-apple-system,sans-serif;
}

/* Tarjetas unificadas */
.card,
.stat-card,
.login-card,
.table-wrapper,
.overstay-panel {
  background: var(--bg-0) !important;
  border:1px solid var(--line-1) !important;
  border-radius: var(--radius-12) !important;
  box-shadow: var(--shadow-1) !important;
}

/* Encabezados suaves */
.card-header,
.modal-header,
.table thead th {
  background: var(--bg-2) !important;
}

/* Botones (nuevas reglas al final para sobrescribir anteriores) */
.btn-primary{
  background:var(--brand-600) !important;
  color:#fff !important;
  border:1px solid var(--brand-600) !important;
  border-radius:var(--radius-12) !important;
  min-height:44px;
  padding:10px 16px;
  font-weight:600;
  box-shadow:none !important;
}
.btn-primary:hover{
  background:var(--brand-700) !important;
  border-color:var(--brand-700) !important;
}
.btn-primary:focus-visible{
  outline:none;
  box-shadow:var(--focus-ring) !important;
}

.btn-success{
  background:var(--success-600) !important;
  color:#fff !important;
  border:1px solid var(--success-600) !important;
  border-radius:var(--radius-12) !important;
  min-height:44px;
  padding:10px 16px;
  font-weight:600;
}
.btn-success:hover{
  background:var(--success-700) !important;
  border-color:var(--success-700) !important;
}
.btn-success:focus-visible{
  outline:none;
  box-shadow:var(--focus-ring) !important;
}

.btn-secondary{
  background:var(--bg-0) !important;
  color:var(--text-700) !important;
  border:1px solid var(--line-2) !important;
  border-radius:var(--radius-12) !important;
  min-height:44px;
  padding:10px 16px;
  font-weight:600;
  box-shadow:none !important;
}
.btn-secondary:hover{
  background:var(--bg-2) !important;
}
.btn-secondary:focus-visible{
  outline:none;
  box-shadow:var(--focus-ring) !important;
}

/* Badges / chips de estado nuevos (no afecta .chip existente) */
.badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  height:24px;
  padding:0 8px;
  border-radius:999px;
  font-size:12px;
  font-weight:600;
  line-height:1;
}
.badge--ok{
  background:#E8F5EE;
  color:var(--success-600);
  border:1px solid rgba(22,163,74,.18);
}
.badge--err{
  background:#FEE2E2;
  color:var(--danger-600);
  border:1px solid rgba(220,38,38,.18);
}
.badge--run{
  background:#FEF3C7;
  color:var(--warning-500);
  border:1px solid rgba(245,158,11,.18);
}
.badge--info{
  background:#DBEAFE;
  color:var(--info-600);
  border:1px solid rgba(37,99,235,.18);
}

/* Sidebar estados (mapeo a .nav-item existente) */
.sidebar{
  background:var(--bg-0) !important;
  border-right:1px solid var(--line-1);
}
.sidebar .nav-item{
  color:var(--text-700);
  border-left:3px solid transparent;
  border-radius:8px;
  transition:background .15s, color .15s;
}
.sidebar .nav-item:hover{
  background:#F6F9FF;
  color:var(--brand-700);
}
.sidebar .nav-item.active{
  background:var(--brand-100);
  color:var(--brand-600);
  border-left-color:var(--brand-600);
}
.sidebar .nav-item i{
  color:#6B7280;
}
.sidebar .nav-item.active i{
  color:var(--brand-600);
}

/* Inputs unificados (nuevas clases opcionales .input/.select/.textarea) */
.input, .select, .textarea,
.form-control, .form-select, textarea.form-control{
  background:var(--bg-0);
  border:1px solid var(--line-2);
  border-radius:var(--radius-12) !important;
  color:var(--text-700);
  min-height:44px;
  padding:10px 12px !important;
}
.input::placeholder, .select::placeholder, .textarea::placeholder,
.form-control::placeholder{
  color: var(--placeholder-color, var(--placeholder));
}
input::placeholder, select::placeholder, textarea::placeholder {
  color: var(--placeholder-color, #999);
}

/* Placeholder rojo para campos con error */
input.placeholder-error::placeholder,
select.placeholder-error::placeholder {
  color: #DC2626 !important;
}

/* Estado de campo inválido/requerido */
input.field-error,
select.field-error,
textarea.field-error {
  border-color: #FCA5A5 !important;
  background-color: #FEF2F2 !important;
}

input.field-error:focus,
select.field-error:focus,
textarea.field-error:focus {
  border-color: #F87171 !important;
  background-color: #FEF2F2 !important;
  box-shadow: 0 0 0 3px rgba(252, 165, 165, 0.1) !important;
}

.input:focus, .select:focus, .textarea:focus,
.form-control:focus, .form-select:focus, textarea.form-control:focus{
  outline:none;
  border-color:#E5E7EB !important;
  box-shadow:none !important;
  background:var(--bg-0);
}

/* Tabla (aplicación suave – respeta overrides específicos existentes) */
.table thead th{
  background:var(--bg-2) !important;
  color:var(--text-700) !important;
  font-weight:600;
}
.table tbody tr:nth-child(even){
  background:#FBFBFD;
}
.table .day-header,
.table-day-header td{
  background:#EAEFF7 !important;
  color:var(--text-700) !important;
  text-transform:uppercase;
  letter-spacing:.02em;
  font-size:12px !important;
  font-weight:700 !important;
}

/* Focus accesible global */
:where(a,button,[role="button"],input,select,textarea,.nav-item,.btn):focus-visible{
  outline:none;
  box-shadow:var(--focus-ring) !important;
  border-radius:4px;
}

/* Accesos rápidos contenedor */
.quick-actions,
.card:has(.quick-actions) .card-body{
  background:var(--bg-0);
}

/* Actividad reciente hover suave */
.activity-item:hover{
  background:var(--bg-2) !important;
}
.activity-day-separator{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:0;
  padding:12px 16px 4px;
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.06em;
  font-weight:600;
  color:#065F46; /* verde intenso para texto */
  opacity:.95;
}
.activity-day-label{ background:#D1FAE5; padding:2px 12px; border-radius:999px; box-shadow:0 0 0 1px #6EE7B7; color:#065F46; }

/* Ajuste iconos actividad (ingreso / egreso) según semántica */
.activity-icon.ingreso{
  background:#DCFCE7 !important;
  color:var(--success-600) !important;
}
.activity-icon.egreso{
  background:#F3F4F6 !important;
  color:#94A3B8 !important;
}

/* Toasts/alerts semánticos genéricos */
.ui-toast-success{ background:#EAF7ED; color:var(--success-600); }
.ui-toast-error{ background:#FEECEC; color:var(--danger-600); }
.ui-toast-info{ background:#E9F0FF; color:var(--info-600); }

/* Fin tokens + estilo operativo */

/* =========================================================
   CHIPS SEMÁNTICOS (MAPPING .chip-* -> esquema badges tokens)
   - No se modifica HTML ni JS.
   - Se igualan estilos de .chip-* a .badge--*.
   - Se agregan íconos mediante ::before para no depender sólo del color.
   - Se sobreescriben overrides previos con !important.
   ========================================================= */
.chip,
#main-menu .chip {
  display:inline-flex !important;
  align-items:center !important;
  gap:4px !important;
  height:24px !important;
  padding:0 8px !important;
  border-radius:999px !important;
  font-size:12px !important;
  font-weight:600 !important;
  line-height:1 !important;
  border:1px solid transparent !important;
  background:var(--bg-2) !important;
  color:var(--text-700) !important;
  letter-spacing:0 !important;
  white-space:nowrap !important;
}

/* Íconos semánticos (evita uso exclusivo de color) */
.chip-success::before,
.chip-warn::before,
.chip-danger::before,
.chip-info::before,
#main-menu .chip-success::before,
#main-menu .chip-warn::before,
#main-menu .chip-danger::before,
#main-menu .chip-info::before {
  content:"";
  display:inline-block;
  font-weight:700;
  font-size:12px;
  line-height:1;
  margin-right:2px;
}

.chip-success::before,
#main-menu .chip-success::before { content:"✔"; }
.chip-warn::before,
#main-menu .chip-warn::before { content:"!"; }
.chip-danger::before,
#main-menu .chip-danger::before { content:"✖"; }
.chip-info::before,
#main-menu .chip-info::before { content:"i"; }

/* Estado: OK / Completado */
.chip-success,
#main-menu .chip-success {
  background:#E8F5EE !important;
  color:var(--success-600) !important;
  border:1px solid rgba(22,163,74,.18) !important;
}

/* Estado: En curso / Activo */
.chip-warn,
#main-menu .chip-warn {
  background:#FEF3C7 !important;
  color:var(--warning-500) !important;
  border:1px solid rgba(245,158,11,.18) !important;
}

/* Estado: Alerta crítica (permanencia excedida 10min) */
.chip-alert,
#main-menu .chip-alert {
  background:#FEE2E2 !important;
  color:#B91C1C !important;
  border:1px solid rgba(239,68,68,.25) !important;
}
.chip-alert::before,
#main-menu .chip-alert::before { content:"!"; }

/* Estado: Error / Denegado */
.chip-danger,
#main-menu .chip-danger {
  background:#FEE2E2 !important;
  color:var(--danger-600) !important;
  border:1px solid rgba(220,38,38,.18) !important;
}

/* Estado: Pendiente / Info */
.chip-info,
#main-menu .chip-info {
  background:#DBEAFE !important;
  color:var(--info-600) !important;
  border:1px solid rgba(37,99,235,.18) !important;
}

/* Neutral (si se usa) */
.chip-neutral,
#main-menu .chip-neutral {
  background:var(--bg-2) !important;
  color:var(--text-700) !important;
  border:1px solid var(--line-2) !important;
}

/* Ajuste en tablas compactas: respetar altura */
#main-menu .table tbody tr:not(.table-day-header):not(.table-lote-header) .chip {
  height:22px !important;
  padding:0 8px !important;
  font-size:11px !important;
}

/* Fin chips semánticos */

/* =========================================================
   KPI SEMÁNTICOS DASHBOARD + OVERRIDES FINALES ACCESIBILIDAD
   - No se elimina código previo: sólo se sobreescribe visual.
   - Aplica semántica solicitada a kpi-visitors / active / completed / packages.
   - Neutraliza header día oscuro (#2b405e) con cinta neutra.
   - Unifica focus-visible a --focus-ring.
   ========================================================= */

/* KPI (números y bubble/icon) */
.stat-card.kpi-visitors .stat-icon{
  background: var(--brand-100) !important;
  color: var(--brand-600) !important;
}
.stat-card.kpi-visitors .stat-content h3{
  color: var(--brand-700) !important;
}

.stat-card.kpi-active .stat-icon{
  background: #FEF3C7 !important;
  color: var(--warning-500) !important;
}
.stat-card.kpi-active .stat-content h3{
  color: var(--warning-500) !important;
}

.stat-card.kpi-completed .stat-icon{
  background: #DCFCE7 !important;
  color: var(--success-600) !important;
}
.stat-card.kpi-completed .stat-content h3{
  color: var(--success-600) !important;
}

.stat-card.kpi-packages .stat-icon{
  background: #E2E8F0 !important;
  color: #64748B !important;
}
.stat-card.kpi-packages .stat-content h3{
  color: #475569 !important;
}

/* Ajuste tipografía descriptiva KPI */
.stat-card.kpi-visitors .stat-content p,
.stat-card.kpi-active .stat-content p,
.stat-card.kpi-completed .stat-content p,
.stat-card.kpi-packages .stat-content p{
  color: var(--text-500) !important;
}

/* Cinta día neutra (reemplaza fondo azul oscuro legacy) */
#main-menu .table-day-header.no-collapse{
  background:#EAEFF7 !important;
  position:relative;
}
#main-menu .table-day-header.no-collapse td{
  color:var(--text-700) !important;
  font-size:12px !important;
  font-weight:700 !important;
  letter-spacing:.02em !important;
  text-transform:uppercase;
}
#main-menu .table-day-header.no-collapse:hover{
  background:#EAEFF7 !important;
}

/* Unificación final de focus (accesibilidad AA) */
:where(a,button,[role="button"],input,select,textarea,.nav-item,.btn,.form-control,.form-select):focus-visible{
  outline:none !important;
  box-shadow:var(--focus-ring) !important;
}

/* Garantizar que botones previos oscuros no sobreescriban la paleta final */
.btn-primary{
  background:var(--brand-600) !important;
  border-color:var(--brand-600) !important;
  color:#FFF !important;
}
.btn-primary:hover{
  background:var(--brand-700) !important;
  border-color:var(--brand-700) !important;
}

/* Fin overrides finales UI operativa */

/* =========================================================
   FINAL CLEANUP LEGACY COLORS & BUTTON CONSOLIDATION
   - Normaliza botones en todo el scope (incluye #main-menu)
   - Reemplaza colores duros (#2b405e, #244058, #1d3548, #0A7147) por tokens
   - Refuerza eliminación de header día oscuro con cinta neutra
   - Evita que reglas legacy reintroduzcan sombras/fondos inconsistentes
   ========================================================= */

/* Botón primario unificado */
#main-menu .btn-primary,
#main-menu .card .btn-primary,
.btn-primary{
  background:var(--brand-600) !important;
  border:1px solid var(--brand-600) !important;
  color:#FFFFFF !important;
  box-shadow:none !important;
  border-radius:var(--radius-12) !important;
  min-height:44px;
  font-weight:600;
  padding:10px 16px !important;
}
#main-menu .btn-primary:hover,
.btn-primary:hover{
  background:var(--brand-700) !important;
  border-color:var(--brand-700) !important;
}

/* Override específico actualizado: Escanear DNI con color #2b405e */
#startScanButton {
  background:#2b405e !important;
  border-color:#2b405e !important;
  color:#FFFFFF !important;
  box-shadow:0 2px 4px rgba(0,0,0,0.25) !important;
}

/* Eliminar box-shadow cuando está dentro de card-quick-actions */
.card-quick-actions .quick-actions #startScanButton {
  box-shadow: none !important;
}

#startScanButton:hover { background:#244058 !important; border-color:#244058 !important; }
#startScanButton:active { background:#1d3548 !important; border-color:#1d3548 !important; }

/* Botón secundario unificado */
#main-menu .btn-secondary,
#main-menu .card .btn-secondary,
.btn-secondary{
  background:var(--bg-0) !important;
  color:var(--text-700) !important;
  border:1px solid var(--line-2) !important;
  box-shadow:none !important;
  border-radius:var(--radius-12) !important;
  min-height:44px;
  font-weight:600;
  padding:10px 16px !important;
}
#main-menu .btn-secondary:hover,
.btn-secondary:hover{
  background:var(--bg-2) !important;
  color:var(--text-700) !important;
}

/* Botón éxito (guardar) unificado */
#main-menu .btn-success,
.btn-success{
  background:var(--success-600) !important;
  border:1px solid var(--success-600) !important;
  color:#FFFFFF !important;
  border-radius:var(--radius-12) !important;
  min-height:44px;
  font-weight:600;
  padding:10px 16px !important;
}
#main-menu .btn-success:hover,
.btn-success:hover{
  background:var(--success-700) !important;
  border-color:var(--success-700) !important;
}

/* Focus accesible consistente (sin sombras) */
#main-menu .btn:focus-visible,
#main-menu .form-control:focus-visible,
#main-menu .nav-item:focus-visible,
.btn:focus-visible,
.form-control:focus-visible,
.nav-item:focus-visible{
  outline:none !important;
  box-shadow:none !important;
}

/* Eliminación reforzada de header día oscuro (usa cinta neutra) */
#main-menu .table-day-header.no-collapse,
#main-menu .table-day-header.no-collapse:hover{
  background:#EAEFF7 !important;
}
#main-menu .table-day-header.no-collapse td{
  color:var(--text-700) !important;
  font-size:12px !important;
  font-weight:700 !important;
  letter-spacing:.02em !important;
  text-transform:uppercase;
}

/* Chips legacy (#main-menu .chip*) ya remapeados arriba—no se reintroducen colores duros */

/* Neutralización de cualquier retorno de colores duros en icon buttons */
#main-menu .btn-icon,
.btn-icon{
  background:transparent !important;
  color:var(--text-700) !important;
  border:none !important;
}
#main-menu .btn-icon:hover,
.btn-icon:hover{
  background:var(--bg-2) !important;
  color:var(--brand-600) !important;
}

/* Fin cleanup final */

/* =========================================================
   FINAL NORMALIZATION RADIUS & STRUCTURAL CLEANUP (Operativa)
   - Unifica radios a 12px para contenedores y botones (excepto chips/badges pill).
   - Anula overrides legacy de 16px/18px/20px y pill globales en botones.
   - Mantiene chips (.chip, .badge) como pill (999px).
   - Asegura que tablas de Registro y stat-cards usen radius estándar.
   - No altera IDs ni lógica JS.
   ========================================================= */
:root{
  --radius:12px;
  --radius-sm:8px;
}

/* Contenedores principales */
.card,
.login-card,
.table-wrapper,
.mobile-table-row,
.modal-content,
.overstay-panel,
.stat-card,
.report-generator,
.report-history,
.card.card-registros {
  border-radius: var(--radius-12) !important;
}

/* Cards que habían sido forzadas a 18px / 20px en Registro */
#main-menu .card,
#main-menu .table-wrapper,
#main-menu .card:has(.table-wrapper),
#main-menu .card .table-wrapper,
#main-menu .card:has(.table-wrapper) .table-wrapper {
  border-radius: var(--radius-12) !important;
}

/* Botones (el bloque de tokens ya define variantes; reforzamos removal pill) */
.btn,
.btn-primary,
.btn-secondary,
.btn-success,
.btn-danger,
.btn-ghost,
#main-menu .btn,
#main-menu .btn-primary,
#main-menu .btn-secondary,
#main-menu .btn-success {
  border-radius: var(--radius-12) !important;
  min-height:44px;
  padding:10px 16px !important;
}

/* =============================================================
  FINAL OVERRIDE: Espaciado inferior en panel de edición móvil
  - Fuerza padding-bottom cero y remueve márgenes residuales
  - Aplica siempre (sin media queries) sólo a #editPanel
  ============================================================= */
#editPanel .panel-body { padding-bottom: 0 !important; }
#editPanel .panel-body > :last-child { margin-bottom: 0 !important; }
#editPanel .panel-body > .d-grid:last-child { margin-bottom: 0 !important; }
#editPanel .d-grid { margin-bottom: 0 !important; }
#editPanel #edit-mobile-status { margin-top: 6px !important; margin-bottom: 0 !important; }
#editPanel #edit-mobile-status:empty { display: none !important; }

/* Refuerzo de especificidad para móviles: gana a reglas previas html.is-mobile */
html.is-mobile #editPanel .panel-body { padding-bottom: 0 !important; }
html.is-mobile #editPanel .panel-body > :last-child { margin-bottom: 0 !important; }
html.is-mobile #editPanel .d-grid { margin-bottom: 0 !important; }
html.is-mobile #editPanel #edit-mobile-status { margin-top: 4px !important; margin-bottom: 0 !important; }
html.is-mobile #editPanel #edit-mobile-status:empty { display: none !important; }

/* Botones de acción en una fila (Guardar / Cancelar) dentro del panel de edición */
#editPanel .d-grid {
  display: flex !important;          /* sobreescribe .d-grid (BS) solo aquí */
  flex-direction: row !important;
  gap: 8px;                           /* equivalente a gap-2, por si se pierde */
  margin-bottom: 0 !important;        /* sin espacio extra bajo los botones */
}
#editPanel .d-grid > .btn {
  flex: 1 1 0;                        /* ambos ocupan 50% */
  min-width: 0;                       /* evita overflow por texto */
  margin-bottom: 0 !important;        /* neutraliza posibles márgenes heredados */
}

/* Icon buttons conservan forma circular si se requiere, pero aquí las normalizamos a radius-12
   (si preferís circulares, eliminar esta regla) */
.btn-icon,
#main-menu .btn-icon {
  border-radius: var(--radius-12) !important;
  width:44px;
  height:44px;
}

/* Stat cards / KPI no pill */
.stat-card,
.dashboard-stats .stat-card {
  border-radius: var(--radius-12) !important;
}

/* Chips & badges permanecen pill */
.chip,
.badge,
#main-menu .chip {
  border-radius:999px !important;
}

/* Inputs normalizados (por si quedaron radios mayores) */
.form-control,
.form-select,
textarea.form-control,
.input,
.select,
.textarea,
#main-menu .form-control,
#main-menu input,
#main-menu select {
  border-radius: var(--radius-12) !important;
}

/* Buscador que sí debe seguir pill: se mantiene excepción explícita */
.search-input,
#main-menu .search-input {
  border-radius:999px !important;
}

/* Eliminación visual de cualquier rastro de radio extremo residual */
.stat-card::before { border-radius: var(--radius-12) !important; }

/* Fin normalización radios */

/* Override final: asegurar que las cards sin footer tengan esquinas inferiores redondeadas */
.card.card--nofooter,
.card.card--nofooter > .card-body:last-child {
  border-bottom-left-radius: var(--block-radius, var(--radius-12)) !important;
  border-bottom-right-radius: var(--block-radius, var(--radius-12)) !important;
}
/* Específico para quick actions si otras reglas intermedias lo anulan */
.card-quick-actions.card.card--nofooter,
.card-quick-actions.card.card--nofooter > .card-body:last-child {
  border-bottom-left-radius: var(--block-radius, var(--radius-12)) !important;
  border-bottom-right-radius: var(--block-radius, var(--radius-12)) !important;
}

/* === Contact Card (Configuración) === */
.contact-card { background:#F1FBF6 !important; border:1px solid #C8EEDB !important; }
.contact-card-content{ display:flex; gap:16px; align-items:flex-start; }
.contact-icon-wrapper{ width:48px; height:48px; border-radius:12px; background:#E0F8ED; color:#047857; display:flex; align-items:center; justify-content:center; font-size:22px; }
.contact-texts h2{ color:#06603F; font-weight:600; font-size:18px; }
.contact-texts p{ color:#276049; font-weight:500; margin:0 0 4px; font-size:13px; }
.contact-numbers{ font-size:14px; line-height:1.4; }
.contact-numbers .number-label{ font-weight:600; color:#055C3A; margin-right:4px; }
.contact-numbers .number-values{ font-weight:700; color:#034D31; font-family:inherit; }
@media (max-width: 640px){ .contact-card-content{ flex-direction:column; } }

/* Mobile Topbar (simple, sin truncar títulos) */
@media (max-width: 768px) {
  .topbar {
    position: sticky;
    top: 0;
    height: auto;
    min-height: 0;
    padding: var(--space-8) var(--space-16);
    background: var(--surface);
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: nowrap;
    gap: var(--space-8);
  }

  .topbar-left {
    flex: 1 1 auto;
    min-width: 0;
    flex-direction: row;
    align-items: center;
    gap: var(--space-8);
  }

  .topbar-title {
    font-size: var(--fs-h3);
    line-height: var(--lh-h3);
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    overflow-wrap: anywhere;
  }

  .topbar-actions {
    flex: 0 0 auto;
    align-items: center;
    gap: var(--space-8);
    margin-left: var(--space-8);
  }

  .topbar-actions .user-info span {
    display: none;
  }

  .topbar-actions .user-info {
    background: transparent;
    box-shadow: none;
    border: 0;
    padding: 0;
  }

  .main-wrapper {
    overflow: visible;
    height: auto;
  }

  .content-area {
    overflow: visible;
    height: auto;
    padding-top: var(--space-16);
  }

  html, body {
    height: auto;
  }
}

/* =============================================================
   FIX: Eliminar bloque fantasma de 3 íconos (mobile-action-bar)
   - Se ocultaba a veces y quedaba detrás al hacer scroll
   - Forzamos display none definitivo en móvil
   ============================================================= */
/* =============================================================
   EDIT PANEL – DIMENSIONES COMPACTAS EN MÓVIL (override final)
   - Ventana más chica: ~56vh y 88% de ancho, máx 360px
   - Cuerpo con scroll interno y padding compacto
   - No afecta otros paneles
   ============================================================= */
@media (max-width: 900px) {
  #editPanel {
    width: 92% !important;
    max-width: 420px !important; /* más ancho para que entren campos sin crecer alto */
    height: auto !important;
    max-height: none !important; /* sin límite de alto: evita scroll interno/externo del panel */
  }
  #editPanel .panel-header { padding: 8px 12px !important; }
  #editPanel .panel-title { font-size: 13px !important; }
  #editPanel .panel-body {
    overflow: visible !important; /* sin scroll interno */
    max-height: none !important;  /* asegura que no se recorte el contenido */
    padding: 8px 12px 0 !important; /* más compacto aún y sin padding inferior */
  }
}

/* =============================================================
   EDIT PANEL – FULLSCREEN EN MÓVIL (override final)
   - El panel ocupa toda la pantalla (solo móvil)
   - Sin bordes ni sombra; header + body llenan alto completo
   - Mantiene compacidad previa de paddings/controles
   ============================================================= */
@media (max-width: 768px) {
  #editPanel {
    position: fixed !important;
    inset: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    max-width: none !important;
    max-height: none !important;
    transform: none !important;
    margin: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    overflow: hidden !important; /* sin scroll visible de la ventana */
  }
  #editPanel .panel-header {
    padding: 10px 14px !important;
    border-top-left-radius: 0 !important;
    border-top-right-radius: 0 !important;
  }
  #editPanel .panel-title { font-size: 13px !important; }
  #editPanel .panel-body {
    flex: 1 1 auto !important;
    padding: 10px 14px 0 !important;
    overflow: visible !important; /* sin scroll interno */
    max-height: none !important;
  }
}

/* Overrides finales extra para asegurar que no haya scroll ni límites heredados en #editPanel */
html.is-mobile #editPanel { max-height: none !important; height: auto !important; }
html.is-mobile #editPanel .panel-body { overflow: visible !important; max-height: none !important; }
/* Botonera aún más compacta en esa ventana */
#editPanel .d-grid { gap: 6px !important; }
#editPanel .d-grid > .btn { min-height: 36px !important; padding: 8px 12px !important; }
/* Inputs compactos para reducir altura total del formulario sin perder usabilidad */
#editPanel .form-control, #editPanel .form-select, #editPanel textarea.form-control {
  min-height: 36px !important;
  padding: 8px 10px !important;
}
/* Reducir márgenes verticales de grupos y textos auxiliares dentro del panel */
#editPanel .mb-3 { margin-bottom: 8px !important; }
#editPanel .mb-2 { margin-bottom: 6px !important; }
#editPanel .form-text { font-size: 12px !important; margin-top: 2px !important; }
/* Fijar textarea a ~2 líneas visibles sin scroll interno notorio */
#editPanel #edit-mobile-observaciones { max-height: 64px !important; }
/* (no se requiere regla específica para textarea aquí) */
/* Tipografía ligeramente más chica dentro del panel para ahorrar vertical */
#editPanel .form-label { font-size: 12px !important; margin-bottom: 4px !important; }
#editPanel .form-text { font-size: 12px !important; margin-top: 4px !important; }
/* (removido bloque duplicado y líneas huérfanas inválidas) */
@media (max-width: 900px) {
  #mobile-actions,
  .mobile-action-bar { display:none !important; visibility:hidden !important; pointer-events:none !important; }
}

/* =============================================================
   MOBILE SCAN VIEW COMPACT
   - Reduce altura del video y espacios verticales
   - Mantiene funcionalidad de escaneo
   ============================================================= */
@media (max-width: 768px) {
  #scan-view .page-header { margin-bottom: 8px !important; }
  #scan-view .page-header h1 { font-size:16px !important; margin-bottom:4px !important; }
  #scan-view .page-subtitle { font-size:12px !important; }
  #scan-view .card { margin-bottom:12px !important; }
  #scan-view .card-header { padding:8px 14px !important; }
  #scan-view .scan-indicator { gap:6px !important; }
  #scan-view .scan-text { font-size:11px !important; }
  #scan-view video { height:240px !important; max-height:45vh !important; }
  #scan-view .video-container { max-height:45vh; }
  #scan-view .scan-frame { border-width:2px; width:78%; height:52%; top:22%; left:11%; right:11%; bottom:auto; }
  #scan-view .card-footer { padding:10px 14px !important; }
  #scan-view .card-footer .btn { min-height:38px !important; padding:8px 16px !important; font-size:13px !important; }
  
  /* Igualar escáner de obreros con registros generales */
  #scan-obreros-view .card { margin-bottom:12px !important; }
  #scan-obreros-view .card-header { padding:8px 14px !important; }
  #scan-obreros-view .scan-indicator { gap:6px !important; }
  #scan-obreros-view .scan-text { font-size:11px !important; }
  #scan-obreros-view video { height:240px !important; max-height:45vh !important; }
  #scan-obreros-view .video-container { max-height:45vh; }
  #scan-obreros-view .scan-frame { border-width:2px; width:78%; height:52%; top:22%; left:11%; right:11%; bottom:auto; }
  #scan-obreros-view .card-footer { padding:10px 14px !important; }
  #scan-obreros-view .card-footer .btn { min-height:38px !important; padding:8px 16px !important; font-size:13px !important; }
  
  /* Formulario post-scan (si reutiliza manual) */
  #ingresoManualForm .card-header { padding:12px 16px !important; }
  #ingresoManualForm .card-body { padding:16px 16px 12px !important; }
  #ingresoManualForm .form-group { margin-bottom:14px !important; }
  /* Acciones de fila (desplegable registros) apiladas */
  .mobile-row-actions { flex-direction: row !important; align-items: stretch !important; justify-content: center !important; gap: 12px !important; width:100%; }
  .mobile-row-actions .btn { 
    flex:0 0 auto !important;
    width:48px !important;
    height:48px !important;
    border-radius:50% !important;
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    padding:0 !important;
    gap:0 !important;
  }
  .mobile-row-actions .btn i { margin:0 !important; font-size:20px !important; }
  .mobile-row-actions .btn .btn-text-label { display:none !important; }
  /* Botón Editar móvil: redondo, icon-only (mismo look que egreso) */
  .mobile-row-actions .btn.btn-editar-mobile { 
    width:48px !important; 
    min-width:48px !important; 
    height:48px !important; 
    padding:0 !important; 
    border-radius:50% !important; 
    gap:0 !important; 
    display:flex !important; align-items:center !important; justify-content:center !important;
    background-color: #244058 !important;
    border-color: #244058 !important;
    color: #FFFFFF !important;
  }
  .mobile-row-actions .btn.btn-editar-mobile:hover {
    background-color: #1d3548 !important;
    border-color: #1d3548 !important;
  }
  .mobile-row-actions .btn.btn-editar-mobile .btn-text-label { display:none !important; }
}

/* Override final: asegurar bloque 'En curso' móvil completo amarillo (por si algún estilo posterior interfiere) */
.mobile-day-header.en-curso-header { background:#FEF3C7 !important; width:100% !important; display:block !important; padding:8px 14px 20px 14px !important; border-radius:0 !important; }
.mobile-day-header.en-curso-header h3 { color:#92400E !important; }

/* Override solicitado: color específico para botón "Nuevo registro" en dashboard */
#nuevo-registro-quick {
  background:#3A5687 !important;
  border-color:#3A5687 !important;
  color:#FFFFFF !important;
}
#nuevo-registro-quick:hover {
  background:#354D7A !important; /* tono ligeramente más oscuro para hover */
  border-color:#354D7A !important;
}
#nuevo-registro-quick:active,
#nuevo-registro-quick:focus {
  background:#2F456D !important; /* active/focus */
  border-color:#2F456D !important;
}

/* Botón móvil icono compacto (solo en mobile) */
#nuevo-registro-quick-mobile { display:none; }
@media (max-width:768px){
  #nuevo-registro-quick { display:none !important; }
  #nuevo-registro-quick-mobile { 
    display:inline-flex !important; 
    width:60px !important; height:60px !important; 
    min-width:60px !important; min-height:60px !important; 
    aspect-ratio:1/1; 
    padding:0 !important; margin:0 !important; 
    align-items:center; justify-content:center; 
    border-radius:18px !important; 
    background:#244058 !important; border-color:#244058 !important; color:#FFF !important; 
    box-shadow:0 6px 14px rgba(37,99,235,0.42); 
    line-height:1 !important; gap:0 !important; 
  }
  #nuevo-registro-quick-mobile i { font-size:28px; line-height:1; margin:0 !important; }
  #nuevo-registro-quick-mobile:hover { background:#1d3548 !important; border-color:#1d3548 !important; }
  #nuevo-registro-quick-mobile:active { background:#1d3548 !important; border-color:#1d3548 !important; box-shadow:0 2px 4px rgba(30,64,175,0.45) inset; }
  #nuevo-registro-quick-mobile:focus-visible { outline:0; box-shadow:0 0 0 3px rgba(37,99,235,0.35); }
}

/* ================= Footer SecurIA (desactivado) =================
footer.securia-footer { ... }
*/

/* Modal legal desactivado */
/* .legal-modal { ... } */
@media (prefers-reduced-motion:reduce){ .legal-modal__dialog { scroll-behavior:auto; } }
@media (max-width:600px){
  .legal-modal { padding:32px 8px; }
  .legal-modal__dialog { font-size:12px; }
  .legal-modal__body { padding:22px 20px 26px; }
  .legal-page h1 { font-size:20px; }
  .securia-footer__inner { padding:28px 16px 36px; }
}
.legal-modal.d-none { display:none; }

/* Override tamaño iconos KPI (solicitud: más grandes) */
.dashboard-stats .stat-icon { width:60px !important; height:60px !important; font-size:30px !important; }

/* Modal centrada genérica (edición registro) */
.center-modal { position:fixed; inset:0; z-index:5400; display:flex; align-items:center; justify-content:center; padding:24px 16px; opacity:0; transform:translateY(10px); transition:opacity .18s ease, transform .18s ease; }
#modal-generar-codigo.center-modal { z-index:5500; }
#modal-generar-codigo.center-modal .center-modal__dialog { position:relative; z-index:5501; }
/* Historial con mismo stacking que generar */
#modal-historial-codigos.center-modal { z-index:5500; }
#modal-historial-codigos.center-modal .center-modal__dialog { position:relative; z-index:5501; }
.center-modal.open { opacity:1; transform:translateY(0); }
.center-modal.d-none { display:none; }
.center-modal__dialog { background:#FFFFFF; width:100%; border-radius:24px; box-shadow:0 8px 40px -4px rgba(0,0,0,0.22), 0 2px 6px rgba(0,0,0,0.06); border:1px solid #E2E8F0; display:flex; flex-direction:column; max-height:calc(100vh - 140px); overflow:hidden; position:relative; }
.center-modal__dialog--scan { width:min(100%, 520px); }
.center-modal__header, .center-modal__body, .center-modal__footer { background:#FFFFFF; }
.center-modal__header { border-top-left-radius:24px; border-top-right-radius:24px; }
.center-modal__footer { border-bottom-left-radius:24px; border-bottom-right-radius:24px; }
/* Eliminar cualquier rectángulo detrás: asegurar no hay pseudo ni background en contenedor padre */
.center-modal { background:transparent; }
/* Botón de cierre con padding para separarlo del borde redondeado */
.center-modal__header .modal-close { padding:6px 10px !important; line-height:1; border-radius:8px; }
.center-modal__header .modal-close i { pointer-events:none; }
/* Ajustar botones pegados al borde dentro de footer */
.center-modal__footer { padding:16px 24px 20px; }
.center-modal__header { padding:20px 24px 12px; display:flex; align-items:center; justify-content:space-between; background:#FFFFFF; color:#0f172a; }
.center-modal__dialog--scan .center-modal__header { justify-content:center; }
.center-modal__dialog--scan .center-modal__title { width:100%; text-align:center; }
.center-modal__dialog--scan .center-modal__body { text-align:center; }
.center-modal__title { font-size:18px; font-weight:600; margin:0; }
.center-modal__body { padding:8px 24px 24px; overflow-y:auto; }
/* Ajustes mínimos conservando legibilidad existente */
#gen-codigo-box { font-size:2.2rem; letter-spacing:.35rem; font-weight:600; background:#0F172A; color:#F8FAFC; padding:14px 10px; border-radius:16px; position:relative; }
/* Espaciado consistente entre botones en modales */
#modal-generar-codigo #gen-codigo-actions { gap:12px !important; }
#modal-generar-codigo #gen-codigo-actions { flex-wrap:wrap; }
#modal-generar-codigo #gen-codigo-actions .btn { flex:1 1 auto; min-width:140px; font-weight:600; letter-spacing:.3px; }
#modal-generar-codigo #gen-codigo-actions .btn.btn-success { background:#166534; border-color:#166534; }
#modal-generar-codigo #gen-codigo-actions .btn.btn-success:hover { background:#14532d; border-color:#14532d; }
#modal-generar-codigo #gen-codigo-actions .btn.btn-secondary { background:#F1F5F9; color:#334155; border:1px solid #CBD5E1; }
#modal-generar-codigo #gen-codigo-actions .btn.btn-secondary:hover { background:#E2E8F0; color:#0F172A; }

/* Caja del código más centrada y limpia */
#gen-codigo-result { padding:6px 4px 4px; }
#gen-codigo-result .small.text-muted { font-size:.65rem; letter-spacing:.05em; }
#gen-codigo-box { border:1px solid #1E293B; box-shadow:0 4px 14px -4px rgba(15,23,42,0.45); }
#gen-codigo-box #gen-codigo-value { font-variant-numeric:tabular-nums; }
#btn-copy-codigo { border-radius:8px; padding:4px 8px !important; line-height:1; }
#btn-copy-codigo:hover { background:#334155 !important; }

/* Footer alineado: botón cerrar ancho completo en mobile */
@media (max-width:560px){
  #modal-generar-codigo .center-modal__footer { flex-direction:column; }
  #modal-generar-codigo .center-modal__footer .btn { width:100%; }
}

/* Historial de códigos: refinar tabla */
#modal-historial-codigos .tabla-codigos-hist { border:1px solid #E2E8F0; border-radius:14px; overflow:hidden; background:#FFFFFF; }
#modal-historial-codigos .tabla-codigos-hist thead { background:linear-gradient(90deg,#F1F5F9,#FFFFFF); }
#modal-historial-codigos .tabla-codigos-hist th { padding:8px 10px; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:#334155; border-bottom:1px solid #E2E8F0; }
#modal-historial-codigos .tabla-codigos-hist td { padding:6px 10px; border-bottom:1px solid #F1F5F9; }
#modal-historial-codigos .tabla-codigos-hist tbody tr:last-child td { border-bottom:none; }
#modal-historial-codigos .tabla-codigos-hist tbody tr:hover { background:#F8FAFC; }
#modal-historial-codigos .tabla-codigos-hist code { background:#0F172A; color:#F8FAFC; padding:2px 6px; border-radius:6px; letter-spacing:.15em; font-weight:600; display:inline-block; }
/* Ajustes nuevos para códigos más grandes en historial */
#modal-historial-codigos .tabla-codigos-hist .hist-code { letter-spacing:.35rem !important; }
#modal-historial-codigos .tabla-codigos-hist .btn-copy-code { transition:background .18s, transform .18s, border-color .18s; }
#modal-historial-codigos .tabla-codigos-hist .btn-copy-code:hover { background:#E2E8F0 !important; border-color:#CBD5E1 !important; color:#0F172A !important; }
#modal-historial-codigos .tabla-codigos-hist .btn-copy-code:active { background:#CBD5E1 !important; transform:scale(.94); }
#modal-historial-codigos .tabla-codigos-hist .btn-copy-code.copied { background:#16A34A !important; border-color:#15803D !important; color:#FFFFFF !important; }

/* Contador y acciones equilibradas */
#modal-historial-codigos .center-modal__footer { align-items:center; }
#modal-historial-codigos #historial-codigos-count { font-size:.65rem; font-weight:600; letter-spacing:.08em; }
#modal-historial-codigos .center-modal__footer .btn { font-weight:600; letter-spacing:.25px; }
#modal-historial-codigos .center-modal__footer .btn-outline-danger { --tw-shadow:0 0 0 0 transparent; }
#modal-historial-codigos .center-modal__footer .btn-outline-danger:hover { background:#FEE2E2; }

/* Botón limpiar destacado suavemente */
#btn-limpiar-codigos-vencidos { border-radius:10px; }

/* Pulido tipográfico del título para ambos modales */
#modal-generar-codigo .center-modal__title, #modal-historial-codigos .center-modal__title { font-size:1.15rem; letter-spacing:-.5px; font-weight:600; }

/* Ajuste de espacios verticales internos para mayor armonía */
#modal-generar-codigo .center-modal__body > * + * { margin-top:14px !important; }
#modal-generar-codigo .center-modal__body label.form-label { font-size:.65rem; letter-spacing:.15em; font-weight:600; }
#modal-generar-codigo .center-modal__body select.form-select { font-size:.85rem; }

/* Micro interacción al aparecer el resultado */
#gen-codigo-result.d-none.removing { opacity:0; }
#gen-codigo-result:not(.d-none) { animation:fadeInCode .35s ease; }
@keyframes fadeInCode { from { opacity:0; transform:translateY(6px);} to { opacity:1; transform:translateY(0);} }
#modal-generar-codigo .center-modal__footer, #modal-historial-codigos .center-modal__footer { display:flex; gap:12px; }
#modal-historial-codigos .center-modal__footer .d-flex { gap:12px !important; }
/* Tabla historial sin scroll lateral */
#modal-historial-codigos .tabla-codigos-hist { border-collapse:collapse; }
#modal-historial-codigos .tabla-codigos-hist th { white-space:nowrap; }
#modal-historial-codigos .tabla-codigos-hist td { white-space:nowrap; }
#modal-historial-codigos .tabla-codigos-hist td:nth-child(3) { white-space:normal; word-break:break-word; overflow-wrap:anywhere; }
#modal-historial-codigos .tabla-codigos-hist th { font-size:.62rem; }
#modal-historial-codigos .tabla-codigos-hist td { font-size:.65rem; }
#modal-historial-codigos .tabla-codigos-hist code { font-size:.7rem; }
/* Más espacio entre campos del formulario de edición */
#registroEditModal #registro-edit-form { 
  display:flex !important; 
  flex-direction:column !important; 
  gap:26px !important; /* aumento leve para que se note */
  row-gap:26px !important; 
}
#registroEditModal #registro-edit-form > div { margin:0 !important; padding:0 !important; }
#registroEditModal #registro-edit-form > div label { display:block; margin:0 0 8px 0 !important; }
/* Bloque Observaciones: asegurar que el textarea no pegue con acciones */
#registroEditModal #registro-edit-form textarea { resize:vertical; }

/* ==== FINAL OVERRIDE: Botón Egreso (verde saturado, cuadro de registro) ==== */
#main-menu #scanResults .btn-egreso,
#main-menu .table #scanResults .btn-egreso,
#main-menu .table .btn-egreso {
  background-color: #00C853 !important;
  border-color: #00C853 !important;
  color: #FFFFFF !important;
}
#main-menu #scanResults .btn-egreso .bi,
#main-menu .table #scanResults .btn-egreso .bi,
#main-menu .table .btn-egreso .bi { color:#FFFFFF !important; }
#main-menu #scanResults .btn-egreso:hover,
#main-menu .table #scanResults .btn-egreso:hover,
#main-menu .table .btn-egreso:hover {
  background-color: #00B14A !important;
  border-color: #00B14A !important;
}
#main-menu #scanResults .btn-egreso:active,
#main-menu .table #scanResults .btn-egreso:active,
#main-menu .table .btn-egreso:active {
  background-color: #00A043 !important;
  border-color: #00933F !important;
}
/* Disabled: mantener color con opacidad para no parecer pastel */
#main-menu #scanResults .btn-egreso:disabled,
#main-menu #scanResults .btn-egreso[aria-disabled="true"],
#main-menu .table #scanResults .btn-egreso:disabled,
#main-menu .table #scanResults .btn-egreso[aria-disabled="true"],
#main-menu .table .btn-egreso:disabled,
#main-menu .table .btn-egreso[aria-disabled="true"] {
  background-color: #E2E8F0 !important; /* gris neutro */
  border: none !important;
  color: #475569 !important;
  opacity: 1 !important; /* sin efecto lavado verde */
}

/* Forzar color #FFFFFF en texto/ícono del botón de egreso en todos los estados activos */
#main-menu .table .btn-egreso:not([aria-disabled="true"]):not(:disabled),
#main-menu #scanResults .btn-egreso:not([aria-disabled="true"]):not(:disabled),
.mobile-table-row .btn-egreso:not([aria-disabled="true"]):not(:disabled) {
  color: #FFFFFF !important;
}
#main-menu .table .btn-egreso:not([aria-disabled="true"]):not(:disabled) .bi,
#main-menu #scanResults .btn-egreso:not([aria-disabled="true"]):not(:disabled) .bi,
.mobile-table-row .btn-egreso:not([aria-disabled="true"]):not(:disabled) .bi {
  color: #FFFFFF !important;
}
#main-menu .table .btn-egreso:hover .bi,
#main-menu #scanResults .btn-egreso:hover .bi,
.mobile-table-row .btn-egreso:hover .bi,
#main-menu .table .btn-egreso:active .bi,
#main-menu #scanResults .btn-egreso:active .bi,
.mobile-table-row .btn-egreso:active .bi {
  color: #FFFFFF !important;
}

/* Override global: todos los btn-egreso activos usan el mismo verde puro */
.btn-egreso:not([aria-disabled="true"]):not(:disabled) {
  background-color: #00C853 !important;
  border: none !important;
  color: #FFFFFF !important;
  box-shadow: none !important;
  opacity: 1 !important;
  filter: none !important;
}
.btn-egreso:not([aria-disabled="true"]):not(:disabled):hover {
  background-color: #00B14A !important;
}
.btn-egreso:not([aria-disabled="true"]):not(:disabled):active {
  background-color: #00A043 !important;
}
.btn-egreso:not([aria-disabled="true"]):not(:disabled) .bi {
  color: #FFFFFF !important;
}

/* Quitar contorno/halo de enfoque en btn-egreso (no debe mostrar ring) */
.btn-egreso:focus,
.btn-egreso:focus-visible,
#main-menu .table .btn-egreso:focus,
#main-menu .table .btn-egreso:focus-visible,
#main-menu #scanResults .btn-egreso:focus,
#main-menu #scanResults .btn-egreso:focus-visible,
.mobile-table-row .btn-egreso:focus,
.mobile-table-row .btn-egreso:focus-visible {
  outline: none !important;
  box-shadow: none !important;
  border: none !important;
}

/* En segunda alerta (row-critical) el botón activo conserva el mismo verde saturado */
#main-menu .table tr.row-critical .btn-egreso,
#main-menu #scanResults tr.row-critical .btn-egreso,
.mobile-table-row.row-critical .btn-egreso {
  background-color: #00C853 !important;
  border: none !important;
  color: #FFFFFF !important;
  opacity: 1 !important;
  box-shadow: none !important;
}
#main-menu .table tr.row-critical .btn-egreso:hover,
#main-menu #scanResults tr.row-critical .btn-egreso:hover,
.mobile-table-row.row-critical .btn-egreso:hover {
  background-color: #00B14A !important;
}
#main-menu .table tr.row-critical .btn-egreso:active,
#main-menu #scanResults tr.row-critical .btn-egreso:active,
.mobile-table-row.row-critical .btn-egreso:active {
  background-color: #00A043 !important;
}
#registroEditModal #registro-edit-form .form-actions { 
  margin-top:6px !important; /* antes 12px: ahora más pegado a Observaciones */
  padding-top:0 !important; 
}
#registroEditModal #registro-edit-form .form-control, 
#registroEditModal #registro-edit-form .form-select { padding-top:10px; padding-bottom:10px; }
#registroEditModal #modal-edit-lote-owner { margin-top:6px; }
@media (max-width:640px){
  .center-modal { padding:16px 10px; align-items:center; justify-content:center; }
  .center-modal__dialog { border-radius:14px; }
  .center-modal__title { font-size:16px; }
}

/* Flyout edición registro */
#registro-edit-flyout { position:fixed; top:0; right:0; height:100vh; width:0; overflow:hidden; z-index:1300; pointer-events:none; }
#registro-edit-flyout.open { width:420px; pointer-events:auto; }
#registro-edit-flyout .ref-flyout-panel { position:absolute; top:0; right:-420px; width:420px; max-width:100%; height:100%; background:#FFFFFF; box-shadow:-4px 0 18px -4px rgba(0,0,0,0.18); display:flex; flex-direction:column; border-left:1px solid #E2E8F0; transition: right .22s ease; }
#registro-edit-flyout.visible .ref-flyout-panel { right:0; }
#registro-edit-flyout header { padding:18px 20px 14px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid #E2E8F0; }
#registro-edit-flyout header h3 { font-size:16px; font-weight:600; margin:0; line-height:1.2; }
#registro-edit-flyout .close-flyout { background:transparent; border:0; padding:4px; border-radius:8px; color:#475569; }
#registro-edit-flyout .close-flyout:hover { background:#F1F5F9; color:#1E293B; }
#registro-edit-flyout .flyout-body { padding:18px 20px 32px; overflow-y:auto; flex:1; }
#registro-edit-flyout .edit-form-stack .form-group { margin-bottom:16px; }
#registro-edit-flyout .edit-form-stack label { font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:#475569; margin-bottom:4px; display:block; }
#registro-edit-flyout .edit-form-stack input.form-control,#registro-edit-flyout .edit-form-stack textarea.form-control { font-size:14px; }
@media (max-width:640px){
  #registro-edit-flyout.open { width:100%; }
  #registro-edit-flyout .ref-flyout-panel { width:100%; }
}

/* =============================
   Eventos (tabla unificada estilo registro)
   ============================= */
#card-eventos-lista .card-header.registros-header-inline-wrapper {
  flex-wrap: nowrap !important;
  align-items: center !important;
}
#eventos-view .eventos-list .evento-card {
  border:1px solid #E2E8F0;
  background:#FFFFFF;
  border-radius:16px;
  padding:18px 20px 20px;
  display:flex;
  flex-direction:column;
  gap:14px;
  box-shadow:0 2px 4px rgba(15,23,42,0.04);
}
#eventos-view .eventos-list .evento-card .ev-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
#eventos-view .eventos-list .evento-card .ev-head > div:first-child { display:flex; flex-direction:column; gap:6px; }
#eventos-view .eventos-list .evento-card .ev-meta { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
#eventos-view .eventos-list .evento-card .ev-title { font-size:15px; font-weight:600; letter-spacing:-.2px; color:#1E293B; margin-top:4px; padding-top:2px; }
#eventos-view .eventos-list .evento-card .ev-chip { background:#F1F5F9; color:#475569; font-size:11px; font-weight:600; letter-spacing:.4px; padding:4px 10px; border-radius:40px; display:inline-flex; align-items:center; gap:4px; }
#eventos-view .eventos-list .evento-card .ev-chip-completo { background:#DCFCE7; color:#166534; border:1px solid #86EFAC; box-shadow:0 0 0 1px #86EFAC33 inset; animation:evBadgeIn .35s ease; }
@keyframes evBadgeIn { from { transform:scale(.85); opacity:0; } to { transform:scale(1); opacity:1; } }
#eventos-view .eventos-list .evento-card .ev-chip-date { background:#DBEAFE; color:#2b405e; }
#eventos-view .eventos-list .evento-card .ev-chip-lote { background:#EFF6FF; color:#2b405e; border:1px solid #DBEAFE; }
#eventos-view .eventos-list .evento-card .ev-chip-casa { background:#DCFCE7; color:#166534; border:1px solid #86EFAC; }
#eventos-view .eventos-list .evento-card .ev-chip-sum { background:#FEF3C7; color:#92400E; border:1px solid #FCD34D; }
#eventos-view .eventos-list .evento-card .ev-chip-created { background:#EEF2F7; }
#eventos-view .eventos-list .evento-card .ev-chip-title { background:#FDF2F8; color:#86198F; border:1px solid #FBCFE8; }
#eventos-view .eventos-list .evento-card .ev-chip-owner { background:#E0F2FE; color:#075985; border:1px solid #7DD3FC; }
#eventos-view .eventos-list .evento-card .ev-chip-ingresados { background:#E7F5E8; color:#166534; border:1px solid #86EFAC; }
#eventos-view .eventos-list .evento-card .ev-chip-header { 
  background:#DBEAFE;
  color:#2b405e;
  border:1px solid #93C5FD;
  font-weight:600;
  font-size:14px;
  padding:6px 14px;
  letter-spacing:.2px;
  box-shadow:0 1px 2px rgba(30,58,138,0.25);
  /* Ajuste: reducir redondeo para que no se vea tipo píldora y se integre con el rectángulo del card */
  border-radius:10px;
}
#eventos-view .eventos-list .evento-card .ev-ingresados-text { line-height:1; }
#eventos-view .eventos-list .evento-card .ev-header-text { display:inline-flex; align-items:center; }
#eventos-view .eventos-list .evento-card .ev-desc { font-size:12px; line-height:1.4; color:#475569; background:#F8FAFC; border:1px solid #E2E8F0; padding:10px 12px; border-radius:10px; }
#eventos-view .eventos-list .evento-card .ev-block { display:flex; flex-direction:column; gap:6px; }
#eventos-view .eventos-list .evento-card .ev-block-label { font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.5px; color:#64748B; }
#eventos-view .eventos-list .evento-card .ev-inv-list { display:flex; flex-direction:column; gap:8px; margin-top:8px; }
#eventos-view .eventos-list .evento-card .ev-inv-item { 
  display:grid;
  grid-template-columns: 1fr auto auto;
  align-items:center;
  gap:12px;
  font-size:13px;
  padding:6px 12px;
  background:#FAFBFC;
  border:1px solid #E2E8F0;
  border-radius:8px;
  font-weight:500;
  color:#334155;
  min-height:auto;
}
#eventos-view .eventos-list .evento-card .ev-inv-item:nth-child(odd) { background:#F8F9FA; }
#eventos-view .eventos-list .evento-card .ev-inv-info { display:flex; flex-direction:column; gap:0; line-height:1.3; }
#eventos-view .eventos-list .evento-card .ev-inv-info strong { font-size:13px; font-weight:600; color:#1E293B; line-height:1.4; }
#eventos-view .eventos-list .evento-card .ev-inv-info small { font-size:11px; color:#64748B; line-height:1.3; }
#eventos-view .eventos-list .evento-card .ev-inv-status { display:flex; align-items:center; justify-content:flex-start; }
#eventos-view .eventos-list .evento-card .ev-inv-actions { display:flex; align-items:center; justify-content:flex-end; }
#eventos-view .eventos-list .evento-card .ev-inv-actions button {
  width:32px;
  height:32px;
  padding:0;
  border-radius:50%;
  border:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:14px;
  cursor:pointer;
  transition:background .15s, box-shadow .15s;
}
#eventos-view .eventos-list .evento-card .ev-inv-actions button:not(:disabled):hover {
  box-shadow:0 2px 6px rgba(0,0,0,.15);
}
#eventos-view .eventos-list .evento-card .ev-inv-actions button:disabled {
  opacity:0.4;
  cursor:not-allowed;
}
#eventos-view .eventos-list .evento-card .ev-inv-actions button i { pointer-events:none; }
#eventos-view .eventos-list .evento-card .ev-inv-empty { font-size:12px; font-style:italic; opacity:.65; }
/* Resaltado temporal tras escaneo de invitado - solo color por 500ms */
#eventos-view .eventos-list .evento-card .ev-inv-item.scan-flash {
  background:#DBEAFE !important;
  animation:scanFlashBg 0.5s ease-in-out forwards;
  transition:background 0.3s ease;
}
@keyframes scanFlashBg {
  0% { background:#BFDBFE; }
  50% { background:#DBEAFE; }
  100% { background:#F1F5F9; }
}

/* Animación de entrada genérica para el popup (keyframe referenciado inline) */
@keyframes popupIn { from { opacity:0; transform:translateY(12px) scale(.96); } to { opacity:1; transform:translateY(0) scale(1); } }
#eventos-view .eventos-list .evento-card .ev-inv-item .inv-actions { display:flex; align-items:center; gap:6px; }
#eventos-view .eventos-list .evento-card .btn-egresar-inv { width:30px; height:30px; padding:0; border-radius:50%; background:#FEF3C7; border:1px solid #FCD34D; color:#92400E; display:inline-flex; align-items:center; justify-content:center; font-size:14px; cursor:pointer; box-shadow:0 1px 2px rgba(0,0,0,.15); transition:background .18s, transform .18s, box-shadow .18s; }
#eventos-view .eventos-list .evento-card .btn-egresar-inv:hover { background:#FDE68A; }
#eventos-view .eventos-list .evento-card .btn-egresar-inv:active { background:#FCD34D; transform:scale(.92); box-shadow:0 1px 2px rgba(0,0,0,.10); }
#eventos-view .eventos-list .evento-card .btn-egresar-inv i { pointer-events:none; }
#eventos-view .eventos-list .evento-card .inv-chip-egresado { background:#E4F7EE; color:#0B5E3A; font-size:10px; font-weight:600; padding:4px 8px; border-radius:40px; letter-spacing:.4px; }
/* Botón de cámara removido: ocultar completamente (mantener posible HTML legacy sin romper layout) */
#eventos-view .eventos-list .evento-card .btn-scan-inv { display:none !important; }
#eventos-view .eventos-list .evento-card .btn-scan-inv:hover { display:none !important; }
#eventos-view .eventos-list .evento-card .btn-scan-inv:active { display:none !important; }
#eventos-view .eventos-list .evento-card .btn-scan-inv i { display:none !important; }
/* Botón ingresar manual */
#eventos-view .eventos-list .evento-card .btn-ingresar-inv { width:30px; height:30px; padding:0; border-radius:50%; background:#16A34A; border:1px solid #15803D; color:#FFFFFF; display:inline-flex; align-items:center; justify-content:center; font-size:14px; cursor:pointer; box-shadow:0 1px 2px rgba(0,0,0,.15); transition:background .18s, transform .18s; }
#eventos-view .eventos-list .evento-card .btn-ingresar-inv:hover { background:#149043; }
#eventos-view .eventos-list .evento-card .btn-ingresar-inv:active { background:#107537; transform:scale(.92); }
#eventos-view .eventos-list .evento-card .btn-ingresar-inv i { pointer-events:none; }
/* Estado deshabilitado (invitado egresado) */
/* Estados disabled innecesarios al estar oculto */
#eventos-view .eventos-list .evento-card .btn-scan-inv[disabled],
#eventos-view .eventos-list .evento-card .btn-scan-inv:disabled,
#eventos-view .eventos-list .evento-card .btn-scan-inv[disabled]:hover,
#eventos-view .eventos-list .evento-card .btn-scan-inv:disabled:hover,
#eventos-view .eventos-list .evento-card .btn-scan-inv[disabled]:active,
#eventos-view .eventos-list .evento-card .btn-scan-inv:disabled:active { display:none !important; }
/* Collapsible eventos */
#eventos-view .eventos-list .evento-card.evento-collapsible { transition: background .18s ease; }
#eventos-view .eventos-list .evento-card .ev-head.ev-toggle { cursor:pointer; position:relative; }
#eventos-view .eventos-list .evento-card .ev-head.ev-toggle:focus { outline:2px solid var(--brand-400); outline-offset:2px; }
#eventos-view .eventos-list .evento-card .ev-head .ev-chip-collapse-indicator { font-size:12px; background:var(--brand-50); color:var(--brand-600); padding:2px 6px; border-radius:12px; transition:transform .25s ease; display:inline-flex; align-items:center; justify-content:center; }
#eventos-view .eventos-list .evento-card.evento-open .ev-head .ev-chip-collapse-indicator { transform:rotate(180deg); }
#eventos-view .eventos-list .evento-card .ev-collapsible { overflow:hidden; animation:evCollapsibleIn .28s ease; }
@keyframes evCollapsibleIn { from { opacity:0; transform:translateY(-4px); } to { opacity:1; transform:translateY(0); } }
@media (max-width:768px){
  #card-eventos-lista .card-header {
    flex-direction: column !important;
    align-items: center !important;
    gap: 12px !important;
    padding: 12px 14px !important;
  }
  #card-eventos-lista .card-header h1 {
    text-align: center !important;
    width: 100% !important;
    order: 1;
  }
  #card-eventos-lista .card-header > div {
    width: 100% !important;
    flex-direction: column !important;
    gap: 10px !important;
    order: 2;
  }
  #card-eventos-lista .search-container {
    width: 100% !important;
    max-width: none !important;
  }
  #card-eventos-lista .search-container .search-input-wrapper {
    width: 100% !important;
  }
  #card-eventos-lista .search-container .search-input {
    width: 100% !important;
  }
  #card-eventos-lista #eventos-results-count {
    text-align: center !important;
    width: 100% !important;
    min-width: auto !important;
  }
}
@media (max-width:640px){
  #eventos-view .eventos-list .evento-card { padding:16px 14px 18px; gap:12px; }
  #eventos-view .eventos-list .evento-card .ev-title { font-size:14px; }
  #eventos-view .eventos-list .evento-card .ev-chip { font-size:10px; padding:4px 8px; }
  #eventos-view .eventos-list .evento-card .ev-inv-item { 
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "info status"
      "info actions";
    gap:6px 12px;
    font-size:12px;
    padding:12px;
  }
  #eventos-view .eventos-list .evento-card .ev-inv-info { grid-area:info; }
  #eventos-view .eventos-list .evento-card .ev-inv-status { grid-area:status; align-self:start; }
  #eventos-view .eventos-list .evento-card .ev-inv-actions { grid-area:actions; justify-content:flex-end; align-self:start; }
  #eventos-view .eventos-list .evento-card .ev-inv-info strong { font-size:13px; }
  #eventos-view .eventos-list .evento-card .ev-inv-info small { font-size:11px; }
}
#eventos-view #eventos-table {
  border-collapse: separate;
  border-spacing: 0;
  background: #FFFFFF;
  width: 100%;
  border: 1px solid #E2E8F0;
  border-left:0; border-right:0; /* usar bordes solo horizontales para integrarse con la card */
}
#eventos-view #eventos-table thead th {
  background: #F5F7FA;
  font-size: 11px;
  letter-spacing: .06em;
  font-weight: 600;
  text-transform: uppercase;
  color: #768299;
  padding: 10px 12px;
  border-bottom: 1px solid #E2E8F0;
}
#eventos-view #eventos-table tbody td {
  font-size: 14px;
  font-weight: 500;
  color: #5B6475;
  padding: 10px 12px;
  border-bottom: 1px solid #E2E8F0;
  background: transparent;
}
#eventos-view #eventos-table tbody tr:nth-of-type(even) td { background:#FAFBFD; }
#eventos-view #eventos-table tbody tr td:nth-child(1),
#eventos-view #eventos-table tbody tr td:nth-child(2) {
  font-weight:600; color:#2b405e;
}
#eventos-view #eventos-table tbody tr:hover td { background:transparent; }
#eventos-view #eventos-table .small.text-muted { font-size:11px; }
/* Lista vertical de invitados */
#eventos-view #eventos-table .ev-inv-list { display:flex; flex-direction:column; gap:2px; max-height:150px; overflow-y:auto; scrollbar-width:thin; }
#eventos-view #eventos-table .ev-inv-list::-webkit-scrollbar { width:6px; }
#eventos-view #eventos-table .ev-inv-list::-webkit-scrollbar-thumb { background:#CBD5E1; border-radius:4px; }
#eventos-view #eventos-table .ev-inv-item { font-size:12px; line-height:1.25; padding:2px 4px; border-radius:4px; background:rgba(226,232,240,.35); color:#334155; font-weight:500; }
#eventos-view #eventos-table .ev-inv-item:nth-child(odd){ background:rgba(241,245,249,.6); }
@media (max-width: 640px){
  #eventos-view #eventos-table { table-layout: auto; }
  #eventos-view #eventos-table tbody td { white-space:nowrap; }
  #eventos-view { overflow-x:auto; }
}

/* =========================================================
   Ajuste estético (2025-09-29): indicadores topbar menos redondos
   - Solo radios. No cambia tamaños ni comportamiento.
   - Fácil de revertir eliminando este bloque.
   ========================================================= */
.topbar .btn-icon,
#overstayBell,
.topbar .notification-bell,
#logoutButton,
#searchButton {
  border-radius: 10px !important; /* antes 50% */
}

/* Mantener mismo radio en hover (antes volvía a 50%) */
#logoutButton:hover { border-radius:10px !important; }

.topbar .user-info {
  border-radius: 12px !important; /* antes 9999px (píldora completa) */
}

/* =============================================================
   ESTILOS PARA CAMPOS PERSONALIZADOS DE VEHÍCULO
   ============================================================= */

/* Contenedor para los detalles condicionales */
#cedula-details, #seguro-details {
  background-color: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 16px;
  margin-top: 12px;
}

/* Toggle Switch Moderno */
.toggle-switch {
  position: relative;
  display: inline-block;
  width: 52px;
  height: 28px;
}

.toggle-switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.toggle-slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #cbd5e1;
  transition: .4s;
  border-radius: 28px;
}

.toggle-slider:before {
  position: absolute;
  content: "";
  height: 20px;
  width: 20px;
  left: 4px;
  bottom: 4px;
  background-color: white;
  transition: .4s;
  border-radius: 50%;
}

input:checked + .toggle-slider {
  background-color: #2b405e; /* Color de marca */
}

input:focus + .toggle-slider {
  box-shadow: 0 0 1px #2b405e;
}

input:checked + .toggle-slider:before {
  transform: translateX(24px);
}

/* =============================================================
   ESTILOS MEJORADOS PARA FORMULARIO MANUAL
   ============================================================= */

/* Card del formulario con sombra más suave */
/* ========================================
   FORMULARIO MODERNO - REDISEÑO MINIMALISTA
   ======================================== */

/* Contenedor principal del formulario */
#ingresoManualForm {
  padding: 0;
}

/* Tarjeta principal - Fondo blanco flotante */
.modern-form-card {
  background: #FFFFFF;
  border-radius: 16px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 8px 24px rgba(0, 0, 0, 0.06);
  border: none;
  padding: 10px 5px;
  margin-bottom: 24px;
}

/* Grid de 1 columna - Info personal arriba, motivo abajo */
.form-grid-columns {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  margin-bottom: 0;
}
/* Campos de vehículo ocupan todo el ancho (debajo de ambas columnas) */
#campos-personalizados-container {
  grid-column: 1 / -1;
  margin-top: 24px;
  padding-top: 32px;
  border-top: 1px solid #E2E8F0;
  animation: slideDown 0.3s ease-out;
}

/* Títulos de sección - Jerarquía clara */
.form-section-title {
  font-size: 18px;
  font-weight: 600;
  color: #1A202C;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  gap: 10px;
  letter-spacing: -0.02em;
}

.form-section-title i {
  color: var(--brand);
  font-size: 22px;
}

/* Labels minimalistas */
.form-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-weight: 500;
  font-size: 13px;
  color: #64748B;
  margin-bottom: 6px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  white-space: nowrap;
}

.form-label i {
  color: var(--brand);
  font-size: 14px;
  opacity: 0.7;
}

/* Labels responsive para lote */
.label-mobile-only {
  display: none;
}

.label-desktop-only {
  display: inline;
}

@media (max-width: 768px) {
  .label-mobile-only {
    display: inline;
  }
  
  .label-desktop-only {
    display: none;
  }
}

/* Inputs minimalistas */
.manual-form .form-control,
.manual-form .form-select,
.manual-form .textarea {
  border: 1px solid #E2E8F0;
  border-radius: 8px;
  padding: 6px 5px;
  font-size: 15px;
  color: #1A202C;
  background: #FFFFFF;
  transition: all 0.2s ease;
  height: 48px;
  font-family: var(--font-family);
}

.manual-form .form-control:focus,
.manual-form .form-select:focus,
.manual-form .textarea:focus {
  outline: none;
  border-color: #E5E7EB;
  box-shadow: none;
}

.manual-form .textarea {
  height: auto;
  resize: vertical;
  min-height: 90px;
  font-family: var(--font-family);
}

.manual-form .form-control:hover,
.manual-form .form-select:hover,
.manual-form .textarea:hover {
  border-color: #CBD5E1;
}

/* Placeholder mejorado */
.manual-form .form-control::placeholder,
.manual-form .textarea::placeholder {
  color: #94A3B8;
  font-size: 14px;
}

/* Select con mejor estilo */
.manual-form .form-select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23475569' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 16px;
  padding-right: 40px;
}

/* Form text (info propietario) */
.form-text {
  margin-top: 6px;
  font-size: 13px;
  color: #64748B;
  display: flex;
  align-items: center;
  gap: 4px;
}

.form-text i {
  font-size: 14px;
  color: var(--brand);
}

.form-text .fw-medium {
  font-weight: 600;
}

.form-text .text-primary {
  color: var(--brand) !important;
}

/* Botones del footer mejorados */
.modern-form-card .card-footer {
  background-color: #F8FAFC;
  border-top: 1px solid #E2E8F0;
  padding: 20px 24px;
  display: flex;
  justify-content: flex-end;
  gap: 12px;
}

/* Botones del formulario - Rediseño */
.modern-form-card .card-footer {
  background: transparent;
  border: none;
  padding: 32px 0 0 0;
  display: flex;
  align-items: center;
  gap: 12px;
  justify-content: flex-end;
}

.modern-form-card .btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 28px;
  font-weight: 600;
  font-size: 15px;
  border-radius: 10px;
  transition: all 0.2s ease;
  border: none;
  cursor: pointer;
}

.modern-form-card .btn i {
  font-size: 16px;
}

/* Botón PRIMARIO - Verde con sombra */
.modern-form-card .btn-success {
  background: linear-gradient(135deg, #10B981 0%, #059669 100%);
  color: #FFFFFF;
  box-shadow: 0 4px 12px rgba(16, 185, 129, 0.25);
}

.modern-form-card .btn-success:hover {
  background: linear-gradient(135deg, #059669 0%, #047857 100%);
  box-shadow: 0 6px 16px rgba(16, 185, 129, 0.35);
  transform: translateY(-2px);
}

.modern-form-card .btn-success:active {
  transform: translateY(0);
  box-shadow: 0 2px 8px rgba(16, 185, 129, 0.2);
}

/* Botón SECUNDARIO - Ghost style (Limpiar) */
.modern-form-card .btn-secondary {
  background: transparent;
  color: #64748B;
  border: 1.5px solid #CBD5E1;
}

.modern-form-card .btn-secondary:hover {
  background: #F8FAFC;
  border-color: #94A3B8;
  color: #475569;
}

/* Botón CANCELAR - Texto simple */
.modern-form-card #backButton {
  background: transparent;
  color: #64748B;
  border: none;
  padding: 14px 20px;
  font-weight: 500;
}

.modern-form-card #backButton:hover {
  background: #F1F5F9;
  color: #475569;
}

/* Sección de vehículo (cuando aparece) */
#campos-personalizados-container,
#campos-vehiculo-obreros-container {
  animation: slideDown 0.3s ease-out;
  margin-top: 20px;
}

#campos-personalizados-container .form-section,
#campos-vehiculo-obreros-container .form-section {
  background-color: #F8FBFF;
  border: 1.5px solid #F0F4F8;
  border-radius: 12px;
  padding: 24px;
  box-sizing: border-box;
  overflow: hidden;
}

#campos-personalizados-container .form-section-title,
#campos-vehiculo-obreros-container .form-section-title {
  color: #0369A1;
  margin-bottom: 16px;
  font-size: 16px;
  font-weight: 600;
}

/* Form-row en campos de vehículo: grid de 2 columnas */
#campos-personalizados-container .form-row,
#campos-vehiculo-obreros-container .form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-bottom: 16px;
}

/* Patente row: solo ocupa el ancho necesario */
#campos-personalizados-container .patente-row,
#campos-vehiculo-obreros-container .patente-row {
  grid-template-columns: auto;
  max-width: 350px;
}

/* Vehicle sections row: mantiene 2 columnas */
#campos-personalizados-container .vehicle-sections-row,
#campos-vehiculo-obreros-container .vehicle-sections-row {
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

/* Columna de cada sección (cédula/seguro) */
.vehicle-section-column {
  display: flex;
  flex-direction: column;
  gap: 12px;
  box-sizing: border-box;
  min-width: 0;
  overflow: hidden;
}

/* Checkbox arriba de todo */
.vehicle-checkbox {
  padding: 10px;
  background: #FFFFFF;
  border: 1px solid #FEF3C7;
  border-radius: 8px;
}

/* Contenedor de detalles (inputs debajo del checkbox) */
.vehicle-details-container {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px;
  background: #EFF6FF;
  border-radius: 8px;
  margin-top: 12px;
  box-sizing: border-box;
  overflow: hidden;
}

#campos-personalizados-container .form-row:last-child,
#campos-vehiculo-obreros-container .form-row:last-child {
  margin-bottom: 0;
}

/* Form-group en campos de vehículo: vertical */
#campos-personalizados-container .form-group,
#campos-vehiculo-obreros-container .form-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
  box-sizing: border-box;
  max-width: 100%;
}

/* Labels más pequeños en campos de vehículo - mismo color que labels principales */
#campos-personalizados-container .form-label-sm,
#campos-vehiculo-obreros-container .form-label-sm {
  font-size: 11px;
  font-weight: 600;
  color: #2b405e;
  background: #EEF2FF;
  padding: 8px 12px;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  align-self: flex-start;
  max-width: 100%;
  word-wrap: break-word;
  white-space: normal;
  box-sizing: border-box;
}

/* Inputs más compactos */
#campos-personalizados-container .form-control-sm,
#campos-vehiculo-obreros-container .form-control-sm {
  height: 40px;
  font-size: 13px;
}

/* Checkboxes con mejor espaciado */
#campos-personalizados-container .form-check,
#campos-vehiculo-obreros-container .form-check {
  padding: 10px;
  background: #FFFFFF;
  border: 1px solid #E5E7EB;
  border-radius: 8px;
  box-sizing: border-box;
  max-width: 100%;
}

#campos-personalizados-container .form-check-label,
#campos-vehiculo-obreros-container .form-check-label {
  font-size: 13px;
  font-weight: 500;
  color: #2b405e;
  word-wrap: break-word;
  white-space: normal;
}

/* Botones de acción cuando hay campos de vehículo */
#campos-personalizados-container ~ .form-footer-bottom {
  margin-top: 24px;
  padding-top: 24px;
  border-top: 1px solid #E2E8F0;
  display: flex;
  justify-content: flex-end;
  gap: 12px;
}

/* Responsive específico para campos personalizados */
@media (max-width: 768px) {
  #campos-personalizados-container .form-section {
    padding: 16px;
  }
  
  #campos-personalizados-container .form-section-title {
    font-size: 14px;
    margin-bottom: 12px;
  }

  /* Todas las rows en 1 columna */
  #campos-personalizados-container .form-row,
  #campos-personalizados-container .patente-row,
  #campos-personalizados-container .vehicle-sections-row {
    grid-template-columns: 1fr;
    gap: 12px;
    max-width: 100%;
  }
  
  /* Footer bottom en mobile: stack vertical */
  .form-footer-bottom {
    flex-direction: column;
    gap: 8px;
  }
  
  .form-footer-bottom .btn {
    width: 100%;
  }
  
  /* Footer inline en mobile: stack vertical */
  .form-row-with-footer {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  
  .form-footer-inline {
    width: 100%;
    flex-direction: column;
  }
  
  .form-footer-inline .btn {
    width: 100%;
  }
}

@keyframes slideDown {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ========================================
   FORMULARIO COMPACTO - Campos Vehículo
   ======================================== */

/* Grupo compacto con menos margen */
.form-group-compact {
  margin-bottom: 12px;
}

/* Label más pequeño */
.form-label-sm {
  font-size: 12px;
  font-weight: 600;
  margin-bottom: 4px;
  color: var(--muted);
}

/* Input más pequeño */
.form-control-sm {
  height: 38px;
  padding: 8px 10px;
  font-size: 13px;
  border-radius: 8px;
}

/* Checkbox styling */
.form-check {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}

.form-check-input {
  width: 18px;
  height: 18px;
  cursor: pointer;
  border: 2px solid #D1D5DB;
  border-radius: 4px;
  transition: all 0.2s;
}

.form-check-input:checked {
  background-color: var(--brand);
  border-color: var(--brand);
}

.form-check-input:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(31, 58, 138, 0.1);
}

.form-check-label {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  cursor: pointer;
  user-select: none;
  display: flex;
  align-items: center;
  gap: 6px;
}

.form-check-label i {
  font-size: 16px;
  color: var(--brand);
}

/* ========================================
   RESPONSIVE - MÓVIL
   ======================================== */

@media (max-width: 768px) {
  /* Grid a 1 columna en móvil */
  .form-grid-columns {
    grid-template-columns: 1fr;
    gap: 20px;
  }

  /* Tarjeta principal más compacta */
  .modern-form-card {
    padding: 10px 5px;
    border-radius: 12px;
  }

  /* Campos de vehículo */
  #campos-personalizados-container {
    margin-top: 20px;
    padding-top: 20px;
  }

  /* Botones de motivo: 3 columnas en móvil */
  .motivo-buttons-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    display: flex;
    flex-wrap: wrap;
  }
  
  /* Reordenamiento de botones de motivo SOLO en formulario de registros generales */
  #ingresoManualForm .motivo-buttons-grid .motivo-btn {
    flex: 0 0 calc(33.333% - 6px);
  }
  
  /* Pedidos Ya - primero */
  #ingresoManualForm .motivo-btn[data-motivo="Pedidos Ya"] {
    order: 1;
  }
  
  /* Uber - segundo */
  #ingresoManualForm .motivo-btn[data-motivo="Uber"] {
    order: 2;
  }
  
  /* Taxi - tercero */
  #ingresoManualForm .motivo-btn[data-motivo="Taxi"] {
    order: 3;
  }

  /* Cadetería - cuarto */
  #ingresoManualForm .motivo-btn[data-motivo="Cadetería"] {
    order: 4;
  }
  
  /* Amigos y familia - quinto */
  #ingresoManualForm .motivo-btn[data-motivo="Amigos y familia"] {
    order: 5;
  }
  
  /* Empleada doméstica - sexto */
  #ingresoManualForm .motivo-btn[data-motivo="Empleada doméstica"] {
    order: 6;
  }
  
  /* Personal de Trabajo - séptimo */
  #ingresoManualForm .motivo-btn[data-motivo="Personal de Trabajo"] {
    order: 7;
  }
  
  /* Otros - octavo */
  #ingresoManualForm .motivo-btn[data-motivo="Otros"] {
    order: 8;
  }

  /* Títulos más pequeños */
  .form-section-title {
    font-size: 16px;
    margin-bottom: 16px;
  }

  .form-section-title i {
    font-size: 18px;
  }

  /* En móvil: labels arriba (vertical) */
  .manual-form .form-group {
    grid-template-columns: 1fr;
    gap: 6px;
    margin-bottom: 12px;
  }

  .manual-form .form-group-vertical {
    gap: 6px;
  }

  .manual-form .form-label {
    padding: 5px 10px;
    font-size: 10px;
    justify-content: flex-start;
    height: auto;
  }

  .manual-form .form-label i {
    font-size: 11px;
  }

  .manual-form .form-control,
  .manual-form .form-select {
    padding-left: 5px;
    font-size: 14px;
  }

  /* Inputs más pequeños */
  .manual-form .form-control,
  .manual-form .form-select {
    padding: 6px 5px;
    font-size: 14px;
    height: 44px;
  }

  .manual-form .textarea {
    min-height: 120px;
    font-size: 14px;
    font-family: var(--font-family);
  }

  /* Grid de form-row a 1 columna */
  .manual-form .form-row {
    grid-template-columns: 1fr;
    gap: 4px;
  }

  /* Convertir SOLO la primera form-column en flex para poder reordenar */
  .manual-form .form-column:first-child {
    display: flex;
    flex-direction: column;
    gap: 4px;
  }

  /* El h3 mantiene su posición */
  .manual-form .form-column:first-child .form-section-title {
    order: 0;
  }

  /* Primer form-row usa display:contents para que DNI y LOTE sean hermanos directos */
  .manual-form .form-column:first-child .form-row:nth-child(2) {
    display: contents;
  }

  /* Segundo form-row normal */
  .manual-form .form-column:first-child .form-row:nth-child(3) {
    display: flex;
    flex-direction: column;
    order: 2;
    gap: 4px;
  }

  /* Ordenar: DNI(1) → APELLIDO/NOMBRE(2) → LOTE(3) */
  .manual-form .form-column:first-child .form-row:nth-child(2) .form-group:nth-child(1) {
    order: 1; /* DNI primero */
  }
  .manual-form .form-column:first-child .form-row:nth-child(2) .form-group:nth-child(2) {
    order: 3; /* LOTE último */
  }

  /* Botones footer */
  .modern-form-card .card-footer {
    padding-top: 24px;
    flex-direction: column-reverse;
    gap: 10px;
  }

  .modern-form-card .btn {
    width: 100%;
    justify-content: center;
    padding: 12px 20px;
  }

  /* Compresión extra para campos de vehículo */
  .form-group-compact {
    margin-bottom: 10px;
  }

  .form-label-sm {
    font-size: 10px;
    margin-bottom: 4px;
  }

  .form-control-sm {
    height: 40px;
    padding: 8px 10px;
    font-size: 13px;
  }

  .form-check {
    margin-bottom: 8px;
  }

  .form-check-label {
    font-size: 12px;
  }

  .form-check-input {
    width: 16px;
    height: 16px;
  }

  #cedula-details,
  #seguro-details {
    margin-top: 8px !important;
  }
}

/* ========================================
   BOTONES DE MOTIVO - TARJETAS MINIMALISTAS
   ======================================== */

.motivo-buttons-grid {
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 12px;
  margin-top: 12px;
}

/* Hacer que el contenedor del grid de motivos ocupe todo el ancho */
.form-row:has(.motivo-buttons-grid) {
  grid-template-columns: 1fr;
}

.form-group:has(.motivo-buttons-grid) {
  grid-column: 1 / -1;
  display: block;
}

/* Estilos de sidebar para desktop (fondo oscuro) y mobile (fondo blanco) */
@media (min-width: 769px) {
  .sidebar {
    background: linear-gradient(180deg, #24324f 0%, #1a2538 100%) !important;
    border-right: 1px solid rgba(255, 255, 255, 0.1);
    box-shadow: inset -1px 0 4px rgba(0, 0, 0, 0.15), 2px 0 12px rgba(0, 0, 0, 0.1);
  }

  .nav-item {
    color: rgba(255, 255, 255, 0.7) !important;
    border-left-color: transparent;
  }

  .nav-item:hover {
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.12) 0%, rgba(255, 255, 255, 0.08) 100%) !important;
    color: #ffffff !important;
    border-left-color: rgba(255, 255, 255, 0.4) !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.1) !important;
  }

  .nav-item.active {
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.18) 0%, rgba(255, 255, 255, 0.12) 100%) !important;
    color: #ffffff !important;
    border-left: 3px solid rgba(255, 255, 255, 0.6) !important;
    border-right: 1px solid rgba(255, 255, 255, 0.15) !important;
    border-top: 1px solid rgba(255, 255, 255, 0.15) !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.15) !important;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.2) !important;
  }

  .nav-item.nav-item-disabled {
    color: rgba(255, 255, 255, 0.3) !important;
  }

  .nav-item.nav-item-disabled:hover {
    background: transparent !important;
    color: rgba(255, 255, 255, 0.3) !important;
  }
  
  .nav-item i {
    color: inherit !important;
  }
}

@media (max-width: 768px) {
  .sidebar {
    background-color: #FFFFFF;
  }
}

/* Reordenamiento de botones de motivo en formulario de registros generales (SOLO DESKTOP) */
@media (min-width: 769px) {
  #ingresoManualForm .motivo-buttons-grid {
    display: flex;
    flex-wrap: wrap;
  }

  #ingresoManualForm .motivo-buttons-grid .motivo-btn {
    flex: 0 0 calc(12.5% - 11px);
  }

  /* Pedidos Ya - primero */
  #ingresoManualForm .motivo-btn[data-motivo="Pedidos Ya"] {
    order: 1;
  }

  /* Uber - segundo */
  #ingresoManualForm .motivo-btn[data-motivo="Uber"] {
    order: 2;
  }

  /* Taxi - tercero */
  #ingresoManualForm .motivo-btn[data-motivo="Taxi"] {
    order: 3;
  }

  /* Cadetería - cuarto */
  #ingresoManualForm .motivo-btn[data-motivo="Cadetería"] {
    order: 4;
  }

  /* Amigos y familia - quinto */
  #ingresoManualForm .motivo-btn[data-motivo="Amigos y familia"] {
    order: 5;
  }

  /* Empleada doméstica - sexto */
  #ingresoManualForm .motivo-btn[data-motivo="Empleada doméstica"] {
    order: 6;
  }

  /* Personal de Trabajo - séptimo */
  #ingresoManualForm .motivo-btn[data-motivo="Personal de Trabajo"] {
    order: 7;
  }

  /* Otros - octavo */
  #ingresoManualForm .motivo-btn[data-motivo="Otros"] {
    order: 8;
  }
}

/* Tarjetas de motivo - Estilo minimalista solo texto */
.motivo-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 12px 16px;
  background: #FFFFFF;
  border: 1.5px solid #E2E8F0;
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.25s ease;
  font-family: var(--font-family);
  font-size: 13px;
  font-weight: 500;
  color: #475569;
  text-align: center;
  line-height: 1.3;
  min-height: 44px;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* Imágenes para botones específicos en formulario de registros generales */
#ingresoManualForm .motivo-btn[data-motivo="Pedidos Ya"] {
  background-image: url('./images/PEDIDOS YA.png');
  background-color: rgba(236, 67, 72, 0.4);
  color: transparent;
  text-indent: -9999px;
  overflow: hidden;
  border: none;
  transition: none;
  background-size: contain;
  background-position: center;
}

#ingresoManualForm .motivo-btn[data-motivo="Uber"] {
  background-image: url('./images/UBER.png');
  background-color: rgba(0, 0, 0, 0.3);
  color: transparent;
  text-indent: -9999px;
  overflow: hidden;
  border: none;
  transition: none;
  background-size: contain;
  background-position: center;
}

#ingresoManualForm .motivo-btn[data-motivo="Taxi"] {
  background-image: url('./images/TAXI.png');
  background-color: rgba(255, 200, 1, 0.4);
  color: transparent;
  text-indent: -9999px;
  overflow: hidden;
  border: none;
  transition: none;
  background-size: contain;
  background-position: center;
}

/* Hover - Fondo suave sin contorno */
.motivo-btn:hover {
  border-color: #E2E8F0;
  background: #F8FAFC;
  color: #64748B;
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
}

/* Desactivar todos los efectos para botones con imagen */
#ingresoManualForm .motivo-btn[data-motivo="Pedidos Ya"]:hover {
  background-color: rgba(236, 67, 72, 0.4);
  transform: none;
  box-shadow: none;
  background-size: contain;
  background-position: center;
  transition: none;
}

#ingresoManualForm .motivo-btn[data-motivo="Uber"]:hover {
  background-color: rgba(0, 0, 0, 0.3);
  transform: none;
  box-shadow: none;
  background-size: contain;
  background-position: center;
  transition: none;
}

#ingresoManualForm .motivo-btn[data-motivo="Taxi"]:hover {
  background-color: rgba(255, 200, 1, 0.4);
  transform: none;
  box-shadow: none;
  background-size: contain;
  background-position: center;
  transition: none;
}

.motivo-btn:active {
  transform: translateY(0);
}

/* Seleccionado - mismo color que los indicadores */
.motivo-btn.active {
  border: none;
  background: #EEF2FF;
  color: #2b405e;
  font-weight: 600;
  box-shadow: none;
  transform: scale(1.12);
}

/* Desactivar todos los efectos para botones con imagen en estado activo */
#ingresoManualForm .motivo-btn[data-motivo="Pedidos Ya"].active {
  background-color: #ec4348;
  transform: scale(1.12);
  box-shadow: none;
  background-size: contain;
  background-position: center;
  transition: transform 0.25s ease;
}

#ingresoManualForm .motivo-btn[data-motivo="Uber"].active {
  background-color: #000000;
  transform: scale(1.12);
  box-shadow: none;
  background-size: contain;
  background-position: center;
  transition: transform 0.25s ease;
}

#ingresoManualForm .motivo-btn[data-motivo="Taxi"].active {
  background-color: #ffc801;
  transform: scale(1.12);
  box-shadow: none;
  background-size: contain;
  background-position: center;
  transition: transform 0.25s ease;
}

/* Hover en botón seleccionado - fondo más intenso */
.motivo-btn.active:hover {
  background: #E0E7FF;
  color: #244058;
  border-color: transparent;
}

/* Desactivar todos los efectos para botones con imagen en hover+active */
#ingresoManualForm .motivo-btn[data-motivo="Pedidos Ya"].active:hover {
  background-color: #ec4348;
  transform: scale(1.12);
  box-shadow: none;
  background-size: contain;
  background-position: center;
  transition: transform 0.25s ease;
}

#ingresoManualForm .motivo-btn[data-motivo="Uber"].active:hover {
  background-color: #000000;
  transform: scale(1.12);
  box-shadow: none;
  background-size: contain;
  background-position: center;
  transition: transform 0.25s ease;
}

#ingresoManualForm .motivo-btn[data-motivo="Taxi"].active:hover {
  background-color: #ffc801;
  transform: scale(1.12);
  box-shadow: none;
  background-size: contain;
  background-position: center;
  transition: transform 0.25s ease;
}

/* Sub-opciones de Obreros - Línea separada */
.obreros-subopciones-row {
  display: flex;
  flex-direction: row;
  gap: 12px;
  justify-content: center;
  margin-top: 12px;
  padding: 0 12px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 8px;
  opacity: 0;
  max-height: 0;
  overflow: hidden;
  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.obreros-subopciones-row.show {
  opacity: 1;
  max-height: 100px;
  padding: 12px;
  background: #F8FAFC;
  border-color: #E5E7EB;
}

/* Botones de sub-opciones */
.obrero-subopcion-btn {
  padding: 10px 24px;
  border: 2px solid #E5E7EB;
  border-radius: 6px;
  background: white;
  color: #64748B;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 140px;
  opacity: 1;
}

.obreros-subopciones-row:not(.show) .obrero-subopcion-btn {
  opacity: 0;
  transform: translateY(-5px);
}

.obrero-subopcion-btn:hover {
  border-color: #2b405e;
  background: #F0F7FF;
  color: #2b405e;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15);
}

.obrero-subopcion-btn.active {
  border: 2px solid #2b405e;
  background: #2b405e;
  color: white;
  font-weight: 600;
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
}

.obrero-subopcion-btn.active:hover {
  background: #244058;
  border-color: #244058;
  transform: translateY(-2px);
}

.obrero-subopcion-btn:focus {
  outline: none;
  box-shadow: none;
}

.obrero-subopcion-btn i {
  font-size: 16px;
}

/* Responsive - Móvil: 3 columnas solo texto */
@media (max-width: 768px) {
  .motivo-buttons-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
  }
  
  .obreros-subopciones-row {
    flex-direction: column;
    gap: 8px;
  }
  
  .obrero-subopcion-btn {
    width: 100%;
    min-width: auto;
  }

  .motivo-btn {
    padding: 10px 6px;
    min-height: 40px;
    font-size: 11px;
  }
}

/* ===================================================================
   PESTAÑAS DE REGISTROS (Todos / Obreros)
   =================================================================== */
.registros-tabs {
  display: flex;
  align-items: center;
  gap: 8px;
}

.tab-btn {
  padding: 6px 14px;
  border-radius: 8px;
  border: 1px solid #E2E8F0;
  background: white;
  color: #64748B;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.tab-btn:hover {
  background: #F1F5F9;
  border-color: #CBD5E1;
  color: #475569;
  transform: translateY(-1px);
}

.tab-btn.active {
  background: #2b405e;
  color: white;
  border-color: #2b405e;
  box-shadow: 0 2px 8px rgba(59, 130, 246, 0.3);
}

.tab-btn.active:hover {
  background: #244058;
  border-color: #244058;
}

.tab-btn i {
  font-size: 14px;
}

/* ===================================================================
   TABLA DE OBREROS DETALLADA
   =================================================================== */
.table-obreros-detalle {
  width: 100%;
  font-size: 13px;
}

.table-obreros-detalle thead th {
  background: #F8FAFC;
  color: #475569;
  font-weight: 600;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 12px 8px;
  border-bottom: 2px solid #E2E8F0;
  white-space: nowrap;
}

.table-obreros-detalle tbody td {
  padding: 10px 8px;
  vertical-align: middle;
  border-bottom: 1px solid #F1F5F9;
}

.table-obreros-detalle tbody tr:hover {
  background: #F8FAFC;
}

/* Alertas de color para documentos vencidos */
.table-obreros-detalle tbody tr.bg-red {
  background: #FEE2E2 !important;
}

.table-obreros-detalle tbody tr.bg-red:hover {
  background: #FECACA !important;
}

.table-obreros-detalle tbody tr.bg-yellow {
  background: #FEF3C7 !important;
}

.table-obreros-detalle tbody tr.bg-yellow:hover {
  background: #FDE68A !important;
}

@media (max-width: 768px) {
  .registros-tabs {
    flex-wrap: wrap;
    width: 100%;
    margin-top: 8px;
  }
  
  .tab-btn {
    flex: 1;
    justify-content: center;
    font-size: 12px;
    padding: 8px 12px;
  }
  
  /* Tabla de obreros en móvil con scroll horizontal */
  .table-obreros-detalle {
    font-size: 11px;
  }
  
  .table-obreros-detalle thead th,
  .table-obreros-detalle tbody td {
    padding: 8px 6px;
    font-size: 11px;
  }
}

/* ===================================================================
   BOTONES CIRCULARES 100% EN TABLA DE OBREROS
   =================================================================== */
#tbody-obreros-full .reg-actions,
.table-obreros-detalle .reg-actions {
  display: flex !important;
  gap: 8px !important;
  justify-content: center !important;
  align-items: center !important;
}

#tbody-obreros-full .btn-egreso,
#tbody-obreros-full .btn-primary,
.table-obreros-detalle .btn-egreso,
.table-obreros-detalle .btn-primary {
  width: 36px !important;
  height: 36px !important;
  min-width: 36px !important;
  max-width: 36px !important;
  min-height: 36px !important;
  max-height: 36px !important;
  padding: 0 !important;
  border-radius: 50% !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}

/* Color azul oscuro para botón editar */
#tbody-obreros-full .btn-primary,
.table-obreros-detalle .btn-primary {
  background-color: #244058 !important;
  border-color: #244058 !important;
  color: white !important;
}

#tbody-obreros-full .btn-primary:hover,
.table-obreros-detalle .btn-primary:hover {
  background-color: #283449 !important;
  border-color: #283449 !important;
}

/* Botón egresar deshabilitado - gris igual que registros */
#tbody-obreros-full .btn-egreso.btn-egreso-disabled,
#tbody-obreros-full .btn-egreso[aria-disabled="true"],
.table-obreros-detalle .btn-egreso.btn-egreso-disabled,
.table-obreros-detalle .btn-egreso[aria-disabled="true"] {
  background: #E2E8F0 !important;
  border: none !important;
  color: #475569 !important;
}

#tbody-obreros-full .btn-egreso i,
#tbody-obreros-full .btn-primary i,
.table-obreros-detalle .btn-egreso i,
.table-obreros-detalle .btn-primary i {
  margin: 0 !important;
  font-size: 16px !important;
  color: white !important;
}

/* ===================================================================
   ESTILOS PARA FORMULARIO DE OBREROS INDEPENDIENTE
   =================================================================== */

/* Botones de tipo de obrero en formulario independiente */
.obrero-subopcion-btn-obreros {
  padding: 12px 28px;
  border: 2px solid #E5E7EB;
  border-radius: 8px;
  background: white;
  color: #64748B;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  flex: 1;
  min-width: 140px;
}

.obrero-subopcion-btn-obreros:hover {
  border-color: #2b405e;
  background: #F0F7FF;
  color: #2b405e;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15);
}

.obrero-subopcion-btn-obreros.active {
  border: 2px solid #2b405e;
  background: #2b405e;
  color: white;
  font-weight: 600;
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
}

.obrero-subopcion-btn-obreros.active:hover {
  background: #244058;
  border-color: #244058;
  transform: translateY(-2px);
}

.obrero-subopcion-btn-obreros:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);
}

.obrero-subopcion-btn-obreros i {
  font-size: 18px;
}

@media (max-width: 768px) {
  .obrero-subopcion-btn-obreros {
    padding: 10px 16px;
    font-size: 13px;
    min-width: auto;
  }
  
  .obrero-subopcion-btn-obreros i {
    font-size: 16px;
  }
}

/* =============================================================
   OPTIMIZACIÓN DE NAVEGACIÓN - Transiciones suaves sin saltos
   ============================================================= */
/* Aplicar a todas las vistas principales */
#dashboard-view,
#main-menu,
#obreros-view,
#paqueteria-view,
#eventos-view,
#reportes-view,
#configuracion-view,
#scan-view,
#scan-obreros-view,
#ingresoManualForm,
#ingresoManualForm-obreros,
#verificar-dni-obreros-view,
#nuevo-evento-view {
  /* Optimización de rendering */
  will-change: auto;
  contain: layout style;
  
  /* Sin transiciones visuales para evitar saltos */
  opacity: 1;
  visibility: visible;
}

/* Estilos para botones de verificar DNI - centralizados */
#verificar-dni-obreros-view .form-actions {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  gap: 16px !important;
  margin-top: 24px !important;
  padding: 0 16px !important;
  flex-direction: row-reverse !important;
}

#verificar-dni-obreros-view .form-actions .btn {
  min-width: 140px !important;
  padding: 12px 24px !important;
}

/* Responsive - Mobile */
@media (max-width: 768px) {
  #verificar-dni-obreros-view .form-actions {
    flex-direction: column !important;
    gap: 12px !important;
    padding: 0 20px !important;
  }
  
  #verificar-dni-obreros-view .form-actions .btn {
    width: 100% !important;
    min-width: auto !important;
  }
}

/* Forzar posición y evitar saltos de layout */
.main-content {
  position: relative;
  min-height: 100vh;
}

/* Optimización para scroll suave solo cuando es necesario */
html {
  scroll-behavior: auto; /* Desactivar smooth scroll para navegación */
}

/* Asegurar que las vistas ocupen todo el ancho disponible */
#dashboard-view,
#main-menu,
#obreros-view,
#paqueteria-view,
#eventos-view,
#reportes-view,
#configuracion-view {
  width: 100%;
  max-width: 100%;
}

/* Quick scan overlay */
.quick-scan-overlay {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(15, 23, 42, 0.6);
  z-index: 6500;
}

.quick-scan-overlay.d-none {
  display: none;
}

.quick-scan-card {
  width: min(92vw, 440px);
  background: #ffffff;
  border-radius: 18px;
  padding: 28px 24px 24px;
  text-align: center;
  box-shadow: 0 18px 48px rgba(15, 23, 42, 0.2);
}

.quick-scan-card h3 {
  margin: 10px 0 6px;
  font-size: 20px;
  font-weight: 700;
  color: #0f172a;
}

.quick-scan-card p {
  margin: 0 0 16px;
  color: #475569;
  font-size: 14px;
}

.quick-scan-indicator {
  width: min(70vw, 260px);
  height: 140px;
  margin: 0 auto 10px;
  border-radius: 16px;
  border: 2px dashed #cbd5f5;
  background: linear-gradient(135deg, #f8fafc, #eef2f7);
  position: relative;
  overflow: hidden;
}

.quick-scan-beam {
  position: absolute;
  left: 8%;
  right: 8%;
  height: 4px;
  background: linear-gradient(90deg, rgba(43, 64, 94, 0) 0%, rgba(43, 64, 94, 0.9) 50%, rgba(43, 64, 94, 0) 100%);
  box-shadow: 0 0 12px rgba(43, 64, 94, 0.35);
  border-radius: 999px;
  animation: quickScanBeam 1.2s ease-in-out infinite;
}

@keyframes quickScanBeam {
  0% { top: 12%; opacity: 0.25; }
  50% { opacity: 1; }
  100% { top: 84%; opacity: 0.25; }
}

body.quick-scan-open {
  overflow: hidden;
}

/* Responsive: evitar overflow horizontal */
/* ===================================================================
   HEADERS DE REGISTROS - RESPONSIVE
   =================================================================== */
@media (max-width: 768px) {
  /* Wrapper principal: columna en móvil */
  .registros-header-inline-wrapper {
    flex-direction: column !important;
    align-items: center !important;
    gap: 10px !important;
    padding: 12px 14px !important;
  }
  
  /* Contenedor interno también en columna */
  .registros-header-inline {
    flex-direction: column !important;
    align-items: center !important;
    gap: 10px !important;
    width: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
  }
  
  /* REGISTROS GENERALES: título centrado */
  #main-menu .registros-tabs {
    width: 100% !important;
    justify-content: center !important;
    margin-right: 0 !important;
    order: 1 !important;
  }
  
  #main-menu .registros-tabs h2 {
    width: 100% !important;
    text-align: center !important;
    margin-right: 0 !important;
  }
  
  /* Buscador: segundo en el orden */
  #main-menu .registros-search-container {
    order: 2 !important;
  }
  
  /* Selector de páginas: tercero en el orden */
  #main-menu .registros-header-inline #pageSizeWrapper {
    order: 3 !important;
  }
  
  /* OBREROS: pestañas lado a lado arriba */
  #obreros-view .registros-tabs {
    width: 100% !important;
    justify-content: center !important;
    margin-right: 0 !important;
    gap: 8px !important;
    order: 1 !important;
  }
  
  #obreros-view .registros-tabs .tab-btn {
    flex: 1 !important;
    max-width: 50% !important;
  }
  
  /* Buscador: segundo en el orden */
  #obreros-view .registros-search-container {
    order: 2 !important;
  }
  
  /* Selector de páginas: tercero en el orden */
  #obreros-view .registros-header-inline #pageSizeWrapperObreros {
    order: 3 !important;
  }
  
  /* Selector de páginas: ancho completo y centrado */
  .registros-header-inline #pageSizeWrapper,
  .registros-header-inline #pageSizeWrapperObreros {
    width: 100% !important;
    justify-content: center !important;
    margin-left: 0 !important;
  }
  
  /* Buscador: ancho completo y sin padding extra */
  .registros-search-container {
    width: 100% !important;
    flex: 1 1 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    padding: 0 !important;
  }
  
  .registros-search-container .search-input-wrapper {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  
  .registros-search-container .search-input {
    width: 100% !important;
    margin: 0 !important;
  }
  
  .registros-search-container .search-btn {
    margin: 0 !important;
  }
}


@media (max-width: 768px) {
  body {
    overflow-x: hidden;
  }
  
  .main-content {
    overflow-x: hidden;
    width: 100%;
  }
}
/* Fin optimización de navegación */

/* ============================================
   Searchable Select Component (Lote)
   ============================================ */
.searchable-select-wrapper {
  position: relative;
  width: 100%;
}

.searchable-select-input {
  width: 100%;
  padding-right: 35px !important;
  cursor: pointer;
}

.searchable-select-input.has-value {
  font-weight: 500;
}

.searchable-select-arrow {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  color: #64748B;
  font-size: 12px;
  transition: transform 0.2s ease;
  cursor: pointer;
  pointer-events: auto;
}

.searchable-select-wrapper.open .searchable-select-arrow {
  transform: translateY(-50%) rotate(180deg);
}

.searchable-select-dropdown {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  background: #FFFFFF;
  border: 1px solid #E2E8F0;
  border-radius: 8px;
  max-height: 250px;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-y;
  z-index: 1000;
  display: none;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.searchable-select-dropdown.show {
  display: block;
}

.searchable-select-wrapper--dropup .searchable-select-dropdown {
  top: auto;
  bottom: calc(100% + 4px);
}


.searchable-select-option {
  padding: 10px 12px;
  cursor: pointer;
  transition: background-color 0.15s ease;
  font-size: 14px;
  color: #1A202C;
}

.searchable-select-option:hover {
  background-color: #F7F8FA;
}

.searchable-select-option.selected {
  background-color: #EEF2FF;
  color: #2b405e;
  font-weight: 500;
}

.searchable-select-option.no-results {
  padding: 12px;
  text-align: center;
  color: #9CA3AF;
  font-size: 13px;
  cursor: default;
}

.searchable-select-option.no-results:hover {
  background-color: transparent;
}

/* ---
App Footer - SecurIA
--- */
.app-footer {
  width: 100%;
  max-width: 1280px;
  margin-top: auto;
  padding: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-top: 1px solid var(--border);
  background: transparent;
  flex-shrink: 0;
}

.footer-content {
  display: flex;
  align-items: center;
  gap: 8px;
}

.footer-logo {
  height: 32px;
  width: auto;
}

.footer-text {
  font-size: 12px;
  color: var(--muted);
  font-weight: 400;
  font-style: italic;
}

/* Footer responsive móvil */
@media (max-width: 768px) {
  .app-footer {
    padding: 20px 16px;
  }
  
  .footer-logo {
    height: 18px;
  }
  
  .footer-text {
    font-size: 11px;
  }
}

/* Espacio extra en mobile para la barra de acciones */
@media (max-width: 576px) {
  .app-footer {
    margin-bottom: 80px;
  }
}

/* Estilos para selector de dias (Empleada domestica) */
.dias-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.btn-dia {
  cursor: pointer;
  user-select: none;
}

.btn-dia input {
  display: none;
}

.btn-dia span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #FFFFFF;
  border: 1px solid #FBCFE8;
  color: #BE185D;
  font-size: 11px;
  font-weight: 600;
  transition: all 0.2s ease;
}

.btn-dia input:checked + span {
  background: #BE185D;
  color: #FFFFFF;
  border-color: #BE185D;
  box-shadow: 0 2px 4px rgba(190, 24, 93, 0.3);
}
