/* ============================================================
   Tecnosol - Overrides propios (no tocar style.css del template)
   Se carga DESPUÃƒâ€°S de style.css, asÃƒÂ­ que gana en especificidad/orden.
   ============================================================ */

/* --- Logo del header ---------------------------------------
   El logo de marca es alto; sin tope de altura agranda el header
   y deja una franja blanca arriba (el hero entra 100px por debajo).
   Limitando la altura, el header vuelve a su tamaÃƒÂ±o y el hero lo cubre. */
.header-logo {
	max-height: 84px;   /* tope < 100px de solape del hero -> el header lo cubre, sin franja blanca */
	max-width: 210px;
	width: auto;
	height: auto;
	object-fit: contain;
	/* Agrandamos SOLO el logo con transform: no afecta la altura real del header
	   (la caja de layout sigue siendo 84px), asÃƒÂ­ no se mueven los botones ni el nav
	   y no aparece la franja blanca sobre el hero. Crece hacia abajo/derecha. */
	transform: scale(1.42);
	transform-origin: left top;
	transition: transform .3s ease;
}
.logo-box { overflow: visible; }
/* En mobile el logo se agranda menos para no chocar con el contenido/banner */
@media (max-width: 991.98px) {
	.header-logo { transform: scale(1.18); }
}

/* Logo del footer: bien visible */
.logo-footer {
	max-height: 110px;
	max-width: 226px;
	width: auto !important;
	height: auto !important;
}

/* --- Barra inferior "DiseÃƒÂ±ado por" -------------------------- */
.footer-brand-bar .brand-credit-logo {
	height: 22px;
	width: auto;
	object-fit: contain;
}

/* --- Banner principal (hero) reordenado --------------------- */
.home-hero .hero-pretitle {
	font-size: 14px;
	letter-spacing: 2px;
}
.home-hero .hero-pretitle-line {
	display: inline-block;
	width: 38px;
	height: 2px;
	background-color: var(--heading-color-1);
}
.home-hero .hero-inner h1 {
	max-width: 760px;
	line-height: 1.05;
}
.home-hero .hero-sub {
	max-width: 560px;
	font-size: 18px;
	line-height: 1.6;
}
@media (max-width: 575.98px) {
	.home-hero .hero-sub { font-size: 16px; }
	.home-hero .hero-pretitle { font-size: 12px; letter-spacing: 1.5px; }
}

/* --- CrÃƒÂ©dito StudioX clickeable ---------------------------- */
.footer-brand-bar .brand-credit-link {
	transition: opacity .25s ease, transform .25s ease;
	opacity: .85;
}
.footer-brand-bar .brand-credit-link:hover {
	opacity: 1;
	transform: translateY(-1px);
}

/* --- Bloque de precios de productos ------------------------
   VersiÃƒÂ³n por defecto pensada para tarjetas de fondo oscuro
   (catÃƒÂ¡logo / home). El detalle de producto usa la variante clara. */
.precio-box {
	display: flex;
	flex-direction: column;
	gap: 10px;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.10);
	border-left: 4px solid var(--heading-color-1);
	border-radius: 14px;
	padding: 14px 16px;
}
.precio-box .precio-row {
	display: flex;
	flex-direction: column;
	gap: 2px;
}
.precio-box .precio-label {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .6px;
	text-transform: uppercase;
	color: var(--secondary-color);
	opacity: .65;
}
.precio-box .precio-label i { color: var(--heading-color-1); opacity: 1; }
.precio-box .precio-efectivo .precio-monto {
	font-size: 18px;
	font-weight: 700;
	line-height: 1.05;
	color: #FFFFFF;
}
.precio-box .precio-destacado .precio-monto {
	font-size: 22px;
	font-weight: 800;
	line-height: 1.05;
	color: var(--heading-color-1);
}
.precio-box .precio-tarjeta .precio-monto-2 {
	font-size: 15px;
	font-weight: 600;
	color: var(--secondary-color);
}
.precio-box .precio-cuotas { font-weight: 500; opacity: .7; }
.precio-box .precio-nota {
	display: flex;
	align-items: flex-start;
	gap: 6px;
	font-size: 12px;
	line-height: 1.4;
	color: var(--secondary-color);
	opacity: .7;
}
.precio-box .precio-nota i { color: var(--heading-color-1); margin-top: 2px; opacity: 1; }
.precio-box .precio-raw {
	font-size: 14px;
	font-weight: 600;
	color: var(--heading-color-1);
}

/* Variante para fondos claros (detalle de producto) */
.precio-box.precio-box-detalle {
	background: #FFF7ED;
	border-color: #FED7AA;
}
.precio-box-detalle .precio-label { color: var(--heading-color-2); opacity: .85; }
.precio-box-detalle .precio-efectivo .precio-monto { color: var(--heading-color-3); }
.precio-box-detalle .precio-destacado .precio-monto { color: var(--heading-color-1); }
.precio-box-detalle .precio-tarjeta .precio-monto-2 { color: var(--heading-color-3); }
.precio-box-detalle .precio-nota { color: var(--heading-color-2); opacity: .85; }
.precio-box-detalle .precio-raw { color: var(--heading-color-3); }
.precio-box-detalle .precio-destacado .precio-monto { font-size: 26px; }

/* --- Filtros del catálogo ---------------------------------- */
.catalogo-filtros .catalogo-filtro-btn {
	justify-content: center;
	padding: 12px 20px;
	border-radius: 999px;
	background: #111111;
	border: 1px solid #111111;
	color: #FFFFFF;
	font-weight: 700;
	line-height: 1;
	text-decoration: none;
	box-shadow: 0 10px 25px rgba(0, 0, 0, 0.12);
}
.catalogo-filtros .catalogo-filtro-btn:hover {
	background: #2A2A2A;
	border-color: #2A2A2A;
	color: #FFFFFF;
	transform: translateY(-1px);
}
.catalogo-filtros .catalogo-filtro-btn.active {
	background: var(--heading-color-1);
	border-color: var(--heading-color-1);
	color: #111111;
	box-shadow: 0 12px 28px rgba(242, 161, 46, 0.28);
}

/* --- Tarjeta del "solsito" en servicios --------------------
   El template dibuja un recuadro/curvas oscuras detrÃƒÂ¡s del ÃƒÂ­cono
   (pensadas para mimetizarse con el fondo de la secciÃƒÂ³n). Sobre la
   imagen de la tarjeta eso se ve como un bloque negro feo: lo dejamos
   transparente y hacemos que el cÃƒÂ­rculo del sol flote limpio. */
.service-box .icon-service .icon-inner {
	background: transparent !important;
	padding: 14px 0 0 14px;
}
.service-box .icon-service .spacer-top-left-25 {
	box-shadow: none !important;
}
.service-box .icon-service .icon-wrapper {
	box-shadow: 0 10px 22px rgba(0, 0, 0, 0.30);
	border: 3px solid rgba(255, 255, 255, 0.9);
}

/* --- Lema de marca en el footer ----------------------------- */
.footer-lema {
	font-size: 17px;
	font-weight: 700;
	color: var(--heading-color-1);
	letter-spacing: .2px;
}

/* --- Sucursales en el footer (TelÃƒÂ©fono / UbicaciÃƒÂ³n) --------- */
.footer-sucursal-label {
	display: block;
	margin-bottom: 2px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .6px;
	text-transform: uppercase;
	color: var(--heading-color-1);
}

/* ============================================================
   PRELOADER - "sol" de energÃƒÂ­a que gira mientras carga la pÃƒÂ¡gina
   ============================================================ */
.ts-preloader {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	background: radial-gradient(120% 120% at 50% 0%, rgb(249 115 22 / 20%) 0%, rgba(15, 23, 42, 0) 55%), linear-gradient(180deg, #000000 0%, #000000 100%);
	opacity: 1;
	visibility: visible;
	transition: opacity .55s ease, visibility .55s ease;
}
.ts-preloader.ts-hide {
	opacity: 0;
	visibility: hidden;
}
.ts-preloader-inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 26px;
	padding: 20px;
	text-align: center;
}

/* El sol: nÃƒÂºcleo + rayos que rotan */
.ts-sun {
	position: relative;
	width: 202px;
	height: 159px;
	display: flex;
	align-items: center;
	justify-content: center;
	animation: ts-spin 6s linear infinite;
}
.ts-sun-core {
	position: relative;
	z-index: 2;
	width: 166px;
	height: 166px;
	border-radius: 50%;
	/* Fondo oscuro: el logo tiene el texto "Tecno-Sol" en blanco, asÃƒÂ­ se ve nÃƒÂ­tido */
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow:
		0 0 0 4px rgba(249, 115, 22, 0.45),
		0 0 26px 4px rgba(249, 115, 22, 0.30),
		0 12px 30px rgba(0, 0, 0, 0.45);
	/* contra-rotaciÃƒÂ³n para que el logo quede derecho mientras el sol gira */
	animation: ts-spin-rev 6s linear infinite;
	overflow: hidden;
}
.ts-preloader-logo {
	width: 118px;
	height: 118px;
	object-fit: contain;
}
.ts-ray {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 8px;
	height: 20px;
	/* centra la caja del rayo justo en el centro del sol (= centro del logo) */
	/* margin: -10px 0 0 -4px; */
	/* border-radius: 6px; */
	/* background: linear-gradient(180deg, var(--heading-color-1, #f97316), #facc15); */
	/* origen por defecto (centro del rayo): rotamos y luego empujamos hacia afuera
	   con translateY, asÃƒÂ­ todos orbitan alrededor del mismo centro */
	opacity: .92;
	animation: ts-ray-pulse 1.6s ease-in-out infinite;
}
.ts-ray:nth-child(1)  { transform: rotate(0deg)   translateY(-70px); animation-delay: 0s; }
.ts-ray:nth-child(2)  { transform: rotate(30deg)  translateY(-70px); animation-delay: .07s; }
.ts-ray:nth-child(3)  { transform: rotate(60deg)  translateY(-70px); animation-delay: .14s; }
.ts-ray:nth-child(4)  { transform: rotate(90deg)  translateY(-70px); animation-delay: .21s; }
.ts-ray:nth-child(5)  { transform: rotate(120deg) translateY(-70px); animation-delay: .28s; }
.ts-ray:nth-child(6)  { transform: rotate(150deg) translateY(-70px); animation-delay: .35s; }
.ts-ray:nth-child(7)  { transform: rotate(180deg) translateY(-70px); animation-delay: .42s; }
.ts-ray:nth-child(8)  { transform: rotate(210deg) translateY(-70px); animation-delay: .49s; }
.ts-ray:nth-child(9)  { transform: rotate(240deg) translateY(-70px); animation-delay: .56s; }
.ts-ray:nth-child(10) { transform: rotate(270deg) translateY(-70px); animation-delay: .63s; }
.ts-ray:nth-child(11) { transform: rotate(300deg) translateY(-70px); animation-delay: .70s; }
.ts-ray:nth-child(12) { transform: rotate(330deg) translateY(-70px); animation-delay: .77s; }

.ts-preloader-lema {
	margin: 0;
	max-width: 320px;
	font-size: 17px;
	font-weight: 700;
	font-style: italic;
	letter-spacing: .3px;
	color: #F8FAFC;
}
.ts-preloader-lema::first-letter { color: var(--heading-color-1, #f97316); }

/* Barra de progreso indeterminada */
.ts-preloader-bar {
	position: relative;
	width: 190px;
	height: 4px;
	border-radius: 4px;
	background: rgba(255, 255, 255, 0.12);
	overflow: hidden;
}
.ts-preloader-bar span {
	position: absolute;
	top: 0;
	left: 0;
	height: 100%;
	width: 40%;
	border-radius: 4px;
	background: linear-gradient(90deg, var(--heading-color-1, #f97316), #facc15);
	animation: ts-bar 1.4s ease-in-out infinite;
}

@keyframes ts-spin     { to { transform: rotate(360deg); } }
@keyframes ts-spin-rev { to { transform: rotate(-360deg); } }
@keyframes ts-ray-pulse {
	0%, 100% { opacity: .35; }
	50%      { opacity: 1; }
}
@keyframes ts-bar {
	0%   { left: -45%; width: 45%; }
	50%  { width: 55%; }
	100% { left: 100%; width: 45%; }
}

@media (max-width: 575.98px) {
	.ts-sun { width: 124px; height: 124px; }
	.ts-sun-core { width: 86px; height: 86px; }
	.ts-preloader-logo { width: 62px; height: 62px; }
	.ts-ray:nth-child(1)  { transform: rotate(0deg)   translateY(-52px); }
	.ts-ray:nth-child(2)  { transform: rotate(30deg)  translateY(-52px); }
	.ts-ray:nth-child(3)  { transform: rotate(60deg)  translateY(-52px); }
	.ts-ray:nth-child(4)  { transform: rotate(90deg)  translateY(-52px); }
	.ts-ray:nth-child(5)  { transform: rotate(120deg) translateY(-52px); }
	.ts-ray:nth-child(6)  { transform: rotate(150deg) translateY(-52px); }
	.ts-ray:nth-child(7)  { transform: rotate(180deg) translateY(-52px); }
	.ts-ray:nth-child(8)  { transform: rotate(210deg) translateY(-52px); }
	.ts-ray:nth-child(9)  { transform: rotate(240deg) translateY(-52px); }
	.ts-ray:nth-child(10) { transform: rotate(270deg) translateY(-52px); }
	.ts-ray:nth-child(11) { transform: rotate(300deg) translateY(-52px); }
	.ts-ray:nth-child(12) { transform: rotate(330deg) translateY(-52px); }
}
