<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Página com Estrelas Cadentes</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap');
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
overflow-x: hidden;
background: #000;
position: relative;
}
/* Container para estrelas cadentes */
.shooting-stars {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
overflow: hidden;
background: radial-gradient(ellipse at bottom, #1b2735 0%, #090a0f 100%);
}
/* Estrelas de fundo estáticas */
.shooting-stars::before {
content: '';
position: absolute;
width: 100%;
height: 100%;
background-image:
radial-gradient(2px 2px at 20px 30px, white, transparent),
radial-gradient(2px 2px at 60px 70px, white, transparent),
radial-gradient(1px 1px at 50px 50px, white, transparent),
radial-gradient(1px 1px at 130px 80px, white, transparent),
radial-gradient(2px 2px at 90px 10px, white, transparent);
background-repeat: repeat;
background-size: 200px 200px;
animation: twinkle 5s ease-in-out infinite;
opacity: 0.5;
}
@keyframes twinkle {
0%, 100% { opacity: 0.5; }
50% { opacity: 1; }
}
/* Estrelas cadentes */
.shooting-star {
position: absolute;
height: 2px;
background: linear-gradient(90deg, #fff, transparent);
animation: shoot 3s linear infinite;
opacity: 0;
}
.shooting-star::before {
content: '';
position: absolute;
width: 4px;
height: 4px;
border-radius: 50%;
background: #fff;
box-shadow: 0 0 10px 2px rgba(255, 255, 255, 0.8);
}
@keyframes shoot {
0% {
opacity: 1;
transform: translateX(0) translateY(0);
}
100% {
opacity: 0;
transform: translateX(-300px) translateY(300px);
}
}
/* Variações de estrelas cadentes */
.shooting-star:nth-child(1) {
top: 10%;
left: 20%;
width: 100px;
animation-delay: 0s;
animation-duration: 2s;
}
.shooting-star:nth-child(2) {
top: 20%;
left: 40%;
width: 150px;
animation-delay: 1s;
animation-duration: 3s;
}
.shooting-star:nth-child(3) {
top: 5%;
left: 60%;
width: 80px;
animation-delay: 2s;
animation-duration: 2.5s;
}
.shooting-star:nth-child(4) {
top: 30%;
left: 80%;
width: 120px;
animation-delay: 1.5s;
animation-duration: 2.8s;
}
.shooting-star:nth-child(5) {
top: 15%;
left: 50%;
width: 90px;
animation-delay: 3s;
animation-duration: 2.2s;
}
.shooting-star:nth-child(6) {
top: 40%;
left: 30%;
width: 110px;
animation-delay: 0.5s;
animation-duration: 3.5s;
}
.shooting-star:nth-child(7) {
top: 25%;
left: 70%;
width: 95px;
animation-delay: 2.5s;
animation-duration: 2.7s;
}
.shooting-star:nth-child(8) {
top: 35%;
left: 10%;
width: 130px;
animation-delay: 1.8s;
animation-duration: 3.2s;
}
canvas {
opacity: 50%;
z-index: -9999 !important;
pointer-events: none !important;
inset: 0px !important;
position: fixed !important;
top: 0 !important;
left: 0 !important;
width: 100% !important;
height: 100% !important;
background: url(https://cdn.spgunk.eu.org/cdn/images/047b024f60c6b19ed5a5b785e6e9416c97a99614.webp) no-repeat top center / cover !important;
overflow: auto !important;
}
@keyframes fade-in {
from {
background-color: rgba(0, 0, 0, 0);
}
to {
background-color: rgba(0, 0, 0, 0.8);
}
}
@keyframes fade-out {
from {
background-color: rgba(0, 0, 0, 0.8);
}
to {
background-color: rgba(0, 0, 0, 0);
}
}
@keyframes slide-in {
from {
transform: translateX(500px);
}
to {
transform: translateX(0px);
}
}
@keyframes slide-out {
from {
transform: translateX(0px);
}
to {
transform: translateX(500px);
}
}
@layer base {
}
#cart-drawer[data-state="open"] {
animation: fade-in 0.4s forwards;
}
#cart-drawer[data-state="closed"] {
animation: fade-out 0.4s forwards;
}
#cart-drawer[data-state="open"] > div {
animation: slide-in 0.4s forwards;
}
#cart-drawer[data-state="closed"] > div {
animation: slide-out 0.4s forwards;
}
.dialog[data-state="open"] {
animation: fade-in 0.4s forwards;
}
.dialog[data-state="closed"] {
animation: fade-out 0.4s forwards;
}
.dialog[data-state="open"] > div {
animation: dialog-in 0.2s forwards;
}
.dialog[data-state="closed"] > div {
animation: dialog-out 0.2s forwards;
}
@keyframes dialog-in {
from {
opacity: 0;
scale: 50%;
}
to {
opacity: 1;
scale: 100%;
}
}
@keyframes dialog-out {
from {
opacity: 1;
scale: 100%;
}
to {
opacity: 0;
scale: 50%;
}
}
.rgb-border {
position: relative;
border-radius: var(--radius);
z-index: 0;
}
/* Borda RGB animada */
.rgb-border::before {
content: "";
position: absolute;
inset: -2px; /* define espessura da borda */
border-radius: calc(var(--radius) + 4px);
padding: 2px;
background: linear-gradient(
45deg,
#ff0000,
#ff8000,
#ffff00,
#00ff00,
#00ffff,
#0000ff,
#ff00ff,
#ff0000
);
background-size: 600% 600%;
animation: rgbBorder 12s linear infinite;
z-index: -1;
/* cria efeito de borda vazada */
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
mask-composite: exclude;
-webkit-mask-composite: destination-out;
}
/* animação */
@keyframes rgbBorder {
0% { background-position: 0% 50%; }
100% { background-position: 600% 50%; }
}
.rgb-text {
background: linear-gradient(270deg, red, magenta, blue, cyan, lime, yellow, red);
background-size: 600% 600%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
color: transparent;
animation: rgbAnimation 6s ease infinite;
}
@keyframes rgbAnimation {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
#category-section,
#category #products-list {
scroll-margin-top: 100px;
transition:
opacity 0.5s ease-out,
transform 0.5s ease-out;
opacity: 0;
transform: translateY(20px);
}
#category-section.visible,
#category #products-list.visible {
opacity: 1;
transform: translateY(0);
}
@keyframes loading {
0% {
left: -50%;
}
to {
left: 100%;
}
}
span.line-clamp-1 {
font-family: 'Montserrat', sans-serif !important;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
background-size: 200% auto;
animation: opa 5s ease infinite;
font-size: 16px;
padding: 4px 10px;
}
span.ngx\.master {
font-family: "Geist", sans-serif !important;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
background-size: 200% auto;
animation: opa 3s ease infinite;
}
@keyframes opa {
0% {
background-position: 0% 50%
}
50% {
background-position: 100% 50%
}
to {
background-position: 0% 50%
}
}
.hero-wrapper {
position: relative;
overflow: hidden;
}
.slider-bg {
position: absolute;
inset: 0;
z-index: 1;
display: flex;
width: 200%;
animation: slideBg 30s linear infinite;
}
.slider-bg img {
width: 25%;
object-fit: cover;
filter: brightness(0.4);
}
@keyframes slideBg {
from { transform: translateX(0); }
to { transform: translateX(-50%); }
}
.hero-content {
position: relative;
z-index: 10;
}
.ngx-rgb-categ {
position: relative;
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.5rem 1rem;
border-radius: 10px;
color: white;
z-index: 1;
overflow: hidden;
font-weight: bold;
box-sizing: border-box;
}
.ngx-rgb-categ::before {
content: "";
position: absolute;
inset: 0;
border-radius: 12px;
padding: 2px;
background: linear-gradient(45deg,
#ff0000,
#ff2000,
#ff4000,
#ff6000,
#ff8000,
#ffa000,
#ffc000,
#ffe000,
#ffff00,
#e0ff00,
#c0ff00,
#a0ff00,
#80ff00,
#60ff00,
#40ff00,
#20ff00,
#00ff00,
#00ff40,
#00ff80,
#00ffc0,
#00ffff,
#00c0ff,
#0080ff,
#0040ff,
#0000ff,
#2000ff,
#4000ff,
#6000ff,
#8000ff,
#a000ff,
#c000ff,
#ff00ff,
#ff00c0,
#ff0080,
#ff0040,
#ff0000);
background-size: 1800%;
z-index: -1;
animation: rgbzinkkk 50s linear infinite;
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
mask-composite: exclude;
-webkit-mask-composite: destination-out;
box-sizing: border-box;
}
@keyframes rgbzinkkk {
0% {
background-position: 0% 50%;
}
100% {
background-position: 1800% 50%;
}
}
.faq-container h1 {
font-size: 32px;
font-weight: 700;
}
.faq-container {
width: 80%;
max-width: 800px;
margin: 100px auto 35px auto;
color: white;
}
.faq-item {
border: 1px solid rgb(22, 22, 22);
border-radius: 5px;
margin: 10px 0;
overflow: hidden;
}
.faq-question {
padding: 15px;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
border-radius: 5px;
transition: background-color 0.3s, color 0.3s;
}
.faq-question:hover {
background-color: rgba(0, 0, 0, 0.349);
}
.faq-question h3 {
margin: 0;
font-size: 18px;
}
.faq-item.active .faq-question {
background-color: rgba(0, 0, 0, 0.301);
color: white;
}
.faq-answer {
padding: 15px;
display: none;
}
.faq-item.active .faq-answer {
display: block;
background: black;
}
.faq-answer p {
color: white;
}
.faq-answer a {
color: blue;
}
.loading-pulse {
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
@media screen and (max-width: 768px) {
}
.swiper {
width: 100%;
}
.swiper-slide {
flex-shrink: 0;
}
.swiper:hover {
animation-play-state: paused;
}
.features {
display: flex;
flex-wrap: wrap;
gap: 2rem;
justify-content: center;
margin-top: 4rem;
}
.features > div {
flex: 2 2 calc(25% - 2rem);
max-width: calc(29% - 1rem);
box-sizing: border-box;
padding: 1rem;
text-align: center;
}
.features .card {
background-color: var(bg-primary);
border: 1.5px solid rgba(43, 43, 43, 0.541);
border-radius: 15px;
padding: 1rem;
transition: all 0.3s ease;
box-shadow: 0 0 70px -8px rgba(0, 0, 0, 1);
}
.features .card span {
display: inline-block;
color: white;
padding: 2px 9px;
border-radius: 5px;
font-size: 1.75rem;
margin-bottom: 1rem;
}
.features .card h4 {
color: white;
font-size: 1.2rem;
font-weight: 600;
margin-bottom: 0.5rem;
}
.features .card p {
color: #ccc;
margin-bottom: 1rem;
}
.features .card a {
color: white;
transition: all 0.3s ease;
}
.features .card a:hover {
color: #9e9e9e;
}
#duvida {
font-weight: 700;
text-align: center;
font-size: 36px;
}
svg.lucide.lucide-star {
fill: yellow;
}
@media screen and (max-width: 1020px) {
.features {
display: grid;
grid-template-columns: repeat(1, 1fr);
justify-items: center;
}
.features div {
flex: 2 2 calc(25% - 2rem);
max-width: 100%;
text-align: center;
box-sizing: border-box;
padding: 1rem;
}
}
@media screen and (max-width: 768px) {
.features div {
flex: 1 1 100%;
max-width: 100%;
}
#infos {
width: 100vw;
}
}
@media screen and (max-width: 1200px) {
.features div {
flex: 1 1 calc(50% - 2rem);
}
}
/* Conteúdo de exemplo */
.content {
position: relative;
z-index: 1;
color: white;
padding: 50px;
text-align: center;
}
.content h1 {
font-family: 'Montserrat', sans-serif;
font-size: 3rem;
margin-bottom: 20px;
}
.content p {
font-family: 'Geist', sans-serif;
font-size: 1.2rem;
line-height: 1.6;
}
</style>
</head>
<body>
<!-- Container de estrelas cadentes -->
<div class="shooting-stars">
<div class="shooting-star"></div>
<div class="shooting-star"></div>
<div class="shooting-star"></div>
<div class="shooting-star"></div>
<div class="shooting-star"></div>
<div class="shooting-star"></div>
<div class="shooting-star"></div>
<div class="shooting-star"></div>
</div>
<!-- Seu conteúdo aqui -->
<div class="content">
<h1 class="rgb-text">Bem-vindo!</h1>
<p>Este é um exemplo de página com efeito de estrelas cadentes no background.</p>
<p>Todos os seus estilos CSS foram mantidos e o efeito foi adicionado como camada de fundo.</p>
</div>
<script>
// Script para criar mais estrelas cadentes dinamicamente
function createShootingStar() {
const container = document.querySelector('.shooting-stars');
const star = document.createElement('div');
star.className = 'shooting-star';
// Posição aleatória
star.style.top = Math.random() * 50 + '%';
star.style.left = Math.random() * 100 + '%';
// Tamanho aleatório
star.style.width = Math.random() * 100 + 50 + 'px';
// Duração aleatória
const duration = Math.random() * 2 + 2;
star.style.animationDuration = duration + 's';
// Delay aleatório
star.style.animationDelay = Math.random() * 5 + 's';
container.appendChild(star);
// Remove a estrela após a animação
setTimeout(() => {
star.remove();
}, (duration + 5) * 1000);
}
// Cria novas estrelas periodicamente
setInterval(createShootingStar, 2000);
</script>
</body>
</html>
Manus