.w-100 {
	width: 100% !important;
}

.text-center {
	text-align: center !important;
}

.text-start {
	text-align: left !important;
}

.text-end {
	text-align: right !important;
}

.d-flex {
	display: flex;
	align-items: center;
}

.d-flex.flex-column {
	flex-direction: column;
}

.d-flex.flex-row {
	flex-direction: row;
}

.text-decoration-none {
	text-decoration: none !important;
}


.text-blue {
	color: var(--blue) !important;
}

small {
	font-size: 12px;
}

/* Base alert styles */
.alert {
	position: relative;
	padding: 1rem 1rem;
	border: 1px solid transparent;
	border-radius: 0.375rem;
	font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
	font-size: 1rem;
	line-height: 1.5;
	width: 100%;
	display: flex;
	gap: 10px;
	align-items: center;
}

/* Warning alert (amarillo) */
.alert.alert-warning {
	color: #664d03;
	background-color: #fff3cd;
	border-color: #ffecb5;
}

.alert.alert-warning::before {
	content: "\F33B";
}

/* Success alert (verde) */
.alert.alert-success {
	color: #0a3622;
	background-color: #d1e7dd;
	border-color: #badbcc;
}

.alert.alert-success::before {
	content: "\F26B";
}

/* Danger/Error alert (rojo) */
.alert.alert-danger {
	color: #58151c;
	background-color: #f8d7da;
	border-color: #f5c2c7;
}

.alert.alert-danger::before {
	content: "\F623";
}

/* Info alert (cyan) */
.alert.alert-info {
	color: #055160;
	background-color: #cff4fc;
	border-color: #9eeaf9;
}

.alert.alert-info::before {
	content: "\F431";
}

/* Opcional: Estilo para el ícono usando pseudo-elemento */
.alert::before {
	font-family: 'bootstrap-icons' !important;
	display: inline-block;
	margin-right: 0.5rem;
	font-weight: bold;
}

/* Opcional: Enlace dentro de las alertas */
.alert a {
	color: inherit;
	text-decoration: underline;
	font-weight: 600;
}

.alert a:hover {
	color: inherit;
	text-decoration: none;
}

.exams thead th {
	background: #cff0ff !important;
}



.overlay-blur {
	backdrop-filter: blur(5px);
	-webkit-backdrop-filter: blur(5px);
	position: fixed;
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	z-index: 99998;
	background-color: rgb(255 255 255 / 65%);
}

/* Estilo del contenedor y la palabra bionet */
.logo-container-loading {
	position: fixed;
	/* Necesario para posicionar las pelotitas */
	display: inline-block;
	width: 100px;
	z-index: 99999;
	top: 50%;
	left: 50%;
	margin: -27px 0 0 -50px;
}

.logo-container-loading .logo-bionet {
	display: block;
	width: 100%;
	height: auto;
}

/* Estilo común para todas las pelotitas */
.logo-container-loading .pelotita {
	position: absolute;
	animation-name: zoomInConPausa;
	animation-duration: 3.8s;
	/* 0.8s de zoom + 3s de pausa */
	animation-timing-function: ease-out;
	animation-fill-mode: forwards;
	animation-iteration-count: infinite;
	display: block;
	border-radius: 100%;
	transform: scale(0);
}

/* Retrasos individuales para el efecto "ola" */
.logo-container-loading .pelotita-1 {
	animation-delay: 0.5s;
	top: 4px;
	left: 46px;
	width: 11px;
	height: 11px;
	background-color: #f68b1f;
}

.logo-container-loading .pelotita-2 {
	animation-delay: 1s;
	top: 9.5px;
	left: 57.5px;
	width: 11px;
	height: 11px;
	background-color: #f68b1f;
}

.logo-container-loading .pelotita-3 {
	animation-delay: 1.5s;
	top: 17.3px;
	left: 49.5px;
	width: 7px;
	height: 7px;
	background-color: #fbb416;
}

/* NUEVOS FOTOGRAMAS CLAVE CON PAUSA */
@keyframes zoomInConPausa {
	0% {
		transform: scale(0);
		opacity: 0;
	}

	/* El zoom ocurre en el primer 21% de la animación (0.8s de 3.8s) */
	21% {
		transform: scale(1);
		opacity: 1;
	}

	/* Permanece visible y en tamaño normal el resto del tiempo */
	100% {
		transform: scale(1);
		opacity: 1;
	}
}