/* Guía Construcción · transición de carga global */
.gc-preloader,
.gc-preloader * { box-sizing: border-box; }

.gc-preloader {
	--gc-loader-accent: #ff6b2c;
	position: fixed;
	inset: 0;
	z-index: 2147483000;
	display: grid;
	place-items: center;
	width: 100%;
	height: 100%;
	margin: 0;
	padding: max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));
	background:
		radial-gradient(circle at 50% 42%, rgba(255, 107, 44, .09), transparent 34%),
		#f8fafc;
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	overflow: hidden;
	animation: gc-preloader-safety .28s ease 4s forwards;
}

.gc-preloader::before,
.gc-preloader::after {
	content: '';
	position: absolute;
	width: min(62vw, 620px);
	aspect-ratio: 1;
	border: 1px solid rgba(255, 107, 44, .08);
	border-radius: 50%;
	pointer-events: none;
}
.gc-preloader::before { transform: scale(.62); }
.gc-preloader::after { transform: scale(1); }

.gc-preloader__surface {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	width: min(100%, 340px);
	color: #111827;
	font-family: inherit;
	text-align: center;
}

.gc-preloader__brand {
	position: relative;
	display: grid;
	place-items: center;
	width: 76px;
	height: 76px;
	margin: 0 0 18px;
	border: 1px solid rgba(17, 24, 39, .08);
	border-radius: 22px;
	background: rgba(255, 255, 255, .9);
	box-shadow: 0 18px 50px rgba(17, 24, 39, .1);
	animation: gc-preloader-float 1.6s ease-in-out infinite;
}
.gc-preloader__brand::after {
	content: '';
	position: absolute;
	inset: -5px;
	border: 2px solid transparent;
	border-top-color: var(--gc-loader-accent);
	border-right-color: rgba(255, 107, 44, .32);
	border-radius: 26px;
	animation: gc-preloader-turn 1.25s linear infinite;
}
.gc-preloader__brand img {
	position: relative;
	z-index: 2;
	display: block;
	width: 45px;
	height: 45px;
	max-width: 45px;
	object-fit: contain;
	background: #fff;
}
.gc-preloader__fallback {
	position: absolute;
	z-index: 1;
	color: #27303f;
	font-size: 18px;
	font-weight: 800;
	letter-spacing: -.06em;
}
.gc-preloader__name {
	margin: 0 !important;
	padding: 0 !important;
	color: #111827 !important;
	font-size: 18px !important;
	font-weight: 750 !important;
	line-height: 1.25 !important;
	letter-spacing: -.02em !important;
}
.gc-preloader__progress {
	width: 124px;
	height: 4px;
	margin: 16px 0 12px;
	border-radius: 999px;
	background: #e8ebf0;
	overflow: hidden;
}
.gc-preloader__progress span {
	display: block;
	width: 42%;
	height: 100%;
	border-radius: inherit;
	background: linear-gradient(90deg, #ff6b2c, #ff9a70);
	animation: gc-preloader-progress 1.1s ease-in-out infinite;
}
.gc-preloader__message {
	margin: 0 !important;
	padding: 0 !important;
	color: #6b7280 !important;
	font-size: 12px !important;
	font-weight: 500 !important;
	line-height: 1.45 !important;
	letter-spacing: .01em !important;
}

.gc-preloader.is-leaving {
	animation: none;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity .26s ease, visibility 0s linear .26s;
}

@keyframes gc-preloader-safety { to { opacity: 0; visibility: hidden; pointer-events: none; } }
@keyframes gc-preloader-turn { to { transform: rotate(360deg); } }
@keyframes gc-preloader-float { 50% { transform: translateY(-3px); } }
@keyframes gc-preloader-progress {
	0% { transform: translateX(-120%); }
	55%, 100% { transform: translateX(240%); }
}

@media (prefers-color-scheme: dark) {
	.gc-preloader {
		background: radial-gradient(circle at 50% 42%, rgba(255, 107, 44, .13), transparent 34%), #15181d;
	}
	.gc-preloader__brand { background: #f8fafc; border-color: rgba(255, 255, 255, .08); }
	.gc-preloader__name { color: #f8fafc !important; }
	.gc-preloader__message { color: #aeb6c2 !important; }
	.gc-preloader__progress { background: #303640; }
}

@media (max-width: 480px) {
	.gc-preloader::before,
	.gc-preloader::after { width: 92vw; }
	.gc-preloader__brand { width: 70px; height: 70px; border-radius: 20px; }
	.gc-preloader__brand::after { border-radius: 24px; }
}

@media (prefers-reduced-motion: reduce) {
	.gc-preloader { animation: gc-preloader-safety .01s linear 2.5s forwards; }
	.gc-preloader__brand,
	.gc-preloader__brand::after,
	.gc-preloader__progress span { animation: none !important; }
	.gc-preloader__progress span { width: 100%; opacity: .7; }
}
