838 lines
17 KiB
CSS
838 lines
17 KiB
CSS
@import 'tailwindcss';
|
|
@import '@nuxt/ui';
|
|
|
|
/* Prevent horizontal overflow from decorative elements (gradient orbs, etc.) */
|
|
html,
|
|
body {
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
/* Ensure all content respects container boundaries on mobile (accounts for scrollbar) */
|
|
@media (max-width: 640px) {
|
|
.grid {
|
|
max-width: 100%;
|
|
}
|
|
.grid > * {
|
|
min-width: 0;
|
|
max-width: 100%;
|
|
}
|
|
}
|
|
|
|
/* Theme configuration with new teal/cyan/violet palette */
|
|
@theme {
|
|
/* Typography - Bricolage Grotesque for headings, DM Sans for body */
|
|
--font-sans: 'DM Sans', system-ui, sans-serif;
|
|
--font-heading: 'Bricolage Grotesque', system-ui, sans-serif;
|
|
|
|
/* Primary color - Teal/Cyan gradient base */
|
|
--color-primary-50: #f0fdfa;
|
|
--color-primary-100: #ccfbf1;
|
|
--color-primary-200: #99f6e4;
|
|
--color-primary-300: #5eead4;
|
|
--color-primary-400: #2dd4bf;
|
|
--color-primary-500: #14b8a6;
|
|
--color-primary-600: #0d9488;
|
|
--color-primary-700: #0f766e;
|
|
--color-primary-800: #115e59;
|
|
--color-primary-900: #134e4a;
|
|
--color-primary-950: #042f2e;
|
|
|
|
/* Accent color - Violet for highlights */
|
|
--color-accent-50: #f5f3ff;
|
|
--color-accent-100: #ede9fe;
|
|
--color-accent-200: #ddd6fe;
|
|
--color-accent-300: #c4b5fd;
|
|
--color-accent-400: #a78bfa;
|
|
--color-accent-500: #8b5cf6;
|
|
--color-accent-600: #7c3aed;
|
|
--color-accent-700: #6d28d9;
|
|
--color-accent-800: #5b21b6;
|
|
--color-accent-900: #4c1d95;
|
|
--color-accent-950: #2e1065;
|
|
|
|
/* Cyan for gradient effects */
|
|
--color-cyan-50: #ecfeff;
|
|
--color-cyan-100: #cffafe;
|
|
--color-cyan-200: #a5f3fc;
|
|
--color-cyan-300: #67e8f9;
|
|
--color-cyan-400: #22d3ee;
|
|
--color-cyan-500: #06b6d4;
|
|
--color-cyan-600: #0891b2;
|
|
--color-cyan-700: #0e7490;
|
|
--color-cyan-800: #155e75;
|
|
--color-cyan-900: #164e63;
|
|
--color-cyan-950: #083344;
|
|
|
|
/* Success color - Emerald */
|
|
--color-success-50: #ecfdf5;
|
|
--color-success-100: #d1fae5;
|
|
--color-success-200: #a7f3d0;
|
|
--color-success-300: #6ee7b7;
|
|
--color-success-400: #34d399;
|
|
--color-success-500: #10b981;
|
|
--color-success-600: #059669;
|
|
--color-success-700: #047857;
|
|
--color-success-800: #065f46;
|
|
--color-success-900: #064e3b;
|
|
--color-success-950: #022c22;
|
|
|
|
/* Warning color - Amber */
|
|
--color-warning-50: #fffbeb;
|
|
--color-warning-100: #fef3c7;
|
|
--color-warning-200: #fde68a;
|
|
--color-warning-300: #fcd34d;
|
|
--color-warning-400: #fbbf24;
|
|
--color-warning-500: #f59e0b;
|
|
--color-warning-600: #d97706;
|
|
--color-warning-700: #b45309;
|
|
--color-warning-800: #92400e;
|
|
--color-warning-900: #78350f;
|
|
--color-warning-950: #451a03;
|
|
|
|
/* Animation durations */
|
|
--animate-duration-slow: 1s;
|
|
--animate-duration-normal: 0.5s;
|
|
--animate-duration-fast: 0.2s;
|
|
}
|
|
|
|
/* Heading styles with Bricolage Grotesque */
|
|
.font-heading {
|
|
font-family: var(--font-heading);
|
|
}
|
|
|
|
h1,
|
|
h2,
|
|
h3 {
|
|
font-family: var(--font-heading);
|
|
}
|
|
|
|
/* Gradient text effect */
|
|
.gradient-text {
|
|
background: linear-gradient(
|
|
135deg,
|
|
var(--color-primary-500) 0%,
|
|
var(--color-cyan-500) 50%,
|
|
var(--color-accent-500) 100%
|
|
);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
}
|
|
|
|
.gradient-text-teal {
|
|
background: linear-gradient(135deg, var(--color-primary-600) 0%, var(--color-cyan-500) 100%);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
}
|
|
|
|
/* ============================================
|
|
ANIMATIONS
|
|
============================================ */
|
|
|
|
/* Fade in up animation */
|
|
@keyframes fade-in-up {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(30px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
/* Fade in animation */
|
|
@keyframes fade-in {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
/* Float animation for orbs */
|
|
@keyframes orb-float {
|
|
0%,
|
|
100% {
|
|
transform: translate(0, 0) scale(1);
|
|
}
|
|
25% {
|
|
transform: translate(10px, -20px) scale(1.05);
|
|
}
|
|
50% {
|
|
transform: translate(-5px, -10px) scale(0.95);
|
|
}
|
|
75% {
|
|
transform: translate(-15px, -25px) scale(1.02);
|
|
}
|
|
}
|
|
|
|
/* Slower float for large elements - more noticeable movement */
|
|
@keyframes float-slow {
|
|
0%,
|
|
100% {
|
|
transform: translateY(0);
|
|
}
|
|
50% {
|
|
transform: translateY(-15px);
|
|
}
|
|
}
|
|
|
|
/* Fast float for small elements */
|
|
@keyframes float-fast {
|
|
0%,
|
|
100% {
|
|
transform: translateY(0) rotate(0deg);
|
|
}
|
|
50% {
|
|
transform: translateY(-10px) rotate(2deg);
|
|
}
|
|
}
|
|
|
|
/* Gradient rotation for backgrounds */
|
|
@keyframes gradient-rotate {
|
|
0% {
|
|
transform: rotate(0deg);
|
|
}
|
|
100% {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
/* Shimmer effect */
|
|
@keyframes shimmer {
|
|
0% {
|
|
background-position: -200% 0;
|
|
}
|
|
100% {
|
|
background-position: 200% 0;
|
|
}
|
|
}
|
|
|
|
/* Pulse glow effect */
|
|
@keyframes pulse-glow {
|
|
0%,
|
|
100% {
|
|
opacity: 0.5;
|
|
transform: scale(1);
|
|
}
|
|
50% {
|
|
opacity: 0.8;
|
|
transform: scale(1.05);
|
|
}
|
|
}
|
|
|
|
/* Particle drift */
|
|
@keyframes particle-drift {
|
|
0% {
|
|
transform: translate(0, 0) rotate(0deg);
|
|
opacity: 0;
|
|
}
|
|
10% {
|
|
opacity: 1;
|
|
}
|
|
90% {
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
transform: translate(var(--drift-x, 100px), var(--drift-y, -100px)) rotate(360deg);
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
/* Scale in animation */
|
|
@keyframes scale-in {
|
|
from {
|
|
opacity: 0;
|
|
transform: scale(0.9);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
/* Border gradient animation */
|
|
@keyframes border-dance {
|
|
0%,
|
|
100% {
|
|
background-position: 0% 50%;
|
|
}
|
|
50% {
|
|
background-position: 100% 50%;
|
|
}
|
|
}
|
|
|
|
/* Count up number animation */
|
|
@keyframes count-pulse {
|
|
0%,
|
|
100% {
|
|
transform: scale(1);
|
|
}
|
|
50% {
|
|
transform: scale(1.02);
|
|
}
|
|
}
|
|
|
|
/* Tilt hover animation */
|
|
@keyframes tilt-hover {
|
|
0%,
|
|
100% {
|
|
transform: perspective(1000px) rotateX(0deg) rotateY(0deg);
|
|
}
|
|
25% {
|
|
transform: perspective(1000px) rotateX(2deg) rotateY(-2deg);
|
|
}
|
|
75% {
|
|
transform: perspective(1000px) rotateX(-2deg) rotateY(2deg);
|
|
}
|
|
}
|
|
|
|
/* ============================================
|
|
ANIMATION UTILITY CLASSES
|
|
============================================ */
|
|
|
|
.animate-fade-in-up {
|
|
animation: fade-in-up 0.7s ease-out forwards;
|
|
}
|
|
|
|
.animate-fade-in {
|
|
animation: fade-in 0.5s ease-out forwards;
|
|
}
|
|
|
|
.animate-orb-float {
|
|
animation: orb-float 20s ease-in-out infinite;
|
|
}
|
|
|
|
.animate-float-slow {
|
|
animation: float-slow 4s ease-in-out infinite;
|
|
}
|
|
|
|
.animate-float-fast {
|
|
animation: float-fast 4s ease-in-out infinite;
|
|
}
|
|
|
|
.animate-gradient-rotate {
|
|
animation: gradient-rotate 20s linear infinite;
|
|
}
|
|
|
|
.animate-shimmer {
|
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
|
|
background-size: 200% 100%;
|
|
animation: shimmer 2s infinite;
|
|
}
|
|
|
|
.animate-pulse-glow {
|
|
animation: pulse-glow 3s ease-in-out infinite;
|
|
}
|
|
|
|
.animate-scale-in {
|
|
animation: scale-in 0.6s ease-out forwards;
|
|
}
|
|
|
|
.animate-border-dance {
|
|
background-size: 200% 200%;
|
|
animation: border-dance 4s ease infinite;
|
|
}
|
|
|
|
.animate-tilt-hover {
|
|
animation: tilt-hover 6s ease-in-out infinite;
|
|
}
|
|
|
|
/* Staggered animation delays */
|
|
.delay-75 {
|
|
animation-delay: 75ms;
|
|
}
|
|
.delay-100 {
|
|
animation-delay: 100ms;
|
|
}
|
|
.delay-150 {
|
|
animation-delay: 150ms;
|
|
}
|
|
.delay-200 {
|
|
animation-delay: 200ms;
|
|
}
|
|
.delay-300 {
|
|
animation-delay: 300ms;
|
|
}
|
|
.delay-400 {
|
|
animation-delay: 400ms;
|
|
}
|
|
.delay-500 {
|
|
animation-delay: 500ms;
|
|
}
|
|
.delay-600 {
|
|
animation-delay: 600ms;
|
|
}
|
|
.delay-700 {
|
|
animation-delay: 700ms;
|
|
}
|
|
.delay-800 {
|
|
animation-delay: 800ms;
|
|
}
|
|
.delay-1000 {
|
|
animation-delay: 1000ms;
|
|
}
|
|
|
|
/* Initial state for animated elements */
|
|
.animate-on-scroll {
|
|
opacity: 0;
|
|
}
|
|
|
|
.animate-on-scroll.is-visible {
|
|
animation: fade-in-up 0.7s ease-out forwards;
|
|
}
|
|
|
|
/* ============================================
|
|
REDUCED MOTION SUPPORT
|
|
============================================ */
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
*,
|
|
*::before,
|
|
*::after {
|
|
animation-duration: 0.01ms !important;
|
|
animation-iteration-count: 1 !important;
|
|
transition-duration: 0.01ms !important;
|
|
}
|
|
|
|
.animate-orb-float,
|
|
.animate-float-slow,
|
|
.animate-float-fast,
|
|
.animate-gradient-rotate,
|
|
.animate-shimmer,
|
|
.animate-pulse-glow,
|
|
.animate-border-dance,
|
|
.animate-tilt-hover {
|
|
animation: none;
|
|
}
|
|
}
|
|
|
|
/* ============================================
|
|
GRADIENT BACKGROUNDS
|
|
============================================ */
|
|
|
|
/* Light hero gradient with orbs */
|
|
.hero-gradient-light {
|
|
background: linear-gradient(180deg, #ffffff 0%, #f0fdfa 50%, #ecfeff 100%);
|
|
}
|
|
|
|
/* Dark hero gradient */
|
|
.dark .hero-gradient-light {
|
|
background: linear-gradient(180deg, #0a0a0a 0%, #042f2e 50%, #083344 100%);
|
|
}
|
|
|
|
/* Gradient orb styles */
|
|
.gradient-orb {
|
|
position: absolute;
|
|
border-radius: 50%;
|
|
filter: blur(80px);
|
|
opacity: 0.6;
|
|
}
|
|
|
|
.gradient-orb-teal {
|
|
background: linear-gradient(135deg, var(--color-primary-400), var(--color-cyan-400));
|
|
}
|
|
|
|
.gradient-orb-violet {
|
|
background: linear-gradient(135deg, var(--color-accent-400), var(--color-accent-600));
|
|
}
|
|
|
|
.gradient-orb-cyan {
|
|
background: linear-gradient(135deg, var(--color-cyan-300), var(--color-primary-400));
|
|
}
|
|
|
|
.dark .gradient-orb {
|
|
opacity: 0.3;
|
|
}
|
|
|
|
/* Mesh gradient for CTAs */
|
|
.mesh-gradient-cta {
|
|
background:
|
|
radial-gradient(at 40% 20%, var(--color-primary-500) 0px, transparent 50%),
|
|
radial-gradient(at 80% 0%, var(--color-cyan-400) 0px, transparent 50%),
|
|
radial-gradient(at 0% 50%, var(--color-accent-500) 0px, transparent 50%),
|
|
radial-gradient(at 80% 50%, var(--color-primary-400) 0px, transparent 50%),
|
|
radial-gradient(at 0% 100%, var(--color-cyan-500) 0px, transparent 50%),
|
|
linear-gradient(135deg, var(--color-primary-600) 0%, var(--color-accent-600) 100%);
|
|
}
|
|
|
|
/* ============================================
|
|
GLASS MORPHISM
|
|
============================================ */
|
|
|
|
.glass {
|
|
background: rgba(255, 255, 255, 0.7);
|
|
backdrop-filter: blur(20px);
|
|
-webkit-backdrop-filter: blur(20px);
|
|
border: 1px solid rgba(255, 255, 255, 0.3);
|
|
}
|
|
|
|
.dark .glass {
|
|
background: rgba(0, 0, 0, 0.4);
|
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
.glass-subtle {
|
|
background: rgba(255, 255, 255, 0.5);
|
|
backdrop-filter: blur(10px);
|
|
-webkit-backdrop-filter: blur(10px);
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
}
|
|
|
|
.dark .glass-subtle {
|
|
background: rgba(0, 0, 0, 0.3);
|
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
}
|
|
|
|
/* ============================================
|
|
CARD EFFECTS
|
|
============================================ */
|
|
|
|
/* Card with gradient border on hover */
|
|
.card-gradient-border {
|
|
position: relative;
|
|
background: white;
|
|
border-radius: 1rem;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.card-gradient-border::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: -2px;
|
|
border-radius: inherit;
|
|
background: linear-gradient(135deg, var(--color-primary-400), var(--color-cyan-400), var(--color-accent-400));
|
|
opacity: 0;
|
|
transition: opacity 0.3s ease;
|
|
z-index: -1;
|
|
}
|
|
|
|
.card-gradient-border:hover::before {
|
|
opacity: 1;
|
|
}
|
|
|
|
.dark .card-gradient-border {
|
|
background: #1a1a1a;
|
|
}
|
|
|
|
/* Card hover lift effect - subtle version without clipping issues */
|
|
.card-hover-lift {
|
|
transition:
|
|
transform 0.3s ease,
|
|
box-shadow 0.3s ease;
|
|
}
|
|
|
|
.card-hover-lift:hover {
|
|
transform: translateY(-4px);
|
|
box-shadow:
|
|
0 10px 25px -5px rgba(0, 0, 0, 0.1),
|
|
0 8px 10px -6px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
/* Spotlight effect for cards */
|
|
.card-spotlight {
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.card-spotlight::after {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
background: radial-gradient(
|
|
600px circle at var(--mouse-x, 50%) var(--mouse-y, 50%),
|
|
rgba(20, 184, 166, 0.1),
|
|
transparent 40%
|
|
);
|
|
opacity: 0;
|
|
transition: opacity 0.3s ease;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.card-spotlight:hover::after {
|
|
opacity: 1;
|
|
}
|
|
|
|
/* 3D tilt effect */
|
|
.card-3d {
|
|
transform-style: preserve-3d;
|
|
perspective: 1000px;
|
|
}
|
|
|
|
.card-3d-inner {
|
|
transition: transform 0.3s ease;
|
|
transform-style: preserve-3d;
|
|
}
|
|
|
|
.card-3d:hover .card-3d-inner {
|
|
transform: rotateX(5deg) rotateY(-5deg);
|
|
}
|
|
|
|
/* ============================================
|
|
BUTTON STYLES
|
|
============================================ */
|
|
|
|
/* Gradient button */
|
|
.btn-gradient {
|
|
background: linear-gradient(135deg, var(--color-primary-500) 0%, var(--color-cyan-500) 100%);
|
|
color: white;
|
|
border: none;
|
|
position: relative;
|
|
overflow: hidden;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.btn-gradient::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
background: linear-gradient(135deg, var(--color-cyan-500) 0%, var(--color-accent-500) 100%);
|
|
opacity: 0;
|
|
transition: opacity 0.3s ease;
|
|
}
|
|
|
|
.btn-gradient:hover::before {
|
|
opacity: 1;
|
|
}
|
|
|
|
.btn-gradient span {
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
/* Outline gradient button */
|
|
.btn-outline-gradient {
|
|
position: relative;
|
|
background: transparent;
|
|
border: 2px solid transparent;
|
|
background-image:
|
|
linear-gradient(white, white), linear-gradient(135deg, var(--color-primary-500), var(--color-cyan-500));
|
|
background-origin: border-box;
|
|
background-clip: padding-box, border-box;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.dark .btn-outline-gradient {
|
|
background-image:
|
|
linear-gradient(#1a1a1a, #1a1a1a), linear-gradient(135deg, var(--color-primary-500), var(--color-cyan-500));
|
|
}
|
|
|
|
.btn-outline-gradient:hover {
|
|
background-image:
|
|
linear-gradient(var(--color-primary-50), var(--color-primary-50)),
|
|
linear-gradient(135deg, var(--color-primary-500), var(--color-cyan-500));
|
|
}
|
|
|
|
.dark .btn-outline-gradient:hover {
|
|
background-image:
|
|
linear-gradient(var(--color-primary-950), var(--color-primary-950)),
|
|
linear-gradient(135deg, var(--color-primary-500), var(--color-cyan-500));
|
|
}
|
|
|
|
/* ============================================
|
|
DECORATIVE ELEMENTS
|
|
============================================ */
|
|
|
|
/* Dots pattern */
|
|
.dots-pattern {
|
|
background-image: radial-gradient(var(--color-primary-200) 1px, transparent 1px);
|
|
background-size: 24px 24px;
|
|
}
|
|
|
|
.dark .dots-pattern {
|
|
background-image: radial-gradient(var(--color-primary-800) 1px, transparent 1px);
|
|
}
|
|
|
|
/* Grid pattern */
|
|
.grid-pattern {
|
|
background-image:
|
|
linear-gradient(to right, var(--color-primary-100) 1px, transparent 1px),
|
|
linear-gradient(to bottom, var(--color-primary-100) 1px, transparent 1px);
|
|
background-size: 40px 40px;
|
|
}
|
|
|
|
.dark .grid-pattern {
|
|
background-image:
|
|
linear-gradient(to right, var(--color-primary-900) 1px, transparent 1px),
|
|
linear-gradient(to bottom, var(--color-primary-900) 1px, transparent 1px);
|
|
}
|
|
|
|
/* Section divider with gradient */
|
|
.section-divider {
|
|
height: 1px;
|
|
background: linear-gradient(90deg, transparent, var(--color-primary-300), var(--color-cyan-300), transparent);
|
|
}
|
|
|
|
.dark .section-divider {
|
|
background: linear-gradient(90deg, transparent, var(--color-primary-700), var(--color-cyan-700), transparent);
|
|
}
|
|
|
|
/* Gradient line accent */
|
|
.gradient-line {
|
|
height: 4px;
|
|
border-radius: 2px;
|
|
background: linear-gradient(90deg, var(--color-primary-500), var(--color-cyan-500), var(--color-accent-500));
|
|
}
|
|
|
|
/* ============================================
|
|
ACCESSIBILITY
|
|
============================================ */
|
|
|
|
/* Focus styles */
|
|
:focus-visible {
|
|
outline: 2px solid var(--color-primary-500);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
/* Skip link */
|
|
.skip-link {
|
|
position: absolute;
|
|
top: -40px;
|
|
left: 0;
|
|
background: var(--color-primary-600);
|
|
color: white;
|
|
padding: 8px 16px;
|
|
z-index: 100;
|
|
transition: top 0.3s;
|
|
border-radius: 0 0 8px 0;
|
|
}
|
|
|
|
.skip-link:focus {
|
|
top: 0;
|
|
}
|
|
|
|
/* ============================================
|
|
PARTICLES (for newsletter section)
|
|
============================================ */
|
|
|
|
.particle {
|
|
position: absolute;
|
|
width: 6px;
|
|
height: 6px;
|
|
border-radius: 50%;
|
|
background: var(--color-primary-400);
|
|
opacity: 0;
|
|
animation: particle-drift 8s ease-in-out infinite;
|
|
}
|
|
|
|
.particle:nth-child(1) {
|
|
--drift-x: 80px;
|
|
--drift-y: -120px;
|
|
animation-delay: 0s;
|
|
left: 10%;
|
|
top: 80%;
|
|
}
|
|
.particle:nth-child(2) {
|
|
--drift-x: -60px;
|
|
--drift-y: -100px;
|
|
animation-delay: 1s;
|
|
left: 20%;
|
|
top: 70%;
|
|
}
|
|
.particle:nth-child(3) {
|
|
--drift-x: 100px;
|
|
--drift-y: -80px;
|
|
animation-delay: 2s;
|
|
left: 80%;
|
|
top: 90%;
|
|
}
|
|
.particle:nth-child(4) {
|
|
--drift-x: -80px;
|
|
--drift-y: -140px;
|
|
animation-delay: 3s;
|
|
left: 70%;
|
|
top: 75%;
|
|
}
|
|
.particle:nth-child(5) {
|
|
--drift-x: 60px;
|
|
--drift-y: -90px;
|
|
animation-delay: 4s;
|
|
left: 30%;
|
|
top: 85%;
|
|
}
|
|
.particle:nth-child(6) {
|
|
--drift-x: -100px;
|
|
--drift-y: -110px;
|
|
animation-delay: 5s;
|
|
left: 90%;
|
|
top: 80%;
|
|
}
|
|
.particle:nth-child(7) {
|
|
--drift-x: 40px;
|
|
--drift-y: -130px;
|
|
animation-delay: 6s;
|
|
left: 50%;
|
|
top: 95%;
|
|
}
|
|
.particle:nth-child(8) {
|
|
--drift-x: -40px;
|
|
--drift-y: -70px;
|
|
animation-delay: 7s;
|
|
left: 40%;
|
|
top: 70%;
|
|
}
|
|
|
|
/* Particle color variations */
|
|
.particle:nth-child(odd) {
|
|
background: var(--color-cyan-400);
|
|
}
|
|
|
|
.particle:nth-child(3n) {
|
|
background: var(--color-accent-400);
|
|
width: 8px;
|
|
height: 8px;
|
|
}
|
|
|
|
/* ============================================
|
|
BENTO GRID
|
|
============================================ */
|
|
|
|
.bento-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
grid-auto-rows: minmax(200px, auto);
|
|
gap: 1.5rem;
|
|
}
|
|
|
|
.bento-item-large {
|
|
grid-column: span 2;
|
|
grid-row: span 2;
|
|
}
|
|
|
|
.bento-item-tall {
|
|
grid-row: span 2;
|
|
}
|
|
|
|
.bento-item-wide {
|
|
grid-column: span 2;
|
|
}
|
|
|
|
@media (max-width: 1024px) {
|
|
.bento-grid {
|
|
grid-template-columns: repeat(2, 1fr);
|
|
}
|
|
|
|
.bento-item-large {
|
|
grid-column: span 2;
|
|
grid-row: span 1;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
.bento-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.bento-item-large,
|
|
.bento-item-wide {
|
|
grid-column: span 1;
|
|
}
|
|
|
|
.bento-item-tall {
|
|
grid-row: span 1;
|
|
}
|
|
}
|