mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 02:29:55 +02:00
feat(docs): add animated product website
This commit is contained in:
247
docs/components/hero-scene.css
Normal file
247
docs/components/hero-scene.css
Normal file
@@ -0,0 +1,247 @@
|
||||
/* Hero transfer scene */
|
||||
.hero-visual {
|
||||
position: relative;
|
||||
width: min(100%, 730px);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.hero-stage {
|
||||
--pointer-x: 0;
|
||||
--pointer-y: 0;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
aspect-ratio: 1.13;
|
||||
isolation: isolate;
|
||||
perspective: 1200px;
|
||||
}
|
||||
|
||||
.hero-grid {
|
||||
position: absolute;
|
||||
z-index: -3;
|
||||
inset: 9% 2% 4% 7%;
|
||||
border: 1px solid rgba(168, 85, 247, 0.14);
|
||||
border-radius: 50%;
|
||||
background-image:
|
||||
linear-gradient(rgba(121, 82, 138, 0.07) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(121, 82, 138, 0.07) 1px, transparent 1px);
|
||||
background-size: 32px 32px;
|
||||
transform: rotateX(64deg) rotateZ(-8deg) translateZ(-70px);
|
||||
mask-image: radial-gradient(circle, black 10%, transparent 70%);
|
||||
}
|
||||
|
||||
.hero-glow {
|
||||
position: absolute;
|
||||
z-index: -2;
|
||||
border-radius: 50%;
|
||||
filter: blur(60px);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.hero-glow-one {
|
||||
top: 22%;
|
||||
right: 8%;
|
||||
width: 37%;
|
||||
aspect-ratio: 1;
|
||||
background: rgba(168, 85, 247, 0.23);
|
||||
transform: translate(calc(var(--pointer-x) * 12px), calc(var(--pointer-y) * 12px));
|
||||
}
|
||||
|
||||
.hero-glow-two {
|
||||
bottom: 8%;
|
||||
left: 28%;
|
||||
width: 30%;
|
||||
aspect-ratio: 1;
|
||||
background: rgba(126, 58, 236, 0.16);
|
||||
transform: translate(calc(var(--pointer-x) * -9px), calc(var(--pointer-y) * -9px));
|
||||
}
|
||||
|
||||
.hero-scene {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
inset: 1% -3% auto -1%;
|
||||
width: 105%;
|
||||
overflow: visible;
|
||||
transform: rotateY(calc(var(--pointer-x) * 1.7deg)) rotateX(calc(var(--pointer-y) * -1.7deg));
|
||||
transform-origin: center;
|
||||
transition: transform 180ms ease-out;
|
||||
}
|
||||
|
||||
.scene-laptop {
|
||||
transform: translate(calc(var(--pointer-x) * -4px), calc(var(--pointer-y) * -4px));
|
||||
transition: transform 200ms ease-out;
|
||||
}
|
||||
|
||||
.scene-phone {
|
||||
transform: translate(calc(var(--pointer-x) * 7px), calc(var(--pointer-y) * 5px));
|
||||
transition: transform 200ms ease-out;
|
||||
}
|
||||
|
||||
.scene-orbits {
|
||||
transform-origin: 385px 325px;
|
||||
animation: scene-orbits 30s linear infinite;
|
||||
}
|
||||
|
||||
.laptop-files {
|
||||
transform-origin: 190px 245px;
|
||||
animation: laptop-files 6s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.conduit-energy {
|
||||
animation: conduit-energy 2s linear infinite;
|
||||
}
|
||||
|
||||
.approval-gate {
|
||||
transform-origin: 440px 443px;
|
||||
animation: gate-hover 5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.received-file {
|
||||
transform-origin: 616px 270px;
|
||||
animation: received-file 7s cubic-bezier(0.34, 1.2, 0.55, 1) infinite;
|
||||
}
|
||||
|
||||
.packet,
|
||||
.packet-spark {
|
||||
opacity: 0;
|
||||
transform-box: fill-box;
|
||||
transform-origin: center;
|
||||
}
|
||||
|
||||
.packet-one {
|
||||
animation: hero-packet-one 7s cubic-bezier(0.45, 0.05, 0.35, 1) 0.6s infinite;
|
||||
}
|
||||
|
||||
.packet-two {
|
||||
animation: hero-packet-two 7s cubic-bezier(0.45, 0.05, 0.35, 1) 3s infinite;
|
||||
}
|
||||
|
||||
.packet-spark-one {
|
||||
animation: hero-spark-one 7s ease 0.6s infinite;
|
||||
}
|
||||
|
||||
.packet-spark-two {
|
||||
animation: hero-spark-two 7s ease 3s infinite;
|
||||
}
|
||||
|
||||
.hero-status {
|
||||
position: absolute;
|
||||
z-index: 5;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border: 1px solid rgba(222, 211, 228, 0.95);
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
box-shadow: 0 15px 45px rgba(49, 27, 61, 0.11);
|
||||
backdrop-filter: blur(12px);
|
||||
transition: transform 180ms ease-out;
|
||||
}
|
||||
|
||||
.hero-status-secure {
|
||||
top: 2%;
|
||||
right: 5%;
|
||||
gap: 10px;
|
||||
padding: 10px 13px 10px 10px;
|
||||
border-radius: 14px;
|
||||
transform: translate(calc(var(--pointer-x) * 12px), calc(var(--pointer-y) * 8px)) rotate(2deg);
|
||||
animation: status-hover 6s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.status-icon {
|
||||
display: grid;
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
place-items: center;
|
||||
border-radius: 10px;
|
||||
background: var(--brand-100);
|
||||
color: var(--brand-600);
|
||||
}
|
||||
|
||||
.status-icon svg {
|
||||
width: 17px;
|
||||
}
|
||||
|
||||
.hero-status strong,
|
||||
.hero-status small {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.hero-status strong {
|
||||
color: #2b2530;
|
||||
font-size: 10px;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.hero-status small {
|
||||
color: #897f8e;
|
||||
font-size: 8px;
|
||||
}
|
||||
|
||||
.hero-status-route {
|
||||
top: 18%;
|
||||
left: 9%;
|
||||
gap: 8px;
|
||||
padding: 7px 11px;
|
||||
border-radius: 999px;
|
||||
color: #534b57;
|
||||
font-family: var(--font-mono);
|
||||
font-size: 8px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.04em;
|
||||
transform: translate(calc(var(--pointer-x) * -8px), calc(var(--pointer-y) * -6px)) rotate(-3deg);
|
||||
}
|
||||
|
||||
.status-pulse,
|
||||
.live-dot {
|
||||
display: inline-block;
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
border-radius: 50%;
|
||||
background: #2bc477;
|
||||
box-shadow: 0 0 0 4px rgba(43, 196, 119, 0.13);
|
||||
animation: status-pulse 2.4s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.hero-file-label {
|
||||
position: absolute;
|
||||
z-index: 4;
|
||||
bottom: 7%;
|
||||
left: 7%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 11px;
|
||||
padding: 10px 13px;
|
||||
border: 1px solid rgba(222, 211, 228, 0.95);
|
||||
border-radius: 14px;
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
box-shadow: 0 15px 45px rgba(49, 27, 61, 0.11);
|
||||
backdrop-filter: blur(12px);
|
||||
transform: translate(calc(var(--pointer-x) * -10px), calc(var(--pointer-y) * -7px)) rotate(-2deg);
|
||||
transition: transform 180ms ease-out;
|
||||
}
|
||||
|
||||
.file-type-icon {
|
||||
display: grid;
|
||||
width: 37px;
|
||||
height: 37px;
|
||||
place-items: center;
|
||||
border-radius: 10px;
|
||||
background: linear-gradient(135deg, var(--brand-400), var(--brand-600));
|
||||
color: white;
|
||||
font-family: var(--font-mono);
|
||||
font-size: 8px;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.hero-file-label strong,
|
||||
.hero-file-label small {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.hero-file-label strong {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.hero-file-label small {
|
||||
color: var(--ink-muted);
|
||||
font-size: 8px;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user