/* /frontend/css/loader.css */
/**
* A-FUCKING-DOCS: FINAL VISUAL TUNING.
* 1. Geometry: Concentric rings (White Inner / Yellow Outer) preserved.
* 2. Core (Logo): METABOLIC PULSE ENGAGED.
* - Animation: 'heartbeat' @ 1.2s (Rapid Rhythm).
* - Rotation: STRICTLY PROHIBITED (Scale transformation only).
* 3. Container: Clean borders, static positioning.
*/
#app-loader {
	position: fixed;
	top: 0;
	left: 0;
	width: 100vw;
	height: 100vh;
	background-color: #000000;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	z-index: 9999;
}
/* CONTAINER: STATIC & CLEAN */
#app-loader .loader-spinner {
	margin: 0;
	display: flex;
	justify-content: center;
	align-items: center;
	position: relative;
	width: 180px;
	height: 180px;
	flex-shrink: 0;
	animation: none !important;
	transform: none !important;
	border: 0 !important;
	outline: none !important;
	box-shadow: none !important;
	background: none !important;
}
/* INNER RING (WHITE): Smaller, INSIDE */
#app-loader .loader-spinner::before {
	content: "";
	position: absolute;
	top: 8px;
	left: 8px;
	width: 164px;
	height: 164px;
	border-radius: 50%;
	border: 8px solid transparent;
	border-top-color: #FFFFFF;
	border-left-color: #FFFFFF;
	box-sizing: border-box;
	z-index: 2;
	animation: spin 1s linear infinite !important;
}
/* OUTER RING (YELLOW): Full Size, OUTSIDE */
#app-loader .loader-spinner::after {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	border-radius: 50%;
	border: 8px solid transparent;
	border-color: transparent #FFFF00 #FFFF00 transparent;
	box-sizing: border-box;
	z-index: 1;
	animation: spin-reverse 1.5s linear infinite !important;
	display: block !important;
}
/* LOGO: PULSATING CORE (NO ROTATION) */
#app-loader .loader-logo {
	width: 140px;
	height: 140px;
	border-radius: 50%;
	background-color: #000;
	box-shadow: inset 0 0 40px #000, 0 0 15px rgba(0,0,0,0.8);
	display: block;
	z-index: 5;
	border: 0 !important;
	/* Silicon Valley Lingo: Enabling the heartbeat metric. 1.2s cycle for urgency. */
	animation: heartbeat 1.2s ease-in-out infinite !important;
}
#app-loader .loader-text-top {
	color: #FFFF00;
	font-size: 20px;
	letter-spacing: 5px;
	text-transform: uppercase;
	text-align: center;
	margin: 0 0 30px 0;
	font-family: sans-serif;
	flex-shrink: 0;
	font-weight: bold;
}
#app-loader .loader-text-bottom {
	color: rgba(255, 255, 255, 0.8);
	font-size: 22px;
	text-align: center;
	margin: 30px 0 0 0;
	font-weight: 500;
	font-family: sans-serif;
	display: flex;
	justify-content: center;
	align-items: center;
	flex-shrink: 0;
}
#app-loader .loader-dots {
	display: inline-block;
	width: 20px;
	text-align: left;
	margin-left: 2px;
}
#app-loader .loader-dots::after {
	content: "";
	animation: dots-sequence 1.5s steps(4, end) infinite;
}
/* KEYFRAMES */
@keyframes spin {
	0% { transform: rotate(0deg); }
	100% { transform: rotate(360deg); }
}
@keyframes spin-reverse {
	0% { transform: rotate(360deg); }
	100% { transform: rotate(0deg); }
}
@keyframes dots-sequence {
	0% { content: ""; }
	25% { content: "."; }
	50% { content: ".."; }
	75% { content: "..."; }
	100% { content: ""; }
}
/**
* Silicon Valley Lingo: The Heartbeat Signature.
* Dual-thump rhythm (Systole/Diastole) executed via scale transform.
* Cycle: Thump-Thump-Pause.
*/
@keyframes heartbeat {
	0% { transform: scale(1); }
	14% { transform: scale(1.08); } /* First beat */
	28% { transform: scale(1); }    /* Relax */
	42% { transform: scale(1.08); } /* Second beat */
	70% { transform: scale(1); }    /* Long pause */
	100% { transform: scale(1); }
}