Files
Toju/website/src/styles.scss
2026-05-25 16:51:44 +02:00

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;
}
}