@import "tailwindcss"; /* Satoshi Font Family */ @font-face { font-family: 'Satoshi'; src: url('/Fonts/WEB/fonts/Satoshi-Variable.woff2') format('woff2'), url('/Fonts/WEB/fonts/Satoshi-Variable.woff') format('woff'), url('/Fonts/WEB/fonts/Satoshi-Variable.ttf') format('truetype'); font-weight: 300 900; font-display: swap; font-style: normal; } @font-face { font-family: 'Satoshi'; src: url('/Fonts/WEB/fonts/Satoshi-VariableItalic.woff2') format('woff2'), url('/Fonts/WEB/fonts/Satoshi-VariableItalic.woff') format('woff'), url('/Fonts/WEB/fonts/Satoshi-VariableItalic.ttf') format('truetype'); font-weight: 300 900; font-display: swap; font-style: italic; } /* Neo-Brutalism Dark Theme Variables */ :root { /* Background Colors */ --bg-dark: #0d0d0d; --bg-card: #1a1a1a; --bg-elevated: #252525; /* Accent Colors */ --accent-lime: #BFFF00; --accent-magenta: #FF00FF; --accent-cyan: #00FFFF; --accent-orange: #FF6B00; /* Text Colors */ --text-primary: #FAFAFA; --text-secondary: #A0A0A0; --text-muted: #666666; /* Danger/Error */ --danger: #FF3B3B; --danger-soft: #FF3B3B33; /* Border & Shadow */ --border-width: 3px; --shadow-offset: 4px; --shadow-offset-lg: 8px; /* Font */ --font-satoshi: 'Satoshi', system-ui, -apple-system, sans-serif; } @theme inline { --color-bg-dark: var(--bg-dark); --color-bg-card: var(--bg-card); --color-bg-elevated: var(--bg-elevated); --color-accent-lime: var(--accent-lime); --color-accent-magenta: var(--accent-magenta); --color-accent-cyan: var(--accent-cyan); --color-accent-orange: var(--accent-orange); --color-text-primary: var(--text-primary); --color-text-secondary: var(--text-secondary); --color-text-muted: var(--text-muted); --color-danger: var(--danger); --font-sans: var(--font-satoshi); } /* Base Styles */ * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { background: var(--bg-dark); color: var(--text-primary); font-family: var(--font-satoshi); font-weight: 500; line-height: 1.6; min-height: 100vh; } /* Grid Background Pattern */ .bg-grid { background-image: linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px); background-size: 40px 40px; } /* Noise Texture Overlay */ .bg-noise::before { content: ''; position: fixed; top: 0; left: 0; width: 100%; height: 100%; opacity: 0.015; z-index: 100; pointer-events: none; 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"); } /* ================================ BRUTAL COMPONENT UTILITIES ================================ */ /* Brutal Card */ .brutal-card { background: var(--bg-card); border: var(--border-width) solid var(--text-primary); box-shadow: var(--shadow-offset-lg) var(--shadow-offset-lg) 0 var(--accent-lime); transition: transform 0.15s ease, box-shadow 0.15s ease; } .brutal-card:hover { transform: translate(-2px, -2px); box-shadow: calc(var(--shadow-offset-lg) + 2px) calc(var(--shadow-offset-lg) + 2px) 0 var(--accent-lime); } /* Brutal Card - Magenta variant */ .brutal-card-magenta { background: var(--bg-card); border: var(--border-width) solid var(--text-primary); box-shadow: var(--shadow-offset-lg) var(--shadow-offset-lg) 0 var(--accent-magenta); } /* Brutal Button - Primary */ .brutal-btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.75rem 1.5rem; font-family: var(--font-satoshi); font-weight: 700; font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--bg-dark); background: var(--accent-lime); border: var(--border-width) solid var(--bg-dark); box-shadow: var(--shadow-offset) var(--shadow-offset) 0 var(--bg-dark); cursor: pointer; transition: transform 0.1s ease, box-shadow 0.1s ease; } .brutal-btn:hover { transform: translate(-2px, -2px); box-shadow: calc(var(--shadow-offset) + 2px) calc(var(--shadow-offset) + 2px) 0 var(--bg-dark); } .brutal-btn:active { transform: translate(2px, 2px); box-shadow: 0 0 0 var(--bg-dark); } .brutal-btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; } /* Brutal Button - Outline */ .brutal-btn-outline { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.75rem 1.5rem; font-family: var(--font-satoshi); font-weight: 700; font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-primary); background: transparent; border: var(--border-width) solid var(--accent-lime); box-shadow: var(--shadow-offset) var(--shadow-offset) 0 var(--accent-lime); cursor: pointer; transition: transform 0.1s ease, box-shadow 0.1s ease, background 0.1s ease; } .brutal-btn-outline:hover { background: var(--accent-lime); color: var(--bg-dark); transform: translate(-2px, -2px); box-shadow: calc(var(--shadow-offset) + 2px) calc(var(--shadow-offset) + 2px) 0 var(--accent-lime); } .brutal-btn-outline:active { transform: translate(2px, 2px); box-shadow: 0 0 0 var(--accent-lime); } /* Brutal Button - Danger */ .brutal-btn-danger { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.5rem 1rem; font-family: var(--font-satoshi); font-weight: 700; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--danger); background: transparent; border: 2px solid var(--danger); box-shadow: 3px 3px 0 var(--danger); cursor: pointer; transition: transform 0.1s ease, box-shadow 0.1s ease, background 0.1s ease; } .brutal-btn-danger:hover { background: var(--danger); color: var(--text-primary); transform: translate(-1px, -1px); box-shadow: 4px 4px 0 var(--danger); } /* Brutal Button - Small */ .brutal-btn-sm { padding: 0.5rem 1rem; font-size: 0.75rem; box-shadow: 3px 3px 0 var(--bg-dark); } /* Brutal Input */ .brutal-input { width: 100%; padding: 0.875rem 1rem; font-family: var(--font-satoshi); font-size: 1rem; font-weight: 500; color: var(--text-primary); background: var(--bg-elevated); border: none; border-bottom: var(--border-width) solid var(--accent-lime); outline: none; transition: border-color 0.15s ease, background 0.15s ease; } .brutal-input::placeholder { color: var(--text-muted); } .brutal-input:focus { border-bottom-color: var(--accent-cyan); background: var(--bg-card); } /* Brutal Label */ .brutal-label { display: block; margin-bottom: 0.5rem; font-family: var(--font-satoshi); font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-secondary); } /* Brutal Link */ .brutal-link { color: var(--accent-lime); font-weight: 700; text-decoration: none; border-bottom: 2px solid transparent; transition: border-color 0.15s ease; } .brutal-link:hover { border-bottom-color: var(--accent-lime); } /* Brutal Divider */ .brutal-divider { height: 3px; background: linear-gradient(90deg, var(--accent-lime), var(--accent-magenta), var(--accent-cyan)); } /* ================================ GEOMETRIC DECORATIONS ================================ */ .geo-accent { position: absolute; pointer-events: none; } .geo-square { width: 80px; height: 80px; border: 4px solid var(--accent-lime); transform: rotate(45deg); } .geo-circle { width: 120px; height: 120px; border: 4px solid var(--accent-magenta); border-radius: 50%; } .geo-line { width: 200px; height: 4px; background: var(--accent-cyan); } /* ================================ ANIMATIONS ================================ */ @keyframes float { 0%, 100% { transform: translateY(0) rotate(45deg); } 50% { transform: translateY(-20px) rotate(45deg); } } @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 20px var(--accent-lime); } 50% { box-shadow: 0 0 40px var(--accent-lime); } } @keyframes slide-in-up { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes slide-in-left { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } } .animate-float { animation: float 6s ease-in-out infinite; } .animate-slide-up { animation: slide-in-up 0.4s ease-out forwards; } .animate-slide-left { animation: slide-in-left 0.4s ease-out forwards; } /* Staggered animation 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; } /* ================================ TABLE STYLES ================================ */ .brutal-table { width: 100%; border-collapse: collapse; } .brutal-table th { padding: 1rem; font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-muted); text-align: left; border-bottom: 2px solid var(--text-muted); } .brutal-table td { padding: 1rem; font-size: 0.875rem; border-bottom: 1px solid var(--bg-elevated); } .brutal-table tbody tr { transition: background 0.15s ease; } .brutal-table tbody tr:hover { background: var(--bg-elevated); } /* ================================ SCROLLBAR STYLING ================================ */ ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: var(--bg-dark); } ::-webkit-scrollbar-thumb { background: var(--bg-elevated); border: 2px solid var(--bg-dark); } ::-webkit-scrollbar-thumb:hover { background: var(--text-muted); } /* ================================ RESPONSIVE UTILITIES ================================ */ @media (max-width: 640px) { .brutal-card { box-shadow: var(--shadow-offset) var(--shadow-offset) 0 var(--accent-lime); } .brutal-btn { width: 100%; padding: 1rem; } .geo-square, .geo-circle { display: none; } } /* Selection styling */ ::selection { background: var(--accent-lime); color: var(--bg-dark); }