LeadPilot / Website /src /app /globals.css
Ashraf Al-Kassem
chore(marketing): Finalize animations and docker architecture
49d2391
raw
history blame
12 kB
@import "tailwindcss";
/* ─── Brand Tokens (identical to main app) ────────────────────── */
:root {
--background: #F8FAFC;
--foreground: #334155;
--primary: #0F766E;
--secondary: #14B8A6;
--border: #E2E8F0;
--card: #FFFFFF;
/* Marketing-site extended tokens β€” derived from above */
--primary-dark: #074742;
--primary-glow: rgba(20, 184, 166, 0.45);
--secondary-glow: rgba(45, 212, 191, 0.35);
--dark-bg: #040914;
/* Deeper space black */
--dark-surface: #0a1324;
--dark-card: rgba(255, 255, 255, 0.02);
--dark-border: rgba(45, 212, 191, 0.15);
/* Tech teal borders */
--neon-cyan: #22d3ee;
--neon-purple: #c084fc;
}
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-primary: var(--primary);
--color-secondary: var(--secondary);
--color-border: var(--border);
--color-card: var(--card);
--font-inter: "Inter", sans-serif;
}
body {
background: var(--background);
color: var(--foreground);
font-family: var(--font-inter);
-webkit-font-smoothing: antialiased;
}
@layer base {
*,
::after,
::before {
border-color: var(--border);
}
html {
scroll-behavior: smooth;
}
}
/* ─── Keyframe animations ─────────────────────────────────────── */
@keyframes fadeUp {
from {
opacity: 0;
transform: translateY(24px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes pulse-glow {
0%,
100% {
opacity: 0.4;
filter: blur(4px);
}
50% {
opacity: 1;
filter: blur(8px);
}
}
@keyframes float {
0%,
100% {
transform: translateY(0px);
}
50% {
transform: translateY(-12px);
}
}
@keyframes scanline {
0% {
transform: translateY(-100%);
}
100% {
transform: translateY(100vh);
}
}
@keyframes drawLine {
0% {
stroke-dashoffset: 1000;
}
100% {
stroke-dashoffset: 0;
}
}
@keyframes border-spin {
100% {
transform: rotate(-360deg);
}
}
@keyframes marquee {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
.animate-fade-up {
animation: fadeUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.animate-fade-in {
animation: fadeIn 0.8s ease forwards;
}
.animate-float {
animation: float 5s ease-in-out infinite;
}
.animate-float-delayed {
animation: float 5s ease-in-out 2.5s infinite;
}
.animate-pulse-glow {
animation: pulse-glow 4s ease-in-out infinite;
}
.animate-scanline {
animation: scanline 8s linear infinite;
}
.animate-border-spin {
animation: border-spin 5s linear infinite;
}
.animate-draw-line {
animation: drawLine 3s ease-in-out forwards;
}
/* ─── Server-component hover patterns (CSS-only) ─────────────── */
/* Primary gradient button */
.btn-primary {
background: var(--primary);
color: white;
border: 1px solid rgba(255, 255, 255, 0.1);
transition: background-color 0.2s, transform 0.2s, border-color 0.2s;
}
.btn-primary:hover {
background: var(--primary-dark);
border-color: rgba(255, 255, 255, 0.2);
}
/* Ghost dark (dark section) */
.btn-ghost-dark {
background: rgba(255, 255, 255, 0.03);
border: 1px solid rgba(255, 255, 255, 0.08);
color: rgba(241, 245, 249, 0.9);
transition: border-color 0.2s, background-color 0.2s, color 0.2s;
}
.btn-ghost-dark:hover {
border-color: rgba(255, 255, 255, 0.2);
background-color: rgba(255, 255, 255, 0.08);
color: #fff;
}
/* Ghost light (light section) */
.btn-ghost-light {
background: #FFFFFF;
border: 1px solid var(--border);
color: var(--foreground);
transition: border-color 0.2s, box-shadow 0.2s;
}
.btn-ghost-light:hover {
border-color: rgba(15, 118, 110, 0.3);
box-shadow: 0 4px 12px rgba(15, 118, 110, 0.08);
}
/* Footer nav link */
.footer-link {
color: rgba(148, 163, 184, 0.8);
transition: color 0.2s;
}
.footer-link:hover {
color: var(--secondary);
}
/* Footer social icon */
.social-icon {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.08);
color: rgba(148, 163, 184, 0.8);
transition: color 0.2s, border-color 0.2s;
}
.social-icon:hover {
color: var(--secondary);
border-color: rgba(20, 184, 166, 0.4);
}
/* Dark feature card */
.feature-card-dark {
background: rgba(255, 255, 255, 0.03);
border: 1px solid rgba(255, 255, 255, 0.06);
transition: border-color 0.3s, background 0.3s;
}
.feature-card-dark:hover {
border-color: rgba(255, 255, 255, 0.15);
background: rgba(255, 255, 255, 0.05);
}
/* Light feature card */
.feature-card-light {
background: #FFFFFF;
border: 1px solid var(--border);
transition: border-color 0.3s, box-shadow 0.3s;
}
.feature-card-light:hover {
border-color: rgba(15, 118, 110, 0.3);
box-shadow: 0 4px 20px rgba(15, 118, 110, 0.12);
}
/* Dark value card (about page) */
.value-card-dark {
background: rgba(255, 255, 255, 0.03);
border: 1px solid rgba(255, 255, 255, 0.06);
transition: border-color 0.3s, background 0.3s;
}
.value-card-dark:hover {
border-color: rgba(255, 255, 255, 0.15);
background: rgba(255, 255, 255, 0.05);
}
/* Navigation card (product page breadcrumbs) */
.nav-card {
background: #FFFFFF;
border: 1px solid var(--border);
transition: border-color 0.2s, box-shadow 0.2s;
}
.nav-card:hover {
border-color: rgba(15, 118, 110, 0.3);
box-shadow: 0 4px 16px rgba(15, 118, 110, 0.08);
}
.nav-card:hover .nav-card-arrow {
transform: translateX(4px);
}
.nav-card-arrow {
transition: transform 0.2s;
}
/* Category filter link */
.category-link {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.08);
color: rgba(148, 163, 184, 0.8);
transition: color 0.2s, border-color 0.2s;
}
.category-link:hover {
color: var(--secondary);
border-color: rgba(20, 184, 166, 0.3);
}
/* Text link primary */
.text-link-primary {
color: var(--primary);
transition: color 0.2s;
}
.text-link-primary:hover {
color: var(--secondary);
}
/* Text link teal */
.text-link-teal {
color: var(--secondary);
transition: color 0.2s;
}
.text-link-teal:hover {
color: #5EEAD4;
}
/* Waitlist disabled button style */
.btn-coming-soon {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.08);
color: #475569;
transition: color 0.2s, border-color 0.2s;
}
.btn-coming-soon:hover {
color: #94A3B8;
border-color: rgba(255, 255, 255, 0.15);
}
/* ─── Utility classes ─────────────────────────────────────────── */
/* Gradient text */
.gradient-text {
background: linear-gradient(135deg, var(--neon-cyan) 0%, var(--primary) 50%, var(--secondary) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.neon-text {
color: #fff;
text-shadow: 0 0 10px rgba(34, 211, 238, 0.5), 0 0 20px rgba(34, 211, 238, 0.3);
}
/* Gradient border card with spinning effect */
.gradient-border {
position: relative;
background: var(--dark-card);
border-radius: 1rem;
overflow: hidden;
z-index: 1;
}
.gradient-border-spin::before {
content: "";
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: conic-gradient(transparent,
rgba(20, 184, 166, 0.1),
transparent 30%);
animation: border-spin 4s linear infinite;
z-index: -2;
opacity: 0;
transition: opacity 0.5s;
}
.gradient-border-spin:hover::before {
opacity: 1;
}
.gradient-border::after {
content: "";
position: absolute;
inset: 1px;
background: var(--dark-bg);
border-radius: calc(1rem - 1px);
z-index: -1;
}
/* Glow effect */
.glow-primary {
box-shadow: 0 0 40px var(--primary-glow), 0 0 80px rgba(15, 118, 110, 0.15);
}
.glow-sm {
box-shadow: 0 0 20px var(--primary-glow);
}
/* Dark section base */
.dark-section {
background: var(--dark-bg);
color: #F1F5F9;
}
/* Glass panel */
.glass-panel {
background: rgba(10, 19, 36, 0.4);
backdrop-filter: blur(24px);
-webkit-backdrop-filter: blur(24px);
border: 1px solid rgba(45, 212, 191, 0.15);
box-shadow: inset 0 0 20px rgba(45, 212, 191, 0.05);
}
/* Cockpit grid lines */
.cockpit-grid {
background-image:
linear-gradient(rgba(45, 212, 191, 0.1) 1px, transparent 1px),
linear-gradient(90deg, rgba(45, 212, 191, 0.1) 1px, transparent 1px);
background-size: 50px 50px;
perspective: 1000px;
}
.cockpit-grid-3d {
transform: rotateX(60deg) scale(2);
transform-origin: top;
}
/* ─── Mission 33: Scroll-reveal + Catalog cards ──────────────────── */
@keyframes revealUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes shimmer {
0% {
background-position: -200% 0;
}
100% {
background-position: 200% 0;
}
}
/* Initial hidden state for scroll-reveal sections */
.reveal-hidden {
opacity: 0;
transform: translateY(30px);
}
.reveal-visible {
animation: revealUp 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
/* Staggered reveals β€” add delay-N class alongside reveal-hidden */
.reveal-delay-1 {
animation-delay: 0.1s;
}
.reveal-delay-2 {
animation-delay: 0.2s;
}
.reveal-delay-3 {
animation-delay: 0.3s;
}
.reveal-delay-4 {
animation-delay: 0.4s;
}
.reveal-delay-5 {
animation-delay: 0.5s;
}
/* Dark catalog card (templates, integrations) */
.catalog-card {
background: rgba(255, 255, 255, 0.03);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: 1rem;
transition: border-color 0.3s, background 0.3s, transform 0.3s;
}
.catalog-card:hover {
border-color: rgba(255, 255, 255, 0.15);
background: rgba(255, 255, 255, 0.05);
transform: translateY(-2px);
}
/* Muted variant for coming-soon / disabled items */
.catalog-card-muted {
background: rgba(255, 255, 255, 0.02);
border: 1px solid rgba(255, 255, 255, 0.05);
border-radius: 1rem;
opacity: 0.55;
transition: opacity 0.3s;
}
.catalog-card-muted:hover {
opacity: 0.7;
}
/* Platform badge pills */
.badge-platform {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 2px 8px;
border-radius: 9999px;
font-size: 10px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.1);
color: rgba(148, 163, 184, 0.9);
}
/* Category badge pills */
.badge-category {
display: inline-flex;
align-items: center;
padding: 2px 8px;
border-radius: 9999px;
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
}
.badge-category[data-category="lead_generation"] {
background: rgba(20, 184, 166, 0.15);
color: #14B8A6;
border: 1px solid rgba(20, 184, 166, 0.3);
}
.badge-category[data-category="sales"] {
background: rgba(59, 130, 246, 0.15);
color: #60A5FA;
border: 1px solid rgba(59, 130, 246, 0.3);
}
.badge-category[data-category="customer_support"] {
background: rgba(245, 158, 11, 0.15);
color: #FBBF24;
border: 1px solid rgba(245, 158, 11, 0.3);
}
.badge-category[data-category="onboarding"] {
background: rgba(168, 85, 247, 0.15);
color: #C084FC;
border: 1px solid rgba(168, 85, 247, 0.3);
}
/* Skeleton loading line */
.skeleton-line {
height: 12px;
border-radius: 6px;
background: linear-gradient(90deg, rgba(255, 255, 255, 0.04) 25%, rgba(255, 255, 255, 0.08) 50%, rgba(255, 255, 255, 0.04) 75%);
background-size: 200% 100%;
animation: shimmer 1.5s ease-in-out infinite;
}
/* Active category filter tab */
.category-link-active {
background: rgba(15, 118, 110, 0.15);
border: 1px solid rgba(20, 184, 166, 0.4);
color: var(--secondary);
}