/* ===== Variables y base ===== */
:root {
  --color-fondo: #d3b58f;
  --color-card: #ffffff;
  --color-primario: #754516;
  --color-primario-hover: #5c3612;
  --color-secundario: #64748b;
  --color-borde: #e2e8f0;
  --color-texto: #1e293b;
  --color-texto-suave: #64748b;
  --sombra-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
  --sombra-md: 0 4px 6px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -2px rgba(0, 0, 0, 0.04);
  --sombra-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.04);
  --radio: 8px;
  --radio-lg: 12px;
  --transicion: 0.2s ease;
}

* { box-sizing: border-box; }

#app-wrapper {
  display: flex;
  min-height: 100vh;
  position: relative;
}

/* Banner aviso mantenimiento (solo escritorio; la app móvil no usa index.html) */
.banner-mantenimiento {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 102;
  min-height: 36px;
  padding: 0.4rem 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.95rem;
  font-weight: 700;
  text-align: center;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
}
.banner-mantenimiento--ambar {
  background: linear-gradient(180deg, #fde68a 0%, #fcd34d 100%);
  color: #78350f;
  border-bottom: 1px solid #f59e0b;
}
.banner-mantenimiento--rojo {
  background: linear-gradient(180deg, #fecaca 0%, #fca5a5 100%);
  color: #7f1d1d;
  border-bottom: 1px solid #ef4444;
}
.banner-mantenimiento--verde {
  background: linear-gradient(180deg, #bbf7d0 0%, #86efac 100%);
  color: #14532d;
  border-bottom: 1px solid #22c55e;
}
.banner-mantenimiento-texto {
  display: block;
  width: 100%;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#app-wrapper.banner-mantenimiento-on .sidebar {
  top: var(--banner-mantenimiento-h, 40px);
  height: calc(100vh - var(--banner-mantenimiento-h, 40px));
}
#app-wrapper.banner-mantenimiento-on .main-content {
  padding-top: var(--banner-mantenimiento-h, 40px);
}
@media (max-width: 900px) {
  .banner-mantenimiento {
    display: none !important;
  }
  #app-wrapper.banner-mantenimiento-on .sidebar {
    top: 0;
    height: 100vh;
  }
  #app-wrapper.banner-mantenimiento-on .main-content {
    padding-top: 0;
  }
}

/* ===== Sidebar (menú hamburguesa) ===== */
.sidebar {
  position: fixed;
  top: 0;
  left: 0;
  width: 260px;
  height: 100vh;
  background: linear-gradient(180deg, #faf8f5 0%, var(--color-card) 100%);
  border-right: 1px solid var(--color-borde);
  box-shadow: 4px 0 24px rgba(117, 69, 22, 0.08);
  z-index: 100;
  transform: translateX(-100%);
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  overflow-y: auto;
  display: flex;
  flex-direction: column;
}

.sidebar.abierto {
  transform: translateX(0);
}

.sidebar-empresa {
  /* Misma línea vertical que los iconos del menú: nav 0.5rem + item 1.25rem = 1.75rem */
  padding: 1rem 1.25rem 1rem 1.75rem;
  font-weight: 700;
  font-size: 1.15rem;
  letter-spacing: 0.02em;
  color: var(--color-primario);
  border-bottom: 1px solid rgba(117, 69, 22, 0.12);
  background: linear-gradient(135deg, rgba(117, 69, 22, 0.04) 0%, transparent 100%);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  min-height: 3.25rem;
  text-align: left;
}

.sidebar-empresa-logo {
  max-width: 100%;
  max-height: 2.75rem;
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
}

#sidebar-empresa-nombre {
  line-height: 1.25;
}

.sidebar-nav {
  display: flex;
  flex-direction: column;
  padding: 0.75rem 0.5rem;
  flex: 1;
  gap: 2px;
}

.sidebar-item {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  width: 100%;
  padding: 0.75rem 1.25rem;
  border: none;
  background: transparent;
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--color-texto);
  text-align: left;
  cursor: pointer;
  border-radius: var(--radio);
  transition: background var(--transicion), color var(--transicion), padding-left var(--transicion);
}

.sidebar-icon {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.35rem;
  height: 1.35rem;
  color: var(--color-primario);
}

.sidebar-icon-svg {
  display: block;
  width: 100%;
  height: 100%;
  pointer-events: none;
  overflow: visible;
}

.sidebar-label {
  flex: 1;
  min-width: 0;
}

.sidebar-item:hover {
  background: rgba(117, 69, 22, 0.06);
}

/* Pestaña principal: activo = fondo marrón corporativo, texto e icono blancos */
.sidebar-item.tab.activo {
  background: var(--color-primario);
  color: #fff;
  border-left: none;
  padding-left: 1.25rem;
}

.sidebar-item.tab.activo .sidebar-icon {
  color: #fff;
}

.sidebar-item.tab:hover:not(.activo) {
  background: rgba(117, 69, 22, 0.07);
}

.sidebar-item.activo:not(.tab) {
  background: rgba(117, 69, 22, 0.1);
  color: var(--color-primario);
  border-left: 3px solid var(--color-primario);
  padding-left: calc(1.25rem - 3px);
}

.sidebar-item.tab {
  border: none;
}

.sidebar-footer {
  margin-top: auto;
  padding: 0.75rem 0.5rem 1rem;
  border-top: 1px solid rgba(117, 69, 22, 0.12);
  background: rgba(0, 0, 0, 0.02);
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.sidebar-item-config {
  color: var(--color-texto-suave);
  font-size: 0.9rem;
}

.sidebar-item-config:not(.activo) .sidebar-icon {
  color: var(--color-primario);
  opacity: 0.85;
}

.sidebar-item-config:hover:not(.activo) {
  color: var(--color-texto);
}

.sidebar-item-config.activo {
  color: #fff;
}

.sidebar-logout {
  width: 100%;
  color: var(--color-primario);
  font-weight: 600;
  margin-top: 0.25rem;
}

.sidebar-logout .sidebar-icon {
  color: var(--color-primario);
}

.sidebar-logout:hover {
  background: rgba(117, 69, 22, 0.1);
}

.sidebar-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.35);
  z-index: 99;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.sidebar-overlay.visible {
  opacity: 1;
  pointer-events: auto;
}

.main-content {
  flex: 1;
  min-width: 0;
  margin-left: 0;
  transition: margin-left 0.25s ease;
}

.btn-hamburger {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--color-borde);
  background: var(--color-fondo);
  color: var(--color-texto);
  font-size: 1.4rem;
  cursor: pointer;
  border-radius: var(--radio);
  transition: all var(--transicion);
}

.btn-hamburger:hover {
  background: var(--color-borde);
}

.top-bar {
  position: relative;
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1rem 1.5rem;
  background: #754516;
  flex-wrap: wrap;
  border-bottom: 1px solid rgba(255,255,255,0.2);
}

.top-bar-titulo-bloque {
  min-width: 0;
  flex: 1 1 auto;
}

.top-bar-derecha > .top-bar-logo {
  flex-shrink: 0;
  align-self: center;
}

.top-bar-logo {
  height: 40px;
  max-width: 120px;
  object-fit: contain;
  display: block;
}

.top-bar h1 {
  margin: 0;
  font-size: 1.5rem;
  font-weight: 600;
  color: #fff;
}

.top-bar .subtitulo {
  margin: 0.25rem 0 0 0;
  font-size: 0.85rem;
  color: rgba(255,255,255,0.9);
}

.btn-hamburger {
  color: #fff;
  border-color: rgba(255,255,255,0.4);
  background: rgba(255,255,255,0.1);
}

.btn-hamburger:hover {
  background: rgba(255,255,255,0.2);
  border-color: rgba(255,255,255,0.5);
}

/* Badge vacaciones pendientes en tab Horario Agenda (solo admins) */
.sidebar-item.sidebar-tab-con-badge {
  position: relative;
  padding-right: 2.5rem;
}
.sidebar-tab-badge {
  position: absolute;
  top: 4px;
  right: 6px;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  font-size: 0.7rem;
  font-weight: 700;
  line-height: 18px;
  text-align: center;
  background: #dc2626;
  color: #fff;
  border-radius: 9px;
}
.sidebar-tab-badge.oculto {
  display: none !important;
}

/* Tarjeta próxima sesión (terapeutas) - centrada en el ancho de la pantalla, 200px */
.top-bar-proxima-sesion {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}
.proxima-sesion-card {
  background: #fef3c7;
  border: 1px solid rgba(180, 83, 9, 0.35);
  border-radius: 8px;
  padding: 0.35rem 0.75rem;
  max-height: 2.6em;
  display: flex;
  flex-direction: column;
  justify-content: center;
  width: 200px;
  min-width: 200px;
  max-width: 200px;
  line-height: 1.2;
  pointer-events: auto;
  cursor: help;
}
.proxima-sesion-card .proxima-sesion-label {
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #b45309;
  margin-bottom: 0.1rem;
}
.proxima-sesion-card .proxima-sesion-contenido {
  font-size: 0.85rem;
  font-weight: 600;
  color: #92400e;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.proxima-sesion-card.proxima-sesion-vacio {
  font-size: 0.8rem;
  color: #b45309;
  font-style: italic;
}

/* Bloque derecho: fichaje (ocultable) + ayuda/logo siempre visible */
.top-bar-derecha {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-left: auto;
  flex-wrap: wrap;
  justify-content: flex-end;
  max-width: min(100%, 720px);
}

.top-bar-fichaje {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  justify-content: flex-end;
  max-width: min(100%, 520px);
}

/* Modal resumen jornada: compacto (selector doble para ganar a .modal-contenido) */
.fichaje-resumen-lista {
  margin: 0;
}
.fichaje-resumen-fila {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr);
  gap: 0.25rem 0.75rem;
  align-items: baseline;
  margin-bottom: 0.55rem;
}
.fichaje-resumen-etq {
  margin: 0;
  font-weight: 600;
  font-size: 0.82rem;
  color: var(--color-texto-suave);
}
.fichaje-resumen-val {
  margin: 0;
  font-size: 0.9rem;
  color: var(--color-texto);
}
.fichaje-resumen-fila-total {
  padding-top: 0.6rem;
  margin-top: 0.35rem;
  margin-bottom: 0;
  border-top: 1px solid var(--color-borde);
}
.fichaje-resumen-fila-total .fichaje-resumen-etq,
.fichaje-resumen-fila-total .fichaje-resumen-val {
  font-size: 0.95rem;
  color: var(--color-texto);
}
.fichaje-resumen-hint {
  color: var(--color-texto-suave);
  font-size: 0.82rem;
  font-weight: 400;
}
.fichaje-resumen-nota {
  font-size: 0.75rem;
  color: var(--color-texto-suave);
  margin: 0.85rem 0 0 0;
  line-height: 1.4;
}
.fichaje-resumen-cargando,
.fichaje-resumen-vacio,
.fichaje-resumen-error {
  margin: 0;
  font-size: 0.9rem;
  color: var(--color-texto-suave);
}
.fichaje-resumen-error {
  color: #b91c1c;
}

.fichaje-estado-label.fichaje-estado--clickeable {
  pointer-events: auto;
  cursor: pointer;
  border-radius: 6px;
  padding: 0.2rem 0.4rem;
  margin: -0.2rem -0.4rem;
  transition: background 0.15s ease;
}
.fichaje-estado-label.fichaje-estado--clickeable:hover {
  background: rgba(255, 255, 255, 0.14);
}
.fichaje-estado-label.fichaje-estado--clickeable:focus {
  outline: 2px solid rgba(255, 255, 255, 0.65);
  outline-offset: 2px;
}

/* Estado en barra: viñeta (bullet) circular + texto, centrados en altura */
.fichaje-estado-label {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  user-select: none;
  pointer-events: none;
  flex-shrink: 0;
}
.fichaje-estado-label .fichaje-estado-dot {
  box-sizing: border-box;
  width: 0.72em;
  height: 0.72em;
  min-width: 0.72em;
  min-height: 0.72em;
  border-radius: 50%;
  background: currentColor;
  flex-shrink: 0;
  align-self: center;
}
.fichaje-estado-label .fichaje-estado-texto {
  line-height: 1.25;
}
/* Colores legibles sobre barra granate (#754516) */
.fichaje-estado-label.fichaje-estado--activo .fichaje-estado-dot,
.fichaje-estado-label.fichaje-estado--activo .fichaje-estado-texto {
  color: #bbf7d0;
}
.fichaje-estado-label.fichaje-estado--en-casa .fichaje-estado-dot,
.fichaje-estado-label.fichaje-estado--en-casa .fichaje-estado-texto {
  color: #e2e8f0;
}
.fichaje-estado-label.fichaje-estado--en-descanso .fichaje-estado-dot,
.fichaje-estado-label.fichaje-estado--en-descanso .fichaje-estado-texto {
  color: #bfdbfe;
}
.fichaje-estado-label.fichaje-estado--ausencia .fichaje-estado-dot,
.fichaje-estado-label.fichaje-estado--ausencia .fichaje-estado-texto {
  color: #fde68a;
}

/* Grupo de botones */
.fichaje-btns-group {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  flex-wrap: wrap;
}

/* Ubicación en tabla de fichajes */
.fichaje-ubic-cel {
  font-size: 0.78rem;
  color: #555;
  max-width: 220px;
  white-space: normal;
  line-height: 1.4;
}
.fichaje-ubic {
  display: block;
}
.fichaje-ubic a {
  color: #2c7be5;
  text-decoration: none;
  font-weight: 600;
}
.fichaje-ubic a:hover {
  text-decoration: underline;
}
.fichaje-ubic small {
  color: #777;
  display: block;
  word-break: break-word;
}

/* Hora con botón eliminar en tabla de fichajes */
.fichaje-hora-con-accion {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  white-space: nowrap;
}
.fichaje-hora-con-accion + .fichaje-hora-con-accion { margin-left: 0.35rem; }
.fichaje-eliminar {
  padding: 0.15rem 0.35rem;
  font-size: 0.75rem;
  line-height: 1;
  border: 1px solid rgba(239, 68, 68, 0.5);
  border-radius: 4px;
  background: rgba(239, 68, 68, 0.1);
  color: #dc2626;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}
.fichaje-eliminar:hover {
  background: rgba(239, 68, 68, 0.25);
  color: #b91c1c;
}

/* Botones fichaje modernos */
.fichaje-btn {
  padding: 0.4rem 0.75rem;
  border-radius: 8px;
  font-size: 0.8rem;
  font-weight: 600;
  border: none;
  cursor: pointer;
  transition: all 0.2s ease;
  box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}
.fichaje-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0,0,0,0.12);
}
.fichaje-btn:active {
  transform: translateY(0);
}
.fichaje-btn-entrada {
  background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
  color: #fff;
}
.fichaje-btn-entrada:hover {
  background: linear-gradient(135deg, #16a34a 0%, #15803d 100%);
}
.fichaje-btn-salida {
  background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
  color: #fff;
}
.fichaje-btn-salida:hover {
  background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
}
.fichaje-btn-descanso-salida {
  background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
  color: #fff;
}
.fichaje-btn-descanso-salida:hover {
  background: linear-gradient(135deg, #d97706 0%, #b45309 100%);
}
.fichaje-btn-descanso-entrada {
  background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
  color: #fff;
}
.fichaje-btn-descanso-entrada:hover {
  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);
}

.fichaje-badge { font-size: 0.85rem; padding: 0.25rem 0.5rem; border-radius: var(--radio); background: rgba(255,255,255,0.2); color: #fff; }
.fichaje-badge.activo { background: rgba(34, 197, 94, 0.5); }
.fichaje-badge.en-casa { background: rgba(100, 116, 139, 0.5); }
.btn-fichaje-entrada { background: rgba(34, 197, 94, 0.9) !important; color: #fff !important; border-color: #15803d !important; }
.btn-fichaje-salida { background: rgba(239, 68, 68, 0.9) !important; color: #fff !important; border-color: #b91c1c !important; }

.fichajes-wrapper { padding: 1rem; }
.fichajes-tarjetas { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 1rem; }
.fichaje-tarjeta {
  padding: 0.35rem 0.6rem;
  border-radius: 6px;
  display: flex;
  align-items: center;
  gap: 0.35rem;
  flex-wrap: wrap;
  border: 1px solid transparent;
}
.fichaje-tarjeta .fichaje-tarjeta-nombre { font-weight: 600; font-size: 0.85rem; }
.fichaje-tarjeta .fichaje-tarjeta-badge { font-size: 0.7rem; padding: 0.15rem 0.3rem; border-radius: 4px; font-weight: 500; }
.fichaje-tarjeta .fichaje-tarjeta-horario { font-size: 0.75rem; color: var(--color-texto-suave); }
.fichaje-tarjeta-verde {
  background: rgba(34, 197, 94, 0.15);
  border-color: rgba(34, 197, 94, 0.5);
}
.fichaje-tarjeta-verde .fichaje-tarjeta-badge { background: rgba(34, 197, 94, 0.4); color: #15803d; }
.fichaje-tarjeta-naranja {
  background: rgba(249, 115, 22, 0.15);
  border-color: rgba(249, 115, 22, 0.5);
}
.fichaje-tarjeta-naranja .fichaje-tarjeta-badge { background: rgba(249, 115, 22, 0.4); color: #c2410c; }
.fichaje-tarjeta-rojo {
  background: rgba(239, 68, 68, 0.15);
  border-color: rgba(239, 68, 68, 0.5);
}
.fichaje-tarjeta-rojo .fichaje-tarjeta-badge { background: rgba(239, 68, 68, 0.4); color: #b91c1c; }
.fichaje-tarjeta-gris {
  background: rgba(100, 116, 139, 0.1);
  border-color: rgba(100, 116, 139, 0.25);
}
.fichaje-tarjeta-gris .fichaje-tarjeta-badge { background: rgba(100, 116, 139, 0.25); color: #475569; }
.fichaje-tarjeta-vacaciones {
  background: rgba(201, 164, 59, 0.15) !important;
  border-color: rgba(201, 164, 59, 0.5) !important;
}
.fichaje-tarjeta-vacaciones .fichaje-tarjeta-badge { background: rgba(201, 164, 59, 0.45); color: #8b6914 !important; }
.fichaje-tarjeta-azul {
  background: rgba(59, 130, 246, 0.15);
  border-color: rgba(59, 130, 246, 0.5);
}
.fichaje-tarjeta-azul .fichaje-tarjeta-badge { background: rgba(59, 130, 246, 0.4); color: #1d4ed8; }
.filtros-fichajes .fichajes-mis-fichajes { font-weight: 600; color: var(--color-primario, #754516); }
.filtros-fichajes .fichajes-filtro-terapeuta-wrap select.oculto { display: none; }
.filtros-fichajes .fichajes-solo-activos-check { font-weight: 500; cursor: pointer; margin-left: 0.25rem; }
.filtros-fichajes .fichajes-solo-activos-check input { margin-right: 0.35rem; cursor: pointer; }
.filtros-fichajes .fichajes-filtro-jornada-corta-check { font-weight: 500; cursor: pointer; margin-left: 0.35rem; }
.filtros-fichajes .fichajes-filtro-jornada-corta-check input { margin-right: 0.35rem; cursor: pointer; }
.tabla-striped tbody tr.fichaje-fila-desajuste { background: rgba(234, 179, 8, 0.14); }
.tabla-striped tbody tr.fichaje-fila-filtro-oculta { display: none; }
.modal-contenido.modal-fichaje-celda-rapido { max-width: 420px; }

/* Fichajes: registro manual compacto + vista horario previsto */
.modal-contenido.modal-registro-manual-fichaje {
  max-width: min(32rem, 96vw);
}
.modal-registro-manual-fichaje .modal-header {
  padding: 0.65rem 1rem;
}
.modal-registro-manual-fichaje .modal-header h2 {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
}
.modal-registro-manual-fichaje .modal-body {
  padding: 0.85rem 1rem 1rem;
}
.registro-manual-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0.65rem 0.85rem;
  align-items: end;
}
.modal-registro-manual-fichaje .registro-manual-grid .form-grupo {
  margin-bottom: 0;
}
.registro-manual-span-full {
  grid-column: 1 / -1;
}
.registro-manual-horario-prev {
  font-size: 0.88rem;
  line-height: 1.45;
  color: var(--color-texto, #334155);
  background: linear-gradient(135deg, rgba(117, 69, 22, 0.07) 0%, rgba(117, 69, 22, 0.02) 100%);
  border: 1px solid rgba(117, 69, 22, 0.18);
  border-radius: var(--radio, 8px);
  padding: 0.55rem 0.75rem;
  margin: 0;
}
.registro-manual-horario-prev.registro-manual-horario--muted {
  color: var(--color-texto-suave);
  font-style: italic;
}
.registro-manual-horario-dia {
  font-weight: 600;
  color: var(--color-primario, #754516);
}
.modal-registro-manual-fichaje .registro-manual-acciones {
  margin-top: 0.85rem;
  padding-top: 0.65rem;
  border-top: 1px solid rgba(117, 69, 22, 0.12);
}
@media (max-width: 520px) {
  .registro-manual-grid {
    grid-template-columns: 1fr 1fr;
  }
  .registro-manual-hora-col {
    grid-column: 1 / -1;
  }
}
@media (max-width: 380px) {
  .registro-manual-grid {
    grid-template-columns: 1fr;
  }
}
.form-acciones-fichaje-celda { flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.fichaje-celda-hora-clic {
  cursor: pointer;
  border-bottom: 1px dotted rgba(117, 69, 22, 0.35);
}
.fichaje-celda-vacia.fichaje-celda-hora-clic {
  color: var(--color-texto-suave, #666);
  border-bottom-color: rgba(117, 69, 22, 0.25);
}
.fichaje-celda-hora-clic:focus {
  outline: 2px solid rgba(117, 69, 22, 0.45);
  outline-offset: 1px;
}
.fichaje-badge-desajuste {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.1rem 0.4rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #92400e;
  background: rgba(245, 158, 11, 0.35);
  border-radius: 4px;
  vertical-align: middle;
}
.fichaje-badge-jornada-incompleta {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.1rem 0.4rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #7f1d1d;
  background: rgba(255, 127, 80, 0.45);
  border-radius: 4px;
  vertical-align: middle;
  cursor: pointer;
  border: none;
  font-family: inherit;
}
.fichaje-badge-jornada-incompleta:hover {
  filter: brightness(0.95);
}
.fichaje-badge-jornada-incompleta:focus {
  outline: 2px solid rgba(127, 29, 29, 0.45);
  outline-offset: 1px;
}
.fichaje-fila-jornada-incompleta {
  box-shadow: inset 3px 0 0 0 rgba(255, 127, 80, 0.85);
}
.modal-fichaje-cerrar-incidencias-lista {
  list-style: none;
  margin: 0.75rem 0;
  padding: 0;
  max-height: 12rem;
  overflow-y: auto;
}
.modal-fichaje-cerrar-incidencias-lista li {
  margin: 0.35rem 0;
  padding: 0.25rem 0;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
.modal-fichaje-cerrar-incidencias-lista label {
  cursor: pointer;
  font-size: 0.9rem;
}
.filtros-fichajes .fichajes-ocultar-completadas-check { font-weight: 500; cursor: pointer; }
.filtros-fichajes .fichajes-ocultar-completadas-check input { margin-right: 0.35rem; }
.incidencia-estado-icon { font-size: 1.1rem; line-height: 1; }
.incidencia-estado-texto { margin-left: 0.25rem; font-weight: 500; }
.incidencia-estado-cerrada { color: #16a34a; }
.incidencia-estado-pendiente { color: #ea580c; }
.col-acciones-incidencia { text-align: center; }
.btn-cerrar-incidencia.btn-xs { padding: 0.15rem 0.4rem; font-size: 0.75rem; }
/* Fila filtros: izquierda crece, acciones pegadas a la derecha; alturas alineadas con selects */
#fichajes .filtros-y-acciones.filtros-fichajes {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  width: 100%;
  column-gap: 1rem;
  row-gap: 0.5rem;
}
#fichajes .filtros-fichajes .filtros-izquierda {
  flex: 1 1 auto;
  min-width: 0;
  align-items: center;
}
#fichajes .filtros-fichajes .fichajes-barra-derecha {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  gap: 0.75rem;
  flex: 0 0 auto;
  margin-left: auto;
}
#fichajes .filtros-fichajes select,
#fichajes .filtros-fichajes .btn-registro-manual-fichaje {
  min-height: 2.125rem;
  box-sizing: border-box;
}
#fichajes .filtros-fichajes .btn-registro-manual-fichaje {
  padding: 0.45rem 1rem;
  font-size: 0.875rem;
  line-height: 1.25;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
}
.fichajes-total-horas-wrap.fichajes-total-horas-derecha { margin-left: 0; margin-bottom: 0; }
.fichajes-totales-mes-wrap {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.65rem;
}
.fichajes-teorico-horas-tarjeta {
  background: linear-gradient(135deg, rgba(46, 125, 50, 0.07) 0%, rgba(46, 125, 50, 0.02) 100%);
  border-color: rgba(46, 125, 50, 0.22);
}
.fichajes-teorico-badge-debug {
  font-size: 0.75rem;
  font-weight: 400;
  color: var(--color-texto-suave);
  opacity: 0.9;
}
.empleados-horas-fichaje-bajo { color: #c62828; font-weight: 600; }
.empleados-horas-fichaje-alto { color: #2e7d32; font-weight: 600; }
.fichajes-admin-inline { margin-top: 0; display: flex; align-items: center; }
.fichajes-total-horas-tarjeta {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.6rem 1.2rem;
  background: linear-gradient(135deg, rgba(117, 69, 22, 0.08) 0%, rgba(117, 69, 22, 0.03) 100%);
  border: 1px solid rgba(117, 69, 22, 0.2);
  border-radius: var(--radio);
  font-weight: 500;
}
.fichajes-total-horas-label { color: var(--color-texto-suave); font-size: 0.9rem; }
.fichajes-total-horas-valor { color: var(--color-primario); font-size: 1.1rem; }
.fichajes-tabla-wrap,
#fichajes .fichajes-incidencias-panel {
  margin-top: 0.5rem;
}

/* Fichajes: sub-pestañas + filtros pegados arriba al hacer scroll en la página */
#fichajes .fichajes-header-fijo {
  position: sticky;
  top: 0;
  z-index: 12;
  background: var(--color-card);
  padding-bottom: 0.5rem;
  margin-bottom: 0.25rem;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
#fichajes .fichajes-header-fijo .sub-tabs-fichajes {
  margin-bottom: 0.65rem;
}
#fichajes .fichajes-header-fijo .filtros-y-acciones {
  margin-bottom: 0.5rem;
}

/* Tablas Fichajes / Incidencias: scroll interno y encabezados de columna fijos */
#fichajes .fichajes-tabla-wrap,
#fichajes .fichajes-incidencias-wrap {
  overflow: auto;
  max-height: calc(100vh - 340px);
  border-radius: var(--radio);
  border: 1px solid var(--color-borde);
}
#fichajes .fichajes-tabla-wrap table,
#fichajes .fichajes-incidencias-wrap table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
}
#fichajes .fichajes-tabla-wrap th,
#fichajes .fichajes-incidencias-wrap th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #754516;
  color: #fff;
  font-size: 12px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}
.form-hint { font-size: 0.8rem; color: var(--color-texto-suave); margin-left: 0.5rem; }

body {
  font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
  margin: 0;
  padding: 1rem;
  background: var(--color-fondo);
  color: var(--color-texto);
  line-height: 1.5;
}

/* ===== Contenedor principal - siempre ancho completo ===== */
.contenedor {
  max-width: none;
  width: 100%;
  margin: 0 auto;
  background: var(--color-card);
  padding: 1.5rem 2rem;
  border-radius: var(--radio-lg);
  box-shadow: var(--sombra-md);
}

.contenedor .tabla-contenedor {
  width: 100%;
  max-width: 100%;
}

.contenedor table {
  width: 100%;
}

/* ===== Header ===== */
header {
  margin-bottom: 2rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid var(--color-borde);
}

.header-contenido {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
}

header h1 {
  margin: 0;
  font-size: 1.75rem;
  font-weight: 600;
  color: var(--color-primario);
  letter-spacing: -0.02em;
}

.subtitulo {
  color: var(--color-texto-suave);
  font-size: 0.9rem;
  margin-top: 0.35rem;
}

/* ===== Tabs ===== */
.tabs {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 1.5rem;
}

.tab {
  padding: 0.6rem 1.25rem;
  border: 1px solid var(--color-borde);
  background: var(--color-card);
  color: var(--color-texto);
  font-size: 0.95rem;
  font-weight: 500;
  cursor: pointer;
  border-radius: var(--radio);
  transition: all var(--transicion);
}

.tab:hover {
  background: var(--color-fondo);
  border-color: var(--color-secundario);
}

.tab.activo {
  background: var(--color-primario);
  color: white;
  border-color: var(--color-primario);
}

/* ===== Paneles ===== */
.panel { display: none; }
.panel.activo { display: block; }

/* ===== Filtros ===== */
.filtros,
.filtros-y-acciones {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 1rem;
  flex-wrap: wrap;
  align-items: center;
}

.filtros-y-acciones {
  justify-content: flex-start;
}

.filtros-y-acciones .btn-icono-papelera {
  margin-left: 0;
}

.filtros-pacientes {
  justify-content: space-between;
}

.filtro-pacientes-label {
  font-size: 0.9rem;
  color: var(--color-texto-suave, #64748b);
  white-space: nowrap;
}
.filtro-pacientes-label.filtro-check-label {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  cursor: pointer;
}
.filtro-pacientes-label.filtro-check-label input { cursor: pointer; }

/* Recogida: labels encima de dropdowns para optimizar espacio en una fila */
.filtro-pacientes-campo {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  align-items: flex-start;
}
.filtro-pacientes-label-superior {
  font-size: 0.7rem;
  color: var(--color-texto-suave, #64748b);
  white-space: nowrap;
  line-height: 1;
}
.filtro-pacientes-campo input,
.filtro-pacientes-campo select {
  min-width: 0;
}
.filtro-pacientes-campo #filtro-cita,
.filtro-pacientes-campo #filtro-entrevista {
  width: 100%;
  min-width: 90px;
}
.filtros-pacientes .filtros-izquierda {
  align-items: flex-end;
}

.badge-cese-tabla {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 600;
  padding: 0.15rem 0.4rem;
  margin-left: 0.35rem;
  background: #fef2f2;
  color: #dc2626;
  border: 1px solid #fecaca;
  border-radius: 4px;
}

.badge-modificacion-pendiente {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 600;
  padding: 0.15rem 0.4rem;
  margin-left: 0.35rem;
  background: #fef3c7;
  color: #b45309;
  border: 1px solid #fde68a;
  border-radius: 4px;
  flex-shrink: 0;
}

/* Badge Mod. siempre a la derecha del nombre en tabla facturación, nombre en una sola fila */
#lista-facturacion .col-nombre .col-nombre-contenido {
  display: inline-flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 0.25rem;
  max-width: 100%;
  min-width: 0;
}
#lista-facturacion .col-nombre .col-nombre-texto {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#lista-facturacion .col-nombre .badge-modificacion-pendiente {
  margin-left: 0;
  flex-shrink: 0;
}

.filtro-separador {
  color: var(--color-borde, #e2e8f0);
  font-weight: 300;
  padding: 0 0.25rem;
  user-select: none;
}

.filtros-izquierda {
  display: flex;
  gap: 0.5rem;
  align-items: center;
  flex-wrap: wrap;
}

.filtros-facturacion .filtros-acciones-derecha,
.filtros-facturados .filtros-acciones-derecha,
.filtros-pacientes .filtros-acciones-derecha {
  margin-left: auto;
}

.filtros-acciones-derecha {
  display: flex;
  gap: 0.5rem;
  align-items: center;
}

/* Pacientes: todos los botones en una sola fila, sin desbordar */
.filtros-pacientes-acciones {
  flex-shrink: 0;
  flex-wrap: nowrap;
}

/* Pantallas pequeñas (13"): compactar botones para que quepan en una fila */
@media (max-width: 1280px) {
  .filtros-pacientes .filtros-pacientes-acciones .btn-toolbar {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
    font-size: 0.8rem;
  }
  .filtros-pacientes .busqueda-pacientes {
    min-width: 120px;
    width: 150px;
  }
}

/* Filtro año en Recogida de datos: oculto de momento (posible eliminación futura) */
.filtros-pacientes #filtro-año {
  display: none;
}

.filtros-pacientes .busqueda-pacientes {
  width: 180px;
  min-width: 140px;
}

/* Alinear altura de filtros y botones (34px en todas las pestañas) */
.filtros-pacientes input,
.filtros-pacientes select,
.filtros-pacientes .btn-toolbar,
.filtros-valoracion input,
.filtros-valoracion select,
.filtros-valoracion .btn-toolbar,
.filtros-tratamientos input,
.filtros-tratamientos select,
.filtros-tratamientos .btn-toolbar {
  height: 34px;
  box-sizing: border-box;
  padding: 0.45rem 0.75rem;
  font-size: 0.875rem;
  border-radius: var(--radio);
}

.filtros-pacientes input,
.filtros-pacientes select,
.filtros-valoracion input,
.filtros-valoracion select,
.filtros-tratamientos input,
.filtros-tratamientos select {
  padding: 0.45rem 0.6rem;
}

/* Embudo (Recogida / Valoración / Tratamientos): blanco = vista sin restricción; ámbar suave = filtro aplicado */
.filtros-pacientes select.filtro-select,
.filtros-valoracion select.filtro-select,
.filtros-tratamientos select.filtro-select,
.filtros-lista-espera select.filtro-select,
.filtros-lista-espera input.filtro-select,
.filtros-acompanamiento select.filtro-select,
.filtros-acompanamiento input.filtro-select {
  background-color: #fff;
  border: 1px solid var(--color-borde, #e2e8f0);
  transition: background-color 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}

.filtros-pacientes select.filtro-select.filtro-select--activo,
.filtros-valoracion select.filtro-select.filtro-select--activo,
.filtros-tratamientos select.filtro-select.filtro-select--activo,
.filtros-lista-espera select.filtro-select.filtro-select--activo,
.filtros-lista-espera input.filtro-select.filtro-select--activo,
.filtros-acompanamiento select.filtro-select.filtro-select--activo,
.filtros-acompanamiento input.filtro-select.filtro-select--activo {
  background-color: #fff4d6;
  border-color: #e5b84a;
  box-shadow: inset 0 0 0 1px rgba(200, 140, 30, 0.14);
}

.filtros-valoracion,
.filtros-tratamientos {
  justify-content: space-between;
}

/* Valoración: filtros compactos con etiqueta encima */
.filtros-valoracion-wrap {
  width: 100%;
  margin-bottom: 0.5rem;
}
.filtros-valoracion-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(118px, 1fr));
  gap: 0.45rem 0.65rem;
  align-items: end;
}
/* Valoración: una fila; align-items flex-end = misma referencia que Tratamientos (checkbox alineado al eje de los selects) */
#subpanel-valoracion .filtros-valoracion-grid {
  display: flex;
  flex-wrap: nowrap;
  align-items: flex-end;
  gap: 0.45rem 0.55rem;
  overflow-x: auto;
  overflow-y: hidden;
  padding-bottom: 0.25rem;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}
#subpanel-valoracion .filtros-valoracion-grid .fv-field {
  flex: 0 0 auto;
  min-width: 0;
}
/* Buscar: el doble del ancho compacto anterior (~130px → ~260px) */
#subpanel-valoracion .filtros-valoracion-grid .fv-field:first-child {
  flex: 0 0 auto;
  min-width: 140px;
  max-width: 260px;
  width: 260px;
}
#subpanel-valoracion .filtros-valoracion-grid select.filtro-select {
  width: 100%;
  min-width: 6.75rem;
  max-width: 9.5rem;
  font-size: 0.875rem;
  padding: 0.4rem 0.55rem;
}
#subpanel-valoracion .filtros-valoracion-grid .fv-field:nth-child(2) select.filtro-select {
  min-width: 8.5rem;
  max-width: 12rem;
}
#subpanel-valoracion .filtros-valoracion-grid .fv-field:nth-child(6) select.filtro-select {
  max-width: 10rem;
}
#subpanel-valoracion .filtros-valoracion-grid .fv-field-check {
  flex: 0 0 auto;
}
#subpanel-valoracion .filtros-valoracion-grid .fv-field-acciones {
  flex: 0 0 auto;
  min-width: 0;
  margin-left: auto;
  position: sticky;
  right: 0;
  z-index: 2;
  padding-left: 0.5rem;
  background: var(--color-card, #fff);
  box-shadow: -8px 0 12px -6px rgba(0, 0, 0, 0.08);
}
#subpanel-valoracion .filtros-valoracion-grid .fv-botones-acciones {
  flex-wrap: nowrap;
  justify-content: flex-end;
}
#subpanel-valoracion .filtros-valoracion-grid .busqueda-valoracion {
  font-size: 0.875rem;
  padding: 0.4rem 0.55rem;
}
.fv-field {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-width: 0;
}
.fv-label {
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--color-texto-secundario, #64748b);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  line-height: 1.15;
}
.fv-label-spacer {
  visibility: hidden;
  user-select: none;
  min-height: 1em;
}
.fv-field-acciones {
  justify-self: end;
  min-width: min(100%, 120px);
}
.fv-botones-acciones {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
  justify-content: flex-end;
}
.filtros-valoracion .btn-toolbar.btn-toolbar-icono {
  min-width: 34px;
  padding-left: 0.4rem;
  padding-right: 0.4rem;
  font-size: 1rem;
  line-height: 1;
}

.filtros-tratamientos-grid {
  grid-template-columns: repeat(auto-fill, minmax(118px, 1fr));
}
@media (min-width: 1100px) {
  .filtros-tratamientos-grid {
    grid-template-columns:
      minmax(150px, 1.2fr)
      minmax(100px, 0.9fr)
      minmax(100px, 0.85fr)
      minmax(9rem, 0.45fr)
      auto;
  }
}
/* Mes resumen CDIAT: no estirar toda la fila */
#tratamientos-cdiat-mes-wrap .fv-label {
  white-space: nowrap;
}
#tratamientos-cdiat-mes {
  max-width: 11rem;
  width: 100%;
  min-width: 0;
}

/* Lista de espera: filtros en fila; botón Añadir alineado a la derecha, misma altura que selects */
#subpanel-lista-espera .filtros-lista-espera-grid {
  display: flex;
  flex-wrap: nowrap;
  align-items: flex-end;
  gap: 0.45rem 0.55rem;
  overflow-x: auto;
  overflow-y: hidden;
  padding-bottom: 0.25rem;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}
#subpanel-lista-espera .filtros-lista-espera-grid .fv-field {
  flex: 0 0 auto;
  min-width: 0;
}
#subpanel-lista-espera .filtros-lista-espera-grid .fv-field:first-child {
  flex: 0 0 auto;
  min-width: 140px;
  max-width: 220px;
  width: 200px;
}
#subpanel-lista-espera .filtros-lista-espera-grid select.filtro-select,
#subpanel-lista-espera .filtros-lista-espera-grid input.filtro-select {
  width: 100%;
  min-width: 6.75rem;
  max-width: 9.5rem;
  font-size: 0.875rem;
  padding: 0.4rem 0.55rem;
  box-sizing: border-box;
}
#subpanel-lista-espera .filtros-lista-espera-grid .fv-field-check {
  flex: 0 0 auto;
}
#subpanel-lista-espera .filtros-lista-espera-grid .fv-field-acciones {
  flex: 0 0 auto;
  min-width: 0;
  margin-left: auto;
  position: sticky;
  right: 0;
  z-index: 2;
  padding-left: 0.5rem;
  background: var(--color-card, #fff);
  box-shadow: -8px 0 12px -6px rgba(0, 0, 0, 0.08);
}
#btn-lista-espera-anadir {
  font-size: 0.875rem;
  font-weight: 600;
  padding: 0.4rem 0.85rem;
  line-height: 1.25;
  min-height: 2.125rem;
  box-sizing: border-box;
  white-space: nowrap;
}

/* Tabla CDIAT: sin Estado; mes junto a botones (flex + margin-left en mes) */
.filtros-tratamientos--modo-cdiat .filtros-tratamientos-grid {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.45rem 0.65rem;
}
.filtros-tratamientos--modo-cdiat .filtros-tratamientos-grid > .fv-field:first-child {
  flex: 1 1 160px;
  min-width: 120px;
  max-width: min(100%, 320px);
}
.filtros-tratamientos--modo-cdiat .fv-field-filtro-centro-trat {
  flex: 0 0 auto;
  width: 10.5rem;
  max-width: 12rem;
}
.filtros-tratamientos--modo-cdiat #filtro-centro-tratamientos {
  max-width: 100%;
  min-width: 0;
}
.filtros-tratamientos--modo-cdiat .fv-field-check {
  flex: 0 0 auto;
}
.filtros-tratamientos--modo-cdiat #tratamientos-cdiat-mes-wrap {
  flex: 0 0 auto;
  margin-left: auto;
}
.filtros-tratamientos--modo-cdiat #tratamientos-cdiat-tutor-wrap,
.filtros-tratamientos--modo-cdiat #tratamientos-cdiat-trat-wrap {
  flex: 0 0 auto;
  width: 10.5rem;
  max-width: 12rem;
}
.filtros-tratamientos--modo-cdiat #filtro-tutor-tratamientos-cdiat,
.filtros-tratamientos--modo-cdiat #filtro-tratamiento-tratamientos-cdiat {
  max-width: 100%;
  min-width: 0;
}
.filtros-tratamientos--modo-cdiat .fv-field-acciones {
  flex: 0 0 auto;
  margin-left: 0;
  justify-self: unset;
  min-width: 0;
}
.fv-field-check .filtro-check-compacto {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.8rem;
  color: var(--color-texto-secundario, #64748b);
  white-space: nowrap;
  min-height: 34px;
  margin: 0;
}
.fv-field-check .filtro-check-compacto input {
  width: auto;
  height: auto;
  margin: 0;
}

/* Caja (valoración) */
.caja-hint {
  margin-bottom: 0.75rem;
  max-width: 960px;
}
.caja-tarjetas {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 0.75rem;
  margin-bottom: 1rem;
}
.caja-tarjeta {
  border-radius: var(--radio, 8px);
  padding: 0.85rem 1rem;
  border: 1px solid var(--color-borde, #e2e8f0);
  background: var(--color-card, #fff);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.caja-tarjeta-cobrado { border-left: 4px solid #059669; }
.caja-tarjeta-pendiente { border-left: 4px solid #d97706; }
.caja-tarjeta-extracciones { border-left: 4px solid #64748b; }
.caja-tarjeta-saldo { border-left: 4px solid #2563eb; background: linear-gradient(135deg, rgba(37, 99, 235, 0.06), var(--color-card, #fff)); }
.caja-tarjeta-label {
  display: block;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--color-texto-secundario, #64748b);
  margin-bottom: 0.35rem;
}
.caja-tarjeta-valor {
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--color-texto, #0f172a);
  font-variant-numeric: tabular-nums;
}
.caja-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 1.25rem;
}
.caja-movimientos-titulo {
  font-size: 1rem;
  font-weight: 600;
  margin: 0 0 0.5rem 0;
  color: var(--color-texto, #0f172a);
}
.caja-movimientos-vacio {
  text-align: center;
  color: var(--color-texto-secundario, #64748b);
  padding: 1rem !important;
}
.caja-registro-cell {
  font-size: 0.8rem;
  color: var(--color-texto-secundario, #64748b);
  white-space: nowrap;
}
#subpanel-caja .tabla-contenedor {
  max-height: min(420px, 50vh);
  overflow: auto;
}

.filtros-valoracion .busqueda-valoracion,
.filtros-tratamientos .busqueda-tratamientos {
  width: 100%;
  min-width: 0;
  max-width: 100%;
}

.btn-toolbar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 500;
  cursor: pointer;
  transition: all var(--transicion);
  border: 1px solid var(--color-borde);
  white-space: nowrap;
}

.btn-toolbar:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Wrappers Valoración: clicks pasan al wrapper cuando el botón está disabled */
.btn-wrapper-valoracion {
  display: inline-flex;
  cursor: pointer;
}
.btn-wrapper-valoracion .btn-toolbar:disabled {
  pointer-events: none;
}

.filtros-pacientes .btn-toolbar.btn-copiar-valoracion {
  background: #93c5fd;
  color: #1e40af;
  border-color: #60a5fa;
}

.filtros-pacientes .btn-toolbar.btn-copiar-valoracion:hover:not(:disabled) {
  background: #60a5fa;
  color: #1e3a8a;
}

.filtros-pacientes .btn-toolbar.btn-cita {
  background: #c4b5fd;
  color: #5b21b6;
  border-color: #a78bfa;
}

.filtros-pacientes .btn-toolbar.btn-cita:hover:not(:disabled) {
  background: #a78bfa;
  color: #4c1d95;
  border-color: #8b5cf6;
}

.filtros-pacientes .btn-toolbar.btn-secundario {
  background: var(--color-card);
  color: var(--color-texto);
}

.filtros-pacientes #btn-nuevo.btn-toolbar {
  background: var(--color-primario);
  color: white;
  border: none;
}

.filtros-pacientes #btn-nuevo.btn-toolbar:hover {
  background: var(--color-primario-hover);
}

.btn-editar {
  background: #fb923c !important;
  color: #fff !important;
  border-color: #ea580c !important;
}

.btn-editar:hover:not(:disabled) {
  background: #ea580c !important;
  color: #fff !important;
  border-color: #c2410c !important;
}

.filtros input,
.filtros select,
.filtros-y-acciones input,
.filtros-y-acciones select {
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.875rem;
  background: var(--color-card);
  transition: border-color var(--transicion);
}

.filtros input:focus,
.filtros select:focus,
.filtros-y-acciones input:focus,
.filtros-y-acciones select:focus {
  outline: none;
  border-color: var(--color-primario);
  box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.15);
}

.busqueda-compacta {
  width: 140px;
  min-width: 100px;
}

.filtros input[type="text"] {
  flex: 1;
  min-width: 200px;
}

.btn-compacto {
  padding: 0.45rem 0.75rem;
  font-size: 0.85rem;
}

.btn-icono-papelera {
  width: 34px;
  height: 34px;
  padding: 0;
  border: none;
  border-radius: var(--radio);
  background: #dc2626;
  color: white;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  transition: background var(--transicion);
}

.btn-icono-papelera:hover:not(:disabled) {
  background: #b91c1c;
}

.btn-icono-papelera:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.btn-icono-papelera::before {
  content: "";
  display: block;
  width: 16px;
  height: 16px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'%3E%3C/polyline%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3Cline x1='10' y1='11' x2='10' y2='17'%3E%3C/line%3E%3Cline x1='14' y1='11' x2='14' y2='17'%3E%3C/line%3E%3C/svg%3E") center/contain no-repeat;
}

.btn-eliminar {
  background: #dc2626;
  color: white;
  border: none;
  font-weight: 500;
}

.btn-eliminar:hover:not(:disabled) {
  background: #b91c1c;
  color: white;
}

.btn-eliminar:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

#btn-nuevo {
  background: var(--color-primario);
  color: white;
  border: none;
  padding: 0.45rem 0.85rem;
  border-radius: var(--radio);
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
  transition: background var(--transicion);
  white-space: nowrap;
}

#btn-nuevo:hover {
  background: var(--color-primario-hover);
}

/* ===== Tabla ===== */
.tabla-contenedor {
  overflow-x: auto;
  border-radius: var(--radio);
  border: 1px solid var(--color-borde);
}

/* Pacientes: scroll interno + ancho completo (cabecera alineada aunque el cuerpo sea solo mensaje vacío) */
#pacientes .tabla-contenedor {
  overflow: auto;
  max-height: calc(100vh - 260px);
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

/* Valoración y Tratamientos: mismo comportamiento */
#valoracion .tabla-contenedor {
  overflow: auto;
  max-height: calc(100vh - 260px);
}

/* Facturación: encabezado fijo (sub-tabs, tarjetas, filtros) al hacer scroll */
.facturacion-header-fijo {
  position: sticky;
  top: 0;
  z-index: 10;
  background: var(--color-card);
  padding-bottom: 0.5rem;
  margin-bottom: 0;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}

/* Facturación: tabla con scroll interno y encabezado sticky */
#facturacion #subpanel-facturacion .tabla-contenedor {
  overflow: auto;
  max-height: calc(100vh - 320px);
}

#facturacion #subpanel-facturacion .tabla-contenedor th {
  background: #754516;
  color: #fff;
  font-size: 12px;
  position: sticky;
  top: 0;
  z-index: 1;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}

/* Remesas: tabla con scroll y encabezado sticky */
#facturacion #subpanel-remesas .tabla-contenedor {
  overflow: auto;
  max-height: calc(100vh - 320px);
}
#facturacion #subpanel-remesas .tabla-contenedor th {
  background: #754516;
  color: #fff;
  font-size: 12px;
  position: sticky;
  top: 0;
  z-index: 1;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}

/* Dropdowns inline Remesas: fuente 12px como el resto de la tabla */
.select-inline-estandar,
.select-remesas-inline,
.select-dia-cobro-inline {
  padding: 0.2rem 0.4rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 12px;
  font-family: inherit;
  background: var(--color-card);
  color: var(--color-texto);
  min-width: 5rem;
  height: 1.75rem;
  line-height: 1;
  cursor: pointer;
  transition: border-color var(--transicion), box-shadow var(--transicion);
}
.select-inline-estandar:focus,
.select-remesas-inline:focus,
.select-dia-cobro-inline:focus {
  outline: none;
  border-color: var(--color-primario);
  box-shadow: 0 0 0 2px rgba(15, 118, 110, 0.12);
}

/* Dropdown Remesas: colores de fondo pastel según valor */
.select-remesas-inline.remesas-valor-si { background: #f0fdf4; color: #15803d; }
.select-remesas-inline.remesas-valor-ingreso { background: #dbeafe; color: #1d4ed8; }
.select-remesas-inline.remesas-valor-beca { background: #fef3c7; color: #b45309; }
.select-remesas-inline.remesas-valor-devolucion { background: #fee2e2; color: #b91c1c; }

/* Columna Expediente: ancho máximo 80px y ellipsis */
#facturacion #subpanel-remesas th.col-expediente,
#facturacion #subpanel-remesas td.col-expediente {
  max-width: 80px;
  width: 80px;
}
#facturacion #subpanel-remesas td.col-expediente .col-expediente-texto {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Columna Nombre y Apellidos: ancho máximo 200px y ellipsis */
#facturacion #subpanel-remesas th.col-nombre-paciente,
#facturacion #subpanel-remesas td.col-nombre-paciente {
  max-width: 200px;
  width: 200px;
}
#facturacion #subpanel-remesas td.col-nombre-paciente .col-nombre-paciente-texto {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Columna Nombre Madre/Padre: ancho máximo 200px y ellipsis */
#facturacion #subpanel-remesas th.col-nombre-padre,
#facturacion #subpanel-remesas td.col-nombre-padre {
  max-width: 200px;
  width: 200px;
}
#facturacion #subpanel-remesas td.col-nombre-padre .col-nombre-padre-texto {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Columna Número de cuenta: ancho mínimo 200px y ellipsis */
#facturacion #subpanel-remesas th.col-numero-cuenta,
#facturacion #subpanel-remesas td.col-numero-cuenta {
  min-width: 200px;
  width: 200px;
}
#facturacion #subpanel-remesas td.col-numero-cuenta .col-numero-cuenta-texto {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Dropdown Día de cobro: ancho compacto (solo 2 cifras) */
.select-dia-cobro-inline {
  min-width: 2.5rem !important;
  max-width: 50px !important;
  width: 50px !important;
  padding: 0.2rem 0.25rem !important;
}

/* Incremento stepper: diseño acorde al sistema con colores */
.incremento-stepper {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
.btn-incremento {
  width: 1.5rem;
  height: 1.5rem;
  padding: 0;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 1rem;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  transition: background var(--transicion), border-color var(--transicion);
}
.btn-incremento-minus {
  background: var(--color-card);
  color: #dc2626;
}
.btn-incremento-minus:hover:not(:disabled) {
  background: rgba(220, 38, 38, 0.1);
  border-color: #dc2626;
}
.btn-incremento-plus {
  background: var(--color-card);
  color: #059669;
}
.btn-incremento-plus:hover:not(:disabled) {
  background: rgba(5, 150, 105, 0.1);
  border-color: #059669;
}
.btn-incremento:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.incremento-valor {
  min-width: 1.25rem;
  text-align: center;
  font-weight: 500;
  font-size: 12px;
}

/* Datos pacientes - tabla revisión: celdas editables */
#datos-pacientes .revision-editable {
  cursor: pointer;
  position: relative;
}
#datos-pacientes .revision-editable:hover {
  background: rgba(117, 69, 22, 0.08);
}
#datos-pacientes .revision-editable.revision-editing {
  padding: 0;
  vertical-align: middle;
}

/* Datos pacientes - tabla revisión: encabezado sticky */
#datos-pacientes #subpanel-datos-tabla-pacientes .tabla-contenedor th {
  background: #754516;
  color: #fff;
  font-size: 12px;
  position: sticky;
  top: 0;
  z-index: 1;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}

table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}

th, td {
  padding: 0.75rem 1rem;
  text-align: left;
  border-bottom: 1px solid var(--color-borde);
}

/* Cebreado: mismo tono en todas las tablas (como historial) */
tbody tr:nth-child(odd) {
  background: #fff;
}

tbody tr:nth-child(even) {
  background: rgba(117, 69, 22, 0.08);
}

th {
  background: #754516;
  font-weight: 600;
  font-size: 12px;
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

/* Tabla Pacientes: encabezados fijos al hacer scroll */
#pacientes .tabla-contenedor th {
  background: #754516;
  color: #fff;
  font-size: 12px;
  position: sticky;
  top: 0;
  z-index: 1;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}

#pacientes .tabla-contenedor table {
  table-layout: fixed;
  width: 100%;
  min-width: 100%;
  box-sizing: border-box;
}

/* Recogida: nombre niño y padre/madre con ellipsis y tooltip */
#pacientes .tabla-contenedor th.col-nombre-nino {
  width: 220px;
  min-width: 120px;
}
#pacientes .tabla-contenedor th.col-padre-madre {
  width: 200px;
  min-width: 120px;
}
#pacientes .tabla-contenedor td.col-nombre-nino,
#pacientes .tabla-contenedor td.col-padre-madre {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Recogida CDIAT: fechas tipo Valoración (Merril / entrevista) */
#pacientes .tabla-contenedor th.col-fecha,
#pacientes .tabla-contenedor td.col-fecha {
  width: 100px;
  max-width: 100px;
  min-width: 72px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Recogida: email 120px con ellipsis (una línea para alinear bordes) */
#pacientes .tabla-contenedor th.col-email {
  width: 120px;
  min-width: 120px;
}
#pacientes .tabla-contenedor td.col-email {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Recogida: badges a 12px como el resto de la tabla */
#pacientes .tabla-contenedor .badge-estado,
#pacientes .tabla-contenedor .badge-cese-tabla {
  font-size: 12px;
}

/* Recogida: ocultar columna Teléfono */
#pacientes .tabla-contenedor th.col-telefono,
#pacientes .tabla-contenedor td.col-telefono {
  display: none;
}

/* Recogida: Centro máximo 100px */
#pacientes .tabla-contenedor th.col-centro {
  width: 100px;
  max-width: 100px;
}
#pacientes .tabla-contenedor td.col-centro {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Recogida: bloque «misma búsqueda, fuera de filtros» */
.recogida-coincidencias-fuera-wrap {
  margin-top: 12px;
  padding: 12px 14px;
  border-radius: 8px;
  border: 1px solid #e2e8f0;
  background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}
.recogida-coincidencias-fuera-cabecera {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 12px;
  margin-bottom: 6px;
}
.recogida-coincidencias-fuera-titulo {
  font-weight: 600;
  font-size: 0.95rem;
  color: #334155;
}
.recogida-coincidencias-fuera-contador {
  font-size: 0.8rem;
  color: #64748b;
}
.recogida-coincidencias-fuera-ayuda {
  font-size: 0.8rem;
  color: #64748b;
  line-height: 1.4;
  margin: 0 0 10px 0;
}
.recogida-coincidencias-fuera-lista {
  list-style: none;
  margin: 0;
  padding: 0;
}
.recogida-coincidencias-fuera-fila {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  padding: 8px 0;
  border-top: 1px solid #e2e8f0;
  font-size: 0.875rem;
  cursor: pointer;
  border-radius: 6px;
  margin: 0 -0.2rem;
  padding-left: 0.2rem;
  padding-right: 0.2rem;
  transition: background 0.12s ease;
}
.recogida-coincidencias-fuera-fila:hover {
  background: rgba(148, 163, 184, 0.12);
}
.recogida-coincidencias-fuera-fila:first-child {
  border-top: none;
  padding-top: 0;
}
.recogida-cf-nombre {
  font-weight: 600;
  color: #0f172a;
}
.recogida-cf-sep {
  color: #94a3b8;
  user-select: none;
}
.recogida-cf-centro {
  color: #475569;
  font-size: 0.8rem;
}
.recogida-cf-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 6px;
  flex: 1 1 100%;
  margin-left: 0;
  padding-top: 2px;
}
@media (min-width: 720px) {
  .recogida-cf-chips {
    flex: 1 1 auto;
    margin-left: auto;
    padding-top: 0;
    max-width: 60%;
  }
}
.recogida-motivo-chip {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  line-height: 1.3;
  white-space: nowrap;
  border: 1px solid transparent;
}
.recogida-motivo--cese {
  background: #fff1f2;
  color: #be123c;
  border-color: #fecdd3;
}
.recogida-motivo--copiado {
  background: #f5f3ff;
  color: #5b21b6;
  border-color: #ddd6fe;
}
.recogida-motivo--cita {
  background: #fffbeb;
  color: #b45309;
  border-color: #fde68a;
}
.recogida-motivo--entrevista {
  background: #eff6ff;
  color: #1d4ed8;
  border-color: #bfdbfe;
}
.recogida-motivo--listado {
  background: #f1f5f9;
  color: #475569;
  border-color: #cbd5e1;
}
.recogida-motivo--agenda {
  background: #f0fdfa;
  color: #0f766e;
  border-color: #99f6e4;
}
.recogida-motivo--valoracion,
.recogida-motivo--alta,
.recogida-motivo--noalta {
  background: #faf5ff;
  color: #6b21a8;
  border-color: #e9d5ff;
}
.recogida-motivo--otro {
  background: #f8fafc;
  color: #64748b;
  border-color: #e2e8f0;
}

/* Recogida: fila clicable (resumen) */
#pacientes #lista-pacientes tr.fila-paciente-recogida {
  cursor: pointer;
}

/* Modal resumen paciente (compacto, barra de acento en cada bloque = captura "ribete" lateral) */
.modal-contenido.modal-resumen-paciente-recogida {
  max-width: 500px;
  width: min(500px, calc(100vw - 1.5rem));
  max-height: 85vh;
  display: flex;
  flex-direction: column;
  padding: 0;
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 20px 50px rgba(15, 23, 42, 0.18);
}
.modal-resumen-paciente-recogida-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  background: linear-gradient(135deg, #1e3a5f 0%, #2d4a6f 100%);
  color: #f8fafc;
  border-radius: 0;
  padding: 0.6rem 0.85rem;
}
.modal-resumen-paciente-recogida-header h2 {
  font-size: 1rem;
  font-weight: 600;
  margin: 0;
  letter-spacing: 0.01em;
}
.modal-resumen-paciente-recogida-header .modal-cerrar {
  color: rgba(248, 250, 252, 0.9);
  font-size: 1.35rem;
  line-height: 1;
  padding: 0 0.2rem;
}
.modal-resumen-paciente-recogida-header .modal-cerrar:hover {
  color: #fff;
  background: rgba(255, 255, 255, 0.12);
  border-radius: 4px;
}
.modal-resumen-paciente-recogida-body {
  padding: 0.55rem 0.7rem 0.65rem;
  overflow-y: auto;
  flex: 1 1 auto;
  min-height: 0;
  background: #f1f5f9;
}
/* Ribete / barra de acento: borde izquierdo grueso y más intenso (como el modal de ficha) */
.resumen-pac-bloque {
  border-radius: 8px;
  padding: 0.5rem 0.6rem 0.55rem;
  margin-bottom: 0.5rem;
  font-size: 0.8rem;
  border: 1px solid;
  border-left-width: 5px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset;
}
.resumen-pac-bloque:last-of-type {
  margin-bottom: 0;
}
.resumen-pac-bloque--nino {
  background: #eff6ff;
  border-color: #bfdbfe;
  border-left-color: #2563eb;
}
.resumen-pac-bloque--familia {
  background: #faf5ff;
  border-color: #e9d5ff;
  border-left-color: #7e22ce;
}
.resumen-pac-bloque--direccion {
  background: #f8fafc;
  border-color: #e2e8f0;
  border-left-color: #64748b;
}
.resumen-pac-bloque--colegio {
  background: #f0fdfa;
  border-color: #99f6e4;
  border-left-color: #0d9488;
}
.resumen-pac-bloque-titulo {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-weight: 700;
  margin: 0 0 0.4rem 0;
  padding-bottom: 0.4rem;
  color: #475569;
  opacity: 0.95;
  border-bottom: 1px solid;
}
.resumen-pac-bloque--nino .resumen-pac-bloque-titulo {
  color: #1d4ed8;
  border-bottom-color: #93c5fd;
}
.resumen-pac-bloque--familia .resumen-pac-bloque-titulo {
  color: #6b21a8;
  border-bottom-color: #d8b4fe;
}
.resumen-pac-bloque--direccion .resumen-pac-bloque-titulo {
  color: #64748b;
  border-bottom-color: #cbd5e1;
}
.resumen-pac-bloque--colegio .resumen-pac-bloque-titulo {
  color: #0f766e;
  border-bottom-color: #2dd4bf;
}
/* Progenitor 1/2: sin línea intermedia, solo título sutil (sin franja extra) */
.resumen-pac-subtitulo {
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: #64748b;
  margin: 0.15rem 0 0.2rem;
  padding: 0;
  border: none;
}
.resumen-pac-bloque--familia .resumen-pac-bloque-titulo + .resumen-pac-subtitulo {
  margin-top: 0.1rem;
}
.resumen-pac-bloque--familia .resumen-pac-subtitulo + .resumen-pac-grid + .resumen-pac-subtitulo {
  margin-top: 0.25rem;
}
.resumen-pac-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.3rem 0.65rem;
  align-items: start;
}
.resumen-pac-grid--colegio-2x2 {
  /* Misma malla 2x2, dos filas compactas: Colegio|Tutor, Tel|Correo */
  margin-top: 0;
}
.resumen-pac-celda {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  min-width: 0;
}
.resumen-pac-celda--span2 {
  grid-column: 1 / -1;
}
.resumen-pac-label {
  font-size: 0.65rem;
  color: #64748b;
  font-weight: 600;
  line-height: 1.2;
  padding: 0;
  border: none;
}
.resumen-pac-bloque--direccion .resumen-pac-direccion {
  margin: 0.2rem 0 0;
  padding: 0;
  border: none;
}
.resumen-pac-valor {
  color: #0f172a;
  font-size: 0.8rem;
  line-height: 1.25;
  word-break: break-word;
}
.resumen-pac-valor--estado {
  font-weight: 700;
  color: #0c4a6e;
}
.resumen-pac-direccion {
  margin: 0;
  font-size: 0.8rem;
  line-height: 1.35;
  color: #334155;
  word-break: break-word;
}
.modal-resumen-paciente-recogida-footer {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: center;
  justify-content: flex-end;
  padding: 0.5rem 0.7rem 0.65rem;
  background: #fff;
  border-top: 1px solid #e2e8f0;
  margin: 0;
}
.modal-resumen-paciente-recogida-footer .btn-resumen-paciente-ocultar {
  margin-right: auto;
  flex-shrink: 0;
}
.modal-resumen-paciente-recogida-footer-derecha {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  justify-content: flex-end;
}
.modal-resumen-paciente-recogida-footer .btn {
  font-size: 0.8rem;
  padding: 0.35rem 0.7rem;
}

/* Tabla Valoración: encabezados fijos al hacer scroll */
#valoracion .tabla-contenedor th {
  background: #754516;
  color: #fff;
  font-size: 12px;
  position: sticky;
  top: 0;
  z-index: 1;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}

/* Tabla Tratamientos: encabezados fijos al hacer scroll */
#valoracion #subpanel-tratamientos .tabla-contenedor th {
  background: #754516;
  color: #fff;
  font-size: 12px;
  position: sticky;
  top: 0;
  z-index: 1;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}

/* Valoración / Tratamientos: layout fijo y columnas alineadas con Recogida (centro + paciente) */
#valoracion #subpanel-valoracion .tabla-contenedor table,
#valoracion #subpanel-tratamientos .tabla-contenedor table {
  table-layout: fixed;
}

#valoracion #subpanel-valoracion .tabla-contenedor th.col-centro,
#valoracion #subpanel-tratamientos .tabla-contenedor th.col-centro {
  width: 100px;
  max-width: 100px;
}
#valoracion #subpanel-valoracion .tabla-contenedor td.col-centro,
#valoracion #subpanel-tratamientos .tabla-contenedor td.col-centro {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#valoracion #subpanel-valoracion .tabla-contenedor th.col-nombre-nino,
#valoracion #subpanel-tratamientos .tabla-contenedor th.col-nombre-nino {
  width: 220px;
  min-width: 120px;
}
#valoracion #subpanel-valoracion .tabla-contenedor td.col-nombre-nino,
#valoracion #subpanel-tratamientos .tabla-contenedor td.col-nombre-nino {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#valoracion #subpanel-valoracion .tabla-contenedor th.col-fecha,
#valoracion #subpanel-tratamientos .tabla-contenedor th.col-fecha {
  width: 100px;
  max-width: 100px;
  min-width: 72px;
}
#valoracion #subpanel-valoracion .tabla-contenedor td.col-fecha,
#valoracion #subpanel-tratamientos .tabla-contenedor td.col-fecha {
  max-width: 100px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#valoracion #subpanel-valoracion .tabla-contenedor th.col-hora {
  width: 80px;
  max-width: 80px;
  min-width: 56px;
}
#valoracion #subpanel-valoracion .tabla-contenedor td.col-hora {
  max-width: 80px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#valoracion #subpanel-valoracion .tabla-contenedor th.col-o-iniciales {
  width: 220px;
  min-width: 220px;
  max-width: 320px;
}
#valoracion #subpanel-valoracion .tabla-contenedor td.col-o-iniciales {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#valoracion #subpanel-valoracion .tabla-contenedor th.col-terapeuta-entrevista,
#valoracion #subpanel-valoracion .tabla-contenedor td.col-terapeuta-entrevista {
  width: 100px;
  min-width: 100px;
  max-width: 100px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#valoracion #subpanel-valoracion .tabla-terapeuta-badge {
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
  border-radius: 4px;
  padding: 2px 4px;
  font-size: 11px;
  font-weight: 600;
  border: 1px solid rgba(0, 0, 0, 0.1);
  box-sizing: border-box;
}

/* Valoración CDIAT: tabla pipeline (EXP, fases, confirmada, fase derivada) */
#valoracion #subpanel-valoracion .tabla-contenedor td.col-exp-cdiat,
#valoracion #subpanel-valoracion .tabla-contenedor th.col-exp-cdiat {
  max-width: 88px;
  font-size: 0.85rem;
}
#valoracion #subpanel-valoracion .tabla-contenedor td.col-nombre-cdiat {
  max-width: 200px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#valoracion #subpanel-valoracion .tabla-contenedor .badge-estado-fase {
  display: inline-block;
  font-size: 0.7rem;
  padding: 0.15rem 0.35rem;
  border-radius: 4px;
  font-weight: 600;
  white-space: nowrap;
}
#valoracion #subpanel-valoracion .tabla-contenedor .badge-estado-fase-pend {
  background: #f3f4f6;
  color: #374151;
}
#valoracion #subpanel-valoracion .tabla-contenedor .badge-estado-fase-conf {
  background: #fef3c7;
  color: #92400e;
}
#valoracion #subpanel-valoracion .tabla-contenedor .badge-estado-fase-realizada {
  background: #d1fae5;
  color: #065f46;
}
#valoracion #subpanel-valoracion .tabla-contenedor .badge-fase-cdiat {
  display: inline-block;
  font-size: 0.72rem;
  padding: 0.2rem 0.45rem;
  border-radius: 6px;
  font-weight: 600;
  background: #e0e7ff;
  color: #3730a3;
}
#valoracion #subpanel-valoracion .tabla-contenedor .badge-fase-cdiat.badge-fase-circuito {
  background: #d1fae5;
  color: #065f46;
}

#valoracion #subpanel-valoracion .tabla-contenedor th.col-importe-eur,
#valoracion #subpanel-tratamientos .tabla-contenedor th.col-importe-eur,
#valoracion #subpanel-valoracion .tabla-contenedor td.col-importe-eur,
#valoracion #subpanel-tratamientos .tabla-contenedor td.col-importe-eur {
  width: 110px;
  max-width: 120px;
  text-align: right;
  white-space: nowrap;
}

#valoracion #subpanel-valoracion .tabla-contenedor th.col-compact-si,
#valoracion #subpanel-tratamientos .tabla-contenedor th.col-compact-si {
  width: 75px;
  min-width: 75px;
  max-width: 92px;
}
#valoracion #subpanel-valoracion .tabla-contenedor td.col-compact-si,
#valoracion #subpanel-tratamientos .tabla-contenedor td.col-compact-si {
  min-width: 75px;
  max-width: 92px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#valoracion #subpanel-valoracion .tabla-contenedor th.col-dias-restantes {
  width: 112px;
  min-width: 100px;
  max-width: 130px;
}
#valoracion #subpanel-valoracion .tabla-contenedor td.col-dias-restantes {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 11px;
}
#valoracion #subpanel-valoracion .dias-devolucion-ok {
  color: #166534;
  background: #dcfce7;
  border-radius: 4px;
  padding: 2px 6px;
  font-weight: 600;
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
}
#valoracion #subpanel-valoracion .dias-devolucion-retraso {
  color: #991b1b;
  background: #fee2e2;
  border-radius: 4px;
  padding: 2px 6px;
  font-weight: 600;
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
}
#valoracion #subpanel-valoracion .dias-realizada-plazo {
  color: #166534;
  background: #dcfce7;
  border-radius: 4px;
  padding: 2px 8px;
  font-weight: 700;
  display: inline-block;
  vertical-align: middle;
}
#valoracion #subpanel-valoracion .dias-realizada-retraso {
  color: #c2410c;
  background: #ffedd5;
  border-radius: 4px;
  padding: 2px 8px;
  font-weight: 700;
  display: inline-block;
  vertical-align: middle;
}
#valoracion #subpanel-valoracion .dias-realizada-sin-fecha {
  color: #4b5563;
  background: #f3f4f6;
  border-radius: 4px;
  padding: 2px 8px;
  font-weight: 600;
  display: inline-block;
  vertical-align: middle;
}

#valoracion #subpanel-valoracion .tabla-contenedor th.col-acepta-compact,
#valoracion #subpanel-tratamientos .tabla-contenedor th.col-acepta-compact {
  width: 100px;
  min-width: 92px;
  max-width: 118px;
}
#valoracion #subpanel-valoracion .tabla-contenedor td.col-acepta-compact,
#valoracion #subpanel-tratamientos .tabla-contenedor td.col-acepta-compact {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Estado (Acepta / En espera / Rechaza) — Valoración y Tratamientos */
#valoracion #subpanel-valoracion .estado-badge,
#valoracion #subpanel-tratamientos .estado-badge {
  display: inline-block;
  font-size: 11px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 4px;
  white-space: nowrap;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: middle;
  line-height: 1.25;
  border: 1px solid rgba(0, 0, 0, 0.06);
  box-sizing: border-box;
}
#valoracion #subpanel-valoracion .estado-badge-acepta,
#valoracion #subpanel-tratamientos .estado-badge-acepta {
  background: #dcfce7;
  color: #166534;
}
#valoracion #subpanel-valoracion .estado-badge-espera,
#valoracion #subpanel-tratamientos .estado-badge-espera {
  background: #e5e7eb;
  color: #374151;
}
#valoracion #subpanel-valoracion .estado-badge-rechaza,
#valoracion #subpanel-tratamientos .estado-badge-rechaza {
  background: #fecaca;
  color: #b91c1c;
}
#valoracion #subpanel-valoracion .estado-badge-otro,
#valoracion #subpanel-tratamientos .estado-badge-otro {
  background: #f3f4f6;
  color: #4b5563;
}

#valoracion #subpanel-tratamientos .tabla-contenedor th.col-tratamientos-detalle {
  width: 200px;
  min-width: 120px;
  max-width: 280px;
}
#valoracion #subpanel-tratamientos .tabla-contenedor td.col-tratamientos-detalle {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#valoracion #subpanel-tratamientos .tabla-contenedor th.col-notas-trat {
  min-width: 100px;
  max-width: 200px;
}
#valoracion #subpanel-tratamientos .tabla-contenedor td.col-notas-trat {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Centrado de columnas: forzar en celdas y encabezados */
td.col-center,
th.col-center {
  text-align: center !important;
}

/* Badges estado cita/entrevista (Recogida de datos) */
.badge-estado {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 0.8rem;
  font-weight: 500;
}
.badge-estado-gris { background: #f1f5f9; color: #64748b; }
.badge-estado-naranja { background: #fefce8; color: #a16207; }
.badge-estado-familia { background: #ede9fe; color: #5b21b6; }
.badge-estado-verde { background: #f0fdf4; color: #16a34a; }

/* Select estado en tabla Recogida (colores por estado) */
.select-estado-tabla {
  font-size: 0.8rem;
  padding: 2px 6px;
  border-radius: 6px;
  border: 1px solid var(--color-borde, #e2e8f0);
  min-width: 100px;
  cursor: pointer;
}
.select-estado-tabla.select-estado-color-gris { background: #f1f5f9; color: #64748b; }
.select-estado-tabla.select-estado-color-naranja { background: #fefce8; color: #a16207; }
.select-estado-tabla.select-estado-color-verde { background: #f0fdf4; color: #16a34a; }

.modal-cita-seccion { margin-bottom: 1rem; }
.modal-cita-seccion-titulo { font-size: 0.95rem; margin: 0 0 0.5rem 0; color: var(--color-primario); }
.modal-cita-hint { font-size: 0.85rem; color: var(--color-texto-suave); margin: 0.5rem 0; }

.check-verde {
  color: #16a34a;
  font-weight: 600;
}

td.col-num,
th.col-num {
  text-align: right !important;
  white-space: nowrap;
}

.tratamientos-facturacion-accion {
  display: flex;
  align-items: flex-end;
}

.tratamientos-facturacion-btns {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.copiado-indicator {
  color: #16a34a;
  font-weight: 600;
  font-size: 0.9rem;
}

.fact-mes-label {
  font-weight: 600;
  min-width: 140px;
  text-align: center;
}

.fact-mes-clickable {
  cursor: pointer;
  padding: 0.25rem 0.5rem;
  border-radius: var(--radio);
  transition: background var(--transicion);
}

.fact-mes-clickable:hover {
  background: rgba(117, 69, 22, 0.12);
}

.placeholder-subtab {
  padding: 2rem;
  color: var(--color-texto-suave);
  font-style: italic;
}

.filtros-facturacion {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}

.fact-banner-solo-ceses-debug {
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 0.65rem;
  padding: 0.5rem 0.75rem;
  font-size: 0.88rem;
  font-weight: 600;
  color: #9a3412;
  background: #fff7ed;
  border: 1px solid #fdba74;
  border-radius: 6px;
}

.fact-panel-duplicados-debug {
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 0.65rem;
  padding: 0.55rem 0.75rem;
  font-size: 0.86rem;
  background: #eff6ff;
  border: 1px solid #93c5fd;
  border-radius: 6px;
  color: #1e3a5f;
}

.fact-duplicados-debug-inner strong {
  font-size: 0.95rem;
}

.fact-duplicados-resultado {
  max-height: 320px;
  overflow: auto;
  margin-top: 0.35rem;
}

.fact-dup-details {
  margin: 0.5rem 0 0.65rem;
  padding: 0.35rem 0.5rem;
  background: rgba(255, 255, 255, 0.65);
  border-radius: 4px;
}

.fact-dup-details summary {
  cursor: pointer;
  margin-bottom: 0.35rem;
}

.fact-dup-grupo {
  margin: 0.45rem 0;
}

.fact-dup-grupo-tit {
  margin: 0 0 0.25rem;
  font-size: 0.85rem;
}

.fact-dup-mini-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.82rem;
}

.fact-dup-mini-table th,
.fact-dup-mini-table td {
  border: 1px solid #bfdbfe;
  padding: 0.2rem 0.35rem;
  text-align: left;
}

.fact-dup-mini-table th {
  background: #dbeafe;
}

.filtros-facturacion .fact-mes-label {
  min-width: auto;
}

/* Botones Anterior/Siguiente mes y texto mes/año: color marrón del banner */
#filtros-facturacion-remesas #fact-mes-ant,
#filtros-facturacion-remesas #fact-mes-sig {
  background: var(--color-primario);
  color: #fff;
  border-color: var(--color-primario);
}
#filtros-facturacion-remesas #fact-mes-ant:hover,
#filtros-facturacion-remesas #fact-mes-sig:hover {
  background: var(--color-primario-hover);
  border-color: var(--color-primario-hover);
  color: #fff;
}
#filtros-facturacion-remesas #fact-mes-año-label {
  color: var(--color-primario);
  font-weight: 600;
}

/* Facturación / Remesas: misma altura máx. en navegación mes y acciones (Facturar, Editar, Historial) */
#filtros-facturacion-remesas #fact-mes-ant,
#filtros-facturacion-remesas #fact-mes-sig,
#filtros-acciones-facturacion .btn-toolbar {
  max-height: 33px;
  min-height: 0;
  box-sizing: border-box;
  padding: 0.28rem 0.65rem;
  line-height: 1.2;
  font-size: 0.8125rem;
}
#filtros-acciones-facturacion .btn-historial-morado {
  background: #ede9fe !important;
  color: #5b21b6 !important;
  border: 1px solid #c4b5fd !important;
}
#filtros-acciones-facturacion .btn-historial-morado:hover:not(:disabled) {
  background: #ddd6fe !important;
  color: #4c1d95 !important;
}

/* Inputs inline en tabla Facturación */
.input-pagos-inline,
.input-notas-inline {
  width: 100%;
  min-width: 60px;
  padding: 0.25rem 0.35rem;
  font-size: 0.85rem;
  border: 1px solid var(--color-borde);
  border-radius: 4px;
  box-sizing: border-box;
}

.input-pagos-inline {
  max-width: 80px;
  text-align: right;
}

/* Columna Pagos centrada: celda, input y contenido */
td.col-pagos,
th.col-pagos {
  text-align: center !important;
}

td.col-pagos .input-pagos-inline {
  display: inline-block;
  text-align: center !important;
  width: 72px;
}

.input-notas-inline {
  min-width: 100px;
}

/* Tarjetas resumen Facturación */
.tarjetas-contenedor {
  min-height: 120px;
  margin-bottom: 1rem;
}
.tarjetas-panel.oculto {
  display: none !important;
}
.tarjetas-resumen {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
  margin-bottom: 1rem;
  padding: 0.75rem;
  background: #f8fafc;
  border-radius: var(--radio);
  border: 1px solid var(--color-borde);
}
.tarjeta-resumen {
  display: flex;
  flex-direction: column;
  min-width: 140px;
  padding: 0.5rem 0.75rem;
  background: white;
  border-radius: var(--radio);
  border: 1px solid #e2e8f0;
  box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}
.tarjeta-resumen .tarjeta-label {
  font-size: 0.8rem;
  color: #64748b;
  margin-bottom: 0.25rem;
}
.tarjeta-resumen .tarjeta-valor {
  font-size: 1.1rem;
  font-weight: 600;
  color: #1e293b;
}
.tarjeta-resumen .tarjeta-detalle {
  font-size: 0.75rem;
  color: #94a3b8;
  margin-top: 0.2rem;
}
.tarjeta-seleccion .tarjeta-valor { font-weight: 500; font-size: 0.95rem; }
.tarjeta-centrada { text-align: center; }
.tarjeta-roja .tarjeta-valor { color: #dc2626; font-weight: 700; }
.tarjeta-naranja .tarjeta-valor { color: #ea580c; font-weight: 700; }
.tarjeta-verde .tarjeta-valor { color: #16a34a; font-weight: 700; }
.tarjeta-sub { font-size: 0.75rem !important; margin-top: 0.15rem; display: block; }
.tarjeta-valor.deuda-positiva { color: #c00 !important; font-weight: 700; }

.tarjeta-subgrupo {
  margin-top: 0.5rem;
  padding-top: 0.35rem;
  border-top: 1px solid #e2e8f0;
  font-size: 0.75rem;
  color: #64748b;
  text-align: left;
}
.tarjeta-subgrupo-item {
  padding: 0.15rem 0;
}

/* Facturación y Facturados: misma altura de tarjeta (resumen) */
#tarjetas-facturacion .tarjeta-resumen,
#tarjetas-facturados .tarjeta-resumen {
  height: 88px;
  min-height: 88px;
  max-height: 88px;
  box-sizing: border-box;
  justify-content: center;
  padding: 0.4rem 0.65rem;
  overflow: hidden;
}
#tarjetas-facturacion .tarjeta-resumen .tarjeta-detalle,
#tarjetas-facturados .tarjeta-resumen .tarjeta-detalle {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.2;
  margin-top: 0.1rem;
}
#tarjetas-facturacion .tarjeta-resumen .tarjeta-valor,
#tarjetas-facturados .tarjeta-resumen .tarjeta-valor {
  font-size: 1.05rem;
  line-height: 1.15;
}
/* Tarjetas Facturados - labels coherentes con Facturación en 88px */
#tarjetas-facturados .tarjeta-resumen .tarjeta-label {
  font-size: 0.8rem;
}

/* Facturados: navegación mes (marrón como Remesas / Facturación) */
#subpanel-facturados #facturados-mes-ant,
#subpanel-facturados #facturados-mes-sig {
  background: var(--color-primario);
  color: #fff;
  border-color: var(--color-primario);
}
#subpanel-facturados #facturados-mes-ant:hover,
#subpanel-facturados #facturados-mes-sig:hover {
  background: var(--color-primario-hover);
  border-color: var(--color-primario-hover);
  color: #fff;
}
#subpanel-facturados #facturados-mes-año-label {
  color: var(--color-primario);
  font-weight: 600;
}

#subpanel-facturados .filtros-facturados #facturados-mes-ant,
#subpanel-facturados .filtros-facturados #facturados-mes-sig,
#facturados-acciones-lote .btn {
  max-height: 33px;
  min-height: 0;
  box-sizing: border-box;
  padding: 0.28rem 0.65rem;
  line-height: 1.2;
  font-size: 0.8125rem;
}
#facturados-acciones-lote .btn-facturados-excel {
  background: #228b22 !important;
  color: #fff !important;
  border: 1px solid #1a6b1a !important;
}
#facturados-acciones-lote .btn-facturados-excel:hover {
  background: #1d7a1d !important;
  color: #fff !important;
}

.modal-exportar-excel-fact {
  max-width: 32rem;
}
.modal-exportar-excel-periodo {
  font-weight: 600;
  margin-bottom: 0.75rem;
}
.tabla-exportar-excel-resumen {
  width: 100%;
  border-collapse: collapse;
  margin: 0.5rem 0 0.75rem;
  font-size: 0.9rem;
}
.tabla-exportar-excel-resumen th,
.tabla-exportar-excel-resumen td {
  border: 1px solid var(--color-borde, #ddd);
  padding: 0.45rem 0.6rem;
  text-align: left;
}
.tabla-exportar-excel-resumen th:nth-child(2),
.tabla-exportar-excel-resumen th:nth-child(3),
.tabla-exportar-excel-resumen td:nth-child(2),
.tabla-exportar-excel-resumen td:nth-child(3) {
  text-align: right;
}
.tabla-exportar-excel-resumen .fila-total-resumen td {
  background: rgba(0, 0, 0, 0.04);
}
.modal-exportar-excel-envio {
  margin-top: 1rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--color-borde, #ddd);
}
.modal-exportar-excel-envio label {
  display: block;
  margin-bottom: 0.35rem;
  font-weight: 500;
}
.modal-exportar-excel-envio input[type="email"] {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  padding: 0.45rem 0.6rem;
}
.modal-exportar-excel-botones {
  flex-wrap: wrap;
  margin-top: 1rem;
  gap: 0.5rem;
}
.modal-exportar-excel-error {
  color: #b91c1c;
  margin-bottom: 0.5rem;
}
.modal-exportar-excel-nota {
  margin-top: 0.5rem;
}

#facturados-acciones-lote .btn-facturados-correo {
  background: #fef9c3 !important;
  color: #713f12 !important;
  border: 1px solid #fde047 !important;
}
#facturados-acciones-lote .btn-facturados-correo:hover {
  background: #fef08a !important;
}
#facturados-acciones-lote .btn-facturados-pdf {
  background: #ede9fe !important;
  color: #5b21b6 !important;
  border: 1px solid #c4b5fd !important;
}
#facturados-acciones-lote .btn-facturados-pdf:hover {
  background: #ddd6fe !important;
}
#facturados-acciones-lote .btn-facturados-eliminar {
  min-width: 2.25rem;
  font-size: 1rem;
  line-height: 1;
  padding: 0.2rem 0.45rem !important;
}

/* Tabla Facturados: prioridad nombre/email; padres más estrecho; tratamientos 150px + elipsis */
.tabla-facturados-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.tabla-facturados {
  table-layout: fixed;
  width: 100%;
}
.tabla-facturados th.col-fact-nombre,
.tabla-facturados td.col-fact-nombre,
.tabla-facturados th.col-fact-email,
.tabla-facturados td.col-fact-email {
  max-width: 200px;
  width: 200px;
}
.tabla-facturados th.col-fact-padres,
.tabla-facturados td.col-fact-padres {
  max-width: 110px;
  width: 9%;
}
.tabla-facturados th.col-fact-trat,
.tabla-facturados td.col-fact-trat {
  max-width: 150px;
  width: 150px;
}
.tabla-facturados .celda-ellipsis,
.tabla-facturados .celda-ellipsis-sm,
.tabla-facturados .celda-ellipsis-trat {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#tarj-facturados-detalle-becas {
  font-size: 0.88em;
  line-height: 1.35;
}

.beca-importe-incrementos-extra {
  color: #15803d;
  font-weight: 600;
  white-space: nowrap;
}
.beca-col-importe-inicial .beca-importe-inicial-num {
  font-weight: 500;
}
.badge-fact-beca-inc {
  display: inline-block;
  margin-right: 0.35rem;
  padding: 0.08rem 0.35rem;
  font-size: 0.72rem;
  font-weight: 600;
  color: #065f46;
  background: #d1fae5;
  border-radius: 4px;
  vertical-align: middle;
}

.modal-fact-beca-ancho {
  max-width: 40rem;
}
.fact-beca-modo-grupo .fact-beca-radio-line {
  display: block;
  margin: 0.35rem 0;
  font-size: 0.92rem;
}
.form-grupo-inline-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}
.fact-beca-fila-mes-importe-cols {
  display: grid;
  grid-template-columns:
    minmax(9rem, 1.2fr)
    minmax(6rem, 0.55fr)
    minmax(6.5rem, 0.75fr)
    auto;
  gap: 0.45rem 0.55rem;
  align-items: end;
}
.fact-beca-fila-mes-importe .fact-beca-col label {
  display: block;
  font-size: 0.85rem;
  margin-bottom: 0.2rem;
}
.fact-beca-input-mes {
  width: 100%;
  min-width: 8.5rem;
  box-sizing: border-box;
}
.fact-beca-input-anio {
  width: 100%;
  min-width: 5.75rem;
  box-sizing: border-box;
}
.fact-beca-input-importe {
  width: 100%;
  min-width: 6rem;
  box-sizing: border-box;
}
.fact-beca-col-check-spacer {
  display: block;
  font-size: 0.85rem;
  margin-bottom: 0.2rem;
  line-height: 1.2;
  visibility: hidden;
}
.fact-beca-check-fila {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  margin: 0;
  font-size: 0.82rem;
  line-height: 1.25;
  cursor: pointer;
  white-space: nowrap;
}
.fact-beca-check-fila input {
  flex-shrink: 0;
}
@media (max-width: 520px) {
  .fact-beca-fila-mes-importe-cols {
    grid-template-columns: 1fr 1fr;
  }
  .fact-beca-col-check {
    grid-column: 1 / -1;
  }
}

/* Reevaluaciones — nombre clickable */
.reev-link-nombre {
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.reev-link-nombre:hover {
  color: var(--color-primario, #754516);
}

/* Reevaluaciones — tabla PIAFS */
#tabla-reev { font-size: 12px; }
#tabla-reev th,
#tabla-reev td { font-size: 12px; }
.reev-terapeuta-badge { font-size: 12px !important; }
/* Centrar columnas Terapeuta (5), Terapeuta realizó (8), Próxima evaluación (9) */
#tabla-reev th:nth-child(5),
#tabla-reev th:nth-child(8),
#tabla-reev th:nth-child(9),
#tabla-reev td:nth-child(5),
#tabla-reev td:nth-child(8),
#tabla-reev td:nth-child(9) { text-align: center; }

/* Reevaluaciones badges (días restantes) */
.reev-sortable { cursor: pointer; user-select: none; }
#tabla-reev thead .reev-sortable:hover { background: #5c3912 !important; color: #fff !important; }
.reev-badge { padding: 4px 10px; border-radius: 6px; font-size: 12px; font-weight: 500; }
.reev-badge.reev-caducada { background: #fef2f2; color: #dc2626; }
.reev-badge.reev-este-mes { background: #fff7ed; color: #ea580c; }
.reev-badge.reev-proxima { background: #f0fdf4; color: #16a34a; }
.reev-badge.reev-sin-info { background: #f1f5f9; color: #64748b; }

#reevaluaciones #tarjetas-reevaluaciones.tarjetas-contenedor {
  min-height: auto;
  margin-bottom: 0.35rem;
}
#reevaluaciones #tarjetas-reevaluaciones .tarjetas-resumen {
  margin-bottom: 0;
  padding: 0.5rem 0.75rem;
}

.reev-terapeutas-ref-wrap {
  padding: 0.08rem 0 0.3rem;
}
.reev-terapeutas-ref-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.75rem;
  align-items: center;
  font-size: 0.78rem;
  color: var(--color-texto-suave);
}
.reev-stat-terapeuta {
  cursor: pointer;
  font-weight: 600;
}
#reevaluaciones #subpanel-reev-piafs .filtros-y-acciones.filtros-facturacion {
  margin-top: 0.2rem;
  padding-top: 0.35rem;
}
.reev-stat-terapeuta-atenuado {
  opacity: 0.35;
  transition: opacity 0.15s ease;
}

/* Reevaluaciones: scroll en la tabla; cabecera sticky (sin flex en la sección: con flex:1 y altura indefinida la tabla colapsaba a 0) */
#reevaluaciones .sub-panel-reev-tabla .tabla-contenedor {
  overflow: auto;
  max-height: calc(100vh - 300px);
}
/* Modificaciones: bloque de formulario más alto debajo del sticky → menos alto para la tabla */
#reevaluaciones #subpanel-reev-modificaciones-tabla .tabla-contenedor {
  max-height: calc(100vh - 380px);
}
#reevaluaciones #subpanel-reev-piafs-tabla .tabla-contenedor thead th {
  position: sticky;
  top: 0;
  z-index: 3;
  background: #754516;
  color: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12);
}
#reevaluaciones #subpanel-reev-modificaciones-tabla .tabla-contenedor thead th {
  position: sticky;
  top: 0;
  z-index: 3;
  background: #754516;
  color: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12);
}

/* Especificidad alta para sobreescribir .btn base */
#tabla-reev .btn-reev-registrar-tabla,
#tabla-reev td .btn-reev-registrar-tabla {
  padding: 4px 10px !important;
  font-size: 12px !important;
  line-height: 1.2 !important;
  min-height: unset !important;
  background: #16a34a;
  color: #fff;
  border: none;
  border-radius: 3px;
  cursor: pointer;
  font-weight: 500;
}
#tabla-reev .btn-reev-registrar-tabla:hover,
#tabla-reev td .btn-reev-registrar-tabla:hover { background: #15803d; }
.btn-reev-registrar-modal {
  background: #16a34a;
  color: #fff;
  border: none;
}
.btn-reev-registrar-modal:hover { background: #15803d; }
.reev-modal-grupo-paciente {
  background: #e8f4f0;
  border: 1px solid #5a9a7a;
  border-left: 4px solid #5a9a7a;
  border-radius: var(--radio);
  padding: 0.5rem 0.75rem;
  margin-bottom: 0.75rem;
}
.reev-modal-datos-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.35rem 1.25rem;
}
.reev-modal-datos-grid .form-grupo { margin-bottom: 0; }
.reev-modal-datos-grid .form-grupo label { margin-bottom: 0.15rem; font-size: 0.8rem; }
.reev-modal-datos-grid .dp-solo-lectura { font-size: 0.9rem; }
#reev-modal-tipo-grupo.reev-modal-modo-cdiat .reev-modal-tipo-select { flex: 0 1 52%; max-width: 52%; width: auto; min-width: 10rem; }
#reev-modal-tipo-grupo:not(.reev-modal-modo-cdiat) .reev-modal-tipo-select { width: 100%; }
.reev-modal-tipo-fila {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}
.reev-modal-merrill-check-col {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
}
.reev-modal-merrill-check-label {
  margin: 0;
  white-space: nowrap;
  font-size: 0.9rem;
}
.reev-modal-merrill-fechas {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: center;
  margin-top: 0.65rem;
}
.reev-modal-merrill-campo {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.reev-modal-merrill-campo label {
  font-size: 0.85rem;
  margin: 0;
  white-space: nowrap;
}
.reev-modal-merrill-campo select {
  min-width: 7.5rem;
  width: auto;
}
.reev-tipo-badge,
.reev-merrill-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}
.reev-tipo-badge.reev-tipo-cuantitativa { background: #fef3c7; color: #b45309; }
.reev-tipo-badge.reev-tipo-cualitativa { background: #f3e8ff; color: #7c3aed; }
.reev-tipo-badge.reev-tipo-piat { background: #dbeafe; color: #2563eb; }
.reev-merrill-badge.reev-merrill-m1 { background: #dbeafe; color: #1d4ed8; }
.reev-merrill-badge.reev-merrill-m2 { background: #fce7f3; color: #be185d; }
.reev-merrill-badge.reev-merrill-m3 { background: #d1fae5; color: #047857; }
.reev-merrill-badge.reev-merrill-m4 { background: #fef9c3; color: #a16207; }
.reev-merrill-badge.reev-merrill-m5 { background: #ffedd5; color: #c2410c; }
.reev-merrill-badge.reev-merrill-m6 { background: #e0e7ff; color: #4338ca; }
.reev-merrill-badge.reev-merrill-m7 { background: #fee2e2; color: #b91c1c; }
.reev-merrill-badge.reev-merrill-m8 { background: #ecfccb; color: #4d7c0f; }
.reev-merrill-badge.reev-merrill-m9 { background: #ccfbf1; color: #0f766e; }
.reev-merrill-badge.reev-merrill-m10 { background: #f3e8ff; color: #7e22ce; }
.reev-merrill-badge.reev-merrill-m11 { background: #fed7aa; color: #9a3412; }
.reev-merrill-badge.reev-merrill-m12 { background: #e2e8f0; color: #475569; }
.btn-nova-placeholder { background: #7c3aed; color: white; opacity: 0.6; cursor: not-allowed; }

/* Modificaciones de tratamiento (Reevaluaciones) */
.modificaciones-formulario {
  margin-bottom: 0.65rem;
}
#reevaluaciones #tarjetas-modificaciones.mod-fila-resumen-mod {
  justify-content: space-between;
  align-items: stretch;
  gap: 0.65rem 1rem;
}
#reevaluaciones .mod-bloque-tarjetas-stats {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  align-self: stretch;
  gap: 0.65rem;
  flex: 0 1 auto;
}
#reevaluaciones .mod-bloque-tarjetas-stats .tarjeta-resumen {
  flex: 0 1 auto;
  min-width: 6.25rem;
  justify-content: center;
  align-self: stretch;
}
#reevaluaciones .mod-datos-paciente-en-barra {
  flex: 1 1 260px;
  min-width: min(100%, 220px);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  align-self: stretch;
  justify-content: center;
}
#reevaluaciones .mod-datos-paciente-en-barra .mod-datos-paciente-cajas {
  width: 100%;
  flex: 1;
  justify-content: center;
  align-items: stretch;
}
.modificaciones-fila-principal {
  display: grid;
  grid-template-columns: 450px minmax(0, 1fr);
  gap: 0.75rem;
  align-items: stretch;
}
#subpanel-reev-modificaciones .modificaciones-fila-principal .mod-caja-form {
  min-width: 0;
}
.mod-caja {
  display: flex;
  flex-direction: column;
  min-height: 0;
  border-radius: var(--radio);
  padding: 0.65rem 0.8rem;
  border: 1px solid;
  box-sizing: border-box;
}
.mod-caja-titulo {
  display: block;
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--color-texto-suave, #4b5563);
  margin: 0 0 0.45rem 0;
}
.mod-caja-buscar {
  background: #f0f9ff;
  border-color: #7dd3fc;
}
.mod-caja-form {
  background: #fffbeb;
  border-color: #d4a84b;
}
.mod-caja-buscar-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
}
#subpanel-reev-modificaciones .mod-combobox-paciente {
  min-width: 0;
  width: 100%;
  max-width: none;
}
/* Títulos de bloque alineados (misma caja tipográfica + línea; colores distintos) */
#subpanel-reev-modificaciones .mod-caja > h3.mod-grupo-titulo {
  font-size: 0.9rem;
  font-weight: 600;
  line-height: 1.25;
  margin: 0 0 0.45rem 0;
  padding-bottom: 0.3rem;
  border-bottom: 1px solid transparent;
  text-transform: none;
  letter-spacing: normal;
  box-sizing: border-box;
}
#subpanel-reev-modificaciones .mod-caja-buscar > h3.mod-grupo-titulo.mod-buscar-titulo {
  color: #0369a1;
  border-bottom-color: rgba(14, 165, 233, 0.45);
}
#subpanel-reev-modificaciones .mod-caja-form > h3.mod-grupo-titulo {
  color: #8b6914;
  border-bottom-color: rgba(201, 162, 39, 0.4);
}
#subpanel-reev-modificaciones .mod-combobox-paciente .dp-combobox-input {
  font-size: 12px;
  line-height: 1.25;
  padding: 0.4rem 0.55rem;
  box-sizing: border-box;
  height: 2.25rem;
}
#subpanel-reev-modificaciones .mod-combobox-paciente .dp-combobox-list li {
  font-size: 12px;
}
#mod-paciente-datos .mod-datos-paciente-cajas {
  flex: 1;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 0.5rem;
}
/* Una sola tarjeta: encabezado Tratamiento + mes; valor = solo nombre de tratamiento */
#mod-paciente-datos .mod-datos-paciente-unica {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 250px) minmax(0, 1fr) minmax(0, 1fr);
  gap: 0.45rem 0.65rem;
  align-items: start;
  padding: 0.4rem 0.6rem;
  background: rgba(117, 69, 22, 0.07);
  border-radius: var(--radio);
  border: 1px solid rgba(117, 69, 22, 0.2);
  box-shadow: 0 1px 2px rgba(117, 69, 22, 0.06);
  width: 100%;
  box-sizing: border-box;
}
#mod-paciente-datos .mod-datos-paciente-unica .mod-datos-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  text-align: center;
  min-width: 0;
  gap: 0.15rem;
}
#mod-paciente-datos .mod-datos-paciente-unica .mod-datos-col label {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--color-primario);
  text-align: center;
  width: 100%;
}
#mod-paciente-datos .mod-datos-paciente-unica .mod-datos-col .dp-solo-lectura {
  font-size: 0.85rem;
  color: var(--color-texto);
  text-align: center;
  width: 100%;
  word-break: break-word;
  overflow-wrap: anywhere;
}
#mod-tratamiento-valor.dp-solo-lectura {
  max-width: 250px;
  margin-left: auto;
  margin-right: auto;
}
#mod-paciente-datos .mod-datos-paciente-unica .mod-datos-col-trat-mes .mod-datos-mes-en-titulo {
  font-weight: 600;
  color: var(--color-primario);
}
@media (max-width: 1000px) {
  #mod-paciente-datos .mod-datos-paciente-cajas {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  #mod-paciente-datos .mod-datos-paciente-unica {
    min-width: 640px;
  }
}
#subpanel-reev-modificaciones .mod-caja-form .mod-form-fila-compacta {
  flex: 1;
  align-content: flex-start;
}
#subpanel-reev-modificaciones .selector-paciente-dp-izq .dp-combobox-wrap,
#subpanel-datos-personales-tratamientos .selector-paciente-dp-izq .dp-combobox-wrap {
  min-width: 380px;
  max-width: 520px;
}
.mod-grupo-modificacion {
  margin-top: 0;
}
#subpanel-reev-modificaciones .mod-caja-form.mod-grupo-modificacion {
  padding: 0.65rem 0.8rem;
}
.mod-grupo-modificacion .mod-grupo-titulo {
  text-transform: none;
  letter-spacing: normal;
}
@media (max-width: 1100px) {
  #reevaluaciones #tarjetas-modificaciones.mod-fila-resumen-mod {
    flex-direction: column;
    align-items: stretch;
  }
  #reevaluaciones .mod-datos-paciente-en-barra {
    flex: 1 1 auto;
    max-width: none;
  }
}
@media (max-width: 900px) {
  .modificaciones-fila-principal {
    grid-template-columns: 1fr;
  }
  #subpanel-reev-modificaciones .mod-caja-buscar {
    width: 100%;
    min-width: 0;
    max-width: 450px;
  }
  .mod-caja {
    min-height: auto;
  }
}
@media (min-width: 901px) {
  #subpanel-reev-modificaciones .mod-caja-buscar {
    width: 450px;
    min-width: 450px;
    max-width: 450px;
    box-sizing: border-box;
  }
}
@media (min-width: 992px) {
  #subpanel-reev-modificaciones .mod-form-fila-compacta {
    flex-wrap: nowrap;
  }
  #subpanel-reev-modificaciones .mod-texto-input {
    flex: 1 1 140px;
    min-width: 100px;
  }
  #subpanel-reev-modificaciones #mod-btn-añadir {
    flex-shrink: 0;
  }
}
.mod-form-fila-compacta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1rem;
}
.mod-texto-input {
  flex: 1;
  min-width: 180px;
  padding: 0.45rem 0.65rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.9rem;
}
.mod-form-fila-compacta input[type="date"],
.mod-form-fila-compacta select {
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.875rem;
  background: var(--color-card);
}
.mod-form-fila-compacta select {
  width: auto;
  min-width: 110px;
  max-width: 160px;
}
/* Misma altura en la fila de nueva modificación (texto, fecha, terapeuta, Añadir) */
#subpanel-reev-modificaciones .mod-texto-input {
  box-sizing: border-box;
  height: 2.25rem;
  padding: 0.4rem 0.55rem;
  line-height: 1.25;
  font-size: 0.875rem;
}
#subpanel-reev-modificaciones .mod-form-fila-compacta input[type="date"],
#subpanel-reev-modificaciones .mod-form-fila-compacta select#mod-terapeuta {
  box-sizing: border-box;
  height: 2.25rem;
  padding: 0.4rem 0.55rem;
  line-height: 1.25;
  font-size: 0.875rem;
  vertical-align: middle;
}
#subpanel-reev-modificaciones .mod-form-fila-compacta #mod-btn-añadir {
  box-sizing: border-box;
  height: 2.25rem;
  min-height: 2.25rem;
  padding: 0 0.85rem;
  line-height: 1.25;
  font-size: 0.875rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.mod-check-inline {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.9rem;
  color: var(--color-texto);
  margin: 0;
  cursor: pointer;
}
.filtros-modificaciones {
  margin-bottom: 0.75rem;
}
.filtros-modificaciones .filtro-inline-label {
  font-size: 0.85rem;
  margin-right: 0.2rem;
  white-space: nowrap;
  align-self: center;
}
#tabla-modificaciones { font-size: 12px; }
#tabla-modificaciones th {
  background: #754516;
  color: #fff;
  font-size: 12px;
}
.mod-badge-estado {
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.35;
}
.mod-estado-pendiente { background: rgba(251, 146, 60, 0.2); color: #9a3412; }
.mod-estado-aprobada { background: rgba(34, 197, 94, 0.18); color: #166534; }
.mod-estado-rechazada { background: rgba(239, 68, 68, 0.16); color: #991b1b; }

/* Select estado (admin): mismo criterio que filtros-y-acciones select */
.modificacion-estado-select-admin {
  min-width: 9rem;
  max-width: 100%;
  font-size: 12px;
  font-weight: 500;
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  background: var(--color-card);
  color: var(--color-texto);
  box-sizing: border-box;
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease;
  line-height: 1.25;
  appearance: auto;
}

.modificacion-estado-select-admin:focus {
  outline: none;
  border-color: var(--color-primario, #754516);
}

.modificacion-estado-select-admin.mod-estado-sel-pendiente {
  background: rgba(251, 146, 60, 0.16) !important;
  color: #9a3412;
  border-color: rgba(251, 146, 60, 0.45);
}

.modificacion-estado-select-admin.mod-estado-sel-aprobada {
  background: rgba(34, 197, 94, 0.14) !important;
  color: #166534;
  border-color: rgba(34, 197, 94, 0.4);
}

.modificacion-estado-select-admin.mod-estado-sel-rechazada {
  background: rgba(239, 68, 68, 0.12) !important;
  color: #991b1b;
  border-color: rgba(239, 68, 68, 0.35);
}

.tarjeta-privada-fila-titulo {
  font-size: 1.1rem;
}

/* Tarjeta Total facturado Privada */
.tarjeta-facturados-privada {
  min-width: 200px;
  align-self: stretch;
}
.tarjeta-privada-tabla {
  display: flex;
  align-items: stretch;
  gap: 0;
}
.tarjeta-privada-col-labels,
.tarjeta-privada-col-importes {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.tarjeta-privada-col-labels,
.tarjeta-privada-col-importes {
  padding: 0.1rem 0;
}
.tarjeta-privada-separador {
  width: 2px;
  min-width: 2px;
  align-self: stretch;
  background: var(--color-primario, #754516);
  margin: 0 0.75rem;
  flex-shrink: 0;
}
.tarjeta-privada-fila-titulo {
  color: #475569;
}
.tarjeta-privada-fila-total {
  font-size: 1.1rem;
  font-weight: 600;
  color: #4a7c6a;
  white-space: nowrap;
}
.tarjeta-privada-fila-centro {
  font-size: 0.75rem;
  color: #64748b;
}
.tarjeta-privada-col-importes .tarjeta-privada-fila-centro {
  font-weight: 500;
  text-align: right;
  white-space: nowrap;
}

/* Estado envío: verde cuando enviado */
.estado-envio-enviado {
  color: #16a34a;
  font-weight: 500;
}
.col-estado-envio[title] {
  cursor: help;
}

.fila-pausada { background-color: #fff8e6 !important; }
.badge-pausado { font-size: 0.75em; color: #b8860b; font-weight: 600; margin-right: 4px; }
.col-pausa {
  vertical-align: middle;
}

.facturacion-check-row {
  margin-top: 0.75rem;
}

.facturacion-check-fila {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.facturacion-check-fila > label {
  margin: 0;
  white-space: nowrap;
}

.facturacion-fecha-wrap {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.facturacion-fecha-wrap label {
  margin: 0;
  font-weight: normal;
  white-space: nowrap;
}

#modal-facturacion .facturacion-fecha-wrap input[type="date"] {
  height: 28px;
  padding: 0.25rem 0.4rem;
  font-size: 0.85rem;
}

.facturacion-fecha-wrap.oculto {
  display: none;
}

/* Modificaciones pendientes en modal facturación (parte superior, fuera de Datos Paciente) */
.facturacion-modificaciones-pendientes {
  margin-bottom: 1rem;
  padding: 0.75rem;
  background: #fef9e7;
  border: 1px solid #f5e6b3;
  border-radius: 6px;
}
.facturacion-modificaciones-pendientes h4 {
  margin: 0 0 0.5rem 0;
  font-size: 0.9rem;
  color: #b45309;
}
#facturacion-modificaciones-lista {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.modificacion-pendiente-card {
  padding: 0.5rem 0.75rem;
  background: #fff;
  border: 1px solid #fde68a;
  border-radius: 4px;
}
.modificacion-pendiente-fila1 {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1rem;
  font-size: 0.85rem;
  margin-bottom: 0.35rem;
}
.modificacion-pendiente-fila1 .modificacion-terapeuta { flex-shrink: 0; }
.modificacion-pendiente-fila1 .modificacion-baja { flex-shrink: 0; }
.modificacion-pendiente-fila1 .modificacion-pendiente-acciones {
  margin-left: auto;
  display: flex;
  gap: 0.35rem;
  align-items: center;
}
.modificacion-pendiente-fila2 {
  font-size: 0.85rem;
  padding-top: 0.25rem;
  border-top: 1px dashed #fde68a;
}
.modificacion-pendiente-fila2 strong { color: #b45309; }
.modificacion-pendiente-acciones {
  display: flex;
  gap: 0.35rem;
  align-items: center;
}
/* Botones Aprobar/Rechazar compactos (sobreescriben .btn base) */
.facturacion-modificaciones-pendientes .btn-mod-aprobar,
.facturacion-modificaciones-pendientes .btn-mod-rechazar {
  padding: 0.1rem 0.3rem !important;
  font-size: 0.65rem !important;
  font-weight: 500;
  border: 1px solid transparent;
  border-radius: 3px;
  cursor: pointer;
  transition: background 0.2s, border-color 0.2s;
  line-height: 1.2 !important;
  min-height: unset !important;
}
.facturacion-modificaciones-pendientes .btn-mod-aprobar {
  background: #c8e6c9;
  color: #2e7d32;
  border-color: #a5d6a7;
}
.facturacion-modificaciones-pendientes .btn-mod-aprobar:hover { background: #a5d6a7; border-color: #81c784; }
.facturacion-modificaciones-pendientes .btn-mod-rechazar {
  background: #ffcdd2;
  color: #c62828;
  border-color: #ef9a9a;
}
.facturacion-modificaciones-pendientes .btn-mod-rechazar:hover { background: #ef9a9a; border-color: #e57373; }

.importe-total-fila label:first-child { display: block; margin-bottom: 0.25rem; }
.importe-total-contenedor {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}
.importe-total-input {
  width: 5.5em;
  max-width: 5.5em;
  text-align: right;
}
.importe-mantener-label {
  margin: 0;
  font-weight: normal;
  white-space: nowrap;
}
.importe-mantener-label input { margin-right: 0.35rem; vertical-align: middle; }

/* PVS solo lectura en modal paciente */
.pvs-solo-lectura .form-grupo { opacity: 0.85; }
.pvs-solo-lectura .form-grupo input[type="checkbox"],
.pvs-solo-lectura .form-grupo input[type="date"] {
  pointer-events: none;
  cursor: not-allowed;
}
.pvs-solo-lectura .form-grupo-fecha-pvs {
  opacity: 1;
}
.pvs-solo-lectura .form-grupo-fecha-pvs input {
  background: var(--color-card);
  color: var(--color-texto);
  border: 1px solid var(--color-borde);
  font-weight: 500;
}

/* Estado cita/entrevista en modal paciente */
.form-estado-cita-entrevista {
  display: flex;
  gap: 0.5rem;
  align-items: center;
}
.form-estado-cita-entrevista input[type="date"] { flex: 1; min-width: 0; }
.form-estado-cita-entrevista select { flex: 1; min-width: 100px; }

.estado-sistema-texto {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  border-radius: 6px;
  font-weight: 500;
  font-size: 0.9rem;
}
.estado-sistema-info { background: #f1f5f9; color: #475569; }
.estado-sistema-valoracion { background: #fefce8; color: #a16207; }
.estado-sistema-alta { background: #f0fdf4; color: #16a34a; }
.estado-sistema-cese { background: #fef2f2; color: #dc2626; }
/* Circuito embudo CDIAT (modal + columna Acogida) */
.estado-sistema-entrevista { background: #e0e7ff; color: #3730a3; }
.estado-sistema-merril { background: #fef3c7; color: #92400e; }
.estado-sistema-acogida { background: #dbeafe; color: #1e40af; }
.estado-circuito-cdiat-tabla {
  display: inline-block;
  padding: 0.2em 0.5em;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 600;
}

tr:last-child td { border-bottom: none; }
tr:hover { background: rgba(15, 118, 110, 0.04); }
/* Fila seleccionada por click (Pacientes, Valoración, Tratamientos, Facturación) */
tr.fila-seleccionada { background: rgba(59, 130, 246, 0.12) !important; }
tr.fila-seleccionada:hover { background: rgba(59, 130, 246, 0.18) !important; }

/* ===== Botones de acción ===== */
.btn-accion {
  padding: 0.35rem 0.7rem;
  margin-right: 0.35rem;
  font-size: 0.85rem;
  cursor: pointer;
  border-radius: 6px;
  border: 1px solid var(--color-borde);
  background: var(--color-card);
  transition: all var(--transicion);
}

.btn-accion:hover {
  background: var(--color-fondo);
}

.btn-accion.editar {
  border-color: var(--color-primario);
  color: var(--color-primario);
}

.btn-accion.editar:hover {
  background: rgba(15, 118, 110, 0.1);
}

.btn-accion.eliminar {
  border-color: #dc2626;
  color: #dc2626;
}

.btn-accion.eliminar:hover {
  background: rgba(220, 38, 38, 0.08);
}

/* ===== Paginación ===== */
.paginacion {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: 1.25rem;
  padding-top: 1rem;
  border-top: 1px solid var(--color-borde);
}

.paginacion button {
  padding: 0.5rem 1rem;
  cursor: pointer;
  border: 1px solid var(--color-borde);
  background: var(--color-card);
  border-radius: var(--radio);
  font-size: 0.9rem;
  transition: all var(--transicion);
}

.paginacion button:hover:not(:disabled) {
  background: var(--color-fondo);
  border-color: var(--color-secundario);
}

.paginacion button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

#info-pagina {
  font-size: 0.9rem;
  color: var(--color-texto-suave);
}

/* ===== Formulario centros ===== */
#config h2 {
  margin: 0 0 1.25rem 0;
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--color-texto);
}

.form-centro {
  display: flex;
  gap: 0.75rem;
  margin-bottom: 1.5rem;
  flex-wrap: wrap;
}

.form-centro input {
  padding: 0.6rem 0.9rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.95rem;
}

#btn-añadir-centro {
  background: var(--color-primario);
  color: white;
  border: none;
  padding: 0.6rem 1.25rem;
  border-radius: var(--radio);
  font-weight: 500;
  cursor: pointer;
  transition: background var(--transicion);
}

#btn-añadir-centro:hover {
  background: var(--color-primario-hover);
}

#lista-centros {
  list-style: none;
  padding: 0;
  margin: 0;
}

#lista-centros li:not(.config-lista-item):not(.config-lista-mensaje) {
  padding: 0.85rem 1rem;
  border-bottom: 1px solid var(--color-borde);
  display: flex;
  justify-content: space-between;
  align-items: center;
  transition: background var(--transicion);
}

#lista-centros li:hover,
#lista-terapeutas li:hover,
#lista-servicios li:hover,
#lista-usuarios li:hover {
  background: var(--color-fondo);
}

/* Gestión de usuarios: mismo diseño que Configuración */
.config-usuarios-wrapper {
  max-width: 100%;
}

.config-container-usuarios {
  background: #e8ecf4;
  border-color: #6366f1;
}

.config-container-usuarios h2 {
  color: #4338ca;
}

.form-usuarios-accion {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 1rem;
}

#config #lista-centros li:hover,
#config #lista-terapeutas li:hover,
#config #lista-servicios li:hover {
  background: rgba(255, 255, 255, 0.4);
}

#lista-usuarios {
  list-style: none;
  padding: 0;
  margin: 0;
}

#usuarios #lista-usuarios li.config-lista-item {
  display: grid;
  grid-template-columns: 1fr 140px;
  gap: 0.75rem;
  align-items: center;
  padding: 0.65rem 0;
  border-bottom: 1px solid var(--color-borde);
  min-height: 44px;
}

#usuarios #lista-usuarios li.config-lista-item:last-child {
  border-bottom: none;
}

#usuarios #lista-usuarios li.config-lista-item:hover {
  background: rgba(255, 255, 255, 0.4);
}

#usuarios #lista-usuarios li:not(.config-lista-item):not(.config-lista-mensaje) {
  padding: 0.85rem 1rem;
  border-bottom: 1px solid var(--color-borde);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* Config: layout 2 columnas - Izq: empresa, centros, servicios | Der: terapeutas */
.config-layout-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  align-items: start;
}

.config-col-izq {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.config-col-der {
  display: flex;
  flex-direction: column;
}

.config-layout-single {
  grid-template-columns: 1fr;
}

.config-col-full {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.sub-panel-config {
  display: none;
}

.sub-panel-config.activo {
  display: block;
}

.config-seccion {
  padding-bottom: 1.5rem;
  border-bottom: 1px solid var(--color-borde);
}

.config-seccion:last-child {
  border-bottom: none;
}

/* Config: contenedores con color - empresa y centros mismo ancho (columna izq) */
.config-container {
  padding: 1rem 1.25rem;
  border-radius: var(--radio);
  border-left: 4px solid;
  max-width: 100%;
}

.config-container-empresa {
  background: #e8f4f0;
  border-color: #5a9a7a;
}

.config-container-empresa h2 {
  color: #065f46;
}

.config-container-empresa .form-inline {
  display: flex;
  gap: 0.5rem;
  align-items: center;
}

.config-container-empresa .form-inline input {
  flex: 1;
  min-width: 0;
}

.config-container-empresa .btn-config-primario {
  margin-left: auto;
}

.config-container-facturacion {
  background: #e0f2f1;
  border-color: #0d9488;
}

.config-container-facturacion h2 {
  color: #0f766e;
}

.form-facturacion-dia {
  display: flex;
  gap: 0.5rem;
  align-items: center;
  flex-wrap: wrap;
}

.form-facturacion-dia input[type="number"] {
  width: 60px;
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.875rem;
}

.form-facturacion-dia .btn-config-primario {
  margin-left: auto;
}

.form-factura-numero {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  margin-top: 1rem;
}
.form-factura-numero input[type="text"] {
  width: 80px;
}
.form-factura-numero input[type="number"] {
  width: 70px;
}

.form-empresa-factura {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin-top: 0.5rem;
}
.form-empresa-factura .form-grupo {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.form-empresa-factura .form-grupo label {
  font-weight: 500;
  font-size: 0.9em;
}
.form-empresa-factura input {
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  max-width: 400px;
}
.col-acciones-facturados { white-space: nowrap; }
.col-acciones-facturados .btn { margin-right: 4px; }

/* Dropdown menú facturados */
.dropdown-facturado { position: relative; display: inline-block; }
.dropdown-facturado .btn-menu-facturado {
  padding: 4px 10px;
  font-size: 1.1em;
  line-height: 1;
}
.dropdown-facturado-menu {
  position: absolute;
  top: 100%;
  right: 0;
  margin-top: 4px;
  min-width: 160px;
  background: white;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  box-shadow: 0 4px 12px rgba(0,0,0,0.15);
  z-index: 1000;
  padding: 4px 0;
}
.dropdown-facturado-menu.oculto { display: none; }
.dropdown-facturado-menu .dropdown-item {
  display: block;
  width: 100%;
  padding: 8px 14px;
  border: none;
  background: none;
  text-align: left;
  font-size: 0.9rem;
  cursor: pointer;
  color: #333;
}
.dropdown-facturado-menu .dropdown-item:hover:not(:disabled) {
  background: #f0f0f0;
}
.dropdown-facturado-menu .dropdown-item:disabled {
  color: #999;
  cursor: not-allowed;
}
.dropdown-facturado-menu .dropdown-item-danger { color: var(--color-eliminar, #c00); }

/* Dropdown: posición fija vía JS para escapar del overflow de la tabla */

/* Centrar botón de acciones en la columna */
.col-acciones-facturados {
  text-align: center;
}
.col-acciones-facturados .dropdown-facturado {
  display: inline-flex;
  justify-content: center;
}

/* Modal editar facturado: info compacta en una fila */
.form-fila-compacta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.25rem;
  align-items: flex-end;
  margin-bottom: 0.5rem;
}
.form-grupo-compacto {
  flex: 0 0 auto;
  min-width: 100px;
}
.form-grupo-compacto input {
  width: 120px;
  max-width: 100%;
}
.modal-grupo-info-compacto .form-grupo:not(.form-grupo-compacto) {
  margin-top: 0.5rem;
}

.config-container-centros {
  background: #e0eef9;
  border-color: #3a7bc8;
}

.config-container-centros h2 {
  color: #1e40af;
}

.config-container-servicios {
  background: #fff5e0;
  border-color: #d4a84b;
}

.config-container-servicios h2 {
  color: #92400e;
}

.config-container-terapeutas {
  background: #f0e6f9;
  border-color: #9a5cd4;
}

.config-container-terapeutas h2 {
  color: #6b21a8;
}

.config-container-empresa-factura {
  background: #fef7e0;
  border-color: #c9a227;
}
.config-container-empresa-factura h2 {
  color: #7c5a0a;
}

/* Calendario */
.calendario-wrapper {
  padding: 1rem;
}

/* Filtros calendario: compactos para pantallas pequeñas */
.filtros-calendario {
  justify-content: flex-start;
  gap: 0.35rem;
}
.filtros-calendario .filtros-izquierda {
  gap: 0.35rem;
}
.filtros-calendario input,
.filtros-calendario select,
.filtros-calendario .btn-toolbar {
  max-height: 30px;
  height: 30px;
  box-sizing: border-box;
  padding: 0.2rem 0.5rem;
  font-size: 12px;
  border-radius: var(--radio);
}
.filtros-calendario input,
.filtros-calendario select {
  padding: 0.2rem 0.45rem;
}
.filtros-calendario .cal-check-ocultar-completados {
  font-size: 12px;
  gap: 0.25rem;
  align-items: center;
}
.filtros-calendario .cal-check-ocultar-completados input {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
}
.filtros-calendario .btn-secundario {
  background: var(--color-card);
  color: var(--color-texto);
  border: 1px solid var(--color-borde);
}
.filtros-calendario .btn-secundario:hover {
  background: var(--color-fondo);
  border-color: var(--color-secundario);
}
/* Botones Semana ant/sig y Hoy: color marrón como cabecera */
.filtros-calendario #cal-btn-ant,
.filtros-calendario #cal-btn-sig {
  background: var(--color-primario) !important;
  color: #fff !important;
  border-color: var(--color-primario) !important;
}
.filtros-calendario #cal-btn-ant:hover,
.filtros-calendario #cal-btn-sig:hover {
  background: var(--color-primario-hover) !important;
  border-color: var(--color-primario-hover) !important;
  color: #fff !important;
}
.filtros-calendario #cal-btn-hoy {
  background: #fed7aa !important;
  color: #9a3412 !important;
  border-color: #fdba74 !important;
}
.filtros-calendario #cal-btn-hoy:hover {
  background: #fdba74 !important;
  border-color: #fb923c !important;
  color: #7c2d12 !important;
}
.cal-btn-con-badge {
  position: relative;
  padding-right: 1.5rem;
}
.cal-badge-numero {
  position: absolute;
  top: 1px;
  right: 2px;
  min-width: 16px;
  height: 15px;
  padding: 0 4px;
  font-size: 0.65rem;
  font-weight: 700;
  line-height: 15px;
  text-align: center;
  background: #64748b;
  color: #fff;
  border-radius: 9px;
}
.filtros-calendario #cal-btn-sin-confirmar {
  background: #fcd34d !important;
  color: #78350f !important;
  border-color: #f59e0b !important;
}
.filtros-calendario #cal-btn-sin-confirmar:hover {
  background: #fbbf24 !important;
  border-color: #d97706 !important;
  color: #78350f !important;
}
.filtros-calendario #cal-btn-sin-confirmar .cal-badge-numero {
  background: #d97706;
  color: #fff;
}
.modal-sin-confirmar-filtro {
  margin-bottom: 1rem;
}
.modal-sin-confirmar-filtro label { margin-right: 0.5rem; }
.modal-sin-confirmar-lista {
  max-height: 400px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.modal-sin-confirmar-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.75rem;
  background: var(--color-card);
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
}
.modal-sin-confirmar-item-info {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}
.modal-sin-confirmar-fecha { font-weight: 600; }
.modal-sin-confirmar-centro { color: var(--color-texto-suave); font-size: 0.9rem; }
.modal-sin-confirmar-item-acciones { display: flex; gap: 0.5rem; flex-shrink: 0; }
.modal-sin-confirmar-vacio { color: var(--color-texto-suave); text-align: center; padding: 2rem; }
.modal-sin-confirmar-footer { margin-top: 1rem; }
.modal-sin-confirmar-error { color: var(--color-error); }

/* Terapia específica — panel pantalla completa (como Bolsa) */
.panel-te-especifica-overlay {
  padding: 0;
  align-items: stretch;
  justify-content: stretch;
  background: rgba(15, 23, 42, 0.3);
}
.panel-te-especifica-overlay .panel-te-especifica {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  width: 100%; height: 100%;
  max-width: none; max-height: none;
  margin: 0; border-radius: 0;
  display: flex; flex-direction: column;
  background: #fff; z-index: 1100;
  overflow: hidden;
}
.panel-te-especifica-body {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  padding: 0.75rem 1rem 1rem;
}
.panel-te-especifica-filtros {
  flex-shrink: 0;
  margin-bottom: 0.5rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}
.panel-te-filtros-izq {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  flex: 1;
  min-width: 0;
}
.panel-te-filtros-der {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  flex-shrink: 0;
  margin-left: auto;
}
/* Especificidad .btn.btn-te-actualizar-icon: la regla genérica .btn (más abajo) no debe pisar padding/tamaño del icono */
.btn.btn-te-actualizar-icon {
  background: #d1fae5;
  color: #047857;
  border: 1px solid #86efac;
  padding: 0;
  border-radius: var(--radio, 6px);
  line-height: 0;
  font-size: 0; /* evita hueco de baseline; el SVG lleva tamaño en px */
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  min-width: 32px;
  min-height: 32px;
  box-sizing: border-box;
}
.btn.btn-te-actualizar-icon svg {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  display: block;
  overflow: visible;
  stroke: currentColor;
  fill: none;
  color: inherit;
}
.btn.btn-te-actualizar-icon:hover {
  background: #a7f3d0;
  border-color: #4ade80;
  color: #065f46;
}
.btn.btn-te-actualizar-icon:hover svg {
  opacity: 0.95;
}
.btn.btn-te-actualizar-icon:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}
.panel-te-especifica-stats {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 0.45rem;
  margin-bottom: 0.65rem;
  flex-shrink: 0;
}
.panel-te-stat-card {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  min-width: 4.5rem;
  padding: 0.35rem 0.55rem;
  border-radius: var(--radio, 6px);
  border: 1px solid rgba(117, 69, 22, 0.2);
  background: var(--color-card, #fff);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
}
.panel-te-stat-label {
  font-size: 0.68rem;
  font-weight: 600;
  color: var(--color-texto-secundario, #555);
  text-transform: uppercase;
  letter-spacing: 0.02em;
  line-height: 1.2;
  width: 100%;
  text-align: center;
}
.panel-te-stat-num {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--color-texto, #333);
  line-height: 1.2;
  width: 100%;
  text-align: center;
}
.panel-te-stat-total {
  border-color: rgba(117, 69, 22, 0.35);
  background: rgba(117, 69, 22, 0.06);
}
.panel-te-stat-pend .panel-te-stat-num {
  color: #b45309;
}
.panel-te-stat-real .panel-te-stat-num {
  color: #15803d;
}
.panel-te-stat-trat .panel-te-stat-label {
  font-size: 0.62rem;
  max-width: 7rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.panel-te-stat-otros {
  border-style: dashed;
  border-color: #94a3b8;
}
.panel-te-especifica-mes-año {
  display: flex;
  align-items: center;
  gap: 0.35rem 0.75rem;
  flex-wrap: wrap;
}
.panel-te-especifica-mes-año label {
  font-size: 0.9rem;
  margin: 0;
  white-space: nowrap;
}
.panel-te-especifica-mes-año select {
  min-width: 120px;
}
/* Selects del panel TE: mismo criterio que filtros de estadísticas calendario */
.panel-te-filtro-paciente-buscar {
  min-width: 10rem;
  max-width: 16rem;
  flex: 1 1 10rem;
}
#panel-te-filtro-paciente {
  min-width: 11rem;
  max-width: 20rem;
}
.panel-te-especifica-filtros select.form-control,
.panel-te-especifica-mes-año select.form-control {
  min-height: 2rem;
  min-width: 140px;
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  background: var(--color-card, #fff);
  font-size: 0.9rem;
  color: var(--color-texto, #333);
}
.panel-te-especifica-filtros select.form-control:focus,
.panel-te-especifica-mes-año select.form-control:focus {
  outline: none;
  border-color: var(--color-primario, #754516);
  box-shadow: 0 0 0 2px rgba(117, 69, 22, 0.15);
}

/* Modal añadir fila TE (encima del panel fullscreen) */
#modal-te-especifica-añadir {
  z-index: 1200;
}
/* Lista tipo Datos pacientes: el contenedor del modal no recorta el desplegable */
#modal-te-especifica-añadir .modal-te-especifica-añadir.modal-contenido {
  overflow: visible;
  max-height: none;
}
#modal-te-especifica-añadir .modal-te-especifica-añadir-body {
  overflow: visible;
}
.modal-te-especifica-añadir {
  max-width: min(96vw, 360px);
  width: 100%;
}
.modal-te-especifica-añadir .modal-header {
  padding: 0.5rem 0.75rem;
}
.modal-te-especifica-añadir .modal-header h2 {
  font-size: 0.95rem;
}
.modal-te-especifica-añadir-body {
  padding: 0.4rem 0.75rem 0.65rem;
}
.modal-te-especifica-fila-dual {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.35rem 0.75rem;
  align-items: end;
  margin-bottom: 0.45rem;
}
.modal-te-especifica-fila-dual .modal-te-modal-campo {
  margin-bottom: 0;
  min-width: 0;
}
.modal-te-especifica-fila-dual .form-control,
.modal-te-especifica-fila-dual select {
  width: 100%;
  min-width: 0;
}
.modal-te-especifica-añadir .te-especifica-trat-select {
  min-width: 0;
  max-width: 100%;
}
.modal-te-especifica-modal-grupo {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  margin-bottom: 0.55rem;
}
.modal-te-combobox-paciente.modal-te-especifica-modal-grupo {
  margin-bottom: 0.35rem;
}
/* Mismo patrón que Datos pacientes; ancho completo y lista por encima del resto del modal */
#modal-te-especifica-añadir .modal-te-dp-combobox-paciente.dp-combobox-wrap {
  width: 100%;
  max-width: none;
  min-width: 0;
}
#modal-te-especifica-añadir .dp-combobox-input {
  width: 100%;
  box-sizing: border-box;
  font-size: 0.85rem;
  padding: 0.45rem 0.55rem;
}
#modal-te-especifica-añadir .dp-combobox-list {
  z-index: 1300;
  max-height: min(50vh, 280px);
}
.modal-te-especifica-modal-grupo label {
  font-size: 0.72rem;
  color: var(--color-texto-secundario, #666);
}
.modal-te-especifica-modal-grupo .form-control {
  min-height: 1.85rem;
  padding: 0.3rem 0.45rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  background: var(--color-card, #fff);
  font-size: 0.8rem;
  color: var(--color-texto, #333);
}
.modal-te-especifica-modal-grupo .form-control:focus {
  outline: none;
  border-color: var(--color-primario, #754516);
  box-shadow: 0 0 0 2px rgba(117, 69, 22, 0.15);
}
.modal-te-especifica-añadir-footer.form-acciones {
  margin-top: 0;
  padding: 0.5rem 0.75rem 0.65rem;
  border-top: 1px solid var(--color-borde);
  flex-wrap: wrap;
  gap: 0.5rem;
  display: flex;
  align-items: center;
  justify-content: flex-end;
}
.btn-te-modal-compact {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-height: 30px;
  max-height: 30px;
  padding: 0 0.65rem;
  font-size: 12px;
  line-height: 1;
}
.btn-te-panel-compact {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-height: 30px;
  max-height: 30px;
  padding: 0 0.65rem;
  font-size: 12px;
  line-height: 1;
}
.panel-te-especifica-tabla .btn-te-icon {
  max-height: 30px;
  padding: 0.18rem 0.5rem;
  font-size: 12px;
  line-height: 1.15;
}
.panel-te-especifica-tabla .btn-te-buscar-hueco {
  color: #047857 !important;
  border: 1px solid #6ee7b7 !important;
  background: #ecfdf5 !important;
}
.panel-te-especifica-tabla .btn-te-buscar-hueco:hover {
  background: #d1fae5 !important;
  border-color: #34d399 !important;
  color: #065f46 !important;
}
.panel-te-especifica-tabla .te-col-slot-cal {
  max-width: 13rem;
  font-size: 12px;
  color: var(--color-texto-secundario, #555);
  line-height: 1.35;
}
.panel-te-especifica-tabla .te-slot-cal-cell {
  display: block;
}
.panel-te-especifica-tabla .te-slot-cal-nombre {
  font-weight: 600;
}
.panel-te-especifica-tabla .te-slot-cal-hora {
  font-variant-numeric: tabular-nums;
}
.panel-te-especifica-tabla .te-slot-cal-vacio {
  color: var(--color-texto-suave, #94a3b8);
}
.panel-te-especifica-tabla .btn-te-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2rem;
  min-height: 2rem;
  padding: 0.25rem !important;
  line-height: 1;
  border-radius: 6px;
}
.panel-te-especifica-tabla .btn-te-icon svg {
  display: block;
}
.panel-te-especifica-tabla .btn-te-editar-admin {
  color: #c2410c !important;
  border: 1px solid #fdba74 !important;
  background: #fff7ed !important;
}
.panel-te-especifica-tabla .btn-te-editar-admin:hover {
  background: #ffedd5 !important;
  border-color: #fb923c !important;
  color: #9a3412 !important;
}
.panel-te-especifica-tabla .btn-te-papelera {
  color: #f43f5e !important;
  border: 1px solid #fecaca !important;
  background: #fff1f2 !important;
}
.panel-te-especifica-tabla .btn-te-papelera:hover {
  color: #e11d48 !important;
  border-color: #fda4af !important;
  background: #ffe4e6 !important;
}
.panel-te-especifica-acciones {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
}
.panel-te-especifica-tabla .te-col-terapeuta-badge {
  white-space: nowrap;
  font-size: 12px;
}
.panel-te-especifica-tabla .te-terapeuta-badge.te-terapeuta-sin {
  color: var(--color-texto-suave, #94a3b8);
  font-weight: 500;
}
.panel-te-especifica-tabla .te-col-fecha-sesion,
.panel-te-especifica-tabla .te-col-estado-sesion {
  color: var(--color-texto-secundario, #555);
  font-size: 12px;
}
.panel-te-especifica-tabla .te-col-mes {
  white-space: nowrap;
  color: var(--color-texto-secundario, #555);
  font-weight: 500;
}
.panel-te-especifica-tabla .te-col-estado-sesion.te-estado-pendiente { color: #b45309; }
.panel-te-especifica-tabla .te-col-estado-sesion.te-estado-realizada { color: #15803d; }
.panel-te-especifica-tabla .te-col-estado-sesion.te-estado-cancelada { color: #b91c1c; }
.panel-te-especifica-tabla-wrap {
  flex: 1;
  min-height: 0;
  overflow: auto;
}
.panel-te-vista-hint {
  margin: 0.35rem 0 0;
  padding: 0.45rem 0.65rem;
  font-size: 0.8rem;
  line-height: 1.35;
  color: #78350f;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: var(--radio);
}
.panel-te-auditoria-wrap {
  margin-top: 0.65rem;
  padding-top: 0.5rem;
  border-top: 1px dashed var(--color-borde, #e2e8f0);
}
.panel-te-auditoria-toggle {
  font-size: 0.78rem;
}
.panel-te-auditoria-contenido {
  margin-top: 0.5rem;
}
.panel-te-auditoria-tabla-wrap {
  max-height: 220px;
  overflow: auto;
  border: 1px solid var(--color-borde, #e2e8f0);
  border-radius: var(--radio);
}
.panel-te-auditoria-tabla {
  font-size: 0.72rem;
}
.panel-te-auditoria-tabla th,
.panel-te-auditoria-tabla td {
  padding: 0.35rem 0.45rem;
  vertical-align: top;
}
.panel-te-aud-detalle {
  max-width: 16rem;
  word-break: break-word;
}
.panel-te-aud-acc {
  display: inline-block;
  padding: 0.1rem 0.35rem;
  border-radius: 4px;
  font-weight: 600;
  font-size: 0.68rem;
  white-space: nowrap;
}
.panel-te-aud-acc--crear { background: #dcfce7; color: #166534; }
.panel-te-aud-acc--eliminar { background: #fee2e2; color: #b91c1c; }
.panel-te-aud-acc--sync,
.panel-te-aud-acc--vaciar_todo { background: #fef3c7; color: #92400e; }
.panel-te-aud-acc--import_csv { background: #dbeafe; color: #1d4ed8; }
.panel-cal-auditoria-wrap {
  margin-top: 0.75rem;
  padding-top: 0.5rem;
  border-top: 1px dashed var(--color-borde, #e2e8f0);
}
.panel-cal-auditoria-toggle {
  font-size: 0.78rem;
}
.panel-cal-auditoria-contenido {
  margin-top: 0.5rem;
}
.panel-cal-auditoria-tabla-wrap {
  max-height: 260px;
  overflow: auto;
  border: 1px solid var(--color-borde, #e2e8f0);
  border-radius: var(--radio);
}
.panel-cal-auditoria-tabla {
  font-size: 0.72rem;
}
.panel-cal-auditoria-tabla th,
.panel-cal-auditoria-tabla td {
  padding: 0.35rem 0.45rem;
  vertical-align: top;
}
.panel-cal-aud-sesion {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.panel-cal-aud-acc {
  display: inline-block;
  padding: 0.1rem 0.35rem;
  border-radius: 4px;
  font-weight: 600;
  font-size: 0.68rem;
  white-space: nowrap;
}
.panel-cal-aud-acc--anadir { background: #dcfce7; color: #166534; }
.panel-cal-aud-acc--quitar { background: #fee2e2; color: #b91c1c; }
.panel-te-especifica-tabla {
  font-size: 12px;
}
.panel-te-especifica-tabla th,
.panel-te-especifica-tabla td {
  padding: 0.4rem 0.5rem;
  vertical-align: middle;
  font-size: 12px;
}
.panel-te-especifica-tabla th {
  font-weight: 600;
}
.panel-te-especifica-tabla .te-especifica-trat-select {
  min-width: 11rem;
  max-width: 14rem;
}
.panel-te-especifica-tabla .form-control,
.panel-te-especifica-tabla select {
  font-size: 12px;
  padding: 0.3rem 0.45rem;
}
.panel-te-especifica-tabla .col-center { text-align: center; }
.panel-te-especifica-tabla .te-col-paciente {
  max-width: 14rem;
  font-weight: 500;
  word-break: break-word;
}
.panel-te-especifica-tabla .te-col-num-sesion {
  font-weight: 600;
  color: var(--color-texto-secundario, #555);
}
.te-especifica-trat-select {
  font-weight: 500;
  border-radius: var(--radio, 6px);
  border-width: 1px;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.te-especifica-trat-select:focus {
  outline: 2px solid rgba(117, 69, 22, 0.35);
  outline-offset: 1px;
}
.te-especifica-trat-select option.te-opt-te--psico {
  background: #e0f2fe !important;
  color: #0369a1 !important;
}
.te-especifica-trat-select option.te-opt-te--lg {
  background: #fce7f3 !important;
  color: #be185d !important;
}
.te-especifica-trat-select option.te-opt-te--to {
  background: #ccfbf1 !important;
  color: #0d9488 !important;
}

.filtros-calendario #cal-btn-bolsa {
  background: #93c5fd !important;
  color: #1e40af !important;
  border-color: #60a5fa !important;
}
.filtros-calendario #cal-btn-bolsa:hover {
  background: #60a5fa !important;
  border-color: #3b82f6 !important;
  color: #1e3a8a !important;
}
.filtros-calendario #cal-btn-quintas-cdiat {
  background: #bfdbfe !important;
  color: #1e40af !important;
  border-color: #60a5fa !important;
}
.filtros-calendario #cal-btn-quintas-cdiat:hover {
  background: #93c5fd !important;
  border-color: #3b82f6 !important;
  color: #1e3a8a !important;
}
.filtros-calendario #cal-btn-ausencias-cdiat {
  background: #fecaca !important;
  color: #991b1b !important;
  border-color: #f87171 !important;
}
.filtros-calendario #cal-btn-ausencias-cdiat:hover {
  background: #fca5a5 !important;
  border-color: #ef4444 !important;
  color: #7f1d1d !important;
}
.filtros-calendario #cal-btn-te-especifica {
  background: #fef3c7 !important;
  color: #92400e !important;
  border-color: #f59e0b !important;
}
.filtros-calendario #cal-btn-te-especifica:hover {
  background: #fde68a !important;
  border-color: #d97706 !important;
  color: #78350f !important;
}
.filtros-calendario #cal-btn-pacientes {
  background: #86efac !important;
  color: #166534 !important;
  border-color: #4ade80 !important;
}
.filtros-calendario #cal-btn-pacientes:hover {
  background: #4ade80 !important;
  border-color: #22c55e !important;
  color: #14532d !important;
}
.filtros-calendario .filtros-izquierda {
  flex: 1;
  flex-wrap: wrap;
}
.filtros-calendario #cal-btn-nuevo-horario {
  margin-left: auto;
  background: #166534 !important;
  color: #fff !important;
  border-color: #166534 !important;
}
.filtros-calendario #cal-btn-nuevo-horario:hover {
  background: #15803d !important;
  border-color: #15803d !important;
  color: #fff !important;
}
.filtros-calendario #cal-btn-nuevo-horario .cal-btn-icono-mas {
  font-weight: 700;
  margin-right: 0.2em;
}
.cal-rango-texto {
  font-weight: 500;
  min-width: 100px;
  font-size: 0.8rem;
}
.calendario-grid {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  overflow: hidden;
  background: var(--color-card);
}
/* Fila de navegación: beige #d3b58f */
.cal-grid-nav {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 0.75rem;
  padding: 0.4rem 1rem;
  background: #d3b58f;
  color: #3d2e1f;
  font-size: 0.9rem;
  flex-shrink: 0;
}
.cal-grid-nav .cal-nav-ant {
  justify-self: start;
}
.cal-grid-nav .cal-nav-rango {
  justify-self: center;
  font-weight: 500;
}
.cal-grid-nav .cal-nav-derecha {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.cal-grid-nav .cal-nav-ant,
.cal-grid-nav .cal-nav-sig {
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(61, 46, 31, 0.2);
  border: 1px solid rgba(61, 46, 31, 0.3);
  color: #3d2e1f;
  width: 32px;
  height: 28px;
  border-radius: var(--radio);
  cursor: pointer;
  font-size: 0.85rem;
  padding: 0;
  transition: background 0.15s;
}
.cal-grid-nav .cal-nav-ant:hover,
.cal-grid-nav .cal-nav-sig:hover {
  background: rgba(61, 46, 31, 0.35);
}
.cal-grid-nav .cal-nav-hoy {
  background: #b8860b;
  color: #fff;
  border: 1px solid #8b6914;
  padding: 0.25rem 0.6rem;
  border-radius: var(--radio);
  font-size: 0.85rem;
  cursor: pointer;
  font-weight: 600;
  transition: background 0.15s, border-color 0.15s;
}
.cal-grid-nav .cal-nav-hoy:hover:not(:disabled) {
  background: #8b6914;
  border-color: #6b5010;
  color: #fff;
}
.cal-grid-nav .cal-nav-hoy:disabled {
  opacity: 0.6;
  cursor: default;
}
.cal-grid-header {
  display: grid;
  grid-template-columns: 60px repeat(5, minmax(0, 1fr));
  background: var(--color-primario);
  color: white;
}
.cal-grid-row {
  display: grid;
  grid-template-columns: 60px repeat(5, minmax(0, 1fr));
  grid-auto-rows: minmax(44px, auto);
  border-top: 1px solid var(--color-borde);
  flex-shrink: 0;
  min-height: 44px;
}
.cal-grid-row:nth-child(even) {
  background: rgba(117, 69, 22, 0.05);
}
/* CDIAT: rejilla 15 min, citas como ítems de grid con altura según duración */
.cal-grid--cdiat {
  --cal-cdiat-row-h: 26px;
}
.cal-grid--cdiat .cal-cdiat-wrap {
  position: relative;
}
/* Solo celdas: los bloques de cita van en .cal-cdiat-overlay para no romper el auto-placement del grid */
.cal-grid--cdiat .cal-cdiat-matrix {
  display: grid;
  grid-template-columns: 60px repeat(5, minmax(0, 1fr));
  grid-template-rows: repeat(52, var(--cal-cdiat-row-h));
  border-left: 1px solid var(--color-borde);
  border-right: 1px solid var(--color-borde);
}
.cal-grid--cdiat .cal-cdiat-overlay {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  display: grid;
  grid-template-columns: 60px repeat(5, minmax(0, 1fr));
  grid-template-rows: repeat(52, var(--cal-cdiat-row-h));
  pointer-events: none;
  z-index: 2;
}
.cal-grid--cdiat .cal-cdiat-matrix > .cal-cell-time {
  font-size: 0.78rem;
  padding: 0.1rem 0.35rem 0.1rem 0;
  border-top: 1px solid rgba(117, 69, 22, 0.12);
  align-self: stretch;
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  line-height: 1.2;
}
.cal-grid--cdiat .cal-cdiat-matrix > .cal-cell-slot-cdiat {
  border-top: 1px solid rgba(117, 69, 22, 0.12);
  border-left: 1px solid var(--color-borde);
  min-height: 0;
  padding: 0;
}
.cal-grid--cdiat .cal-cdiat-matrix > .cal-cell-slot-cdiat:nth-child(12n + 2),
.cal-grid--cdiat .cal-cdiat-matrix > .cal-cell-slot-cdiat:nth-child(12n + 3),
.cal-grid--cdiat .cal-cdiat-matrix > .cal-cell-slot-cdiat:nth-child(12n + 4),
.cal-grid--cdiat .cal-cdiat-matrix > .cal-cell-slot-cdiat:nth-child(12n + 5),
.cal-grid--cdiat .cal-cdiat-matrix > .cal-cell-slot-cdiat:nth-child(12n + 6) {
  background: rgba(117, 69, 22, 0.05);
}
/* Varios subslots misma franja inicio: reparto horizontal (como .cal-slot-row en Neuro) */
.cal-cdiat-cluster {
  pointer-events: none;
  z-index: 2;
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  justify-content: stretch;
  gap: 3px;
  min-width: 0;
  box-sizing: border-box;
  margin: 1px 2px 1px 1px;
}
.cal-cdiat-cluster-lane {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.cal-cdiat-cita-block {
  pointer-events: none;
  z-index: 2;
  margin: 1px 3px 1px 1px;
  border-radius: 4px;
  overflow: hidden;
  min-width: 0;
  box-sizing: border-box;
}
.cal-cdiat-cita-block .cal-slot-badge,
.cal-cdiat-cluster-lane .cal-slot-badge {
  flex: 1;
  min-height: 100%;
  box-sizing: border-box;
  font-size: 0.78rem;
  padding: 2px 4px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: 1px;
}
.cal-cdiat-cita-block .cal-slot-tratamiento,
.cal-cdiat-cluster-lane .cal-slot-tratamiento {
  font-size: 0.74rem;
  line-height: 1.15;
}
.cal-cdiat-cita-block .cal-slot-pacientes,
.cal-cdiat-cluster-lane .cal-slot-pacientes {
  font-size: 0.7rem;
  line-height: 1.15;
}
.cal-cdiat-cita-block .cal-slot-hora-min,
.cal-cdiat-cluster-lane .cal-slot-hora-min {
  font-size: 0.68rem;
  opacity: 0.95;
}
/* Franjas CDIAT de 15 min (p. ej. Descanso): hora y título en una sola fila */
.cal-slot-badge-fila-unica {
  flex-direction: row !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 3px !important;
  gap: 0 !important;
}
.cal-slot-badge-fila-unica .cal-slot-fila-unica {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 100%;
  line-height: 1.1;
}
.cal-slot-badge-fila-unica .cal-slot-hora-min {
  position: absolute;
  left: 2px;
  top: 50%;
  transform: translateY(-50%);
  margin: 0;
  font-size: 0.62rem;
  opacity: 0.9;
  white-space: nowrap;
}
.cal-slot-badge-fila-unica .cal-slot-tratamiento {
  flex: 1;
  width: 100%;
  text-align: center;
  text-transform: uppercase;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  line-height: 1.1;
  padding: 0 1.6rem 0 1.4rem;
  box-sizing: border-box;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cal-cdiat-cita-block .cal-slot-badge-fila-unica,
.cal-cdiat-cluster-lane .cal-slot-badge-fila-unica {
  padding: 0 2px !important;
}
.cal-cell {
  padding: 0.35rem 0.5rem;
  min-height: 32px;
}
.cal-cell-time {
  font-size: 0.85rem;
  color: var(--color-texto-suave);
  text-align: right;
  padding-right: 0.5rem;
}
.cal-cell-day {
  font-size: 0.9rem;
  text-align: center;
  min-height: 36px;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 0.4rem 0.25rem;
  box-sizing: border-box;
}
.cal-day-label {
  font-size: inherit;
  font-weight: inherit;
  line-height: 1.3;
  max-width: 100%;
}
/* Hoy: tono verde/azul, sensación de día activo */
.cal-cell-day-hoy {
  background: rgba(15, 118, 110, 0.5) !important;
  box-shadow: inset 0 -3px 0 rgba(34, 197, 94, 0.4);
  font-weight: 700;
}
.cal-cell-slot-hoy {
  background: rgba(15, 118, 110, 0.05) !important;
  border-left: 3px solid rgba(15, 118, 110, 0.5);
}
.cal-lista-dia-header-hoy {
  background: rgba(15, 118, 110, 0.35);
  border-left: 4px solid rgba(34, 197, 94, 0.7);
  font-weight: 600;
}
/* Festivos: encabezado en gris con texto claro para buena legibilidad */
.cal-cell-day-festivo,
.cal-cell-day-festivo.cal-cell-day-hoy {
  background: rgba(100, 100, 100, 0.6) !important;
  box-shadow: inset 0 -3px 0 rgba(80, 80, 80, 0.6);
  font-weight: 600;
  color: #fff !important;
}
.cal-cell-slot-festivo {
  background: rgba(120, 120, 120, 0.12) !important;
  border-left-color: #9ca3af;
  filter: grayscale(1);
}
.cal-lista-dia-header-festivo,
.cal-lista-dia-header-festivo.cal-lista-dia-header-hoy {
  background: rgba(100, 100, 100, 0.55);
  border-left: 4px solid #6b7280;
  font-weight: 600;
  color: #fff !important;
}
.cal-lista-dia-festivo {
  background: rgba(120, 120, 120, 0.08);
}
.cal-lista-dia-festivo .cal-lista-sesion {
  filter: grayscale(1);
}

.modal-slot-estrecho { max-width: 320px; }

.modal-cdiat-alcance-modalidad-caja {
  max-width: 420px;
  width: min(420px, 92vw);
}
.modal-cdiat-alcance-botones {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-top: 1rem;
}
.modal-cdiat-alcance-botones .btn {
  width: 100%;
  justify-content: center;
}
.modal-header-calendario .modal-cerrar-marron { color: rgba(255, 255, 255, 0.9); }
.modal-header-calendario .modal-cerrar-marron:hover { color: #fff; background: rgba(255, 255, 255, 0.25); }
.modal-slot-cerrar-wrap { display: flex; justify-content: flex-end; margin-top: 0.5rem; }
.modal-slot-festivo-lista { display: flex; flex-direction: column; gap: 0.75rem; margin: 1rem 0; }
.modal-slot-festivo-item {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 1rem;
  padding: 0.6rem;
  background: rgba(117, 69, 22, 0.08);
  border-radius: var(--radio);
  border-left: 4px solid var(--color-primario, #754516);
}
.modal-slot-festivo-item .btn-slot-eliminar { margin-left: auto; }
.modal-slot-festivo-info { display: flex; flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 0 0.25rem; min-width: 0; }
.modal-slot-festivo-paciente { font-weight: 600; }
.modal-slot-festivo-servicio { font-size: 0.9rem; font-weight: 500; }
.modal-slot-festivo-sin-pacientes { font-size: 0.85rem; color: var(--color-texto-suave); }
.modal-slot-festivo-check { display: flex; align-items: center; gap: 0.35rem; font-size: 0.9rem; cursor: pointer; margin: 0; }
.btn.btn-slot-eliminar {
  padding: 0.2rem 0.5rem;
  font-size: 0.75rem;
  line-height: 1.2;
  align-self: center;
  background: #dc2626;
  color: #fff;
  border-color: #b91c1c;
}
.btn.btn-slot-eliminar:hover { background: #b91c1c; color: #fff; }
.btn.btn-slot-editar {
  padding: 0.2rem 0.5rem;
  font-size: 0.75rem;
  line-height: 1.2;
  align-self: center;
  background: #ea580c;
  color: #fff;
  border-color: #c2410c;
}
.btn.btn-slot-editar:hover { background: #c2410c; color: #fff; }
.modal-slot-festivo-check input { cursor: pointer; }
.cal-cell-slot {
  cursor: pointer;
  transition: background 0.15s;
  border-left: 1px solid var(--color-borde);
  min-height: 44px;
}
.cal-cell-slot:hover {
  background: rgba(117, 69, 22, 0.08);
}
.cal-cell-slot.cal-slot-ocupado {
  background: transparent;
}
.cal-cell-slot.cal-slot-oculto-completo {
  /* Mantener espacio para no desplazar columnas; visibility:hidden en lugar de display:none */
  visibility: hidden;
  pointer-events: none;
}
.cal-cell-slot.cal-slot-franja-terapeuta {
  background-color: var(--cal-franja-bg, rgba(117, 69, 22, 0.15));
  border-left: 4px solid var(--cal-franja-color, rgba(117, 69, 22, 0.5));
}
.cal-check-ocultar-completados {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.8rem;
  cursor: pointer;
  white-space: nowrap;
}
.cal-check-ocultar-completados input { cursor: pointer; }
.calendario-stats-servicios {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.75rem;
  padding: 0.4rem 0;
  font-size: 0.78rem;
  color: var(--color-texto-suave);
}
.cal-stat-servicio {
  padding: 0.15rem 0.4rem;
  border-radius: 4px;
  cursor: pointer;
  transition: box-shadow 0.15s, transform 0.1s;
}
.cal-stat-servicio:hover { transform: scale(1.02); }
.cal-stat-servicio-activo {
  box-shadow: 0 0 0 2px var(--color-primario, #754516);
  font-weight: 600;
}
.cal-cell-filtro-servicio-oculto {
  opacity: 0.28;
  pointer-events: none;
}
.cal-slot-badge-filtro-no-coincide {
  opacity: 0.3;
  filter: blur(1px);
  pointer-events: none;
}
/* Horario CDIAT: filtro por tipo oculta el resto (no difumina) */
.cal-grid--cdiat .cal-cdiat-cita-block.cal-slot-filtro-oculto-cdiat,
.cal-grid--cdiat .cal-cdiat-cluster-lane.cal-slot-filtro-oculto-cdiat,
.cal-grid--cdiat .cal-cdiat-cluster.cal-slot-filtro-oculto-cdiat {
  display: none !important;
}
.cal-stat-vacio { font-style: italic; }
.cal-grid-footer {
  display: grid;
  grid-template-columns: 60px repeat(5, minmax(0, 1fr));
  border-top: 1px solid var(--color-borde);
  background: rgba(117, 69, 22, 0.04);
  min-height: 28px;
}
.cal-cell-horario-dia {
  padding: 0.25rem 0.5rem;
  font-size: 0.8rem;
  color: var(--color-texto-suave);
  text-align: center;
}
.cal-cell-horario-dia.cal-cell-horario-visible {
  color: var(--color-primario);
  font-weight: 500;
}
.terapeuta-horarios-grid { display: flex; flex-direction: column; gap: 0.4rem; }
.terapeuta-horario-row { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; padding: 0.35rem 0; border-bottom: 1px solid var(--color-borde-suave, #e8e0d8); }
.terapeuta-horario-row:last-child { border-bottom: none; }
.horario-check-dia { display: flex; align-items: center; gap: 0.4rem; cursor: pointer; min-width: 7rem; }
.horario-check-dia input[type="checkbox"] { width: 1rem; height: 1rem; accent-color: var(--color-primario); cursor: pointer; }
.terapeuta-horario-dia { font-weight: 500; }
.horario-tramos { display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap; }
.horario-tramo-label { font-size: 0.75rem; color: var(--color-texto-suave); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
.horario-check-tarde { display: flex; align-items: center; gap: 0.3rem; font-size: 0.8rem; color: var(--color-primario); cursor: pointer; margin-left: 0.5rem; white-space: nowrap; }
.horario-check-tarde input[type="checkbox"] { width: 0.9rem; height: 0.9rem; accent-color: var(--color-primario); cursor: pointer; }
.terapeuta-horario-input { padding: 0.35rem; border: 1px solid var(--color-borde); border-radius: var(--radio); font-size: 0.9rem; }
.terapeuta-horario-sep { color: var(--color-texto-suave); }
.cal-slot-row {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-start;
  align-content: flex-start;
  gap: 6px;
  min-height: 100%;
}
.cal-slot-badge {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 60px;
  font-size: 0.75rem;
  padding: 4px 8px;
  border-radius: 8px;
  overflow: hidden;
  box-sizing: border-box;
}
.cal-slot-badge .cal-slot-tratamiento,
.cal-slot-badge .cal-slot-pacientes {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* Badge de 30 minutos: más compacto y con prefijo de hora */
.cal-slot-badge-media-hora {
  border-left-width: 4px !important;
  border-left-style: solid !important;
}
.cal-slot-hora-min {
  font-size: 0.65rem;
  font-weight: 700;
  opacity: 0.75;
  margin-bottom: 1px;
  line-height: 1;
}
.cal-slot-badge-fila-unica .cal-slot-hora-min {
  margin-bottom: 0;
}
.cal-slot-tratamiento {
  font-weight: 600;
  line-height: 1.2;
}
.cal-slot-pacientes {
  font-size: 0.7rem;
  opacity: 0.95;
  line-height: 1.2;
}
.cal-slot-paciente-sin-confirmar {
  color: #444 !important;
}
.cal-lista-paciente-sin-confirmar {
  color: #444 !important;
}

/* Resaltar sesiones de un paciente (desplegable «Todos los pacientes») */
.cal-slot-badge.cal-slot-paciente-resaltado {
  position: relative;
  z-index: 2;
  box-shadow: 0 0 0 2px #2563eb, 0 2px 8px rgba(37, 99, 235, 0.25);
}
.cal-slot-badge.cal-slot-paciente-atenuado {
  opacity: 0.42;
  filter: grayscale(0.15);
}
.cal-lista-sesion.cal-lista-sesion-paciente-resaltado {
  position: relative;
  z-index: 1;
  box-shadow: 0 0 0 2px #2563eb, 0 2px 8px rgba(37, 99, 235, 0.2);
}
.cal-lista-sesion.cal-lista-sesion-paciente-atenuado {
  opacity: 0.45;
  filter: grayscale(0.15);
}

/* Vista lista calendario (acordeón por día) */
.cal-vista-toggle {
  display: flex;
  gap: 0;
  margin-left: 0.25rem;
  align-items: center;
}
.cal-vista-toggle .btn-toolbar {
  border-radius: 0;
  padding: 0.15rem 0.4rem;
  max-height: 30px;
  height: 30px;
  font-size: 12px;
}
.cal-btn-icono-grid {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.cal-btn-icono-grid svg {
  display: block;
}
.cal-vista-toggle .cal-btn-icono-grid.btn-vista-activo svg {
  color: #fff;
}
.cal-vista-toggle .btn-toolbar:first-child {
  border-radius: var(--radio) 0 0 var(--radio);
}
.cal-vista-toggle .btn-toolbar:last-child {
  border-radius: 0 var(--radio) var(--radio) 0;
}
.cal-vista-toggle .btn-vista-activo {
  background: var(--color-primario);
  color: #fff;
  border-color: var(--color-primario);
}
.calendario-lista {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  overflow: hidden;
  background: var(--color-card);
}
/* Fila de navegación lista: beige #d3b58f */
.cal-lista-nav {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 1rem;
  background: #d3b58f;
  color: #3d2e1f;
  font-size: 0.9rem;
  border-bottom: 2px solid rgba(61, 46, 31, 0.25);
}
.cal-lista-nav .cal-nav-ant {
  justify-self: start;
}
.cal-lista-nav .cal-nav-rango {
  justify-self: center;
  font-weight: 500;
}
.cal-lista-nav .cal-nav-derecha {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.cal-lista-nav .cal-nav-ant,
.cal-lista-nav .cal-nav-sig {
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(61, 46, 31, 0.2);
  border: 1px solid rgba(61, 46, 31, 0.3);
  color: #3d2e1f;
  width: 32px;
  height: 28px;
  border-radius: var(--radio);
  cursor: pointer;
  font-size: 0.85rem;
  padding: 0;
  transition: background 0.15s;
}
.cal-lista-nav .cal-nav-ant:hover,
.cal-lista-nav .cal-nav-sig:hover {
  background: rgba(61, 46, 31, 0.35);
}
.cal-lista-nav .cal-nav-hoy {
  background: #b8860b;
  color: #fff;
  border: 1px solid #8b6914;
  padding: 0.25rem 0.6rem;
  border-radius: var(--radio);
  font-size: 0.85rem;
  cursor: pointer;
  font-weight: 600;
  transition: background 0.15s, border-color 0.15s;
}
.cal-lista-nav .cal-nav-hoy:hover:not(:disabled) {
  background: #8b6914;
  border-color: #6b5010;
  color: #fff;
}
.cal-lista-nav .cal-nav-hoy:disabled {
  opacity: 0.6;
  cursor: default;
}
.cal-lista-acordeon {
  display: flex;
  flex-direction: column;
}
.cal-lista-dia {
  border-bottom: 1px solid var(--color-borde);
}
.cal-lista-dia:last-child {
  border-bottom: none;
}
.cal-lista-dia-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.6rem 1rem;
  cursor: pointer;
  background: var(--color-primario);
  color: #fff;
  font-weight: 600;
  transition: background 0.15s;
  user-select: none;
}
.cal-lista-dia-header:hover {
  background: color-mix(in srgb, var(--color-primario) 90%, black);
}
.cal-lista-dia-header .cal-lista-dia-nombre {
  font-size: 0.95rem;
}
.cal-lista-dia-header .cal-lista-dia-badge {
  background: rgba(255,255,255,0.25);
  padding: 0.15rem 0.5rem;
  border-radius: 999px;
  font-size: 0.8rem;
  font-weight: 500;
}
.cal-lista-dia-header .cal-lista-dia-icono {
  margin-left: 0.5rem;
  transition: transform 0.2s;
}
.cal-lista-dia.expandido .cal-lista-dia-icono {
  transform: rotate(180deg);
}
.cal-lista-dia-contenido {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.25s ease-out;
}
.cal-lista-dia.expandido .cal-lista-dia-contenido {
  max-height: 2000px;
  transition: max-height 0.35s ease-in;
}
.cal-lista-sesiones {
  padding: 0.5rem;
  background: rgba(117, 69, 22, 0.04);
}
.cal-lista-paralelo-fila {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  gap: 0.35rem;
  margin-bottom: 0.35rem;
}
.cal-lista-paralelo-fila .cal-lista-sesion {
  flex: 1 1 0;
  min-width: 0;
  margin-bottom: 0;
}
.cal-lista-sesiones > .cal-lista-sesion:last-child,
.cal-lista-sesiones > .cal-lista-paralelo-fila:last-child {
  margin-bottom: 0;
}
.cal-lista-sesion {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 0.5rem 0.75rem;
  margin-bottom: 0.35rem;
  border-radius: var(--radio);
  background: var(--color-card);
  border: 1px solid var(--color-borde);
  cursor: pointer;
  transition: background 0.15s, filter 0.15s;
}
.cal-lista-sesion:hover {
  background: rgba(117, 69, 22, 0.08);
}
.cal-lista-sesion-pastel:hover {
  filter: brightness(0.97);
}
.cal-lista-sesion-hora {
  flex-shrink: 0;
  font-weight: 600;
  font-size: 0.9rem;
  min-width: 3.5rem;
}
.cal-lista-sesion-info {
  flex: 1;
  min-width: 0;
}
.cal-lista-sesion-tratamiento {
  font-weight: 600;
  font-size: 0.9rem;
  margin-bottom: 0.2rem;
}
.cal-lista-sesion-pacientes {
  font-size: 0.85rem;
  color: var(--color-texto-suave);
}
.cal-lista-sesion-pastel .cal-lista-sesion-pacientes {
  color: inherit;
  opacity: 0.95;
}
.cal-lista-terapeutas-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  flex-shrink: 0;
}
.cal-lista-sesion-terapeuta,
.cal-lista-badge-terapeuta {
  flex-shrink: 0;
  font-size: 0.8rem;
  color: var(--color-texto-suave);
  padding: 0.2rem 0.5rem;
  background: rgba(0,0,0,0.05);
  border-radius: 4px;
}
.cal-lista-sesion-pastel .cal-lista-sesion-terapeuta,
.cal-lista-sesion-pastel .cal-lista-badge-terapeuta {
  color: #333;
  background: rgba(255,255,255,0.6);
}
.cal-lista-dia-vacio {
  padding: 1rem;
  text-align: center;
  color: var(--color-texto-suave);
  font-size: 0.9rem;
}
.cal-lista-badge-recuperacion {
  display: inline-block;
  margin-left: 0.5rem;
  padding: 0.1rem 0.4rem;
  font-size: 0.7rem;
  font-weight: 600;
  background: #e8f5e9;
  color: #2e7d32;
  border-radius: 4px;
}

/* Modales calendario: cabeceras con color como el resto de modales */
.modal-header-calendario {
  background: var(--color-primario) !important;
  color: #fff !important;
  border-bottom-color: rgba(255, 255, 255, 0.2) !important;
}
.modal-header-calendario h2 {
  color: #fff !important;
}
.modal-header-calendario .modal-cerrar {
  color: rgba(255, 255, 255, 0.9);
}
.modal-header-calendario .modal-cerrar:hover {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}
.modal-header-eliminar {
  background: #b91c1c !important;
}
.modal-header-eliminar h2 {
  color: #fff !important;
}

.modal-cita-cal {
  max-width: 560px;
  max-height: 90vh;
  --cita-color-tratamiento: transparent;
  border-left: 4px solid var(--cita-color-tratamiento);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.modal-cita-cal .modal-body {
  padding: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  flex: 1;
  min-height: 0;
}
.cita-cal-slot-info-panel {
  padding: 0.75rem 1rem;
  margin: 0;
  background: linear-gradient(135deg, rgba(117, 69, 22, 0.12) 0%, rgba(139, 90, 43, 0.08) 100%);
  border-bottom: 1px solid rgba(117, 69, 22, 0.2);
  flex-shrink: 0;
}
.cita-cal-slot-info-panel.oculto {
  display: none !important;
}
.cita-cal-slot-info-titulo {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: rgba(117, 69, 22, 0.8);
  margin-bottom: 0.4rem;
}
.cita-cal-slot-info-datos {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 1.25rem;
  font-size: 0.9rem;
  color: #3d2a14;
}
.cita-cal-slot-info-item {
  display: inline-flex;
  align-items: baseline;
  gap: 0.2rem;
  max-width: 100%;
  white-space: nowrap;
}
.cita-cal-slot-info-item--pacientes {
  white-space: normal;
  align-items: baseline;
  max-width: min(100%, 28rem);
}
.cita-cal-slot-info-item strong {
  font-weight: 600;
  color: rgba(117, 69, 22, 0.9);
  flex-shrink: 0;
}
#cita-cal-slot-info-pacientes {
  color: #3d2a14;
  font-weight: 500;
  white-space: normal;
}
#cita-cal-slot-info-pacientes .cal-slot-chip-familiar {
  vertical-align: middle;
}
.modal-cita-cal .modal-cita-scroll {
  overflow-y: auto;
  padding: 1rem;
  flex: 1;
  min-height: 0;
  background: rgba(117, 69, 22, 0.03);
}
.modal-cita-grid {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}
.modal-cita-row {
  display: grid;
  gap: 0.6rem 1rem;
  align-items: start;
}
.modal-cita-row-1 {
  grid-template-columns: 1fr 1fr 1fr;
}
.modal-cita-row-2 {
  grid-template-columns: 0.85fr 0.85fr 0.6fr 1fr;
}
.modal-cita-cell-compact {
  min-width: 0;
}
.modal-cita-cell-compact select,
.modal-cita-cell-compact input[type="number"] {
  max-width: 100%;
}
.modal-cita-cell {
  min-height: 2.5rem;
}
.modal-cita-cell label {
  display: block;
  margin-bottom: 0.25rem;
  font-size: 0.9rem;
}
.modal-cita-cell select,
.modal-cita-cell input[type="text"],
.modal-cita-cell input[type="date"],
.modal-cita-cell input[type="number"],
.modal-cita-cell textarea {
  width: 100%;
  padding: 0.4rem 0.6rem;
  box-sizing: border-box;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-family: inherit;
}
.modal-cita-cell textarea {
  resize: vertical;
  min-height: 60px;
}
.modal-cita-cell-full {
  grid-column: 1 / -1;
}
/* Creación slot CDIAT: tipo, fecha, tratamiento, hora, duración (+ modalidad si visible) */
.modal-cita-cal.modal-cita-cal--cdiat-compact .modal-cita-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 0.5rem 0.75rem;
  align-items: end;
}
.modal-cita-cal.modal-cita-cal--cdiat-compact .modal-cita-row-1,
.modal-cita-cal.modal-cita-cal--cdiat-compact .modal-cita-row-2 {
  display: contents;
}
@media (max-width: 900px) {
  .modal-cita-cal.modal-cita-cal--cdiat-compact .modal-cita-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 480px) {
  .modal-cita-cal.modal-cita-cal--cdiat-compact .modal-cita-grid {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 480px) {
  .modal-cita-row-1,
  .modal-cita-row-2 {
    grid-template-columns: 1fr;
  }
}
.modal-cita-footer {
  flex-shrink: 0;
  padding: 1rem;
  border-top: 1px solid var(--color-borde);
  background: var(--color-card);
  display: flex;
  gap: 0.5rem;
  justify-content: flex-end;
  align-items: center;
}
.cita-eliminar-wrap {
  position: relative;
}
.cita-eliminar-opciones {
  position: absolute;
  bottom: 100%;
  left: 0;
  margin-bottom: 4px;
  background: var(--color-card);
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  box-shadow: var(--sombra-md);
  z-index: 60;
  display: flex;
  flex-direction: column;
  min-width: 180px;
}
.cita-eliminar-opciones button {
  padding: 0.5rem 0.75rem;
  border: none;
  background: transparent;
  text-align: left;
  cursor: pointer;
  font-size: 0.9rem;
}
.cita-eliminar-opciones button:hover {
  background: rgba(220, 38, 38, 0.1);
  color: #b91c1c;
}
.cal-centro-selector {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.cal-centro-selector label {
  font-weight: 500;
  margin: 0;
  font-size: 0.875rem;
  white-space: nowrap;
}
.filtros-calendario .cal-centro-selector select,
.filtros-calendario #cal-filtro-terapeuta {
  min-width: 90px;
  max-width: 120px;
}
.filtros-calendario #cal-filtro-paciente {
  min-width: 7.5rem;
  max-width: 11rem;
}
.filtros-calendario .cal-contador-sesiones {
  font-size: 12px;
  color: var(--color-texto-suave);
  white-space: nowrap;
  align-self: center;
  line-height: 1.2;
  padding: 0 0.15rem;
  font-weight: 600;
}
.cita-pacientes-select-wrap {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.cita-pacientes-filtro {
  width: 100%;
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.9rem;
}
.cita-pacientes-select {
  width: 100%;
  padding: 0.35rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.9rem;
  min-height: 120px;
}
.modal-sm { max-width: 360px; }
.modal-slot-sesiones-lista { display: flex; flex-direction: column; gap: 0.5rem; margin-bottom: 1rem; }
.modal-slot-sesion-item {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.5rem;
  padding: 0.5rem;
  background: var(--color-fondo-suave, #f5f5f5);
  border-radius: var(--radio);
}
.modal-slot-sesion-header-fila {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.5rem;
  width: 100%;
}
.modal-slot-sesion-col-texto {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}
.modal-slot-sesion-linea-principal {
  line-height: 1.45;
  word-break: break-word;
}
.modal-slot-sesion-terapeutas {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
}
.modal-slot-sesion-notas {
  margin-top: 0.35rem;
  padding: 0.35rem 0.45rem;
  font-size: 0.82rem;
  line-height: 1.35;
  color: #334155;
  background: rgba(255, 255, 255, 0.65);
  border-left: 3px solid #64748b;
  border-radius: 0 4px 4px 0;
  word-break: break-word;
}
.modal-slot-sesion-terapeutas-label {
  font-size: 0.72rem;
  font-weight: 600;
  color: #64748b;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  flex-shrink: 0;
  margin-right: 0.1rem;
}
.modal-slot-sesion-badge-terapeuta {
  font-weight: 600;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}
.modal-calendario .modal-slot-sesion-item {
  background: rgba(117, 69, 22, 0.06);
  border-left: 3px solid var(--color-primario);
}
.modal-slot-sesion-texto { flex: 1 1 100%; font-size: 0.9rem; min-width: 0; }
.modal-slot-sesion-servicio { font-weight: 500; }
.modal-slot-sesion-item .btn-small { flex-shrink: 0; }
.modal-slot-sesion-ausencias-wrap {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 0.35rem;
  width: 100%;
  margin-top: 0.25rem;
  padding-top: 0.5rem;
  border-top: 1px solid rgba(117, 69, 22, 0.12);
}
.modal-slot-sesion-item .btn.modal-slot-sesion-btn-ausencia {
  padding: 0.2rem 0.4rem;
  font-size: 0.7rem;
  background: #ea580c;
  color: #fff;
  border-color: #c2410c;
}
.modal-slot-sesion-item .btn.modal-slot-sesion-btn-ausencia:hover {
  background: #c2410c;
  color: #fff;
}
.modal-slot-botones { display: flex; gap: 0.5rem; flex-wrap: wrap; justify-content: flex-end; }
.modal-eliminar-bolsa-grupo { margin: 0.75rem 0; padding: 0.5rem; background: rgba(117, 69, 22, 0.06); border-radius: var(--radio); }
.modal-eliminar-bolsa-label { margin: 0 0 0.5rem 0; font-size: 0.9rem; }
.modal-eliminar-bolsa-checkboxes { display: flex; flex-direction: column; gap: 0.35rem; }
.modal-eliminar-bolsa-check { display: flex; align-items: center; gap: 0.4rem; cursor: pointer; font-size: 0.9rem; }
.modal-eliminar-bolsa-check input { width: 1rem; height: 1rem; cursor: pointer; }
.modal-eliminar-paciente-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 1rem; padding: 0.35rem 0; border-bottom: 1px solid rgba(117,69,22,0.1); }
.modal-eliminar-paciente-row:last-child { border-bottom: none; }
.modal-eliminar-paciente-row .modal-eliminar-bolsa-check { margin: 0; }

/* Popover quitar paciente */
.popover-quitar-paciente { position: fixed; z-index: 10000; background: #fff; border: 1px solid var(--color-borde); border-radius: var(--radio); box-shadow: 0 4px 12px rgba(0,0,0,0.15); padding: 1rem; min-width: 220px; }
.popover-quitar-titulo { margin: 0 0 0.75rem 0; font-size: 0.95rem; }
.popover-quitar-opciones { display: flex; flex-direction: column; gap: 0.35rem; margin-bottom: 0.75rem; }
.popover-quitar-opciones button { padding: 0.5rem 0.75rem; text-align: left; border: 1px solid var(--color-borde); border-radius: var(--radio); background: #fff; cursor: pointer; font-size: 0.9rem; }
.popover-quitar-opciones button:hover { background: rgba(117,69,22,0.06); }
.popover-quitar-bolsa { display: flex; align-items: center; gap: 0.4rem; font-size: 0.9rem; cursor: pointer; }
.popover-quitar-bolsa input { width: 1rem; height: 1rem; cursor: pointer; }
.modal-eliminar-slot-completo { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid rgba(117, 69, 22, 0.2); }
.modal-eliminar-slot-completo-label { margin: 0 0 0.5rem 0; font-size: 0.9rem; font-weight: 600; color: var(--color-eliminar, #b91c1c); }

.modal-bolsa-estadisticas { margin-bottom: 1rem; padding: 0.6rem; background: rgba(117, 69, 22, 0.08); border-radius: var(--radio); }
.modal-bolsa-stats { display: flex; gap: 1.5rem; font-size: 0.95rem; }
.modal-bolsa-stats span { display: flex; align-items: center; gap: 0.3rem; }
.modal-bolsa-pacientes { display: flex; flex-direction: column; gap: 0.5rem; margin-bottom: 1rem; }
.modal-bolsa-paciente-item { display: flex; align-items: center; justify-content: space-between; padding: 0.6rem; background: rgba(117, 69, 22, 0.06); border-radius: var(--radio); cursor: pointer; transition: background 0.15s; }
.modal-bolsa-paciente-item:hover { background: rgba(117, 69, 22, 0.12); }
.modal-bolsa-badge { font-size: 0.85rem; color: var(--color-primario); font-weight: 600; }
.modal-bolsa-vacio { color: var(--color-texto-suave); margin: 1rem 0; }
.modal-bolsa-detalle h3 { margin: 0 0 0.5rem 0; font-size: 1rem; }
.modal-bolsa-hint { font-size: 0.9rem; color: var(--color-texto-suave); margin: 0 0 0.75rem 0; }
/* Modal Nuevo horario */
.modal-nuevo-horario { max-width: 560px; }
.modal-nuevo-horario-orden-hint {
  margin: 0 0 0.5rem 0;
  font-size: 0.8rem;
  line-height: 1.35;
  width: 100%;
}
.modal-nuevo-horario-filtros {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  margin-bottom: 1.25rem;
}
.modal-nuevo-horario-filtros .nh-fila {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem 1rem;
  align-items: flex-end;
  width: 100%;
}
.modal-nuevo-horario-filtros .nh-fila-tratamiento .form-grupo {
  flex: 1 1 140px;
  min-width: 0;
  max-width: 100%;
}
.modal-nuevo-horario-filtros .nh-fila-paciente-fecha .form-grupo {
  flex: 1 1 160px;
  min-width: 0;
  max-width: 100%;
}
.modal-nuevo-horario-filtros .nh-fila-destinos {
  flex-wrap: wrap;
}
.modal-nuevo-horario-filtros .nh-fila-destinos .form-grupo {
  flex: 1 1 200px;
  min-width: 0;
}
.modal-nuevo-horario-filtros--compact .modal-nuevo-horario-orden-hint {
  grid-column: 1 / -1;
  grid-row: 1;
  margin-bottom: 0.15rem;
}
.modal-nuevo-horario-filtros .form-grupo { margin: 0; }
.modal-nuevo-horario-filtros label { display: block; font-size: 0.8rem; margin-bottom: 0.2rem; }
.modal-nuevo-horario-filtros select:disabled {
  opacity: 0.65;
  cursor: not-allowed;
}
/* Select: altura fija + line-height holgado evita texto cortado arriba (Chrome/Edge Windows) */
.modal-nuevo-horario-filtros select {
  min-width: 120px;
  width: 100%;
  max-width: 100%;
  height: 40px;
  padding: 0.35rem 1.85rem 0.35rem 0.55rem;
  box-sizing: border-box;
  font-size: 0.8125rem;
  line-height: 1.45;
  font-family: inherit;
  vertical-align: middle;
}
.modal-nuevo-horario-filtros input[type="date"] {
  min-width: 120px;
  height: 40px;
  padding: 0 0.5rem;
  box-sizing: border-box;
  font-size: 0.8125rem;
  line-height: 1.35;
  font-family: inherit;
}
.modal-nuevo-horario-filtros #nuevo-horario-tipo { min-width: 140px; }
/* Vista compacta (Recogida datos INFO/Entrevista + Editar valoración): grid, sin Tipo */
.modal-nuevo-horario-filtros.modal-nuevo-horario-filtros--compact {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(132px, 0.9fr);
  grid-template-rows: auto auto auto auto auto;
  column-gap: 1rem;
  row-gap: 0.55rem;
  align-items: end;
}
.modal-nuevo-horario-filtros--compact .nh-fila-tratamiento {
  grid-column: 1 / -1;
  grid-row: 2;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 1rem;
  align-items: end;
}
.modal-nuevo-horario-filtros--compact .nh-f-centro { grid-column: 1; grid-row: 1; }
.modal-nuevo-horario-filtros--compact .nh-f-tipo { display: none !important; }
/* Horario CDIAT: centro fijado, mismo layout compacto */
.modal-nuevo-horario-filtros--cdiat .nh-f-centro select:disabled {
  opacity: 0.95;
  cursor: default;
  background: rgba(117, 69, 22, 0.06);
}
.modal-nuevo-horario-filtros--compact .nh-f-tratamiento { grid-column: 2; grid-row: 1; min-width: 0; }
.modal-nuevo-horario-filtros--compact .nh-fila-destinos {
  grid-column: 1 / -1;
  grid-row: 3;
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem 1rem;
  width: 100%;
}
.modal-nuevo-horario-filtros--compact .nh-fila-destinos .nh-f-destino-val:not(.oculto),
.modal-nuevo-horario-filtros--compact .nh-fila-destinos .nh-f-destino-pac:not(.oculto) {
  flex: 1 1 200px;
  min-width: 0;
}
.modal-nuevo-horario-filtros--compact .nh-fila-paciente-fecha {
  grid-column: 1 / -1;
  grid-row: 4;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(132px, 0.9fr);
  gap: 1rem;
  align-items: end;
}
.modal-nuevo-horario-filtros--compact .nh-f-paciente { grid-column: 1; min-width: 0; }
.modal-nuevo-horario-filtros--compact .nh-f-fecha { grid-column: 2; min-width: 0; }
.modal-nuevo-horario-filtros--compact .nh-f-buscar-fila {
  grid-column: 1 / -1;
  grid-row: 5;
  width: 100%;
}
.modal-nuevo-horario-filtros:not(.modal-nuevo-horario-filtros--compact) .nh-f-buscar-fila {
  width: 100%;
}
.modal-nuevo-horario-filtros-buscar-fila {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1.25rem;
}
.btn-nuevo-horario-buscar {
  height: 40px;
  padding: 0 1rem;
  box-sizing: border-box;
  background: #1b4332 !important;
  color: #f8faf8 !important;
  border: 1px solid #0f2e22 !important;
  font-weight: 600;
}
.btn-nuevo-horario-buscar:hover {
  background: #2d6a4f !important;
  border-color: #1b4332 !important;
  color: #fff !important;
}
.modal-nuevo-horario-destino-hint {
  display: inline-flex;
  align-items: center;
  width: 100%;
  min-height: 40px;
  padding: 0 0.45rem;
  box-sizing: border-box;
  font-size: 0.8125rem;
  line-height: 1.2;
  color: var(--color-texto);
  background: rgba(27, 67, 50, 0.08);
  border: 1px solid rgba(27, 67, 50, 0.22);
  border-radius: var(--radio);
  min-width: 0;
}
.modal-nuevo-horario-sin-confirmar {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.9rem;
  cursor: pointer;
  margin: 0;
}
.modal-nuevo-horario-sin-confirmar input { cursor: pointer; }
.modal-nuevo-horario-resultados { margin: 1rem 0; }
.modal-nuevo-horario-hint { font-size: 0.9rem; color: var(--color-texto-suave); margin: 0 0 0.5rem 0; }
.modal-nuevo-horario-lista {
  max-height: 320px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-bottom: 1rem;
}
.modal-nuevo-horario-slot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding: 0.6rem 0.75rem;
  background: rgba(117, 69, 22, 0.06);
  border-radius: var(--radio);
  border-left: 3px solid var(--color-primario);
}
.modal-nuevo-horario-slot-info { flex: 1; min-width: 0; }
.modal-nuevo-horario-slot-fecha { font-weight: 600; font-size: 0.95rem; }
.modal-nuevo-horario-slot-detalle { font-size: 0.85rem; color: var(--color-texto-suave); margin-top: 0.2rem; }
.modal-nuevo-horario-slot-badges {
  display: flex;
  gap: 0.35rem;
  flex-wrap: wrap;
}
.modal-nuevo-horario-slot-badge {
  font-size: 0.75rem;
  padding: 0.2rem 0.5rem;
  border-radius: 999px;
  background: rgba(117, 69, 22, 0.15);
  color: var(--color-primario);
}
.modal-nuevo-horario-slot-badge.quincenal { background: rgba(234, 88, 12, 0.2); color: #c2410c; }
.modal-nuevo-horario-slot-acciones { display: flex; gap: 0.35rem; flex-shrink: 0; }
.modal-nuevo-horario-slot-acciones .btn-asignar-puntual-nh {
  font-size: 0.68rem;
  padding: 0.18rem 0.42rem;
  line-height: 1.2;
  background: #bbf7d0 !important;
  color: #14532d !important;
  border: 1px solid #86efac !important;
  font-weight: 600;
}
.modal-nuevo-horario-slot-acciones .btn-asignar-puntual-nh:hover {
  background: #86efac !important;
  border-color: #4ade80 !important;
  color: #052e16 !important;
}
.modal-nuevo-horario-slot-acciones .btn-asignar-semanal,
.modal-nuevo-horario-slot-acciones .btn-asignar-quincenal {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
}
.modal-nuevo-horario-slot-acciones .btn-asignar-semanal {
  background: #166534 !important;
  color: #fff !important;
  border-color: #166534 !important;
}
.modal-nuevo-horario-slot-acciones .btn-asignar-semanal:hover {
  background: #15803d !important;
  border-color: #15803d !important;
  color: #fff !important;
}
.modal-nuevo-horario-slot-acciones .btn-asignar-quincenal {
  background: #c2410c !important;
  color: #fff !important;
  border-color: #c2410c !important;
}
.modal-nuevo-horario-slot-acciones .btn-asignar-quincenal:hover {
  background: #ea580c !important;
  border-color: #ea580c !important;
  color: #fff !important;
}
.btn-cerrar-marron {
  background: #78350f !important;
  color: #fff !important;
  border-color: #78350f !important;
}
.btn-cerrar-marron:hover {
  background: #92400e !important;
  border-color: #92400e !important;
  color: #fff !important;
}
.modal-nuevo-horario-vacio { color: var(--color-texto-suave); margin: 1rem 0; font-style: italic; }
.modal-nuevo-horario-acciones { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid rgba(117,69,22,0.15); }
.modal-aviso-terapeuta-texto { margin-bottom: 1rem; }
.modal-aviso-terapeuta-botones { display: flex; gap: 0.5rem; margin-top: 1rem; flex-wrap: wrap; }

.modal-paralela-fam-texto { margin-bottom: 0.85rem; line-height: 1.45; }
.modal-paralela-fam-opciones {
  border: none;
  margin: 0 0 0.75rem 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.modal-paralela-fam-label { display: flex; align-items: center; gap: 0.45rem; cursor: pointer; font-size: 0.95rem; }
.modal-paralela-fam-hint { margin: 0 0 1rem 0; font-size: 0.8125rem; }
.modal-paralela-fam-acciones { display: flex; gap: 0.5rem; justify-content: flex-end; flex-wrap: wrap; }

.cal-slot-chip-familiar {
  display: inline-block;
  margin-left: 0.28rem;
  padding: 0.06rem 0.35rem;
  font-size: 0.65rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  vertical-align: middle;
  border-radius: 3px;
  background: rgba(90, 60, 120, 0.2);
  color: #3d2a52;
  line-height: 1.2;
}
.cal-lista-chip-familiar {
  display: inline-block;
  margin-left: 0.25rem;
  padding: 0.05rem 0.3rem;
  font-size: 0.62rem;
  font-weight: 600;
  border-radius: 3px;
  background: rgba(90, 60, 120, 0.2);
  color: #3d2a52;
  vertical-align: middle;
}

.cita-cal-asig-chip-familiar {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.08rem 0.4rem;
  font-size: 0.7rem;
  font-weight: 600;
  border-radius: 3px;
  background: rgba(90, 60, 120, 0.18);
  color: #3d2a52;
  vertical-align: middle;
}
.modal-slot-chip-familiar {
  display: inline-block;
  margin-left: 0.25rem;
  padding: 0.05rem 0.3rem;
  font-size: 0.65rem;
  font-weight: 600;
  border-radius: 3px;
  background: rgba(90, 60, 120, 0.2);
  color: #3d2a52;
  vertical-align: middle;
}
.modal-terapeuta-slot-hint { margin-bottom: 0.5rem; }
.modal-terapeuta-slot-acciones { display: flex; gap: 0.5rem; margin-top: 1rem; }
#modal-terapeuta-slot-select { min-width: 200px; padding: 0.4rem 0.5rem; }
.modal-bolsa-pendientes { display: flex; flex-direction: column; gap: 0.75rem; margin-bottom: 1rem; }
.modal-bolsa-pendiente-item { display: flex; flex-direction: column; gap: 0; padding: 0; background: transparent; border-radius: var(--radio); overflow: hidden; }
.modal-bolsa-pendiente-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.5rem;
  flex-wrap: wrap;
  padding: 0.5rem 0.75rem;
  border-radius: var(--radio) var(--radio) 0 0;
}
.modal-bolsa-pendiente-info { display: flex; flex-direction: column; font-size: 0.9rem; }
.modal-bolsa-pendiente-acciones {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.25rem 0.4rem;
  justify-content: flex-end;
  max-width: min(100%, 22rem);
}
/* Detalle bolsa: botones más discretos (no compiten con el contenido) */
.modal-bolsa-detalle .modal-bolsa-pendiente-acciones .btn,
.modal-bolsa-detalle .modal-bolsa-slot-item .btn,
.modal-bolsa-detalle .btn-buscar-slots {
  padding: 0.18rem 0.45rem;
  font-size: 0.72rem;
  line-height: 1.25;
  font-weight: 500;
  border-radius: 4px;
  border-width: 1px;
}
.modal-bolsa-detalle .modal-bolsa-sin-confirmar-check {
  font-size: 0.74rem;
  margin-left: 0 !important;
}
.modal-bolsa-detalle .modal-bolsa-sin-confirmar-check input {
  width: 0.8rem;
  height: 0.8rem;
}
.modal-bolsa-detalle .modal-bolsa-slot-item {
  font-size: 0.82rem;
  padding: 0.28rem 0;
  gap: 0.35rem;
  align-items: center;
}
.modal-bolsa-detalle .modal-bolsa-slot-texto {
  flex: 1;
  min-width: 0;
  line-height: 1.35;
}
.modal-bolsa-detalle .modal-bolsa-slot-acciones-inline {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.2rem 0.35rem;
  flex-shrink: 0;
  justify-content: flex-end;
}
.modal-bolsa-detalle .modal-bolsa-slot-item .modal-bolsa-sin-confirmar-check {
  margin: 0 0.15rem 0 0;
}
.modal-bolsa-pendiente-motivo-notas {
  padding: 0.35rem 0.75rem;
  font-size: 0.85rem;
  color: var(--color-texto-suave, #64748b);
  background: rgba(117, 69, 22, 0.04);
}
.modal-bolsa-motivo { font-weight: 500; color: var(--color-texto, #1e293b); }
.modal-bolsa-notas { font-style: italic; }
.modal-bolsa-buscar-grupo {
  margin: 0;
  padding: 0.5rem 0.75rem;
  background: rgba(117, 69, 22, 0.08);
  border-radius: 0 0 var(--radio) var(--radio);
  border: 1px solid rgba(117, 69, 22, 0.12);
  border-top: none;
}
.modal-bolsa-buscar-fila {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  flex-wrap: wrap;
}
.modal-bolsa-buscar-opciones { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; }
.modal-bolsa-buscar-label { font-size: 0.9rem; font-weight: 500; margin-right: 0.25rem; }
.modal-bolsa-buscar-radios { display: flex; flex-direction: row; gap: 1rem; flex-wrap: wrap; }
.modal-bolsa-buscar-radios label { display: flex; align-items: center; gap: 0.4rem; cursor: pointer; font-size: 0.9rem; }
.modal-bolsa-fecha-dia-fila {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
  margin-top: 0.5rem;
}
.modal-bolsa-fecha-dia-label { display: flex; align-items: center; gap: 0.4rem; cursor: pointer; font-size: 0.9rem; }
.modal-bolsa-fecha-dia-input { font-size: 0.9rem; }
.modal-bolsa-fecha-dia-hint { font-size: 0.8rem; opacity: 0.85; flex: 1 1 100%; }
.btn-buscar-slots {
  background: rgba(34, 197, 94, 0.25) !important;
  color: #15803d !important;
  border-color: rgba(34, 197, 94, 0.4);
}
.btn-buscar-slots:hover {
  background: rgba(34, 197, 94, 0.35) !important;
  color: #166534 !important;
}
.modal-bolsa-checkboxes { display: flex; flex-wrap: wrap; gap: 0.4rem 1rem; margin-bottom: 0.5rem; }
.modal-bolsa-check-item { display: flex; align-items: center; gap: 0.35rem; cursor: pointer; font-size: 0.88rem; }
.modal-bolsa-resultados { margin-top: 0.5rem; max-height: 180px; overflow-y: auto; }
.modal-bolsa-slot-item { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; padding: 0.35rem 0; font-size: 0.9rem; flex-wrap: wrap; }
.modal-bolsa-slot-item .btn { flex-shrink: 0; }
.modal-bolsa-sin-confirmar-check { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.88rem; cursor: pointer; margin: 0 0.25rem 0 0; }
.modal-bolsa-sin-confirmar-check input { width: 1rem; height: 1rem; cursor: pointer; }
.modal-bolsa-cargando, .modal-bolsa-sin-resultados, .modal-bolsa-error { font-size: 0.9rem; color: var(--color-texto-suave); margin: 0.5rem 0; }
.modal-bolsa-footer { display: flex; gap: 0.5rem; justify-content: flex-end; }
.modal-eliminar-opciones { display: flex; flex-direction: column; gap: 0.5rem; margin: 1rem 0; }
.modal-eliminar-opciones .btn-block { width: 100%; text-align: left; }
.cita-cal-reunion-terapeutas {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
}
.cita-cal-reunion-check {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  cursor: pointer;
  font-size: 0.9rem;
}
.cita-cal-reunion-check input[type="checkbox"] {
  width: 1rem;
  height: 1rem;
  cursor: pointer;
}
.cita-cal-terapeuta-fuera-horario {
  opacity: 0.6;
  cursor: not-allowed;
}
.cita-cal-asignaciones { display: flex; flex-direction: column; gap: 0.75rem; }
.cita-cal-hint-quincenal {
  font-size: 0.85rem;
  color: #713f12;
  margin: 0 0 0.5rem 0;
  padding: 0.45rem 0.6rem;
  background: #fef9c3;
  border: 1px solid rgba(234, 179, 8, 0.45);
  border-radius: 4px;
}
.cita-cal-asignacion-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr) minmax(0, 0.9fr) auto auto;
  gap: 0.5rem;
  align-items: end;
}
.cita-cal-asignacion-row:not(:has(.cita-cal-quitar-paciente)):not(:has(.cita-cal-quitar-plaza-bloqueada)) {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr) minmax(0, 0.9fr) auto;
}
.cita-cal-asignacion-row--cdiat {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr) minmax(0, 0.75fr) minmax(0, 0.85fr) auto auto;
}
.cita-cal-asignacion-row--cdiat:not(:has(.cita-cal-quitar-paciente)):not(:has(.cita-cal-quitar-plaza-bloqueada)) {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr) minmax(0, 0.75fr) minmax(0, 0.85fr) auto;
}
.cita-cal-asignacion-row--bloqueo {
  border-left: 3px solid #64748b;
  padding-left: 0.35rem;
  margin-left: -0.15rem;
  background: rgba(100, 116, 139, 0.1);
  border-radius: 4px;
}
.cita-cal-asignacion-row--bloqueo .cita-cal-asig-paciente select {
  font-style: italic;
  color: #475569;
}
.cita-cal-asig-col select { min-width: 0; max-width: 100%; }
.cita-cal-asig-sin-confirmar {
  display: flex;
  flex-direction: column;
  min-width: 6rem;
}
.cita-cal-asig-sin-confirmar > label {
  margin-bottom: 0.2rem;
}
.cita-cal-asig-sin-confirmar .cita-cal-checkbox-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 2.125rem;
  min-height: 2.125rem;
}
.cita-cal-asig-sin-confirmar .cita-cal-checkbox-wrap input[type="checkbox"] {
  width: 1.15rem;
  height: 1.15rem;
  cursor: pointer;
  margin: 0;
  flex-shrink: 0;
}
.cita-cal-asignacion-row label { font-size: 0.8rem; margin-bottom: 0.2rem; margin-top: 0; line-height: 1.2; display: block; }
.cita-cal-asignacion-row select { width: 100%; padding: 0.35rem; border: 1px solid var(--color-borde); border-radius: var(--radio); font-size: 0.9rem; }
.cita-cal-asignacion-acciones {
  display: flex;
  align-items: flex-end;
  justify-content: flex-end;
  padding-bottom: 0.25rem;
  min-width: 36px;
}
.cita-cal-asignacion-acciones .btn-icono-papelera { width: 28px; height: 28px; }
.modal-cita-cal .form-grupo select[id="cita-cal-servicio"] option {
  padding-left: 1.5rem;
}
.form-grupo-inline {
  display: inline-block;
  margin-right: 1rem;
  margin-bottom: 0.5rem;
}

.festivos-lote { margin-top: 0.75rem; }
.festivos-lote-header {
  display: grid;
  grid-template-columns: 130px 150px minmax(100px, 1fr) minmax(240px, 1.4fr) 36px;
  gap: 0.5rem;
  margin-bottom: 0.5rem;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-texto-suave);
}
.festivos-filas { display: flex; flex-direction: column; gap: 0.5rem; margin-bottom: 0.75rem; }
.festivo-fila {
  display: grid;
  grid-template-columns: 130px 150px minmax(100px, 1fr) minmax(240px, 1.4fr) 36px;
  gap: 0.5rem;
  align-items: center;
}
.festivo-col-centros {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.5rem 0.65rem;
  min-width: 0;
}
.festivo-lbl-todos { font-size: 0.78rem; white-space: nowrap; flex-shrink: 0; }
.festivo-checks-centros {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.25rem 0.65rem;
  font-size: 0.78rem;
  flex: 1;
  min-width: 0;
  overflow-x: auto;
  overflow-y: hidden;
  padding-bottom: 2px;
  scrollbar-width: thin;
}
.festivo-checks-centros label { cursor: pointer; }
.festivo-fila input, .festivo-fila select {
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.875rem;
}
.modal-festivo-edit {
  max-width: 32rem;
  padding: 1.25rem 1.5rem;
}
#lista-festivos .btn-editar-festivo {
  background: #ea580c;
  border: 1px solid #c2410c;
  color: #fff;
}
#lista-festivos .btn-editar-festivo:hover:not(:disabled) {
  background: #c2410c;
  border-color: #9a3412;
  color: #fff;
}
.festivo-edit-checks {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.35rem 0.85rem;
  margin: 0.5rem 0 1rem 0;
  font-size: 0.875rem;
  overflow-x: auto;
  min-width: 0;
  padding-bottom: 2px;
  scrollbar-width: thin;
}
.festivo-edit-checks label { cursor: pointer; }
.festivos-importar h4 { margin: 0.5rem 0 0.5rem 0; font-size: 1rem; }
.festivos-lista-contenedor h4 { margin: 0 0 0.5rem 0; font-size: 1rem; }
#lista-festivos { list-style: none; padding: 0; margin: 0; }
#lista-festivos .config-lista-item { display: flex; justify-content: space-between; align-items: center; padding: 0.4rem 0; border-bottom: 1px solid var(--color-borde); }

.config-container-calendario {
  background: #e8f4fd;
  border-color: #2563eb;
}
.config-container-calendario h2,
.config-container-calendario h3 {
  color: #1d4ed8;
}
.config-container-calendario h3 { margin: 1.25rem 0 0.5rem 0; font-size: 1.05rem; }

.colores-calendario-form { margin-bottom: 1.5rem; }
.colores-calendario-fila {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 0.5rem;
}
.colores-calendario-fila label { min-width: 140px; font-weight: 500; }
#btn-guardar-colores-calendario { margin-top: 0.75rem; }

.config-container-backup {
  background: #e8f0fe;
  border-color: #4f46e5;
}
.config-container-backup h2 {
  color: #3730a3;
}
.backup-acciones {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.backup-accion {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.backup-accion .config-hint.backup-hint {
  width: 100%;
  margin: 0.25rem 0 0 0;
}
.backup-archivo-nombre {
  font-size: 0.9rem;
  color: var(--color-texto-suave);
  max-width: 200px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.backup-advertencia {
  color: #b45309 !important;
}
.backup-progreso-contenedor {
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--color-borde);
}
.backup-progreso-contenedor.oculto {
  display: none;
}

.config-container-smtp {
  background: #e0f7f4;
  border-color: #00897b;
}
.config-container-smtp h2 {
  color: #00695c;
}

.logo-upload-area {
  margin-top: 1rem;
}
.logo-upload-area label {
  display: block;
  font-weight: 600;
  margin-bottom: 0.25rem;
}
.logo-upload-controls {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}
.logo-preview {
  max-height: 60px;
  width: auto;
  object-fit: contain;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  padding: 4px;
  background: white;
}

/* Form Centros: Nuevo centro | prefijo | 1 | Añadir en una fila */
.form-centro-inline {
  display: flex;
  gap: 0.5rem;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 1rem;
}

.form-centro-inline .btn-config-primario {
  margin-left: auto;
}

.form-centro-inline input[type="text"] {
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.875rem;
}

.form-centro-inline input[type="text"]:first-of-type {
  flex: 1;
  min-width: 140px;
}

.form-centro-inline input[type="text"]:nth-of-type(2) {
  width: 80px;
}

.form-centro-inline input[type="number"] {
  width: 60px;
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.875rem;
}

/* Botones Guardar/Añadir: mismo estilo primario (verde) */
.btn-config-primario {
  background: var(--color-primario) !important;
  color: white !important;
  border: none !important;
  padding: 0.6rem 1.25rem;
  border-radius: var(--radio);
  font-weight: 500;
  cursor: pointer;
  transition: background var(--transicion);
  font-size: 0.9rem;
}

.btn-config-primario:hover {
  background: var(--color-primario-hover) !important;
  color: white !important;
}

.btn-config-secundario {
  background: #607d8b !important;
  color: white !important;
  border: none !important;
  padding: 0.6rem 1.25rem;
  border-radius: var(--radio);
  cursor: pointer;
}
.btn-config-secundario:hover:not(:disabled) {
  background: #78909c !important;
  color: white !important;
}
.btn-config-secundario:disabled {
  opacity: 0.7;
  cursor: not-allowed;
}

.form-botones-smtp {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
}

/* Config: encabezado y filas de lista */
.config-terapeutas-ocultar-ceses {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin-bottom: 0.5rem;
  font-size: 0.9rem;
  cursor: pointer;
}
.config-lista-header {
  display: grid;
  grid-template-columns: 1fr 140px;
  gap: 0.75rem;
  padding: 0.5rem 0;
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--color-texto-suave);
  border-bottom: 1px solid var(--color-borde);
}

.config-lista-header span:last-child {
  text-align: center;
}
.config-tabla-terapeutas-wrap {
  margin-top: 0.5rem;
}
.config-tabla-terapeutas {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
}
.config-tabla-terapeutas thead tr {
  background: linear-gradient(180deg, #f1f5f9 0%, #e2e8f0 100%);
}
.config-tabla-terapeutas thead th {
  color: #334155;
  border-bottom: 2px solid #94a3b8;
}
.config-tabla-terapeutas th,
.config-tabla-terapeutas td {
  padding: 0.6rem 0.75rem;
  border-bottom: 1px solid var(--color-borde);
  font-size: 0.875rem;
  vertical-align: middle;
}
.config-tabla-terapeutas th {
  text-align: left;
  font-weight: 600;
  font-size: 0.875rem;
}
.config-tabla-terapeutas th:nth-child(2),
.config-tabla-terapeutas th:nth-child(3),
.config-tabla-terapeutas th:nth-child(4),
.config-tabla-terapeutas th:nth-child(5),
.config-tabla-terapeutas th:nth-child(6),
.config-tabla-terapeutas th:nth-child(7),
.config-tabla-terapeutas td:nth-child(2),
.config-tabla-terapeutas td:nth-child(3),
.config-tabla-terapeutas td:nth-child(4),
.config-tabla-terapeutas td:nth-child(5),
.config-tabla-terapeutas td:nth-child(7) {
  text-align: center;
}
.config-tabla-terapeutas td:nth-child(6) {
  text-align: left;
}
.config-tabla-terapeutas th:nth-child(1) { width: 22%; }
.config-tabla-terapeutas th:nth-child(2) { width: 12%; }
.config-tabla-terapeutas th:nth-child(3) { width: 11%; }
.config-tabla-terapeutas th:nth-child(4) { width: 8%; }
.config-tabla-terapeutas th:nth-child(5) { width: 8%; }
.config-tabla-terapeutas th:nth-child(6) { width: 22%; }
.config-tabla-terapeutas th:nth-child(7) { width: 17%; }
.config-tabla-terapeuta-nombre {
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.config-tabla-terapeutas tr:hover {
  background: rgba(255, 255, 255, 0.4);
}
.config-tabla-terapeutas .config-lista-acciones {
  display: flex;
  gap: 0.5rem;
  justify-content: center;
  align-items: center;
}

/* Alta guiada / asistente — verde bosque */
.btn.btn-alta-guiada-bosque {
  background: linear-gradient(180deg, #2f6f4f 0%, #1b4332 100%);
  color: #ecfdf5;
  border: 1px solid #0f2d1f;
  font-weight: 600;
}
.btn.btn-alta-guiada-bosque:hover {
  background: linear-gradient(180deg, #276246 0%, #143728 100%);
  color: #fff;
  border-color: #0a1f14;
}
.btn.btn-alta-guiada-bosque:focus-visible {
  outline: 2px solid #40916c;
  outline-offset: 2px;
}

/* Equipo y accesos: bloque crema/marrón suave + cabeceras de tabla legibles */
.config-container-equipo.config-container {
  background: linear-gradient(180deg, #fffbf5 0%, #faf3e9 100%);
  border-left-color: #92400e;
}
.config-container-equipo.config-container > h2 {
  color: #422006;
}
.config-container-equipo .config-tabla-terapeutas thead tr {
  background: linear-gradient(180deg, #78350f 0%, #5c280d 100%);
}
.config-container-equipo .config-tabla-terapeutas thead th {
  color: #fffbeb;
  border-bottom: 2px solid #431407;
}
.equipo-col-usuario {
  font-size: 0.82rem;
  line-height: 1.35;
}
.equipo-col-usuario-texto {
  word-break: break-word;
}
.equipo-sin-usuario {
  color: #64748b;
}
.equipo-usuarios-sin-terapeuta {
  margin-top: 1.75rem;
  padding-top: 1.25rem;
  border-top: 1px solid rgba(92, 40, 13, 0.2);
}
.equipo-usuarios-sin-terapeuta .equipo-huerfanos-titulo {
  font-size: 1.05rem;
  margin: 0 0 0.35rem 0;
  color: #422006;
}
#lista-servicios,
#lista-terapeutas {
  list-style: none;
  padding: 0;
  margin: 0;
}

.config-lista-item {
  display: grid;
  grid-template-columns: 1fr 140px;
  gap: 0.75rem;
  align-items: center;
  padding: 0.65rem 0;
  border-bottom: 1px solid var(--color-borde);
  min-height: 44px;
}

.config-lista-item:last-child {
  border-bottom: none;
}

.config-lista-item:hover {
  background: rgba(255, 255, 255, 0.4);
}

.config-lista-contenido {
  min-width: 0;
}

.config-lista-acciones {
  display: flex;
  gap: 0.5rem;
  justify-content: center;
  align-items: center;
}

.config-lista-acciones .btn-small {
  padding: 0.35rem 0.65rem;
  font-size: 0.8rem;
}

.config-lista-mensaje {
  padding: 0.85rem 0;
  color: var(--color-texto-suave);
  font-style: italic;
}

@media (max-width: 800px) {
  .config-layout-grid {
    grid-template-columns: 1fr;
  }
  .config-lista-header,
  .config-lista-item,
  #usuarios #lista-usuarios li.config-lista-item {
    grid-template-columns: 1fr 120px;
  }
  .config-tabla-terapeutas th:nth-child(1) { width: 20%; }
  .config-tabla-terapeutas th:nth-child(2),
  .config-tabla-terapeutas th:nth-child(3) { width: 11%; }
  .config-tabla-terapeutas th:nth-child(4),
  .config-tabla-terapeutas th:nth-child(5) { width: 8%; }
  .config-tabla-terapeutas th:nth-child(6) { width: 24%; }
  .config-tabla-terapeutas th:nth-child(7) { width: 18%; }
}

.form-servicio,
.form-terapeuta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  margin-bottom: 1rem;
}

.form-servicio input[type="text"],
.form-servicio input[type="number"],
.form-terapeuta input[type="text"] {
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.875rem;
  min-width: 0;
}

.form-servicio input[type="text"]:first-of-type { flex: 1; min-width: 80px; }
.form-servicio input[type="number"] { flex: 0 0 80px; }
.form-servicio input[type="text"]:nth-of-type(3) { flex: 1; min-width: 80px; }
.form-servicio .form-color-inline input[type="color"] { width: 2rem; height: 1.6rem; padding: 2px; }
.form-servicio .form-color-inline input[type="text"] { width: 5rem; font-family: monospace; }
.form-servicio .btn-config-primario { margin-left: auto; }

.form-terapeuta input[type="text"] { flex: 0 1 1080px; min-width: 540px; max-width: 1200px; }
.form-terapeuta .btn-config-primario { margin-left: auto; }

.config-seccion h2 {
  margin: 0 0 1rem 0;
  font-size: 1.15rem;
  font-weight: 600;
  color: var(--color-primario);
}

.config-hint {
  margin: 0.5rem 0 0 0;
  font-size: 0.85rem;
  color: var(--color-texto-suave);
}

/* Debug */
.debug-wrapper {
  max-width: 600px;
}
.debug-seccion {
  padding: 1.5rem 0;
  border-bottom: 1px solid var(--color-borde);
}
.debug-seccion:last-child {
  border-bottom: none;
}
.debug-seccion h3 {
  margin: 0 0 0.75rem 0;
  font-size: 1rem;
}
.debug-importar-resultado {
  margin-top: 0.75rem;
  padding: 0.75rem;
  background: rgba(117, 69, 22, 0.06);
  border-radius: var(--radio);
  font-size: 0.9rem;
}
.debug-importar-resultado details {
  margin-top: 0.5rem;
}
.debug-omitidos-lista {
  margin: 0.5rem 0 0 1rem;
  padding-left: 1rem;
  max-height: 200px;
  overflow-y: auto;
}
.debug-seccion-peligro {
  background: #fef2f2;
  padding: 1.5rem;
  border-radius: var(--radio);
  border: 1px solid #fecaca;
}

.debug-pestanas-grid {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.debug-pestanas-item,
.debug-pestanas-subitem {
  margin: 0.15rem 0;
}

/* ── Importación V2 ─────────────────────────────────────────── */
#seccion-importacion-v2 {
  background: #f0f7ff;
  border: 1px solid #bfdbfe;
  border-radius: var(--radio);
  padding: 1.25rem 1.5rem;
}
#seccion-importacion-v2 > h3 {
  font-size: 1.05rem;
  margin-bottom: 0.4rem;
}
.debug-v2-paso {
  background: #fff;
  border: 1px solid #dbeafe;
  border-radius: var(--radio);
  padding: 1rem 1.25rem;
  margin-top: 0.9rem;
}
.debug-v2-paso-titulo {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  margin-bottom: 0.35rem;
  flex-wrap: wrap;
}
.debug-v2-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.6rem;
  height: 1.6rem;
  border-radius: 50%;
  background: var(--color-primario, #1e40af);
  color: #fff;
  font-size: 0.78rem;
  font-weight: 700;
  flex-shrink: 0;
}
.debug-v2-archivo {
  font-family: monospace;
  font-size: 0.8rem;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 4px;
  padding: 0 0.4rem;
  color: #1e40af;
}
.debug-v2-badge {
  font-size: 0.72rem;
  background: #fef3c7;
  border: 1px solid #fcd34d;
  color: #92400e;
  border-radius: 10px;
  padding: 0.1rem 0.5rem;
  font-weight: 600;
}
.debug-v2-badge-opt {
  background: #f0fdf4;
  border-color: #86efac;
  color: #166534;
}
.debug-v2-check {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.85rem;
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
.debug-v2-resultado {
  margin-top: 0.6rem;
  font-size: 0.875rem;
  min-height: 1.4rem;
}
.debug-v2-resultado.ok    { color: #166534; }
.debug-v2-resultado.error { color: #b91c1c; }
.debug-v2-resultado.dry   { color: #1d4ed8; }
.debug-v2-detalle {
  margin-top: 0.4rem;
  background: #f8faff;
  border: 1px solid #dbeafe;
  border-radius: 4px;
  padding: 0.5rem 0.75rem;
  font-size: 0.82rem;
}
.debug-advertencia {
  color: #b91c1c;
  font-weight: 500;
  margin-bottom: 1rem;
}

.form-inline {
  display: flex;
  gap: 0.75rem;
  margin-bottom: 1rem;
  flex-wrap: wrap;
  align-items: center;
}

.form-inline input[type="text"],
.form-inline input[type="number"],
.form-inline input[type="email"] {
  padding: 0.6rem 0.9rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.95rem;
}

.form-inline label {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.9rem;
  cursor: pointer;
}

.form-inline input[type="checkbox"] {
  width: 18px;
  height: 18px;
}

/* Debug TE histórico: evitar que flex encoja los numéricos (año/mes) */
.debug-te-hist-input-anio {
  min-width: 6.25rem;
  width: 6.75rem;
  max-width: none;
  flex-shrink: 0;
  box-sizing: border-box;
  font-size: 0.9rem;
}
.debug-te-hist-input-mes {
  min-width: 3.4rem;
  width: 3.75rem;
  max-width: none;
  flex-shrink: 0;
  box-sizing: border-box;
  font-size: 0.9rem;
}

.btn-small {
  padding: 0.25rem 0.5rem;
  font-size: 0.8rem;
}

#lista-terapeutas li:not(.config-lista-item):not(.config-lista-mensaje),
#lista-servicios li:not(.config-lista-item):not(.config-lista-mensaje) {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* ===== Mensajes (toast visible encima de modales) ===== */
.mensaje {
  position: fixed;
  top: 1rem;
  left: 50%;
  transform: translateX(-50%);
  padding: 0.9rem 1.5rem;
  border-radius: var(--radio);
  font-size: 0.95rem;
  font-weight: 500;
  z-index: 1100;
  box-shadow: var(--sombra-lg);
  transition: opacity var(--transicion);
}

.mensaje.ok {
  background: #ecfdf5;
  color: #065f46;
  border: 1px solid #a7f3d0;
}

.mensaje.error {
  background: #fef2f2;
  color: #991b1b;
  border: 1px solid #fecaca;
}

.mensaje.oculto { display: none; }

/* ===== Modal ===== */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.5);
  backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  padding: 1.5rem;
  animation: fadeIn 0.2s ease;
}

.modal-overlay.oculto { display: none; }

/* Facturación ASO: modales alineados con .modal-contenido (cabecera, cuerpo, pie) */
.modal-ge-faso {
  max-width: min(32rem, 96vw);
  width: 100%;
  padding: 0;
  overflow: hidden;
  background: var(--color-card, #ffffff);
  color: var(--color-texto, #1f2937);
}

.modal-ge-faso-dona-detalle-box {
  max-width: min(44rem, 96vw) !important;
}

.modal-ge-faso .modal-header {
  padding: 0.85rem 1rem 0.85rem 1.25rem;
  background: linear-gradient(135deg, rgba(117, 69, 22, 0.06) 0%, transparent 100%);
  border-bottom: 1px solid rgba(117, 69, 22, 0.15);
}

.modal-ge-faso .modal-header h2 {
  margin: 0;
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--color-primario, #754516);
}

.modal-ge-faso-subtitle {
  display: block;
  margin: 0.35rem 0 0 0;
  font-size: 0.85rem;
}

.modal-ge-faso-header-text {
  min-width: 0;
  flex: 1;
  padding-right: 0.5rem;
}

.modal-ge-faso .modal-body {
  padding: 1rem 1.25rem 0.25rem;
  max-height: min(65vh, 480px);
  overflow-y: auto;
}

.modal-ge-faso .modal-grupo-ge-faso {
  background: rgba(117, 69, 22, 0.04);
  border: 1px solid rgba(117, 69, 22, 0.12);
  border-left: 4px solid var(--color-primario, #754516);
  border-radius: var(--radio-lg, 10px);
  padding: 0.65rem 0.85rem 0.85rem;
  margin-bottom: 0.75rem;
}

.modal-ge-faso .modal-grupo-ge-faso h3 {
  margin: 0 0 0.5rem 0;
  font-size: 0.92rem;
  font-weight: 600;
  color: var(--color-primario, #754516);
  border-bottom: 1px solid rgba(117, 69, 22, 0.15);
  padding-bottom: 0.35rem;
}

.modal-ge-faso .modal-grupo-ge-faso .form-group:last-child {
  margin-bottom: 0;
}

/* Inputs como el resto de modales (evita borde negro / cantos cuadrados por falta de #gastos-empresa) */
.modal-ge-faso .form-control,
.modal-ge-faso textarea.form-control {
  width: 100%;
  box-sizing: border-box;
  min-height: 2.25rem;
  padding: 0.45rem 0.65rem;
  border: 1px solid var(--color-borde, #e2e8f0);
  border-radius: var(--radio, 6px);
  background: var(--color-card, #fff);
  font-size: 0.9rem;
  color: var(--color-texto, #1f2937);
  font-family: inherit;
  transition: border-color var(--transicion, 0.15s ease), box-shadow 0.15s ease;
}

.modal-ge-faso .form-control:focus {
  outline: none;
  border-color: var(--color-primario, #754516);
  box-shadow: 0 0 0 2px rgba(117, 69, 22, 0.12);
}

.modal-ge-faso input[type="date"].form-control {
  min-height: 2.25rem;
  appearance: auto;
}

.modal-ge-faso .form-acciones.modal-ge-faso-footer {
  margin-top: 0;
  padding: 0.85rem 1.25rem 1.1rem;
  border-top: 1px solid var(--color-borde, #e5e7eb);
}

.modal-ge-faso-footer--split {
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.ge-faso-cdiat-resumen {
  margin: 0 0 0.5rem 0;
  font-size: 0.88rem;
}

.ge-faso-cdiat-pagos-wrap {
  margin-bottom: 0.65rem;
  border: 1px solid rgba(117, 69, 22, 0.12);
  border-radius: var(--radio, 6px);
  max-height: min(28vh, 200px);
  overflow: auto;
}

.ge-faso-cdiat-pagos-tabla {
  margin: 0;
  font-size: 0.82rem;
  width: 100%;
  border-collapse: collapse;
}

/* Tablas dentro de modales GE-FASO (no heredan #gastos-empresa) */
.modal-ge-faso .tabla-gastos-empresa thead th {
  background: var(--color-primario, #754516);
  color: #fff;
  padding: 0.45rem 0.6rem;
  font-size: 0.78rem;
  font-weight: 600;
  text-align: left;
  border: none;
}

.modal-ge-faso .tabla-gastos-empresa thead th.col-num {
  text-align: right;
}

.modal-ge-faso .tabla-gastos-empresa tbody td {
  padding: 0.45rem 0.6rem;
  border-bottom: 1px solid var(--color-borde, #e5e7eb);
  vertical-align: middle;
}

.modal-ge-faso .tabla-gastos-empresa tbody tr:last-child td {
  border-bottom: none;
}

.modal-ge-faso .tabla-gastos-empresa .col-acciones {
  text-align: right;
  width: 1%;
  white-space: nowrap;
}

.modal-ge-faso .ge-faso-cdiat-pago-del.btn-icono-papelera {
  width: 28px;
  height: 28px;
  min-width: 28px;
  border-radius: var(--radio, 6px);
}

.modal-ge-faso .ge-faso-cdiat-pago-del.btn-icono-papelera::before {
  width: 14px;
  height: 14px;
}

.modal-ge-faso .ge-dona-detalle-del.btn-icono-papelera {
  width: 28px;
  height: 28px;
  min-width: 28px;
  border-radius: var(--radio, 6px);
}

.modal-ge-faso .ge-dona-detalle-del.btn-icono-papelera::before {
  width: 14px;
  height: 14px;
}

.ge-faso-cdiat-anadir {
  margin-top: 0.35rem;
  padding-top: 0.65rem;
  border-top: 1px dashed rgba(117, 69, 22, 0.2);
}

.ge-faso-cdiat-anadir-label {
  display: block;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--color-texto-suave, #57534e);
  margin-bottom: 0.45rem;
}

.ge-faso-cdiat-anadir-fila {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.65rem;
}

.ge-faso-cdiat-anadir-campo {
  flex: 1 1 7rem;
  min-width: 0;
  margin-bottom: 0;
}

.ge-faso-btn-anadir-pago {
  flex: 0 0 auto;
  margin-bottom: 0.15rem;
}

#modal-ge-faso-mes.modal-overlay,
#modal-ge-faso-dona.modal-overlay {
  z-index: 1100;
}

#modal-ge-faso-dona-detalle.modal-overlay {
  z-index: 1150;
}

#modal-ge-faso-dona-detalle .ge-faso-dona-detalle-wrap {
  max-height: min(48vh, 380px);
  overflow: auto;
  margin: 0.5rem 0 0.75rem;
  border: 1px solid var(--color-borde, #e5e7eb);
  border-radius: var(--radio, 6px);
}

#modal-ge-faso-dona-detalle .ge-faso-dona-detalle-wrap table {
  margin: 0;
}

#gastos-empresa .ge-faso-dona-resumen {
  position: relative;
  width: 100%;
  box-sizing: border-box;
  min-height: 2.85rem;
}

/* Importe centrado bajo el encabezado; el + va aparte para no desplazar el centro */
#gastos-empresa .ge-don-centro {
  display: flex;
  width: 100%;
  min-height: 2.85rem;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}

#gastos-empresa .ge-don-importe-btn {
  flex: 0 1 auto;
  max-width: 100%;
  margin: 0;
  padding: 0.2rem 0.15rem;
  border: none;
  border-radius: 6px;
  background: transparent;
  cursor: pointer;
  font: inherit;
  color: inherit;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.2rem;
}

#gastos-empresa .ge-don-importe-btn .ge-faso-pend,
#gastos-empresa .ge-don-importe-btn .ge-faso-mini {
  width: 100%;
  text-align: center;
}

#gastos-empresa .ge-don-importe-btn:hover {
  background: rgba(25, 118, 210, 0.08);
}

#gastos-empresa .ge-don-importe-btn:focus-visible {
  outline: 2px solid var(--color-primario, #2563eb);
  outline-offset: 1px;
}

#gastos-empresa .ge-don-btn-add-ico {
  position: absolute;
  right: 0.05rem;
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  width: 1.4rem;
  height: 1.4rem;
  margin: 0;
  padding: 0;
  line-height: 1;
  font-size: 1.05rem;
  font-weight: 600;
  border-radius: 4px;
  border: 1px solid var(--color-borde, #e5e7eb);
  background: var(--color-card, #fff);
  color: var(--color-primario, #1d4ed8);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

#gastos-empresa .ge-don-btn-add-ico:hover {
  background: rgba(25, 118, 210, 0.1);
  border-color: rgba(25, 118, 210, 0.45);
}

#gastos-empresa .ge-don-btn-add-ico:focus-visible {
  outline: 2px solid var(--color-primario, #2563eb);
  outline-offset: 1px;
}

#gastos-empresa .ge-don-total-solo {
  font-variant-numeric: tabular-nums;
}

/* Modal fecha presupuesto: encima del modal de tratamientos */
#modal-fecha-presupuesto { z-index: 1100; }
/* Terapia específica: panel TE z-index 1100; buscar hueco encima */
#modal-te-buscar-hueco { z-index: 1200; }
/* CDIAT: disponibilidad encima del modal de edición de tratamientos */
#modal-cdiat-disponibilidad.modal-overlay { z-index: 1200; }
/* CDIAT: alcance modalidad encima del modal de cita del calendario */
#modal-cdiat-alcance-modalidad.modal-overlay { z-index: 10050; }

/* Modal Buscar hueco TE: lista con cebreado y botón Asignar */
#modal-te-buscar-hueco .modal-te-bh-resultados-lista {
  margin-top: 0.75rem;
  max-height: min(50vh, 320px);
  overflow: auto;
  border: 1px solid rgba(15, 23, 42, 0.12);
  border-radius: var(--radio, 6px);
}
#modal-te-buscar-hueco .modal-te-bh-slot-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin: 0;
  padding: 0.4rem 0.55rem;
  border-radius: 0;
}
#modal-te-buscar-hueco .modal-te-bh-slot-row:nth-child(odd) {
  background: #f8fafc;
}
#modal-te-buscar-hueco .modal-te-bh-slot-row:nth-child(even) {
  background: #eef2f7;
}
#modal-te-buscar-hueco .modal-te-bh-slot-texto {
  flex: 1;
  min-width: 0;
  font-size: 0.9rem;
  line-height: 1.35;
}
#modal-te-buscar-hueco .btn-te-bh-asignar {
  flex-shrink: 0;
  height: 30px;
  min-height: 30px;
  line-height: 1;
  padding: 0 0.65rem;
  box-sizing: border-box;
  background: #1b4d3e;
  border: 1px solid #163d32;
  color: #fff;
  font-weight: 600;
  border-radius: var(--radio, 6px);
}
#modal-te-buscar-hueco .btn-te-bh-asignar:hover {
  background: #163d32;
  border-color: #122f27;
  color: #fff;
}
#modal-te-buscar-hueco .modal-te-bh-asignacion-ayuda {
  margin: 0.35rem 0 0;
  font-size: 0.8rem;
  line-height: 1.4;
  color: #475569;
}
.oculto { display: none !important; }

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.modal-contenido {
  background: var(--color-card);
  border-radius: var(--radio-lg);
  box-shadow: var(--sombra-lg);
  max-width: 720px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  animation: slideUp 0.25s ease;
}

/* Diálogo compacto confirmar alta (Tratamientos): sin barras por max-height ni márgenes negativos del pie paciente */
.modal-contenido.modal-confirm-alta-facturacion {
  max-width: min(26rem, 92vw);
  max-height: none;
  overflow: visible;
  box-sizing: border-box;
}
.modal-contenido.modal-confirm-alta-facturacion .modal-header {
  padding: 0.85rem 1rem 0.85rem 1.15rem;
}
.modal-contenido.modal-confirm-alta-facturacion .modal-header h2 {
  font-size: 1.05rem;
}
.modal-contenido.modal-confirm-alta-facturacion .modal-body {
  padding: 0.85rem 1.15rem 0.35rem;
  overflow: visible;
}
.modal-contenido.modal-confirm-alta-facturacion .modal-body p {
  margin: 0 0 0.65rem 0;
  max-width: 100%;
  word-wrap: break-word;
  overflow-wrap: break-word;
}
.modal-contenido.modal-confirm-alta-facturacion .modal-body p:last-child {
  margin-bottom: 0;
}
.modal-contenido.modal-confirm-alta-facturacion .form-acciones {
  margin-top: 0;
  padding: 0.75rem 1.15rem 1rem;
  border-top: 1px solid var(--color-borde);
}

.modal-contenido.modal-eliminados-pacientes {
  max-width: min(96vw, 1100px);
  width: 100%;
}
.modal-eliminados-tabla-wrap {
  overflow: auto;
  max-height: min(70vh, 560px);
  border: 1px solid rgba(117, 69, 22, 0.15);
  border-radius: var(--radio);
}
.modal-eliminados-tabla {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.82rem;
}
.modal-eliminados-tabla th,
.modal-eliminados-tabla td {
  padding: 0.45rem 0.5rem;
  border-bottom: 1px solid rgba(117, 69, 22, 0.1);
  text-align: left;
  vertical-align: top;
}
.modal-eliminados-tabla th {
  background: rgba(117, 69, 22, 0.08);
  font-weight: 600;
  position: sticky;
  top: 0;
  z-index: 1;
}
.modal-eliminados-detalle {
  max-width: 240px;
  word-break: break-word;
}
.modal-eliminados-nombre {
  font-weight: 500;
  max-width: 160px;
  word-break: break-word;
}
.modal-eliminados-fecha { white-space: nowrap; }
.modal-eliminados-accion { white-space: nowrap; }

.modal-contenido.modal-resumen-jornada {
  max-width: min(92vw, 300px);
  width: auto;
  min-width: 260px;
}
.modal-contenido.modal-resumen-jornada .modal-header {
  padding: 0.65rem 1rem;
}
.modal-contenido.modal-resumen-jornada .modal-header h2 {
  font-size: 1.05rem;
}
.modal-contenido.modal-resumen-jornada .modal-body {
  padding: 0.75rem 1rem 0.5rem;
}
.modal-contenido.modal-resumen-jornada .form-acciones {
  justify-content: center;
  margin-top: 0;
  padding: 0.75rem 1rem 1rem;
  border-top: 1px solid var(--color-borde);
}
.modal-contenido.modal-resumen-jornada .form-acciones .btn {
  min-width: 7.5rem;
}

@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1.25rem 1.5rem;
  border-bottom: 1px solid var(--color-borde);
  background: var(--color-fondo);
  border-radius: var(--radio-lg) var(--radio-lg) 0 0;
}

.modal-header h2 {
  margin: 0;
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--color-texto);
}

.modal-cerrar {
  width: 36px;
  height: 36px;
  border: none;
  background: transparent;
  font-size: 1.5rem;
  line-height: 1;
  color: var(--color-texto-suave);
  cursor: pointer;
  border-radius: var(--radio);
  transition: all var(--transicion);
}

.modal-cerrar:hover {
  background: var(--color-borde);
  color: var(--color-texto);
}

/* ===== Formulario paciente ===== */
.form-paciente {
  padding: 1.5rem;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem 1.25rem;
}

.form-grupo {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.form-grupo-ancho {
  grid-column: 1 / -1;
}

.form-grupo-fila {
  grid-column: span 1;
}

.form-grupo label {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-texto);
}

.form-grupo input,
.form-grupo select,
.form-grupo textarea {
  padding: 0.6rem 0.85rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.95rem;
  font-family: inherit;
  transition: border-color var(--transicion), box-shadow var(--transicion);
}

.form-grupo input:focus,
.form-grupo select:focus,
.form-grupo textarea:focus {
  outline: none;
  border-color: var(--color-primario);
  box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.12);
}

.form-grupo textarea {
  resize: vertical;
  min-height: 80px;
}

.form-color-wrap {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.form-color-wrap input[type="color"] {
  width: 2.5rem;
  height: 2rem;
  padding: 2px;
  cursor: pointer;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
}
.form-color-wrap input[type="text"] {
  width: 6rem;
  font-family: monospace;
}
.form-color-inline {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}
.form-color-inline label { margin: 0; font-weight: normal; }

.form-acciones {
  display: flex;
  justify-content: flex-end;
  gap: 0.75rem;
  margin-top: 1.5rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--color-borde);
}

.modal-paciente-footer {
  background: #fff;
  padding: 1rem 1.5rem;
  margin: 0 -1.5rem -1rem;
  border-top: 1px solid #e2e8f0;
}

.form-acciones-paciente {
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.form-acciones-paciente .btn-copiar-valoracion {
  margin-right: auto;
}

/* Botones deshabilitados: gris (todos, incluido Copiar a valoración cuando ya está copiado) */
.form-acciones-paciente .btn:disabled,
.form-acciones-paciente .btn.btn-disabled {
  background: #e2e8f0 !important;
  color: #94a3b8 !important;
  border-color: #cbd5e1 !important;
  cursor: not-allowed;
}

.btn-copiar-valoracion {
  background: #93c5fd;
  color: #1e40af;
  border: 1px solid #60a5fa;
}

.btn-copiar-valoracion:hover:not(:disabled) {
  background: #60a5fa;
  color: #1e3a8a;
  border-color: #3b82f6;
}

/* Botón Copiar a valoración cuando ya está copiado: gris como el resto de deshabilitados */
.form-acciones-paciente .btn-copiar-valoracion.btn-copiado,
.form-acciones-paciente .btn-copiar-valoracion:disabled.btn-copiado {
  background: #e2e8f0 !important;
  color: #94a3b8 !important;
  border-color: #cbd5e1 !important;
  cursor: not-allowed;
}

/* Botones Buscar INFO / Entrevista: más pequeños, en barra inferior */
.btn-buscar-disp {
  padding: 0.35rem 0.6rem;
  font-size: 0.8rem;
  font-weight: 500;
}

.btn-buscar-disp-info {
  background: #d4a017;
  color: #1a1a1a;
  border: 1px solid #c4920f;
}

.btn-buscar-disp-info:hover:not(:disabled) {
  background: #e0ad2a;
  border-color: #d4a017;
}

.btn-buscar-disp-entrevista {
  background: #bbf7d0;
  color: #166534;
  border: 1px solid #86efac;
}

.btn-buscar-disp-entrevista:hover:not(:disabled) {
  background: #86efac;
  border-color: #4ade80;
}

.btn {
  padding: 0.6rem 1.25rem;
  border-radius: var(--radio);
  font-size: 0.95rem;
  font-weight: 500;
  cursor: pointer;
  transition: all var(--transicion);
}

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

.btn-primario:hover {
  background: var(--color-primario-hover);
}

.btn-secundario {
  background: var(--color-card);
  color: var(--color-texto);
  border: 1px solid var(--color-borde);
}

.btn-secundario:hover {
  background: var(--color-fondo);
  border-color: var(--color-secundario);
}

.btn-secundario:disabled,
.btn-danger:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.btn-danger {
  background: #dc2626;
  color: white;
  border: none;
}

.btn-danger:hover:not(:disabled) {
  background: #b91c1c;
}

/* Barra de acciones (selección) */
.barra-acciones {
  display: flex;
  gap: 0.75rem;
  margin-bottom: 1rem;
  flex-wrap: wrap;
}

.col-check {
  width: 36px;
  text-align: center;
}

.col-check input[type="checkbox"],
.col-check-display,
.input-pausa-inline {
  width: 16px;
  height: 16px;
  cursor: pointer;
  margin: 0;
  vertical-align: middle;
}

/* Modal Agenda / Tratamientos */
.info-paciente {
  padding: 0.75rem 1rem;
  background: var(--color-fondo);
  border-radius: var(--radio);
  margin-bottom: 1rem;
  font-weight: 500;
}

.tratamientos-asignar {
  display: flex;
  gap: 0.75rem;
  align-items: center;
  margin-bottom: 1rem;
  flex-wrap: wrap;
}

.tratamientos-asignar select {
  flex: 1;
  min-width: 180px;
  padding: 0.6rem 0.85rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.95rem;
}

#lista-tratamientos-paciente {
  list-style: none;
  padding: 0;
  margin: 0 0 1rem 0;
}

#lista-tratamientos-paciente li {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.6rem 1rem;
  border-bottom: 1px solid var(--color-borde);
}

#lista-tratamientos-paciente li.sin-tratamientos {
  color: var(--color-texto-suave);
  font-style: italic;
}

/* ===== Modales con grupos (Agenda, Tratamientos) ===== */
.modal-ancho {
  max-width: min(95vw, 560px);
  width: 100%;
  overflow-x: hidden;
}

/* Modal usuario: ancho compacto y márgenes internos */
.modal-usuario {
  max-width: min(95vw, 420px);
  width: 100%;
}

.modal-usuario .modal-header {
  padding: 1rem 1.5rem;
}

.modal-usuario form {
  padding: 1.5rem 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.modal-usuario .form-grupo {
  margin: 0;
}

.modal-usuario .form-acciones {
  margin-top: 0.5rem;
  padding-top: 1.25rem;
}

.modal-centro-ancho.modal-usuario {
  max-width: min(95vw, 520px);
}

.modal-centro-ancho .modal-body {
  max-height: min(78vh, 640px);
  overflow-y: auto;
}

.textarea-plantilla-correo {
  width: 100%;
  font-family: ui-monospace, Consolas, monospace;
  font-size: 0.85rem;
  line-height: 1.4;
}

.centro-logo-correo-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 0.75rem 1rem;
}

.centro-logo-correo-preview {
  max-width: 220px;
  max-height: 100px;
  width: auto;
  height: auto;
  object-fit: contain;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  padding: 4px;
  background: #fff;
}

.centro-logo-correo-botones {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  align-items: flex-start;
}

.modal-usuario #usuario-permisos-grupo > div {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 1.5rem;
  margin-top: 0.5rem;
}

/* Modal Paciente: layout similar a valoración/tratamientos */
.modal-paciente-ancho {
  max-width: min(95vw, 950px);
  width: 100%;
  overflow-x: hidden;
}

.modal-cita-compacto {
  max-width: 360px;
  width: 100%;
}

.modal-cita-compacto .modal-body {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.modal-cita-checkbox label {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  cursor: pointer;
  font-weight: 500;
}

.modal-cita-checkbox input[type="checkbox"] {
  width: 1.1rem;
  height: 1.1rem;
  cursor: pointer;
}

.modal-cita-botones {
  margin-top: 0.5rem;
}

.modal-cita-botones .btn {
  width: 100%;
  padding: 0.5rem 1rem;
}

/* Enfasis mismo color que el container (fondo). Embellecedor: línea vertical izquierda con color de sección */
#form-paciente .modal-grupo-paciente-principal,
.modal-paciente .modal-grupo-paciente-principal {
  background: #e8f4f0;
  border-color: #5a9a7a;
  border-left: 4px solid #5a9a7a !important;
}

.modal-grupo-paciente-principal h3 {
  color: #5a9a7a;
  border-color: #5a9a7a;
}

#form-paciente .modal-grupo-paciente-consulta,
.modal-paciente .modal-grupo-paciente-consulta {
  background: #fff5e0;
  border-color: #d4a84b;
  border-left: 4px solid #d4a84b !important;
}

.modal-grupo-paciente-consulta h3 {
  color: #d4a84b;
  border-color: #d4a84b;
}

/* Datos clínicos CDIAT: mismo acento que «Datos de consulta» (amarillo suave) */
#form-paciente .modal-grupo-e2-cdiat,
.modal-paciente .modal-grupo-e2-cdiat {
  background: #fff5e0;
  border-color: #d4a84b;
  border-left: 4px solid #d4a84b !important;
}

.modal-grupo-e2-cdiat h3 {
  color: #d4a84b;
  border-color: #d4a84b;
}

#form-paciente .modal-grupo-e2-cdiat .form-grupo label,
.modal-paciente .modal-grupo-e2-cdiat .form-grupo label {
  color: #a67c3a !important;
}

#form-paciente .modal-grupo-e2-cdiat .modal-hint-e2-cdiat,
.modal-paciente .modal-grupo-e2-cdiat .modal-hint-e2-cdiat {
  color: #8a6b2f;
  margin-top: 0;
  margin-bottom: 0.75rem;
}

#form-paciente .modal-grupo-paciente-estado,
.modal-paciente .modal-grupo-paciente-estado {
  background: #e8ecf0;
  border-color: #7c8a9e;
  border-left: 4px solid #7c8a9e !important;
}

.modal-grupo-paciente-estado h3 {
  color: #7c8a9e;
  border-color: #7c8a9e;
}

/* Bloque Datos familiares (azul) */
#form-paciente .modal-grupo-paciente-familiares,
.modal-paciente .modal-grupo-paciente-familiares {
  background: #e3eef9;
  border-color: #4a7ab8;
  border-left: 4px solid #4a7ab8 !important;
}

.modal-grupo-paciente-familiares h3 {
  color: #4a7ab8;
  border-color: #4a7ab8;
}

#form-paciente .modal-grupo-paciente-familiares .form-grupo label,
.modal-paciente .modal-grupo-paciente-familiares .form-grupo label {
  color: #2d5a8a !important;
}

/* Etiquetas (labels) con color de énfasis más intenso que el fondo */
#form-paciente .modal-grupo-paciente-principal .form-grupo label,
.modal-paciente .modal-grupo-paciente-principal .form-grupo label {
  color: #3d7a5a !important;
}

.modal-grupo-paciente-principal .form-grupo input,
.modal-grupo-paciente-principal .form-grupo select {
  height: 31.78px;
  box-sizing: border-box;
}

#form-paciente .modal-grupo-paciente-consulta .form-grupo label,
.modal-paciente .modal-grupo-paciente-consulta .form-grupo label {
  color: #a67c3a !important;
}

#form-paciente .modal-grupo-paciente-estado .form-grupo label,
.modal-paciente .modal-grupo-paciente-estado .form-grupo label {
  color: #5a6578 !important;
}

/* Layout principal: 4 columnas por fila */
.form-grid-paciente-layout {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.form-grid-paciente-layout .form-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  gap: 0.6rem 0.75rem;
  align-items: end;
}


.form-grid-paciente-layout .form-grupo-doble {
  grid-column: span 1;
}

.form-grid-paciente-layout .form-grupo-ancho {
  grid-column: span 2;
}

.form-grid-paciente-layout .form-row.form-row-paciente-tres {
  grid-template-columns: 1fr 1fr 1fr;
}

/* Layout datos familiares: 4 columnas */
.form-grid-familiares-layout {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.form-grid-familiares-layout .form-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  gap: 0.6rem 0.75rem;
  align-items: end;
}

.form-row-direccion-cuenta {
  grid-template-columns: 2fr 1fr !important;
}

.form-grid-familiares-layout .form-grupo-direccion {
  grid-column: span 1;
}

.form-grid-familiares-layout .form-grupo-cuenta {
  grid-column: span 1;
}

.form-grid-consulta {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 0.6rem 1rem;
}

.form-grid-consulta .form-grupo-motivo { grid-column: 1; }
.form-grid-consulta .form-grupo-fecha { grid-column: 2; }
.form-grid-consulta .form-grupo-ancho { grid-column: 1 / -1; }

.form-grid-estado {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.5rem 0.75rem;
}

/* Rediseño Estado cita y entrevista */
.form-grid-estado-rediseño {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 1rem 1.5rem;
  align-items: start;
}
.form-col-estado {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.form-col-estado label {
  font-weight: 500;
  font-size: 0.875rem;
  color: var(--color-texto);
}
.form-fila-fecha-estado {
  display: flex;
  gap: 0.5rem;
  align-items: center;
}
.form-fila-fecha-estado input[type="date"] {
  flex: 0 0 9rem;
  min-width: 8rem;
  height: 31.78px;
  padding: 0.35rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.875rem;
  font-family: inherit;
  background: #fff;
  color: var(--color-texto);
  transition: border-color var(--transicion), box-shadow var(--transicion);
  box-sizing: border-box;
}
.form-fila-fecha-estado input[type="date"]:focus {
  outline: none;
  border-color: var(--color-primario);
  box-shadow: 0 0 0 2px rgba(117, 69, 22, 0.12);
}
.form-fila-fecha-estado select {
  flex: 1;
  min-width: 7rem;
  height: 31.78px;
  padding: 0.35rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.875rem;
  font-family: inherit;
  background: #fff;
  color: var(--color-texto);
  transition: border-color var(--transicion), box-shadow var(--transicion);
  box-sizing: border-box;
}
.form-fila-fecha-estado select:focus {
  outline: none;
  border-color: var(--color-primario);
  box-shadow: 0 0 0 2px rgba(117, 69, 22, 0.12);
}
.form-col-estado-sistema .estado-sistema-texto {
  height: 31.78px;
  line-height: 31.78px;
  padding: 0 0.6rem;
  border-radius: var(--radio);
  font-weight: 500;
  font-size: 0.875rem;
  display: block;
  text-align: right;
  width: 100%;
  box-sizing: border-box;
}
.form-grupo-pvs {
  grid-column: 2 / -1;
  justify-self: end;
  min-width: 220px;
}
.form-grupo-pvs .pvs-label {
  font-weight: 500;
  font-size: 0.875rem;
  color: var(--color-texto);
}
.form-fila-pvs-inline {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.form-fila-pvs-inline .pvs-si,
.form-fila-pvs-inline .pvs-fecha-label {
  font-weight: 500;
  font-size: 0.875rem;
  color: var(--color-texto);
}
.form-fila-pvs-inline .pvs-si {
  white-space: nowrap;
  flex-shrink: 0;
}
.form-fila-pvs-inline .pvs-fecha-label {
  flex-shrink: 0;
}
.form-fila-pvs-inline .fecha-pvs-solo-lectura {
  min-width: 7rem;
  height: 31.78px;
  padding: 0 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.875rem;
  background: #f1f5f9;
  color: #64748b;
  cursor: default;
  box-sizing: border-box;
}

.modal-grupo-paciente-estado input[readonly] {
  background: #f1f5f9;
  color: var(--color-texto);
  cursor: default;
}

/* Copiado en valoración = SI: texto verde */
.modal-grupo-paciente-estado #copiado-valoracion.copiado-si {
  color: #16a34a !important;
  font-weight: 600;
}

.form-row-derecha {
  grid-template-columns: 1fr 1fr;
  justify-content: end;
}

/* Panel Datos empleados */
.datos-empleados-contenedor {
  padding: 1rem 0;
  max-width: 100%;
}
.datos-empleados-importar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 1.5rem;
  padding: 0.75rem 1rem;
  background: #fafafa;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
}
.selector-empleado-de {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.25rem;
}
.btn-alta-empleado {
  background: #228b22;
  color: white;
  border: none;
  padding: 0.5rem 1rem;
  border-radius: var(--radio);
  font-weight: 500;
  cursor: pointer;
  transition: background 0.2s;
}
.btn-alta-empleado:hover {
  background: #1a6b1a;
}
.btn-eliminar-empleado {
  background: #b91c1c;
  color: white;
  border: none;
  padding: 0.5rem 1rem;
  border-radius: var(--radio);
  font-weight: 500;
  cursor: pointer;
  transition: background 0.2s;
}
.btn-eliminar-empleado:hover {
  background: #991b1b;
}
.btn-eliminar-empleado--icono {
  padding: 0.45rem 0.55rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 0;
}
.btn-eliminar-empleado--icono svg {
  display: block;
  flex-shrink: 0;
}
.btn-config-completa-ambar {
  background: linear-gradient(180deg, #fde68a 0%, #fcd34d 100%);
  color: #78350f;
  border: 1px solid #f59e0b;
  font-weight: 600;
}
.btn-config-completa-ambar:hover {
  background: linear-gradient(180deg, #fcd34d 0%, #fbbf24 100%);
  color: #431407;
  border-color: #d97706;
}
.btn-config-completa-ambar:focus-visible {
  outline: 2px solid #f59e0b;
  outline-offset: 2px;
}
.modal-eliminar-empleado-check {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  cursor: pointer;
  margin: 1rem 0 0 0;
  font-size: 0.9rem;
}
.modal-eliminar-empleado-check input {
  width: 1.2rem;
  height: 1.2rem;
  margin-top: 0.15rem;
  flex-shrink: 0;
  cursor: pointer;
}
.selector-empleado-de-derecha {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.selector-empleado-de-derecha .btn {
  padding: 0.5rem 1rem;
}
.datos-empleados-form.form-sin-empleado {
  opacity: 0.65;
  pointer-events: none;
}
.datos-empleados-form.form-sin-empleado input,
.datos-empleados-form.form-sin-empleado select {
  background: #e8e8e8 !important;
  color: #666;
}
.selector-empleado-de-izq {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.de-dot-color {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  flex-shrink: 0;
}
.selector-empleado-de-izq label {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-texto);
}
.selector-empleado-de-check {
  font-weight: 500 !important;
  font-size: 0.85rem !important;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  cursor: pointer;
}
.selector-empleado-de select {
  padding: 0.6rem 0.85rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.95rem;
  min-width: 280px;
}
.datos-empleados-form {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  width: 100%;
  min-width: 0;
}
.de-grupo {
  padding: 1rem 1.25rem;
  border-radius: var(--radio);
  border: 1px solid var(--color-borde);
  min-width: 0;
}
.de-grupo h3 {
  margin: 0 0 0.75rem 0;
  font-size: 1rem;
  font-weight: 600;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid rgba(0,0,0,0.08);
}
.de-grupo-datos-personales {
  border-left: 4px solid #5c6bc0;
  background: rgba(92, 107, 192, 0.06);
}
.de-grupo-datos-personales h3 { color: #3949ab; }
.de-grid-datos-personales {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  grid-template-rows: auto auto;
}
.de-grid-datos-personales .de-campo:nth-child(1) { grid-column: 1 / 3; }
.de-grid-datos-personales .de-campo:nth-child(2) { grid-column: 3; }
.de-grid-datos-personales .de-campo:nth-child(3) { grid-column: 4; }
.de-grid-datos-personales .de-campo:nth-child(4) { grid-column: 5; }
.de-grid-datos-personales .de-campo:nth-child(5) { grid-column: 1 / 3; }
.de-grid-datos-personales .de-campo:nth-child(6) { grid-column: 3 / 6; }
.de-grid-datos-personales .de-campo input { min-width: 0; }
.de-grupo-profesional {
  border-left: 4px solid #43a047;
  background: rgba(67, 160, 71, 0.06);
}
.de-grupo-profesional h3 { color: #2e7d32; }
.de-grid-profesionales {
  grid-template-columns: auto auto 145px minmax(400px, 1fr) 70px;
  grid-template-rows: auto auto;
  min-width: 0;
  gap: 0.75rem 1rem;
  justify-content: start;
}
.de-grid-profesionales .de-campo:nth-child(1) { grid-column: 1; }
.de-grid-profesionales .de-campo:nth-child(2) { grid-column: 2; }
.de-grid-profesionales .de-campo:nth-child(3) { grid-column: 3; }
.de-grid-profesionales .de-campo:nth-child(4) { grid-column: 4; }
.de-grid-profesionales .de-campo:nth-child(5) { grid-column: 5; }
.de-grid-profesionales .de-campo:nth-child(6) { grid-column: 1; }
.de-grid-profesionales .de-campo:nth-child(7) { grid-column: 2; }
.de-grid-profesionales .de-campo:nth-child(8) { grid-column: 3 / 6; }
.de-grid-profesionales .de-campo input,
.de-grid-profesionales .de-campo select { min-width: 0; width: 100%; box-sizing: border-box; }
.de-grid-profesionales .de-campo-fecha-alta { max-width: 100%; }
.de-grid-profesionales .de-campo-horas-mensuales {
  max-width: 70px;
}
.de-grid-profesionales .de-campo-horario input {
  overflow: hidden;
  text-overflow: ellipsis;
}
@media (max-width: 600px) {
  .de-grid-profesionales {
    grid-template-columns: 1fr 1fr 130px minmax(280px, 1fr) 70px;
  }
}
.de-grupo-economico {
  border-left: 4px solid #fb8c00;
  background: rgba(251, 140, 0, 0.06);
}
.de-grupo-economico h3 { color: #e65100; }
.de-grupo-formacion {
  border-left: 4px solid #8e24aa;
  background: rgba(142, 36, 170, 0.06);
}
.de-grupo-formacion h3 { color: #6a1b9a; }
.de-grupo-certificados {
  border-left: 4px solid #00838f;
  background: rgba(0, 131, 143, 0.06);
}
.de-grupo-certificados h3 { color: #006064; }
.de-grupo-certificados {
  min-width: 0;
}
.de-grid-certificados {
  min-width: 0;
}
.de-grid-certificados .de-campo {
  min-width: 0;
  max-width: 100%;
}
.de-grid-certificados input {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}
.de-grid-economico {
  grid-template-columns: minmax(280px, 2fr) minmax(9rem, max-content) 1fr;
  gap: 0.75rem 1.5rem;
}
.de-grid-economico .de-campo-num-cuenta { min-width: 0; }
.de-grid-economico .de-campo-salario { max-width: 9rem; }
.de-grid-economico .de-campo-salario input { width: 100%; max-width: 100%; }
.de-grupo-terapeuta {
  border-left: 4px solid var(--color-primario);
  background: rgba(117, 69, 22, 0.06);
}
.de-grupo-terapeuta h3 { color: var(--color-primario); }
.de-grupo-usuario {
  border-left: 4px solid #1976d2;
  background: rgba(25, 118, 210, 0.06);
}
.de-grupo-usuario h3 { color: #1565c0; }
.de-fila-dos-columnas {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.25rem;
}
.de-fila-economico-certificados {
  grid-template-columns: 4fr 1fr;
}
@media (max-width: 900px) {
  .de-fila-dos-columnas { grid-template-columns: 1fr; }
}
.de-fila-terapeuta-usuario .de-grupo { min-height: 0; }
.de-terapeuta-layout {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.de-grid-terapeuta-dropdowns {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem 1.5rem;
}
.de-terapeuta-checkboxes {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 1.5rem;
  align-items: center;
}
.de-terapeuta-checkboxes label {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  cursor: pointer;
  margin: 0;
  font-size: 0.9rem;
  font-weight: 500;
}
.de-terapeuta-botones {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  justify-content: flex-end;
}
.btn-de-crear-usuario {
  background: #1976d2;
  color: white;
  border: none;
  padding: 0.5rem 1rem;
  border-radius: var(--radio);
  font-weight: 500;
  cursor: pointer;
  transition: background 0.2s;
}
.btn-de-crear-usuario:hover {
  background: #1565c0;
}
.de-grid-terapeuta-dropdowns select,
.de-grupo-terapeuta select {
  padding: 0.6rem 0.85rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.9rem;
  background: #fff;
  min-height: 2.5rem;
}
.de-grid-terapeuta-dropdowns select:focus,
.de-grupo-terapeuta select:focus {
  outline: none;
  border-color: var(--color-primario);
  box-shadow: 0 0 0 2px rgba(117, 69, 22, 0.15);
}
#modal-editar-terapeuta.modal-solo-horario .equipo-config-tabs {
  display: none;
}

/* Modal unificado equipo (agenda + usuario) */
.modal-equipo-unificado {
  max-width: min(52rem, 96vw);
  width: 100%;
  max-height: 92vh;
  display: flex;
  flex-direction: column;
}
.modal-equipo-header {
  flex-shrink: 0;
}
.equipo-config-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0.5rem 1rem 0;
  border-bottom: 1px solid var(--color-borde, #e2e8f0);
  background: var(--color-fondo-suave, #f8fafc);
  flex-shrink: 0;
}
.equipo-config-tabs.equipo-tabs-oculto-solo-horario {
  display: none;
}
.equipo-config-tab {
  border: 1px solid transparent;
  background: transparent;
  padding: 0.45rem 0.75rem;
  border-radius: 6px 6px 0 0;
  font-size: 0.88rem;
  cursor: pointer;
  color: #475569;
}
.equipo-config-tab:hover {
  background: rgba(255, 255, 255, 0.7);
  color: #1e293b;
}
.equipo-config-tab.activo {
  background: #fff;
  border-color: var(--color-borde, #e2e8f0);
  border-bottom-color: #fff;
  margin-bottom: -1px;
  font-weight: 600;
  color: var(--color-texto, #1e293b);
}
.modal-equipo-body {
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 1rem 1.25rem 1.25rem;
  flex: 1;
  min-height: 0;
  /* Altura mínima estable: ~pestaña Horario L–V (5 días + margen) */
  min-height: min(26.5rem, calc(92vh - 11rem));
}

/* Paneles del modal equipo: ocupan el alto útil del cuerpo (flex) */
#modal-editar-terapeuta .equipo-config-panel.activo {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  box-sizing: border-box;
}
#modal-editar-terapeuta #equipo-panel-horario.activo .form-grupo {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
}
#modal-editar-terapeuta #equipo-panel-horario.activo .terapeuta-horarios-grid {
  flex: 1;
  min-height: 18rem;
}

/* Rellenar hueco bajo Acceso; Agenda no flex:1 para no repartir alto raro entre filas */
#modal-editar-terapeuta #equipo-panel-acceso.activo .equipo-acceso-layout {
  flex: 1;
  min-height: 0;
}

#modal-editar-terapeuta .equipo-field-row {
  margin-bottom: 0.55rem;
}
/* Fila de «Máx. días»: grupo a la izquierda, sin estirarse a todo el ancho */
#modal-editar-terapeuta .equipo-field-row:has(.equipo-form-max-ld-row) {
  display: flex;
  justify-content: flex-start;
}
#modal-editar-terapeuta .equipo-ficha-agenda-layout > .equipo-field-row:last-child,
#modal-editar-terapeuta .equipo-acceso-layout > .equipo-field-row:last-of-type {
  margin-bottom: 0;
}
#modal-editar-terapeuta .equipo-field-row-cols2 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.6rem 1rem;
  align-items: start;
}
#modal-editar-terapeuta .equipo-field-row-cols3 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.5rem 0.85rem;
  align-items: start;
}
#modal-editar-terapeuta .equipo-form-cell.form-grupo {
  margin-top: 0;
  margin-bottom: 0;
}
#modal-editar-terapeuta .equipo-form-cell-check label {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  margin-bottom: 0;
}
#modal-editar-terapeuta .form-hint-tight {
  font-size: 0.78rem;
  margin-top: 0.2rem;
  line-height: 1.35;
  display: block;
}
/* Label + número pegados (sin repartir ancho hasta la derecha como tercera columna) */
#modal-editar-terapeuta .equipo-form-max-ld-row {
  display: inline-flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: flex-start;
  gap: 0.45rem 0.55rem;
  max-width: 100%;
}
#modal-editar-terapeuta .equipo-form-max-ld-row label {
  flex: 0 1 auto;
  margin-bottom: 0;
  line-height: 1.35;
}
#modal-editar-terapeuta .equipo-form-max-ld-row input[type="number"] {
  flex: 0 0 auto;
  width: 4.25rem;
}
#modal-editar-terapeuta .equipo-acceso-row-activo {
  display: flex;
  align-items: flex-end;
  padding-bottom: 0.25rem;
}

#modal-editar-terapeuta .equipo-presentacion-vista-acciones {
  flex-wrap: wrap;
  gap: 0.5rem 0.75rem;
  align-items: center;
}
#modal-editar-terapeuta .equipo-edit-terapeuta-color-input {
  width: 2.75rem;
  height: 2rem;
  padding: 0;
  border: 1px solid var(--color-borde, #cbd5e1);
  border-radius: 6px;
  cursor: pointer;
  background: #fff;
}
#modal-editar-terapeuta .equipo-color-picker-label {
  font-size: 0.85rem;
  font-weight: 500;
  cursor: pointer;
  margin: 0;
}
#modal-editar-terapeuta .equipo-presentacion-legado {
  margin-top: 0.75rem;
}

#modal-editar-terapeuta .equipo-permisos-scroll {
  overflow-y: auto;
  overflow-x: hidden;
  padding: 0.35rem 0.15rem 0.15rem 0;
  margin-top: 0.25rem;
  border: 1px solid var(--color-borde-suave, #e2e8f0);
  border-radius: 8px;
  background: var(--color-fondo-suave, #f8fafc);
}
/* Pestaña Permisos: el listado crece hasta llenar el modal (scroll interno) */
#modal-editar-terapeuta #equipo-panel-permisos.activo {
  min-height: 0;
}
#modal-editar-terapeuta #equipo-panel-permisos.activo #equipo-permisos-admin-aviso {
  flex-shrink: 0;
}
#modal-editar-terapeuta #equipo-panel-permisos.activo #usuario-permisos-grupo {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  min-height: 0;
  margin-bottom: 0;
}
#modal-editar-terapeuta #equipo-panel-permisos.activo #usuario-permisos-grupo > label {
  flex-shrink: 0;
}
#modal-editar-terapeuta #equipo-panel-permisos.activo .equipo-permisos-scroll {
  flex: 1 1 auto;
  min-height: 8rem;
  max-height: none;
  margin-top: 0.35rem;
}
#modal-editar-terapeuta .equipo-perm-bloque {
  margin-bottom: 0.5rem;
  padding: 0 0.35rem 0.35rem;
  border-bottom: 1px solid var(--color-borde-suave, #e8e0d8);
}
#modal-editar-terapeuta .equipo-perm-bloque:last-of-type {
  border-bottom: none;
  margin-bottom: 0;
}
#modal-editar-terapeuta .equipo-perm-linea-main {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-weight: 600;
  font-size: 0.86rem;
  margin: 0 0 0.3rem 0;
}
#modal-editar-terapeuta .equipo-perm-linea-main input {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
  accent-color: var(--color-primario, #754516);
}
#modal-editar-terapeuta .equipo-perm-subgrid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.2rem 0.6rem;
  margin: 0 0 0 1.35rem;
}
#modal-editar-terapeuta .equipo-perm-sub {
  display: flex;
  align-items: flex-start;
  gap: 0.35rem;
  font-size: 0.78rem;
  line-height: 1.35;
  font-weight: 450;
  margin: 0;
}
#modal-editar-terapeuta .equipo-perm-sub input {
  width: 0.88rem;
  height: 0.88rem;
  flex-shrink: 0;
  margin-top: 0.1rem;
  accent-color: var(--color-primario, #754516);
}
#modal-editar-terapeuta .equipo-perm-cambiar-empresa {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.86rem;
  font-weight: 500;
  margin: 0.45rem 0.35rem 0.25rem;
  padding-top: 0.35rem;
  border-top: 1px dashed var(--color-borde-suave, #e2e8f0);
}

@media (max-width: 520px) {
  #modal-editar-terapeuta .equipo-perm-subgrid {
    grid-template-columns: minmax(0, 1fr);
  }
  #modal-editar-terapeuta .equipo-field-row-cols2,
  #modal-editar-terapeuta .equipo-field-row-cols3 {
    grid-template-columns: minmax(0, 1fr);
  }
  #modal-editar-terapeuta .equipo-acceso-row-activo {
    align-items: flex-start;
  }
}
.equipo-config-panel {
  display: none;
}
.equipo-config-panel.activo {
  display: block;
}
.equipo-presentacion-vista {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-top: 0.5rem;
}
.equipo-preview-color-dot {
  width: 2rem;
  height: 2rem;
  border-radius: 6px;
  border: 1px solid var(--color-borde, #cbd5e1);
  flex-shrink: 0;
}
.equipo-preview-color-hex {
  font-size: 0.95rem;
}
.equipo-form-usuario {
  display: contents;
}
.modal-equipo-footer {
  flex-shrink: 0;
  border-top: 1px solid var(--color-borde, #e2e8f0);
  padding: 0.75rem 1rem;
  gap: 0.5rem;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
}
#modal-editar-terapeuta .btn.btn-guardar-equipo-bosque {
  background: #1b4332;
  background-image: none;
  color: #f8fafc;
  border: none;
  box-shadow: none;
}
#modal-editar-terapeuta .btn.btn-guardar-equipo-bosque:hover:not(:disabled) {
  background: #2d6a4f;
  background-image: none;
  box-shadow: none;
}
.equipo-permisos-admin-aviso {
  margin: 0 0 0.85rem 0;
  padding: 0.65rem 0.75rem;
  border-radius: 8px;
  background: rgba(27, 67, 50, 0.08);
  border: 1px solid rgba(27, 67, 50, 0.2);
}
#usuario-permisos-checkboxes {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
#modal-editar-terapeuta #usuario-permisos-checkboxes label {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-weight: 500;
  font-size: 0.88rem;
}
.de-usuario-block { margin-top: 0.5rem; }
.de-usuario-existe-layout {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.de-usuario-info { margin: 0; }
.de-usuario-botones {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.de-permisos-row { width: 100%; margin-top: 0.25rem; }
.de-permisos-inline, .de-permisos-crear {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
}
.de-permisos-inline label, .de-permisos-crear label {
  font-size: 0.85rem;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  cursor: pointer;
}
.modal-permisos-hint { margin-bottom: 1rem; }
.modal-permisos-lista {
  max-height: 50vh;
  overflow-y: auto;
  margin-bottom: 1rem;
}
.modal-permisos-grupo {
  margin-bottom: 1rem;
  padding: 0.75rem;
  background: var(--color-fondo-suave, #f5f5f5);
  border-radius: 6px;
}
.modal-permisos-grupo-titulo {
  font-weight: 600;
  margin-bottom: 0.5rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  cursor: pointer;
}
.modal-permisos-grupo-titulo input { flex-shrink: 0; }
.modal-permisos-subitems {
  margin-left: 1.5rem;
  margin-top: 0.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.modal-permisos-subitems label {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  cursor: pointer;
  font-size: 0.9rem;
}
.modal-permisos-footer { margin-top: 1rem; }
.de-crear-usuario-form {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin-top: 0.75rem;
}
.de-crear-usuario-campos {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.5rem;
  align-items: flex-end;
}
.de-crear-usuario-campos .form-grupo { margin: 0; }
.de-crear-usuario-campos .form-grupo label {
  font-size: 0.8rem;
  color: var(--color-texto-suave);
  font-weight: 500;
}
.de-crear-usuario-campos .form-grupo input[type="text"],
.de-crear-usuario-campos .form-grupo input[type="password"] {
  min-width: 140px;
  max-width: 200px;
}
.de-crear-admin { align-self: center; }
.de-crear-admin label { cursor: pointer; }
.de-usuario-hint { margin: 0.5rem 0 0 0; font-size: 0.85rem; }
.de-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 0.75rem 1.5rem;
}
.de-campo {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.de-campo label {
  font-size: 0.8rem;
  color: var(--color-texto-suave);
  font-weight: 500;
}
.de-campo input,
.de-campo select {
  padding: 0.5rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: 4px;
  font-size: 0.9rem;
  background: #fff;
}
.de-campo-ancho { grid-column: 1 / -1; }

/* Panel Datos pacientes - formulario ancho con columnas */
#datos-pacientes .sub-panel.activo {
  width: 100%;
  overflow-x: hidden;
}

.formulario-datos-paciente {
  width: 100%;
  max-width: 100%;
  padding: 1rem 0;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  overflow-x: hidden;
}

.selector-paciente-dp {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 0;
}

.selector-paciente-dp-izq {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.dp-fila-selectores-paciente {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 1rem 1.25rem;
}
.dp-combobox-paciente-grupo {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  flex: 1;
  min-width: 260px;
}

.selector-paciente-dp-izq label {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-texto);
}

.dp-filtro-centro-grupo {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  flex: 0 0 auto;
}
.dp-filtro-centro-select {
  min-width: 200px;
  max-width: 320px;
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.95rem;
  background: #fff;
}

/* Combobox paciente (filtrable al escribir) */
.dp-combobox-wrap {
  position: relative;
  min-width: 280px;
  max-width: 450px;
}
.dp-combobox-input {
  width: 100%;
  padding: 0.6rem 0.85rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.95rem;
  background: #fff;
}
.dp-combobox-input:focus {
  outline: none;
  border-color: var(--color-primario, #754516);
  box-shadow: 0 0 0 2px rgba(117, 69, 22, 0.15);
}
.dp-combobox-list {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  margin: 2px 0 0 0;
  padding: 0;
  list-style: none;
  background: #fff;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  box-shadow: 0 4px 12px rgba(0,0,0,0.15);
  max-height: 280px;
  overflow-y: auto;
  z-index: 100;
}
.dp-combobox-list li {
  padding: 0.5rem 0.85rem;
  cursor: pointer;
  font-size: 0.9rem;
  border-bottom: 1px solid rgba(0,0,0,0.05);
}
.dp-combobox-list li:last-child {
  border-bottom: none;
}
.dp-combobox-list li:hover,
.dp-combobox-list li.dp-combobox-seleccionado {
  background: rgba(117, 69, 22, 0.08);
}

.selector-paciente-dp-der {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  flex: 1;
  justify-content: flex-end;
}

.selector-paciente-dp-der .dp-cajas-grupo {
  display: flex;
  align-items: stretch;
  gap: 1rem;
}

.selector-paciente-dp-der .dp-caja-inline {
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  align-items: flex-start;
  gap: 1rem 1.25rem;
  padding: 0.6rem 1rem;
  background: rgba(117, 69, 22, 0.08);
  border-radius: var(--radio);
  border: 1px solid rgba(117, 69, 22, 0.15);
}

.selector-paciente-dp-der .dp-campo-inline {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.selector-paciente-dp-der .dp-campo-inline label {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-primario);
}

.selector-paciente-dp-der .dp-campo-inline .dp-solo-lectura {
  padding: 0.35rem 0;
  font-size: 0.9rem;
  color: var(--color-texto);
}

.selector-paciente-dp-der .dp-fecha-alta-inline .dp-solo-lectura {
  min-width: 100px;
}

.selector-paciente-dp-der .dp-expediente-inline .dp-solo-lectura {
  min-width: 80px;
  text-align: center;
}

.selector-paciente-dp-der .dp-estado-inline .dp-solo-lectura {
  min-width: 90px;
  font-weight: 600;
}

.selector-paciente-dp-der .dp-input-inline {
  padding: 0.35rem 0.5rem;
  font-size: 0.9rem;
  border: 1px solid rgba(117, 69, 22, 0.2);
  border-radius: 4px;
  background: rgba(255, 255, 255, 0.9);
  min-width: 120px;
}

.selector-paciente-dp-der .dp-input-inline[readonly],
.selector-paciente-dp-der .dp-input-inline:disabled {
  background: rgba(255, 255, 255, 0.6);
  cursor: default;
}

.selector-paciente-dp-der .dp-pvs-inline .dp-check {
  min-width: 1.4rem;
  display: inline-block;
}

/* Colores Estado según valor */
.selector-paciente-dp-der .dp-estado-valoracion {
  color: #2563eb !important;
}

.selector-paciente-dp-der .dp-estado-alta {
  color: #16a34a !important;
}

.selector-paciente-dp-der .dp-estado-info {
  color: #ea580c !important;
}

.selector-paciente-dp-der .dp-estado-cese {
  color: #dc2626 !important;
}

.dp-solo-lectura {
  font-size: 0.9rem;
  color: var(--color-texto);
  min-height: 1.5rem;
}

/* Resumen semanal Horario–Agenda (ficha Datos pacientes) */
#datos-pacientes .dp-bloque-agenda-semana {
  margin: 0;
  padding: 0.85rem 1rem 0.65rem;
  border-radius: var(--radio);
  border-left: 4px solid #db2777;
  background: linear-gradient(135deg, #fdf2f8 0%, #fce7f3 100%);
  box-sizing: border-box;
  box-shadow: 0 1px 2px rgba(190, 24, 93, 0.08);
}
/* Mismo ritmo que .dp-grupo-principal h3 (tamaño, peso, subrayado), tonos del módulo rosa */
#datos-pacientes .dp-agenda-semana-heading {
  margin: 0 0 0.6rem 0;
  font-size: 0.95rem;
  font-weight: 600;
  color: #831843;
  border-bottom: 1px solid rgba(190, 24, 93, 0.4);
  padding-bottom: 0.35rem;
  line-height: 1.3;
}
/* Primera columna ancho fijo: el rango de fechas no redimensiona el resto de columnas */
#datos-pacientes .dp-agenda-semana-grid {
  display: grid;
  grid-template-columns: 18rem minmax(11rem, 1fr) minmax(13rem, 1.35fr);
  gap: 0.5rem 1.25rem;
  align-items: start;
}
@media (max-width: 900px) {
  #datos-pacientes .dp-agenda-semana-grid {
    grid-template-columns: 1fr;
    gap: 0.65rem;
  }
  #datos-pacientes .dp-agenda-semana-slot--nav {
    max-width: none;
  }
}
#datos-pacientes .dp-agenda-semana-slot {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  align-items: flex-start;
  min-width: 0;
}
#datos-pacientes .dp-agenda-semana-slot--nav {
  align-items: center;
  width: 100%;
  max-width: 18rem;
  box-sizing: border-box;
}
#datos-pacientes .dp-agenda-semana-slot--nav .dp-agenda-subtitulo {
  width: 100%;
  text-align: center;
}
/* Mismo tamaño que #datos-pacientes .dp-campo label (0.8rem ≈ 12.8px) */
#datos-pacientes .dp-agenda-subtitulo {
  margin: 0;
  padding: 0;
  font-size: 0.8rem;
  font-weight: 500;
  color: #9d174d;
  line-height: 1.3;
}
#datos-pacientes .dp-agenda-semana-nav {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: center;
  gap: 0.35rem 0.45rem;
  width: 100%;
  box-sizing: border-box;
}
#datos-pacientes .dp-agenda-semana-btn {
  padding: 0.12rem 0.38rem;
  min-height: 0;
  line-height: 1.2;
  font-size: 0.72rem;
  border-radius: 4px;
  box-sizing: border-box;
  flex-shrink: 0;
}
#datos-pacientes .dp-agenda-semana-rango {
  font-size: 0.88rem;
  font-weight: 600;
  color: #831843;
  white-space: nowrap;
  min-width: 0;
  flex: 1 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: center;
}
#datos-pacientes .dp-agenda-proxima-texto {
  font-size: 0.9rem;
  line-height: 1.4;
  color: #500724;
  min-width: 0;
}
#datos-pacientes .dp-agenda-semana-resumen {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.45rem;
  font-size: 0.86rem;
  line-height: 1.45;
  color: #500724;
}
/* Solo lectura: fondo gris suave (no parece input editable) */
#datos-pacientes .dp-agenda-chip {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  background: #eef1f5;
  border-radius: 6px;
  border: 1px solid #e2e8f0;
  color: #475569;
  cursor: default;
  max-width: 100%;
  word-break: break-word;
}

/* Datos personales - contenedor general */
#datos-pacientes .dp-datos-personales {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

#datos-pacientes .dp-datos-personales h3 {
  margin: 0 0 0.5rem 0;
  font-size: 1rem;
  color: #5a9a7a;
}

/* Grupos con colores */
#datos-pacientes .dp-grupo {
  border-radius: var(--radio);
  padding: 1rem 1.25rem;
  border-left: 4px solid;
}

#datos-pacientes .dp-grupo-principal {
  background: #e8f4f0;
  border-color: #5a9a7a;
}

#datos-pacientes .dp-grupo-principal .dp-campo label {
  color: #3d7a5a;
}

#datos-pacientes .dp-grupo-principal h3 {
  margin: 0 0 0.6rem 0;
  font-size: 0.95rem;
  color: #3d7a5a;
  font-weight: 600;
  border-bottom: 1px solid rgba(90, 154, 122, 0.4);
  padding-bottom: 0.35rem;
}

/* Datos familiares: progenitores + dirección/cuenta/motivo/fecha + notas (todo en un solo módulo azul) */
#datos-pacientes .dp-grupo-familiares {
  background: #e8edf7;
  border-color: #4a6fa5;
}

#datos-pacientes .dp-grupo-familiares .dp-campo label {
  color: #2d4a73;
}

#datos-pacientes .dp-grupo-familiares h4 {
  margin: 0 0 0.6rem 0;
  font-size: 0.95rem;
  color: #2d4a73;
  font-weight: 600;
  grid-column: 1 / -1;
}

/* Estado: checks En valoración / En facturación */
#datos-pacientes .dp-check {
  display: inline-block;
  min-width: 1.4rem;
  padding: 0.35rem 0.5rem;
  font-size: 1rem;
  color: var(--color-texto-suave);
}

#datos-pacientes .dp-check.dp-check-si {
  color: #16a34a;
  font-weight: 700;
}

#datos-pacientes .dp-estado .dp-check {
  font-size: 1.1rem;
}


/* Tratamientos - amarillo */
#datos-pacientes .dp-grupo-tratamientos {
  background: #fef9e7;
  border-color: #c9a227;
}

#datos-pacientes .dp-grupo-tratamientos h3 {
  color: #8b6914;
  margin: 0 0 0.75rem 0;
  font-size: 1rem;
  border-bottom: 1px solid rgba(201, 162, 39, 0.4);
  padding-bottom: 0.35rem;
}

#datos-pacientes .dp-grupo-tratamientos .dp-campo label {
  color: #6b5210;
}

/* Grid layout */
#datos-pacientes .dp-grid {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

#datos-pacientes .dp-fila {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 0.75rem 1rem;
  align-items: end;
}

#datos-pacientes .dp-fila-datos-principal {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 0.75rem 1rem;
  align-items: end;
}

#datos-pacientes .dp-fila-datos-principal:last-child {
  grid-template-columns: 1fr 1fr 1fr 2fr;
}

#datos-pacientes .dp-grid-tratamientos .dp-fila-clinicos-cdiat {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: 0.75rem 1rem;
  align-items: end;
  justify-items: stretch;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  padding-bottom: 0.5rem;
  margin-bottom: 0.25rem;
  border-bottom: 1px solid rgba(201, 162, 39, 0.35);
}

#datos-pacientes .dp-grid-tratamientos .dp-fila-clinicos-cdiat .dp-campo {
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

#datos-pacientes .dp-grid-tratamientos .dp-fila-clinicos-cdiat .dp-campo label {
  font-size: 0.8rem;
  font-weight: 500;
  color: #6b5210;
}

#datos-pacientes .dp-motivo-ancho {
  grid-column: span 1;
}

#datos-pacientes .dp-grupo-familiares .dp-fila {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

#datos-pacientes .dp-grupo-familiares .dp-fila-cuatro {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

#datos-pacientes .dp-grupo-familiares .dp-fila-direccion-cuenta {
  grid-template-columns: 2fr 1fr;
}


#datos-pacientes .dp-fila-notas .dp-campo {
  grid-column: 1 / -1;
}

#datos-pacientes .dp-campo {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  min-width: 0;
}

#datos-pacientes .dp-campo label {
  font-size: 0.8rem;
  font-weight: 500;
}

#datos-pacientes .dp-campo input,
#datos-pacientes .dp-campo textarea {
  padding: 0.5rem 0.7rem;
  border: 1px solid var(--color-borde);
  border-radius: 6px;
  font-size: 0.9rem;
  background: #fff;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

#datos-pacientes .dp-campo input[readonly],
#datos-pacientes .dp-campo textarea[readonly] {
  background: rgba(255, 255, 255, 0.7);
  color: var(--color-texto);
  cursor: default;
}

/* Anchos específicos */
#datos-pacientes .dp-curso input {
  max-width: 120px;
}

#datos-pacientes .dp-numero-cuenta input {
  max-width: 100%;
}

.selector-paciente-dp-der .dp-fecha-entrada-inline .dp-solo-lectura,
.selector-paciente-dp-der .dp-fecha-alta-pvs-inline .dp-solo-lectura {
  min-width: 90px;
}

/* Tratamientos: columnas con ancho = ancho del input, sin espacio extra */
#datos-pacientes .dp-grid-tratamientos .dp-proxima-revision input,
#datos-pacientes .dp-grid-tratamientos .dp-num-revisiones input,
#datos-pacientes .dp-grid-tratamientos .dp-fecha-ultima input,
#datos-pacientes .dp-grid-tratamientos .dp-tipo-ultima input,
#datos-pacientes .dp-grid-tratamientos .dp-terapeuta-ultima input {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

/* Solo la fila de tratamientos (no .dp-fila-clinicos-cdiat): columnas fijas. La fila clínica usa 3×1fr arriba. */
#datos-pacientes .dp-grid-tratamientos .dp-fila-tratamientos {
  grid-template-columns: 140px minmax(180px, 2fr) 180px 80px 150px 180px 160px;
  gap: 1rem;
  align-items: end;
  justify-items: start;
}

#datos-pacientes .dp-grid-tratamientos .dp-campo {
  width: 100%;
  min-width: 0;
  max-width: 100%;
}

/* Tratamientos + datos clínicos: selects con el mismo aspecto que los inputs (evita borde negro nativo del SO) */
#datos-pacientes .dp-grid-tratamientos .dp-campo select {
  height: 34px;
  max-height: 34px;
  min-height: 34px;
  padding: 0.35rem 2rem 0.35rem 0.6rem;
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  margin: 0;
  border: 1px solid var(--color-borde);
  border-radius: 6px;
  font-size: 0.9rem;
  font-family: inherit;
  line-height: 1.25;
  color: var(--color-texto);
  background-color: #fff;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b5210' d='M2.5 4.5L6 8l3.5-3.5' stroke='%236b5210' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.5rem center;
  background-size: 12px;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  color-scheme: only light;
}

#datos-pacientes .dp-grid-tratamientos .dp-campo select:focus {
  outline: none;
  border-color: var(--color-primario);
  box-shadow: 0 0 0 2px rgba(117, 69, 22, 0.15);
}

#datos-pacientes .dp-grid-tratamientos .dp-campo select:disabled {
  opacity: 0.75;
  cursor: not-allowed;
  background-color: rgba(255, 255, 255, 0.85);
}

/* Altura uniforme 34px para inputs del bloque tratamientos */
#datos-pacientes .dp-grid-tratamientos .dp-campo input {
  height: 34px;
  max-height: 34px;
  min-height: 34px;
  padding: 0.35rem 0.6rem;
  box-sizing: border-box;
}

#datos-pacientes .dp-tratamiento-actual {
  min-width: 0;
}

#datos-pacientes .dp-tratamiento-actual input {
  min-width: 0;
}

/* Responsive - sin desbordar en pantallas pequeñas */
@media (max-width: 1100px) {
  #datos-pacientes .dp-fila {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  #datos-pacientes .dp-fila-cuatro {
    grid-template-columns: 1fr 1fr;
  }
  #datos-pacientes .dp-grid-tratamientos .dp-fila-clinicos-cdiat {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #datos-pacientes .dp-grid-tratamientos .dp-fila-tratamientos {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #datos-pacientes .dp-grid-tratamientos .dp-campo input {
    height: auto;
    min-height: 0;
    max-height: none;
    padding: 0.5rem 0.7rem;
  }
  #datos-pacientes .dp-grid-tratamientos .dp-campo select {
    height: auto;
    min-height: 0;
    max-height: none;
    padding: 0.5rem 2rem 0.5rem 0.7rem;
  }
  #datos-pacientes .dp-tratamiento-actual {
    grid-column: 1 / -1;
  }
  #datos-pacientes .dp-tratamiento-actual input {
    min-width: 200px;
  }
}

@media (max-width: 768px) {
  #datos-pacientes .dp-fila {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #datos-pacientes .dp-fila-datos-principal {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #datos-pacientes .dp-fila-datos-principal:last-child {
    grid-template-columns: 1fr;
  }
  #datos-pacientes .dp-grupo-familiares .dp-fila {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #datos-pacientes .dp-grupo-familiares .dp-fila-direccion-cuenta {
    grid-template-columns: 2fr 1fr;
  }
  #datos-pacientes .dp-curso input {
    max-width: 100%;
  }
  #datos-pacientes .dp-grid-tratamientos .dp-fila-tratamientos {
    grid-template-columns: 1fr;
  }
  #datos-pacientes .dp-grid-tratamientos .dp-fila-clinicos-cdiat {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 480px) {
  #datos-pacientes .dp-fila {
    grid-template-columns: 1fr;
  }
  #datos-pacientes .dp-grupo {
    padding: 0.75rem 1rem;
  }
  .selector-paciente-dp {
    flex-direction: column;
    align-items: stretch;
  }
  .selector-paciente-dp-der {
    justify-content: flex-start;
  }
}

.formulario-datos-paciente-acciones {
  margin-top: 0.5rem;
  padding-top: 1rem;
  border-top: 1px solid var(--color-borde);
  display: flex;
  justify-content: flex-end;
}

.formulario-datos-paciente-acciones .btn-guardar {
  padding: 0.5rem 1.75rem;
  background: #16a34a;
  color: #fff;
  border: 1px solid #15803d;
  border-radius: var(--radio);
  font-weight: 600;
  font-size: 0.95rem;
  cursor: pointer;
  transition: background 0.15s;
}
.formulario-datos-paciente-acciones .btn-guardar:hover {
  background: #15803d;
}

.en-progreso {
  padding: 3rem 2rem;
  text-align: center;
  color: var(--color-texto-suave);
  font-size: 1rem;
}

.en-progreso p {
  margin: 0;
}

@media (max-width: 700px) {
  .form-grid-paciente-layout .form-row {
    grid-template-columns: 1fr 1fr;
  }
  .form-grid-paciente-layout .form-grupo-ancho {
    grid-column: 1 / -1;
  }
  .form-grid-consulta {
    grid-template-columns: 1fr;
  }
  .form-grid-consulta .form-grupo-motivo,
  .form-grid-consulta .form-grupo-fecha {
    grid-column: 1;
  }
  .form-grid-estado {
    grid-template-columns: 1fr 1fr;
  }
}

/* Modal Valoración: ancho para 4 columnas Agenda + 9 columnas Valoraciones */
.modal-agenda-ancho {
  max-width: min(95vw, 1230px);
  width: 100%;
  overflow-x: hidden;
}

.modal-grupos-agenda-devolucion {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 1rem;
  margin-bottom: 0.65rem;
  align-items: stretch;
}

/* Modal valoración CDIAT: una sola columna (sin bloque devolución) + grillas a ancho completo */
#form-agenda.agenda-modo-cdiat .modal-grupos-agenda-devolucion {
  grid-template-columns: 1fr;
}
#form-agenda.agenda-modo-cdiat .modal-grupo-agenda {
  width: 100%;
  min-width: 0;
}
/* CDIAT: una fila — Terapeuta | Fecha | Hora | Confirmada | Estado; reparto fr + mínimos para hora/fecha */
#form-agenda.agenda-modo-cdiat .form-grid-agenda {
  grid-template-columns:
    minmax(0, 2.15fr)
    minmax(9.5rem, 1.2fr)
    minmax(6.75rem, 0.75fr)
    minmax(0, 1.15fr)
    minmax(0, 1.15fr);
  align-items: end;
  gap: 0.45rem 0.5rem;
  width: 100%;
  box-sizing: border-box;
}
#form-agenda.agenda-modo-cdiat .modal-grupo-agenda .form-grid-agenda {
  max-width: 100%;
}
#form-agenda.agenda-modo-cdiat .form-grid-agenda > .form-grupo {
  min-width: 0;
}
#form-agenda.agenda-modo-cdiat .form-grid-agenda .form-grupo select,
#form-agenda.agenda-modo-cdiat .form-grid-agenda .form-grupo input:not([type="checkbox"]):not([type="radio"]) {
  width: 100%;
  min-width: 0;
  max-width: 100%;
}
#form-agenda.agenda-modo-cdiat .agenda-col-estado-cdiat {
  min-width: 0;
  overflow: hidden;
}
#form-agenda.agenda-modo-cdiat .agenda-estado-circuito-readonly {
  font-weight: 600;
  font-size: 0.82rem;
  background: linear-gradient(180deg, #eef6ff 0%, #e8f2fc 100%);
  border: 1px solid #93c5fd;
  color: #1e3a8a;
  cursor: default;
  width: 100%;
  min-width: 0;
  text-overflow: ellipsis;
  overflow: hidden;
}
@media (max-width: 900px) {
  #form-agenda.agenda-modo-cdiat .form-grid-agenda {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #form-agenda.agenda-modo-cdiat .agenda-col-estado-cdiat {
    grid-column: 1 / -1;
  }
}
#form-agenda.agenda-modo-cdiat .form-grid-valoraciones {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
#form-agenda.agenda-modo-cdiat .form-grid-valoraciones .valoracion-item {
  grid-column: span 1;
}
/* Fecha, hora, terapeuta y confirmada en una sola fila (antes 3 cols → la 4ª bajaba) */
#form-agenda.agenda-modo-cdiat .valoracion-campos {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(5rem, 6rem) minmax(0, 1.35fr) minmax(0, 1.1fr);
  gap: 0.45rem 0.5rem;
  align-items: end;
}
#form-agenda.agenda-modo-cdiat .valoracion-campos .form-grupo {
  min-width: 0;
}
#form-agenda.agenda-modo-cdiat .valoracion-campos .form-grupo label {
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
@media (max-width: 1100px) {
  #form-agenda.agenda-modo-cdiat .valoracion-campos {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.modal-grupo-agenda,
.modal-grupo-devolucion {
  display: flex;
  flex-direction: column;
}

.modal-grupo-devolucion .form-grid-devolucion {
  flex: 1;
}

@media (max-width: 700px) {
  .modal-grupos-agenda-devolucion {
    grid-template-columns: 1fr;
  }
}

.modal-grupo-valoraciones-ancho {
  width: 100%;
}

.modal-ancho .modal-header,
.modal-agenda-ancho .modal-header,
.modal-paciente-ancho .modal-header {
  padding: 0.75rem 1rem;
}

.modal-ancho .modal-header h2,
.modal-agenda-ancho .modal-header h2,
.modal-paciente-ancho .modal-header h2 {
  font-size: 1.05rem;
}

.modal-body {
  padding: 1rem 1.25rem;
  overflow-x: hidden;
}

.modal-grupo {
  padding: 0.65rem 0.85rem;
  border-radius: var(--radio);
  margin-bottom: 0.65rem;
  border-left: 4px solid;
  min-width: 0;
}

.modal-grupo h3 {
  margin: 0 0 0.5rem 0;
  font-size: 0.9rem;
  font-weight: 600;
  padding-bottom: 0.35rem;
  border-bottom: 2px solid;
}

/* Enfasis mismo color que el container (valoración, tratamientos) */
.modal-grupo-paciente {
  background: #e8f4f0;
  border-color: #5a9a7a;
}

.modal-grupo-paciente h3 {
  color: #5a9a7a;
  border-color: #5a9a7a;
}

.modal-grupo-agenda {
  background: #e0eef9;
  border-color: #3a7bc8;
}

.modal-grupo-agenda h3 {
  color: #3a7bc8;
  border-color: #3a7bc8;
}

.modal-grupo-devolucion {
  background: #fff5e0;
  border-color: #d4a84b;
}

.modal-grupo-devolucion h3 {
  color: #d4a84b;
  border-color: #d4a84b;
}

.modal-grupo-valoraciones {
  background: #f0e6f9;
  border-color: #9a5cd4;
}

.modal-grupo-valoraciones h3 {
  color: #9a5cd4;
  border-color: #9a5cd4;
}

.modal-grupo-tratamientos {
  background: #fff5e0;
  border-color: #d4a84b;
}

/* Modal tratamientos CDIAT — bloque Acogida (ámbar suave; tarjetas 1/2/3 con colores propios) */
.modal-grupo-acogida-cdiat {
  padding: 0.85rem 1rem 1rem;
  background: linear-gradient(165deg, #fffbeb 0%, #fef3c7 45%, #fde68a 100%);
  border-color: #d97706;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.65);
}
.modal-grupo-acogida-cdiat h3 {
  color: #92400e;
  border-color: #fbbf24;
}
.modal-grupo-acogida-cdiat .config-hint {
  color: #78350f;
  opacity: 0.92;
}

.modal-grupo-tratamientos h3 {
  color: #d4a84b;
  border-color: #d4a84b;
}

.modal-grupo-info {
  background: #e0eef9;
  border-color: #3a7bc8;
}

.modal-grupo-info h3 {
  color: #3a7bc8;
  border-color: #3a7bc8;
}

.modal-grupo-notas {
  background: #f5ebe0;
  border-color: #a67c52;
  border-left: 4px solid #a67c52;
}

.modal-grupo-notas .form-grupo-label {
  color: #7d5a3a;
}

.modal-grupos-fila {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  margin-bottom: 0.65rem;
}

/* Modal facturación: compactar espacio entre contenido y botones */
#modal-facturacion .form-acciones {
  margin-top: 0.75rem;
  padding-top: 0.75rem;
}

.info-paciente-texto {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-texto);
}

.info-paciente-email {
  font-size: 0.8rem;
  color: var(--color-texto);
  opacity: 0.9;
  margin-top: 0.25rem;
}

/* Modal Tratamientos: botones Presupuesto y Alta en la parte inferior */
.form-acciones-tratamientos {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
}

.form-acciones-tratamientos .copiado-indicator {
  margin-right: auto;
  font-size: 0.85rem;
  color: var(--color-secundario);
}

.form-acciones-tratamientos-izq {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-right: 1.5rem;
}

.form-acciones-tratamientos-der {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-left: auto;
}

.btn-presupuesto {
  background: #fef3c7 !important;
  color: #b45309 !important;
  border: 1px solid #fcd34d !important;
}

.btn-presupuesto:hover:not(:disabled) {
  background: #fde68a !important;
  color: #92400e !important;
  border-color: #f59e0b !important;
}

/* Valoración → Presupuestos: estado y menú ⋮ */
#subpanel-presupuestos .tabla-contenedor table thead th:last-child,
#subpanel-presupuestos .tabla-contenedor table td.col-acciones-presupuestos {
  text-align: center;
  vertical-align: middle;
}

#subpanel-presupuestos td.col-acciones-presupuestos .dropdown-facturado {
  display: inline-flex;
  justify-content: center;
}

#lista-presupuestos .btn-menu-presupuesto {
  min-height: 30px;
  height: 30px;
  padding: 0 0.45rem;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
}

.presupuesto-estado-badge {
  display: inline-block;
  padding: 0.2rem 0.55rem;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.35;
  white-space: nowrap;
}

.presupuesto-estado-enviado {
  background: rgba(34, 197, 94, 0.16);
  color: #166534;
}

.presupuesto-estado-pendiente {
  background: rgba(251, 146, 60, 0.2);
  color: #9a3412;
}

.presupuesto-estado-programado {
  background: rgba(59, 130, 246, 0.14);
  color: #1e40af;
}

.presupuesto-estado-otro {
  background: rgba(107, 114, 128, 0.12);
  color: #374151;
}

.presupuesto-envio-log {
  display: block;
  margin-top: 0.35rem;
  font-size: 11px;
  line-height: 1.3;
  color: #64748b;
  max-width: 22rem;
  word-break: break-word;
}

/* Presupuestos (Valoración): misma altura en filtros (selects, búsqueda, botones) */
#subpanel-presupuestos .filtros-presupuestos select,
#subpanel-presupuestos .filtros-presupuestos input[type="text"] {
  height: 34.38px;
  min-height: 34.38px;
  max-height: 34.38px;
  box-sizing: border-box;
  padding: 0 0.6rem;
  line-height: 1.25;
}

#subpanel-presupuestos .filtros-presupuestos .btn-toolbar {
  height: 34.38px;
  min-height: 34.38px;
  max-height: 34.38px;
  box-sizing: border-box;
  padding-left: 0.75rem;
  padding-right: 0.75rem;
  padding-top: 0;
  padding-bottom: 0;
}

/* Presupuestos (Valoración): acciones toolbar */
#btn-presupuestos-enviar.btn-presupuestos-enviar {
  background: #ecfdf5 !important;
  color: #166534 !important;
  border: 1px solid #a7f3d0 !important;
}

#btn-presupuestos-enviar.btn-presupuestos-enviar:hover:not(:disabled) {
  background: #d1fae5 !important;
  border-color: #6ee7b7 !important;
  color: #14532d !important;
}

#btn-presupuestos-programar.btn-presupuestos-programar {
  background: #f5f3ff !important;
  color: #5b21b6 !important;
  border: 1px solid #ddd6fe !important;
}

#btn-presupuestos-programar.btn-presupuestos-programar:hover:not(:disabled) {
  background: #ede9fe !important;
  border-color: #c4b5fd !important;
  color: #4c1d95 !important;
}

#btn-presupuestos-enviar.btn-presupuestos-enviar:disabled,
#btn-presupuestos-programar.btn-presupuestos-programar:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.btn-alta {
  background: #dbeafe !important;
  color: #1d4ed8 !important;
  border: 1px solid #93c5fd !important;
}

.btn-alta:hover:not(:disabled) {
  background: #bfdbfe !important;
  color: #1e40af !important;
  border-color: #3b82f6 !important;
}

.btn-alta:disabled {
  background: #e2e8f0 !important;
  color: #94a3b8 !important;
  border-color: #cbd5e1 !important;
  cursor: not-allowed;
  opacity: 1;
}

/* Campos compactos en modales */
.modal-grupo input,
.modal-grupo select,
.modal-grupo textarea {
  font-size: 0.8rem;
  padding: 0.4rem 0.5rem;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

.modal-grupo select {
  width: 100%;
}

/* Col2 ≈160px (Importe + Fecha); Col3 más ancha para que «Acepta Valoración» no parta el label */
.form-grid-agenda {
  display: grid;
  grid-template-columns: minmax(0, 2.15fr) 160px minmax(10.5rem, 1.25fr) minmax(0, 1fr);
  gap: 0.5rem 0.75rem;
  align-items: start;
}

/* Datos de Agenda: misma altura en selects e inputs (33.78px) */
.modal-grupo-agenda .form-grid-agenda .form-grupo select,
.modal-grupo-agenda .form-grid-agenda .form-grupo input:not([type="checkbox"]):not([type="radio"]) {
  height: 33.78px;
  min-height: 33.78px;
  max-height: 33.78px;
  box-sizing: border-box;
  font-size: 0.875rem;
  line-height: 1.2;
  padding: 0.12rem 0.5rem;
}

.modal-grupo-agenda .agenda-col-importe input {
  width: 100%;
  max-width: 160px;
  text-align: right;
}

/* Fecha comparte columna 160px: menos padding lateral para caber fecha + icono */
.modal-grupo-agenda .form-grid-agenda input[type="date"] {
  padding-left: 0.3rem;
  padding-right: 0.25rem;
}

/* Columna Acepta / Hora: una sola línea de etiqueta */
.modal-grupo-agenda .form-grid-agenda > .form-grupo:nth-child(3) label,
.modal-grupo-agenda .form-grid-agenda > .form-grupo:nth-child(7) label {
  white-space: nowrap;
}

.modal-grupo-agenda .agenda-especialidad-ro {
  background: #f1f5f9 !important;
  color: var(--color-texto);
  cursor: default;
  border-color: #e2e8f0;
}

.modal-grupo-agenda #agenda-motivo-rechazo:disabled {
  background: #f1f5f9;
  color: #94a3b8;
  cursor: not-allowed;
  border-color: #e2e8f0;
}

.form-acciones-agenda {
  flex-wrap: wrap;
  gap: 0.5rem 0.75rem;
  align-items: center;
  justify-content: flex-end;
}
.form-acciones-agenda #btn-buscar-disp-valoracion {
  margin-right: auto;
}

.btn-buscar-disp-agenda {
  padding: 0.6rem 1.25rem;
  font-size: 0.95rem;
  font-weight: 500;
  background: #dbeafe;
  color: #1e40af;
  border: 1px solid #93c5fd;
}
.btn-buscar-disp-agenda:hover:not(:disabled) {
  background: #bfdbfe;
  border-color: #60a5fa;
  color: #1e3a8a;
}

@media (max-width: 600px) {
  .form-grid-agenda {
    grid-template-columns: 1fr 1fr;
  }
  .modal-grupo-agenda .agenda-col-importe input {
    max-width: none;
  }
}

.form-grid-devolucion {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.4rem 0.6rem;
}

.form-grid-valoraciones {
  display: grid;
  grid-template-columns: repeat(9, minmax(0, 1fr));
  gap: 0.5rem 0.75rem;
}

.valoracion-item {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  min-width: 0;
  padding: 0.5rem;
  grid-column: span 3;
  background: rgba(255,255,255,0.5);
  border-radius: var(--radio);
}

@media (max-width: 800px) {
  .form-grid-valoraciones {
    grid-template-columns: 1fr;
  }
  .valoracion-item {
    grid-column: span 1;
  }
}

.valoracion-label {
  font-weight: 600;
  font-size: 0.8rem;
  color: #8c2dff;
}

.valoracion-campos {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 85px minmax(0, 1fr);
  gap: 0.5rem;
}

.valoracion-campos .form-grupo label {
  font-size: 0.75rem;
}

.modal-grupo-valoraciones .valoracion-campos input,
.modal-grupo-valoraciones .valoracion-campos select {
  font-size: 0.85rem;
  padding: 0.45rem 0.55rem;
}

/* Horario Agenda: subpestañas E1 / CDIAT */
#calendario.panel > .subtabs-calendario-nav {
  margin-bottom: 0.65rem;
  flex-wrap: wrap;
}
#calendario-wrapper-root {
  min-width: 0;
}
.cal-cdiat-modo-hint {
  margin: 0 0 0.65rem 0;
  padding: 0.5rem 0.65rem;
  font-size: 0.85rem;
  color: #334155;
  background: #f0f9ff;
  border: 1px solid #bae6fd;
  border-radius: 8px;
}
#calendario.cal-modo-cdiat #cal-btn-bolsa,
#calendario.cal-modo-cdiat #cal-btn-te-especifica,
#calendario.cal-modo-cdiat #cal-btn-sin-confirmar,
#calendario.cal-modo-cdiat #cal-btn-pacientes,
#calendario.cal-modo-cdiat #cal-btn-exclusivas,
#calendario.cal-modo-cdiat #cal-btn-aviso {
  display: none !important;
}
#cal-btn-ausencias-cdiat {
  display: none;
}
#calendario.cal-modo-cdiat #cal-btn-ausencias-cdiat {
  display: inline-flex !important;
}
#calendario.cal-modo-cdiat #cal-btn-quintas-cdiat[style*="display: none"] {
  display: none !important;
}
.cal-chip-ausencia {
  display: inline-block;
  font-size: 0.62rem;
  font-weight: 800;
  line-height: 1;
  padding: 0.1rem 0.22rem;
  border-radius: 3px;
  background: #fecaca;
  color: #991b1b;
  vertical-align: middle;
  margin-right: 0.12rem;
}
.cal-chip-quinta {
  display: inline-block;
  font-size: 0.62rem;
  font-weight: 800;
  line-height: 1;
  padding: 0.1rem 0.22rem;
  border-radius: 3px;
  background: #bfdbfe;
  color: #1e40af;
  vertical-align: middle;
  margin-right: 0.12rem;
}
.cal-slot-notas {
  font-size: 0.62rem;
  line-height: 1.15;
  margin-top: 0.12rem;
  padding-top: 0.1rem;
  border-top: 1px dashed rgba(0, 0, 0, 0.12);
  opacity: 0.92;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: break-word;
}
.cal-slot-badge-media-hora .cal-slot-notas {
  font-size: 0.58rem;
  -webkit-line-clamp: 1;
}
.cal-lista-sesion-notas {
  font-size: 0.72rem;
  color: #475569;
  margin-top: 0.15rem;
  font-style: italic;
  line-height: 1.2;
}
.registro-aq-tipo {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 700;
  padding: 0.12rem 0.35rem;
  border-radius: 4px;
  white-space: nowrap;
}
.registro-aq-tipo-ausencia {
  background: #fecaca;
  color: #991b1b;
}
.registro-aq-tipo-quinta {
  background: #bfdbfe;
  color: #1e40af;
}

.cdiat-quinta-resultados {
  max-height: 16rem;
  overflow-y: auto;
  border: 1px solid #e2e8f0;
  border-radius: 6px;
  padding: 0.35rem;
  background: #fafafa;
}
.cdiat-quinta-slot-opcion {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.4rem 0.35rem;
  margin: 0;
  border-radius: 4px;
  cursor: pointer;
  font-size: 0.85rem;
}
.cdiat-quinta-slot-opcion:hover {
  background: #f1f5f9;
}
.cdiat-quinta-slot-opcion input {
  flex-shrink: 0;
}
.cdiat-quinta-slot-fecha {
  font-weight: 600;
  min-width: 6.5rem;
  color: #334155;
}
.cdiat-quinta-slot-det {
  color: #64748b;
}
.modal-cdiat-quinta-buscar-fila {
  margin-top: 0.25rem;
}
.modal-ausencia-cdiat-hint {
  font-size: 0.82rem;
  color: #64748b;
  margin: 0 0 0.75rem 0;
  line-height: 1.35;
}
.modal-slot-sesion-ausencia-registrada {
  display: inline-block;
  font-size: 0.78rem;
  color: #991b1b;
  background: #fef2f2;
  border: 1px solid #fecaca;
  border-radius: 4px;
  padding: 0.15rem 0.45rem;
  margin: 0.15rem 0.25rem 0 0;
}
.panel-ausencias-cdiat .panel-bolsa-estadisticas-inline {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
}
.panel-ausencias-cdiat-filtros {
  display: flex;
  align-items: center;
  gap: 0.75rem 1rem;
  flex-wrap: nowrap;
  padding: 0.85rem 0 1rem;
  flex-shrink: 0;
  min-width: 0;
}
.panel-ausencias-cdiat-mes-año {
  display: flex;
  align-items: center;
  gap: 0.35rem 0.75rem;
  flex-shrink: 0;
}
.panel-ausencias-cdiat-mes-año label {
  font-size: 0.9rem;
  margin: 0;
  white-space: nowrap;
  color: var(--color-texto-suave, #64748b);
}
.panel-ausencias-cdiat-mes-año select {
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  background: var(--color-card, #fff);
  font-size: 0.9rem;
  min-width: 110px;
  height: 34px;
  box-sizing: border-box;
}
.panel-ausencias-cdiat-buscar {
  flex: 1 1 8rem;
  min-width: 0;
  max-width: 20rem;
  height: 34px;
  box-sizing: border-box;
  padding: 0.45rem 0.75rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.875rem;
}
.panel-ausencias-cdiat-stats {
  margin-left: auto;
  flex-shrink: 0;
}
@media (max-width: 900px) {
  .panel-ausencias-cdiat-filtros {
    flex-wrap: wrap;
  }
  .panel-ausencias-cdiat-stats {
    margin-left: 0;
    width: 100%;
  }
}

.tratamientos-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem;
}

.tratamiento-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 56px;
  gap: 0.4rem;
  min-width: 0;
}

.tratamiento-item .form-grupo {
  min-width: 0;
}

.tratamiento-item .form-grupo label {
  font-size: 0.72rem;
  margin-bottom: 0.2rem;
}

/* Tratamientos CDIAT — modal Acogida y tabla resumen */
.cdiat-exp-line {
  margin: 0 0 0.75rem 0;
  font-size: 0.95rem;
}
/* Misma fila: nombre a la izquierda, expediente a la derecha */
.tratamientos-paciente-fila {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem 1.25rem;
  flex-wrap: wrap;
  margin-bottom: 0.35rem;
}
.tratamientos-paciente-fila #tratamientos-paciente-info {
  flex: 1 1 auto;
  min-width: 0;
}
.cdiat-exp-derecha {
  flex: 0 1 auto;
  text-align: right;
  font-size: 0.88rem;
  line-height: 1.35;
  white-space: nowrap;
}
.cdiat-exp-derecha-label {
  color: #64748b;
  margin-right: 0.35rem;
}
.cdiat-exp-derecha-valor {
  font-family: ui-monospace, monospace;
  font-size: 0.95rem;
  font-weight: 700;
  color: #0f172a;
}
.cdiat-form-grupo-tutor {
  margin-bottom: 1.85rem;
  padding-bottom: 0.35rem;
}
.cdiat-label-tutor-creixent {
  color: #c026d3;
  font-weight: 600;
}
.modal-grupo-acogida-cdiat .cdiat-modal-filas {
  margin-top: 0.45rem;
}
.cdiat-modal-filas {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.cdiat-fila-trat-head {
  margin-bottom: 0.4rem;
}
.cdiat-fila-trat {
  border: 1px solid var(--borde-suave, #ddd);
  border-radius: 8px;
  padding: 0.55rem 0.7rem;
  background: var(--fondo-panel, #fafafa);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
}
.cdiat-fila-trat--slot1 {
  background: linear-gradient(145deg, #eef2ff 0%, #f8fafc 55%);
  border-color: #c7d2fe;
  border-left: 4px solid #6366f1;
}
.cdiat-fila-trat--slot2 {
  background: linear-gradient(145deg, #fdf2f8 0%, #fce7f3 55%, #f8fafc 100%);
  border-color: #fbcfe8;
  border-left: 4px solid #ec4899;
}
.cdiat-fila-trat--slot3 {
  background: linear-gradient(145deg, #ecfdf5 0%, #f8fafc 55%);
  border-color: #a7f3d0;
  border-left: 4px solid #059669;
}
.cdiat-fila-trat--slot2 .cdiat-fila-num {
  color: #be185d;
}
.cdiat-fila-trat--slot3 .cdiat-fila-num {
  color: #047857;
}
.cdiat-fila-trat--slot1 .cdiat-fila-num {
  color: #4f46e5;
}
.cdiat-fila-trat-resumen {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
}
.cdiat-fila-trat-resumen .cdiat-resumen-linea {
  flex: 1 1 180px;
  min-width: 0;
  margin: 0 !important;
}
.cdiat-fila-trat-resumen .cdiat-btn-disponibilidad {
  flex: 0 0 auto;
  margin-left: auto;
}
.btn.btn-cdiat-buscar-slot {
  font-size: 0.78rem;
  padding: 0.32rem 0.6rem;
  line-height: 1.2;
  background: var(--cdiat-btn-buscar-bg, #d1fae5);
  color: #065f46;
  border: 1px solid #6ee7b7;
  border-radius: 6px;
  font-weight: 600;
}
.btn.btn-cdiat-buscar-slot:hover {
  background: #a7f3d0;
  border-color: #34d399;
  color: #064e3b;
}
.cdiat-fila-trat-cols {
  display: grid;
  grid-template-columns: minmax(100px, 1.1fr) minmax(90px, 0.9fr) minmax(100px, 0.85fr) minmax(72px, 0.55fr) minmax(88px, 0.75fr);
  gap: 0.4rem 0.5rem;
  align-items: end;
}
@media (max-width: 1100px) {
  .cdiat-fila-trat-cols {
    grid-template-columns: 1fr 1fr;
  }
  .cdiat-btn-disp-wrap {
    grid-column: 1 / -1;
  }
}
.cdiat-fila-num {
  display: inline-block;
  font-weight: 600;
  font-size: 0.86rem;
  letter-spacing: 0.01em;
  color: #6b4dff;
  margin-right: 0.35rem;
}
.cdiat-dia-wrap .cdiat-dia-semana {
  display: inline-block;
  min-height: 1.4rem;
  padding: 0.35rem 0.25rem;
  font-size: 0.9rem;
}
.cdiat-label-spacer {
  visibility: hidden;
}
.form-acciones-cdiat-modal {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 0.75rem;
  align-items: center;
}
.badge-tutor-cdiat {
  display: inline-block;
  max-width: 100%;
  padding: 0.1rem 0.4rem;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 600;
  border: 1px solid rgba(15, 23, 42, 0.08);
  box-sizing: border-box;
}
#lista-tratamientos .col-cdiat-exp {
  font-family: ui-monospace, monospace;
  font-size: 0.85rem;
}

/* Tratamientos CDIAT — matriz mensual (LOGO…TO × C E T A) */
.tabla-tratamientos-contenedor {
  overflow-x: auto;
}
.tabla-tratamientos-body-scroll {
  overflow-x: auto;
}
/* E1: una sola capa de scroll (la del .tabla-contenedor) y tabla a ancho completo */
.tabla-tratamientos-contenedor:not(.tabla-tratamientos-contenedor--cdiat) .tabla-tratamientos-body-scroll {
  overflow-x: visible;
  width: 100%;
}
.tabla-tratamientos-contenedor:not(.tabla-tratamientos-contenedor--cdiat) #tabla-tratamientos {
  width: 100%;
}
.tabla-tratamientos-contenedor.tabla-tratamientos-contenedor--cdiat {
  display: flex;
  flex-direction: column;
  max-height: calc(100vh - 15.5rem);
  overflow: hidden;
  border: 1px solid var(--color-borde, #e2e8f0);
  border-radius: var(--radio, 6px);
}
.tabla-tratamientos-contenedor--cdiat .tabla-tratamientos-cabecera-scroll {
  flex-shrink: 0;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  border-bottom: 1px solid #e2e8f0;
  background: #f1f5f9;
}
.tabla-tratamientos-contenedor--cdiat .tabla-tratamientos-cabecera-scroll::-webkit-scrollbar {
  display: none;
}
.tabla-tratamientos-contenedor--cdiat .tabla-tratamientos-cabecera-scroll,
.tabla-tratamientos-contenedor--cdiat .tabla-tratamientos-body-scroll {
  width: 100%;
}
.tabla-tratamientos-contenedor--cdiat .tabla-tratamientos-body-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
  scrollbar-gutter: stable;
}

#tabla-tratamientos.tabla-tratamientos-cdiat,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat {
  --cdiat-sticky-tipo-w: 2rem;
  --cdiat-sticky-exp-w: 4.25rem;
  --cdiat-sticky-pac-w: 8.5rem;
  --cdiat-sticky-tut-w: 4rem;
  --cdiat-sticky-tot-w: 2.5rem;
  --cdiat-ceta-w: 1.25rem;
  --cdiat-matriz-cols: 20;
  --cdiat-tabla-min-w: calc(
    var(--cdiat-sticky-tipo-w) + var(--cdiat-sticky-exp-w) + var(--cdiat-sticky-pac-w) + var(--cdiat-sticky-tut-w) + var(--cdiat-sticky-tot-w)
    + var(--cdiat-matriz-cols) * var(--cdiat-ceta-w)
  );
  font-size: 0.78rem;
  table-layout: fixed;
  width: 100%;
  min-width: var(--cdiat-tabla-min-w);
  border-collapse: separate;
  border-spacing: 0;
}
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat col.col-cg-cdiat-tipo,
#tabla-tratamientos.tabla-tratamientos-cdiat col.col-cg-cdiat-tipo { width: 2.825%; }
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat col.col-cg-cdiat-exp,
#tabla-tratamientos.tabla-tratamientos-cdiat col.col-cg-cdiat-exp { width: 9.605%; }
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat col.col-cg-cdiat-pac,
#tabla-tratamientos.tabla-tratamientos-cdiat col.col-cg-cdiat-pac { width: 19.209%; }
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat col.col-cg-cdiat-tut,
#tabla-tratamientos.tabla-tratamientos-cdiat col.col-cg-cdiat-tut { width: 9.04%; }
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat col.col-cg-cdiat-tot,
#tabla-tratamientos.tabla-tratamientos-cdiat col.col-cg-cdiat-tot { width: 5.65%; }
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat col.col-cg-cdiat-ceta,
#tabla-tratamientos.tabla-tratamientos-cdiat col.col-cg-cdiat-ceta { width: 2.825%; }

/* Cabecera CDIAT (tabla separada, fija al scroll vertical) */
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat thead th {
  background: #f1f5f9;
  color: #334155;
  box-shadow: 0 1px 0 #e2e8f0;
}
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat thead th.col-cdiat-trat-grp {
  background: var(--cdiat-bg, #f1f5f9) !important;
  color: #334155 !important;
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.02em;
  text-shadow: none;
  border-left: 2px solid var(--cdiat-accent, #cbd5e1);
  box-shadow: inset 0 -1px 0 #e2e8f0;
}
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat thead th.col-cdiat-sticky {
  position: sticky;
  background: #f1f5f9 !important;
  color: #334155 !important;
  z-index: 4;
}
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat thead tr.tr-cdiat-matriz-row1 th {
  padding: 0.15rem 0.08rem;
  line-height: 1.1;
  vertical-align: middle;
}
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat thead tr.tr-cdiat-matriz-row2 th {
  padding: 0.1rem 0.05rem;
  font-size: 0.65rem;
  font-weight: 700;
  color: #334155 !important;
  background: #f1f5f9 !important;
  line-height: 1;
}

#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-tipo,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-tipo {
  min-width: var(--cdiat-sticky-tipo-w);
  max-width: var(--cdiat-sticky-tipo-w);
  text-align: center;
  padding-left: 0.15rem;
  padding-right: 0.15rem;
}

#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-exp,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-exp {
  min-width: var(--cdiat-sticky-exp-w);
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-paciente,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-paciente {
  min-width: var(--cdiat-sticky-pac-w);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-tutor,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-tutor {
  min-width: var(--cdiat-sticky-tut-w);
  text-align: center;
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-total,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-total {
  min-width: var(--cdiat-sticky-tot-w);
  text-align: center;
  font-weight: 700;
  color: #334155;
}

/* Columnas fijas al scroll horizontal */
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-sticky-tipo,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-sticky-tipo {
  left: 0;
  z-index: 6;
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-sticky-exp,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-sticky-exp {
  left: var(--cdiat-sticky-exp-left, var(--cdiat-sticky-tipo-w));
  z-index: 5;
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-sticky-pac,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-sticky-pac {
  left: var(--cdiat-sticky-pac-left, calc(var(--cdiat-sticky-tipo-w) + var(--cdiat-sticky-exp-w)));
  z-index: 5;
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-sticky-tut,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-sticky-tut {
  left: var(--cdiat-sticky-tut-left, calc(var(--cdiat-sticky-tipo-w) + var(--cdiat-sticky-exp-w) + var(--cdiat-sticky-pac-w)));
  z-index: 5;
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-sticky-tot,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-sticky-tot {
  left: var(--cdiat-sticky-tot-left, calc(var(--cdiat-sticky-tipo-w) + var(--cdiat-sticky-exp-w) + var(--cdiat-sticky-pac-w) + var(--cdiat-sticky-tut-w)));
  z-index: 5;
  box-shadow: 2px 0 4px -2px rgba(15, 23, 42, 0.12);
}
#tabla-tratamientos.tabla-tratamientos-cdiat tbody .col-cdiat-sticky {
  position: sticky;
  z-index: 2;
  background: #fff;
}
#tabla-tratamientos.tabla-tratamientos-cdiat tbody tr:nth-child(even) .col-cdiat-sticky {
  background: #eef2f7;
}
#lista-tratamientos tr.fila-seleccionada .col-cdiat-sticky {
  background: #e8f4fc !important;
}

/* Tratamientos CDIAT: filas con cese (histórico visible) */
#lista-tratamientos tr.fila-cese-tratamientos td,
#lista-tratamientos tr.fila-cese-tratamientos .col-cdiat-sticky {
  background: #e5e7eb;
  color: #374151;
}
#lista-tratamientos tr.fila-cese-tratamientos:nth-child(even) td,
#lista-tratamientos tr.fila-cese-tratamientos:nth-child(even) .col-cdiat-sticky {
  background: #d8dce0;
}
#lista-tratamientos tr.fila-cese-tratamientos .col-cdiat-ceta {
  filter: brightness(0.94);
}
#lista-tratamientos tr.fila-cese-tratamientos .col-cdiat-paciente .badge-cese-tabla {
  vertical-align: middle;
}
#lista-tratamientos tr.fila-cese-tratamientos.fila-seleccionada td,
#lista-tratamientos tr.fila-cese-tratamientos.fila-seleccionada .col-cdiat-sticky {
  background: #cbd2d9 !important;
}

#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-trat-grp,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-trat-grp {
  text-align: center;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  padding: 0.12rem 0.05rem;
  border-left: 2px solid var(--cdiat-accent, #94a3b8);
  color: var(--cdiat-accent, #334155);
  background: var(--cdiat-bg, #f1f5f9);
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-trat-grp[data-trat="LOGO"],
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-trat-grp[data-trat="LOGO"] {
  --cdiat-accent: var(--cdiat-logo-accent, #2563eb);
  --cdiat-bg: var(--cdiat-logo-bg, #eff6ff);
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-trat-grp[data-trat="FISIO"],
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-trat-grp[data-trat="FISIO"] {
  --cdiat-accent: var(--cdiat-fisio-accent, #d97706);
  --cdiat-bg: var(--cdiat-fisio-bg, #fff7ed);
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-trat-grp[data-trat="TAT"],
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-trat-grp[data-trat="TAT"] {
  --cdiat-accent: var(--cdiat-tat-accent, #059669);
  --cdiat-bg: var(--cdiat-tat-bg, #ecfdf5);
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-trat-grp[data-trat="PSIC_PEDAG"],
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-trat-grp[data-trat="PSIC_PEDAG"] {
  --cdiat-accent: var(--cdiat-psic-pedag-accent, #7c3aed);
  --cdiat-bg: var(--cdiat-psic-pedag-bg, #f5f3ff);
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-trat-grp[data-trat="TO"],
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-trat-grp[data-trat="TO"] {
  --cdiat-accent: var(--cdiat-to-accent, #db2777);
  --cdiat-bg: var(--cdiat-to-bg, #fdf2f8);
}

#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-ceta,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-ceta {
  min-width: var(--cdiat-ceta-w);
  padding: 0.1rem 0.02rem;
  text-align: center;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
  vertical-align: middle;
  border-left: 1px solid #e2e8f0;
}
#tabla-tratamientos.tabla-tratamientos-cdiat .col-cdiat-bloque-inicio,
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat .col-cdiat-bloque-inicio {
  border-left: 2px solid var(--cdiat-accent, #94a3b8);
}
#tabla-tratamientos.tabla-tratamientos-cdiat tbody .col-cdiat-ceta[data-trat="LOGO"] {
  --cdiat-accent: var(--cdiat-logo-accent, #2563eb);
  --cdiat-bg: var(--cdiat-logo-bg, #f8fafc);
}
#tabla-tratamientos.tabla-tratamientos-cdiat tbody .col-cdiat-ceta[data-trat="FISIO"] {
  --cdiat-accent: var(--cdiat-fisio-accent, #d97706);
  --cdiat-bg: var(--cdiat-fisio-bg, #fffbeb);
}
#tabla-tratamientos.tabla-tratamientos-cdiat tbody .col-cdiat-ceta[data-trat="TAT"] {
  --cdiat-accent: var(--cdiat-tat-accent, #059669);
  --cdiat-bg: var(--cdiat-tat-bg, #f0fdf4);
}
#tabla-tratamientos.tabla-tratamientos-cdiat tbody .col-cdiat-ceta[data-trat="PSIC_PEDAG"] {
  --cdiat-accent: var(--cdiat-psic-pedag-accent, #7c3aed);
  --cdiat-bg: var(--cdiat-psic-pedag-bg, #faf5ff);
}
#tabla-tratamientos.tabla-tratamientos-cdiat tbody .col-cdiat-ceta[data-trat="TO"] {
  --cdiat-accent: var(--cdiat-to-accent, #db2777);
  --cdiat-bg: var(--cdiat-to-bg, #fdf2f8);
}
#tabla-tratamientos.tabla-tratamientos-cdiat tbody .col-cdiat-ceta {
  background: var(--cdiat-bg, #fff);
}
#tabla-tratamientos.tabla-tratamientos-cdiat tbody tr:nth-child(even) .col-cdiat-ceta {
  filter: brightness(0.98);
}
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat thead .col-cdiat-ceta[data-trat] {
  background: #f1f5f9 !important;
  color: #334155 !important;
  border-left: 1px solid #e2e8f0;
}
#tabla-tratamientos-cabecera.tabla-tratamientos-cdiat thead .col-cdiat-ceta.col-cdiat-bloque-inicio {
  border-left: 2px solid var(--cdiat-accent, #94a3b8);
}

#tabla-tratamientos.tabla-tratamientos-cdiat tbody td {
  padding: 0.1rem 0.08rem;
  line-height: 1.12;
  height: 1.35rem;
}
#lista-tratamientos tr.fila-seleccionada .col-cdiat-ceta {
  background: #dbeafe !important;
  filter: none;
}
#lista-tratamientos tr.fila-seleccionada .col-cdiat-sticky {
  background: #dbeafe !important;
}

.tratamiento-item select,
.tratamiento-item input {
  width: 100%;
  min-width: 0;
}

.form-grid-info {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.4rem 0.6rem;
}

/* Modal Tratamientos — Información: mismos controles que el resto de selects del modal */
#modal-tratamientos .form-grid-info .form-grupo select,
#modal-tratamientos .form-grid-info .form-grupo input[type="date"] {
  width: 100%;
  height: 33.78px;
  min-height: 33.78px;
  max-height: 33.78px;
  box-sizing: border-box;
  font-size: 0.875rem;
  line-height: 1.2;
  padding: 0.12rem 0.5rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-family: inherit;
}

#modal-tratamientos #tratamiento-motivo-rechazo:disabled {
  background: #f1f5f9;
  color: #94a3b8;
  cursor: not-allowed;
  border-color: #e2e8f0;
}

.importe-total-box {
  background: var(--color-card);
  padding: 0.35rem 0.6rem;
  border-radius: var(--radio);
  border: 1px solid #4a90e2;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;
  min-width: 0;
  align-self: stretch;
}

.importe-total-box label {
  margin-bottom: 0.15rem;
}

#modal-tratamientos .importe-total-box {
  max-width: 150px;
  margin-left: auto;
}

.importe-total-valor {
  font-size: 0.95rem;
  font-weight: 700;
  color: #4a90e2;
  line-height: 1.2;
}

.form-grupo-label {
  display: block;
  font-size: 0.8rem;
  font-weight: 500;
  margin-bottom: 0.35rem;
}

.modal-grupo textarea {
  width: 100%;
  padding: 0.4rem 0.5rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.8rem;
  font-family: inherit;
  box-sizing: border-box;
}

.modal-grupo .form-grupo {
  margin-bottom: 0;
  min-width: 0;
}

.modal-grupo .form-grupo label {
  font-size: 0.72rem;
  font-weight: 500;
  margin-bottom: 0.25rem;
  display: block;
}

/* ===== Sub-pestañas (Valoración) - Estilo visorAgenda: cuadrados con énfasis ===== */
.sub-tabs {
  display: flex;
  gap: 0;
  margin-bottom: 1.25rem;
  background-color: #d3b58f;
  border-bottom: 2px solid #754516;
}

.sub-tab {
  padding: 0.75rem 1.75rem;
  border: none;
  border-right: 1px solid rgba(117, 69, 22, 0.3);
  background-color: rgba(117, 69, 22, 0.15);
  color: #5c3612;
  font-size: 0.95rem;
  font-weight: 500;
  cursor: pointer;
  border-radius: 0;
  transition: all 0.2s ease;
}

.sub-tab:last-child {
  border-right: none;
}

.sub-tab:hover {
  background-color: rgba(117, 69, 22, 0.25);
  color: #754516;
}

.sub-tab.activo {
  background-color: #754516;
  color: #fff;
  font-weight: 600;
  border-bottom: 3px solid #754516;
  margin-bottom: -2px;
  position: relative;
  z-index: 1;
}

.sub-panel { display: none; }
.sub-panel.activo { display: block; }

.placeholder {
  color: var(--color-texto-suave);
  font-style: italic;
  padding: 2rem;
}

/* Celda de acciones con varios botones */
.celda-acciones {
  white-space: nowrap;
}

.btn-valoracion {
  border-color: var(--color-primario);
  color: var(--color-primario);
}

.btn-valoracion:hover {
  background: rgba(15, 118, 110, 0.1);
}

.btn-cita {
  border-color: #059669;
  color: #059669;
}

.btn-cita:hover {
  background: rgba(5, 150, 105, 0.1);
}

/* ===== Modal Historial Paciente ===== */
.modal-historial.modal-contenido {
  max-width: min(95vw, 1120px);
  max-height: 88vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.modal-historial .modal-header {
  flex-shrink: 0;
}

.modal-historial .modal-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

.modal-historial .historial-info-paciente,
.modal-historial .historial-badges,
.modal-historial .historial-filtro {
  flex-shrink: 0;
}

.modal-historial .historial-tabla-contenedor {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overflow-x: auto;
  margin-bottom: 0;
}

.modal-historial .historial-totales,
.modal-historial .form-acciones {
  flex-shrink: 0;
}

/* Tabla Facturación: filas clicables para selección única */
#lista-facturacion tr {
  cursor: pointer;
}

.historial-info-paciente {
  margin-bottom: 1rem;
  padding: 0.75rem;
  background: rgba(117, 69, 22, 0.06);
  border-radius: var(--radio);
}

.historial-fechas {
  font-size: 0.9rem;
  color: var(--color-texto-suave);
}

.historial-badges {
  margin-bottom: 1rem;
}

.historial-badges .badge {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  border-radius: 4px;
  font-size: 0.85rem;
  font-weight: 500;
  margin-right: 0.5rem;
}

.badge-baja {
  background: #fef2f2;
  color: #b91c1c;
}

.badge-pausa {
  background: #fef9c3;
  color: #a16207;
}

.historial-filtro {
  margin-bottom: 1rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.historial-filtro select {
  padding: 0.4rem 0.75rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
}

.tabla-historial {
  width: 100%;
  border-collapse: collapse;
}

.tabla-historial th,
.tabla-historial td {
  padding: 0.5rem 0.75rem;
  text-align: left;
  border-bottom: 1px solid var(--color-borde);
}

.tabla-historial th {
  background: var(--color-fondo);
  font-weight: 600;
  color: var(--color-texto);
  position: sticky;
  top: 0;
  z-index: 1;
}

.tabla-historial tbody tr:nth-child(even) {
  background: rgba(117, 69, 22, 0.08);
}

.tabla-historial tbody tr:nth-child(odd) {
  background: var(--color-card);
}

.tabla-historial .col-num { text-align: right; }
.tabla-historial .col-center { text-align: center; }
.tabla-historial .col-tratamientos { max-width: 400px; }

.historial-totales {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
  padding: 1rem;
  background: rgba(117, 69, 22, 0.06);
  border-radius: var(--radio);
  margin-bottom: 1rem;
  margin-top: 1rem;
}

.historial-total-item {
  font-size: 1rem;
}

.historial-total-item .deuda-positiva {
  color: #b91c1c;
  font-weight: 600;
}

/* ===== Modal Selector de Mes ===== */
.modal-selector-mes {
  max-width: min(95vw, 420px);
}

.modal-selector-mes-body {
  padding: 1.5rem;
}

.selector-mes-titulo {
  text-align: center;
  color: var(--color-primario);
  font-size: 1.15rem;
  font-weight: 600;
  margin: 0 0 1.25rem 0;
}

.selector-mes-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.5rem;
  margin-bottom: 1.25rem;
}

.selector-mes-btn {
  padding: 0.6rem 0.75rem;
  border: 1px solid rgba(117, 69, 22, 0.35);
  border-radius: 999px;
  background: var(--color-card);
  color: var(--color-primario);
  font-size: 0.95rem;
  font-weight: 500;
  cursor: pointer;
  transition: background var(--transicion), color var(--transicion), border-color var(--transicion);
}

.selector-mes-btn:hover {
  background: rgba(117, 69, 22, 0.08);
}

.selector-mes-btn.activo {
  background: #754516;
  color: #fff;
  border-color: #754516;
}

.selector-mes-acciones {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.selector-mes-acciones-der {
  margin-left: auto;
}

.selector-mes-todos {
  border-radius: 999px;
  padding: 0.5rem 1rem;
  border: 1px solid rgba(117, 69, 22, 0.35);
  background: var(--color-card, #fff);
  color: var(--color-primario, #754516);
  font-size: 0.95rem;
  font-weight: 500;
  cursor: pointer;
  transition: background var(--transicion), color var(--transicion), border-color var(--transicion);
}

.selector-mes-todos:hover {
  background: rgba(117, 69, 22, 0.08);
}

.selector-mes-todos.activo {
  background: #754516;
  color: #fff;
  border-color: #754516;
}

.selector-mes-cancelar {
  border-radius: 999px;
  padding: 0.5rem 1.25rem;
  background: var(--color-primario, #754516);
  color: #fff;
  border: 1px solid var(--color-primario, #754516);
  font-weight: 500;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}

.selector-mes-cancelar:hover {
  background: #5c3611;
  border-color: #5c3611;
  color: #fff;
}

/* Modal Confirmar y Progreso PDF */
.modal-pdf-confirm,
.modal-pdf-progreso {
  max-width: min(95vw, 420px);
}

.progress-bar-container {
  width: 100%;
  height: 8px;
  background: var(--color-borde);
  border-radius: 4px;
  overflow: hidden;
  margin-top: 1rem;
}

.progress-bar-fill {
  height: 100%;
  background: #754516;
  border-radius: 4px;
  width: 0%;
  transition: width 0.2s ease;
}

/* Modal Envío Correo */
.modal-correo-confirm {
  max-width: min(95vw, 520px);
}

.modal-correo-info {
  margin-bottom: 1rem;
  color: var(--color-texto-suave);
  font-size: 0.95rem;
}

.modal-correo-lista {
  max-height: 280px;
  overflow-y: auto;
  margin-bottom: 1rem;
}

.modal-correo-item {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0;
  border-bottom: 1px solid var(--color-borde);
}

.modal-correo-item:last-child {
  border-bottom: none;
}

.modal-correo-item .correo-nombre {
  flex: 0 0 140px;
  font-weight: 500;
  font-size: 0.9rem;
}

.modal-correo-item .correo-factura {
  flex: 0 0 70px;
  font-size: 0.85rem;
  color: var(--color-texto-suave);
}

.modal-correo-item input[type="email"] {
  flex: 1;
  min-width: 0;
  padding: 0.4rem 0.5rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
}

.modal-correo-item.sin-pdf {
  opacity: 0.6;
}

.modal-correo-item.sin-pdf input {
  background: #fef2f2;
}

/* ===== Dashboard ===== */
.dashboard-container {
  padding: 1.5rem;
  max-width: 1400px;
  margin: 0 auto;
}

.dashboard-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1.5rem;
  flex-wrap: wrap;
  gap: 1rem;
}

.dashboard-header h1 {
  margin: 0;
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--color-texto);
}

.dashboard-header-actions {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.dashboard-header-actions label {
  font-weight: 500;
  color: var(--color-texto);
}

.dashboard-header-actions select {
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.95rem;
  min-width: 90px;
}

.dashboard-hint {
  font-size: 0.82rem;
  color: var(--color-texto-suave);
  margin: -0.5rem 0 1rem 0;
  max-width: 900px;
  line-height: 1.4;
}

.dashboard-mini-hint {
  font-size: 0.78rem;
  color: var(--color-texto-suave);
  margin: -0.35rem 0 0.65rem 0;
}

.dashboard-subtitulo {
  font-weight: 500;
  color: var(--color-texto-suave);
  font-size: 0.85rem;
}

.dashboard-dos-columnas {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1.25rem;
  margin-bottom: 1.5rem;
}

.dashboard-tabla-scroll {
  max-height: 280px;
  overflow: auto;
}

.dashboard-tabla-compacta {
  font-size: 0.88rem;
  width: 100%;
}

.dashboard-tabla-compacta th,
.dashboard-tabla-compacta td {
  padding: 0.35rem 0.5rem;
}

.dashboard-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem;
  margin-bottom: 2rem;
}

.dashboard-kpi {
  background: linear-gradient(135deg, #0f766e 0%, #0d9488 100%);
  color: white;
  padding: 1.25rem;
  border-radius: var(--radio-lg);
  box-shadow: var(--sombra-md);
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.dashboard-kpi-pacientes { background: linear-gradient(135deg, #0f766e 0%, #0d9488 100%); }
.dashboard-kpi-valoraciones { background: linear-gradient(135deg, #7c3aed 0%, #8b5cf6 100%); }
.dashboard-kpi-infos { background: linear-gradient(135deg, #b45309 0%, #d97706 100%); }
.dashboard-kpi-plazos { background: linear-gradient(135deg, #be123c 0%, #e11d48 100%); }
.dashboard-kpi-conversion { background: linear-gradient(135deg, #047857 0%, #059669 100%); }
.dashboard-kpi-piaf { background: linear-gradient(135deg, #754516 0%, #92400e 100%); }
.dashboard-kpi-agenda { background: linear-gradient(135deg, #334155 0%, #475569 100%); }

.dashboard-kpi h4 {
  margin: 0 0 0.25rem 0;
  font-size: 0.9rem;
  font-weight: 600;
  opacity: 0.95;
}

.dashboard-kpi .kpi-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.5rem;
}

.dashboard-kpi .kpi-valor {
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.2;
}

.dashboard-kpi .kpi-label {
  font-size: 0.8rem;
  opacity: 0.9;
}

.dashboard-top5 {
  min-height: 180px;
}

.dashboard-top5-item {
  display: grid;
  grid-template-columns: 28px 1fr auto auto;
  gap: 0.75rem;
  align-items: center;
  padding: 0.5rem 0;
  border-bottom: 1px solid var(--color-borde);
  font-size: 0.9rem;
}

.dashboard-top5-item:last-child {
  border-bottom: none;
}

.dashboard-top5-item .top5-pos {
  font-weight: 700;
  color: var(--color-primario);
}

.dashboard-top5-item .top5-nombre {
  font-weight: 500;
}

.dashboard-top5-item .top5-cant {
  color: var(--color-texto-suave);
  font-size: 0.85rem;
}

.dashboard-top5-item .top5-beneficio {
  font-weight: 600;
  color: #059669;
}

.dashboard-sin-datos {
  color: var(--color-texto-suave);
  font-size: 0.9rem;
  margin: 1rem 0;
}

/* Deudas: colores positivo (debe) = rojo, negativo (crédito) = verde */
.deuda-positiva {
  color: #dc2626 !important;
  font-weight: 600;
}
.deuda-negativa {
  color: #059669 !important;
  font-weight: 600;
}
.tabla-deudas .col-mes {
  min-width: 52px;
  text-align: right;
}
.tabla-deudas .col-deuda-total {
  min-width: 85px;
  font-weight: 700;
}
.filtros-deudas {
  margin-bottom: 1rem;
}
.filtros-deudas .filtros-izquierda {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.filtros-deudas input[type="text"] {
  min-width: 200px;
  padding: 0.4rem 0.6rem;
}

.dashboard-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
  gap: 1.5rem;
}

.dashboard-card {
  background: var(--color-card);
  border-radius: var(--radio-lg);
  padding: 1.25rem;
  box-shadow: var(--sombra-md);
  border: 1px solid var(--color-borde);
}

.dashboard-card h3 {
  margin: 0 0 1rem 0;
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-texto);
}

.dashboard-card .chart-container {
  height: 240px;
  position: relative;
}

/* Responsive */
@media (max-width: 640px) {
  .form-grid {
    grid-template-columns: 1fr;
  }

  .form-grupo-fila {
    grid-column: span 1;
  }
}

/* Estadísticas pacientes — pantalla completa */
.panel-estadisticas-pacientes-overlay {
  padding: 0;
  align-items: stretch;
  justify-content: stretch;
  background: rgba(15, 23, 42, 0.3);
}
.panel-estadisticas-pacientes-overlay .panel-estadisticas-pacientes {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  margin: 0;
  border-radius: 0;
  display: flex;
  flex-direction: column;
  background: #fff;
  z-index: 1100;
  overflow: hidden;
}
.panel-estadisticas-pacientes-overlay .panel-estadisticas-pacientes .modal-body {
  flex: 1;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.panel-estadisticas-pacientes-overlay .modal-pacientes-cal-tabla-wrapper {
  max-height: none;
  flex: 1;
  min-height: 200px;
}

/* Modal Estadísticas pacientes (calendario) — estilos compartidos */
.modal-pacientes-cal.modal-contenido,
.panel-estadisticas-pacientes {
  display: flex;
  flex-direction: column;
}
.modal-pacientes-cal-body {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  flex: 1;
  min-height: 0;
}
.modal-pacientes-cal-stats {
  margin-bottom: 0.75rem;
  padding: 0.5rem 0.75rem;
  background: rgba(117, 69, 22, 0.06);
  border-radius: var(--radio);
  font-size: 0.9rem;
  flex-shrink: 0;
}
.panel-estadisticas-pacientes-overlay .modal-pacientes-cal-tabla tbody tr:nth-child(odd) {
  background: #fff;
}
.panel-estadisticas-pacientes-overlay .modal-pacientes-cal-tabla tbody tr:nth-child(even) {
  background: rgba(117, 69, 22, 0.08);
}
.modal-pacientes-cal-stats strong { color: var(--color-primario, #754516); }

/* Panel Bolsa de recuperaciones — pantalla completa */
.panel-bolsa-overlay {
  padding: 0;
  align-items: stretch;
  justify-content: stretch;
  background: rgba(15, 23, 42, 0.3);
}
.panel-bolsa-overlay .panel-bolsa {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  width: 100%; height: 100%;
  max-width: none; max-height: none;
  margin: 0; border-radius: 0;
  display: flex; flex-direction: column;
  background: #fff; z-index: 1100;
  overflow: hidden;
}
.panel-bolsa-body {
  flex: 1;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  padding: 0 1rem 1rem;
}
/* Panel Bolsa: mes/año inline con filtros */
.panel-bolsa-historial-inline {
  display: flex;
  align-items: center;
  gap: 0.35rem 0.75rem;
}
.panel-bolsa-historial-inline label {
  font-size: 0.9rem;
  margin: 0;
  white-space: nowrap;
}
.panel-bolsa-historial-inline select {
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  min-width: 90px;
}
.panel-bolsa-estadisticas-inline {
  padding: 0.4rem 0.75rem;
  background: rgba(117, 69, 22, 0.08);
  border-radius: var(--radio);
  font-size: 0.9rem;
}
.panel-bolsa-estadisticas-inline span + span { margin-left: 1rem; }
.panel-bolsa-estadisticas-inline strong { color: var(--color-primario, #754516); }
.panel-bolsa-contenido {
  flex: 1;
  min-height: 0;
  overflow: auto;
}
.modal-pacientes-cal-filtros {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0 1rem;
  margin-bottom: 0.75rem;
  flex-shrink: 0;
}
.modal-pacientes-cal-filtro-item {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.modal-pacientes-cal-filtro-item label {
  font-size: 0.8rem;
  color: var(--color-texto-secundario, #666);
}
.modal-pacientes-cal-filtro-item .form-control,
.modal-pacientes-cal-filtro-item select {
  min-height: 2rem;
  min-width: 140px;
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  background: var(--color-card, #fff);
  font-size: 0.9rem;
  color: var(--color-texto, #333);
}
.modal-pacientes-cal-filtro-item .form-control:focus,
.modal-pacientes-cal-filtro-item select:focus {
  outline: none;
  border-color: var(--color-primario, #754516);
  box-shadow: 0 0 0 2px rgba(117, 69, 22, 0.15);
}
.modal-pacientes-cal-check {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  cursor: pointer;
  font-size: 0.9rem;
  white-space: nowrap;
  padding-bottom: 0.25rem;
}
.modal-pacientes-cal-check input { cursor: pointer; }
.modal-pacientes-cal-tabla-wrapper {
  overflow: auto;
  flex: 1;
  min-height: 0;
  max-height: 50vh;
}
.modal-pacientes-cal-tabla { font-size: 0.85rem; }
.modal-pacientes-cal-tabla th, .modal-pacientes-cal-tabla td { padding: 0.35rem 0.5rem; }
.modal-pacientes-cal-col-oculta { display: none; }
.modal-pacientes-cal-tabla th:nth-child(8), .modal-pacientes-cal-tabla td:nth-child(8),
.modal-pacientes-cal-tabla th:nth-child(9), .modal-pacientes-cal-tabla td:nth-child(9) { white-space: normal; min-width: 140px; max-width: none; }
.modal-pacientes-cal-tabla th:not(:nth-child(8)):not(:nth-child(9)):not(.modal-pacientes-cal-col-oculta),
.modal-pacientes-cal-tabla td:not(:nth-child(8)):not(:nth-child(9)):not(.modal-pacientes-cal-col-oculta) { white-space: nowrap; }
.modal-pacientes-cal-col-nombre {
  min-width: 220px;
  width: 220px;
}
.modal-pacientes-cal-col-num {
  width: 4rem;
  min-width: 4rem;
  text-align: center;
}
.modal-pacientes-cal-nombre {
  max-width: 240px;
  min-width: 220px;
  white-space: normal;
  word-wrap: break-word;
  line-height: 1.3;
  display: block;
}
.modal-pacientes-cal-nombre.link-nombre {
  cursor: pointer;
  color: var(--color-primario, #754516);
  text-decoration: underline;
}
.modal-pacientes-cal-pendiente-rojo { color: #dc2626; font-weight: 600; }
.modal-pacientes-cal-realizadas { color: #16a34a; font-weight: 500; }
.modal-pacientes-cal-mismatch { color: #ea580c; font-weight: 600; }
.modal-pacientes-cal-badge-cese {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.1rem 0.4rem;
  font-size: 0.7rem;
  font-weight: 600;
  background: #b91c1c;
  color: #fff;
  border-radius: 4px;
  white-space: nowrap;
}
.modal-pacientes-cal-nombre.link-nombre:hover {
  color: #5d3812;
}
.modal-pacientes-cal-footer {
  flex-shrink: 0;
  margin-top: 0.75rem;
  padding-top: 0.5rem;
  border-top: 1px solid rgba(117,69,22,0.15);
  display: flex;
  justify-content: flex-end;
}
.btn-marron {
  background: var(--color-primario, #754516);
  color: #fff;
  border: none;
  padding: 0.5rem 1rem;
  border-radius: var(--radio);
  cursor: pointer;
  font-weight: 500;
}
.btn-marron:hover {
  background: #5d3812;
}

.btn-granate {
  background: #881337;
  color: #fff;
  border: 1px solid #6f0f2d;
  padding: 0.5rem 1rem;
  border-radius: var(--radio);
  cursor: pointer;
  font-weight: 500;
}
.btn-granate:hover {
  background: #6f0f2d;
}
.btn-toolbar.btn-granate {
  background: #881337;
  color: #fff;
  border-color: #6f0f2d;
}
.btn-toolbar.btn-granate:hover {
  background: #6f0f2d;
  color: #fff;
  border-color: #5a0b25;
}

/* Botón aviso disponibilidad */
.btn-aviso-disp {
  background: #fff7ed;
  color: #c2410c;
  border: 1px solid #fed7aa;
}
.btn-aviso-disp:hover {
  background: #ffedd5;
  color: #9a3412;
  border-color: #fb923c;
}

/* Chips de aviso dentro del encabezado de día */
.cal-aviso-chip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 4px;
  font-size: 0.7rem;
  font-weight: 600;
  padding: 3px 6px;
  border-radius: 4px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.4;
  user-select: none;
  align-self: stretch;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
.cal-aviso-chip-administracion {
  background: #fff3cd;
  color: #856404;
  border-left: 3px solid #ffc107;
}
.cal-aviso-chip-direccion {
  background: #cfe2ff;
  color: #0a58ca;
  border-left: 3px solid #0d6efd;
}
.cal-aviso-chip-otro {
  background: #f0f0f0;
  color: #555;
  border-left: 3px solid #aaa;
}
.cal-aviso-chip-txt {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
.cal-aviso-chip-del {
  flex-shrink: 0;
  background: none;
  border: none;
  cursor: pointer;
  font-size: 0.85rem;
  line-height: 1;
  color: inherit;
  opacity: 0.6;
  padding: 0 2px;
  border-radius: 2px;
}
.cal-aviso-chip-del:hover {
  opacity: 1;
  background: rgba(0,0,0,0.08);
}

/* Notas de compañeros en modal exclusiva (terapeuta) */
.exclusiva-nota-companero {
  border: 1px solid #e5d8f5;
  border-left: 3px solid #9d174d;
  border-radius: 6px;
  padding: 0.5rem 0.75rem;
  margin-bottom: 0.5rem;
  background: #fdf4ff;
}
.exclusiva-nota-companero-nombre {
  font-weight: 600;
  font-size: 0.82rem;
  color: #9d174d;
  margin-bottom: 0.2rem;
}
.exclusiva-nota-companero-texto {
  font-size: 0.88rem;
  color: #1e293b;
  line-height: 1.5;
}

/* Tinte de fondo en celdas afectadas por aviso (no interfiere con el contenido) */
.cal-cell-con-aviso[data-aviso-tipo="administracion"] {
  background-image: repeating-linear-gradient(
    135deg,
    transparent,
    transparent 6px,
    rgba(255, 193, 7, 0.12) 6px,
    rgba(255, 193, 7, 0.12) 12px
  );
}
.cal-cell-con-aviso[data-aviso-tipo="direccion"] {
  background-image: repeating-linear-gradient(
    135deg,
    transparent,
    transparent 6px,
    rgba(13, 110, 253, 0.10) 6px,
    rgba(13, 110, 253, 0.10) 12px
  );
}
.cal-cell-con-aviso[data-aviso-tipo="otro"] {
  background-image: repeating-linear-gradient(
    135deg,
    transparent,
    transparent 6px,
    rgba(150, 150, 150, 0.10) 6px,
    rgba(150, 150, 150, 0.10) 12px
  );
}

.btn-verde-suave {
  background: #dcfce7;
  color: #166534;
  border: 1px solid #86efac;
  padding: 0.5rem 1.25rem;
  border-radius: var(--radio);
  cursor: pointer;
  font-weight: 500;
}
.btn-verde-suave:hover {
  background: #bbf7d0;
  border-color: #4ade80;
}

/* Panel Registros de sesión (pantalla completa, estilo Bolsa) */
.panel-registros-overlay {
  padding: 0;
  align-items: stretch;
  justify-content: stretch;
  background: rgba(15, 23, 42, 0.3);
}
.panel-registros-overlay .panel-registros {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  width: 100%; height: 100%;
  max-width: none; max-height: none;
  margin: 0; border-radius: 0;
  display: flex; flex-direction: column;
  background: #fff; z-index: 1100;
  overflow: hidden;
}
.panel-registros-body {
  flex: 1;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  padding: 0 1.25rem 1.25rem;
}
.panel-registros-filtros {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.5rem 0.75rem;
  padding: 0.75rem 0 1rem;
  border-bottom: 1px solid var(--color-borde, #e5e7eb);
  margin-bottom: 1rem;
  flex-shrink: 0;
}
.panel-registros-filtro-item {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.panel-registros-filtro-item label {
  font-size: 0.8rem;
  color: var(--color-texto-secundario, #666);
  font-weight: 500;
}
.panel-registros-filtro-item select,
.panel-registros-filtro-item input {
  min-height: 2rem;
  min-width: 150px;
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  background: var(--color-card, #fff);
  font-size: 0.9rem;
  color: var(--color-texto, #333);
}
.panel-registros-filtro-item select:focus,
.panel-registros-filtro-item input:focus {
  outline: none;
  border-color: var(--color-primario, #754516);
  box-shadow: 0 0 0 2px rgba(117, 69, 22, 0.15);
}
.panel-registros-terapeuta-row {
  display: flex;
  align-items: center;
  gap: 0.25rem;
  min-height: 2rem;
}
.panel-registros-terapeuta-row select {
  flex: 1;
  min-width: 120px;
}
.panel-registros-ocultar-inactivos {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.75rem;
  font-weight: normal;
  color: var(--color-texto-secundario, #666);
  white-space: nowrap;
  cursor: pointer;
  padding: 0;
  margin: 0;
  flex-shrink: 0;
}
.panel-registros-ocultar-inactivos input[type="checkbox"] {
  width: 18px;
  height: 18px;
  min-width: 18px !important;
  min-height: 18px !important;
  margin: 0;
  padding: 0 !important;
  flex-shrink: 0;
  accent-color: var(--color-primario, #754516);
  cursor: pointer;
  box-sizing: border-box;
  border: none;
}
.panel-registros-contenido {
  flex: 1;
  min-height: 0;
  overflow: auto;
}

/* Modal historial paciente */
.modal-historial-paciente.modal-contenido {
  max-width: 560px;
  max-height: 85vh;
  display: flex;
  flex-direction: column;
}
.modal-historial-paciente-body {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  overflow: hidden;
}
.modal-historial-paciente-nombre {
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--color-primario, #754516);
}
.modal-historial-paciente-resumen {
  font-size: 0.9rem;
  color: #555;
  padding: 0.5rem 0;
}
.modal-historial-paciente-resumen strong {
  color: var(--color-primario, #754516);
}
.modal-historial-paciente-tabla-wrapper {
  overflow: auto;
  max-height: 40vh;
  border: 1px solid rgba(117,69,22,0.2);
  border-radius: var(--radio);
}
.modal-historial-paciente-tabla { font-size: 0.85rem; }
.modal-historial-paciente-tabla th, .modal-historial-paciente-tabla td { padding: 0.4rem 0.6rem; }
.modal-historial-paciente-tabla .estado-realizada { color: #2e7d32; }
.modal-historial-paciente-tabla .estado-ausencia { color: #c62828; }
.modal-historial-paciente-tabla .estado-pendiente { color: #1565c0; }
.modal-historial-paciente-footer {
  flex-shrink: 0;
  padding-top: 0.5rem;
  border-top: 1px solid rgba(117,69,22,0.15);
  display: flex;
  justify-content: flex-end;
}

/* Modal historial reevaluaciones — más ancho y columnas ajustadas */
.modal-historial-reev.modal-contenido {
  max-width: 1120px;
}
.modal-historial-reev-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
  flex-wrap: wrap;
}
.modal-historial-reev-info {
  flex: 1;
  min-width: 0;
}
.modal-historial-reev-tutor {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}
.modal-historial-reev-tutor label {
  font-size: 0.9rem;
  font-weight: 500;
  white-space: nowrap;
}
.modal-historial-reev-tutor-select {
  padding: 0.35rem 0.6rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  font-size: 0.875rem;
  background: var(--color-card);
  min-width: 140px;
  height: 32px;
  box-sizing: border-box;
  transition: border-color var(--transicion, 0.15s ease);
}
.modal-historial-reev-tutor-select:focus {
  outline: none;
  border-color: var(--color-primario, #754516);
  box-shadow: 0 0 0 2px rgba(117, 69, 22, 0.15);
}
.modal-historial-reev-tutor #modal-historial-reev-tutor-guardar {
  height: 32px;
  padding: 0 0.65rem;
  box-sizing: border-box;
  line-height: 1;
}
.modal-historial-reev-proxima {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
  flex-wrap: wrap;
}
.modal-historial-reev-proxima label {
  font-size: 0.9rem;
  font-weight: 500;
  white-space: nowrap;
}
.modal-historial-reev-proxima input[type="date"] {
  min-width: 10rem;
  height: 32px;
}
.modal-historial-reev-proxima .btn-small {
  height: 32px;
  padding: 0 0.65rem;
}
.form-row-e2-cese {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.75rem 1rem;
}
.e2-cese-campos-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
  align-items: flex-end;
}
.e2-cese-check-label {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-weight: 500;
  margin-bottom: 0.35rem;
}
.form-grupo-e2-motivo-cese {
  min-width: 16rem;
  flex: 1;
}
.modal-cese-cdiat-nombre {
  font-weight: 600;
  margin-bottom: 0.5rem;
}
#modal-historial-reev .modal-header .modal-cerrar {
  width: 32px;
  height: 32px;
  font-size: 1.35rem;
}
.modal-historial-reev-tabla .modal-reev-col-tipo {
  text-align: center;
  min-width: 100px;
}
.modal-historial-reev-tabla td:nth-child(2) {
  text-align: center;
}
.modal-historial-reev-tabla th:nth-child(3),
.modal-historial-reev-tabla td:nth-child(3),
.modal-historial-reev-tabla th:nth-child(4),
.modal-historial-reev-tabla td:nth-child(4) {
  text-align: center;
}
.modal-historial-reev-tabla .modal-reev-col-observaciones {
  min-width: 280px;
  text-align: left;
}
.modal-historial-reev-tabla td:nth-child(5) {
  min-width: 280px;
  white-space: normal;
}

/* Explorador de carpetas (prueba) */
.explorador-breadcrumb {
  padding: 0.5rem 0;
  margin-bottom: 0.75rem;
  font-size: 0.9rem;
  color: var(--color-texto-suave);
  border-bottom: 1px solid var(--color-borde);
  word-break: break-all;
}
.explorador-breadcrumb-item {
  color: var(--color-primario);
  text-decoration: none;
}
.explorador-breadcrumb-item:hover {
  text-decoration: underline;
}
.explorador-breadcrumb-sep {
  margin: 0 0.25rem;
  color: var(--color-texto-suave);
}
.explorador-lista {
  min-height: 200px;
  max-height: 400px;
  overflow-y: auto;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  background: rgba(0,0,0,0.02);
}
.explorador-item {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 0.75rem;
  cursor: default;
  border-bottom: 1px solid rgba(0,0,0,0.05);
}
.explorador-item:last-child {
  border-bottom: none;
}
.explorador-item-carpeta {
  cursor: pointer;
}
.explorador-item-carpeta:hover {
  background: rgba(117, 69, 22, 0.08);
}
.explorador-item-icono {
  font-size: 1.2rem;
}
.explorador-item-nombre {
  font-size: 0.95rem;
}
.explorador-cargando,
.explorador-vacio,
.explorador-error {
  padding: 1.5rem;
  text-align: center;
  color: var(--color-texto-suave);
}
.explorador-error {
  color: #c62828;
}

/* Importar vacaciones desde Excel (Empleados) */
.vac-import-resultado {
  margin-top: 0.75rem;
  max-height: 300px;
  overflow: auto;
  font-size: 0.875rem;
  padding: 0.75rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  background: #fafafa;
}
.vac-import-resultado h4 {
  margin: 0.75rem 0 0.35rem 0;
  font-size: 0.95rem;
}
.vac-import-resultado h4:first-child {
  margin-top: 0;
}
.vac-import-resultado .vac-import-tabla {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.8rem;
}
.vac-import-resultado .vac-import-tabla th,
.vac-import-resultado .vac-import-tabla td {
  border: 1px solid var(--color-borde);
  padding: 4px 6px;
  text-align: left;
}
.vac-import-resultado ul {
  margin: 0.25rem 0 0 1.1rem;
  padding: 0;
}

/* Calendario Laboral (Empleados) */
.cal-lab-contenedor {
  margin-top: 1rem;
  padding: 1rem;
  background: #fff;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
}
.cal-lab-titulo {
  font-size: 1.25rem;
  font-weight: 600;
  margin: 0 0 0.75rem 0;
  padding: 0.5rem 0.85rem;
  background: #754516;
  color: #fff;
  border-radius: var(--radio);
}
.cal-lab-anual-wrapper {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 1rem;
  width: 100%;
  min-width: 0;
}
.cal-lab-titulo-anual {
  font-size: 1.75rem;
  font-weight: 700;
  margin: 0;
  text-align: center;
  color: var(--color-texto);
}
.cal-lab-semana {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
  margin-bottom: 4px;
}
.cal-lab-dia-header {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-texto-suave);
  text-align: center;
  padding: 0.25rem;
}
.cal-lab-dias {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}
.cal-lab-celda {
  min-height: 80px;
  padding: 0.35rem;
  border: 1px solid var(--color-borde);
  border-radius: 4px;
  font-size: 0.85rem;
  background: #fff;
}
.cal-lab-celda.cal-lab-vacio {
  background: rgba(0,0,0,0.03);
  border-color: transparent;
}
.cal-lab-celda.cal-lab-fin-semana {
  background: rgba(0,0,0,0.02);
}
.cal-lab-celda.cal-lab-festivo {
  background: #fff3e0;
  border-color: #ff9800;
}
.cal-lab-num {
  font-weight: 600;
  display: block;
  margin-bottom: 0.2rem;
}
.cal-lab-items {
  font-size: 0.7rem;
  line-height: 1.3;
}
.cal-lab-festivo-txt {
  color: #e65100;
  font-weight: 500;
}
.cal-lab-vac {
  color: #1565c0;
  display: block;
}
.cal-lab-ld {
  color: #2e7d32;
  display: block;
}
.cal-lab-error {
  padding: 2rem;
  text-align: center;
  color: var(--color-texto-suave);
}
/* Vista anual: panel izq + calendario ancho */
.cal-lab-anual-layout {
  display: flex;
  flex-direction: row;
  gap: 1rem;
  align-items: flex-start;
}
.cal-lab-año-panel {
  font-size: 1.75rem;
  font-weight: 700;
  text-align: center;
  color: var(--color-texto);
  margin-bottom: 1rem;
  padding-bottom: 0.75rem;
  border-bottom: 2px solid var(--color-borde);
}
.cal-lab-panel-izq {
  flex-shrink: 0;
  width: 200px;
  background: #fafafa;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  padding: 1rem;
  position: sticky;
  top: 1rem;
}
.cal-lab-panel-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  margin-right: 0.4rem;
  vertical-align: middle;
  flex-shrink: 0;
}
.cal-lab-panel-seccion {
  margin-bottom: 1.25rem;
}
.cal-lab-panel-seccion:last-child {
  margin-bottom: 0;
}
.cal-lab-panel-seccion h4 {
  margin: 0 0 0.5rem 0;
  font-size: 0.95rem;
  color: var(--color-texto);
  border-bottom: 1px solid var(--color-borde);
  padding-bottom: 0.35rem;
}
.cal-lab-panel-lista {
  font-size: 0.85rem;
}
.cal-lab-panel-item {
  display: flex;
  align-items: flex-start;
  gap: 0.4rem;
  padding: 0.5rem 0;
  border-bottom: 1px solid rgba(0,0,0,0.06);
}
.cal-lab-panel-item-text {
  flex: 1;
  min-width: 0;
}
.cal-lab-panel-item strong {
  display: block;
}
.cal-lab-panel-item:last-child {
  border-bottom: none;
}
.cal-lab-panel-fechas {
  color: var(--color-texto-suave);
  font-size: 0.8rem;
}
.cal-lab-panel-vacio {
  color: var(--color-texto-suave);
  font-size: 0.85rem;
  margin: 0.5rem 0 0 0;
}
.cal-lab-calendario-der {
  flex: 1;
  min-width: 0;
  max-width: none;
  overflow: auto;
}
.cal-lab-grid-anual {
  width: 100%;
  min-width: 0;
  max-width: none;
}
.cal-lab-meses-grid {
  display: grid;
  width: 100%;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr));
  gap: 0.75rem 1rem;
}
@media (min-width: 700px) {
  .cal-lab-meses-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 1100px) {
  .cal-lab-meses-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
@media (min-width: 1500px) {
  .cal-lab-meses-grid {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
}
@media (min-width: 1900px) {
  .cal-lab-meses-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
}
.cal-lab-mes-mini {
  border: 1px solid var(--color-borde);
  border-radius: 8px;
  padding: 0.75rem;
  padding-top: 0;
  background: #fff;
  min-width: 0;
}
.cal-lab-mes-titulo {
  font-weight: 600;
  font-size: 1rem;
  margin: -0.75rem -0.75rem 0.5rem -0.75rem;
  padding: 0.5rem 0.75rem;
  text-align: center;
  background: #754516;
  color: #fff;
  border-radius: 8px 8px 0 0;
}
.cal-lab-mes-mini--agosto .cal-lab-mes-titulo {
  background: #754516;
}
.cal-lab-celda.cal-lab-agosto-cierre,
.cal-lab-celda-mini.cal-lab-agosto-cierre {
  background: #ffe0b2 !important;
  border-color: #ffcc80;
}
.cal-lab-celda.cal-lab-agosto-cierre.cal-lab-fin-semana,
.cal-lab-celda-mini.cal-lab-agosto-cierre.cal-lab-fin-semana {
  background: #ffe0b2 !important;
}
.cal-lab-leyenda-agosto {
  justify-content: flex-start;
}
.cal-lab-mes-dias {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}
.cal-lab-celda-mini {
  aspect-ratio: 6 / 7;
  min-height: 0;
  font-size: 0.95rem;
  text-align: center;
  padding: 2px;
  border-radius: 3px;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
}
.cal-lab-celda-mini.cal-lab-vacio {
  background: transparent;
}
.cal-lab-celda-mini.cal-lab-fin-semana {
  background: rgba(0,0,0,0.04);
}
.cal-lab-celda-mini.cal-lab-festivo {
  background: #ffe0b2;
}
.cal-lab-celda-mini.cal-lab-tiene-vac {
  background: #e3f2fd;
}
.cal-lab-leyenda-superior {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 1.5rem;
  margin-bottom: 1rem;
  padding: 0.75rem 1rem;
  background: #fafafa;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  justify-content: center;
  align-items: center;
}
.cal-lab-leyenda {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  justify-content: center;
  align-items: center;
}
.cal-lab-leyenda-superior .cal-lab-leyenda {
  margin: 0;
  padding: 0;
  background: none;
  border: none;
}
.cal-lab-leyenda-item {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.8rem;
  color: var(--color-texto-suave);
}
.cal-lab-leyenda-color {
  width: 12px;
  height: 12px;
  border-radius: 2px;
  border: 1px solid rgba(0,0,0,0.1);
}

/* ── Vacaciones: solicitudes pendientes banner ────────────────────────────── */
.vac-solicitudes-banner {
  background: #fffbeb;
  border: 1px solid #fcd34d;
  border-radius: var(--radio);
  margin-bottom: 1rem;
  overflow: hidden;
}
.vac-solicitudes-banner.oculto { display: none; }

.vac-solicitudes-banner-titulo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.6rem 1rem;
  font-weight: 600;
  font-size: 0.9rem;
  color: #92400e;
  background: #fef3c7;
  border-bottom: 1px solid #fcd34d;
}

.vac-sol-count {
  background: #f59e0b;
  color: #fff;
  border-radius: 10px;
  padding: 0.1rem 0.55rem;
  font-size: 0.8rem;
}

.vac-solicitudes-lista { padding: 0.25rem 0; }

.vac-sol-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.6rem 1rem;
  border-bottom: 1px solid #fde68a;
  gap: 1rem;
  flex-wrap: wrap;
}
.vac-sol-item:last-child { border-bottom: none; }

.vac-sol-info {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  font-size: 0.88rem;
}
.vac-sol-detalle { color: #888; font-size: 0.82rem; }
.vac-sol-nota    { color: #b45309; font-size: 0.8rem; font-style: italic; }

.vac-sol-acciones {
  display: flex;
  gap: 0.4rem;
  flex-shrink: 0;
}

.btn-ok {
  background: #16a34a;
  color: #fff;
  border: none;
  border-radius: var(--radio);
  cursor: pointer;
  font-family: inherit;
}
.btn-ok:hover { background: #15803d; }

/* ── Vacaciones: tabla compacta con chips ─────────────────────────────────── */
.vac-th-nombre  { width: 160px; }
.vac-th-tipo    { width: 110px; }
.vac-th-dias    { width: 60px; text-align: right; }
.vac-th-accion  { width: 90px; }

.tabla-vacaciones .vac-cel-nombre {
  font-weight: 600;
  white-space: nowrap;
  vertical-align: middle;
  border-right: 1px solid var(--color-borde);
}

.vac-fila-primera td { border-bottom: none; }
.vac-fila-segunda td { border-top: none; }
.vac-fila-primera { border-top: 2px solid var(--color-borde); }

.tabla-vacaciones .vac-cel-chips {
  padding-top: 0.35rem;
  padding-bottom: 0.35rem;
  line-height: 1.9;
}

.vac-tipo-label {
  font-size: 0.8rem;
  font-weight: 600;
  white-space: nowrap;
  padding-right: 0.5rem;
}
.vac-tipo-vac { color: #1e40af; }
.vac-tipo-ld  { color: #92400e; }

.vac-cel-total {
  text-align: right;
  font-size: 0.82rem;
  white-space: nowrap;
  color: var(--color-texto-suave);
  padding-right: 0.75rem;
}

.vac-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.2rem;
  padding: 0.15rem 0.35rem 0.15rem 0.5rem;
  border-radius: 4px;
  font-size: 0.8rem;
  white-space: nowrap;
  margin: 0.1rem 0.15rem;
}

.vac-chip-vac {
  background: #dbeafe;
  color: #1e40af;
}

.vac-chip-ld {
  background: #fef3c7;
  color: #92400e;
}

.vac-chip-del {
  border: none;
  background: none;
  cursor: pointer;
  font-size: 0.85rem;
  font-weight: 700;
  line-height: 1;
  padding: 0 0.1rem;
  color: inherit;
  opacity: 0.5;
  transition: opacity 0.15s;
}
.vac-chip-del:hover { opacity: 1; }

.vac-vacio {
  color: var(--color-texto-suave);
  font-size: 0.85rem;
}

.vac-ld-contador {
  display: inline-block;
  font-size: 0.78rem;
  color: var(--color-texto-suave);
  margin-left: 0.25rem;
  vertical-align: middle;
}

.vac-ld-editable {
  cursor: pointer;
  padding: 0.1rem 0.3rem;
  border-radius: 4px;
}
.vac-ld-editable:hover {
  background: rgba(146, 64, 14, 0.12);
}

.vac-ld-lleno {
  color: #dc2626;
  font-weight: 600;
}

.btn-pequeno {
  padding: 0.3rem 0.65rem;
  font-size: 0.82rem;
}

.cargando-texto {
  padding: 1rem;
  color: var(--color-texto-suave);
  font-style: italic;
}

.sin-datos-texto {
  padding: 1rem;
  color: var(--color-texto-suave);
  font-style: italic;
}

/* ===== Gastos empresa ===== */
/* No usar display:flex aquí: sobrescribiría .panel { display:none } y el panel
   aparecería en todas las pestañas. Solo aplicar flex cuando está activo. */
.panel.panel-gastos-empresa.activo {
  display: flex;
  flex-direction: column;
  min-height: 0;
}

.gastos-empresa-header-fijo {
  position: sticky;
  top: 0;
  z-index: 10;
  background: var(--color-card);
  padding-bottom: 0.5rem;
  flex-shrink: 0;
}

.sub-tabs-gastos-empresa {
  margin-bottom: 0.5rem;
}

/* Datos empresa: barra de filtros — altura unificada (sub-pestañas: tamaño global .sub-tab) */
#gastos-empresa .filtros-y-acciones .btn,
#gastos-empresa .ge-filtros-derecha-con-totales > .btn {
  min-height: 32.38px;
  height: 32.38px;
  box-sizing: border-box;
  padding-top: 0;
  padding-bottom: 0;
  padding-left: 0.75rem;
  padding-right: 0.75rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.9rem;
}

#gastos-empresa .filtros-y-acciones .ge-mes-flecha {
  min-width: 32.38px;
  padding-left: 0.45rem;
  padding-right: 0.45rem;
}

#gastos-empresa .filtros-y-acciones .form-control,
#gastos-empresa .filtros-y-acciones input.busqueda-facturacion {
  min-height: 32.38px;
  height: 32.38px;
  box-sizing: border-box;
  font-size: 0.9rem;
}

#gastos-empresa .filtros-y-acciones .fact-mes-label.fact-mes-clickable {
  min-height: 32.38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  padding: 0 0.5rem;
}

#gastos-empresa .filtros-y-acciones .fact-mes-label {
  color: var(--color-primario, #754516);
}

#gastos-empresa #subpanel-ge-configuracion .ge-config-seccion > .btn.btn-primario {
  min-height: 32.38px;
  height: 32.38px;
  box-sizing: border-box;
  padding-top: 0;
  padding-bottom: 0;
  display: inline-flex;
  align-items: center;
  font-size: 0.9rem;
}

#gastos-empresa .sub-panel-gastos {
  display: none;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  padding: 1rem 0;
}

#gastos-empresa .sub-panel-gastos.activo {
  display: flex;
}

#gastos-empresa .tabla-contenedor {
  overflow: auto;
  max-height: calc(100vh - 320px);
}

#gastos-empresa .tabla-gastos-empresa th {
  background: var(--color-primario);
  color: #fff;
  padding: 0.6rem 0.75rem;
  font-size: 0.85rem;
  font-weight: 600;
  text-align: left;
}

#gastos-empresa .tabla-gastos-empresa thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12);
}

#gastos-empresa .tabla-gastos-empresa td {
  padding: 0.5rem 0.75rem;
  border-bottom: 1px solid var(--color-borde);
}

#gastos-empresa .tabla-gastos-empresa tbody tr:not(.ge-mes-sep):not(.ge-comparacion-diff):not(.ge-fijo-tfoot-pendiente):hover {
  background: rgba(117, 69, 22, 0.05);
}

#gastos-empresa tr.ge-mes-sep td {
  background: #d3b58f;
  color: var(--color-primario, #754516);
  padding-top: 0.65rem;
  padding-bottom: 0.65rem;
  border-bottom: none;
  font-size: 15px;
  vertical-align: middle;
}
#gastos-empresa tr.ge-mes-sep-cab {
  cursor: pointer;
  user-select: none;
}
#gastos-empresa tr.ge-mes-sep-cab:focus {
  outline: 2px solid rgba(117, 69, 22, 0.45);
  outline-offset: -2px;
}
#gastos-empresa tr.ge-mes-sep-cab .ge-mes-sep-label {
  font-weight: 600;
}
#gastos-empresa tr.ge-mes-sep-cab .ge-mes-sep-chevron {
  display: inline-block;
  transition: transform 0.18s ease;
  font-size: 0.7em;
  margin-right: 0.15rem;
  vertical-align: middle;
  opacity: 0.9;
}
#gastos-empresa tr.ge-mes-sep-cab.ge-mes-colapsado .ge-mes-sep-chevron {
  transform: rotate(-90deg);
}
#gastos-empresa tr.ge-mes-sep-cab .ge-mes-sep-total {
  font-weight: 700;
  color: var(--color-primario, #754516);
}
#gastos-empresa tr.ge-mes-sep-cab .ge-mes-sep-total strong {
  font-weight: 700;
}
#gastos-empresa .ge-pago-factura-cb {
  width: 14px;
  height: 14px;
  margin: 0;
  cursor: pointer;
  vertical-align: middle;
}
#gastos-empresa .tabla-gastos-empresa td.col-ge-factura {
  text-align: center;
  vertical-align: middle;
}

#gastos-empresa .ge-pago-m19-badge {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.1rem 0.4rem;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.03em;
  border-radius: 4px;
  background: #e8f4fc;
  color: #0c5460;
  border: 1px solid #b8dce8;
  vertical-align: middle;
}

#gastos-empresa .ge-pago-m19-bloque {
  background: #f8fafb;
  border-radius: 8px;
  padding: 0.25rem 0.75rem 0.85rem;
  border: 1px solid #e8eaed;
}

#gastos-empresa .ge-m19-informe-subtit {
  font-size: 1rem;
  font-weight: 600;
  margin: 0 0 0.5rem 0;
  color: #374151;
}

#gastos-empresa .ge-m19-informe-legal {
  white-space: normal;
  font-size: 0.82rem;
  line-height: 1.45;
  max-width: 36rem;
  vertical-align: top;
}

#gastos-empresa .ge-m19-informe-detalle-wrap {
  max-height: 28rem;
  overflow: auto;
}

/* Badge de grupo (fondo de color alrededor del nombre) en tabla Pagos GE */
.ge-grupo-badge {
  display: inline-block;
  padding: 0.2rem 0.55rem;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 500;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
  line-height: 1.35;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
}
.ge-grupo-tabla-color {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}
.ge-grupo-tabla-swatch {
  width: 1rem;
  height: 1rem;
  border-radius: 3px;
  flex-shrink: 0;
  border: 1px solid rgba(0, 0, 0, 0.15);
}
.ge-grupo-tabla-color code {
  font-size: 0.85rem;
}

input.readonly {
  background: #f3f4f6;
  cursor: default;
}

#gastos-empresa .tabla-gastos-empresa .col-num {
  text-align: right;
}

#gastos-empresa .tabla-gastos-empresa .col-acciones {
  text-align: center;
  white-space: nowrap;
}

#gastos-empresa .tabla-compacta th,
#gastos-empresa .tabla-compacta td {
  padding: 0.4rem 0.6rem;
  font-size: 0.9rem;
}

/* Modal Pago GE - form layout */
.form-row {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-bottom: 1rem;
}
.form-row .form-grupo-half {
  flex: 1;
  min-width: 180px;
}

/* Modal Gasto fijo GE: grupo (flex) + unidad (ancho fijo) en una fila */
#modal-ge-gasto-fijo .ge-gasto-fijo-fila-grupo-unidad {
  align-items: flex-end;
}
#modal-ge-gasto-fijo .ge-gasto-fijo-grupo-col {
  flex: 1 1 0;
  min-width: 0;
}
#modal-ge-gasto-fijo .ge-gasto-fijo-linea-col {
  flex: 0 0 auto;
  min-width: 11rem;
  width: 12rem;
  max-width: 100%;
}
#modal-ge-gasto-fijo .ge-gasto-fijo-linea-col .form-control {
  min-width: 0;
}

/* Modal Proveedor GE: Grupo + Domiciliado + Activo en una fila, alineados al input */
#modal-ge-proveedor .form-row-ge-proveedor-grupo-checks {
  margin-bottom: 1rem;
}
#modal-ge-proveedor .form-row-ge-proveedor-grupo-checks .form-grupo-ge-proveedor-grupo {
  flex: 1 1 100%;
  min-width: 0;
  max-width: 100%;
}
#modal-ge-proveedor .ge-proveedor-grupo-fila {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 1.25rem;
}
#modal-ge-proveedor .ge-proveedor-grupo-fila > input[type="text"] {
  flex: 1 1 10rem;
  min-width: 0;
}
#modal-ge-proveedor .ge-proveedor-check-inline {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  flex: 0 0 auto;
  white-space: nowrap;
  font-weight: 500;
  margin: 0;
  cursor: pointer;
  font-size: 0.92rem;
  line-height: 1.2;
}
#modal-ge-proveedor .ge-proveedor-check-inline input[type="checkbox"] {
  margin: 0;
  flex-shrink: 0;
}

#modal-ge-proveedor-accion .ge-proveedor-accion-panel {
  padding: 0.75rem 0.9rem;
  border-radius: var(--radio);
  background: #fffbeb;
  border: 1px solid #fde68a;
  color: #78350f;
}
#modal-ge-proveedor-accion .ge-proveedor-accion-panel.ge-proveedor-accion-panel--ok {
  background: #f0fdf4;
  border-color: #bbf7d0;
  color: #14532d;
}

.form-separator {
  height: 1px;
  background: var(--color-borde);
  margin: 1rem 0;
}

/* Modal Nómina GE: mes + año + tipo en una fila (tres columnas compactas) */
#modal-ge-nomina .ge-nomina-fila-mes-anio-tipo .form-grupo-half {
  flex: 1 1 0;
  min-width: 0;
}
#modal-ge-nomina .ge-nomina-fila-mes-anio-tipo .form-control {
  min-width: 0;
}

/* Modal Nómina GE: mismo patrón que Mes/Año; última nómina alineada en altura con el select */
.form-row.ge-nomina-fila-trabajador {
  align-items: center;
}
.ge-nomina-ultima-bloque {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.35rem;
}
.ge-nomina-ultima-lbl {
  margin: 0;
  line-height: 1.3;
}
.ge-nomina-ultima-valor {
  font-size: 1.05rem;
  line-height: 1.35;
  font-weight: 700;
}

.ge-totals-bar {
  flex-shrink: 0;
  padding: 0.75rem 1rem;
  background: rgba(117, 69, 22, 0.08);
  border-radius: var(--radio);
  margin-top: 1rem;
  display: flex;
  gap: 1.5rem;
  flex-wrap: wrap;
}

/* Totales en la misma fila que filtros (Pagos / Nóminas GE) */
#gastos-empresa .ge-filtros-derecha-con-totales {
  flex-wrap: wrap;
  justify-content: flex-end;
}

#gastos-empresa .ge-totals-bar.ge-totals-bar--toolbar {
  margin-top: 0;
  margin-bottom: 0;
  min-height: 32.38px;
  padding: 0 0.75rem;
  align-items: center;
  gap: 1rem;
  font-size: 0.9rem;
}

/* Botones acción tablas Gastos empresa: 30px, editar naranja / eliminar rojo suaves */
#gastos-empresa .btn[class*="ge-btn-editar-"],
#gastos-empresa .btn[class*="ge-btn-eliminar-"] {
  height: 30px;
  min-height: 30px;
  box-sizing: border-box;
  padding: 0 0.5rem;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

#gastos-empresa .btn[class*="ge-btn-editar-"] {
  background: rgba(251, 146, 60, 0.18);
  border: 1px solid rgba(234, 88, 12, 0.35);
  color: #9a3412;
}

#gastos-empresa .btn[class*="ge-btn-editar-"]:hover:not(:disabled) {
  background: rgba(251, 146, 60, 0.28);
  border-color: rgba(234, 88, 12, 0.5);
  color: #7c2d12;
}

#gastos-empresa .btn[class*="ge-btn-eliminar-"] {
  background: rgba(248, 113, 113, 0.16);
  border: 1px solid rgba(220, 38, 38, 0.3);
  color: #991b1b;
}

#gastos-empresa .btn[class*="ge-btn-eliminar-"]:hover:not(:disabled) {
  background: rgba(248, 113, 113, 0.26);
  border-color: rgba(220, 38, 38, 0.45);
  color: #7f1d1d;
}

.ge-gastos-cards {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.ge-gasto-card {
  background: var(--color-card);
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  padding: 1rem 1.25rem;
  min-width: 140px;
  box-shadow: var(--sombra-sm);
}

.ge-gasto-label {
  display: block;
  font-size: 0.8rem;
  color: var(--color-texto-suave);
  margin-bottom: 0.25rem;
}

.ge-gasto-card--total-mes-compact .ge-gasto-label {
  font-size: 0.76rem;
  line-height: 1.25;
}

.ge-gasto-valor {
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--color-primario);
}

.ge-gasto-card-m19 {
  min-width: 200px;
}

.ge-m19-card-rows {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin-top: 0.15rem;
}

.ge-m19-card-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.35rem 0.75rem;
}

.ge-m19-card-sub {
  font-size: 0.78rem;
  color: var(--color-texto-suave);
}

.ge-m19-card-valor {
  font-size: 0.98rem;
  font-weight: 600;
}

/* MOD 111 / 115 — liquidación trimestral (solo meses ene/abr/jul/oct) */
.ge-mod-card-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.5rem;
  margin-bottom: 0.15rem;
}

.ge-mod-card-titulo {
  font-size: 0.8rem;
  color: var(--color-texto-suave);
  font-weight: 600;
}

.ge-mod-card-head-sep {
  font-size: 0.75rem;
  color: var(--color-texto-suave);
  opacity: 0.75;
}

.ge-mod-badge-slot {
  display: inline-flex;
  align-items: center;
  min-height: 1.1rem;
}

.ge-mod-card-body {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  margin-top: 0.2rem;
  font-size: 0.8rem;
}

/* Badges MOD y gastos fijos (misma tipografía y mayúsculas) */
.ge-mod-badge {
  display: inline-block;
  align-self: flex-start;
  padding: 0.12rem 0.42rem;
  border-radius: 5px;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

.ge-mod-badge--ok {
  background: rgba(34, 197, 94, 0.2);
  border: 1px solid rgba(22, 163, 74, 0.45);
  color: #166534;
}

.ge-mod-badge--pend {
  background: rgba(248, 113, 113, 0.2);
  border: 1px solid rgba(220, 38, 38, 0.45);
  color: #991b1b;
}

.ge-mod-badge--neu {
  background: rgba(148, 163, 184, 0.2);
  border: 1px solid rgba(100, 116, 139, 0.4);
  color: #475569;
}

.ge-mod-badge--parcial {
  background: rgba(251, 146, 60, 0.18);
  border: 1px solid rgba(234, 88, 12, 0.42);
  color: #9a3412;
}

.ge-mod-badge--disc {
  background: rgba(220, 38, 38, 0.12);
  border: 1px solid rgba(185, 28, 28, 0.45);
  color: #991b1b;
}

/* Badges tipo nómina (Gastos empresa — solo extra / final / finiquito en tabla) */
.ge-nom-tipo-badge {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.12rem 0.45rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  border-radius: 4px;
  vertical-align: middle;
  line-height: 1.2;
}
.ge-nom-tipo-badge--extra {
  background: rgba(59, 130, 246, 0.15);
  border: 1px solid rgba(37, 99, 235, 0.4);
  color: #1d4ed8;
}
.ge-nom-tipo-badge--final {
  background: rgba(124, 58, 237, 0.14);
  border: 1px solid rgba(109, 40, 217, 0.42);
  color: #6d28d9;
}
.ge-nom-tipo-badge--finiquito {
  background: rgba(14, 116, 144, 0.16);
  border: 1px solid rgba(8, 145, 178, 0.45);
  color: #0e7490;
}

.ge-mod-linea {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.75rem;
  line-height: 1.35;
}

.ge-mod-linea--pend {
  padding-top: 0.15rem;
  border-top: 1px dashed rgba(220, 38, 38, 0.35);
}

#gastos-empresa .ge-fijo-fila-mod {
  background: rgba(139, 92, 46, 0.06);
}

#gastos-empresa .ge-fijo-fila-mod .ge-fijo-concepto-txt {
  font-weight: 600;
}

#gastos-empresa .ge-fijo-fila-mod .ge-mod-badge {
  margin-left: 0.4rem;
  vertical-align: middle;
}

.ge-mod-k {
  color: var(--color-texto-suave);
}

.ge-mod-v {
  font-weight: 600;
  color: var(--color-texto);
  white-space: nowrap;
}

.ge-gastos-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
}

@media (max-width: 900px) {
  .ge-gastos-grid { grid-template-columns: 1fr; }
}

/* Gastos empresa: vista «Todos los meses» — 12 tablas en rejilla 3×4 */
.ge-gastos-vista-anual {
  margin-top: 0.5rem;
}

.ge-gastos-anual-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem 1.25rem;
  align-items: start;
}

.ge-gastos-mes-bloque {
  font-size: 12px;
  background: #d3b58f;
  border: 1px solid rgba(90, 60, 30, 0.35);
  border-radius: var(--radio);
  padding: 0;
  overflow: hidden;
  box-shadow: var(--sombra-sm);
}

.ge-gastos-mes-titulo {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.35rem 0.75rem;
  margin: 0;
  padding: 0.5rem 0.75rem;
  font-size: 13px;
  font-weight: 600;
  color: var(--color-primario);
  border-bottom: 1px solid rgba(90, 60, 30, 0.22);
}

.ge-gastos-mes-nombre {
  flex: 1 1 auto;
  min-width: 0;
}

.ge-gastos-mes-total-wrap {
  flex: 0 0 auto;
  display: inline-flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: flex-end;
  gap: 0.15rem 0.35rem;
  max-width: 100%;
  text-align: right;
}

.ge-gastos-mes-total {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* Pendiente junto al total (vista anual): contraste fuerte sobre fondo arena del título */
.ge-gastos-mes-titulo .ge-gastos-mes-pend-paren {
  color: var(--color-eliminar, #a61e1e);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

/* Vista anual: comparación + grupos — mismo cebreado que el resto de tablas (blanco / marrón suave).
   El rgba del zebra es semitransparente: debe dibujarse sobre fondo tarjeta (#fff), no sobre el arena
   del .ge-gastos-mes-bloque, o el tono se ve más marrón que en Resumen por grupo / comparación. */
.ge-gastos-anual-comp-wrap,
.ge-gastos-anual-grupos-wrap {
  background: var(--color-card);
  border-radius: 6px;
}
.ge-gastos-anual-comp-wrap {
  padding: 0.4rem 0.5rem 0.35rem;
}
.ge-gastos-mes-bloque .ge-gastos-anual-comp,
.ge-gastos-mes-bloque .ge-gastos-anual-grupos {
  width: 100%;
  font-size: 11px;
  border-collapse: collapse;
  background: transparent;
  border: 1px solid rgba(90, 60, 30, 0.22);
  border-radius: 6px;
}
.ge-gastos-mes-bloque .ge-gastos-anual-comp tbody tr:nth-child(odd),
.ge-gastos-mes-bloque .ge-gastos-anual-grupos tbody tr:nth-child(odd) {
  background: #fff;
}
.ge-gastos-mes-bloque .ge-gastos-anual-comp tbody tr:nth-child(even),
.ge-gastos-mes-bloque .ge-gastos-anual-grupos tbody tr:nth-child(even) {
  background: rgba(117, 69, 22, 0.08);
}
.ge-gastos-anual-comp th,
.ge-gastos-anual-comp td {
  padding: 0.28rem 0.35rem;
  border-bottom: 1px solid rgba(90, 60, 30, 0.1);
  vertical-align: middle;
}
.ge-gastos-anual-comp tr:last-child td {
  border-bottom: none;
}
.ge-gastos-anual-comp .ge-anual-th-estado,
.ge-gastos-anual-grupos .ge-anual-th-estado {
  text-align: center;
}
.ge-gastos-anual-comp .ge-anual-badges {
  white-space: nowrap;
  text-align: center;
  vertical-align: middle;
}
.ge-gastos-anual-comp .ge-anual-badges .ge-mod-badge,
.ge-gastos-anual-comp .ge-anual-badges .ge-fijo-badge {
  font-size: 0.58rem;
  padding: 0.08rem 0.32rem;
  vertical-align: middle;
}
.ge-gastos-anual-grupos-wrap {
  padding: 0 0.5rem 0.45rem;
}
.ge-gastos-anual-grupos th,
.ge-gastos-anual-grupos td {
  padding: 0.28rem 0.35rem;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
  vertical-align: middle;
}
.ge-gastos-anual-grupos tr:last-child td {
  border-bottom: none;
}
.ge-gastos-anual-grupos .ge-anual-celda-estado {
  text-align: center;
}
.ge-gastos-anual-grupos .ge-anual-celda-estado .ge-fijo-badge,
.ge-gastos-anual-grupos .ge-anual-celda-estado .ge-anual-emdash {
  vertical-align: middle;
}
.ge-anual-emdash {
  color: var(--color-texto-suave);
  opacity: 0.75;
  font-weight: 500;
}
.ge-anual-celda-estado {
  white-space: nowrap;
}

/* Resumen por grupo (vista mensual): diferencia vs mes anterior — más gasto = rojo, menos = verde */
.ge-mes-diff-pos {
  color: #b91c1c;
  font-weight: 600;
}
.ge-mes-diff-neg {
  color: #15803d;
  font-weight: 600;
}
.ge-mes-diff-neu {
  color: inherit;
  font-weight: 500;
}
.ge-mes-diff-pct {
  font-size: 0.88em;
  font-weight: 500;
  opacity: 0.92;
}

/* Gastos fijos del mes: estado frente a pagos imputados */
.ge-fijo-celda-concepto {
  vertical-align: middle;
}
.ge-fijo-concepto-txt {
  vertical-align: middle;
}
.ge-fijo-badge {
  display: inline-block;
  margin-left: 0.45rem;
  padding: 0.12rem 0.42rem;
  border-radius: 5px;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  vertical-align: middle;
  white-space: nowrap;
  line-height: 1.25;
  position: relative;
  z-index: 1;
  min-width: 0;
  text-align: center;
}
.ge-fijo-badge-ok {
  background: rgba(34, 197, 94, 0.2);
  color: #166534;
  border: 1px solid rgba(22, 163, 74, 0.45);
}
.ge-fijo-badge-pend {
  background: rgba(248, 113, 113, 0.2);
  color: #991b1b;
  border: 1px solid rgba(220, 38, 38, 0.45);
}
.ge-fijo-badge-parcial {
  background: rgba(251, 146, 60, 0.18);
  color: #9a3412;
  border: 1px solid rgba(234, 88, 12, 0.42);
}

#gastos-empresa .ge-fijo-badge-ok {
  color: #166534 !important;
}
#gastos-empresa .ge-fijo-badge-pend {
  color: #991b1b !important;
}
#gastos-empresa .ge-fijo-badge-parcial {
  background: rgba(251, 146, 60, 0.18) !important;
  color: #9a3412 !important;
  border-color: rgba(234, 88, 12, 0.42) !important;
}

/* Pagado > importe fijo (revisar duplicados o sobrepago) */
#gastos-empresa .ge-fijo-pagado-exceso {
  color: #b91c1c !important;
  font-weight: 700;
}

/* Comparación Nómina / SS: cebreado invertido (1ª fila marrón suave, 2ª blanca) para que la fila
   «Diferencia» (3ª, sin zebra) quede sobre blanco y contraste con el pie */
#gastos-empresa table.ge-tabla-comparacion tbody tr:nth-child(odd):not(.ge-comparacion-diff) {
  background: rgba(117, 69, 22, 0.08);
}

#gastos-empresa table.ge-tabla-comparacion tbody tr:nth-child(even):not(.ge-comparacion-diff) {
  background: #fff;
}

#gastos-empresa table.ge-tabla-comparacion tbody tr:not(.ge-comparacion-diff):hover {
  background: rgba(117, 69, 22, 0.05);
}

/* Pie de tabla GE y fila Diferencia (marrón); comparación deuda y pie con pendiente (rojo) */
#gastos-empresa tr.ge-fijo-tfoot-pendiente:not(.ge-fijo-tfoot-pendiente--deuda) td,
#gastos-empresa tr.ge-comparacion-diff:not(.ge-comparacion-diff--deuda) td {
  background: rgba(117, 69, 22, 0.07);
  border-top: 2px solid rgba(117, 69, 22, 0.25);
  padding-top: 0.55rem;
  padding-bottom: 0.55rem;
  vertical-align: middle;
  color: inherit;
}

#gastos-empresa tr.ge-comparacion-diff--deuda td,
#gastos-empresa tr.ge-fijo-tfoot-pendiente--deuda td {
  background: rgba(185, 28, 28, 0.07);
  border-top: 2px solid rgba(185, 28, 28, 0.28);
  padding-top: 0.55rem;
  padding-bottom: 0.55rem;
  vertical-align: middle;
  color: #b91c1c !important;
  font-weight: 700;
}

#gastos-empresa tr.ge-comparacion-diff--deuda td .config-hint,
#gastos-empresa tr.ge-fijo-tfoot-pendiente--deuda td .config-hint {
  color: inherit;
  opacity: 0.92;
}

#gastos-empresa .ge-fijo-fila-deuda td.col-num {
  color: #b91c1c !important;
  font-weight: 600;
}

#gastos-empresa .ge-anual-comp-tr-deuda td.col-num {
  color: #b91c1c !important;
  font-weight: 600;
}

/* Espacio entre bloques (título siguiente menos pegado a la tabla anterior) */
#gastos-empresa .ge-gastos-col > .ge-block-title:not(:first-child) {
  margin-top: 1.5rem;
}

/* Fondo tipo tarjeta: el cebreado (tbody tr) y th de #gastos-empresa se aplican igual que en el resto */
.ge-gastos-vista-anual .ge-gastos-mes-tabla-wrap {
  padding: 0.5rem 0.75rem 0.75rem;
  background: var(--color-card);
  border-radius: 0 0 calc(var(--radio) - 2px) calc(var(--radio) - 2px);
}

.ge-gastos-vista-anual .ge-gastos-mes-tabla th {
  font-size: 13px;
}

.ge-gastos-vista-anual .ge-gastos-mes-tabla td {
  font-size: 12px;
}

.ge-gastos-vista-anual .ge-gastos-mes-tabla th,
.ge-gastos-vista-anual .ge-gastos-mes-tabla td {
  padding: 0.35rem 0.5rem;
}

.ge-gastos-vista-anual .tabla-contenedor.ge-gastos-mes-tabla-wrap {
  font-size: 12px;
}

@media (max-width: 1100px) {
  .ge-gastos-anual-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 700px) {
  .ge-gastos-anual-grid {
    grid-template-columns: 1fr;
  }
}

.ge-block-title {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-primario);
  margin: 0 0 0.5rem 0;
  padding-bottom: 0.25rem;
}

.ge-resumen-card {
  background: rgba(117, 69, 22, 0.06);
  border-radius: var(--radio);
  padding: 0.75rem 1rem;
  margin-bottom: 1rem;
}

.ge-resumen-line {
  display: flex;
  justify-content: space-between;
  padding: 0.25rem 0;
}

.ge-balance-cards {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.ge-balance-card {
  background: var(--color-card);
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  padding: 1rem 1.25rem;
  min-width: 140px;
  box-shadow: var(--sombra-sm);
}

.ge-balance-card h4 {
  font-size: 0.85rem;
  color: var(--color-texto-suave);
  margin: 0 0 0.35rem 0;
}

.ge-balance-card--tip {
  cursor: help;
}

.ge-balance-valor {
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--color-primario);
}

/* Balances (subpanel): título e importe centrados en la tarjeta */
#subpanel-ge-balances .ge-balance-cards .ge-balance-card {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
}

#subpanel-ge-balances .ge-balance-cards .ge-balance-card h4 {
  text-align: center;
  width: 100%;
  margin: 0 0 0.35rem 0;
}

#subpanel-ge-balances .ge-balance-valor {
  display: block;
  width: 100%;
  text-align: center;
}

#subpanel-ge-balances .ge-balance-sub {
  text-align: center;
  width: 100%;
}

/* Gastos resumen: tarjeta pendientes con importe > 0 */
.ge-gasto-card.ge-gasto-card--pendiente-alerta .ge-gasto-label,
.ge-gasto-card.ge-gasto-card--pendiente-alerta .ge-gasto-valor {
  color: var(--color-eliminar, #a61e1e);
}

/* Facturación ASO: tarjetas de resumen anual — importes centrados */
#gastos-empresa .ge-faso-resumen-cards.ge-balance-cards .ge-balance-card {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
}

#gastos-empresa .ge-faso-resumen-cards .ge-balance-card h4 {
  text-align: center;
  width: 100%;
}

.ge-config-scroll {
  overflow-y: auto;
  flex: 1;
  min-height: 0;
}

.ge-config-seccion {
  margin-bottom: 2rem;
}

.ge-config-seccion h3 {
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-primario);
  margin: 0 0 0.75rem 0;
}

.ge-config-seccion .btn {
  margin-bottom: 0.75rem;
}

#gastos-empresa .tabla-balances-meses {
  width: 100%;
}

/* Por encima de #gastos-empresa .tabla-gastos-empresa th (text-align:left) y td.col-num (right) */
#gastos-empresa .tabla-contenedor.tabla-gastos-empresa .tabla-balances-meses thead th {
  font-size: 0.8rem;
  padding: 0.5rem 0.4rem;
  text-align: center !important;
  color: #fff !important;
  background: var(--color-primario) !important;
}

/* Facturación ASO: meses con nombre completo */
#gastos-empresa .ge-faso-tabla.tabla-balances-meses thead th:not(:first-child) {
  font-size: 0.72rem;
  font-weight: 600;
  padding: 0.45rem 0.22rem;
  line-height: 1.2;
  hyphens: auto;
  word-break: break-word;
}

#gastos-empresa .tabla-contenedor.tabla-gastos-empresa .tabla-balances-meses thead th:first-child {
  text-align: left !important;
}

#gastos-empresa .tabla-balances-meses tbody th.ge-bal-concepto {
  text-align: left;
  font-weight: 600;
  white-space: nowrap;
  color: var(--color-texto, #1f2937) !important;
}

#gastos-empresa .tabla-balances-meses tbody th.ge-bal-concepto .config-hint {
  color: var(--color-texto-suave, #6b7280) !important;
  font-weight: 500;
}

#gastos-empresa .tabla-balances-meses td.ge-bal-col-num {
  text-align: center !important;
  font-variant-numeric: tabular-nums;
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-row-ingreso td {
  background: rgba(46, 125, 50, 0.08);
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-row-gasto td {
  background: rgba(230, 81, 0, 0.08);
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-row-balance td {
  background: rgba(25, 118, 210, 0.12);
  font-weight: 600;
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-row-balance th.ge-bal-concepto {
  background: rgba(25, 118, 210, 0.12);
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-row-balance-total td,
#gastos-empresa .tabla-balances-meses tr.ge-bal-row-balance-total th.ge-bal-concepto {
  background: rgba(13, 71, 161, 0.18);
  border-top: 2px solid rgba(25, 118, 210, 0.45);
  font-weight: 700;
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-row-ingreso th.ge-bal-concepto {
  background: rgba(46, 125, 50, 0.06);
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-row-gasto th.ge-bal-concepto {
  background: rgba(230, 81, 0, 0.06);
}

#gastos-empresa .tabla-balances-meses .ge-bal-acc-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.55rem;
  height: 1.55rem;
  margin: 0 0.35rem 0 0;
  padding: 0;
  vertical-align: middle;
  border: 1px solid var(--color-primario, #1976d2);
  background: #fff;
  border-radius: 4px;
  cursor: pointer;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1;
  color: var(--color-primario, #1976d2);
  flex-shrink: 0;
}

#gastos-empresa .tabla-balances-meses .ge-bal-acc-btn:hover {
  background: rgba(25, 118, 210, 0.1);
}

#gastos-empresa .tabla-balances-meses .ge-bal-acc-btn:focus-visible {
  outline: 2px solid var(--color-primario, #1976d2);
  outline-offset: 2px;
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-child th.ge-bal-concepto-child {
  padding-left: 2.25rem;
  font-weight: 500;
  font-size: 0.92em;
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-child-fact td {
  background: rgba(46, 125, 50, 0.05);
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-child-fact th.ge-bal-concepto {
  background: rgba(46, 125, 50, 0.04);
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-child-gasto td {
  background: rgba(230, 81, 0, 0.05);
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-child-gasto th.ge-bal-concepto {
  background: rgba(230, 81, 0, 0.04);
}

#gastos-empresa .ge-faso-tabla .ge-faso-celda-compact {
  vertical-align: middle;
  padding: 0.4rem 0.35rem;
  font-size: 0.85rem;
  text-align: center;
}

/* No usar display:flex en <td>: rompe columnas de la tabla; el apilado va en .ge-faso-cell-inner */
#gastos-empresa .ge-faso-tabla .ge-faso-cell-inner.ge-faso-cell-stack {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.2rem;
  min-height: 2.85rem;
  width: 100%;
  box-sizing: border-box;
}

#gastos-empresa .ge-faso-cell-btn {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0.4rem 0.35rem;
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 6px;
  background: #fafaf9;
  cursor: pointer;
  text-align: center;
  font: inherit;
  color: inherit;
}

#gastos-empresa .ge-faso-cell-btn.ge-faso-cell-stack {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.2rem;
  min-height: 2.85rem;
}

#gastos-empresa .ge-faso-cell-btn.ge-faso-cell-stack .ge-faso-pend,
#gastos-empresa .ge-faso-cell-btn.ge-faso-cell-stack .ge-faso-mini {
  width: 100%;
  text-align: center;
}

#gastos-empresa .ge-faso-readonly .ge-faso-cell-stack .ge-faso-pend,
#gastos-empresa .ge-faso-readonly .ge-faso-cell-stack .ge-faso-mini {
  width: 100%;
  text-align: center;
}

#gastos-empresa .ge-faso-cell-btn:hover {
  background: rgba(25, 118, 210, 0.08);
  border-color: rgba(25, 118, 210, 0.35);
}

#gastos-empresa .ge-faso-pend {
  display: block;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

#gastos-empresa .ge-faso-mini {
  display: block;
  font-size: 0.72rem;
  opacity: 0.88;
  margin-top: 0;
  font-variant-numeric: tabular-nums;
}

#gastos-empresa .ge-faso-mini.ge-faso-saldo--debe {
  color: #b91c1c !important;
  opacity: 1;
  font-weight: 600;
}

#gastos-empresa .ge-faso-mini.ge-faso-saldo--favor {
  color: #15803d !important;
  opacity: 1;
  font-weight: 600;
}

#gastos-empresa .ge-faso-readonly .ge-faso-pend {
  font-weight: 600;
}

/* Facturación ASO: primera columna legible (misma línea que Balances; anula fondo primario de .tabla-gastos-empresa th) */
#gastos-empresa .tabla-gastos-empresa.ge-faso-tabla tbody th.ge-bal-concepto {
  background: #f8fafc !important;
  color: var(--color-texto, #1f2937) !important;
  border-right: 1px solid var(--color-borde, #e5e7eb);
  vertical-align: middle;
}

#gastos-empresa .ge-faso-tabla tr.ge-faso-row-cdiat th.ge-bal-concepto {
  background: rgba(46, 125, 50, 0.08) !important;
}

#gastos-empresa .ge-faso-tabla tr.ge-faso-row-pvs th.ge-bal-concepto {
  background: rgba(25, 118, 210, 0.08) !important;
}

#gastos-empresa .ge-faso-tabla tr.ge-faso-row-dona th.ge-bal-concepto {
  background: rgba(124, 58, 237, 0.07) !important;
}

#gastos-empresa .ge-faso-tabla tr.ge-faso-row-cdiat td {
  background: rgba(46, 125, 50, 0.04);
}

#gastos-empresa .ge-faso-tabla tr.ge-faso-row-pvs td {
  background: rgba(25, 118, 210, 0.05);
}

#gastos-empresa .ge-faso-tabla tr.ge-faso-row-dona td {
  background: rgba(124, 58, 237, 0.04);
}

#gastos-empresa .ge-faso-tabla tfoot .ge-faso-row-total-mes th,
#gastos-empresa .ge-faso-tabla tfoot .ge-faso-row-total-mes td {
  background: rgba(30, 58, 95, 0.09);
  border-top: 2px solid rgba(117, 69, 22, 0.35);
  font-weight: 600;
  vertical-align: middle;
}

#gastos-empresa .ge-faso-tabla tfoot .ge-faso-th-total-mes {
  color: var(--color-primario, #754516) !important;
  text-align: left !important;
  background: rgba(117, 69, 22, 0.1) !important;
}

#gastos-empresa .ge-faso-tabla tfoot .ge-faso-td-total-mes {
  font-variant-numeric: tabular-nums;
  text-align: center !important;
  color: var(--color-texto, #1f2937);
}

#gastos-empresa .ge-don-resumen-line {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.25rem 0.35rem;
}

#gastos-empresa .ge-don-total {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

#gastos-empresa .ge-don-toggle {
  border: 1px solid rgba(0, 0, 0, 0.12);
  background: #fff;
  border-radius: 4px;
  cursor: pointer;
  padding: 0.1rem 0.35rem;
  font-size: 0.85rem;
  line-height: 1.2;
}

#gastos-empresa .ge-don-panel {
  margin-top: 0.4rem;
  padding: 0.35rem 0.25rem 0;
  border-top: 1px dashed rgba(0, 0, 0, 0.1);
  text-align: left;
}

#gastos-empresa .ge-don-lineas {
  margin: 0 0 0.35rem 0;
  padding-left: 1.1rem;
  font-size: 0.78rem;
  max-height: 7rem;
  overflow: auto;
}

#gastos-empresa .ge-don-li {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.35rem;
  margin-bottom: 0.25rem;
}

#gastos-empresa .ge-don-btn-del {
  flex-shrink: 0;
  padding: 0.1rem 0.35rem;
  min-width: auto;
  line-height: 1.2;
}

#modal-ge-faso-dona .ge-faso-dona-resultados {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin-top: 0.35rem;
  max-height: 10rem;
  overflow: auto;
}

#modal-ge-faso-dona .ge-faso-dona-cand {
  display: block;
  width: 100%;
  text-align: left;
  padding: 0.4rem 0.5rem;
  border: 1px solid var(--color-borde, #e5e7eb);
  border-radius: 6px;
  background: #fff;
  cursor: pointer;
  font: inherit;
}

#modal-ge-faso-dona .ge-faso-dona-cand:hover {
  background: rgba(25, 118, 210, 0.06);
}

#modal-ge-faso-dona .ge-faso-dona-cand-sel {
  border-color: var(--color-primario, #1976d2);
  background: rgba(25, 118, 210, 0.1);
}

.ge-bal-pos {
  color: #1b5e20 !important;
}

.ge-bal-neg {
  color: #b71c1c !important;
}

.ge-balance-card .ge-balance-valor.ge-bal-pos {
  color: #1b5e20;
}

.ge-balance-card .ge-balance-valor.ge-bal-neg {
  color: #b71c1c;
}

/* Balances GE: comparación mes anterior (discreto) */
#gastos-empresa .tabla-balances-meses .ge-bal-num-in {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.28rem;
  width: 100%;
}

#gastos-empresa .tabla-balances-meses .ge-bal-num-txt {
  flex: 0 1 auto;
  text-align: right;
  min-width: 0;
}

#gastos-empresa .tabla-balances-meses .ge-bal-mom {
  font-size: 0.58rem;
  line-height: 1;
  font-weight: 700;
  flex-shrink: 0;
  opacity: 0.92;
  user-select: none;
}

#gastos-empresa .tabla-balances-meses .ge-bal-mom--good-up {
  color: #2e7d32;
}

#gastos-empresa .tabla-balances-meses .ge-bal-mom--good-down {
  color: #2e7d32;
}

#gastos-empresa .tabla-balances-meses .ge-bal-mom--bad-up {
  color: #c62828;
}

#gastos-empresa .tabla-balances-meses .ge-bal-mom--bad-down {
  color: #c62828;
}

#gastos-empresa .tabla-balances-meses .ge-bal-mom--eq {
  color: rgba(0, 0, 0, 0.28);
  font-weight: 600;
  font-size: 0.65rem;
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-sep .ge-bal-sep-th {
  text-align: left;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  padding: 0.45rem 0.35rem 0.25rem;
  color: rgba(0, 0, 0, 0.65);
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  background: rgba(25, 118, 210, 0.06);
}

#gastos-empresa .tabla-balances-meses tr.ge-bal-sep--total .ge-bal-sep-th--total {
  margin-top: 0.15rem;
  border-top: 2px solid rgba(25, 118, 210, 0.35);
  background: rgba(25, 118, 210, 0.1);
}

/* Facturación: acordeón ingresos PVS / Asociación */
#facturacion .fact-ingresos-acordeon-wrap {
  margin-top: 0.75rem;
  padding: 0 0.25rem;
}

#facturacion .fact-ingresos-details {
  margin-bottom: 0.35rem;
  border: 1px solid var(--color-borde, #e5e7eb);
  border-radius: 8px;
  padding: 0.35rem 0.5rem;
  background: rgba(0, 0, 0, 0.02);
}

#facturacion .fact-ingresos-details summary {
  cursor: pointer;
  font-weight: 600;
  font-size: 0.9rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  list-style: none;
}

#facturacion .fact-ingresos-details summary::-webkit-details-marker {
  display: none;
}

#facturacion .fact-ingresos-details .fact-ingresos-summary-val {
  font-weight: 700;
  font-size: 1rem;
  flex-shrink: 0;
}

/* Balances GE: filas Asociación */
#gastos-empresa .ge-bal-row-asoc td:first-child {
  padding-left: 1rem;
  font-size: 0.88rem;
}

/* Asistente alta empleado (5 pasos) */
.form-req { color: var(--color-peligro, #b91c1c); font-weight: 600; }
.form-legend-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.modal-asistente-alta-empleado .modal-header {
  flex-shrink: 0;
}
.modal-contenido.modal-asistente-alta-empleado {
  max-width: min(36rem, 96vw);
  width: 100%;
  max-height: min(92vh, 42rem);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-sizing: border-box;
}
.modal-asistente-alta-empleado .modal-body.asistente-alta-body {
  min-height: 12rem;
  max-height: min(48vh, 26rem);
  overflow-y: auto;
  flex: 1 1 auto;
  padding: 1rem 1.25rem 1.25rem;
}
.asistente-alta-indicador {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0.45rem 1.25rem;
  flex-shrink: 0;
  background: var(--color-fondo-suave, #f8fafc);
  border-bottom: 1px solid var(--color-borde, #e2e8f0);
  font-size: 0.8rem;
  color: #64748b;
}
.asistente-alta-indicador .asistente-alta-paso-dot {
  padding: 0.2rem 0.5rem;
  border-radius: 6px;
  background: #e2e8f0;
  color: #475569;
}
.asistente-alta-indicador .asistente-alta-paso-dot.asistente-paso-ok {
  background: #dcfce7;
  color: #166534;
}
.asistente-alta-indicador .asistente-alta-paso-dot.asistente-paso-activo {
  background: var(--color-primario, #78350f);
  color: #fff;
  font-weight: 600;
}
.asistente-alta-paso { display: block; }
.asistente-alta-paso.oculto { display: none !important; }
.asistente-alta-plantillas {
  border: 1px solid var(--color-borde, #e2e8f0);
  border-radius: 8px;
  padding: 0.65rem 0.75rem;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.asistente-alta-radio {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.5rem;
  cursor: pointer;
  font-size: 0.92rem;
}
.asistente-alta-radio-hint {
  flex-basis: 100%;
  margin-left: 1.5rem;
  font-size: 0.8rem;
  color: #64748b;
  font-weight: normal;
}
.asistente-alta-addons {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  font-size: 0.9rem;
}
.modal-asistente-alta-empleado .modal-footer.asistente-alta-footer {
  padding: 1rem 1.25rem 1.25rem;
  margin: 0;
  border-top: 1px solid var(--color-borde, #e2e8f0);
  background: var(--color-card, #fff);
  flex-shrink: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}
.asistente-alta-footer .btn {
  min-height: 2.5rem;
  padding: 0.5rem 1.1rem;
}
.asistente-alta-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-left: auto;
}

/* Modal Factura individual — compacto, colores planos del tema, mismos “grupos” que modal tratamientos */
.modal-contenido.modal-factura-individual {
  max-width: min(900px, 96vw);
  width: 100%;
  max-height: none;
  overflow: visible;
  display: flex;
  flex-direction: column;
  padding: 0;
}
.modal-factura-individual-header {
  background: var(--color-primario);
  color: #fff;
  border-radius: var(--radio-lg) var(--radio-lg) 0 0;
  padding: 0.65rem 1rem;
  flex-shrink: 0;
}
.modal-factura-individual-header h2 {
  color: #fff;
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
}
.modal-factura-individual-header .modal-cerrar {
  color: #fff;
  opacity: 0.92;
}
.modal-factura-individual-body {
  max-height: min(76vh, 600px);
  overflow-y: auto;
  overflow-x: hidden;
  padding: 0.55rem 0.75rem 0.75rem;
  background: var(--color-card);
}
#modal-factura-individual .fi-modal-grupo {
  margin-bottom: 0.55rem;
}
#modal-factura-individual .fi-modal-grupo > h3 {
  font-size: 0.88rem;
  margin-bottom: 0.4rem;
  padding-bottom: 0.25rem;
}
.modal-fi-fila-superior {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 200px;
  gap: 0.55rem;
  align-items: stretch;
  margin-bottom: 0.25rem;
}
@media (max-width: 720px) {
  .modal-fi-fila-superior {
    grid-template-columns: 1fr;
  }
}
.fi-fila-busqueda-expediente {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(100px, 132px);
  gap: 0.45rem 0.55rem;
  align-items: end;
  margin-bottom: 0.45rem;
}
@media (max-width: 540px) {
  .fi-fila-busqueda-expediente {
    grid-template-columns: 1fr;
  }
}
#modal-factura-individual .fi-grupo-buscar-cliente {
  position: relative;
  min-width: 0;
}
#modal-factura-individual .fi-grupo-expediente-inline {
  min-width: 0;
}
#modal-factura-individual .fi-grupo-expediente-inline label {
  white-space: nowrap;
}
#modal-factura-individual .fi-form-grid-datos {
  gap: 0.35rem 0.5rem;
}
#modal-factura-individual .fi-form-grid-datos .fi-dni-nino-fila {
  grid-column: 1 / -1;
}
#modal-factura-individual .fi-form-grid-datos .fi-dir-mail-fila {
  grid-column: auto;
  min-width: 0;
}
@media (max-width: 540px) {
  #modal-factura-individual .fi-form-grid-datos .fi-dir-mail-fila {
    grid-column: 1 / -1;
  }
}
/* Facturación: tonos verdes (sustituye el ámbar de modal-grupo-tratamientos) */
#modal-factura-individual .modal-grupo-fi-facturacion-verde {
  background: #ecfdf5;
  border-color: #10b981;
}
#modal-factura-individual .modal-grupo-fi-facturacion-verde > h3 {
  color: #047857;
  border-color: #6ee7b7;
}
#modal-factura-individual .modal-grupo-fi-facturacion-verde .form-grupo {
  margin-bottom: 0.4rem;
}
#modal-factura-individual .modal-grupo-fi-facturacion-verde .form-grupo:last-child {
  margin-bottom: 0;
}
.fi-sugerencias .fi-sug-centro {
  color: var(--color-texto-suave);
  font-size: 0.82em;
  font-weight: 400;
}
#modal-factura-individual .fi-input-compact {
  width: 100%;
  min-height: 2rem;
  padding: 0.2rem 0.45rem;
  font-size: 0.875rem;
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
}
.fi-span-2 {
  grid-column: span 2;
}
@media (max-width: 720px) {
  .fi-span-2 {
    grid-column: span 1;
  }
}
.fi-sugerencias {
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  z-index: 10060;
  background: var(--color-card);
  border: 1px solid var(--color-borde);
  border-radius: var(--radio);
  margin: 4px 0 0;
  padding: 0.2rem 0;
  list-style: none;
  min-width: 0;
  max-height: 180px;
  overflow-y: auto;
  box-shadow: var(--sombra-md);
}
.fi-sugerencias li {
  padding: 0.38rem 0.55rem;
  cursor: pointer;
  font-size: 0.85rem;
  line-height: 1.3;
}
.fi-sugerencias li:hover:not(.fi-sugerencia-vacio) {
  background: #e0eef9;
}
.fi-sugerencia-vacio {
  cursor: default;
  color: var(--color-texto-suave);
  font-size: 0.82rem;
  font-style: italic;
}
.fi-tabla-servicios-wrap {
  overflow-x: auto;
  margin-bottom: 0.4rem;
}
.fi-tabla-servicios {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.82rem;
  table-layout: fixed;
}
#modal-factura-individual .fi-tabla-servicios th:nth-child(1),
#modal-factura-individual .fi-tabla-servicios td:nth-child(1) {
  width: 36%;
  min-width: 0;
}
#modal-factura-individual .fi-tabla-servicios th:nth-child(2),
#modal-factura-individual .fi-tabla-servicios td:nth-child(2) {
  width: 4.25rem;
}
#modal-factura-individual .fi-tabla-servicios th:nth-child(3),
#modal-factura-individual .fi-tabla-servicios td:nth-child(3) {
  width: 5.25rem;
}
#modal-factura-individual .fi-tabla-servicios th:nth-child(4),
#modal-factura-individual .fi-tabla-servicios td:nth-child(4) {
  width: 7rem;
  min-width: 6.75rem;
  text-align: right;
  white-space: nowrap;
  padding-left: 0.55rem;
  padding-right: 0.45rem;
  font-variant-numeric: tabular-nums;
}
#modal-factura-individual .fi-tabla-servicios th:nth-child(5),
#modal-factura-individual .fi-tabla-servicios td:nth-child(5) {
  width: 2.5rem;
  text-align: center;
}
#modal-factura-individual .fi-tabla-servicios .fi-td-linea-total {
  white-space: nowrap;
}
.fi-tabla-servicios th {
  background: var(--color-primario);
  color: #fff;
  padding: 0.35rem 0.4rem;
  text-align: left;
  font-weight: 600;
}
.fi-tabla-servicios td {
  padding: 0.28rem 0.35rem;
  border-bottom: 1px solid var(--color-borde);
  vertical-align: middle;
}
.fi-tabla-servicios select,
.fi-tabla-servicios input {
  width: 100%;
  padding: 0.28rem 0.35rem;
  border-radius: var(--radio);
  border: 1px solid var(--color-borde);
  font-size: 0.82rem;
}
#modal-factura-individual .fi-modal-totales {
  width: 100%;
  max-width: none;
  margin-left: 0;
}
#modal-factura-individual .fi-totales-caja {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.45rem 1.15rem;
  justify-content: flex-start;
}
#modal-factura-individual .fi-totales-caja .fi-total-line {
  flex: 0 0 auto;
  min-width: 8.75rem;
  max-width: none;
  display: inline-flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.65rem;
  padding: 0.3rem 0.45rem;
  box-sizing: border-box;
}
#modal-factura-individual .fi-totales-caja .fi-total-line span {
  flex-shrink: 0;
}
#modal-factura-individual .fi-totales-caja .fi-total-line strong {
  flex-shrink: 0;
  margin-left: auto;
  text-align: right;
  white-space: nowrap;
  padding-left: 0.35rem;
  font-variant-numeric: tabular-nums;
}
#modal-factura-individual .fi-totales-descuento {
  flex: 0 0 auto;
  width: 8.75rem;
  max-width: 100%;
  margin: 0;
}
#modal-factura-individual .fi-totales-descuento label {
  font-size: 0.78rem;
}
#modal-factura-individual .fi-totales-caja .fi-total-final {
  flex: 0 1 auto;
  min-width: 7.5rem;
  margin-top: 0;
  padding-top: 0;
  padding-bottom: 0;
  margin-left: auto;
  padding-left: 0.85rem;
  border-top: none;
  border-left: 3px solid #059669;
  font-size: 1.05rem;
}
@media (max-width: 560px) {
  #modal-factura-individual .fi-totales-caja .fi-total-final {
    margin-left: 0;
    width: 100%;
    border-left: none;
    border-top: 2px solid #059669;
    padding-left: 0;
    padding-top: 0.4rem;
    margin-top: 0.25rem;
  }
}
.fi-total-line {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.28rem 0;
  font-size: 0.88rem;
}
.fi-acciones {
  margin-top: 0.65rem;
  padding-top: 0.6rem;
  border-top: 1px solid var(--color-borde);
  justify-content: flex-start;
  gap: 0.6rem;
}
.btn-factura-individual {
  background: var(--color-primario);
  color: #fff;
  border: none;
}
.btn-factura-individual:hover {
  background: var(--color-primario-hover);
  filter: none;
}
.badge-fact-individual {
  display: inline-block;
  margin-right: 0.35rem;
  padding: 0.1rem 0.35rem;
  border-radius: 4px;
  font-size: 0.7rem;
  font-weight: 700;
  background: #b8860b;
  color: #fff;
  vertical-align: middle;
}

/* ===== Tipo de caso CDIAT (semáforo permanente) ===== */
.caso-cdiat-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  vertical-align: middle;
  flex-shrink: 0;
  box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.08);
}
.caso-cdiat-dot--1 { background: #22c55e; }
.caso-cdiat-dot--2 { background: #f97316; }
.caso-cdiat-dot--3 { background: #ef4444; }

.col-caso-cdiat {
  width: 2rem;
  min-width: 2rem;
  max-width: 2rem;
  padding-left: 0.25rem !important;
  padding-right: 0.25rem !important;
  text-align: center;
  vertical-align: middle;
}
#pacientes .col-caso-cdiat,
#valoracion #subpanel-valoracion .col-caso-cdiat,
#subpanel-acompanamiento .col-caso-cdiat {
  width: 2rem;
  min-width: 2rem;
  max-width: 2rem;
}

.badge-mod-lista-espera {
  margin-left: 0.35rem;
  vertical-align: middle;
}

/* ===== Acompañamiento CDIAT (Valoración) ===== */
.acompanamiento-formulario {
  margin-bottom: 0.75rem;
}
.acompanamiento-form-caja {
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-left: 4px solid #22c55e;
  border-radius: var(--radio);
  padding: 0.65rem 0.85rem;
}
.acompanamiento-form-titulo {
  margin: 0 0 0.55rem;
  font-size: 0.82rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #166534;
}
.acompanamiento-form-fila {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.5rem 0.65rem;
}
.acompanamiento-campo {
  min-width: 0;
}
.acompanamiento-campo label {
  display: block;
  font-size: 0.78rem;
  font-weight: 600;
  color: #166534;
  margin-bottom: 0.2rem;
}
.acompanamiento-campo-paciente {
  flex: 1 1 14rem;
  max-width: 22rem;
}
.acompanamiento-campo-fecha {
  flex: 0 0 9.25rem;
}
.acompanamiento-campo-terapeuta {
  flex: 0 0 11rem;
}
.acompanamiento-campo-notas {
  flex: 1 1 12rem;
  max-width: 20rem;
}
.acompanamiento-campo-acciones {
  flex: 0 0 auto;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}
#subpanel-acompanamiento .acompanamiento-form-caja .dp-combobox-wrap {
  min-width: 0;
  max-width: none;
  width: 100%;
}
#subpanel-acompanamiento .acompanamiento-form-caja .dp-combobox-input,
#subpanel-acompanamiento .acompanamiento-form-caja input.filtro-select,
#subpanel-acompanamiento .acompanamiento-form-caja select.filtro-select {
  box-sizing: border-box;
  width: 100%;
  height: 2.25rem;
  padding: 0.4rem 0.55rem;
  font-size: 0.875rem;
  line-height: 1.25;
  border: 1px solid var(--color-borde, #e2e8f0);
  border-radius: var(--radio);
  background-color: #fff;
  color: var(--color-texto, #1e293b);
}
#subpanel-acompanamiento .acompanamiento-form-caja select.filtro-select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  padding-right: 1.75rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b5210' d='M2.5 4.5L6 8l3.5-3.5' stroke='%236b5210' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.5rem center;
  background-size: 12px;
  cursor: pointer;
}
#subpanel-acompanamiento .acompanamiento-form-caja .dp-combobox-input:focus,
#subpanel-acompanamiento .acompanamiento-form-caja input.filtro-select:focus,
#subpanel-acompanamiento .acompanamiento-form-caja select.filtro-select:focus {
  outline: none;
  border-color: var(--color-primario, #754516);
  box-shadow: 0 0 0 2px rgba(117, 69, 22, 0.12);
}
#subpanel-acompanamiento .acompanamiento-form-caja #acmp-btn-guardar,
#subpanel-acompanamiento .acompanamiento-form-caja #acmp-btn-cancelar {
  box-sizing: border-box;
  height: 2.25rem;
  min-height: 2.25rem;
  padding: 0.4rem 0.85rem;
  font-size: 0.875rem;
  white-space: nowrap;
}
#subpanel-acompanamiento .filtros-acompanamiento-grid {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.45rem 0.65rem;
}
#subpanel-acompanamiento .filtros-acompanamiento-grid .fv-field {
  flex: 0 0 auto;
  min-width: 0;
}
#subpanel-acompanamiento .filtros-acompanamiento-grid .fv-field:first-child {
  flex: 1 1 10rem;
  min-width: 9rem;
  max-width: 16rem;
}
#subpanel-acompanamiento .filtros-acompanamiento-grid .fv-field:nth-child(2) {
  flex: 0 0 11rem;
}
#subpanel-acompanamiento .filtros-acompanamiento-grid .fv-field-check {
  flex: 0 0 auto;
}
#subpanel-acompanamiento .filtros-acompanamiento-grid select.filtro-select,
#subpanel-acompanamiento .filtros-acompanamiento-grid input.filtro-select {
  box-sizing: border-box;
  width: 100%;
  height: 2.25rem;
  padding: 0.4rem 0.55rem;
  font-size: 0.875rem;
  line-height: 1.25;
}
#subpanel-acompanamiento .filtros-acompanamiento-grid select.filtro-select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  padding-right: 1.75rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b5210' d='M2.5 4.5L6 8l3.5-3.5' stroke='%236b5210' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.5rem center;
  background-size: 12px;
}
.tabla-acompanamiento .col-acmp-exp {
  font-family: ui-monospace, monospace;
  font-size: 0.85rem;
  white-space: nowrap;
}
.tabla-acompanamiento .col-acmp-notas {
  max-width: 16rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tabla-acompanamiento .col-acmp-acciones {
  white-space: nowrap;
  text-align: center;
}
.tabla-acompanamiento th.col-acmp-acciones {
  text-align: center;
}
.tabla-lista-espera .col-le-acciones .btn,
.tabla-acompanamiento .col-acmp-acciones .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-width: 4.15rem;
  height: 1.625rem;
  padding: 0 0.45rem !important;
  font-size: 0.78rem !important;
  font-weight: 500;
  line-height: 1;
  border-radius: var(--radio);
  vertical-align: middle;
  margin: 0 0.12rem;
}
.tabla-lista-espera .col-le-acciones .btn-editar,
.tabla-acompanamiento .col-acmp-acciones .btn-editar {
  border: 1px solid #ea580c !important;
}
.tabla-lista-espera .col-le-acciones .btn-marron,
.tabla-acompanamiento .col-acmp-acciones .btn-marron {
  border: 1px solid var(--color-primario, #754516) !important;
}
.badge-acmp-estado {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 600;
  padding: 0.15rem 0.4rem;
  border-radius: 4px;
}
.badge-acmp-estado-activo {
  background: #dcfce7;
  color: #166534;
}
.badge-acmp-estado-cerrado {
  background: #f3f4f6;
  color: #4b5563;
}
#lista-acompanamiento tr.fila-acmp-cerrada {
  opacity: 0.78;
}
@media (max-width: 720px) {
  .acompanamiento-campo-paciente,
  .acompanamiento-campo-notas,
  .acompanamiento-campo-fecha,
  .acompanamiento-campo-terapeuta {
    flex: 1 1 100%;
    max-width: none;
  }
  .acompanamiento-campo-acciones {
    flex: 1 1 100%;
    justify-content: flex-start;
  }
  #subpanel-acompanamiento .filtros-acompanamiento-grid .fv-field:first-child,
  #subpanel-acompanamiento .filtros-acompanamiento-grid .fv-field:nth-child(2) {
    flex: 1 1 100%;
    max-width: none;
  }
}
@media (min-width: 721px) and (max-width: 1100px) {
  .acompanamiento-campo-paciente,
  .acompanamiento-campo-notas {
    flex: 1 1 calc(50% - 0.35rem);
    max-width: none;
  }
  .acompanamiento-campo-fecha,
  .acompanamiento-campo-terapeuta {
    flex: 1 1 calc(50% - 0.35rem);
  }
}

/* Selector tipo de caso en modal paciente CDIAT */
.e2-caso-cdiat-grupo {
  grid-column: 1 / -1;
  margin-top: 0.15rem;
}
.e2-caso-cdiat-label {
  display: block;
  font-size: 0.85rem;
  font-weight: 600;
  color: #a67c3a !important;
  margin-bottom: 0.45rem;
}
.e2-caso-cdiat-radios {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.e2-caso-cdiat-opcion {
  margin: 0;
  cursor: pointer;
}
.e2-caso-cdiat-opcion input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
  pointer-events: none;
}
.e2-caso-cdiat-opcion-inner {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.3rem 0.65rem;
  border-radius: 999px;
  border: 1px solid #e2c78a;
  background: #fffaf0;
  color: #6b4f1d;
  font-size: 0.82rem;
  font-weight: 600;
  line-height: 1.2;
  transition: border-color 0.15s, box-shadow 0.15s, background 0.15s;
}
.e2-caso-cdiat-opcion input:focus-visible + .e2-caso-cdiat-opcion-inner {
  outline: 2px solid #d4a84b;
  outline-offset: 2px;
}
.e2-caso-cdiat-opcion input:checked + .e2-caso-cdiat-opcion-inner {
  border-color: #b8860b;
  background: #fff;
  box-shadow: 0 0 0 2px rgba(212, 168, 75, 0.35);
}
.e2-caso-cdiat-opcion--1 input:checked + .e2-caso-cdiat-opcion-inner {
  border-color: #22c55e;
  box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.25);
}
.e2-caso-cdiat-opcion--2 input:checked + .e2-caso-cdiat-opcion-inner {
  border-color: #f97316;
  box-shadow: 0 0 0 2px rgba(249, 115, 22, 0.25);
}
.e2-caso-cdiat-opcion--3 input:checked + .e2-caso-cdiat-opcion-inner {
  border-color: #ef4444;
  box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.22);
}
.e2-caso-cdiat-opcion-inner .caso-cdiat-dot {
  width: 8px;
  height: 8px;
}

/* ===== Lista de espera CDIAT ===== */
.lista-espera-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-right: 4px;
  vertical-align: middle;
  flex-shrink: 0;
}
.lista-espera-dot--1 { background: #22c55e; }
.lista-espera-dot--2 { background: #f97316; }
.lista-espera-dot--3 { background: #ef4444; }

.badge-triaje-le {
  display: inline-block;
  padding: 0.15rem 0.45rem;
  border-radius: 4px;
  font-size: 0.75rem;
  font-weight: 600;
  white-space: nowrap;
}
.badge-triaje-le--1 { background: #dcfce7; color: #166534; }
.badge-triaje-le--2 { background: #ffedd5; color: #c2410c; }
.badge-triaje-le--3 { background: #fee2e2; color: #b91c1c; }

.tabla-lista-espera .col-le-acciones {
  white-space: nowrap;
  text-align: center;
}
.tabla-lista-espera th.col-le-acciones {
  text-align: center;
}
.tabla-lista-espera .col-le-tutor .badge-tutor-cdiat {
  white-space: nowrap;
}
.tabla-lista-espera tr.fila-le-completada {
  opacity: 0.72;
}

/* Modal alta lista de espera — compacto, 2 columnas, bloques con color */
.modal-contenido.modal-lista-espera-alta {
  max-width: min(34rem, 94vw);
  overflow: hidden;
}
.modal-lista-espera-alta-body {
  padding: 0.75rem 1.15rem 0.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}
.modal-lista-espera-alta .form-grupo {
  margin-bottom: 0;
}
.modal-lista-espera-alta .form-grupo label {
  font-size: 0.76rem;
  font-weight: 600;
  color: #475569;
  margin-bottom: 0.2rem;
}
.modal-lista-espera-alta .form-grupo select,
.modal-lista-espera-alta .form-grupo input[type="text"] {
  font-size: 0.85rem;
  padding: 0.35rem 0.5rem;
  min-height: 2rem;
}
.modal-lista-espera-alta .modal-grupo {
  margin-bottom: 0;
  padding: 0.55rem 0.75rem 0.65rem;
}
.modal-lista-espera-alta .modal-grupo h3 {
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 0.4rem;
  padding-bottom: 0.25rem;
}
.modal-grupo-le-paciente {
  background: linear-gradient(165deg, #ecfdf5 0%, #d1fae5 100%);
  border-color: #059669;
}
.modal-grupo-le-paciente h3 {
  color: #047857;
  border-color: #6ee7b7;
}
.modal-grupo-le-solicitud {
  background: linear-gradient(165deg, #eff6ff 0%, #dbeafe 100%);
  border-color: #2563eb;
}
.modal-grupo-le-solicitud h3 {
  color: #1d4ed8;
  border-color: #93c5fd;
}
.modal-grupo-le-prioridad {
  background: linear-gradient(165deg, #fff7ed 0%, #ffedd5 100%);
  border-color: #ea580c;
}
.modal-grupo-le-prioridad h3 {
  color: #c2410c;
  border-color: #fdba74;
}
.lista-espera-alta-nombre {
  margin: 0 0 0.45rem;
  font-size: 0.95rem;
  font-weight: 700;
  color: #0f172a;
  line-height: 1.25;
}
.lista-espera-alta-readonly {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.35rem 0.65rem;
  margin: 0;
  padding: 0;
  background: transparent;
  border-radius: 0;
}
.lista-espera-alta-campo {
  font-size: 0.82rem;
  color: #1e293b;
  min-width: 0;
}
.lista-espera-alta-campo-tutor span:last-child {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lista-espera-alta-campo .lista-espera-label {
  display: block;
  font-size: 0.68rem;
  color: #64748b;
  margin-bottom: 0.05rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.lista-espera-alta-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.5rem 0.75rem;
  align-items: end;
}
.lista-espera-alta-grid-full {
  grid-column: 1 / -1;
}
.lista-espera-campo-trat {
  --le-trat-accent: #94a3b8;
  padding-left: 0.45rem;
  margin-left: -0.45rem;
  border-left: 3px solid var(--le-trat-accent);
  border-radius: 2px;
}
.lista-espera-campo-trat[data-trat="PSIC_PEDAG"] { --le-trat-accent: #7c3aed; }
.lista-espera-campo-trat[data-trat="TAT"] { --le-trat-accent: #059669; }
.lista-espera-campo-trat[data-trat="LOGO"] { --le-trat-accent: #2563eb; }
.lista-espera-campo-trat[data-trat="FISIO"] { --le-trat-accent: #d97706; }
.lista-espera-campo-trat[data-trat="TO"] { --le-trat-accent: #db2777; }
.lista-espera-campo-trat[data-trat=""] { --le-trat-accent: #94a3b8; }
.lista-espera-campo-triaje[data-triaje="1"] .lista-espera-select-triaje {
  border-color: #86efac;
  background-color: #f0fdf4;
}
.lista-espera-campo-triaje[data-triaje="2"] .lista-espera-select-triaje {
  border-color: #fdba74;
  background-color: #fff7ed;
}
.lista-espera-campo-triaje[data-triaje="3"] .lista-espera-select-triaje {
  border-color: #fca5a5;
  background-color: #fef2f2;
}
.modal-lista-espera-advertencia {
  margin: 0;
  padding: 0.45rem 0.65rem;
  font-size: 0.78rem;
  color: #b45309;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 6px;
}
.modal-lista-espera-footer.form-acciones {
  margin-top: 0;
  padding: 0.85rem 1.15rem 1rem;
  border-top: 1px solid #e2e8f0;
  background: #fafafa;
}
.modal-lista-espera-footer .btn {
  min-width: 5.5rem;
}
.lista-espera-buscar-resultados {
  max-height: 160px;
  overflow-y: auto;
  border: 1px solid #e2e8f0;
  border-radius: 4px;
  margin-top: 0.35rem;
}
.lista-espera-buscar-item {
  display: block;
  width: 100%;
  text-align: left;
  padding: 0.4rem 0.6rem;
  border: none;
  background: #fff;
  cursor: pointer;
  font-size: 0.85rem;
}
.lista-espera-buscar-item:hover {
  background: #f1f5f9;
}
.modal-lista-espera-advertencia {
  color: #b45309;
}
.btn-lista-espera-add {
  font-size: 0.78rem;
  padding: 0.35rem 0.55rem;
}

/* Valoración / Tratamientos (CDIAT): Lista esp. marrón */
.btn-lista-espera-embudo {
  background: var(--color-primario, #754516) !important;
  color: #fff !important;
  border: 1px solid #5d3812 !important;
  font-weight: 600;
}
.btn-lista-espera-embudo:hover:not(:disabled) {
  background: #5d3812 !important;
  color: #fff !important;
  border-color: #4a2d0e !important;
}
.btn-lista-espera-embudo:disabled {
  opacity: 0.5;
}

/* Tratamientos CDIAT: export Excel verde bosque */
.btn-tratamientos-excel-cdiat {
  background: #228b22 !important;
  color: #fff !important;
  border: 1px solid #1a6b1a !important;
  font-weight: 600;
}
.btn-tratamientos-excel-cdiat:hover:not(:disabled) {
  background: #1d7a1d !important;
  color: #fff !important;
  border-color: #166534 !important;
}

/* Resumen Recogida: botón Lista de espera (ámbar) */
.btn-lista-espera-resumen,
#modal-resumen-paciente-lista-espera {
  background: linear-gradient(180deg, #fcd34d 0%, #fbbf24 100%);
  color: #78350f;
  border: 1px solid #f59e0b;
  font-weight: 600;
}
.btn-lista-espera-resumen:hover:not(:disabled),
#modal-resumen-paciente-lista-espera:hover:not(:disabled) {
  background: linear-gradient(180deg, #fbbf24 0%, #f59e0b 100%);
  color: #451a03;
  border-color: #d97706;
}

@media (max-width: 480px) {
  .lista-espera-alta-grid {
    grid-template-columns: 1fr;
  }
  .lista-espera-alta-readonly {
    grid-template-columns: 1fr 1fr;
  }
  .lista-espera-alta-campo-tutor {
    grid-column: 1 / -1;
  }
}
