:root {
  --navy: #3E618C;
  --navy-oscuro: #2C4A6E;
  --rosa: #E8B59A;
  --fondo: #F5F7FA;
  --texto: #24313E;
  --gris: #6B7785;
  --borde: #DDE3E9;
  --blanco: #FFFFFF;
  --verde: #2E7D5B;
  --verde-fondo: #E6F4EC;
  --amarillo: #A16A0C;
  --amarillo-fondo: #FFF3DE;
  --rojo: #B3261E;
  --rojo-fondo: #FCEAE9;
  --azul: #2455A4;
  --azul-fondo: #E6EEFB;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  background: var(--fondo);
  color: var(--texto);
}

.vista { min-height: 100vh; }

/* ---------- Login ---------- */
#vista-login {
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(160deg, var(--navy-oscuro) 0%, var(--navy) 60%, var(--rosa) 140%);
  padding: 24px;
}

/* Mismo tipo de correccion que en .modal-fondo: esta regla de arriba
   trae un "display" explicito, que le gana a la regla por defecto del
   navegador para [hidden] sin importar la especificidad (una regla de
   autor con "display" siempre le gana a la regla de user-agent). Sin
   esto, cuando app.js le pone el atributo "hidden" a #vista-login tras
   un login exitoso, la pantalla de login se queda visible tapando el
   panel de abajo aunque el login y la carga de datos hayan funcionado
   bien. */
#vista-login[hidden] {
  display: none;
}

.tarjeta-login {
  background: var(--blanco);
  border-radius: 16px;
  padding: 36px 32px;
  width: 100%;
  max-width: 380px;
  box-shadow: 0 20px 50px rgba(0,0,0,0.25);
}

.tarjeta-login h1 {
  margin: 0 0 4px;
  font-size: 1.5rem;
  color: var(--navy-oscuro);
}

.subtitulo {
  margin: 0 0 24px;
  color: var(--gris);
  font-size: 0.9rem;
}

#form-login label {
  display: block;
  font-size: 0.85rem;
  font-weight: 600;
  margin: 14px 0 6px;
}

#form-login input {
  width: 100%;
  padding: 11px 12px;
  border: 1px solid var(--borde);
  border-radius: 8px;
  font-size: 0.95rem;
}

#form-login input:focus {
  outline: none;
  border-color: var(--navy);
}

#login-boton {
  width: 100%;
  margin-top: 22px;
  padding: 12px;
  background: var(--navy);
  color: var(--blanco);
  border: none;
  border-radius: 8px;
  font-size: 1rem;
  font-weight: 600;
  cursor: pointer;
}

#login-boton:hover { background: var(--navy-oscuro); }
#login-boton:disabled { opacity: 0.6; cursor: default; }

.mensaje-error {
  background: var(--rojo-fondo);
  color: var(--rojo);
  padding: 10px 12px;
  border-radius: 8px;
  font-size: 0.85rem;
  margin: 16px 0 0;
}

.mensaje-info {
  background: var(--azul-fondo);
  color: var(--azul);
  padding: 10px 14px;
  border-radius: 8px;
  font-size: 0.9rem;
  margin: 0 0 16px;
}

/* ---------- Panel ---------- */
.barra-superior {
  background: var(--navy-oscuro);
  color: var(--blanco);
  padding: 14px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.barra-superior .separador { margin: 0 8px; opacity: 0.5; }
.barra-superior #usuario-nombre { opacity: 0.9; font-size: 0.9rem; }

.boton-secundario {
  background: transparent;
  color: var(--blanco);
  border: 1px solid rgba(255,255,255,0.5);
  padding: 7px 14px;
  border-radius: 6px;
  cursor: pointer;
  font-size: 0.85rem;
}

.boton-secundario:hover { background: rgba(255,255,255,0.12); }

.contenido {
  max-width: 1100px;
  margin: 0 auto;
  padding: 24px;
}

.filtros {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 18px;
}

.filtro {
  background: var(--blanco);
  border: 1px solid var(--borde);
  padding: 8px 14px;
  border-radius: 20px;
  font-size: 0.85rem;
  cursor: pointer;
  color: var(--texto);
}

.filtro.activo {
  background: var(--navy);
  border-color: var(--navy);
  color: var(--blanco);
}

.tabla-wrap {
  background: var(--blanco);
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid var(--borde);
  overflow-x: auto;
}

table { width: 100%; border-collapse: collapse; font-size: 0.9rem; min-width: 720px; }

thead { background: var(--navy-oscuro); }
thead th { color: var(--blanco); text-align: left; padding: 12px 14px; font-weight: 600; }

tbody tr { border-top: 1px solid var(--borde); }
tbody tr:nth-child(even) { background: #FAFBFC; }
tbody td { padding: 12px 14px; vertical-align: top; }

.nombre-secundario { color: var(--gris); font-size: 0.8rem; }

.badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 0.78rem;
  font-weight: 600;
  white-space: nowrap;
}

.badge-gris { background: #EEF1F4; color: var(--gris); }
.badge-amarillo { background: var(--amarillo-fondo); color: var(--amarillo); }
.badge-verde { background: var(--verde-fondo); color: var(--verde); }
.badge-rojo { background: var(--rojo-fondo); color: var(--rojo); }
.badge-azul { background: var(--azul-fondo); color: var(--azul); }

.boton-ver {
  background: var(--navy);
  color: var(--blanco);
  border: none;
  padding: 7px 14px;
  border-radius: 6px;
  font-size: 0.82rem;
  cursor: pointer;
}
.boton-ver:hover { background: var(--navy-oscuro); }

/* ---------- Modal ---------- */
.modal-fondo {
  position: fixed;
  inset: 0;
  background: rgba(20,30,40,0.55);
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 40px 16px;
  overflow-y: auto;
  z-index: 50;
}

/* Sin esto, el "hidden" del HTML no alcanza a apagar el
   "display: flex" de arriba (una regla propia con display siempre
   le gana a la regla por defecto del navegador para [hidden]) y el
   fondo del modal se queda interceptando los clics de toda la
   pantalla aunque se vea invisible. */
.modal-fondo[hidden] {
  display: none;
}

.modal {
  background: var(--blanco);
  border-radius: 14px;
  max-width: 560px;
  width: 100%;
  padding: 28px;
  position: relative;
}

.modal.modal-grande { max-width: 760px; }

.modal-cerrar {
  position: absolute;
  top: 14px;
  right: 16px;
  background: none;
  border: none;
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  color: var(--gris);
}

.modal h2 { margin-top: 0; color: var(--navy-oscuro); }

.modal-fila {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 0;
  border-bottom: 1px solid var(--borde);
  font-size: 0.92rem;
}
.modal-fila span:first-child { color: var(--gris); }

.modal-acciones {
  margin-top: 20px;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.boton {
  padding: 10px 16px;
  border-radius: 8px;
  border: none;
  font-size: 0.88rem;
  font-weight: 600;
  cursor: pointer;
}

.boton-primario { background: var(--navy); color: var(--blanco); }
.boton-primario:hover { background: var(--navy-oscuro); }

.boton-exito { background: var(--verde); color: var(--blanco); }
.boton-exito:hover { opacity: 0.9; }

.boton-peligro { background: var(--rojo); color: var(--blanco); }
.boton-peligro:hover { opacity: 0.9; }

.boton-outline { background: var(--blanco); color: var(--navy); border: 1px solid var(--navy); }
.boton-outline:hover { background: #F0F4F8; }

.boton:disabled { opacity: 0.5; cursor: default; }

.comprobante-imagen {
  max-width: 100%;
  border-radius: 8px;
  border: 1px solid var(--borde);
  margin-top: 10px;
}

.bloque-reprogramar select {
  width: 100%;
  padding: 9px 10px;
  border: 1px solid var(--borde);
  border-radius: 8px;
  margin: 8px 0 12px;
}

.texto-ayuda { font-size: 0.82rem; color: var(--gris); margin: 4px 0 0; }

/* ---------- Atención clínica (vista especialista) ---------- */
.seccion-clinica {
  border: 1px solid var(--borde);
  border-radius: 10px;
  padding: 16px;
  margin-top: 16px;
}

.seccion-clinica h3 {
  margin: 0 0 12px;
  font-size: 0.95rem;
  color: var(--navy-oscuro);
  padding-left: 10px;
  border-left: 3px solid var(--navy);
}

.campo { margin-bottom: 12px; }

.campo label {
  display: block;
  font-size: 0.82rem;
  font-weight: 600;
  margin-bottom: 4px;
}

.campo input, .campo textarea, .campo select {
  width: 100%;
  padding: 9px 10px;
  border: 1px solid var(--borde);
  border-radius: 8px;
  font-size: 0.9rem;
  font-family: inherit;
}

.campo textarea { resize: vertical; min-height: 60px; }

.fila-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.fila-3col { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }

.item-medicamento {
  border: 1px solid var(--borde);
  border-radius: 8px;
  padding: 12px;
  margin-bottom: 10px;
  position: relative;
  background: #FAFBFC;
}

.item-medicamento .quitar-item {
  position: absolute;
  top: 8px;
  right: 8px;
  background: none;
  border: none;
  color: var(--rojo);
  cursor: pointer;
  font-size: 0.8rem;
}

.boton-agregar-item {
  background: var(--blanco);
  border: 1px dashed var(--navy);
  color: var(--navy);
  padding: 8px 14px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 0.85rem;
  width: 100%;
}

.lista-generados {
  list-style: none;
  padding: 0;
  margin: 10px 0 0;
  font-size: 0.85rem;
}

.lista-generados li {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 0;
  border-top: 1px solid var(--borde);
}

.lista-generados a {
  color: var(--navy);
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
}
.lista-generados a:hover { text-decoration: underline; }

.historial-atencion-item {
  border-top: 1px solid var(--borde);
  padding: 10px 0;
  font-size: 0.87rem;
}
.historial-atencion-item .fecha { color: var(--gris); font-size: 0.8rem; }
