141 lines
3.3 KiB
SCSS
141 lines
3.3 KiB
SCSS
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Outfit:wght@400;500;600;700;800&display=swap');
|
|
|
|
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
@layer base {
|
|
:root {
|
|
--background: 210 18% 7%;
|
|
--foreground: 42 33% 94%;
|
|
--card: 210 17% 10%;
|
|
--card-foreground: 42 33% 94%;
|
|
--primary: 154 49% 55%;
|
|
--primary-foreground: 210 18% 7%;
|
|
--secondary: 210 14% 15%;
|
|
--secondary-foreground: 42 33% 94%;
|
|
--muted: 210 14% 15%;
|
|
--muted-foreground: 42 13% 67%;
|
|
--accent: 38 64% 61%;
|
|
--accent-foreground: 210 18% 7%;
|
|
--border: 210 13% 22%;
|
|
--input: 210 13% 22%;
|
|
--ring: 154 49% 55%;
|
|
--radius: 0.6rem;
|
|
--font-sans: 'Outfit', system-ui, sans-serif;
|
|
--font-mono: 'IBM Plex Mono', monospace;
|
|
}
|
|
|
|
* {
|
|
@apply border-border;
|
|
}
|
|
|
|
html {
|
|
scroll-behavior: smooth;
|
|
}
|
|
|
|
body {
|
|
@apply bg-background text-foreground antialiased;
|
|
font-family: var(--font-sans);
|
|
font-feature-settings: 'rlig' 1, 'calt' 1;
|
|
background:
|
|
radial-gradient(circle at top left, hsl(var(--primary) / 0.08), transparent 26rem),
|
|
linear-gradient(180deg, hsl(210 18% 8%), hsl(var(--background)) 34rem);
|
|
}
|
|
|
|
body::before {
|
|
content: '';
|
|
position: fixed;
|
|
inset: 0;
|
|
pointer-events: none;
|
|
z-index: 100;
|
|
opacity: 0.035;
|
|
background-image: linear-gradient(90deg, hsl(var(--foreground)) 1px, transparent 1px), linear-gradient(0deg, hsl(var(--foreground)) 1px, transparent 1px);
|
|
background-size: 22px 22px;
|
|
}
|
|
|
|
a,
|
|
button {
|
|
outline-color: hsl(var(--ring));
|
|
outline-offset: 3px;
|
|
}
|
|
}
|
|
|
|
/* Scrollbar */
|
|
::-webkit-scrollbar {
|
|
width: 8px;
|
|
height: 8px;
|
|
}
|
|
::-webkit-scrollbar-track {
|
|
background: hsl(var(--background));
|
|
}
|
|
::-webkit-scrollbar-thumb {
|
|
background: hsl(var(--muted));
|
|
border-radius: 4px;
|
|
}
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: hsl(var(--muted-foreground) / 0.5);
|
|
}
|
|
|
|
/* Utility classes */
|
|
.glass {
|
|
backdrop-filter: blur(16px) saturate(180%);
|
|
background: hsl(var(--background) / 0.82);
|
|
border-bottom: 1px solid hsl(var(--border));
|
|
}
|
|
|
|
.gradient-text {
|
|
background: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--accent)));
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
}
|
|
|
|
.gradient-border {
|
|
position: relative;
|
|
&::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
border-radius: inherit;
|
|
padding: 1px;
|
|
background: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--accent)), transparent);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
}
|
|
}
|
|
|
|
.section-fade {
|
|
opacity: 0;
|
|
transform: translateY(30px);
|
|
transition: opacity 0.8s ease-out, transform 0.8s ease-out;
|
|
&.visible {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
/* Parallax container */
|
|
.parallax-section {
|
|
will-change: transform;
|
|
}
|
|
|
|
/* Ad placeholder */
|
|
.ad-slot {
|
|
display: none;
|
|
&.ad-enabled {
|
|
display: block;
|
|
min-height: 90px;
|
|
background: hsl(var(--card));
|
|
border: 1px dashed hsl(var(--border));
|
|
border-radius: var(--radius);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
color: hsl(var(--muted-foreground));
|
|
font-size: 0.75rem;
|
|
}
|
|
}
|