171 lines
4.9 KiB
CSS
171 lines
4.9 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
|
|
|
|
@layer base {
|
|
:root {
|
|
--background: 220 15% 10%;
|
|
--foreground: 30 10% 90%;
|
|
|
|
--card: 220 12% 14%;
|
|
--card-foreground: 30 10% 90%;
|
|
|
|
--popover: 220 12% 14%;
|
|
--popover-foreground: 30 10% 90%;
|
|
|
|
--primary: 25 95% 55%;
|
|
--primary-foreground: 220 15% 8%;
|
|
|
|
--secondary: 220 12% 18%;
|
|
--secondary-foreground: 30 10% 85%;
|
|
|
|
--muted: 220 10% 20%;
|
|
--muted-foreground: 220 8% 55%;
|
|
|
|
--accent: 25 90% 50%;
|
|
--accent-foreground: 220 15% 8%;
|
|
|
|
--destructive: 0 84.2% 60.2%;
|
|
--destructive-foreground: 210 40% 98%;
|
|
|
|
--border: 220 10% 22%;
|
|
--input: 220 10% 22%;
|
|
--ring: 25 95% 55%;
|
|
|
|
--radius: 1rem;
|
|
|
|
--glass-bg: 220 12% 16%;
|
|
--glass-border: 220 10% 28%;
|
|
--glass-shine: 25 95% 55%;
|
|
|
|
--sidebar-background: 220 15% 10%;
|
|
--sidebar-foreground: 30 10% 90%;
|
|
--sidebar-primary: 25 95% 55%;
|
|
--sidebar-primary-foreground: 220 15% 8%;
|
|
--sidebar-accent: 220 12% 18%;
|
|
--sidebar-accent-foreground: 30 10% 90%;
|
|
--sidebar-border: 220 10% 22%;
|
|
--sidebar-ring: 25 95% 55%;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border;
|
|
}
|
|
|
|
body {
|
|
@apply bg-background text-foreground font-body antialiased;
|
|
}
|
|
}
|
|
|
|
@layer components {
|
|
.glass-card {
|
|
background: hsl(var(--glass-bg) / 0.6);
|
|
border: 1px solid hsl(var(--glass-border) / 0.4);
|
|
backdrop-filter: blur(20px) saturate(1.8);
|
|
-webkit-backdrop-filter: blur(20px) saturate(1.8);
|
|
box-shadow:
|
|
inset 0 1px 1px hsl(0 0% 100% / 0.05),
|
|
inset 0 -1px 1px hsl(0 0% 0% / 0.1),
|
|
0 8px 32px hsl(0 0% 0% / 0.3),
|
|
0 2px 8px hsl(0 0% 0% / 0.2);
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.glass-card::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
background: linear-gradient(
|
|
135deg,
|
|
hsl(0 0% 100% / 0.08) 0%,
|
|
transparent 40%,
|
|
transparent 60%,
|
|
hsl(0 0% 100% / 0.03) 100%
|
|
);
|
|
pointer-events: none;
|
|
z-index: 1;
|
|
}
|
|
|
|
.glass-card-hover {
|
|
transition: transform 0.3s cubic-bezier(0.23, 1, 0.32, 1),
|
|
box-shadow 0.3s cubic-bezier(0.23, 1, 0.32, 1),
|
|
border-color 0.3s ease;
|
|
}
|
|
|
|
.glass-card-hover:hover {
|
|
transform: translateY(-2px);
|
|
border-color: hsl(var(--glass-shine) / 0.3);
|
|
box-shadow:
|
|
inset 0 1px 1px hsl(0 0% 100% / 0.08),
|
|
0 12px 40px hsl(0 0% 0% / 0.4),
|
|
0 4px 12px hsl(var(--primary) / 0.1);
|
|
}
|
|
|
|
.mouse-glow {
|
|
position: absolute;
|
|
width: 300px;
|
|
height: 300px;
|
|
border-radius: 50%;
|
|
background: radial-gradient(
|
|
circle,
|
|
hsl(var(--primary) / 0.12) 0%,
|
|
transparent 70%
|
|
);
|
|
pointer-events: none;
|
|
transform: translate(-50%, -50%);
|
|
z-index: 0;
|
|
transition: opacity 0.3s ease;
|
|
}
|
|
|
|
.link-arrow {
|
|
@apply inline-block transition-transform duration-200;
|
|
}
|
|
|
|
.link-arrow-parent:hover .link-arrow {
|
|
transform: translate(3px, -3px);
|
|
}
|
|
}
|
|
|
|
@layer utilities {
|
|
.text-gradient {
|
|
background: linear-gradient(135deg, hsl(var(--primary)), hsl(30 100% 65%));
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
}
|
|
}
|
|
|
|
@layer components {
|
|
.prose-blog {
|
|
@apply text-foreground/90 leading-relaxed;
|
|
}
|
|
.prose-blog > * + * { @apply mt-4; }
|
|
.prose-blog h1 { @apply text-2xl md:text-3xl font-heading font-bold text-foreground mt-10 mb-3; }
|
|
.prose-blog h2 { @apply text-xl md:text-2xl font-heading font-bold text-foreground mt-8 mb-2; }
|
|
.prose-blog h3 { @apply text-lg font-heading font-semibold text-foreground mt-6 mb-2; }
|
|
.prose-blog p { @apply text-foreground/85 leading-relaxed; }
|
|
.prose-blog a { @apply text-primary underline underline-offset-4 decoration-primary/40 hover:decoration-primary transition-colors; }
|
|
.prose-blog strong { @apply text-foreground font-semibold; }
|
|
.prose-blog em { @apply italic; }
|
|
.prose-blog ul { @apply list-disc pl-6 space-y-1.5 text-foreground/85; }
|
|
.prose-blog ol { @apply list-decimal pl-6 space-y-1.5 text-foreground/85; }
|
|
.prose-blog blockquote { @apply border-l-2 border-primary/60 pl-4 italic text-muted-foreground my-6; }
|
|
.prose-blog code:not(pre code) {
|
|
@apply font-mono text-[0.9em] px-1.5 py-0.5 rounded bg-secondary/60 border border-border text-primary;
|
|
}
|
|
.prose-blog pre {
|
|
@apply font-mono text-sm p-4 rounded-lg overflow-x-auto my-6 border border-border;
|
|
background: hsl(var(--glass-bg) / 0.8);
|
|
}
|
|
.prose-blog pre code { @apply bg-transparent p-0 border-0; }
|
|
.prose-blog img { @apply rounded-lg my-6 border border-border; }
|
|
.prose-blog hr { @apply border-border my-8; }
|
|
.prose-blog table { @apply w-full border-collapse my-6 text-sm; }
|
|
.prose-blog th, .prose-blog td { @apply border border-border px-3 py-2 text-left; }
|
|
.prose-blog th { @apply bg-secondary/40 font-semibold; }
|
|
}
|