Fix: new adjustments and new preloading

This commit is contained in:
Pedro Chueiri 2026-02-13 20:15:37 -03:00
parent 02418eabfd
commit d93961c3be
25 changed files with 1786 additions and 980 deletions

View File

@ -25,17 +25,299 @@
<!-- Theme --> <!-- Theme -->
<meta name="theme-color" content="#000000" /> <meta name="theme-color" content="#000000" />
<!-- Fontes --> <!-- Preload do vídeo de loading -->
<link rel="preload" as="video" href="/preloading.mp4" type="video/mp4" />
<!-- Preload de recursos críticos -->
<link rel="preload" as="font" href="https://fonts.gstatic.com/s/spacegrotesk/v16/V8mQQVjrQBjbgLWXFyfnJQ.woff2"
type="font/woff2" crossorigin />
<link rel="preload" as="image" href="/src/lib/assets/backgroundSection2.png" />
<!-- DNS prefetch para recursos externos -->
<link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap" <link rel="dns-prefetch" href="https://devs.basspago.com.br" />
rel="stylesheet" />
<!-- Fontes otimizadas -->
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap" rel="stylesheet"
media="print" onload="this.media='all'" />
<!-- CSS minimalista - só o vídeo MUITO MAIOR -->
<style>
body {
margin: 0;
padding: 0;
font-family: 'Space Grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background: #000;
overflow: hidden;
}
/* Preloader - só vídeo centralizado */
#video-preloader {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background: #000;
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
transition: opacity 0.8s ease, visibility 0.8s ease;
}
#video-preloader.hidden {
opacity: 0;
visibility: hidden;
}
/* Container do vídeo - MUITO MAIOR */
.video-container {
position: relative;
width: 800px;
height: 450px;
border-radius: 8px;
overflow: hidden;
}
/* Vídeo limpo */
.preloader-video {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 8px;
}
/* Fallback simples */
.video-fallback {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
border-radius: 8px;
display: none;
align-items: center;
justify-content: center;
}
.fallback-logo {
width: 100px;
height: 100px;
border: 4px solid #41FE95;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 32px;
font-weight: 700;
color: #41FE95;
animation: pulse 2s infinite;
}
/* App container */
#app {
opacity: 0;
transition: opacity 0.8s ease;
}
#app.loaded {
opacity: 1;
}
@keyframes pulse {
0%,
100% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(1.1);
opacity: 0.8;
}
}
/* Responsive - proporcionalmente maior */
@media (max-width: 900px) {
.video-container {
width: 700px;
height: 394px;
}
}
@media (max-width: 768px) {
.video-container {
width: 600px;
height: 338px;
}
}
@media (max-width: 650px) {
.video-container {
width: 500px;
height: 281px;
}
}
@media (max-width: 550px) {
.video-container {
width: 450px;
height: 253px;
}
}
@media (max-width: 480px) {
.video-container {
width: 400px;
height: 225px;
}
}
@media (max-width: 420px) {
.video-container {
width: 360px;
height: 202px;
}
}
@media (max-width: 380px) {
.video-container {
width: 320px;
height: 180px;
}
}
</style>
%sveltekit.head% %sveltekit.head%
</head> </head>
<body data-sveltekit-preload-data="hover"> <body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div> <!-- Preloader - só o vídeo -->
<div id="video-preloader">
<div class="video-container">
<!-- Vídeo sem loop - vai acabar -->
<video id="preloader-video" class="preloader-video" autoplay muted playsinline preload="auto">
<source src="/preloading.mp4" type="video/mp4">
</video>
<!-- Fallback simples -->
<div class="video-fallback" id="video-fallback">
<div class="fallback-logo">BP</div>
</div>
</div>
</div>
<!-- App container -->
<div id="app" style="display: contents">%sveltekit.body%</div>
<!-- Script - só vai para site quando vídeo acabar -->
<script>
(function () {
const preloader = document.getElementById('video-preloader');
const video = document.getElementById('preloader-video');
const fallback = document.getElementById('video-fallback');
const app = document.getElementById('app');
let videoEnded = false;
let pageLoaded = false;
// Função para esconder o preloader
function hidePreloader() {
if (preloader) {
preloader.classList.add('hidden');
setTimeout(() => {
preloader.style.display = 'none';
if (app) {
app.classList.add('loaded');
document.body.style.overflow = 'auto';
}
}, 800);
}
}
// Verifica se pode esconder (vídeo acabou E página carregou)
function checkIfCanHide() {
if (videoEnded && pageLoaded) {
hidePreloader();
}
}
function showFallback() {
if (video && fallback) {
video.style.display = 'none';
fallback.style.display = 'flex';
setTimeout(() => {
videoEnded = true;
checkIfCanHide();
}, 2000);
}
}
// Event listeners para o vídeo
if (video) {
// Quando o vídeo acabar
video.addEventListener('ended', () => {
console.log('[Preloader] Vídeo terminou');
videoEnded = true;
checkIfCanHide();
});
video.addEventListener('error', () => {
console.log('[Preloader] Erro no vídeo, usando fallback');
showFallback();
});
const playPromise = video.play();
if (playPromise !== undefined) {
playPromise
.then(() => {
console.log('[Preloader] Vídeo reproduzindo');
})
.catch(() => {
console.log('[Preloader] Erro ao reproduzir, usando fallback');
showFallback();
});
}
} else {
showFallback();
}
window.addEventListener('load', () => {
console.log('[Preloader] Página carregada');
pageLoaded = true;
checkIfCanHide();
});
setTimeout(() => {
console.log('[Preloader] Timeout de segurança');
videoEnded = true;
pageLoaded = true;
hidePreloader();
}, 10000);
document.body.style.overflow = 'hidden';
})();
</script>
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js')
.then((registration) => {
console.log('SW registered: ', registration);
})
.catch((registrationError) => {
console.log('SW registration failed: ', registrationError);
});
});
}
</script>
</body> </body>
</html> </html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 MiB

After

Width:  |  Height:  |  Size: 2.0 MiB

View File

@ -1,15 +1,30 @@
<svg width="49" height="48" viewBox="0 0 49 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="49" height="48" viewBox="0 0 49 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="49" height="48" rx="24" fill="#0000FF" fill-opacity="0.1"/> <rect width="49" height="48" rx="24" fill="#08DF73" fill-opacity="0.1" />
<path d="M31.7904 14.2767H37.918C38.7387 14.2767 39.3952 14.9359 39.3952 15.7599V29.2187V32.3499C39.3952 33.174 38.7387 33.8332 37.918 33.8332H27.3589H21.9973H11.3834C10.5628 33.8332 9.90625 33.174 9.90625 32.3499V29.2187V15.7599C9.90625 14.9359 10.5628 14.2767 11.3834 14.2767H17.6204" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M27.3616 33.8881H22V37.5687H27.3616V33.8881Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> d="M31.7904 14.2767H37.918C38.7387 14.2767 39.3952 14.9359 39.3952 15.7599V29.2187V32.3499C39.3952 33.174 38.7387 33.8332 37.918 33.8332H27.3589H21.9973H11.3834C10.5628 33.8332 9.90625 33.174 9.90625 32.3499V29.2187V15.7599C9.90625 14.9359 10.5628 14.2767 11.3834 14.2767H17.6204"
<path d="M31.4647 40.0956H17.8965V39.1617C17.8965 38.2828 18.6077 37.5687 19.4831 37.5687H29.8781C30.7534 37.5687 31.4647 38.2828 31.4647 39.1617V40.0956Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M9.96289 29.2188H39.3971" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M27.3616 33.8881H22V37.5687H27.3616V33.8881Z" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
<path d="M31.7911 12.8485V26.3622H17.6211V7.90442H26.8672L31.7911 12.8485Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M26.8691 7.90442V12.8485H31.7931" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M23.2571 11.9145C23.2571 11.9145 22.9289 11.1454 21.6158 11.1454C20.3028 11.1454 19.4274 13.0132 21.2329 13.5076C23.2571 14.0569 23.5307 14.4415 23.3666 15.2655C23.1477 16.3092 20.3575 16.474 20.1934 14.9908" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> d="M31.4647 40.0956H17.8965V39.1617C17.8965 38.2828 18.6077 37.5687 19.4831 37.5687H29.8781C30.7534 37.5687 31.4647 38.2828 31.4647 39.1617V40.0956Z"
<path d="M21.7773 17.0234V16.0346" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M21.7773 11.1455V10.1567" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M9.96289 29.2188H39.3971" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
<path d="M24.6797 17.0234H29.5489" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M20.1934 20.3744H29.5489" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M31.7911 12.8485V26.3622H17.6211V7.90442H26.8672L31.7911 12.8485Z" stroke="#08DF73" stroke-width="0.915563"
<path d="M20.1934 23.6704H29.5489" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M26.8691 7.90442V12.8485H31.7931" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path
d="M23.2571 11.9145C23.2571 11.9145 22.9289 11.1454 21.6158 11.1454C20.3028 11.1454 19.4274 13.0132 21.2329 13.5076C23.2571 14.0569 23.5307 14.4415 23.3666 15.2655C23.1477 16.3092 20.3575 16.474 20.1934 14.9908"
stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M21.7773 17.0234V16.0346" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M21.7773 11.1455V10.1567" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M24.6797 17.0234H29.5489" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M20.1934 20.3744H29.5489" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M20.1934 23.6704H29.5489" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -1,19 +1,40 @@
<svg width="49" height="48" viewBox="0 0 49 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="49" height="48" viewBox="0 0 49 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="49" height="48" rx="24" fill="#0000FF" fill-opacity="0.1"/> <rect width="49" height="48" rx="24" fill="#08DF73" fill-opacity="0.1" />
<path d="M38.062 16.6755H31.9277V13.6084C31.9277 11.9146 33.3011 10.5413 34.9949 10.5413C36.6887 10.5413 38.062 11.9146 38.062 13.6084V16.6755Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M16.1797 27.6165V13.6084C16.1797 11.9146 17.553 10.5413 19.2468 10.5413H34.9945" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> d="M38.062 16.6755H31.9277V13.6084C31.9277 11.9146 33.3011 10.5413 34.9949 10.5413C36.6887 10.5413 38.062 11.9146 38.062 13.6084V16.6755Z"
<path d="M31.9273 29.0814V33.3846H20.9863" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M31.9277 26.0601V16.6755" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M16.1797 27.6165V13.6084C16.1797 11.9146 17.553 10.5413 19.2468 10.5413H34.9945" stroke="#08DF73"
<path d="M16.1815 37.4588C18.8867 37.4588 21.0797 35.2658 21.0797 32.5606C21.0797 29.8553 18.8867 27.6623 16.1815 27.6623C13.4762 27.6623 11.2832 29.8553 11.2832 32.5606C11.2832 35.2658 13.4762 37.4588 16.1815 37.4588Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M15.127 33.6134V33.8881C15.127 34.4374 15.5847 34.941 16.1799 34.941C16.7292 34.941 17.2327 34.4832 17.2327 33.8881V33.6134C17.2327 33.0641 16.775 32.5605 16.1799 32.5605C15.6305 32.5605 15.127 32.1027 15.127 31.5076V31.233C15.127 30.6836 15.5847 30.1801 16.1799 30.1801C16.7292 30.1801 17.2327 30.6378 17.2327 31.233V31.5076" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M31.9273 29.0814V33.3846H20.9863" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
<path d="M16.1797 30.1801V29.4019" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M16.1797 35.6734V34.8952" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M31.9277 26.0601V16.6755" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
<path d="M29.9609 26.0601H34.9965V22.6725" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M34.9953 22.6725C35.7791 22.6725 36.4144 22.0371 36.4144 21.2534C36.4144 20.4696 35.7791 19.8342 34.9953 19.8342C34.2115 19.8342 33.5762 20.4696 33.5762 21.2534C33.5762 22.0371 34.2115 22.6725 34.9953 22.6725Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M29.9609 29.0814H34.9965V33.4761" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> d="M16.1815 37.4588C18.8867 37.4588 21.0797 35.2658 21.0797 32.5606C21.0797 29.8553 18.8867 27.6623 16.1815 27.6623C13.4762 27.6623 11.2832 29.8553 11.2832 32.5606C11.2832 35.2658 13.4762 37.4588 16.1815 37.4588Z"
<path d="M34.9953 36.2685C35.7791 36.2685 36.4144 35.6332 36.4144 34.8494C36.4144 34.0657 35.7791 33.4303 34.9953 33.4303C34.2115 33.4303 33.5762 34.0657 33.5762 34.8494C33.5762 35.6332 34.2115 36.2685 34.9953 36.2685Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M19.1562 14.4324H28.8612" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M19.1562 17.9573H28.8612" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> d="M15.127 33.6134V33.8881C15.127 34.4374 15.5847 34.941 16.1799 34.941C16.7292 34.941 17.2327 34.4832 17.2327 33.8881V33.6134C17.2327 33.0641 16.775 32.5605 16.1799 32.5605C15.6305 32.5605 15.127 32.1027 15.127 31.5076V31.233C15.127 30.6836 15.5847 30.1801 16.1799 30.1801C16.7292 30.1801 17.2327 30.6378 17.2327 31.233V31.5076"
<path d="M19.1562 21.2534H28.8612" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M19.1562 24.4578H26.3434" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M16.1797 30.1801V29.4019" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M16.1797 35.6734V34.8952" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M29.9609 26.0601H34.9965V22.6725" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path
d="M34.9953 22.6725C35.7791 22.6725 36.4144 22.0371 36.4144 21.2534C36.4144 20.4696 35.7791 19.8342 34.9953 19.8342C34.2115 19.8342 33.5762 20.4696 33.5762 21.2534C33.5762 22.0371 34.2115 22.6725 34.9953 22.6725Z"
stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M29.9609 29.0814H34.9965V33.4761" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path
d="M34.9953 36.2685C35.7791 36.2685 36.4144 35.6332 36.4144 34.8494C36.4144 34.0657 35.7791 33.4303 34.9953 33.4303C34.2115 33.4303 33.5762 34.0657 33.5762 34.8494C33.5762 35.6332 34.2115 36.2685 34.9953 36.2685Z"
stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M19.1562 14.4324H28.8612" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M19.1562 17.9573H28.8612" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M19.1562 21.2534H28.8612" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M19.1562 24.4578H26.3434" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -1,19 +1,39 @@
<svg width="49" height="48" viewBox="0 0 49 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="49" height="48" viewBox="0 0 49 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="49" height="48" rx="24" fill="#0000FF" fill-opacity="0.1"/> <rect width="49" height="48" rx="24" fill="#08DF73" fill-opacity="0.1" />
<path d="M15.9863 26.2474C17.3821 31.8906 20.4227 35.0368 24.6598 36.6349C28.8968 35.0368 31.9375 31.8406 33.3332 26.2474" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M34.0328 21.7528C34.1325 20.6541 34.1823 19.5055 34.1823 18.307V13.4628C34.1823 13.4628 28.7489 14.961 24.6615 11.9147C20.574 14.961 15.1406 13.4628 15.1406 13.4628V18.307C15.1406 19.5055 15.1905 20.7041 15.2902 21.7528" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> d="M15.9863 26.2474C17.3821 31.8906 20.4227 35.0368 24.6598 36.6349C28.8968 35.0368 31.9375 31.8406 33.3332 26.2474"
<path d="M29.2882 24.7518C29.7027 22.1926 27.968 19.7813 25.4136 19.366C22.8592 18.9507 20.4523 20.6886 20.0378 23.2477C19.6232 25.8069 21.3579 28.2182 23.9123 28.6336C26.4667 29.0489 28.8736 27.311 29.2882 24.7518Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M23.6641 24.9989V25.2486C23.6641 25.7979 24.1127 26.2474 24.661 26.2474C25.2093 26.2474 25.658 25.7979 25.658 25.2486V24.9989C25.658 24.4496 25.2093 24.0001 24.661 24.0001C24.1127 24.0001 23.6641 23.5507 23.6641 23.0013V22.7017C23.6641 22.1523 24.1127 21.7029 24.661 21.7029C25.2093 21.7029 25.658 22.1523 25.658 22.7017V23.0013" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M24.6641 21.7528V21.0037" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> d="M34.0328 21.7528C34.1325 20.6541 34.1823 19.5055 34.1823 18.307V13.4628C34.1823 13.4628 28.7489 14.961 24.6615 11.9147C20.574 14.961 15.1406 13.4628 15.1406 13.4628V18.307C15.1406 19.5055 15.1905 20.7041 15.2902 21.7528"
<path d="M24.6641 26.9965V26.2474" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M24.6641 19.3057V11.8646" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M24.6641 36.6848V28.6945" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> d="M29.2882 24.7518C29.7027 22.1926 27.968 19.7813 25.4136 19.366C22.8592 18.9507 20.4523 20.6886 20.0378 23.2477C19.6232 25.8069 21.3579 28.2182 23.9123 28.6336C26.4667 29.0489 28.8736 27.311 29.2882 24.7518Z"
<path d="M31.043 21.7527H37.8721V11.8646" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M39.1663 9.26788H36.5742V11.8648H39.1663V9.26788Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M31.043 26.2474H37.8721V36.1355" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> d="M23.6641 24.9989V25.2486C23.6641 25.7979 24.1127 26.2474 24.661 26.2474C25.2093 26.2474 25.658 25.7979 25.658 25.2486V24.9989C25.658 24.4496 25.2093 24.0001 24.661 24.0001C24.1127 24.0001 23.6641 23.5507 23.6641 23.0013V22.7017C23.6641 22.1523 24.1127 21.7029 24.661 21.7029C25.2093 21.7029 25.658 22.1523 25.658 22.7017V23.0013"
<path d="M39.1663 36.1354H36.5742V38.7323H39.1663V36.1354Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M18.2822 21.7527H11.4531V11.8646" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M24.6641 21.7528V21.0037" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
<path d="M10.1872 11.8934L12.7793 11.8934L12.7793 9.29656L10.1872 9.29656L10.1872 11.8934Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M18.2822 26.2474H11.4531V36.1355" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M24.6641 26.9965V26.2474" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
<path d="M10.1872 38.7036L12.7793 38.7036L12.7793 36.1067L10.1872 36.1067L10.1872 38.7036Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M24.6641 19.3057V11.8646" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M24.6641 36.6848V28.6945" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M31.043 21.7527H37.8721V11.8646" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M39.1663 9.26788H36.5742V11.8648H39.1663V9.26788Z" stroke="#08DF73" stroke-width="0.915563"
stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M31.043 26.2474H37.8721V36.1355" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M39.1663 36.1354H36.5742V38.7323H39.1663V36.1354Z" stroke="#08DF73" stroke-width="0.915563"
stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M18.2822 21.7527H11.4531V11.8646" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M10.1872 11.8934L12.7793 11.8934L12.7793 9.29656L10.1872 9.29656L10.1872 11.8934Z" stroke="#08DF73"
stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M18.2822 26.2474H11.4531V36.1355" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M10.1872 38.7036L12.7793 38.7036L12.7793 36.1067L10.1872 36.1067L10.1872 38.7036Z" stroke="#08DF73"
stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -1,27 +1,53 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="48" height="48" rx="24" fill="#0000FF" fill-opacity="0.1"/> <rect width="48" height="48" rx="24" fill="#08DF73" fill-opacity="0.1" />
<path d="M37.0618 12H20.8105V20.9267H37.0618V12Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M37.0618 12H20.8105V20.9267H37.0618V12Z" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
<path d="M27.8594 17.6307C27.8594 18.0427 28.1798 18.3631 28.5918 18.3631H29.1412C29.5532 18.3631 29.8736 18.0427 29.8736 17.6307V17.1729C29.8736 16.7609 29.5532 16.4404 29.1412 16.4404H28.5918C28.1798 16.4404 27.8594 16.12 27.8594 15.708V15.2502C27.8594 14.8382 28.1798 14.5178 28.5918 14.5178H29.1412C29.5532 14.5178 29.8736 14.8382 29.8736 15.2502" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M28.9121 14.472V13.3734" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M28.9121 19.5076V18.4089" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> d="M27.8594 17.6307C27.8594 18.0427 28.1798 18.3631 28.5918 18.3631H29.1412C29.5532 18.3631 29.8736 18.0427 29.8736 17.6307V17.1729C29.8736 16.7609 29.5532 16.4404 29.1412 16.4404H28.5918C28.1798 16.4404 27.8594 16.12 27.8594 15.708V15.2502C27.8594 14.8382 28.1798 14.5178 28.5918 14.5178H29.1412C29.5532 14.5178 29.8736 14.8382 29.8736 15.2502"
<path d="M22.0466 14.472H20.8105V12H23.3283V13.236C23.2826 13.9227 22.7332 14.472 22.0466 14.472Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M23.2815 20.881H20.7637V18.3632H21.9997C22.6864 18.3632 23.2357 18.9125 23.2357 19.5992V20.881H23.2815Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M28.9121 14.472V13.3734" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
<path d="M22.0466 14.472H20.8105V12H23.3283V13.236C23.2826 13.9227 22.7332 14.472 22.0466 14.472Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M23.2815 20.881H20.7637V18.3632H21.9997C22.6864 18.3632 23.2357 18.9125 23.2357 19.5992V20.881H23.2815Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M28.9121 19.5076V18.4089" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
<path d="M37.015 14.472H35.779C35.0923 14.472 34.543 13.9227 34.543 13.236V12H37.0608V14.472H37.015Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M37.0139 20.881H34.4961V19.6449C34.4961 18.9583 35.0454 18.4089 35.7321 18.4089H36.9681V20.881H37.0139Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M22.0466 14.472H20.8105V12H23.3283V13.236C23.2826 13.9227 22.7332 14.472 22.0466 14.472Z" stroke="#08DF73"
<path d="M18.9774 16.4405H15.5898V25.5503" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M17.3296 23.765L15.59 25.5504L13.8047 23.765" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M23.2815 20.881H20.7637V18.3632H21.9997C22.6864 18.3632 23.2357 18.9125 23.2357 19.5992V20.881H23.2815Z"
<path d="M28.3633 31.9135H31.7509V22.7579" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M29.9648 24.5432L31.7502 22.7579L33.5355 24.5432" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M22.0466 14.472H20.8105V12H23.3283V13.236C23.2826 13.9227 22.7332 14.472 22.0466 14.472Z" stroke="#08DF73"
<path d="M26.2981 27.2354H10.0469V36.1621H26.2981V27.2354Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M17.0957 32.866C17.0957 33.278 17.4161 33.5985 17.8282 33.5985H18.3775C18.7895 33.5985 19.1099 33.278 19.1099 32.866V32.4082C19.1099 31.9962 18.7895 31.6758 18.3775 31.6758H17.8282C17.4161 31.6758 17.0957 31.3553 17.0957 30.9433V30.4856C17.0957 30.0736 17.4161 29.7531 17.8282 29.7531H18.3775C18.7895 29.7531 19.1099 30.0736 19.1099 30.4856" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M23.2815 20.881H20.7637V18.3632H21.9997C22.6864 18.3632 23.2357 18.9125 23.2357 19.5992V20.881H23.2815Z"
<path d="M18.1484 29.7074V28.6087" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M18.1484 34.743V33.6443" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M37.015 14.472H35.779C35.0923 14.472 34.543 13.9227 34.543 13.236V12H37.0608V14.472H37.015Z" stroke="#08DF73"
<path d="M11.2829 29.7074H10.0469V27.2354H12.5647V28.4714C12.5189 29.158 11.9696 29.7074 11.2829 29.7074Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M12.5178 36.1163H10V33.5985H11.236C11.9227 33.5985 12.472 34.1478 12.472 34.8345V36.1163H12.5178Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M37.0139 20.881H34.4961V19.6449C34.4961 18.9583 35.0454 18.4089 35.7321 18.4089H36.9681V20.881H37.0139Z"
<path d="M11.2829 29.7074H10.0469V27.2354H12.5647V28.4714C12.5189 29.158 11.9696 29.7074 11.2829 29.7074Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M12.5178 36.1163H10V33.5985H11.236C11.9227 33.5985 12.472 34.1478 12.472 34.8345V36.1163H12.5178Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M18.9774 16.4405H15.5898V25.5503" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
<path d="M26.2513 29.7074H25.0153C24.3286 29.7074 23.7793 29.158 23.7793 28.4714V27.2354H26.2971V29.7074H26.2513Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M26.2502 36.1163H23.7324V34.8803C23.7324 34.1936 24.2818 33.6443 24.9684 33.6443H26.2044V36.1163H26.2502Z" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M17.3296 23.765L15.59 25.5504L13.8047 23.765" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M28.3633 31.9135H31.7509V22.7579" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M29.9648 24.5432L31.7502 22.7579L33.5355 24.5432" stroke="#08DF73" stroke-width="0.915563"
stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M26.2981 27.2354H10.0469V36.1621H26.2981V27.2354Z" stroke="#08DF73" stroke-width="0.915563"
stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path
d="M17.0957 32.866C17.0957 33.278 17.4161 33.5985 17.8282 33.5985H18.3775C18.7895 33.5985 19.1099 33.278 19.1099 32.866V32.4082C19.1099 31.9962 18.7895 31.6758 18.3775 31.6758H17.8282C17.4161 31.6758 17.0957 31.3553 17.0957 30.9433V30.4856C17.0957 30.0736 17.4161 29.7531 17.8282 29.7531H18.3775C18.7895 29.7531 19.1099 30.0736 19.1099 30.4856"
stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M18.1484 29.7074V28.6087" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M18.1484 34.743V33.6443" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M11.2829 29.7074H10.0469V27.2354H12.5647V28.4714C12.5189 29.158 11.9696 29.7074 11.2829 29.7074Z"
stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M12.5178 36.1163H10V33.5985H11.236C11.9227 33.5985 12.472 34.1478 12.472 34.8345V36.1163H12.5178Z"
stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M11.2829 29.7074H10.0469V27.2354H12.5647V28.4714C12.5189 29.158 11.9696 29.7074 11.2829 29.7074Z"
stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M12.5178 36.1163H10V33.5985H11.236C11.9227 33.5985 12.472 34.1478 12.472 34.8345V36.1163H12.5178Z"
stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M26.2513 29.7074H25.0153C24.3286 29.7074 23.7793 29.158 23.7793 28.4714V27.2354H26.2971V29.7074H26.2513Z"
stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M26.2502 36.1163H23.7324V34.8803C23.7324 34.1936 24.2818 33.6443 24.9684 33.6443H26.2044V36.1163H26.2502Z"
stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -1,9 +1,15 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="48" height="48" rx="24" fill="#0000FF" fill-opacity="0.1"/> <rect width="48" height="48" rx="24" fill="#08DF73" fill-opacity="0.1" />
<path d="M27.7548 35.645H35.9033C36.5442 35.645 37.0935 35.0956 37.0935 34.4547V18.2493V14.5412C37.0935 13.9004 36.5442 13.351 35.9033 13.351H12.1902C11.5493 13.351 11 13.9004 11 14.5412V18.2493V34.4547C11 35.0956 11.5493 35.645 12.1902 35.645H29.8965" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M11 18.2493H37.0935" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> d="M27.7548 35.645H35.9033C36.5442 35.645 37.0935 35.0956 37.0935 34.4547V18.2493V14.5412C37.0935 13.9004 36.5442 13.351 35.9033 13.351H12.1902C11.5493 13.351 11 13.9004 11 14.5412V18.2493V34.4547C11 35.0956 11.5493 35.645 12.1902 35.645H29.8965"
<path d="M27.9824 15.7773H29.9051" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" />
<path d="M32.6074 15.7773H34.5301" stroke="#0000FF" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> <path d="M11 18.2493H37.0935" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10" stroke-linecap="round"
<path d="M30 35.351V34.351C30 31.0373 27.3137 28.351 24 28.351V28.351C20.6863 28.351 18 31.0373 18 34.351V35.351" stroke="#0000FF" stroke-width="0.92"/> stroke-linejoin="round" />
<circle cx="24" cy="24.351" r="3.54" stroke="#0000FF" stroke-width="0.92"/> <path d="M27.9824 15.7773H29.9051" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M32.6074 15.7773H34.5301" stroke="#08DF73" stroke-width="0.915563" stroke-miterlimit="10"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M30 35.351V34.351C30 31.0373 27.3137 28.351 24 28.351V28.351C20.6863 28.351 18 31.0373 18 34.351V35.351"
stroke="#08DF73" stroke-width="0.92" />
<circle cx="24" cy="24.351" r="3.54" stroke="#08DF73" stroke-width="0.92" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,18 +1,36 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="48" height="48" rx="24" fill="#0000FF" fill-opacity="0.1"/> <rect width="48" height="48" rx="24" fill="#08DF73" fill-opacity="0.1" />
<path d="M30.5055 10.529H16.7904C15.9839 10.529 15.3301 11.1828 15.3301 11.9893V35.3133C15.3301 36.1198 15.9839 36.7736 16.7904 36.7736H30.5055C31.312 36.7736 31.9659 36.1198 31.9659 35.3133V11.9893C31.9659 11.1828 31.312 10.529 30.5055 10.529Z" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M15.3301 33.4089H31.9659" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> d="M30.5055 10.529H16.7904C15.9839 10.529 15.3301 11.1828 15.3301 11.9893V35.3133C15.3301 36.1198 15.9839 36.7736 16.7904 36.7736H30.5055C31.312 36.7736 31.9659 36.1198 31.9659 35.3133V11.9893C31.9659 11.1828 31.312 10.529 30.5055 10.529Z"
<path d="M21.1719 10.529H26.1296V11.5636C26.1296 12.2777 25.5483 12.8545 24.8387 12.8545H22.4674C21.7533 12.8545 21.1765 12.2731 21.1765 11.5636V10.529H21.1719Z" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round" />
<path d="M30.0118 26.881V29.0783H27.8145" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M15.3301 33.4089H31.9659" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
<path d="M17.2852 26.881V29.0783H19.4825" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linejoin="round" />
<path d="M17.2852 23.4797V21.2869H19.4825" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M30.0118 23.4797V21.2869H27.8145" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> d="M21.1719 10.529H26.1296V11.5636C26.1296 12.2777 25.5483 12.8545 24.8387 12.8545H22.4674C21.7533 12.8545 21.1765 12.2731 21.1765 11.5636V10.529H21.1719Z"
<path d="M19.4824 23.1272V27.4258" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round" />
<path d="M23.6484 23.1272V27.4258" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M30.0118 26.881V29.0783H27.8145" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
<path d="M27.8145 23.1272V27.4258" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linejoin="round" />
<path d="M25.7305 23.1272V27.4258" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M17.2852 26.881V29.0783H19.4825" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
<path d="M21.5645 23.1272V27.4258" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linejoin="round" />
<path d="M22.5645 19.0759C22.5645 19.6756 23.0497 20.1608 23.6494 20.1608C24.2491 20.1608 24.7343 19.6756 24.7343 19.0759C24.7343 18.4762 24.2491 17.9909 23.6494 17.9909C23.0497 17.9909 22.5645 17.5057 22.5645 16.906C22.5645 16.3063 23.0497 15.821 23.6494 15.821C24.2491 15.821 24.7343 16.3063 24.7343 16.906" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M17.2852 23.4797V21.2869H19.4825" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
<path d="M23.6484 14.8825V15.821" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linejoin="round" />
<path d="M23.6484 20.1607V21.1037" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M30.0118 23.4797V21.2869H27.8145" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M19.4824 23.1272V27.4258" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M23.6484 23.1272V27.4258" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M27.8145 23.1272V27.4258" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M25.7305 23.1272V27.4258" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M21.5645 23.1272V27.4258" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path
d="M22.5645 19.0759C22.5645 19.6756 23.0497 20.1608 23.6494 20.1608C24.2491 20.1608 24.7343 19.6756 24.7343 19.0759C24.7343 18.4762 24.2491 17.9909 23.6494 17.9909C23.0497 17.9909 22.5645 17.5057 22.5645 16.906C22.5645 16.3063 23.0497 15.821 23.6494 15.821C24.2491 15.821 24.7343 16.3063 24.7343 16.906"
stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round" />
<path d="M23.6484 14.8825V15.821" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M23.6484 20.1607V21.1037" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -1,15 +1,29 @@
<svg width="49" height="48" viewBox="0 0 49 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="49" height="48" viewBox="0 0 49 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="49" height="48" rx="24" fill="#0000FF" fill-opacity="0.1"/> <rect width="49" height="48" rx="24" fill="#08DF73" fill-opacity="0.1" />
<path d="M25.1308 30.3998H11.4844V28.0605H14.0663H16.7718H24.7097H25.9915" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M25.1308 30.3998H11.4844V28.0605H14.0663H16.7718H24.7097H25.9915" stroke="#08DF73" stroke-width="0.915563"
<path d="M16.7699 17.2935H14.0645V28.0605H16.7699V17.2935Z" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M25.9908 28.0605H24.709V17.2935H27.4099V26.4354" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M16.7699 17.2935H14.0645V28.0605H16.7699V17.2935Z" stroke="#08DF73" stroke-width="0.915563"
<path d="M20.7728 10.2253L11.4844 17.2935H30.0657L20.7728 10.2253Z" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M19.5039 23.9451V24.2793C19.5039 24.7966 19.9205 25.2131 20.4378 25.2131H21.1016C21.6189 25.2131 22.0354 24.7966 22.0354 24.2793V23.6155C22.0354 23.0982 21.6189 22.6816 21.1016 22.6816H20.4378C19.9205 22.6816 19.5039 22.265 19.5039 21.7477V21.084C19.5039 20.5667 19.9205 20.1501 20.4378 20.1501H21.1016C21.6189 20.1501 22.0354 20.5667 22.0354 21.084V21.4181" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M25.9908 28.0605H24.709V17.2935H27.4099V26.4354" stroke="#08DF73" stroke-width="0.915563"
<path d="M20.7715 20.1409V19.1979" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M20.7715 26.1562V25.2131" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M20.7728 10.2253L11.4844 17.2935H30.0657L20.7728 10.2253Z" stroke="#08DF73" stroke-width="0.915563"
<path d="M31.4323 37.7747C34.9566 37.7747 37.8137 34.9176 37.8137 31.3932C37.8137 27.8688 34.9566 25.0117 31.4323 25.0117C27.9079 25.0117 25.0508 27.8688 25.0508 31.3932C25.0508 34.9176 27.9079 37.7747 31.4323 37.7747Z" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M28.252 29.2325H35.0363" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M33.4121 27.6074L35.0372 29.2325L33.4121 30.8576" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> d="M19.5039 23.9451V24.2793C19.5039 24.7966 19.9205 25.2131 20.4378 25.2131H21.1016C21.6189 25.2131 22.0354 24.7966 22.0354 24.2793V23.6155C22.0354 23.0982 21.6189 22.6816 21.1016 22.6816H20.4378C19.9205 22.6816 19.5039 22.265 19.5039 21.7477V21.084C19.5039 20.5667 19.9205 20.1501 20.4378 20.1501H21.1016C21.6189 20.1501 22.0354 20.5667 22.0354 21.084V21.4181"
<path d="M35.0363 33.5356H28.252" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round" />
<path d="M29.8771 35.1608L28.252 33.5356L29.8771 31.9105" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M20.7715 20.1409V19.1979" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M20.7715 26.1562V25.2131" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path
d="M31.4323 37.7747C34.9566 37.7747 37.8137 34.9176 37.8137 31.3932C37.8137 27.8688 34.9566 25.0117 31.4323 25.0117C27.9079 25.0117 25.0508 27.8688 25.0508 31.3932C25.0508 34.9176 27.9079 37.7747 31.4323 37.7747Z"
stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round" />
<path d="M28.252 29.2325H35.0363" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M33.4121 27.6074L35.0372 29.2325L33.4121 30.8576" stroke="#08DF73" stroke-width="0.915563"
stroke-linecap="round" stroke-linejoin="round" />
<path d="M35.0363 33.5356H28.252" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M29.8771 35.1608L28.252 33.5356L29.8771 31.9105" stroke="#08DF73" stroke-width="0.915563"
stroke-linecap="round" stroke-linejoin="round" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -1,17 +1,32 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="48" height="48" rx="24" fill="#0000FF" fill-opacity="0.1"/> <rect width="48" height="48" rx="24" fill="#08DF73" fill-opacity="0.1" />
<path d="M18.6816 21.2671V10.5641H35.766V31.97H24.4268" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M18.6816 21.2671V10.5641H35.766V31.97H24.4268" stroke="#08DF73" stroke-width="0.915563"
<path d="M25.8323 35.1653H11.5312V37.4359H25.8323V35.1653Z" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M15.1237 26.6002H12.9355V35.1653H15.1237V26.6002Z" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M25.8323 35.1653H11.5312V37.4359H25.8323V35.1653Z" stroke="#08DF73" stroke-width="0.915563"
<path d="M19.7761 26.6002H17.5879V35.1653H19.7761V26.6002Z" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M24.4265 26.6002H22.2383V35.1653H24.4265V26.6002Z" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M15.1237 26.6002H12.9355V35.1653H15.1237V26.6002Z" stroke="#08DF73" stroke-width="0.915563"
<path d="M25.8323 26.6002V25.1628L18.6818 21.2671L11.5312 25.1628V26.6002H25.8323Z" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M30.6387 17.1608V17.495C30.6387 18.0123 31.0553 18.4288 31.5725 18.4288H32.2363C32.7536 18.4288 33.1702 18.0123 33.1702 17.495V16.8312C33.1702 16.3139 32.7536 15.8973 32.2363 15.8973H31.5725C31.0553 15.8973 30.6387 15.4807 30.6387 14.9634V14.2997C30.6387 13.7824 31.0553 13.3658 31.5725 13.3658H32.2363C32.7536 13.3658 33.1702 13.7824 33.1702 14.2997V14.6338" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M19.7761 26.6002H17.5879V35.1653H19.7761V26.6002Z" stroke="#08DF73" stroke-width="0.915563"
<path d="M31.9062 13.3566V12.4136" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M31.9062 19.3719V18.4288" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M24.4265 26.6002H22.2383V35.1653H24.4265V26.6002Z" stroke="#08DF73" stroke-width="0.915563"
<path d="M21.0117 14.4233H28.295" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-linecap="round" stroke-linejoin="round" />
<path d="M21.0117 17.8429H28.295" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path d="M25.8323 26.6002V25.1628L18.6818 21.2671L11.5312 25.1628V26.6002H25.8323Z" stroke="#08DF73"
<path d="M23.3516 21.2671H33.1756" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round" />
<path d="M27.8789 25.0667H33.1754" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> <path
<path d="M27.8789 28.8662H33.1754" stroke="#0000FF" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round"/> d="M30.6387 17.1608V17.495C30.6387 18.0123 31.0553 18.4288 31.5725 18.4288H32.2363C32.7536 18.4288 33.1702 18.0123 33.1702 17.495V16.8312C33.1702 16.3139 32.7536 15.8973 32.2363 15.8973H31.5725C31.0553 15.8973 30.6387 15.4807 30.6387 14.9634V14.2997C30.6387 13.7824 31.0553 13.3658 31.5725 13.3658H32.2363C32.7536 13.3658 33.1702 13.7824 33.1702 14.2997V14.6338"
stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round" stroke-linejoin="round" />
<path d="M31.9062 13.3566V12.4136" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M31.9062 19.3719V18.4288" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M21.0117 14.4233H28.295" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M21.0117 17.8429H28.295" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M23.3516 21.2671H33.1756" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M27.8789 25.0667H33.1754" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M27.8789 28.8662H33.1754" stroke="#08DF73" stroke-width="0.915563" stroke-linecap="round"
stroke-linejoin="round" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -204,7 +204,7 @@
rounded-xl rounded-xl
bg-white/10" bg-white/10"
> >
<svelte:component this={benefit.icon} size={22} class="text-white" /> <svelte:component this={benefit.icon} size={22} class="text-green-400" />
</div> </div>
<h4 class="text-sm font-medium">{benefit.title}</h4> <h4 class="text-sm font-medium">{benefit.title}</h4>
<p class="text-xs text-white/60">{benefit.description}</p> <p class="text-xs text-white/60">{benefit.description}</p>

View File

@ -85,6 +85,7 @@
<a href="/">Home</a> <a href="/">Home</a>
<a href="/conta-digital">Conta Digital</a> <a href="/conta-digital">Conta Digital</a>
<a href="/pix">Pix</a> <a href="/pix">Pix</a>
<a href="/pdv">Pdv</a>
</div> </div>
<div class="menu"> <div class="menu">
<h4>Bass:</h4> <h4>Bass:</h4>

View File

@ -110,7 +110,7 @@
: 'bg-slate-900/70 backdrop-blur-md'}" : 'bg-slate-900/70 backdrop-blur-md'}"
> >
<div class="flex items-center gap-3 cursor-pointer" on:click={goHome}> <div class="flex items-center gap-3 cursor-pointer" on:click={goHome}>
<img src={bassLogo} alt="BassPago" class="h-24 w-auto" /> <img src={bassLogo} alt="BassPago" class="h-20 w-auto" />
</div> </div>
<nav class="hidden lg:flex items-center justify-center flex-1 gap-10"> <nav class="hidden lg:flex items-center justify-center flex-1 gap-10">
@ -118,7 +118,7 @@
<div class="relative group"> <div class="relative group">
<a <a
href={item.href} href={item.href}
class="flex items-center gap-1 text-sm font-medium text-white/80 hover:text-white transition" class="flex items-center gap-1 text-base font-medium text-white/80 hover:text-white transition"
on:mouseenter={() => item.hasDropdown && showDropdown(item.name)} on:mouseenter={() => item.hasDropdown && showDropdown(item.name)}
on:mouseleave={() => item.hasDropdown && hideDropdown(item.name)} on:mouseleave={() => item.hasDropdown && hideDropdown(item.name)}
on:click={(e) => handleNavigation(item.href, e)} on:click={(e) => handleNavigation(item.href, e)}
@ -141,7 +141,7 @@
{#each item.submenu as sub} {#each item.submenu as sub}
<a <a
href={sub.href} href={sub.href}
class="block px-4 py-3 text-sm text-white/70 hover:text-white hover:bg-white/5 transition-colors first:rounded-t-xl last:rounded-b-xl" class="block px-4 py-3 text-base text-white/70 hover:text-white hover:bg-white/5 transition-colors first:rounded-t-xl last:rounded-b-xl"
on:click={(e) => handleNavigation(sub.href, e)} on:click={(e) => handleNavigation(sub.href, e)}
> >
{sub.name} {sub.name}
@ -185,7 +185,7 @@
<div> <div>
{#if item.hasDropdown} {#if item.hasDropdown}
<button <button
class="w-full flex items-center justify-between px-6 py-4 text-sm text-white/80 hover:bg-white/5 transition-colors" class="w-full flex items-center justify-between px-6 py-4 text-base text-white/80 hover:bg-white/5 transition-colors"
on:click={() => toggleDropdown(item.name)} on:click={() => toggleDropdown(item.name)}
> >
{item.name} {item.name}
@ -199,7 +199,7 @@
{#each item.submenu as sub} {#each item.submenu as sub}
<a <a
href={sub.href} href={sub.href}
class="block px-10 py-3 text-sm text-white/60 hover:text-white/80 transition-colors" class="block px-10 py-3 text-base text-white/60 hover:text-white/80 transition-colors"
on:click={(e) => handleNavigation(sub.href, e)} on:click={(e) => handleNavigation(sub.href, e)}
> >
{sub.name} {sub.name}
@ -210,7 +210,7 @@
{:else} {:else}
<a <a
href={item.href} href={item.href}
class="block px-6 py-4 text-sm text-white/80 hover:bg-white/5 transition-colors" class="block px-6 py-4 text-base text-white/80 hover:bg-white/5 transition-colors"
on:click={(e) => handleNavigation(item.href, e)} on:click={(e) => handleNavigation(item.href, e)}
> >
{item.name} {item.name}
@ -221,13 +221,13 @@
<div class="border-t border-white/10 p-4 space-y-3"> <div class="border-t border-white/10 p-4 space-y-3">
<button <button
class="w-full rounded-full border border-white/20 px-6 py-3 text-sm font-medium text-white hover:bg-white/10 transition-colors" class="w-full rounded-full border border-white/20 px-6 py-3 text-base font-medium text-white hover:bg-white/10 transition-colors"
on:click={handleAccess} on:click={handleAccess}
> >
Acessar Acessar
</button> </button>
<button <button
class="w-full rounded-full bg-white px-6 py-3 text-sm font-semibold text-slate-900 hover:bg-slate-100 transition-colors" class="w-full rounded-full bg-white px-6 py-3 text-base font-semibold text-slate-900 hover:bg-slate-100 transition-colors"
on:click={() => goto('/precos#form-negociacao-basspago')} on:click={() => goto('/precos#form-negociacao-basspago')}
> >
Abrir conta Abrir conta

View File

@ -162,25 +162,30 @@
</div> </div>
{#if mounted} {#if mounted}
<div <div
class="hero-logos-section relative z-10 w-full pb-12 sm:pb-16" class="hero-logos-section relative z-10 w-full pb-12 sm:pb-16"
in:fly={{ y: 20, duration: 800, delay: 250 }} in:fly={{ y: 20, duration: 800, delay: 250 }}
> >
<div class="hero-logos-wrapper"> <div class="hero-logos-wrapper">
<div class="hero-logos-track"> <div class="hero-logos-track">
<!-- Primeira sequência de logos --> <!-- Primeira sequência de logos -->
{#each logos as logo} {#each logos as logo}
<img src={logo.src} alt={logo.alt} /> <img src={logo.src} alt={logo.alt} />
{/each} {/each}
<!-- Duplicação para loop infinito --> <!-- Segunda sequência (duplicação) -->
{#each logos as logo} {#each logos as logo}
<img src={logo.src} alt={logo.alt} /> <img src={logo.src} alt={logo.alt} />
{/each} {/each}
</div>
<!-- Terceira sequência (garantia de continuidade) -->
{#each logos as logo}
<img src={logo.src} alt={logo.alt} />
{/each}
</div> </div>
</div> </div>
{/if} </div>
{/if}
</section> </section>
<style> <style>
@ -199,17 +204,17 @@
} }
/* Logos Parceiros - Wrapper */ /* Logos Parceiros - Wrapper */
.hero-logos-wrapper { .hero-logos-wrapper {
width: 100vw; width: 100vw;
overflow: hidden; overflow: hidden;
margin: 0 auto; margin: 0 auto;
padding: 20px 0; padding: 20px 0;
position: relative; position: relative;
left: 50%; left: 50%;
right: 50%; right: 50%;
margin-left: -50vw; margin-left: -50vw;
margin-right: -50vw; margin-right: -50vw;
} }
/* Logos Parceiros - Track */ /* Logos Parceiros - Track */
.hero-logos-track { .hero-logos-track {
@ -218,7 +223,7 @@
gap: 40px; gap: 40px;
align-items: center; align-items: center;
opacity: 0.6; opacity: 0.6;
animation: scroll 20s linear infinite; animation: scroll 30s linear infinite;
} }
.hero-logos-track img { .hero-logos-track img {
@ -238,7 +243,7 @@
transform: translateX(0); transform: translateX(0);
} }
100% { 100% {
transform: translateX(-50%); transform: translateX(-33.333%);
} }
} }
@ -251,6 +256,7 @@
@media (max-width: 768px) { @media (max-width: 768px) {
.hero-logos-track { .hero-logos-track {
gap: 30px; gap: 30px;
animation: scroll 25s linear infinite;
} }
.hero-logos-track img { .hero-logos-track img {
@ -265,6 +271,7 @@
@media (max-width: 480px) { @media (max-width: 480px) {
.hero-logos-track { .hero-logos-track {
gap: 25px; gap: 25px;
animation: scroll 20s linear infinite;
} }
.hero-logos-track img { .hero-logos-track img {

View File

@ -89,13 +89,17 @@
</a> </a>
</div> </div>
<div class="conta-digital-hero__image fade-up lg:flex xs:hidden"> <div class="conta-digital-hero__image fade-up lg:flex xs:hidden">
<img src={phoneCard} alt="Celular com cartão" /> <div class="conta-digital-visual-bg">
<img src={phoneCard} alt="Celular com cartão" />
</div>
</div> </div>
<div class="conta-digital-hero__content fade-up lg:hidden"> <div class="conta-digital-hero__content fade-up lg:hidden">
<h1 class="conta-digital-hero__title">Você no controle do <br />seu dinheiro</h1> <h1 class="conta-digital-hero__title">Você no controle do <br />seu dinheiro</h1>
<!-- Mobile Layout: Image first, then content --> <!-- Mobile Layout: Image first, then content -->
<div class="conta-digital-hero__image fade-up lg:hidden"> <div class="conta-digital-hero__image fade-up lg:hidden">
<img src={phoneCard} alt="Celular com cartão" /> <div class="conta-digital-visual-bg">
<img src={phoneCard} alt="Celular com cartão" />
</div>
</div> </div>
<p class="conta-digital-hero__subtitle">Fácil, rápido e sem complicações.</p> <p class="conta-digital-hero__subtitle">Fácil, rápido e sem complicações.</p>
<a href="/precos#form-negociacao-basspago" class="link-cta"> <a href="/precos#form-negociacao-basspago" class="link-cta">
@ -331,6 +335,53 @@
--conta-digital-text-secondary: rgba(0, 0, 0, 0.75); --conta-digital-text-secondary: rgba(0, 0, 0, 0.75);
} }
.conta-digital-visual-bg {
background: radial-gradient(ellipse 89% 85% at -68% -3%, #41FE95 0%, rgba(65, 254, 149, 0) 100%),
radial-gradient(ellipse 153% 147% at 191% 148%, #41FE95 0%, rgba(65, 254, 149, 0) 100%),
rgba(0, 0, 255, 0.01);
border-radius: 40px;
padding: 40px;
display: flex;
justify-content: center;
align-items: center;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.conta-digital-visual-bg:hover {
transform: translateY(-5px);
box-shadow: 0 20px 40px rgba(65, 254, 149, 0.2);
}
.conta-digital-visual-bg img {
width: 100%;
max-width: 400px;
height: auto;
object-fit: contain;
}
/* Ajustes responsivos para o background */
@media (max-width: 768px) {
.conta-digital-visual-bg {
padding: 30px;
border-radius: 30px;
}
.conta-digital-visual-bg img {
max-width: 350px;
}
}
@media (max-width: 480px) {
.conta-digital-visual-bg {
padding: 20px;
border-radius: 20px;
}
.conta-digital-visual-bg img {
max-width: 300px;
}
}
/* Hero Section */ /* Hero Section */
.conta-digital-hero { .conta-digital-hero {
background: var(--conta-digital-bg); background: var(--conta-digital-bg);
@ -1334,48 +1385,136 @@
.api-documentation__container { .api-documentation__container {
flex-direction: column; flex-direction: column;
gap: 40px; gap: 40px; /* Aumentado de 30px para 40px */
padding: 40px 20px; padding: 30px 20px;
border-radius: 30px; border-radius: 20px;
max-width: 100%;
position: relative;
} }
.api-documentation__content { .api-documentation__content {
width: 100%; width: 100%;
text-align: center; text-align: center;
align-items: center; align-items: center;
order: 1;
position: relative;
z-index: 10; /* Garantir que o conteúdo fique acima */
}
.api-documentation__text {
align-items: center;
text-align: center;
margin-bottom: 20px; /* Espaçamento extra */
} }
.api-documentation__title { .api-documentation__title {
width: 100%; width: 100%;
text-align: center; text-align: center;
font-size: clamp(1.5rem, 4vw, 2rem);
line-height: 1.2;
margin-bottom: 20px; /* Espaçamento extra */
}
/* Botão com z-index alto */
.link-cta.white {
position: relative;
z-index: 15;
margin-top: 20px;
} }
.api-documentation__visual { .api-documentation__visual {
transform: scale(0.8); order: 2;
margin: -40px 0; transform: scale(0.6); /* Reduzido de 0.7 para 0.6 */
margin: 20px 0 -60px 0; /* Ajustado: top positivo, bottom negativo */
width: 100%;
max-width: 300px; /* Reduzido de 350px */
align-self: center;
position: relative;
z-index: 5; /* Z-index menor que o conteúdo */
} }
.api-documentation__payment-card { .api-documentation__payment-card {
margin: 0; margin: 0;
min-width: 280px; min-width: 220px; /* Reduzido */
padding: 30px; max-width: 250px; /* Reduzido */
padding: 20px; /* Reduzido */
border-radius: 15px; /* Reduzido */
} }
.api-documentation__payment-title {
font-size: 14px; /* Reduzido */
text-align: center;
width: 100%;
}
.api-documentation__payment-row {
gap: 40px; /* Reduzido */
flex-direction: column;
align-items: center;
text-align: center;
}
.api-documentation__payment-labels,
.api-documentation__payment-values {
align-items: center;
text-align: center;
width: 100%;
}
.api-documentation__payment-labels span,
.api-documentation__payment-values span {
font-size: 12px; /* Reduzido */
text-align: center;
line-height: 18px;
}
.api-documentation__payment-total {
justify-content: center;
gap: 15px; /* Reduzido */
}
.api-documentation__total-label,
.api-documentation__total-value {
font-size: 14px; /* Reduzido */
}
/* Status cards ainda menores */
.api-documentation__status-card--approved { .api-documentation__status-card--approved {
top: 200px; bottom: -15px;
left: 20px; left: 5px;
width: 120px; /* Reduzido */
height: 40px; /* Reduzido */
padding: 6px; /* Reduzido */
} }
.api-documentation__status-card--rejected { .api-documentation__status-card--rejected {
top: 20px; top: 5px;
left: 200px; right: 5px;
width: 120px; /* Reduzido */
height: 40px; /* Reduzido */
padding: 6px; /* Reduzido */
} }
.api-documentation__status-icon {
width: 25px; /* Reduzido */
height: 25px; /* Reduzido */
}
.api-documentation__status-amount {
font-size: 12px; /* Reduzido */
}
.api-documentation__status-label {
font-size: 9px; /* Reduzido */
}
/* Esconder elementos decorativos no mobile */
.api-documentation__decorative-card, .api-documentation__decorative-card,
.api-documentation__decorative-icon { .api-documentation__decorative-icon {
display: none; display: none;
} }
/* Outros ajustes mobile já existentes */
.conta-digital-features__row { .conta-digital-features__row {
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
@ -1408,4 +1547,86 @@
display: none; display: none;
} }
} }
/* Mobile pequeno - ainda mais compacto */
@media (max-width: 480px) {
.api-documentation {
padding: 40px 15px;
}
.api-documentation__container {
padding: 25px 15px;
gap: 30px;
border-radius: 15px;
}
.api-documentation__visual {
transform: scale(0.5); /* Ainda menor */
margin: 10px 0 -70px 0; /* Margin negativo maior */
max-width: 280px;
}
.api-documentation__payment-card {
min-width: 200px;
max-width: 220px;
padding: 15px;
border-radius: 12px;
}
.api-documentation__payment-title {
font-size: 12px;
}
.api-documentation__payment-row {
gap: 30px;
}
.api-documentation__payment-labels span,
.api-documentation__payment-values span {
font-size: 10px;
line-height: 16px;
}
.api-documentation__total-label,
.api-documentation__total-value {
font-size: 12px;
}
.api-documentation__status-card--approved,
.api-documentation__status-card--rejected {
width: 100px;
height: 35px;
padding: 4px;
}
.api-documentation__status-icon {
width: 20px;
height: 20px;
}
.api-documentation__status-amount {
font-size: 10px;
}
.api-documentation__status-label {
font-size: 8px;
}
}
/* Tablet - ajustes intermediários */
@media (max-width: 1024px) and (min-width: 769px) {
.api-documentation__container {
gap: 40px;
padding: 50px 30px;
}
.api-documentation__visual {
transform: scale(0.85);
}
.api-documentation__payment-card {
padding: 35px;
margin-left: 30px;
}
}
</style> </style>

View File

@ -538,7 +538,7 @@
/* Dev Tools Section */ /* Dev Tools Section */
#dev-tools { #dev-tools {
background: #000; background: #000;
padding: 60px 20px; padding: 80px 20px;
} }
#dev-tools .container { #dev-tools .container {
@ -550,98 +550,107 @@
.dev-content-wrapper { .dev-content-wrapper {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: stretch;
gap: 60px; gap: 40px;
border-radius: 20px; border-radius: 20px;
padding: 30px; padding: 40px;
background: linear-gradient(244deg, #41FE95 -49.78%, #00F 137.84%); background: linear-gradient(244deg, #41FE95 -49.78%, #00F 137.84%);
min-height: 300px;
} }
.dev-text-box { .dev-text-box {
height: 190px; flex: 1;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
color: rgba(255, 255, 255, 0.75);
margin: 30px;
justify-content: space-between; justify-content: space-between;
align-items: flex-start; align-items: flex-start;
gap: 20px; gap: 25px;
min-width: 0; /* Permite que o flex item encolha */
} }
.dev-text-box h2 { .dev-text-box h2 {
font-family: "Space Grotesk", sans-serif; font-family: "Space Grotesk", sans-serif;
font-size: 18px; font-size: clamp(1.1rem, 2.5vw, 1.25rem);
font-weight: 700; font-weight: 700;
margin: 0; margin: 0;
color: rgba(255, 255, 255, 0.75); color: rgba(255, 255, 255, 0.9);
line-height: 1.3;
} }
.dev-text-box p { .dev-text-box p {
font-family: "Space Grotesk", sans-serif; font-family: "Space Grotesk", sans-serif;
font-size: 18px; font-size: clamp(0.95rem, 2vw, 1.1rem);
font-weight: 400; font-weight: 400;
line-height: 1.4; line-height: 1.5;
margin: 0; margin: 0;
max-width: 460px; color: rgba(255, 255, 255, 0.8);
color: rgba(255, 255, 255, 0.75); flex: 1;
} }
.dev-text-box .btn-ghost { .dev-text-box .btn-ghost {
display: inline-block; display: inline-block;
padding: 10px 20px; padding: 12px 24px;
border-radius: 5px; border-radius: 8px;
background: rgba(0, 0, 0, 0.15); background: rgba(0, 0, 0, 0.2);
font-size: 16px; font-size: clamp(0.9rem, 1.8vw, 1rem);
font-weight: 500; font-weight: 500;
color: rgba(255, 255, 255, 0.75); color: rgba(255, 255, 255, 0.9);
text-decoration: none; text-decoration: none;
width: fit-content;
transition: all 0.3s ease; transition: all 0.3s ease;
border: 1px solid rgba(255, 255, 255, 0.2);
white-space: nowrap;
} }
.dev-text-box .btn-ghost:hover { .dev-text-box .btn-ghost:hover {
background: rgba(0, 0, 0, 0.3); background: rgba(0, 0, 0, 0.4);
transform: translateY(-2px); transform: translateY(-2px);
border-color: rgba(255, 255, 255, 0.4);
} }
.dev-feature-box { .dev-feature-box {
height: 260px; flex: 0 0 auto;
width: 360px; width: clamp(280px, 35vw, 360px);
padding: 30px 40px; padding: 30px;
background: rgba(0, 0, 0, 0.10); background: rgba(0, 0, 0, 0.15);
border-radius: 10px; border-radius: 15px;
color: rgba(255, 255, 255, 0.75); color: rgba(255, 255, 255, 0.9);
font-family: "Space Grotesk", sans-serif; font-family: "Space Grotesk", sans-serif;
margin: 0 30px; border: 1px solid rgba(255, 255, 255, 0.1);
} }
.dev-feature-box h3 { .dev-feature-box h3 {
color: rgba(255, 255, 255, 0.75); color: rgba(255, 255, 255, 0.9);
font-size: 17px; font-size: clamp(1rem, 2vw, 1.1rem);
font-weight: 600; font-weight: 600;
margin-bottom: 30px; margin: 0 0 25px 0;
} }
.feature-grid { .feature-grid {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
gap: 16px; gap: 20px;
} }
.feature-grid .icons { .feature-grid .icons {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 8px; gap: 12px;
flex-shrink: 0;
} }
.feature-grid .bar { .feature-grid .bar {
width: 29px; width: 35px;
height: 29px; height: 35px;
border-radius: 50%; border-radius: 50%;
background: rgba(255, 255, 255, 0.68); background: rgba(122, 122, 122, 0.9);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
transition: transform 0.3s ease;
}
.feature-grid .bar:hover {
transform: scale(1.1);
} }
.feature-grid .bar img { .feature-grid .bar img {
@ -651,17 +660,206 @@
} }
.feature-grid .labels { .feature-grid .labels {
font-size: 17px; font-size: clamp(0.95rem, 1.8vw, 1.05rem);
font-weight: 400; font-weight: 500;
line-height: 1.8; line-height: 1.4;
color: rgba(255, 255, 255, 0.75); color: rgba(255, 255, 255, 0.9);
flex: 1;
} }
.feature-grid .labels div { .feature-grid .labels div {
height: 29px; height: 35px;
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 8px; margin-bottom: 12px;
word-wrap: break-word;
}
/* Responsive para Dev Tools */
@media (max-width: 1024px) {
.dev-content-wrapper {
flex-direction: column;
gap: 30px;
padding: 30px;
}
.dev-feature-box {
width: 100%;
padding: 25px;
}
.dev-text-box {
gap: 20px;
}
}
@media (max-width: 768px) {
#dev-tools {
padding: 60px 15px;
}
.dev-content-wrapper {
flex-direction: column;
gap: 25px;
padding: 25px 20px;
border-radius: 15px;
}
.dev-text-box {
gap: 18px;
text-align: center;
}
.dev-text-box h2 {
font-size: clamp(1.2rem, 4vw, 1.4rem);
text-align: center;
}
.dev-text-box p {
font-size: clamp(1rem, 3vw, 1.1rem);
text-align: center;
max-width: 100%;
}
.dev-text-box .btn-ghost {
align-self: center;
padding: 10px 20px;
font-size: clamp(0.9rem, 2.5vw, 1rem);
}
.dev-feature-box {
width: 100%;
padding: 20px;
}
.dev-feature-box h3 {
text-align: center;
margin-bottom: 20px;
}
.feature-grid {
justify-content: center;
gap: 15px;
}
.feature-grid .icons {
gap: 10px;
}
.feature-grid .bar {
width: 32px;
height: 32px;
}
.feature-grid .bar img {
width: 18px;
height: 18px;
}
.feature-grid .labels {
text-align: left;
}
.feature-grid .labels div {
height: 32px;
margin-bottom: 10px;
font-size: clamp(0.9rem, 2.5vw, 1rem);
}
}
@media (max-width: 480px) {
#dev-tools {
padding: 50px 10px;
}
.dev-content-wrapper {
padding: 20px 15px;
gap: 20px;
border-radius: 12px;
}
.dev-text-box {
gap: 15px;
}
.dev-text-box h2 {
font-size: clamp(1.1rem, 5vw, 1.3rem);
line-height: 1.2;
}
.dev-text-box p {
font-size: clamp(0.9rem, 3.5vw, 1rem);
line-height: 1.4;
}
.dev-text-box .btn-ghost {
padding: 8px 16px;
font-size: 0.9rem;
width: 100%;
text-align: center;
}
.dev-feature-box {
padding: 18px;
}
.dev-feature-box h3 {
font-size: 1rem;
margin-bottom: 18px;
}
.feature-grid {
flex-direction: column;
gap: 12px;
align-items: center;
}
.feature-grid .icons {
flex-direction: row;
gap: 12px;
justify-content: center;
}
.feature-grid .labels {
text-align: center;
width: 100%;
}
.feature-grid .labels div {
height: auto;
margin-bottom: 8px;
justify-content: center;
}
}
/* Ajuste para telas muito pequenas */
@media (max-width: 320px) {
.dev-content-wrapper {
padding: 15px 10px;
}
.dev-text-box h2 {
font-size: 1.1rem;
line-height: 1.1;
}
.dev-text-box p {
font-size: 0.85rem;
}
.dev-feature-box {
padding: 15px;
}
.feature-grid .bar {
width: 28px;
height: 28px;
}
.feature-grid .bar img {
width: 16px;
height: 16px;
}
} }
/* Integration Section */ /* Integration Section */
@ -806,7 +1004,7 @@
.build-with { .build-with {
height: auto; height: auto;
min-height: 100vh; min-height: 100vh;
padding: clamp(60px, 15vw, 80px) clamp(15px, 5vw, 20px); padding: clamp(140px, 20vw, 160px) clamp(15px, 5vw, 20px) clamp(60px, 15vw, 80px); /* Aumentado o padding-top */
} }
.build-with .container { .build-with .container {
@ -829,7 +1027,8 @@
text-align: center; text-align: center;
font-size: clamp(1.75rem, 8vw, 3rem); font-size: clamp(1.75rem, 8vw, 3rem);
margin-bottom: clamp(15px, 4vw, 20px); margin-bottom: clamp(15px, 4vw, 20px);
line-height: 1; line-height: 1.1; /* Melhor espaçamento */
padding-top: 20px; /* Espaçamento extra */
} }
.build-with .content p { .build-with .content p {
@ -938,6 +1137,38 @@
} }
} }
@media (max-width: 480px) {
.build-with {
padding: 160px 15px 60px; /* Padding-top ainda maior para telas pequenas */
}
.build-with .content h1 {
font-size: clamp(1.5rem, 9vw, 2.5rem);
padding-top: 30px; /* Mais espaçamento */
line-height: 1.1;
}
.build-with .container {
gap: 30px;
}
.build-with .container > .row {
gap: 25px;
}
}
/* Ajuste para telas muito pequenas */
@media (max-width: 360px) {
.build-with {
padding: 180px 10px 50px; /* Padding máximo para telas muito pequenas */
}
.build-with .content h1 {
padding-top: 40px;
font-size: clamp(1.4rem, 10vw, 2.2rem);
}
}
@media (max-width: 1024px) { @media (max-width: 1024px) {
.integration-wrapper { .integration-wrapper {
flex-direction: column; flex-direction: column;

View File

@ -202,7 +202,7 @@
{#each pdvFeatures as feature} {#each pdvFeatures as feature}
<div class="pdv-feature-card fade-up"> <div class="pdv-feature-card fade-up">
<div class="pdv-feature-card__icon"> <div class="pdv-feature-card__icon">
<svelte:component this={feature.icon} size={24} /> <svelte:component this={feature.icon} size={24} class="text-green-400"/>
</div> </div>
<div class="pdv-feature-card__content"> <div class="pdv-feature-card__content">
<h3>{feature.title}</h3> <h3>{feature.title}</h3>
@ -807,7 +807,7 @@
} }
.pdv-hero { .pdv-hero {
padding: 100px 20px 60px; padding: 140px 20px 60px;
min-height: auto; min-height: auto;
} }
@ -879,7 +879,7 @@
@media (max-width: 480px) { @media (max-width: 480px) {
.pdv-hero { .pdv-hero {
padding: 80px 15px 40px; padding: 130px 15px 40px;
} }
.pdv-features-section, .pdv-features-section,

View File

@ -698,14 +698,14 @@ func main ( ) {
/* PIX Automático Styles */ /* PIX Automático Styles */
.pix-automatico { .pix-automatico {
width: 100%; width: 100%;
background: #fff; background: #fff;
padding: clamp(120px, 10vw, 160px) 0 clamp(120px, 10vw, 160px) 0; /* Aumentado significativamente */ padding: clamp(80px, 8vw, 160px) 0 clamp(80px, 8vw, 160px) 0; /* Reduzido significativamente */
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
gap: 40px; gap: 40px;
} }
.pix-automatico__top { .pix-automatico__top {
display: flex; display: flex;
@ -825,13 +825,15 @@ func main ( ) {
max-width: 960px; max-width: 960px;
display: flex; display: flex;
gap: clamp(28px, 6vw, 70px); gap: clamp(28px, 6vw, 70px);
margin-top: clamp(220px, 8vw, 80px); margin-top: clamp(120px, 8vw, 80px);
align-items: unset; align-items: unset;
justify-content: space-between; justify-content: space-between;
flex-wrap: wrap; flex-wrap: wrap;
padding: 0 20px; padding: 0 20px;
} }
.pix-automatico__cards { .pix-automatico__cards {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -923,19 +925,19 @@ func main ( ) {
} }
/* Payment Links Styles */ /* Payment Links Styles */
.payment-links { .payment-links {
padding: clamp(220px, 10vw, 160px) 20px; /* Aumentado significativamente */ padding: clamp(120px, 8vw, 140px) 20px clamp(60px, 6vw, 80px);
background: #000; background: #000;
} }
.payment-links__container { .payment-links__container {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
max-width: 1150px; max-width: 1150px;
margin: 0 auto; margin: 0 auto;
gap: 160px; gap: 160px;
} }
.payment-links__text { .payment-links__text {
flex: 1; flex: 1;

View File

@ -130,7 +130,7 @@
} }
}); });
$: currentTitle = policies[currentPolicy]?.title || 'Políticas e Termos'; $: currentTitle = '';
</script> </script>
<svelte:head> <svelte:head>

View File

@ -40,6 +40,10 @@
'Pix saque', 'Pix saque',
'Pagamento de contas', 'Pagamento de contas',
'Extrato', 'Extrato',
'Pix Automático',
'Link de Pagamento',
'Agendamentos',
'PDV'
], ],
isPro: false isPro: false
}, },
@ -57,7 +61,10 @@
'Fluxo de aprovação', 'Fluxo de aprovação',
'Agendamentos', 'Agendamentos',
'Pagamento em lote', 'Pagamento em lote',
'Controle de acessos' 'Controle de acessos',
'Link de Pagamento',
'PDV',
'Pix Automático'
], ],
isPro: false isPro: false
}, },
@ -70,7 +77,6 @@
recursos: [ recursos: [
'APIs Pix (cash in e cash out)', 'APIs Pix (cash in e cash out)',
'API de pagamento', 'API de pagamento',
'API de subcontas',
'Webhooks', 'Webhooks',
'Conta Escrow' 'Conta Escrow'
], ],

View File

@ -1,227 +1,247 @@
# Política de Privacidade # POLÍTICA DE PRIVACIDADE
**Última atualização: 9 de fevereiro de 2026** **Última atualização: 9 de fevereiro de 2026**
# 1. Introdução e Escopo ------------------------------------------------------------------------
# 1.1. Finalidade da Política
A presente Política de Privacidade ("Política") estabelece as diretrizes adotadas pela Bass Pago Instituição de Pagamento ("Bass Pago") para a:
Coleta ## 1. INTRODUÇÃO E ESCOPO
Uso
Armazenamento ### 1.1. Finalidade da Política
Compartilhamento
Proteção de dados pessoais A presente Política de Privacidade ("Política") estabelece as diretrizes
No âmbito de seus sites, aplicativos, APIs, plataformas tecnológicas, produtos e serviços digitais. adotadas pela **Bass Pago Instituição de Pagamento** ("Bass Pago") para
a coleta, uso, armazenamento, compartilhamento e proteção de dados
pessoais no âmbito de seus sites, aplicativos, APIs, plataformas
tecnológicas, produtos e serviços digitais.
### 1.2. Conformidade Legal
# 1.2. Conformidade Legal
Esta Política foi elaborada em conformidade com: Esta Política foi elaborada em conformidade com:
Lei nº 13.709/2018 Lei Geral de Proteção de Dados Pessoais (LGPD) - Lei nº 13.709/2018 -- Lei Geral de Proteção de Dados (LGPD)\
Normas setoriais aplicáveis às instituições de pagamento - Normas aplicáveis às instituições de pagamento\
Diretrizes do Banco Central do Brasil - Diretrizes do Banco Central do Brasil\
Boas práticas de governança - Boas práticas de governança e segurança da informação
Segurança da informação
Padrões reconhecidos internacionalmente de privacidade e proteção de dados
# 1.3. Instrumentos Adicionais
Os produtos e serviços da Bass Pago podem estar sujeitos, adicionalmente, a:
Termos específicos ### 1.3. Instrumentos Complementares
Contratos
Regulamentos operacionais
Políticas de parceiros, emissores de cartões, arranjos de pagamento e instituições financeiras envolvidas
# 1.4. Aceitação
Ao utilizar os serviços da Bass Pago, o Usuário declara que:
Leu esta Política Os produtos e serviços da Bass Pago podem estar sujeitos a termos
Compreendeu seu conteúdo específicos, contratos, regulamentos operacionais e políticas de
Concorda com suas disposições parceiros ou instituições envolvidas.
Esta Política complementa os Termos de Uso e demais instrumentos contratuais aplicáveis.
# 2. Definições ### 1.4. Aceitação
Para fins desta Política, aplicam-se, entre outras, as definições previstas na LGPD, especialmente:
Ao utilizar os serviços da Bass Pago, o Usuário declara que leu,
compreendeu e concorda com esta Política, que complementa os Termos de
Uso.
------------------------------------------------------------------------
## 2. DEFINIÇÕES
Para fins desta Política, aplicam-se as definições previstas na LGPD.
### 2.1. Dados Pessoais
# 2.1. Dados Pessoais
Informação relacionada a pessoa natural identificada ou identificável. Informação relacionada a pessoa natural identificada ou identificável.
# 2.2. Dados Pessoais Sensíveis ### 2.2. Dados Pessoais Sensíveis
Dados sobre:
Origem racial ou étnica Dados sobre origem racial ou étnica, convicção religiosa, opinião
Convicção religiosa política, filiação sindical, dados genéticos, biométricos ou relativos à
Opinião política saúde.\
Filiação sindical Tratados apenas quando estritamente necessários e com base legal
Dados genéticos adequada.
Dados biométricos
Dados relativos à saúde ### 2.3. Titular
Nota: Tratados apenas quando estritamente necessários e com base legal adequada.
# 2.3. Titular
Pessoa natural a quem se referem os dados pessoais. Pessoa natural a quem se referem os dados pessoais.
# 2.4. Tratamento ### 2.4. Tratamento
Toda operação realizada com dados pessoais. Toda operação realizada com dados pessoais.
# 2.5. Controlador ### 2.5. Controlador
A Bass Pago, a quem competem as decisões referentes ao tratamento dos dados.
# 2.6. Operador A Bass Pago, responsável pelas decisões referentes ao tratamento dos
Pessoa natural ou jurídica que realiza o tratamento de dados pessoais em nome da Bass Pago. dados.
# 3. Bases Legais para o Tratamento ### 2.6. Operador
O tratamento de dados pessoais pela Bass Pago ocorre sempre com fundamento em ao menos uma das bases legais previstas na LGPD, incluindo, mas não se limitando a:
# 3.1. Bases Legais Aplicáveis Pessoa natural ou jurídica que realiza o tratamento em nome da Bass
Cumprimento de obrigação legal ou regulatória Pago.
Execução de contrato ou de procedimentos preliminares
Exercício regular de direitos em processo judicial, administrativo ou arbitral
Legítimo interesse do controlador, observados os direitos e liberdades fundamentais do titular
Proteção do crédito
Consentimento do titular, quando exigido
# 4. Dados Pessoais Coletados
A Bass Pago poderá coletar e tratar, conforme a natureza da relação e dos serviços utilizados, os seguintes dados pessoais:
# 4.1. Dados Fornecidos Diretamente pelo Usuário ------------------------------------------------------------------------
Nome completo, CPF, CNPJ, data de nascimento
Documentos de identificação
Endereço, telefone, e-mail e demais dados de contato
Dados cadastrais e empresariais
Imagens, selfies, biometria e documentos para validação de identidade (KYC)
Informações fornecidas em atendimentos, comunicações ou formulários
# 4.2. Dados Obtidos de Terceiros
Informações provenientes de bases públicas ou privadas
Dados de bureaus de crédito, prevenção à fraude e PLD/FT
Informações cadastrais e reputacionais permitidas por lei
# 4.3. Dados Técnicos e de Navegação
Endereço IP, data e hora de acesso
Identificadores de dispositivos, sistema operacional e navegador
Cookies e tecnologias similares
Dados de geolocalização, quando autorizados
# 4.4. Dados Transacionais e Operacionais
Informações sobre transações financeiras, movimentações, pagamentos e uso dos serviços
Registros operacionais, logs e trilhas de auditoria
# 4.5. Responsabilidade por Dados de Terceiros
O Usuário declara possuir autorização legal para fornecer dados de terceiros, quando aplicável.
# 5. Finalidades do Tratamento ## 3. BASES LEGAIS PARA O TRATAMENTO
Os dados pessoais são tratados para as seguintes finalidades, conforme aplicável:
# 5.1. Prestação de Serviços O tratamento ocorre com fundamento em pelo menos uma das bases legais
Prestação, execução e gestão dos serviços e produtos contratados previstas na LGPD, incluindo:
Identificação, autenticação e verificação de identidade
# 5.2. Conformidade Legal
Cumprimento de obrigações legais, regulatórias e normativas, inclusive PLD/FT
Prevenção e combate a fraudes, ilícitos e incidentes de segurança
# 5.3. Atendimento e Suporte
Atendimento ao Usuário e suporte técnico
Comunicação institucional, operacional e comercial
# 5.4. Desenvolvimento e Melhoria
Desenvolvimento, aprimoramento e personalização de produtos e serviços
Realização de análises, estatísticas e relatórios, preferencialmente de forma anonimizada
# 5.5. Direitos da Bass Pago
Exercício regular de direitos da Bass Pago
# 6. Compartilhamento de Dados
A Bass Pago poderá compartilhar dados pessoais, sempre de forma proporcional e necessária, com:
# 6.1. Parceiros Operacionais - Cumprimento de obrigação legal ou regulatória\
Prestadores de serviços - Execução de contrato\
Parceiros tecnológicos - Exercício regular de direitos\
Fornecedores - Legítimo interesse\
# 6.2. Setor Financeiro - Proteção do crédito\
Instituições financeiras - Consentimento, quando aplicável
Arranjos de pagamento
Emissores e adquirentes
# 6.3. Grupo Econômico
Empresas do mesmo grupo econômico
# 6.4. Autoridades
Autoridades administrativas, regulatórias, judiciais ou policiais, quando exigido
# 6.5. Operações Societárias
Terceiros envolvidos em operações societárias, como fusão ou aquisição
# 6.6. Proteções Contratuais
Todos os compartilhamentos são realizados mediante:
Contratos ------------------------------------------------------------------------
Cláusulas de confidencialidade
Obrigações de proteção de dados compatíveis com esta Política e com a legislação vigente
# 7. Transferência Internacional de Dados
Quando aplicável, a Bass Pago poderá realizar transferências internacionais de dados pessoais, observando:
Requisitos legais ## 4. DADOS PESSOAIS COLETADOS
Garantias adequadas
Mecanismos de proteção previstos na LGPD
# 8. Segurança da Informação
# 8.1. Medidas de Proteção
A Bass Pago adota medidas técnicas, administrativas e organizacionais adequadas para proteger os dados pessoais contra:
Acessos não autorizados ### 4.1. Dados Fornecidos pelo Usuário
Perdas
Destruição
Alteração
Divulgação indevida
# 8.2. Controles Implementados
Controles de acesso e segregação de funções
Criptografia e autenticação multifator
Monitoramento, registros de logs e auditorias
Políticas internas, treinamentos e gestão de riscos
# 8.3. Limitações de Segurança
Embora sejam adotados os melhores esforços de segurança, nenhum sistema é absolutamente imune a riscos.
# 9. Retenção e Eliminação dos Dados - Nome, CPF/CNPJ, data de nascimento\
# 9.1. Período de Armazenamento - Documentos de identificação\
Os dados pessoais serão armazenados pelo período necessário para o cumprimento das: - Endereço, telefone e e-mail\
- Dados empresariais\
- Informações para validação de identidade (KYC)\
- Informações fornecidas em comunicações e atendimentos
Finalidades do tratamento ### 4.2. Dados Obtidos de Terceiros
Obrigações legais, regulatórias e contratuais
Incluindo prazos mínimos exigidos por normas aplicáveis às instituições de pagamento, que podem alcançar até 10 (dez) anos.
# 9.2. Eliminação dos Dados - Bases públicas ou privadas\
Após o término desses prazos, os dados serão: - Bureaus de crédito\
- Informações permitidas por lei
Eliminados, ou ### 4.3. Dados Técnicos e de Navegação
Anonimizados
Exceção: Quando houver outra base legal que autorize sua conservação.
# 10. Direitos dos Titulares - Endereço IP\
A Bass Pago assegura aos titulares o exercício dos direitos previstos no artigo 18 da LGPD, incluindo: - Identificadores de dispositivo\
- Cookies\
- Geolocalização, quando autorizada
# 10.1. Direitos Garantidos ### 4.4. Dados Transacionais
Confirmação da existência de tratamento
Acesso aos dados
Correção de dados incompletos, inexatos ou desatualizados
Anonimização, bloqueio ou eliminação, quando aplicável
Portabilidade, observados segredos comerciais e regulatórios
Informação sobre compartilhamentos
Revogação do consentimento
Oposição ao tratamento, quando cabível
# 10.2. Processamento de Solicitações
As solicitações serão analisadas e respondidas nos prazos legais.
# 11. Cookies e Tecnologias Semelhantes - Informações sobre transações\
# 11.1. Utilização - Logs operacionais e trilhas de auditoria
A Bass Pago utiliza cookies e tecnologias similares para:
Garantir o funcionamento adequado das plataformas ### 4.5. Dados de Terceiros
Melhorar a experiência do Usuário
Apoiar análises de desempenho
# 11.2. Gerenciamento
O Usuário pode gerenciar suas preferências de cookies diretamente em seu navegador, ciente de que a desativação poderá impactar determinadas funcionalidades.
# 12. Encarregado pelo Tratamento de Dados (DPO) O Usuário declara possuir autorização legal para fornecer dados de
A Bass Pago mantém Encarregado pelo Tratamento de Dados Pessoais, nos termos da LGPD, que poderá ser contatado por meio dos canais oficiais divulgados em seu site institucional. terceiros.
# 13. Alterações desta Política ------------------------------------------------------------------------
# 13.1. Atualizações
Esta Política poderá ser atualizada a qualquer tempo, para refletir alterações:
Legais ## 5. FINALIDADES DO TRATAMENTO
Regulatórias
Operacionais ### 5.1. Prestação de Serviços
# 13.2. Disponibilização
A versão vigente será sempre disponibilizada nos canais oficiais da Bass Pago. - Execução e gestão dos serviços\
- Identificação e autenticação
### 5.2. Conformidade Legal
- Cumprimento de obrigações regulatórias\
- Prevenção a fraudes e ilícitos
### 5.3. Atendimento
- Suporte técnico\
- Comunicação institucional e operacional
### 5.4. Desenvolvimento
- Melhoria de produtos e serviços\
- Análises e relatórios, preferencialmente anonimizados
### 5.5. Exercício de Direitos
- Defesa em processos judiciais ou administrativos
------------------------------------------------------------------------
## 6. COMPARTILHAMENTO DE DADOS
Os dados poderão ser compartilhados, quando necessário, com:
- Prestadores de serviços e parceiros tecnológicos\
- Instituições financeiras e arranjos de pagamento\
- Empresas do grupo econômico\
- Autoridades competentes\
- Terceiros envolvidos em operações societárias
Sempre mediante cláusulas de confidencialidade e proteção de dados.
------------------------------------------------------------------------
## 7. TRANSFERÊNCIA INTERNACIONAL
Quando aplicável, serão observadas as garantias previstas na LGPD.
------------------------------------------------------------------------
## 8. SEGURANÇA DA INFORMAÇÃO
A Bass Pago adota medidas técnicas e administrativas adequadas para
proteger os dados contra acessos não autorizados, perda, alteração ou
divulgação indevida.
Incluem:
- Controles de acesso\
- Criptografia\
- Monitoramento e auditoria\
- Políticas internas e treinamentos
------------------------------------------------------------------------
## 9. RETENÇÃO E ELIMINAÇÃO
Os dados serão armazenados pelo prazo necessário ao cumprimento das
finalidades e obrigações legais, podendo alcançar até 10 anos.
Após esse período, serão eliminados ou anonimizados, salvo hipótese
legal diversa.
------------------------------------------------------------------------
## 10. DIREITOS DOS TITULARES
Nos termos do art. 18 da LGPD, o titular poderá solicitar:
- Confirmação de tratamento\
- Acesso aos dados\
- Correção\
- Anonimização ou eliminação, quando aplicável\
- Portabilidade\
- Informação sobre compartilhamento\
- Revogação de consentimento\
- Oposição ao tratamento
------------------------------------------------------------------------
## 11. COOKIES
A Bass Pago utiliza cookies para garantir funcionamento adequado,
melhorar experiência e apoiar análises de desempenho.
O Usuário pode gerenciar cookies em seu navegador.
------------------------------------------------------------------------
## 12. ENCARREGADO (DPO)
A Bass Pago mantém Encarregado pelo Tratamento de Dados Pessoais,
contatável pelos canais oficiais divulgados em seu site.
------------------------------------------------------------------------
## 13. ALTERAÇÕES
Esta Política poderá ser atualizada a qualquer tempo. A versão vigente
estará disponível nos canais oficiais.
------------------------------------------------------------------------
## 14. LEGISLAÇÃO E FORO
# 14. Legislação Aplicável e Foro
# 14.1. Lei Aplicável
Esta Política é regida pelas leis da República Federativa do Brasil. Esta Política é regida pelas leis da República Federativa do Brasil.
# 14.2. Foro Competente Fica eleito o foro da comarca da sede da Bass Pago para dirimir
Fica eleito o foro da comarca da sede da Bass Pago Instituição de Pagamento, com renúncia a qualquer outro, por mais privilegiado que seja, para dirimir eventuais controvérsias. eventuais controvérsias.
Para dúvidas sobre esta Política de Privacidade ou para exercer seus direitos como titular de dados pessoais, entre em contato conosco através dos nossos canais oficiais de atendimento ou com nosso Encarregado pelo Tratamento de Dados Pessoais (DPO). ------------------------------------------------------------------------
Para dúvidas ou exercício de direitos, entre em contato pelos canais
oficiais ou com o Encarregado (DPO).

View File

@ -1,495 +1,129 @@
# Termos e Condições de Uso # TERMOS E CONDIÇÕES DE USO
**Última atualização: 9 de fevereiro de 2026** **Última atualização: 9 de fevereiro de 2026**
# 1. DISPOSIÇÕES GERAIS E ESCOPO ------------------------------------------------------------------------
# 1.1. Definição dos Termos
Estes Termos e Condições de Uso ("Termos") regulam o acesso e a utilização da plataforma, sistemas, APIs, produtos e serviços de pagamento oferecidos pela Bass Instituição de Pagamento Bass Pago, inscrita no CNPJ nº 37.293.930/0001-90.
# 1.2. Serviços Prestados ## 1. DISPOSIÇÕES GERAIS E ESCOPO
A Bass Pago presta serviços de pagamento e infraestrutura transacional, incluindo, mas não se limitando a:
Contas de pagamento ### 1.1. Definição dos Termos
Pix
Cobranças
Liquidação
APIs
Cash-out
PDV e serviços correlatos
Importante: A Bass Pago não realiza atividades de concessão de crédito, financiamento, investimento, captação de recursos de terceiros ou aplicação financeira.
# 1.3. Natureza Contratual Estes Termos e Condições de Uso ("Termos") regulam o acesso e a
Estes Termos possuem natureza contratual, regulatória e operacional, sendo elaborados em consonância com: utilização da plataforma, sistemas, APIs, produtos e serviços de
pagamento oferecidos pela **Bass Instituição de Pagamento -- Bass
Pago**, inscrita no CNPJ nº 37.293.930/0001-90.
Legislação brasileira ### 1.2. Serviços Prestados
Normas do Banco Central do Brasil
Arranjos de pagamento
Boas práticas de governança, compliance e gestão de riscos
# 1.4. Política de Privacidade
A Política de Privacidade da Bass Pago é parte integrante e indissociável destes Termos, devendo ser lida e aceita em conjunto.
# 2. ACEITAÇÃO, VINCULAÇÃO, HIERARQUIA CONTRATUAL E ATUALIZAÇÕES A Bass Pago presta serviços de pagamento e infraestrutura transacional,
# 2.1. Contrato de Adesão incluindo, mas não se limitando a:
Estes Termos constituem contrato de adesão eletrônico, vinculando integralmente o Cliente a partir do primeiro:
Acesso - Contas de pagamento\
Cadastro - Pix\
Integração técnica - Cobranças\
Utilização de APIs - Liquidação\
Realização de transações - APIs\
Uso de quaisquer produtos ou serviços disponibilizados pela Bass Pago - Cash-out\
Isso vale ainda que de forma parcial, experimental ou indireta. - PDV e serviços correlatos
# 2.2. Hierarquia Contratual **Importante:** A Bass Pago não realiza atividades de concessão de
Estes Termos prevalecem sobre: crédito, financiamento, investimento, captação de recursos de terceiros
ou aplicação financeira.
Propostas comerciais ### 1.3. Natureza Contratual
Apresentações
Comunicações operacionais
Materiais institucionais
Acordos verbais
Quaisquer outros entendimentos prévios
Exceção: Contratos específicos escritos, firmados por representantes legais da Bass Pago, dispondo expressamente em sentido diverso.
# 2.3. Alterações dos Termos Estes Termos possuem natureza contratual, regulatória e operacional,
A Bass Pago poderá, a qualquer tempo, alterar, atualizar, revisar ou complementar estes Termos, total ou parcialmente, para adequação: sendo elaborados em consonância com:
Regulatória - Legislação brasileira\
Legal - Normas do Banco Central do Brasil\
Operacional - Regras dos arranjos de pagamento\
Tecnológica - Boas práticas de governança, compliance e gestão de riscos
De segurança da informação
Prevenção a fraudes
PLD/FT ou gestão de riscos
# 2.4. Vigência das Atualizações
As atualizações entrarão em vigor a partir de sua publicação ou comunicação ao Cliente. A continuidade da utilização dos serviços após a atualização será considerada aceitação plena, definitiva e irretratável das novas condições.
# 2.5. Discordância com Alterações ### 1.4. Política de Privacidade
Caso o Cliente não concorde com quaisquer alterações destes Termos, deverá cessar imediatamente o uso dos serviços, incluindo:
Interrupção de integrações técnicas A Política de Privacidade da Bass Pago é parte integrante e
APIs indissociável destes Termos.
Automações
Operações transacionais
O uso continuado caracterizará uso indevido.
# 2.6. Ausência de Direito Adquirido ------------------------------------------------------------------------
Não há direito adquirido, expectativa legítima de continuidade, estabilidade de funcionalidades, manutenção de condições comerciais, técnicas ou operacionais anteriormente vigentes.
# 3. CADASTRO, KYC, KYP, KYB E REANÁLISE PERMANENTE ## 2. ACEITAÇÃO, VINCULAÇÃO E ATUALIZAÇÕES
# 3.1. Veracidade das Informações
O Cliente declara que todas as informações fornecidas à Bass Pago são:
Verdadeiras ### 2.1. Contrato de Adesão
Completas
Precisas
Lícitas
Atualizadas
Passíveis de verificação documental
Isso inclui dados de sócios, administradores, beneficiários finais e representantes legais.
# 3.2. Poderes da Bass Pago Estes Termos constituem contrato de adesão eletrônico, vinculando o
A Bass Pago poderá, a qualquer tempo e a seu exclusivo critério, realizar: Cliente a partir do primeiro:
# 3.2.1. Validações e Reanálises - Acesso\
Validações cadastrais e reanálises periódicas - Cadastro\
Consideração de todos os sócios e administradores com participação igual ou superior a percentual definido em política interna - Integração técnica\
# 3.2.2. Diligências Ampliadas - Utilização de APIs\
Enhanced Due Diligence (EDD) para clientes ou operações de maior risco - Realização de transações\
# 3.2.3. Solicitações Adicionais - Uso de quaisquer produtos ou serviços disponibilizados
Documentos
Declarações
Contratos societários
Comprovantes de origem de recursos
Dados complementares
# 3.2.4. Consultas
Bases públicas, privadas, internas e regulatórias
Listas de restrição e sanções
# 3.2.5. Medidas Restritivas
Suspensão temporária ou encerramento da conta
Caso identifique inconsistências, omissões, irregularidades ou risco elevado
# 3.3. Ausência de Direito Adquirido
A aprovação inicial não gera direito adquirido à manutenção da conta ou dos serviços. A Bass Pago poderá revogar, restringir ou suspender a operação a qualquer tempo, de forma motivada ou imotivada, sem aviso prévio, preservando-se a observância das normas legais, regulatórias e de gestão de risco.
# 4. CONTA DE PAGAMENTO E NATUREZA DOS RECURSOS ### 2.2. Hierarquia Contratual
# 4.1. Natureza da Conta
A conta disponibilizada é conta de pagamento regulamentada, estritamente destinada à execução de transações previstas na legislação e nos arranjos de pagamento. Não se confunde com:
Conta corrente bancária Estes Termos prevalecem sobre propostas comerciais, comunicações
Poupança operacionais e quaisquer entendimentos prévios, salvo contratos
Instrumento de crédito ou investimento específicos firmados por representantes legais da Bass Pago.
# 4.2. Características dos Valores
Os valores mantidos na conta:
Não geram remuneração, correção monetária ou juros ### 2.3. Alterações dos Termos
Não constituem ativo financeiro, instrumento de investimento ou garantia de rendimento
# 4.3. Poderes Restritivos da Bass Pago
A Bass Pago poderá, a qualquer tempo e a seu exclusivo critério, restringir, suspender ou limitar:
Funcionalidades A Bass Pago poderá alterar estes Termos a qualquer tempo para adequação
Fluxos operacionais regulatória, legal, operacional ou tecnológica.
Limites de movimentação
Transações
# 4.3.1. Critérios Considerados
Perfil de risco do Cliente
Volumetria e frequência transacional
Histórico de conformidade e alertas sistêmicos
Determinações legais, regulatórias ou de autoridades competentes
Potenciais riscos operacionais, financeiros, jurídicos ou reputacionais
# 4.4. Ausência de Indenização
Tais medidas não geram direito a:
Indenização A continuidade do uso dos serviços após eventual atualização será
Compensação considerada aceitação plena das novas condições.
Expectativa de continuidade
Eventuais perdas de receita
Lucros cessantes
Interrupção de atividades
# 5. TARIFAS, PREÇOS, VOLUMETRIA E PERFIL DE RISCO
# 5.1. Definição de Tarifas
As tarifas aplicáveis serão aquelas definidas em:
Propostas comerciais ------------------------------------------------------------------------
Contratos específicos
Tabela pública
Comunicadas previamente ao Cliente.
# 5.2. Alteração de Tarifas ## 3. TARIFAS, PREÇOS, VOLUMETRIA E PERFIL DE RISCO
A Bass Pago poderá alterar, ajustar ou criar tarifas, inclusive segmentadas por:
### 3.1. Definição de Tarifas
As tarifas aplicáveis serão aquelas definidas em propostas comerciais,
contratos específicos, tabela pública ou previamente comunicadas ao
Cliente.
### 3.2. Alteração de Tarifas
A Bass Pago poderá alterar, ajustar ou criar tarifas, inclusive
segmentadas por:
- Perfil de risco\
- Volumetria\
- Produto utilizado
Perfil de risco
Volumetria
Produto utilizado
Sem necessidade de anuência individual. Sem necessidade de anuência individual.
# 5.3. Aceitação das Tarifas ### 3.3. Aceitação das Tarifas
A continuidade do uso dos serviços constitui aceitação plena e irrevogável das tarifas vigentes, não gerando qualquer direito a:
Contestação A continuidade do uso dos serviços constitui aceitação plena e
Devolução irrevogável das tarifas vigentes, não gerando direito a contestação,
Compensação devolução, compensação, ressarcimento ou indenização.
Ressarcimento
Indenização
Ainda que haja alteração de preços, limites ou condições operacionais.
# 6. PIX, MED E MED 2.0 ------------------------------------------------------------------------
# 6.1. Regras Aplicáveis
As transações via Pix estão sujeitas às:
Regras do arranjo Pix ## 4. LIMITAÇÃO DE RESPONSABILIDADE
Normas do Banco Central
# 6.2. Poderes da Bass Pago
A Bass Pago poderá realizar:
Bloqueio cautelar imediato A Bass Pago não será responsável por danos indiretos, incidentais,
Retenção especiais ou consequenciais, incluindo lucros cessantes ou interrupção
Devolução ou estorno de valores de atividades.
Inclusive após o crédito
Nos termos do MED e MED 2.0.
# 6.3. Autorização de Compensação Quando reconhecida responsabilidade, esta ficará limitada ao montante
O Cliente autoriza expressamente a compensação de valores bloqueados ou devolvidos com saldos presentes ou futuros. efetivamente pago pelo Cliente a título de tarifas nos 12 meses
anteriores ao evento.
# 6.4. Renúncia do Cliente ------------------------------------------------------------------------
O Cliente renuncia a qualquer alegação de:
Retenção indevida ## 5. LEGISLAÇÃO APLICÁVEL E FORO
Dano emergente
Lucro cessante
Decorrente da aplicação do MED.
# 7. APIS, CASH-OUT E AUTOMAÇÕES Estes Termos serão regidos pelas leis da República Federativa do Brasil.
# 7.1. Responsabilidade do Cliente
O Cliente é integralmente responsável por:
Comandos enviados via API Fica eleito o foro da Comarca de São Paulo/SP para dirimir quaisquer
Chaves de acesso controvérsias decorrentes destes Termos.
Integrações
Automações
Permissões
# 7.2. Limitação da Bass Pago
A Bass Pago não valida o mérito econômico ou comercial das transações originadas via API.
# 7.3. Ordens de Cash-out ------------------------------------------------------------------------
Ordens de cash-out são consideradas:
Definitivas Para dúvidas sobre estes Termos e Condições de Uso, entre em contato por
Irretratáveis meio dos canais oficiais da Bass Pago.
De responsabilidade exclusiva do Cliente
# 8. PDV E FERRAMENTAS OPERACIONAIS
# 8.1. Natureza do PDV
O PDV disponibilizado pela Bass Pago constitui ferramenta tecnológica de:
Captura
Roteamento
Processamento de pagamentos
Não se confunde com:
Meio de pagamento autônomo
Adquirência própria
Garantia de liquidação ao Cliente
# 8.2. Limitação de Responsabilidade
A Bass Pago não integra a cadeia de fornecimento de bens ou serviços comercializados pelo Cliente, não sendo responsável por:
Qualidade
Quantidade
Entrega
Vícios
Defeitos
Garantias
Cancelamentos
Estornos comerciais
Quaisquer disputas entre o Cliente e seus usuários finais
# 8.3. Indisponibilidades
Eventuais indisponibilidades, instabilidades, manutenções programadas ou corretivas do PDV, bem como de sistemas, redes, adquirentes, arranjos de pagamento ou terceiros integrados, não caracterizam falha na prestação do serviço, nem geram direito a:
Indenização
Compensação
Abatimento de tarifas
Penalidades
# 8.4. Responsabilidade por Disputas
Reclamações, Meds, disputas, contestações, fraudes comerciais, cancelamentos ou solicitações de devolução relacionadas às transações capturadas por meio do PDV são de responsabilidade exclusiva do Cliente, inclusive quanto à:
Apresentação de documentos
Defesa
Ônus financeiro
# 9. USO INDEVIDO, FRAUDE, ABUSO E ATIVIDADES VEDADAS
# 9.1. Observância Legal
O uso dos serviços, produtos, sistemas, APIs, PDV e demais funcionalidades disponibilizadas pela Bass Pago deverá observar rigorosamente:
Legislação vigente
Normas regulatórias
Regras do Pix
Disposições de PLD/FT
Boas práticas de governança
Princípios de boa-fé, licitude e transparência
# 9.2. Proibição Geral
É expressamente vedada a utilização da plataforma para quaisquer finalidades:
Ilícitas
Fraudulentas
Abusivas
Irregulares
Incompatíveis com o perfil declarado do Cliente
Incluindo práticas que possam gerar risco operacional, jurídico, regulatório ou reputacional à Bass Pago, parceiros, participantes do arranjo Pix ou terceiros.
# 9.3. Caracterização de Uso Indevido
Caracterizam-se como uso indevido, de forma não exaustiva:
I. Atividades Ilícitas
Utilização da conta, APIs, PDV ou demais produtos para:
Golpes
Fraudes
Estelionato
Esquemas ilícitos
Pirâmides financeiras
Práticas semelhantes
II. Ocultação de Recursos
Simulação, dissimulação ou ocultação da origem, destino, titularidade ou natureza de recursos
Inclusive por fracionamento, circularização ou interposição de terceiros
III. Compartilhamento Indevido
Compartilhamento de credenciais, chaves de API, tokens, dispositivos
Permissão de uso da conta por terceiros não autorizados
IV. Descumprimento de Regras
Descumprimento das regras do Pix, inclusive MED e MED 2.0
V. Atos Suspeitos
Prática de atos que ensejem:
Bloqueios cautelares
Retenções
Devoluções
Estornos
Comunicação às autoridades
VI. Incompatibilidade de Perfil
Utilização dos serviços de forma incompatível com:
Perfil cadastral
Volumetria
Capacidade econômico-financeira
Parâmetros de risco definidos pela Bass Pago
# 9.4. Medidas da Bass Pago
Diante de indícios ou confirmação de uso indevido, a Bass Pago poderá, a qualquer tempo e a seu exclusivo critério, adotar, isolada ou cumulativamente:
Bloqueio cautelar de valores, contas, funcionalidades ou acessos
Retenção de recursos
Execução de devoluções, estornos ou ajustes
Suspensão ou encerramento definitivo da conta
Comunicação às autoridades competentes
# 9.5. Ausência de Falha
O Cliente reconhece que tais medidas:
Não configuram falha na prestação de serviços
Decorrem de deveres legais e regulatórios
Não geram direito a indenização, ressarcimento, lucros cessantes ou compensações
# 10. BLOQUEIO, ENCERRAMENTO E RETENÇÃO DE VALORES
# 10.1. Poderes da Bass Pago
A Bass Pago poderá, a qualquer tempo, de forma motivada ou imotivada, por critério exclusivo de:
Risco
Segurança
Compliance
Prevenção a fraudes
PLD/FT
Exigência regulatória
Determinação de autoridade
Bloquear, suspender, limitar ou encerrar a conta, total ou parcialmente, independentemente de aviso prévio.
# 10.2. Ausência de Direitos
O encerramento da conta não gera direito adquirido, expectativa de continuidade, indenização, compensação ou ressarcimento, mesmo que haja:
Paralisação de atividades
Perda de faturamento
Impactos operacionais ao Cliente
# 10.3. Retenção de Valores
A Bass Pago poderá reter valores, saldos ou créditos, inclusive após encerramento da conta, pelo prazo necessário à:
Apuração de irregularidades
Cumprimento de obrigações legais, regulatórias ou contratuais
Execução de devoluções, estornos, ajustes
Atendimento a ordens judiciais ou administrativas
# 10.4. Disponibilização de Saldo
Findo o prazo de retenção e inexistindo impedimentos legais ou regulatórios, eventual saldo remanescente poderá ser disponibilizado ao Cliente por meio operacional definido pela Bass Pago.
# 11. LIMITAÇÃO DE RESPONSABILIDADE
# 11.1. Exclusão de Danos
A Bass Pago não será responsável por danos:
Indiretos
Incidentais
Especiais
Punitivos
Consequenciais
Incluindo:
Lucros cessantes
Perda de faturamento
Interrupção de atividades
Perda de dados
Expectativa de ganhos
Danos reputacionais
# 11.2. Limitação Financeira
A responsabilidade total da Bass Pago, quando reconhecida, fica limitada ao montante efetivamente pago pelo Cliente a título de tarifas nos 12 meses anteriores ao evento.
# 11.3. Exclusão por Terceiros
A Bass Pago não será responsabilizada por prejuízos decorrentes de:
Atos ou omissões de autoridades
Alterações normativas
Casos fortuitos
Força maior
Falhas sistêmicas externas
Eventos fora de seu controle razoável
# 12. INDENIZAÇÃO, REGRESSO E RESPONSABILIDADE DO CLIENTE
# 12.1. Obrigação de Indenizar
O Cliente obriga-se a indenizar, defender e manter indene a Bass Pago, seus administradores, colaboradores, parceiros e prestadores de serviço contra quaisquer:
Perdas
Danos
Multas
Penalidades
Custos
Despesas
Honorários advocatícios
Reclamações
Demandas
Decorrentes de:
Uso indevido
Descumprimento de Termos
Atos de sócios, empregados, representantes, integradores ou usuários finais
Falhas em integrações técnicas, APIs, automações ou sistemas
# 12.2. Direito de Regresso
A indenização prevista abrange direito de regresso integral, podendo a Bass Pago compensar valores devidos com saldos existentes ou futuros, conforme legislação aplicável.
# 13. DISPOSIÇÕES REGULATÓRIAS, GESTÃO DE RISCOS E COOPERAÇÃO COM AUTORIDADES
# 13.1. Ambiente Regulado
A Bass Pago atua em ambiente regulado e submete-se integralmente às:
Normas, resoluções, circulares, cartas circulares e demais atos normativos expedidos pelo Banco Central do Brasil
Regras dos arranjos de pagamento dos quais participe
Comprometendo-se a observar as melhores práticas de:
Governança
Compliance
Controle interno
Gestão de riscos
# 13.2. Gestão Baseada em Risco
O Cliente reconhece, declara e concorda que a Bass Pago adota modelo de gestão baseada em risco (risk-based approach), podendo, a qualquer tempo, ajustar, restringir, suspender ou reavaliar:
Produtos
Funcionalidades
Limites
Fluxos operacionais
Parâmetros transacionais
De forma dinâmica e proporcional, considerando, entre outros fatores:
Perfil cadastral
Natureza das atividades
Volumetria
Histórico transacional
Alertas sistêmicos
Comunicações regulatórias
Determinações de autoridades competentes
# 13.3. Compartilhamento de Dados
A Bass Pago poderá compartilhar dados, informações, documentos, registros, evidências, logs e trilhas de auditoria com:
Autoridades administrativas, regulatórias, policiais ou judiciais
Participantes do arranjo Pix
Câmaras de compensação
Parceiros operacionais
Instituições participantes
Sempre que necessário para:
Cumprimento de obrigações legais ou regulatórias
Atendimento a ordens ou requisições
Prevenção ou investigação de ilícitos, fraudes ou irregularidades
Mitigação de riscos operacionais, sistêmicos, jurídicos ou reputacionais
# 13.4. Ciência do Cliente
O Cliente declara ciência inequívoca de que as comunicações e compartilhamentos previstos não configuram violação de:
Sigilo bancário
Sigilo contratual
Sigilo comercial
Nem ensejam qualquer direito a indenização, ressarcimento ou questionamento judicial ou administrativo.
# 13.5. Manutenção de Registros
A Bass Pago poderá manter registros cadastrais, transacionais, logs de acesso, comunicações, documentos e demais informações relacionadas ao Cliente pelo prazo exigido em:
Lei
Regulamento
Orientação regulatória
Inclusive para:
Fiscalização
Auditoria
Investigações internas ou externas
Defesa de seus direitos
# 14. VIGÊNCIA, RESCISÃO, LEGISLAÇÃO APLICÁVEL E FORO
# 14.1. Vigência
Estes Termos entram em vigor a partir de sua aceitação pelo Cliente e permanecem vigentes por prazo indeterminado, enquanto houver:
Relacionamento contratual
Obrigações pendentes
Efeitos jurídicos decorrentes da utilização da plataforma e dos serviços
# 14.2. Sobrevivência de Cláusulas
A rescisão, suspensão ou encerramento da conta, por qualquer motivo, não prejudicará a plena eficácia das cláusulas que, por sua natureza, devam sobreviver, incluindo:
Uso indevido
Fraude
Bloqueio e retenção de valores
Limitação de responsabilidade
Indenização
Cooperação com autoridades
Gestão de riscos
Foro
# 14.3. Tolerância
A eventual tolerância da Bass Pago quanto ao descumprimento de quaisquer disposições destes Termos será considerada mera liberalidade, não implicando:
Novação
Renúncia
Alteração contratual
Precedente
# 14.4. Lei Aplicável
Estes Termos serão regidos, interpretados e executados de acordo com as leis da República Federativa do Brasil.
# 14.5. Foro
Fica eleito o foro da Comarca de São Paulo-SP, com renúncia expressa a qualquer outro, por mais privilegiado que seja, para dirimir quaisquer controvérsias oriundas destes Termos.
Para dúvidas sobre estes Termos e Condições de Uso, entre em contato conosco através dos nossos canais oficiais de atendimento.

BIN
static/preloading.mp4 Normal file

Binary file not shown.

267
static/sw.js Normal file
View File

@ -0,0 +1,267 @@
const CACHE_NAME = 'basspago-v1.0.0';
const urlsToCache = [
// Páginas principais
'/',
'/pix',
'/pdv',
'/conta-digital',
'/desenvolvedores',
'/precos',
// Favicons
'/favicon-16x16.png',
'/apple-touch-icon.png',
// Imagens críticas do hero/homepage
'/src/lib/assets/backgroundSection2.png',
'/src/lib/assets/phone-card.png',
'/src/lib/assets/backgroundPDV.png',
'/src/lib/assets/phone-qrcode.png',
// Logos de parceiros (críticos para hero)
'/src/lib/assets/marca-cambionet.png',
'/src/lib/assets/marca-cazco.png',
'/src/lib/assets/marca-cdl.png',
'/src/lib/assets/marca-fecomercio-rs.png',
'/src/lib/assets/marca-gramado-sumit.png',
'/src/lib/assets/marca-hubsafe.png',
'/src/lib/assets/marca-ic-globall.png',
'/src/lib/assets/marca-ic-sindi.png',
'/src/lib/assets/marca-jusfy.png',
'/src/lib/assets/marca-sesc.png',
// Outras imagens importantes
'/src/lib/assets/cubes-plus.svg',
'/src/lib/assets/iphone-pix-mockup.png',
'/src/lib/assets/iphone-pix-mockup2.png',
'/src/lib/assets/banking-interface-mockup2.png',
'/src/lib/assets/qrcode-azul.png',
'/src/lib/assets/copy-link-pagamento.png',
// Ícones e SVGs críticos
'/src/lib/assets/pix-e-ted-azul.svg',
'/src/lib/assets/pagamentos-azul.svg',
'/src/lib/assets/cobranca.svg',
'/src/lib/assets/saldos-e-extratos.svg',
'/src/lib/assets/fluxo-de-aprovacao.svg',
'/src/lib/assets/conta-escrow-azul.svg',
'/src/lib/assets/cobranca-em-lote.svg',
'/src/lib/assets/gestao-de-usuarios.svg',
'/src/lib/assets/check.svg',
'/src/lib/assets/lock-icon.svg',
// App store badges
'/src/lib/assets/apple-store.svg',
'/src/lib/assets/google-play.svg',
// Logos da empresa
'/src/lib/assets/logo-basspago-preta.svg',
'/src/lib/assets/icon-slim-basspago.svg'
];
// Recursos para cache dinâmico (não críticos)
const dynamicCacheResources = [
'/src/lib/assets/case-1.webp',
'/src/lib/assets/case-2.webp',
'/src/lib/assets/case-3.webp',
'/src/lib/assets/case-4.webp',
'/src/lib/assets/case-5.webp',
'/src/lib/assets/case-6.webp',
'/src/lib/assets/payment-schedule-mockup.svg'
];
// Install event - Cache recursos críticos
self.addEventListener('install', (event) => {
console.log('[SW] Installing...');
event.waitUntil(
caches.open(CACHE_NAME)
.then((cache) => {
console.log('[SW] Cache opened, adding critical resources...');
// Cache recursos críticos em lotes para evitar timeout
const batchSize = 10;
const batches = [];
for (let i = 0; i < urlsToCache.length; i += batchSize) {
batches.push(urlsToCache.slice(i, i + batchSize));
}
return batches.reduce((promise, batch) => {
return promise.then(() => {
console.log('[SW] Caching batch:', batch);
return cache.addAll(batch).catch((error) => {
console.warn('[SW] Failed to cache batch:', batch, error);
// Tenta cachear individualmente em caso de erro
return Promise.allSettled(
batch.map(url => cache.add(url).catch(e => console.warn('[SW] Failed to cache:', url, e)))
);
});
});
}, Promise.resolve());
})
.then(() => {
console.log('[SW] Critical resources cached successfully');
})
.catch((error) => {
console.error('[SW] Failed to cache critical resources:', error);
})
);
// Força a ativação imediata
self.skipWaiting();
});
// Activate event - Limpa caches antigos
self.addEventListener('activate', (event) => {
console.log('[SW] Activating...');
event.waitUntil(
caches.keys().then((cacheNames) => {
return Promise.all(
cacheNames.map((cacheName) => {
if (cacheName !== CACHE_NAME) {
console.log('[SW] Deleting old cache:', cacheName);
return caches.delete(cacheName);
}
})
);
}).then(() => {
console.log('[SW] Old caches cleaned');
// Toma controle de todas as abas abertas
return self.clients.claim();
})
);
});
// Fetch event - Estratégia de cache
self.addEventListener('fetch', (event) => {
const { request } = event;
const url = new URL(request.url);
// Ignora requests que não são GET
if (request.method !== 'GET') {
return;
}
// Ignora requests para outros domínios (exceto fonts)
if (url.origin !== location.origin && !url.hostname.includes('fonts')) {
return;
}
event.respondWith(
caches.match(request)
.then((cachedResponse) => {
// Se está no cache, retorna imediatamente
if (cachedResponse) {
console.log('[SW] Serving from cache:', request.url);
// Para recursos críticos, também faz fetch em background para atualizar
if (urlsToCache.includes(url.pathname)) {
fetch(request).then((response) => {
if (response.ok) {
caches.open(CACHE_NAME).then((cache) => {
cache.put(request, response.clone());
});
}
}).catch(() => {
// Ignora erros de network em background updates
});
}
return cachedResponse;
}
// Se não está no cache, faz fetch
console.log('[SW] Fetching from network:', request.url);
return fetch(request)
.then((response) => {
// Só cacheia responses válidos
if (!response || response.status !== 200 || response.type !== 'basic') {
return response;
}
// Cacheia recursos dinâmicos se estão na lista
if (dynamicCacheResources.includes(url.pathname) ||
url.pathname.includes('/src/lib/assets/')) {
const responseToCache = response.clone();
caches.open(CACHE_NAME)
.then((cache) => {
console.log('[SW] Caching dynamic resource:', request.url);
cache.put(request, responseToCache);
});
}
return response;
})
.catch((error) => {
console.error('[SW] Fetch failed:', request.url, error);
// Fallback para páginas HTML
if (request.headers.get('accept').includes('text/html')) {
return caches.match('/');
}
throw error;
});
})
);
});
// Background Sync para cache de recursos não críticos
self.addEventListener('sync', (event) => {
if (event.tag === 'background-cache') {
event.waitUntil(
caches.open(CACHE_NAME)
.then((cache) => {
console.log('[SW] Background caching dynamic resources...');
return Promise.allSettled(
dynamicCacheResources.map(url =>
cache.add(url).catch(e => console.warn('[SW] Background cache failed:', url, e))
)
);
})
);
}
});
// Message event para comunicação com a app
self.addEventListener('message', (event) => {
if (event.data && event.data.type === 'SKIP_WAITING') {
self.skipWaiting();
}
if (event.data && event.data.type === 'GET_CACHE_STATUS') {
caches.open(CACHE_NAME).then((cache) => {
return cache.keys();
}).then((keys) => {
event.ports[0].postMessage({
type: 'CACHE_STATUS',
cached: keys.length,
total: urlsToCache.length
});
});
}
});
// Periodic background sync (se suportado)
self.addEventListener('periodicsync', (event) => {
if (event.tag === 'cache-update') {
event.waitUntil(
caches.open(CACHE_NAME)
.then((cache) => {
console.log('[SW] Periodic cache update...');
return Promise.allSettled(
urlsToCache.map(url =>
fetch(url).then(response => {
if (response.ok) {
return cache.put(url, response);
}
}).catch(e => console.warn('[SW] Periodic update failed:', url, e))
)
);
})
);
}
});