@import 'tailwindcss'; @import 'tw-animate-css'; @custom-variant dark (&:is(.dark *)); :root { --background: 240 240 236; --foreground: 22 22 20; --card: 249 249 247; --card-foreground: 22 22 20; --popover: 249 249 247; --popover-foreground: 22 22 20; --primary: 217 94 42; --primary-foreground: 249 249 247; --secondary: 240 240 236; --secondary-foreground: 47 47 44; --muted: 240 240 236; --muted-foreground: 87 87 83; --accent: 221 221 215; --accent-foreground: 22 22 20; --destructive: 180 50 50; --destructive-foreground: 249 249 247; --border: 196 196 189; --input: 196 196 189; --ring: 217 94 42; --radius: 0.375rem; } .dark { --background: 22 22 20; --foreground: 249 249 247; --card: 47 47 44; --card-foreground: 249 249 247; --popover: 47 47 44; --popover-foreground: 249 249 247; --primary: 217 94 42; --primary-foreground: 249 249 247; --secondary: 87 87 83; --secondary-foreground: 249 249 247; --muted: 87 87 83; --muted-foreground: 196 196 189; --accent: 87 87 83; --accent-foreground: 249 249 247; --destructive: 180 50 50; --destructive-foreground: 249 249 247; --border: 87 87 83; --input: 87 87 83; --ring: 217 94 42; } @theme inline { --font-sans: var(--font-inter), 'Inter', ui-sans-serif, system-ui, sans-serif; --font-serif: var(--font-source-serif), 'Source Serif 4', 'Source Serif Pro', Georgia, serif; --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; --color-background: rgb(var(--background)); --color-foreground: rgb(var(--foreground)); --color-card: rgb(var(--card)); --color-card-foreground: rgb(var(--card-foreground)); --color-popover: rgb(var(--popover)); --color-popover-foreground: rgb(var(--popover-foreground)); --color-primary: rgb(var(--primary)); --color-primary-foreground: rgb(var(--primary-foreground)); --color-secondary: rgb(var(--secondary)); --color-secondary-foreground: rgb(var(--secondary-foreground)); --color-muted: rgb(var(--muted)); --color-muted-foreground: rgb(var(--muted-foreground)); --color-accent: rgb(var(--accent)); --color-accent-foreground: rgb(var(--accent-foreground)); --color-destructive: rgb(var(--destructive)); --color-destructive-foreground: rgb(var(--destructive-foreground)); --color-border: rgb(var(--border)); --color-input: rgb(var(--input)); --color-ring: rgb(var(--ring)); --radius-sm: calc(var(--radius) - 2px); --radius-md: var(--radius); --radius-lg: calc(var(--radius) + 2px); --radius-xl: calc(var(--radius) + 4px); --color-greyhaven-orange: #D95E2A; --color-greyhaven-offblack: #161614; --color-greyhaven-offwhite: #F9F9F7; --color-greyhaven-grey1: #F0F0EC; --color-greyhaven-grey2: #DDDDD7; --color-greyhaven-grey3: #C4C4BD; --color-greyhaven-grey4: #A6A69F; --color-greyhaven-grey5: #7F7F79; --color-greyhaven-grey7: #575753; --color-greyhaven-grey8: #2F2F2C; } @layer base { * { @apply border-border outline-ring/50; } html { scroll-behavior: smooth; } body { @apply bg-background text-foreground; } } /* Code block styling */ .code-block { background: rgb(30 30 27); border: 1px solid rgb(var(--border)); border-radius: var(--radius-lg); } /* Subtle glow effect for primary elements */ .glow-orange { box-shadow: 0 0 40px rgba(217, 94, 42, 0.08); } /* Terminal prompt styling */ .terminal-line::before { content: '$ '; color: rgb(var(--muted-foreground)); } /* Smooth section transitions */ section { scroll-margin-top: 5rem; } /* Custom scrollbar for dark theme */ .dark ::-webkit-scrollbar { width: 8px; } .dark ::-webkit-scrollbar-track { background: rgb(22 22 20); } .dark ::-webkit-scrollbar-thumb { background: rgb(87 87 83); border-radius: 4px; } /* Animated gradient border */ @keyframes border-glow { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.6; } } .border-glow { animation: border-glow 3s ease-in-out infinite; } /* Layer card hover effect */ .layer-card { transition: all 0.3s ease; } .layer-card:hover { transform: translateY(-2px); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); } /* Carousel progress bar */ @keyframes progress { from { width: 0; } to { width: 100%; } } /* Fade in animation for sections */ @keyframes fade-up { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animate-fade-up { animation: fade-up 0.6s ease-out forwards; } /* Stagger children */ .stagger-children > * { opacity: 0; animation: fade-up 0.5s ease-out forwards; } .stagger-children > *:nth-child(1) { animation-delay: 0.1s; } .stagger-children > *:nth-child(2) { animation-delay: 0.2s; } .stagger-children > *:nth-child(3) { animation-delay: 0.3s; } .stagger-children > *:nth-child(4) { animation-delay: 0.4s; } .stagger-children > *:nth-child(5) { animation-delay: 0.5s; } /* Hide scrollbar but keep scroll functionality */ .scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; } .scrollbar-hide::-webkit-scrollbar { display: none; } /* ─── Aurora gradient background (Stripe-inspired) ─── */ @keyframes aurora { 0%, 100% { background-position: 0% 50%, 100% 50%, 50% 100%; } 33% { background-position: 100% 0%, 0% 100%, 50% 50%; } 66% { background-position: 50% 100%, 50% 0%, 0% 50%; } } .aurora-bg { background: radial-gradient(ellipse at 20% 50%, rgba(217,94,42,0.12) 0%, transparent 50%), radial-gradient(ellipse at 80% 20%, rgba(217,94,42,0.06) 0%, transparent 50%), radial-gradient(ellipse at 50% 80%, rgba(249,249,247,0.03) 0%, transparent 50%); background-size: 200% 200%, 200% 200%, 200% 200%; animation: aurora 20s ease-in-out infinite; } /* ─── Gradient text shimmer ─── */ @keyframes gradient-shift { 0%, 100% { background-position: 0% center; } 50% { background-position: 200% center; } } .text-shimmer { background: linear-gradient(90deg, rgb(var(--foreground)) 0%, rgb(var(--primary)) 40%, rgb(var(--foreground)) 80%); background-size: 200% auto; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; animation: gradient-shift 6s ease infinite; } /* ─── Dot grid wave (Linear-inspired) ─── */ @keyframes dot-pulse { 0%, 100% { opacity: 0.08; transform: scale(1); } 50% { opacity: 0.5; transform: scale(1.3); } } /* ─── Floating animation ─── */ @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-8px); } } .animate-float { animation: float 4s ease-in-out infinite; } /* ─── Card spotlight hover (mouse-tracking glow) ─── */ .card-spotlight { position: relative; overflow: hidden; } .card-spotlight::before { content: ''; position: absolute; inset: 0; background: radial-gradient(600px circle at var(--mouse-x, 50%) var(--mouse-y, 50%), rgba(217,94,42,0.06), transparent 40%); opacity: 0; transition: opacity 0.3s; pointer-events: none; z-index: 1; } .card-spotlight:hover::before { opacity: 1; } /* ─── Marquee scroll ─── */ @keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } } .animate-marquee { animation: marquee 30s linear infinite; }