synapse-backend / src /index.css
l3onchri's picture
Initial commit: Synapse OS v1.0
92f5427
@import "tailwindcss";
/* ============================================
SYNAPSE OS - Neural Glass Design System
============================================ */
:root {
/* Deep Space Palette */
--synapse-void: #030014;
--synapse-deep: #020617;
--synapse-surface: #0f172a;
/* Neon Accent Colors */
--synapse-violet: #8B5CF6;
--synapse-violet-glow: rgba(139, 92, 246, 0.5);
--synapse-cyan: #06B6D4;
--synapse-cyan-glow: rgba(6, 182, 212, 0.5);
--synapse-rose: #F43F5E;
--synapse-rose-glow: rgba(244, 63, 94, 0.5);
/* Neutral */
--synapse-zinc: #e4e4e7;
--synapse-dark: #18181b;
/* Fonts */
--font-display: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
--font-mono: 'JetBrains Mono', 'Courier New', monospace;
}
/* ============================================
BASE STYLES
============================================ */
@layer base {
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
font-family: var(--font-display);
background: radial-gradient(ellipse at 50% 0%, var(--synapse-surface) 0%, var(--synapse-deep) 50%, var(--synapse-void) 100%);
color: var(--synapse-zinc);
overflow-x: hidden;
line-height: 1.6;
min-height: 100vh;
}
/* Digital Noise Overlay */
body::before {
content: '';
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 9999;
opacity: 0.03;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
}
/* Scrollbar */
::-webkit-scrollbar {
width: 4px;
}
::-webkit-scrollbar-track {
background: var(--synapse-void);
}
::-webkit-scrollbar-thumb {
background: linear-gradient(180deg, var(--synapse-violet), var(--synapse-cyan));
border-radius: 2px;
}
/* Selection */
::selection {
background: var(--synapse-violet);
color: white;
}
}
/* ============================================
TYPOGRAPHY
============================================ */
.font-display {
font-family: var(--font-display);
}
.font-mono {
font-family: var(--font-mono);
}
.text-headline {
font-family: var(--font-display);
font-weight: 900;
letter-spacing: -0.03em;
line-height: 1.05;
}
.text-terminal {
font-family: var(--font-mono);
font-weight: 500;
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.1em;
color: rgba(255, 255, 255, 0.5);
}
/* ============================================
GLASSMORPHISM 2.0
============================================ */
@layer utilities {
.glass {
background: rgba(255, 255, 255, 0.03);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.08);
}
.glass-strong {
background: rgba(255, 255, 255, 0.06);
backdrop-filter: blur(40px);
-webkit-backdrop-filter: blur(40px);
border: 1px solid rgba(255, 255, 255, 0.12);
}
.glass-panel {
background: linear-gradient(135deg, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0.02) 100%);
backdrop-filter: blur(30px);
-webkit-backdrop-filter: blur(30px);
border: 1px solid rgba(255, 255, 255, 0.1);
box-shadow:
0 8px 32px rgba(0, 0, 0, 0.3),
inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
/* Spotlight border effect */
.glass-spotlight {
position: relative;
background: rgba(255, 255, 255, 0.03);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.08);
transition: all 0.3s ease;
}
.glass-spotlight:hover {
border-color: rgba(139, 92, 246, 0.4);
box-shadow:
0 0 30px rgba(139, 92, 246, 0.15),
0 8px 32px rgba(0, 0, 0, 0.3);
}
/* ============================================
GRADIENTS & COLORS
============================================ */
.gradient-text {
background: linear-gradient(135deg, var(--synapse-violet) 0%, var(--synapse-cyan) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.gradient-bg {
background: linear-gradient(135deg, var(--synapse-violet) 0%, var(--synapse-cyan) 100%);
}
.gradient-border {
position: relative;
background: var(--synapse-void);
}
.gradient-border::before {
content: '';
position: absolute;
inset: 0;
padding: 1px;
border-radius: inherit;
background: linear-gradient(135deg, var(--synapse-violet), var(--synapse-cyan));
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
}
/* ============================================
GLOW EFFECTS
============================================ */
.glow-violet {
box-shadow:
0 0 20px var(--synapse-violet-glow),
0 0 40px rgba(139, 92, 246, 0.3),
0 0 60px rgba(139, 92, 246, 0.15);
}
.glow-cyan {
box-shadow:
0 0 20px var(--synapse-cyan-glow),
0 0 40px rgba(6, 182, 212, 0.3);
}
.glow-rose {
box-shadow:
0 0 20px var(--synapse-rose-glow),
0 0 40px rgba(244, 63, 94, 0.3);
}
.text-glow {
text-shadow:
0 0 20px var(--synapse-violet-glow),
0 0 40px rgba(139, 92, 246, 0.3),
0 0 80px rgba(6, 182, 212, 0.2);
}
.text-glow-cyan {
text-shadow:
0 0 20px var(--synapse-cyan-glow),
0 0 40px rgba(6, 182, 212, 0.3);
}
/* ============================================
COLOR UTILITIES
============================================ */
.text-violet {
color: var(--synapse-violet);
}
.text-cyan {
color: var(--synapse-cyan);
}
.text-rose {
color: var(--synapse-rose);
}
.text-zinc {
color: var(--synapse-zinc);
}
.bg-void {
background-color: var(--synapse-void);
}
.bg-dark {
background-color: var(--synapse-dark);
}
.border-violet {
border-color: var(--synapse-violet);
}
.border-cyan {
border-color: var(--synapse-cyan);
}
/* ============================================
ANIMATIONS
============================================ */
.animate-float {
animation: float 6s ease-in-out infinite;
}
.animate-pulse-slow {
animation: pulse-slow 4s ease-in-out infinite;
}
.animate-pulse-glow {
animation: pulse-glow 2s ease-in-out infinite;
}
.animate-shimmer {
animation: shimmer 2s linear infinite;
background-size: 200% 100%;
}
.animate-typewriter {
overflow: hidden;
border-right: 2px solid var(--synapse-cyan);
white-space: nowrap;
animation:
typing 3.5s steps(40, end),
blink-caret 0.75s step-end infinite;
}
.animate-scan {
animation: scan 8s linear infinite;
}
.animate-ripple {
animation: ripple 0.6s ease-out;
}
.animate-node-pulse {
animation: node-pulse 3s ease-in-out infinite;
}
/* Fade In Up */
.fade-in-up {
opacity: 0;
transform: translateY(40px);
transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
.fade-in-up.visible {
opacity: 1;
transform: translateY(0);
}
/* Stagger delays */
.delay-100 {
animation-delay: 100ms;
}
.delay-200 {
animation-delay: 200ms;
}
.delay-300 {
animation-delay: 300ms;
}
.delay-400 {
animation-delay: 400ms;
}
.delay-500 {
animation-delay: 500ms;
}
}
/* ============================================
KEYFRAME ANIMATIONS
============================================ */
@keyframes float {
0%,
100% {
transform: translateY(0px);
}
50% {
transform: translateY(-20px);
}
}
@keyframes pulse-slow {
0%,
100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
@keyframes pulse-glow {
0%,
100% {
box-shadow:
0 0 20px var(--synapse-violet-glow),
0 0 40px rgba(139, 92, 246, 0.2);
}
50% {
box-shadow:
0 0 30px var(--synapse-violet-glow),
0 0 60px rgba(139, 92, 246, 0.4),
0 0 80px rgba(6, 182, 212, 0.2);
}
}
@keyframes shimmer {
0% {
background-position: -200% 0;
}
100% {
background-position: 200% 0;
}
}
@keyframes typing {
from {
width: 0;
}
to {
width: 100%;
}
}
@keyframes blink-caret {
from,
to {
border-color: transparent;
}
50% {
border-color: var(--synapse-cyan);
}
}
@keyframes scan {
0% {
transform: translateY(-100%);
}
100% {
transform: translateY(100vh);
}
}
@keyframes ripple {
0% {
transform: scale(0);
opacity: 0.5;
}
100% {
transform: scale(4);
opacity: 0;
}
}
@keyframes node-pulse {
0%,
100% {
transform: scale(1);
opacity: 0.8;
}
50% {
transform: scale(1.2);
opacity: 1;
}
}
@keyframes hud-flicker {
0%,
100% {
opacity: 1;
}
92% {
opacity: 1;
}
93% {
opacity: 0.3;
}
94% {
opacity: 1;
}
96% {
opacity: 0.5;
}
97% {
opacity: 1;
}
}
@keyframes border-glow {
0%,
100% {
border-color: rgba(139, 92, 246, 0.3);
}
50% {
border-color: rgba(139, 92, 246, 0.6);
}
}
/* ============================================
3D PERSPECTIVE SYSTEM
============================================ */
.perspective-container {
perspective: 1000px;
perspective-origin: center;
}
.preserve-3d {
transform-style: preserve-3d;
}
.card-3d {
transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.card-3d:hover {
transform: translateZ(20px) rotateX(2deg) rotateY(-2deg);
}
/* ============================================
HUD ELEMENTS
============================================ */
.hud-line {
position: absolute;
background: linear-gradient(90deg, transparent 0%, var(--synapse-violet) 50%, transparent 100%);
height: 1px;
opacity: 0.3;
}
.hud-corner {
position: absolute;
width: 20px;
height: 20px;
border-color: rgba(139, 92, 246, 0.4);
border-style: solid;
}
.hud-corner-tl {
top: 20px;
left: 20px;
border-width: 1px 0 0 1px;
}
.hud-corner-tr {
top: 20px;
right: 20px;
border-width: 1px 1px 0 0;
}
.hud-corner-bl {
bottom: 20px;
left: 20px;
border-width: 0 0 1px 1px;
}
.hud-corner-br {
bottom: 20px;
right: 20px;
border-width: 0 1px 1px 0;
}
/* ============================================
INTERACTIVE ELEMENTS
============================================ */
.btn-neon {
position: relative;
overflow: hidden;
transition: all 0.3s ease;
}
.btn-neon::before {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, transparent 100%);
opacity: 0;
transition: opacity 0.3s ease;
}
.btn-neon:hover::before {
opacity: 1;
}
.btn-neon:active {
transform: scale(0.98);
}
/* Input HUD Style */
.input-hud {
background: rgba(0, 0, 0, 0.4);
border: 1px solid rgba(139, 92, 246, 0.3);
transition: all 0.3s ease;
}
.input-hud:focus {
border-color: var(--synapse-violet);
box-shadow:
0 0 20px var(--synapse-violet-glow),
inset 0 0 20px rgba(139, 92, 246, 0.05);
outline: none;
}
/* ============================================
RESPONSIVE UTILITIES
============================================ */
@media (max-width: 768px) {
.text-headline {
letter-spacing: -0.02em;
}
.hud-corner {
display: none;
}
}