Files
radicall/resources/css/Client/landing.css
T

196 lines
4.3 KiB
CSS

@keyframes landing-float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-12px); }
}
@keyframes landing-scan {
0% { top: 0; opacity: 0; }
8% { opacity: 1; }
92% { opacity: 1; }
100% { top: 100%; opacity: 0; }
}
@keyframes landing-pulse {
0% { transform: scale(0.9); opacity: 0.8; }
100% { transform: scale(1.7); opacity: 0; }
}
@keyframes landing-blob {
0%, 100% { border-radius: 42% 58% 60% 40% / 45% 40% 60% 55%; }
50% { border-radius: 58% 42% 40% 60% / 55% 60% 40% 45%; }
}
@keyframes landing-kenburns {
from { transform: scale(1); }
to { transform: scale(1.08); }
}
@keyframes landing-spin {
to { transform: rotate(360deg); }
}
@keyframes landing-marquee {
from { transform: translateX(0); }
to { transform: translateX(50%); }
}
@keyframes landing-draw {
to { stroke-dashoffset: 0; }
}
@keyframes landing-timeline {
0%, 12% { opacity: 0.35; }
18%, 100% { opacity: 1; }
}
@keyframes landing-toggle {
0%, 40% { transform: translateX(0); }
50%, 90% { transform: translateX(-100%); }
100% { transform: translateX(0); }
}
@keyframes landing-bubble {
0% { opacity: 0; transform: translateY(12px) scale(0.96); }
100% { opacity: 1; transform: translateY(0) scale(1); }
}
.landing-page {
background-image: radial-gradient(rgba(128, 14, 19, 0.08) 1px, transparent 1px);
background-size: 28px 28px;
}
.landing-grid {
background-image: linear-gradient(#DEE3EB 1px, transparent 1px), linear-gradient(90deg, #DEE3EB 1px, transparent 1px);
background-size: 32px 32px;
}
.landing-float {
animation: landing-float 6s ease-in-out infinite;
}
.landing-float--delay {
animation-delay: 1.6s;
}
.landing-scan {
animation: landing-scan 3.6s ease-in-out infinite;
}
.landing-pulse::after {
content: '';
@apply absolute inset-0 rounded-full border-2 border-complement-700;
animation: landing-pulse 2.2s ease-out infinite;
}
.landing-blob {
animation: landing-blob 14s ease-in-out infinite;
}
.landing-kenburns {
animation: landing-kenburns 24s ease-out forwards;
}
.landing-spin svg {
animation: landing-spin 18s linear infinite;
}
.landing-marquee {
animation: landing-marquee 32s linear infinite;
}
.landing-marquee:hover {
animation-play-state: paused;
}
.landing-underline path {
stroke-dasharray: 320;
stroke-dashoffset: 320;
animation: landing-draw 1.1s ease-out 0.5s forwards;
}
.landing-timeline-step {
animation: landing-timeline 8s ease-in-out infinite;
}
.landing-timeline-step:nth-child(2) { animation-delay: 1.6s; }
.landing-timeline-step:nth-child(3) { animation-delay: 3.2s; }
.landing-timeline-step:nth-child(4) { animation-delay: 4.8s; }
.landing-toggle-thumb {
animation: landing-toggle 6s ease-in-out infinite;
}
.landing-bubble {
opacity: 0;
animation: landing-bubble 0.5s ease-out forwards;
}
.landing-bubble:nth-child(2) { animation-delay: 0.6s; }
.landing-bubble:nth-child(3) { animation-delay: 1.2s; }
.landing-reveal {
@apply opacity-0 translate-y-8 transition-all duration-700 ease-out;
}
.landing-reveal.is-visible {
@apply opacity-100 translate-y-0;
}
.landing-reveal--1 { transition-delay: 100ms; }
.landing-reveal--2 { transition-delay: 200ms; }
.landing-reveal--3 { transition-delay: 300ms; }
.landing-reveal--4 { transition-delay: 400ms; }
.landing-reveal--5 { transition-delay: 500ms; }
.landing-timeline-line {
@apply origin-top scale-y-0 transition-transform duration-1000 ease-out;
}
.landing-reveal.is-visible .landing-timeline-line {
@apply scale-y-100;
}
.landing-faq summary::-webkit-details-marker {
display: none;
}
.landing-faq[open] .landing-faq-icon {
@apply rotate-45;
}
html:has(.landing-page) {
scroll-behavior: smooth;
}
@media (prefers-reduced-motion: reduce) {
.landing-float,
.landing-scan,
.landing-kenburns,
.landing-spin svg,
.landing-blob,
.landing-marquee,
.landing-timeline-step,
.landing-toggle-thumb,
.landing-pulse::after {
animation: none;
}
.landing-underline path {
animation: none;
stroke-dashoffset: 0;
}
.landing-bubble {
animation: none;
opacity: 1;
}
.landing-reveal {
@apply opacity-100 translate-y-0 transition-none;
}
.landing-timeline-line {
@apply scale-y-100 transition-none;
}
}