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" />
</svg> <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>

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"
</svg> 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>

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" />
</svg> <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>

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"
</svg> 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>

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"
</svg> 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>

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"
</svg> 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>

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"
</svg> 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>

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"
</svg> 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>

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:
## 1. INTRODUÇÃO E ESCOPO
Coleta
Uso ### 1.1. Finalidade da Política
Armazenamento
Compartilhamento A presente Política de Privacidade ("Política") estabelece as diretrizes
Proteção de dados pessoais adotadas pela **Bass Pago Instituição de Pagamento** ("Bass Pago") para
No âmbito de seus sites, aplicativos, APIs, plataformas tecnológicas, produtos e serviços digitais. a coleta, uso, armazenamento, compartilhamento e proteção de dados
pessoais no âmbito de seus sites, aplicativos, APIs, plataformas
# 1.2. Conformidade Legal tecnológicas, produtos e serviços digitais.
Esta Política foi elaborada em conformidade com:
### 1.2. Conformidade Legal
Lei nº 13.709/2018 Lei Geral de Proteção de Dados Pessoais (LGPD)
Normas setoriais aplicáveis às instituições de pagamento Esta Política foi elaborada em conformidade com:
Diretrizes do Banco Central do Brasil
Boas práticas de governança - Lei nº 13.709/2018 -- Lei Geral de Proteção de Dados (LGPD)\
Segurança da informação - Normas aplicáveis às instituições de pagamento\
Padrões reconhecidos internacionalmente de privacidade e proteção de dados - Diretrizes do Banco Central do Brasil\
# 1.3. Instrumentos Adicionais - Boas práticas de governança e segurança da informação
Os produtos e serviços da Bass Pago podem estar sujeitos, adicionalmente, a:
### 1.3. Instrumentos Complementares
Termos específicos
Contratos Os produtos e serviços da Bass Pago podem estar sujeitos a termos
Regulamentos operacionais específicos, contratos, regulamentos operacionais e políticas de
Políticas de parceiros, emissores de cartões, arranjos de pagamento e instituições financeiras envolvidas parceiros ou instituições envolvidas.
# 1.4. Aceitação
Ao utilizar os serviços da Bass Pago, o Usuário declara que: ### 1.4. Aceitação
Leu esta Política Ao utilizar os serviços da Bass Pago, o Usuário declara que leu,
Compreendeu seu conteúdo compreendeu e concorda com esta Política, que complementa os Termos de
Concorda com suas disposições Uso.
Esta Política complementa os Termos de Uso e demais instrumentos contratuais aplicáveis.
------------------------------------------------------------------------
# 2. Definições
Para fins desta Política, aplicam-se, entre outras, as definições previstas na LGPD, especialmente: ## 2. DEFINIÇÕES
# 2.1. Dados Pessoais Para fins desta Política, aplicam-se as definições previstas na LGPD.
Informação relacionada a pessoa natural identificada ou identificável.
### 2.1. Dados Pessoais
# 2.2. Dados Pessoais Sensíveis
Dados sobre: Informação relacionada a pessoa natural identificada ou identificável.
Origem racial ou étnica ### 2.2. Dados Pessoais Sensíveis
Convicção religiosa
Opinião política Dados sobre origem racial ou étnica, convicção religiosa, opinião
Filiação sindical política, filiação sindical, dados genéticos, biométricos ou relativos à
Dados genéticos saúde.\
Dados biométricos Tratados apenas quando estritamente necessários e com base legal
Dados relativos à saúde adequada.
Nota: Tratados apenas quando estritamente necessários e com base legal adequada.
### 2.3. Titular
# 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
A Bass Pago, a quem competem as decisões referentes ao tratamento dos dados. ### 2.5. Controlador
# 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:
Pessoa natural ou jurídica que realiza o tratamento em nome da Bass
# 3.1. Bases Legais Aplicáveis Pago.
Cumprimento de obrigação legal ou regulatória
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 ## 3. BASES LEGAIS PARA O TRATAMENTO
Proteção do crédito
Consentimento do titular, quando exigido O tratamento ocorre com fundamento em pelo menos uma das bases legais
# 4. Dados Pessoais Coletados previstas na LGPD, incluindo:
A Bass Pago poderá coletar e tratar, conforme a natureza da relação e dos serviços utilizados, os seguintes dados pessoais:
- Cumprimento de obrigação legal ou regulatória\
# 4.1. Dados Fornecidos Diretamente pelo Usuário - Execução de contrato\
Nome completo, CPF, CNPJ, data de nascimento - Exercício regular de direitos\
Documentos de identificação - Legítimo interesse\
Endereço, telefone, e-mail e demais dados de contato - Proteção do crédito\
Dados cadastrais e empresariais - Consentimento, quando aplicável
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 ## 4. DADOS PESSOAIS COLETADOS
Dados de bureaus de crédito, prevenção à fraude e PLD/FT
Informações cadastrais e reputacionais permitidas por lei ### 4.1. Dados Fornecidos pelo Usuário
# 4.3. Dados Técnicos e de Navegação
Endereço IP, data e hora de acesso - Nome, CPF/CNPJ, data de nascimento\
Identificadores de dispositivos, sistema operacional e navegador - Documentos de identificação\
Cookies e tecnologias similares - Endereço, telefone e e-mail\
Dados de geolocalização, quando autorizados - Dados empresariais\
# 4.4. Dados Transacionais e Operacionais - Informações para validação de identidade (KYC)\
Informações sobre transações financeiras, movimentações, pagamentos e uso dos serviços - Informações fornecidas em comunicações e atendimentos
Registros operacionais, logs e trilhas de auditoria
# 4.5. Responsabilidade por Dados de Terceiros ### 4.2. Dados Obtidos de Terceiros
O Usuário declara possuir autorização legal para fornecer dados de terceiros, quando aplicável.
- Bases públicas ou privadas\
# 5. Finalidades do Tratamento - Bureaus de crédito\
Os dados pessoais são tratados para as seguintes finalidades, conforme aplicável: - Informações permitidas por lei
# 5.1. Prestação de Serviços ### 4.3. Dados Técnicos e de Navegação
Prestação, execução e gestão dos serviços e produtos contratados
Identificação, autenticação e verificação de identidade - Endereço IP\
# 5.2. Conformidade Legal - Identificadores de dispositivo\
Cumprimento de obrigações legais, regulatórias e normativas, inclusive PLD/FT - Cookies\
Prevenção e combate a fraudes, ilícitos e incidentes de segurança - Geolocalização, quando autorizada
# 5.3. Atendimento e Suporte
Atendimento ao Usuário e suporte técnico ### 4.4. Dados Transacionais
Comunicação institucional, operacional e comercial
# 5.4. Desenvolvimento e Melhoria - Informações sobre transações\
Desenvolvimento, aprimoramento e personalização de produtos e serviços - Logs operacionais e trilhas de auditoria
Realização de análises, estatísticas e relatórios, preferencialmente de forma anonimizada
# 5.5. Direitos da Bass Pago ### 4.5. Dados de Terceiros
Exercício regular de direitos da Bass Pago
# 6. Compartilhamento de Dados O Usuário declara possuir autorização legal para fornecer dados de
A Bass Pago poderá compartilhar dados pessoais, sempre de forma proporcional e necessária, com: terceiros.
# 6.1. Parceiros Operacionais ------------------------------------------------------------------------
Prestadores de serviços
Parceiros tecnológicos ## 5. FINALIDADES DO TRATAMENTO
Fornecedores
# 6.2. Setor Financeiro ### 5.1. Prestação de Serviços
Instituições financeiras
Arranjos de pagamento - Execução e gestão dos serviços\
Emissores e adquirentes - Identificação e autenticação
# 6.3. Grupo Econômico
Empresas do mesmo grupo econômico ### 5.2. Conformidade Legal
# 6.4. Autoridades
Autoridades administrativas, regulatórias, judiciais ou policiais, quando exigido - Cumprimento de obrigações regulatórias\
# 6.5. Operações Societárias - Prevenção a fraudes e ilícitos
Terceiros envolvidos em operações societárias, como fusão ou aquisição
# 6.6. Proteções Contratuais ### 5.3. Atendimento
Todos os compartilhamentos são realizados mediante:
- Suporte técnico\
Contratos - Comunicação institucional e operacional
Cláusulas de confidencialidade
Obrigações de proteção de dados compatíveis com esta Política e com a legislação vigente ### 5.4. Desenvolvimento
# 7. Transferência Internacional de Dados
Quando aplicável, a Bass Pago poderá realizar transferências internacionais de dados pessoais, observando: - Melhoria de produtos e serviços\
- Análises e relatórios, preferencialmente anonimizados
Requisitos legais
Garantias adequadas ### 5.5. Exercício de Direitos
Mecanismos de proteção previstos na LGPD
# 8. Segurança da Informação - Defesa em processos judiciais ou administrativos
# 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 ## 6. COMPARTILHAMENTO DE DADOS
Perdas
Destruição Os dados poderão ser compartilhados, quando necessário, com:
Alteração
Divulgação indevida - Prestadores de serviços e parceiros tecnológicos\
# 8.2. Controles Implementados - Instituições financeiras e arranjos de pagamento\
Controles de acesso e segregação de funções - Empresas do grupo econômico\
Criptografia e autenticação multifator - Autoridades competentes\
Monitoramento, registros de logs e auditorias - Terceiros envolvidos em operações societárias
Políticas internas, treinamentos e gestão de riscos
# 8.3. Limitações de Segurança Sempre mediante cláusulas de confidencialidade e proteção de dados.
Embora sejam adotados os melhores esforços de segurança, nenhum sistema é absolutamente imune a riscos.
------------------------------------------------------------------------
# 9. Retenção e Eliminação dos Dados
# 9.1. Período de Armazenamento ## 7. TRANSFERÊNCIA INTERNACIONAL
Os dados pessoais serão armazenados pelo período necessário para o cumprimento das:
Quando aplicável, serão observadas as garantias previstas na LGPD.
Finalidades do tratamento
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.
## 8. SEGURANÇA DA INFORMAÇÃO
# 9.2. Eliminação dos Dados
Após o término desses prazos, os dados serão: A Bass Pago adota medidas técnicas e administrativas adequadas para
proteger os dados contra acessos não autorizados, perda, alteração ou
Eliminados, ou divulgação indevida.
Anonimizados
Exceção: Quando houver outra base legal que autorize sua conservação. Incluem:
# 10. Direitos dos Titulares - Controles de acesso\
A Bass Pago assegura aos titulares o exercício dos direitos previstos no artigo 18 da LGPD, incluindo: - Criptografia\
- Monitoramento e auditoria\
# 10.1. Direitos Garantidos - Políticas internas e treinamentos
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 ## 9. RETENÇÃO E ELIMINAÇÃO
Portabilidade, observados segredos comerciais e regulatórios
Informação sobre compartilhamentos Os dados serão armazenados pelo prazo necessário ao cumprimento das
Revogação do consentimento finalidades e obrigações legais, podendo alcançar até 10 anos.
Oposição ao tratamento, quando cabível
# 10.2. Processamento de Solicitações Após esse período, serão eliminados ou anonimizados, salvo hipótese
As solicitações serão analisadas e respondidas nos prazos legais. legal diversa.
# 11. Cookies e Tecnologias Semelhantes ------------------------------------------------------------------------
# 11.1. Utilização
A Bass Pago utiliza cookies e tecnologias similares para: ## 10. DIREITOS DOS TITULARES
Garantir o funcionamento adequado das plataformas Nos termos do art. 18 da LGPD, o titular poderá solicitar:
Melhorar a experiência do Usuário
Apoiar análises de desempenho - Confirmação de tratamento\
# 11.2. Gerenciamento - Acesso aos dados\
O Usuário pode gerenciar suas preferências de cookies diretamente em seu navegador, ciente de que a desativação poderá impactar determinadas funcionalidades. - Correção\
- Anonimização ou eliminação, quando aplicável\
# 12. Encarregado pelo Tratamento de Dados (DPO) - Portabilidade\
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. - Informação sobre compartilhamento\
- Revogação de consentimento\
# 13. Alterações desta Política - Oposição ao tratamento
# 13.1. Atualizações
Esta Política poderá ser atualizada a qualquer tempo, para refletir alterações: ------------------------------------------------------------------------
Legais ## 11. COOKIES
Regulatórias
Operacionais A Bass Pago utiliza cookies para garantir funcionamento adequado,
# 13.2. Disponibilização melhorar experiência e apoiar análises de desempenho.
A versão vigente será sempre disponibilizada nos canais oficiais da Bass Pago.
O Usuário pode gerenciar cookies em seu navegador.
# 14. Legislação Aplicável e Foro
# 14.1. Lei Aplicável ------------------------------------------------------------------------
Esta Política é regida pelas leis da República Federativa do Brasil.
## 12. ENCARREGADO (DPO)
# 14.2. Foro Competente
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. A Bass Pago mantém Encarregado pelo Tratamento de Dados Pessoais,
contatável pelos canais oficiais divulgados em seu site.
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).
------------------------------------------------------------------------
## 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
Esta Política é regida pelas leis da República Federativa do Brasil.
Fica eleito o foro da comarca da sede da Bass Pago para dirimir
eventuais controvérsias.
------------------------------------------------------------------------
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. DISPOSIÇÕES GERAIS E ESCOPO
# 1.2. Serviços Prestados
A Bass Pago presta serviços de pagamento e infraestrutura transacional, incluindo, mas não se limitando a: ### 1.1. Definição dos Termos
Contas de pagamento Estes Termos e Condições de Uso ("Termos") regulam o acesso e a
Pix utilização da plataforma, sistemas, APIs, produtos e serviços de
Cobranças pagamento oferecidos pela **Bass Instituição de Pagamento -- Bass
Liquidação Pago**, inscrita no CNPJ nº 37.293.930/0001-90.
APIs
Cash-out ### 1.2. Serviços Prestados
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. A Bass Pago presta serviços de pagamento e infraestrutura transacional,
incluindo, mas não se limitando a:
# 1.3. Natureza Contratual
Estes Termos possuem natureza contratual, regulatória e operacional, sendo elaborados em consonância com: - Contas de pagamento\
- Pix\
Legislação brasileira - Cobranças\
Normas do Banco Central do Brasil - Liquidação\
Arranjos de pagamento - APIs\
Boas práticas de governança, compliance e gestão de riscos - Cash-out\
# 1.4. Política de Privacidade - PDV e serviços correlatos
A Política de Privacidade da Bass Pago é parte integrante e indissociável destes Termos, devendo ser lida e aceita em conjunto.
**Importante:** A Bass Pago não realiza atividades de concessão de
# 2. ACEITAÇÃO, VINCULAÇÃO, HIERARQUIA CONTRATUAL E ATUALIZAÇÕES crédito, financiamento, investimento, captação de recursos de terceiros
# 2.1. Contrato de Adesão ou aplicação financeira.
Estes Termos constituem contrato de adesão eletrônico, vinculando integralmente o Cliente a partir do primeiro:
### 1.3. Natureza Contratual
Acesso
Cadastro Estes Termos possuem natureza contratual, regulatória e operacional,
Integração técnica sendo elaborados em consonância com:
Utilização de APIs
Realização de transações - Legislação brasileira\
Uso de quaisquer produtos ou serviços disponibilizados pela Bass Pago - Normas do Banco Central do Brasil\
Isso vale ainda que de forma parcial, experimental ou indireta. - Regras dos arranjos de pagamento\
- Boas práticas de governança, compliance e gestão de riscos
# 2.2. Hierarquia Contratual
Estes Termos prevalecem sobre: ### 1.4. Política de Privacidade
Propostas comerciais A Política de Privacidade da Bass Pago é parte integrante e
Apresentações indissociável destes Termos.
Comunicações operacionais
Materiais institucionais ------------------------------------------------------------------------
Acordos verbais
Quaisquer outros entendimentos prévios ## 2. ACEITAÇÃO, VINCULAÇÃO E ATUALIZAÇÕES
Exceção: Contratos específicos escritos, firmados por representantes legais da Bass Pago, dispondo expressamente em sentido diverso.
### 2.1. Contrato de Adesão
# 2.3. Alterações dos Termos
A Bass Pago poderá, a qualquer tempo, alterar, atualizar, revisar ou complementar estes Termos, total ou parcialmente, para adequação: Estes Termos constituem contrato de adesão eletrônico, vinculando o
Cliente a partir do primeiro:
Regulatória
Legal - Acesso\
Operacional - Cadastro\
Tecnológica - Integração técnica\
De segurança da informação - Utilização de APIs\
Prevenção a fraudes - Realização de transações\
PLD/FT ou gestão de riscos - Uso de quaisquer produtos ou serviços disponibilizados
# 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.2. Hierarquia Contratual
# 2.5. Discordância com Alterações Estes Termos prevalecem sobre propostas comerciais, comunicações
Caso o Cliente não concorde com quaisquer alterações destes Termos, deverá cessar imediatamente o uso dos serviços, incluindo: operacionais e quaisquer entendimentos prévios, salvo contratos
específicos firmados por representantes legais da Bass Pago.
Interrupção de integrações técnicas
APIs ### 2.3. Alterações dos Termos
Automações
Operações transacionais A Bass Pago poderá alterar estes Termos a qualquer tempo para adequação
O uso continuado caracterizará uso indevido. regulatória, legal, operacional ou tecnológica.
# 2.6. Ausência de Direito Adquirido A continuidade do uso dos serviços após eventual atualização será
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. considerada aceitação plena das novas condições.
# 3. CADASTRO, KYC, KYP, KYB E REANÁLISE PERMANENTE ------------------------------------------------------------------------
# 3.1. Veracidade das Informações
O Cliente declara que todas as informações fornecidas à Bass Pago são: ## 3. TARIFAS, PREÇOS, VOLUMETRIA E PERFIL DE RISCO
Verdadeiras ### 3.1. Definição de Tarifas
Completas
Precisas As tarifas aplicáveis serão aquelas definidas em propostas comerciais,
Lícitas contratos específicos, tabela pública ou previamente comunicadas ao
Atualizadas Cliente.
Passíveis de verificação documental
Isso inclui dados de sócios, administradores, beneficiários finais e representantes legais. ### 3.2. Alteração de Tarifas
# 3.2. Poderes da Bass Pago A Bass Pago poderá alterar, ajustar ou criar tarifas, inclusive
A Bass Pago poderá, a qualquer tempo e a seu exclusivo critério, realizar: segmentadas por:
# 3.2.1. Validações e Reanálises - Perfil de risco\
Validações cadastrais e reanálises periódicas - Volumetria\
Consideração de todos os sócios e administradores com participação igual ou superior a percentual definido em política interna - Produto utilizado
# 3.2.2. Diligências Ampliadas
Enhanced Due Diligence (EDD) para clientes ou operações de maior risco Sem necessidade de anuência individual.
# 3.2.3. Solicitações Adicionais
Documentos ### 3.3. Aceitação das Tarifas
Declarações
Contratos societários A continuidade do uso dos serviços constitui aceitação plena e
Comprovantes de origem de recursos irrevogável das tarifas vigentes, não gerando direito a contestação,
Dados complementares devolução, compensação, ressarcimento ou indenização.
# 3.2.4. Consultas
Bases públicas, privadas, internas e regulatórias ------------------------------------------------------------------------
Listas de restrição e sanções
# 3.2.5. Medidas Restritivas ## 4. LIMITAÇÃO DE RESPONSABILIDADE
Suspensão temporária ou encerramento da conta
Caso identifique inconsistências, omissões, irregularidades ou risco elevado A Bass Pago não será responsável por danos indiretos, incidentais,
# 3.3. Ausência de Direito Adquirido especiais ou consequenciais, incluindo lucros cessantes ou interrupção
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. de atividades.
# 4. CONTA DE PAGAMENTO E NATUREZA DOS RECURSOS Quando reconhecida responsabilidade, esta ficará limitada ao montante
# 4.1. Natureza da Conta efetivamente pago pelo Cliente a título de tarifas nos 12 meses
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: anteriores ao evento.
Conta corrente bancária ------------------------------------------------------------------------
Poupança
Instrumento de crédito ou investimento ## 5. LEGISLAÇÃO APLICÁVEL E FORO
# 4.2. Características dos Valores
Os valores mantidos na conta: Estes Termos serão regidos pelas leis da República Federativa do Brasil.
Não geram remuneração, correção monetária ou juros Fica eleito o foro da Comarca de São Paulo/SP para dirimir quaisquer
Não constituem ativo financeiro, instrumento de investimento ou garantia de rendimento controvérsias decorrentes destes Termos.
# 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 Para dúvidas sobre estes Termos e Condições de Uso, entre em contato por
Fluxos operacionais meio dos canais oficiais da Bass Pago.
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
Compensação
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
A Bass Pago poderá alterar, ajustar ou criar tarifas, inclusive segmentadas por:
Perfil de risco
Volumetria
Produto utilizado
Sem necessidade de anuência individual.
# 5.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
Devolução
Compensaçã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
Normas do Banco Central
# 6.2. Poderes da Bass Pago
A Bass Pago poderá realizar:
Bloqueio cautelar imediato
Retenção
Devolução ou estorno de valores
Inclusive após o crédito
Nos termos do MED e MED 2.0.
# 6.3. Autorização de Compensação
O Cliente autoriza expressamente a compensação de valores bloqueados ou devolvidos com saldos presentes ou futuros.
# 6.4. Renúncia do Cliente
O Cliente renuncia a qualquer alegação de:
Retenção indevida
Dano emergente
Lucro cessante
Decorrente da aplicação do MED.
# 7. APIS, CASH-OUT E AUTOMAÇÕES
# 7.1. Responsabilidade do Cliente
O Cliente é integralmente responsável por:
Comandos enviados via API
Chaves de acesso
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
Irretratáveis
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))
)
);
})
);
}
});