You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

183 lines
4.9 KiB

@import "tailwindcss";
@theme {
--color-background: oklch(0.15 0 0);
--color-foreground: oklch(0.98 0.005 240);
--color-card: oklch(0.15 0 0);
--color-card-foreground: oklch(0.98 0.005 240);
--color-popover: oklch(0.15 0 0);
--color-popover-foreground: oklch(0.98 0.005 240);
--color-primary: oklch(0.65 0.2 240);
--color-primary-foreground: oklch(0.98 0.005 240);
--color-secondary: oklch(0.20 0.03 240);
--color-secondary-foreground: oklch(0.98 0.005 240);
--color-muted: oklch(0.20 0.03 240);
--color-muted-foreground: oklch(0.60 0.02 240);
--color-accent: oklch(0.20 0.03 240);
--color-accent-foreground: oklch(0.98 0.005 240);
--color-destructive: oklch(0.55 0.22 25);
--color-destructive-foreground: oklch(0.98 0.005 240);
--color-border: oklch(0.22 0.03 240);
--color-input: oklch(0.22 0.03 240);
--color-ring: oklch(0.65 0.2 240);
--radius: 0.5rem;
--font-display: 'Oswald', sans-serif;
--font-body: 'Space Grotesk', sans-serif;
--animate-accordion-down: accordion-down 0.2s ease-out;
--animate-accordion-up: accordion-up 0.2s ease-out;
--animate-slide-in-left: slide-in-left 0.4s ease-out;
--animate-slide-in-right: slide-in-right 0.4s ease-out;
--animate-fade-in: fade-in 0.3s ease-out;
--animate-scale-in: scale-in 0.2s ease-out;
@keyframes accordion-down {
from { height: 0; }
to { height: var(--radix-accordion-content-height); }
}
@keyframes accordion-up {
from { height: var(--radix-accordion-content-height); }
to { height: 0; }
}
@keyframes slide-in-left {
from { transform: translateX(-100%); opacity: 0; }
to { transform: translateX(0); opacity: 1; }
}
@keyframes slide-in-right {
from { transform: translateX(100%); opacity: 0; }
to { transform: translateX(0); opacity: 1; }
}
@keyframes fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes scale-in {
from { transform: scale(0.95); opacity: 0; }
to { transform: scale(1); opacity: 1; }
}
}
body {
background-color: oklch(0.10 0.01 240);
color: oklch(0.98 0.005 240);
font-family: var(--font-body);
background-image:
radial-gradient(circle at 15% 50%, rgba(30, 58, 138, 0.15) 0%, transparent 25%),
radial-gradient(circle at 85% 30%, rgba(139, 92, 246, 0.1) 0%, transparent 25%),
linear-gradient(rgba(15, 23, 42, 0.95) 1px, transparent 1px),
linear-gradient(90deg, rgba(15, 23, 42, 0.95) 1px, transparent 1px);
background-size: 100% 100%, 100% 100%, 40px 40px, 40px 40px;
}
/* Custom scrollbar */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background-color: oklch(0.15 0.01 240);
}
::-webkit-scrollbar-thumb {
background-color: oklch(0.30 0.02 240);
border-radius: 0.125rem;
}
::-webkit-scrollbar-thumb:hover {
background-color: oklch(0.35 0.02 240);
}
/* Typography utilities */
.font-display {
font-family: var(--font-display);
}
.font-body {
font-family: var(--font-body);
}
/* Industrial grid pattern */
.grid-pattern {
background-image:
linear-gradient(rgba(56, 189, 248, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(56, 189, 248, 0.03) 1px, transparent 1px);
background-size: 60px 60px;
}
/* Glowing effects */
.glow-primary {
box-shadow: 0 0 20px rgba(56, 189, 248, 0.3), 0 0 40px rgba(56, 189, 248, 0.1);
}
.glow-accent {
box-shadow: 0 0 20px rgba(251, 191, 36, 0.3), 0 0 40px rgba(251, 191, 36, 0.1);
}
/* Diagonal stripe pattern */
.stripe-pattern {
background: repeating-linear-gradient(
45deg,
transparent,
transparent 10px,
rgba(56, 189, 248, 0.02) 10px,
rgba(56, 189, 248, 0.02) 20px
);
}
/* Tech border effect */
.tech-border {
position: relative;
}
.tech-border::before {
content: '';
position: absolute;
inset: 0;
border: 1px solid transparent;
background: linear-gradient(135deg, rgba(56, 189, 248, 0.5), rgba(168, 85, 247, 0.5), rgba(56, 189, 248, 0.5)) border-box;
-webkit-mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0);
mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
pointer-events: none;
}
/* Scanline effect */
.scanline {
position: relative;
overflow: hidden;
}
.scanline::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(
to bottom,
transparent 50%,
rgba(0, 0, 0, 0.02) 51%
);
background-size: 100% 4px;
pointer-events: none;
}
/* Noise texture overlay */
.noise-overlay {
position: relative;
}
.noise-overlay::before {
content: '';
position: absolute;
inset: 0;
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.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
pointer-events: none;
}