tars / client /src /index.css
surekim's picture
Upload 109 files
390536f verified
Raw History Blame Contribute Delete
6.36 kB
@import url('https://fonts.googleapis.com/css2?family=Geist+Mono:wght@100..900&family=Inter:wght@100..900&family=Newsreader:ital,wght@0,200..800;1,200..800&display=swap');
@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
--background: 0 0% 0%;
--foreground: 0 0% 96%;
--card: 0 0% 5%;
--card-foreground: 0 0% 96%;
--popover: 0 0% 5%;
--popover-foreground: 0 0% 96%;
--primary: 0 0% 100%;
--primary-foreground: 0 0% 0%;
--secondary: 0 0% 8%;
--secondary-foreground: 0 0% 96%;
--muted: 0 0% 10%;
--muted-foreground: 0 0% 45%;
--accent: 0 0% 10%;
--accent-foreground: 0 0% 96%;
--destructive: 0 62% 30%;
--destructive-foreground: 0 0% 98%;
--border: 0 0% 14%;
--input: 0 0% 14%;
--ring: 0 0% 60%;
--radius: 6px;
--font-sans: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', sans-serif;
--font-serif: 'Newsreader', Georgia, serif;
--font-mono: 'Geist Mono', 'SF Mono', 'Menlo', monospace;
}
.dark {
--background: 0 0% 0%;
--foreground: 0 0% 96%;
--card: 0 0% 5%;
--card-foreground: 0 0% 96%;
--popover: 0 0% 5%;
--popover-foreground: 0 0% 96%;
--primary: 0 0% 100%;
--primary-foreground: 0 0% 0%;
--secondary: 0 0% 8%;
--secondary-foreground: 0 0% 96%;
--muted: 0 0% 10%;
--muted-foreground: 0 0% 45%;
--accent: 0 0% 10%;
--accent-foreground: 0 0% 96%;
--destructive: 0 62% 30%;
--destructive-foreground: 0 0% 98%;
--border: 0 0% 14%;
--input: 0 0% 14%;
--ring: 0 0% 60%;
}
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground antialiased font-sans selection:bg-primary selection:text-primary-foreground;
}
h1, h2, h3, h4, h5, h6 {
@apply font-serif tracking-tight;
}
}
@layer utilities {
.font-mono {
font-family: var(--font-mono);
}
.font-serif {
font-family: var(--font-serif);
}
/* Scanline effect */
.scanlines {
background: linear-gradient(
to bottom,
rgba(255,255,255,0),
rgba(255,255,255,0) 50%,
rgba(0,0,0,0.02) 50%,
rgba(0,0,0,0.02)
);
background-size: 100% 4px;
pointer-events: none;
}
/* Noise texture */
.noise {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
pointer-events: none;
z-index: 50;
opacity: 0.03;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
}
/* CRT Flicker Animation */
@keyframes flicker {
0% { opacity: 0.97; }
5% { opacity: 0.95; }
10% { opacity: 0.9; }
15% { opacity: 0.95; }
20% { opacity: 0.99; }
50% { opacity: 0.95; }
55% { opacity: 0.9; }
60% { opacity: 0.99; }
100% { opacity: 0.97; }
}
.animate-flicker {
animation: flicker 4s infinite;
}
/* Smooth Fade Up */
@keyframes fadeUp {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-fade-up {
animation: fadeUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
@keyframes orbDrift {
0% { transform: translate(0, 0) scale(1); }
33% { transform: translate(30px, -20px) scale(1.05); }
66% { transform: translate(-20px, 15px) scale(0.95); }
100% { transform: translate(0, 0) scale(1); }
}
.orb-drift {
animation: orbDrift 20s ease-in-out infinite;
}
.orb-drift-delayed {
animation: orbDrift 25s ease-in-out infinite;
animation-delay: -8s;
}
@keyframes orbPulse {
0% { transform: translate(0, 0) scale(1.1); }
25% { transform: translate(15px, -10px) scale(1.18); }
50% { transform: translate(-10px, 8px) scale(1.05); }
75% { transform: translate(8px, -15px) scale(1.15); }
100% { transform: translate(0, 0) scale(1.1); }
}
.orb-pulse {
animation: orbPulse 4s ease-in-out infinite;
}
.orb-pulse-delayed {
animation: orbPulse 5s ease-in-out infinite;
animation-delay: -2s;
}
@keyframes pulseRing {
0%, 100% { opacity: 0.4; transform: scale(1); }
50% { opacity: 0.8; transform: scale(1.08); }
}
.pulse-ring {
animation: pulseRing 2s ease-in-out infinite;
}
.hero-glow {
text-shadow: 0 0 30px rgba(52,211,153,0.15), 0 0 60px rgba(52,211,153,0.05);
}
@keyframes goPulse {
0%, 100% { box-shadow: 0 0 0 0 rgba(255,255,255,0.4); }
50% { box-shadow: 0 0 20px 4px rgba(255,255,255,0.15); }
}
.go-pulse {
animation: goPulse 1.5s ease-in-out infinite;
}
.typed-cursor {
font-weight: 100;
color: rgba(255, 255, 255, 0.7);
font-size: inherit;
line-height: inherit;
}
@keyframes blinkCursor {
0%, 100% { opacity: 1; }
50% { opacity: 0; }
}
.blink-cursor {
animation: blinkCursor 1s step-end infinite;
}
.metallic-text {
background: linear-gradient(
135deg,
#e8e8e8 0%,
#ffffff 15%,
#a0a0a0 30%,
#ffffff 50%,
#b0b0b0 65%,
#ffffff 80%,
#c0c0c0 100%
);
background-size: 200% 200%;
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
animation: metallicPulse 3s ease-in-out infinite;
}
@keyframes metallicPulse {
0% { background-position: 0% 50%; filter: brightness(1); }
25% { background-position: 50% 0%; filter: brightness(1.15); }
50% { background-position: 100% 50%; filter: brightness(1.3); }
75% { background-position: 50% 100%; filter: brightness(1.15); }
100% { background-position: 0% 50%; filter: brightness(1); }
}
.page-sparkle {
position: absolute;
background: white;
border-radius: 50%;
pointer-events: none;
box-shadow: 0 0 6px 2px rgba(255,255,255,0.4);
animation: pageSparkle var(--duration, 1.5s) ease-in-out forwards;
}
@keyframes pageSparkle {
0% { opacity: 0; transform: scale(0) rotate(0deg); }
30% { opacity: var(--sparkle-opacity, 0.5); transform: scale(1.2) rotate(90deg); }
70% { opacity: var(--sparkle-opacity, 0.5); transform: scale(0.8) rotate(180deg); }
100% { opacity: 0; transform: scale(0) rotate(270deg); }
}
}