/* --- General & Variables --- */
:root {
	--primary-color: #007bff;
	--primary-hover-color: #0056b3;
	--secondary-color: #6c757d;
	--secondary-hover-color: #5a6268;
	--success-color: #28a745;
	--danger-color: #dc3545;
	--light-gray: #f8f9fa;
	--border-color: #dee2e6;
	--text-color: #333;
	--header-bg: #343a40;
	--nav-bg: #495057;
}

body {
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	line-height: 1.6;
	margin: 0;
	background-color: #f4f4f4;
	color: var(--text-color);
}
body.modal-open{
	overflow: hidden;
}

/* --- Header & Footer --- */
header {
	background-color: var(--header-bg);
	color: #fff;
	padding: 1rem 2rem;
	display: flex;
	justify-content: space-between;
	align-items: center;
}

header h1 {
	margin: 0;
	font-size: 1.5rem;
}

footer {
	background-color: var(--header-bg);
	color: #fff;
	text-align: center;
	padding: 1rem;
	margin-top: 2rem;
}

/* --- Main Content Area --- */
main {
	padding: 20px;
	max-width: 1200px;
	margin: 0 auto;
	min-height: 70vh;
}

.content-box {
	padding: 2rem;
	border-radius: 5px;
	background: #fff;
	box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}

/* --- Navigation --- */
nav#main-nav {
	background-color: var(--nav-bg);
	padding: 0 1rem;
	display: flex;
	justify-content: center;
	box-shadow: 0 2px 4px rgba(0,0,0,0.1);
	flex-wrap: wrap;
}

nav#main-nav a {
	color: white;
	padding: 14px 20px;
	text-decoration: none;
	text-align: center;
	transition: background-color 0.3s;
}

nav#main-nav a:hover {
	background-color: #666;
}

nav#main-nav a.active {
	background-color: var(--primary-color);
}

/* --- User Info & Botón Login/Logout --- */
#user-info {
	display: flex;
	align-items: center;
	gap: 15px;
	text-align: center;
}

#user-info span {
	font-weight: bold;
}

/* ¡Sorpresa! Estilo de botón moderno para Login/Logout */
.button, #logout-button {
	display: inline-block;
	background-color: var(--primary-color);
	color: #fff;
	padding: 8px 15px;
	border: none;
	border-radius: 4px;
	text-decoration: none;
	font-size: 0.9rem;
	cursor: pointer;
	transition: background-color 0.3s, transform 0.1s;
}

.button:hover, #logout-button:hover {
	background-color: var(--primary-hover-color);
	transform: translateY(-1px);
}

#logout-button {
	background-color: var(--secondary-color);
}
#logout-button:hover {
	background-color: var(--secondary-hover-color);
}

/* --- Tablas de Datos --- */
.data-table {
	width: 100%;
	border-collapse: collapse;
	margin-top: 1.5rem;
}

.data-table th, .data-table td {
	padding: 12px 15px;
	border: 1px solid var(--border-color);
	text-align: left;
}

.data-table thead tr {
	background-color: var(--light-gray);
}

.data-table tbody tr:hover {
	background-color: #f1f1f1;
}

/* --- Estilo para la Fila Seleccionada en una Tabla --- */
tr.is-selected {
	background-color: var(--primary-color) !important;
	color: #fff !important;
}

tr.is-selected td {
	color: #fff !important;
}

/* --- Botones de Acción (Tabla y Fila) --- */
.table-actions {
	margin-bottom: 1rem;
}

.action-button, .action-button-row {
	background-color: var(--primary-color);
	color: #fff;
	padding: 10px 18px;
	border: none;
	border-radius: 4px;
	cursor: pointer;
	font-size: 1rem;
	transition: background-color 0.3s;
}
.action-button:hover {
	background-color: var(--primary-hover-color);
}

/* --- ¡NUEVA REGLA! Estilo para CUALQUIER botón que esté deshabilitado --- */
button:disabled,
button[disabled] {
	background-color: #cccccc; /* Un gris claro para indicar inactividad */
	color: #666666;          /* Texto más oscuro para legibilidad */
	cursor: not-allowed;     /* El cursor de "no permitido" */
	transform: none;         /* Elimina el efecto de "levantamiento" al pasar el ratón */
	box-shadow: none;        /* Elimina cualquier sombra */
}

/* Botones de fila más pequeños */
.action-button-row {
	padding: 6px 12px;
	font-size: 0.85rem;
	margin-right: 5px;
}

/* --- Formularios (Login y futuros) --- */
.login-box, .form-box {
	max-width: 400px;
	margin: 2rem auto;
	padding: 2rem;
	background: #fff;
	border-radius: 5px;
	box-shadow: 0 4px 10px rgba(0,0,0,0.1);
}
.login-box .button{
	margin: 2px auto;
	display: block;
}
.form-group {
	margin-bottom: 1rem;
}
.form-group label {
	display: block;
	margin-bottom: 5px;
}
.form-group input, .form-group textarea, .form-group select {
	width: 100%;
	padding: 8px;
	box-sizing: border-box;
}

/* --- Mensajes y Utilidades --- */
.error-message {
	color: var(--danger-color);
	background-color: #f8d7da;
	border: 1px solid #f5c6cb;
	padding: 1rem;
	border-radius: 4px;
	margin-top: 1rem;
}

/* ---- [HIDDEN] oculto o invisible*/
.is-hidden{
	display: none;
	opacity: 0;
	pointer-events: none; /* No se puede hacer clic cuando está oculto */
}
/* --- [NUEVO] Loading Spinner --- */
.loader {
	border: 5px solid #f3f3f3; /* Light grey */
	border-top: 5px solid var(--primary-color); /* Blue */
	border-radius: 50%;
	width: 40px;
	height: 40px;
	animation: spin 1s linear infinite;
	margin: 2rem auto;
}

@keyframes spin {
	0% { transform: rotate(0deg); }
	100% { transform: rotate(360deg); }
}

/* --- [NUEVO] Estilos para el Modal de Formularios --- */
#modal-container {
	position: fixed; /* Se queda fijo en la pantalla */
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: rgba(0, 0, 0, 0.5); /* Fondo oscuro semitransparente */
	display: flex;
	justify-content: center;
	align-items: center;
	z-index: 1000;
	opacity: 1;
	transition: opacity 0.3s ease-in-out;
}

#modal-container.modal-hidden {
	display: none;
	opacity: 0;
	pointer-events: none; /* No se puede hacer clic cuando está oculto */
}

#modal-content {
	background: #fff;
	padding: 2rem;
	border-radius: 8px;
	width: 90%;
	max-width: 600px;
	box-shadow: 0 5px 15px rgba(0,0,0,0.3);
	transform: scale(1);
	transition: transform 0.3s ease-in-out;
	display: flex;
	flex-direction: column; /* Apila los elementos (header, form, footer) verticalmente */
	width: 90%;
	max-width: 600px; /* Un ancho máximo para pantallas grandes */
	height: 90%;
	max-height: 90vh; /* La altura máxima será el 90% de la altura de la ventana */
}

#modal-container.modal-hidden #modal-content {
	transform: scale(0.9);
}
#modal-content .form-box{
	overflow-y: auto;
	flex-grow:1;
	min-width: 80%;
}
.modal-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	border-bottom: 1px solid var(--border-color);
	padding: 1rem;
	margin-bottom: 1.5rem;
	flex-shrink:0;
}

.modal-header h2 {
	margin: 0;
}
.modal-footer {
	padding: 1rem;
	border-top: 1px solid var(--border-color);
	text-align: right;
	flex-shrink:0;
}
#modal-close-btn {
	background: none;
	border: none;
	font-size: 1.5rem;
	cursor: pointer;
	color: var(--secondary-color);
}