Auto commit: 2026-06-30T00:36:43.730Z

This commit is contained in:
Flatlogic Bot 2026-06-30 00:36:43 +00:00
parent 06ee114953
commit fb5b5166c4
3 changed files with 388 additions and 29 deletions

View File

@ -25,9 +25,23 @@
</head>
<body>
<div class="tech-loader" aria-hidden="true">
<div class="loader-orb"></div>
<span>Conectando soluciones digitales...</span>
<div id="techLoader" class="tech-loader" role="status" aria-live="polite" aria-label="Cargando App Tecno Store">
<div class="loader-grid" aria-hidden="true"></div>
<div class="loader-particles" aria-hidden="true">
<span></span><span></span><span></span><span></span><span></span><span></span>
</div>
<div class="loader-card">
<div class="loader-brand"><span class="loader-logo">APP</span><span>Tecno Store</span></div>
<div class="loader-core" aria-hidden="true">
<span class="loader-ring loader-ring-outer"></span>
<span class="loader-ring loader-ring-inner"></span>
<span class="loader-scan"></span>
<span class="loader-chip"><i class="bi bi-cpu"></i></span>
</div>
<p class="loader-title">Cargando experiencia tecnológica</p>
<p class="loader-copy">Conectando catálogo, pagos QR y soporte WhatsApp...</p>
<div class="loader-progress" aria-hidden="true"><span></span></div>
</div>
</div>
<nav class="navbar navbar-expand-lg navbar-dark app-nav sticky-top">
@ -70,6 +84,17 @@
</div>
</footer>
<script>
window.addEventListener('load', function () {
var loader = document.getElementById('techLoader');
if (!loader) return;
window.setTimeout(function () { loader.classList.add('is-hidden'); }, 450);
});
window.setTimeout(function () {
var loader = document.getElementById('techLoader');
if (loader) loader.classList.add('is-hidden');
}, 3200);
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body>

View File

@ -67,24 +67,191 @@ a { text-decoration: none; }
z-index: 2000;
display: grid;
place-items: center;
gap: 1rem;
background: radial-gradient(circle, #0b3149, var(--navy));
color: #dff8ff;
animation: loaderExit .9s ease 1.35s forwards;
overflow: hidden;
color: #e9fbff;
background:
radial-gradient(circle at 18% 16%, rgba(0, 209, 255, .26), transparent 28rem),
radial-gradient(circle at 86% 78%, rgba(0, 242, 169, .22), transparent 26rem),
linear-gradient(135deg, #061724 0%, #082c43 58%, #031019 100%);
isolation: isolate;
pointer-events: none;
animation: loaderAutoExit .7s ease 3s forwards;
}
.loader-orb {
width: 5rem;
height: 5rem;
.tech-loader::before,
.tech-loader::after {
content: "";
position: absolute;
inset: -18%;
z-index: -1;
}
.tech-loader::before {
opacity: .2;
background-image:
linear-gradient(rgba(255,255,255,.12) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,.12) 1px, transparent 1px);
background-size: 46px 46px;
transform: perspective(720px) rotateX(62deg) scale(1.15);
animation: loaderGridMove 5.5s linear infinite;
}
.tech-loader::after {
opacity: .55;
background: linear-gradient(180deg, transparent 0%, rgba(0, 209, 255, .16) 48%, rgba(0, 242, 169, .12) 52%, transparent 100%);
height: 32%;
top: -34%;
animation: loaderSweep 2.2s ease-in-out infinite;
}
.tech-loader.is-hidden {
opacity: 0;
visibility: hidden;
transform: scale(1.015);
transition: opacity .55s ease, visibility .55s ease, transform .55s ease;
}
.loader-grid {
position: absolute;
inset: 0;
background:
radial-gradient(circle, rgba(255,255,255,.22) 1px, transparent 1.5px) 0 0 / 34px 34px,
linear-gradient(120deg, transparent 40%, rgba(0,209,255,.10), transparent 60%);
mask-image: radial-gradient(circle at center, #000 0%, transparent 72%);
opacity: .32;
}
.loader-card {
position: relative;
width: min(90vw, 440px);
padding: 2rem;
text-align: center;
border: 1px solid rgba(255,255,255,.16);
border-radius: 2rem;
background: linear-gradient(145deg, rgba(255,255,255,.14), rgba(255,255,255,.055));
box-shadow: 0 28px 90px rgba(0, 0, 0, .35), inset 0 1px 0 rgba(255,255,255,.18);
backdrop-filter: blur(20px);
}
.loader-brand {
display: inline-flex;
align-items: center;
gap: .7rem;
margin-bottom: 1.25rem;
font-family: 'Space Grotesk', 'Manrope', sans-serif;
font-weight: 800;
letter-spacing: -.03em;
}
.loader-logo {
display: inline-grid;
place-items: center;
width: 2.8rem;
height: 2.8rem;
border-radius: 1rem;
color: var(--navy);
background: linear-gradient(135deg, var(--secondary), var(--primary));
box-shadow: 0 0 34px rgba(0, 209, 255, .42);
font-size: .85rem;
}
.loader-core {
position: relative;
display: grid;
place-items: center;
width: 9.8rem;
height: 9.8rem;
margin: 0 auto 1.25rem;
}
.loader-core::before {
content: "";
position: absolute;
inset: 16%;
border-radius: 50%;
border: 2px solid rgba(255,255,255,.15);
background: conic-gradient(from 0deg, var(--primary), var(--secondary), transparent, var(--primary));
mask: radial-gradient(circle, transparent 48%, #000 50%);
animation: spin 1s linear infinite;
background: radial-gradient(circle, rgba(0, 209, 255, .32), transparent 66%);
filter: blur(8px);
animation: loaderPulse 1.8s ease-in-out infinite;
}
.tech-loader span { margin-top: 7rem; position: absolute; font-weight: 800; letter-spacing: .02em; }
.loader-ring {
position: absolute;
border-radius: 50%;
background: conic-gradient(from 0deg, var(--primary), var(--secondary), transparent 34%, var(--accent), var(--primary));
-webkit-mask: radial-gradient(circle, transparent 56%, #000 58%);
mask: radial-gradient(circle, transparent 56%, #000 58%);
}
.loader-ring-outer { inset: 0; animation: spin 1.25s linear infinite; }
.loader-ring-inner { inset: 1.45rem; opacity: .72; animation: spinReverse 1.8s linear infinite; }
.loader-scan {
position: absolute;
inset: 2.35rem;
border: 1px solid rgba(0, 242, 169, .55);
border-radius: 1.35rem;
background:
linear-gradient(90deg, transparent, rgba(0, 242, 169, .22), transparent),
rgba(6, 23, 36, .58);
box-shadow: inset 0 0 22px rgba(0, 242, 169, .18);
animation: loaderScan 1.6s ease-in-out infinite;
}
.loader-chip {
position: relative;
display: grid;
place-items: center;
width: 3.8rem;
height: 3.8rem;
border-radius: 1.15rem;
color: var(--navy);
background: linear-gradient(135deg, var(--accent), var(--secondary));
box-shadow: 0 0 34px rgba(0, 242, 169, .38);
font-size: 1.55rem;
animation: chipFloat 1.9s ease-in-out infinite;
}
.loader-title {
margin: 0;
color: #fff;
font-family: 'Space Grotesk', 'Manrope', sans-serif;
font-size: clamp(1.25rem, 4vw, 1.75rem);
font-weight: 800;
letter-spacing: -.04em;
}
.loader-copy {
margin: .45rem auto 1.25rem;
max-width: 30ch;
color: rgba(233, 251, 255, .76);
font-size: .96rem;
}
.loader-progress {
width: 100%;
height: .52rem;
overflow: hidden;
border-radius: 999px;
background: rgba(255,255,255,.11);
}
.loader-progress span {
display: block;
width: 46%;
height: 100%;
border-radius: inherit;
background: linear-gradient(90deg, var(--secondary), var(--primary), var(--accent));
box-shadow: 0 0 22px rgba(0, 209, 255, .42);
animation: loaderProgress 1.55s ease-in-out infinite;
}
.loader-particles span {
position: absolute;
width: .55rem;
height: .55rem;
border-radius: 50%;
background: var(--primary);
box-shadow: 0 0 22px currentColor;
opacity: .7;
animation: particleFloat 4.5s ease-in-out infinite;
}
.loader-particles span:nth-child(1) { left: 14%; top: 22%; color: var(--primary); animation-delay: 0s; }
.loader-particles span:nth-child(2) { left: 78%; top: 18%; color: var(--secondary); animation-delay: .35s; }
.loader-particles span:nth-child(3) { left: 18%; top: 78%; color: var(--accent); animation-delay: .75s; }
.loader-particles span:nth-child(4) { left: 84%; top: 70%; color: var(--primary); animation-delay: 1s; }
.loader-particles span:nth-child(5) { left: 49%; top: 10%; color: var(--secondary); animation-delay: 1.25s; }
.loader-particles span:nth-child(6) { left: 52%; top: 88%; color: var(--accent); animation-delay: 1.55s; }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes loaderExit { to { opacity: 0; visibility: hidden; } }
@keyframes spinReverse { to { transform: rotate(-360deg); } }
@keyframes loaderGridMove { to { background-position: 92px 92px; } }
@keyframes loaderSweep { 0% { transform: translateY(0); } 100% { transform: translateY(460%); } }
@keyframes loaderPulse { 50% { transform: scale(1.12); opacity: .65; } }
@keyframes loaderScan { 50% { transform: scale(.92); border-radius: 50%; } }
@keyframes chipFloat { 50% { transform: translateY(-6px) scale(1.04); } }
@keyframes particleFloat { 50% { transform: translate3d(18px, -24px, 0) scale(1.45); opacity: 1; } }
@keyframes loaderProgress { 0% { transform: translateX(-115%); } 100% { transform: translateX(235%); } }
@keyframes loaderAutoExit { to { opacity: 0; visibility: hidden; } }
.hero-section {
position: relative;

View File

@ -67,24 +67,191 @@ a { text-decoration: none; }
z-index: 2000;
display: grid;
place-items: center;
gap: 1rem;
background: radial-gradient(circle, #0b3149, var(--navy));
color: #dff8ff;
animation: loaderExit .9s ease 1.35s forwards;
overflow: hidden;
color: #e9fbff;
background:
radial-gradient(circle at 18% 16%, rgba(0, 209, 255, .26), transparent 28rem),
radial-gradient(circle at 86% 78%, rgba(0, 242, 169, .22), transparent 26rem),
linear-gradient(135deg, #061724 0%, #082c43 58%, #031019 100%);
isolation: isolate;
pointer-events: none;
animation: loaderAutoExit .7s ease 3s forwards;
}
.loader-orb {
width: 5rem;
height: 5rem;
.tech-loader::before,
.tech-loader::after {
content: "";
position: absolute;
inset: -18%;
z-index: -1;
}
.tech-loader::before {
opacity: .2;
background-image:
linear-gradient(rgba(255,255,255,.12) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,.12) 1px, transparent 1px);
background-size: 46px 46px;
transform: perspective(720px) rotateX(62deg) scale(1.15);
animation: loaderGridMove 5.5s linear infinite;
}
.tech-loader::after {
opacity: .55;
background: linear-gradient(180deg, transparent 0%, rgba(0, 209, 255, .16) 48%, rgba(0, 242, 169, .12) 52%, transparent 100%);
height: 32%;
top: -34%;
animation: loaderSweep 2.2s ease-in-out infinite;
}
.tech-loader.is-hidden {
opacity: 0;
visibility: hidden;
transform: scale(1.015);
transition: opacity .55s ease, visibility .55s ease, transform .55s ease;
}
.loader-grid {
position: absolute;
inset: 0;
background:
radial-gradient(circle, rgba(255,255,255,.22) 1px, transparent 1.5px) 0 0 / 34px 34px,
linear-gradient(120deg, transparent 40%, rgba(0,209,255,.10), transparent 60%);
mask-image: radial-gradient(circle at center, #000 0%, transparent 72%);
opacity: .32;
}
.loader-card {
position: relative;
width: min(90vw, 440px);
padding: 2rem;
text-align: center;
border: 1px solid rgba(255,255,255,.16);
border-radius: 2rem;
background: linear-gradient(145deg, rgba(255,255,255,.14), rgba(255,255,255,.055));
box-shadow: 0 28px 90px rgba(0, 0, 0, .35), inset 0 1px 0 rgba(255,255,255,.18);
backdrop-filter: blur(20px);
}
.loader-brand {
display: inline-flex;
align-items: center;
gap: .7rem;
margin-bottom: 1.25rem;
font-family: 'Space Grotesk', 'Manrope', sans-serif;
font-weight: 800;
letter-spacing: -.03em;
}
.loader-logo {
display: inline-grid;
place-items: center;
width: 2.8rem;
height: 2.8rem;
border-radius: 1rem;
color: var(--navy);
background: linear-gradient(135deg, var(--secondary), var(--primary));
box-shadow: 0 0 34px rgba(0, 209, 255, .42);
font-size: .85rem;
}
.loader-core {
position: relative;
display: grid;
place-items: center;
width: 9.8rem;
height: 9.8rem;
margin: 0 auto 1.25rem;
}
.loader-core::before {
content: "";
position: absolute;
inset: 16%;
border-radius: 50%;
border: 2px solid rgba(255,255,255,.15);
background: conic-gradient(from 0deg, var(--primary), var(--secondary), transparent, var(--primary));
mask: radial-gradient(circle, transparent 48%, #000 50%);
animation: spin 1s linear infinite;
background: radial-gradient(circle, rgba(0, 209, 255, .32), transparent 66%);
filter: blur(8px);
animation: loaderPulse 1.8s ease-in-out infinite;
}
.tech-loader span { margin-top: 7rem; position: absolute; font-weight: 800; letter-spacing: .02em; }
.loader-ring {
position: absolute;
border-radius: 50%;
background: conic-gradient(from 0deg, var(--primary), var(--secondary), transparent 34%, var(--accent), var(--primary));
-webkit-mask: radial-gradient(circle, transparent 56%, #000 58%);
mask: radial-gradient(circle, transparent 56%, #000 58%);
}
.loader-ring-outer { inset: 0; animation: spin 1.25s linear infinite; }
.loader-ring-inner { inset: 1.45rem; opacity: .72; animation: spinReverse 1.8s linear infinite; }
.loader-scan {
position: absolute;
inset: 2.35rem;
border: 1px solid rgba(0, 242, 169, .55);
border-radius: 1.35rem;
background:
linear-gradient(90deg, transparent, rgba(0, 242, 169, .22), transparent),
rgba(6, 23, 36, .58);
box-shadow: inset 0 0 22px rgba(0, 242, 169, .18);
animation: loaderScan 1.6s ease-in-out infinite;
}
.loader-chip {
position: relative;
display: grid;
place-items: center;
width: 3.8rem;
height: 3.8rem;
border-radius: 1.15rem;
color: var(--navy);
background: linear-gradient(135deg, var(--accent), var(--secondary));
box-shadow: 0 0 34px rgba(0, 242, 169, .38);
font-size: 1.55rem;
animation: chipFloat 1.9s ease-in-out infinite;
}
.loader-title {
margin: 0;
color: #fff;
font-family: 'Space Grotesk', 'Manrope', sans-serif;
font-size: clamp(1.25rem, 4vw, 1.75rem);
font-weight: 800;
letter-spacing: -.04em;
}
.loader-copy {
margin: .45rem auto 1.25rem;
max-width: 30ch;
color: rgba(233, 251, 255, .76);
font-size: .96rem;
}
.loader-progress {
width: 100%;
height: .52rem;
overflow: hidden;
border-radius: 999px;
background: rgba(255,255,255,.11);
}
.loader-progress span {
display: block;
width: 46%;
height: 100%;
border-radius: inherit;
background: linear-gradient(90deg, var(--secondary), var(--primary), var(--accent));
box-shadow: 0 0 22px rgba(0, 209, 255, .42);
animation: loaderProgress 1.55s ease-in-out infinite;
}
.loader-particles span {
position: absolute;
width: .55rem;
height: .55rem;
border-radius: 50%;
background: var(--primary);
box-shadow: 0 0 22px currentColor;
opacity: .7;
animation: particleFloat 4.5s ease-in-out infinite;
}
.loader-particles span:nth-child(1) { left: 14%; top: 22%; color: var(--primary); animation-delay: 0s; }
.loader-particles span:nth-child(2) { left: 78%; top: 18%; color: var(--secondary); animation-delay: .35s; }
.loader-particles span:nth-child(3) { left: 18%; top: 78%; color: var(--accent); animation-delay: .75s; }
.loader-particles span:nth-child(4) { left: 84%; top: 70%; color: var(--primary); animation-delay: 1s; }
.loader-particles span:nth-child(5) { left: 49%; top: 10%; color: var(--secondary); animation-delay: 1.25s; }
.loader-particles span:nth-child(6) { left: 52%; top: 88%; color: var(--accent); animation-delay: 1.55s; }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes loaderExit { to { opacity: 0; visibility: hidden; } }
@keyframes spinReverse { to { transform: rotate(-360deg); } }
@keyframes loaderGridMove { to { background-position: 92px 92px; } }
@keyframes loaderSweep { 0% { transform: translateY(0); } 100% { transform: translateY(460%); } }
@keyframes loaderPulse { 50% { transform: scale(1.12); opacity: .65; } }
@keyframes loaderScan { 50% { transform: scale(.92); border-radius: 50%; } }
@keyframes chipFloat { 50% { transform: translateY(-6px) scale(1.04); } }
@keyframes particleFloat { 50% { transform: translate3d(18px, -24px, 0) scale(1.45); opacity: 1; } }
@keyframes loaderProgress { 0% { transform: translateX(-115%); } 100% { transform: translateX(235%); } }
@keyframes loaderAutoExit { to { opacity: 0; visibility: hidden; } }
.hero-section {
position: relative;