/* Estilos compartidos de los listados con filtros del front (profesional, clinica,
   entidad). Se aplican por clase: .filters, .listHeader y .tabla-listado. */

/* ---------- Encabezado con el toggle de filtros a la altura del titulo ---------- */
.listHeader {
	display: flex;
	align-items: center;
	gap: 10px;
}
.listHeader h4 { flex: 1; }
.listHeader .toggleFiltros {
	border: 1px solid #ccd2d9;
	background: #fff;
	color: #5a6672;
	border-radius: 4px;
	padding: 7px 12px;
	cursor: pointer;
}
.listHeader .toggleFiltros i { font-size: 16px; line-height: 1; vertical-align: middle; }

/* ---------- Panel de filtros ---------- */
.filters {
	background: #fff;
	border: 1px solid #e3e6ea;
	border-radius: 8px;
	padding: 18px 18px 14px;
	margin-bottom: 22px;
	box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
.filters .filtersGrid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 14px 18px;
}
.filters .form-label {
	display: block;
	font-size: 12px;
	font-weight: 600;
	color: #5a6672;
	margin-bottom: 4px;
	text-transform: uppercase;
	letter-spacing: .3px;
}
.filters .form-control {
	width: 100%;
	height: 38px;
	border: 1px solid #ccd2d9;
	border-radius: 4px;
	padding: 6px 10px;
	box-shadow: none;
}
.filters .form-control:focus {
	border-color: #2f5f8f;
	box-shadow: 0 0 0 2px rgba(47,95,143,.12);
}
/* El form-inline de Bootstrap deja los grupos en inline-block y no se estiran
   dentro de la grilla. */
.filters .itemFilterInput,
.filters .form-group,
.filters .form-line { display: block; width: 100%; }
.filters .form-group, .filters .form-line { margin-bottom: 0; }
.filters .bootstrap-select { width: 100% !important; }
.filters .buttonsFilter {
	text-align: right;
	padding-top: 16px;
	margin-top: 14px;
	border-top: 1px solid #eef1f4;
}
@media (max-width: 991px) {
	.filters .filtersGrid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	.filters .filtersGrid { grid-template-columns: 1fr; }
}

/* ---------- Tabla ---------- */
.tabla-listado { border-collapse: separate; border-spacing: 0; }
.tabla-listado > thead > tr > th {
	background: #f4f6f8;
	border-bottom: 1px solid #dfe4e9;
	font-size: 12px;
	font-weight: 700;
	color: #5a6672;
	text-transform: uppercase;
	letter-spacing: .3px;
	padding: 12px 10px;
}
.tabla-listado > tbody > tr > td {
	vertical-align: middle !important;
	padding: 11px 10px;
}
.tabla-listado > tbody > tr:nth-child(even) > td { background-color: #f6f8f9; }
.tabla-listado > tbody > tr:hover > td { background-color: #eef3f6; }

/* ---------- Encabezados ordenables ---------- */
.th-orden a {
	color: inherit;
	text-decoration: none;
	display: block;
	white-space: nowrap;
}
.th-orden a:hover, .th-orden a:focus { color: #2f5f8f; text-decoration: none; }
.th-orden i { margin-left: 5px; opacity: .35; font-size: 12px; }
.th-orden.orden-activo { color: #2f5f8f; }
.th-orden.orden-activo i { opacity: 1; }

/* ---------- Badges de estado ---------- */
.badge-estado {
	display: inline-block;
	padding: 4px 12px;
	border-radius: 12px;
	font-size: 12px;
	font-weight: 600;
	white-space: nowrap;
}
.est-pendiente { background:#fdf3d7; color:#8a6d1f; }
.est-pagado    { background:#dbeafe; color:#1e529b; }
.est-atendido  { background:#d9f0e3; color:#1f6b45; }
.est-cancelado { background:#f6dcdc; color:#9b2c2c; }
.est-ausente   { background:#e9edf0; color:#5a6672; }
