/*!
 * Spart.css - SPA Art
 * Support for Spart.js,
 * a lightweight raw JavaScript library for building web user interfaces.
 *
 * (c) 2025 Rhyscitlema
 * Released under the MIT License
 */

.spa-container, .spa-page {
	height: 100%;
}

.spa-page:not(.active) {
	display: none;
}

#toast-container {
	position: fixed;
	bottom: 20px;
	left: 50%;
	transform: translateX(-50%);
	z-index: 10000;
	pointer-events: none;
	text-align: center;
}

.toast-message {
	margin-bottom: 10px;
	opacity: 0;
	transition: opacity 0.3s ease;
}

.toast-message span {
	display: inline-block;
	background: rgba(0, 0, 0, 0.8);
	color: white;
	padding: 12px 20px;
	border-radius: 6px;
	font-size: 14px;
	max-width: 400px;
	pointer-events: auto;
}

.busy-indicator {
	margin-bottom: 10px;
	padding: 12px 20px;
}

.busy-indicator span {
	scale: 1.25;
	color: red;
}

.loading-spinner {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 80px;
	height: 80px;
	border: 12px solid #f3f3f3;
	border-top: 12px solid #3498db;
	border-radius: 50%;
	transform: translate(-50%, -50%);
	animation: spin-spinner 1s linear infinite;
}

@keyframes spin-spinner {
	from { transform: translate(-50%, -50%) rotate(0deg); }
	to { transform: translate(-50%, -50%) rotate(360deg); }
}

.progress-bar-container {
	position: relative;
	height: 24px;
	width: 80%;
	max-width: 400px;
	background: #e0e0e0;
	border-radius: 8px;
	overflow: hidden;
	box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);
}

.progress-bar-content {
	width: 0%;
	height: 100%;
	background: #76c7c0;
}

.progress-bar-content .smooth {
	transition: width 0.4s ease;
}

.progress-bar-text {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	color: #333;
	font-size: 0.9em;
	font-weight: bold;
	pointer-events: none;
	user-select: none;
}
