- Add tailwind.config.ts with proper content paths and theme config - Add postcss.config.js for Tailwind and autoprefixer processing - Downgrade tailwindcss to v3.4.17 and add missing PostCSS dependencies - Update Dockerfile to clarify build process - Fix UI styling issues in Docker environment
171 lines
4.0 KiB
CSS
171 lines
4.0 KiB
CSS
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
|
|
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
:root {
|
|
--bg-primary: #0a0a0b;
|
|
--bg-secondary: #1a1a1b;
|
|
--bg-tertiary: #262626;
|
|
--bg-card: #1e1e1f;
|
|
--border-primary: #333;
|
|
--text-primary: #ffffff;
|
|
--text-secondary: #a1a1aa;
|
|
--text-accent: #22d3ee;
|
|
--success: #10b981;
|
|
--danger: #ef4444;
|
|
--warning: #f59e0b;
|
|
--purple: #8b5cf6;
|
|
--blue: #3b82f6;
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
font-family: 'Inter', system-ui, sans-serif;
|
|
background: linear-gradient(135deg, var(--bg-primary) 0%, #0f0f0f 100%);
|
|
color: var(--text-primary);
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
/* Custom scrollbar */
|
|
::-webkit-scrollbar {
|
|
width: 6px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: var(--bg-secondary);
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: var(--border-primary);
|
|
border-radius: 3px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: #555;
|
|
}
|
|
|
|
/* Glass morphism effect */
|
|
.glass {
|
|
background: rgba(26, 26, 27, 0.8);
|
|
backdrop-filter: blur(20px);
|
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
/* Gradient borders */
|
|
.gradient-border {
|
|
position: relative;
|
|
background: var(--bg-card);
|
|
border-radius: 12px;
|
|
}
|
|
|
|
.gradient-border::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
padding: 1px;
|
|
background: linear-gradient(135deg, rgba(34, 211, 238, 0.3), rgba(139, 92, 246, 0.3));
|
|
border-radius: inherit;
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: subtract;
|
|
}
|
|
|
|
/* Button components */
|
|
@layer components {
|
|
.btn {
|
|
@apply px-4 py-2 rounded-lg font-medium transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-900;
|
|
}
|
|
|
|
.btn-primary {
|
|
@apply bg-gradient-to-r from-cyan-500 to-blue-600 hover:from-cyan-600 hover:to-blue-700 text-white shadow-lg hover:shadow-cyan-500/25;
|
|
}
|
|
|
|
.btn-secondary {
|
|
@apply bg-gray-700 hover:bg-gray-600 text-gray-100 border border-gray-600;
|
|
}
|
|
|
|
.btn-success {
|
|
@apply bg-gradient-to-r from-green-500 to-emerald-600 hover:from-green-600 hover:to-emerald-700 text-white shadow-lg hover:shadow-green-500/25;
|
|
}
|
|
|
|
.btn-danger {
|
|
@apply bg-gradient-to-r from-red-500 to-rose-600 hover:from-red-600 hover:to-rose-700 text-white shadow-lg hover:shadow-red-500/25;
|
|
}
|
|
|
|
.btn-warning {
|
|
@apply bg-gradient-to-r from-yellow-500 to-orange-600 hover:from-yellow-600 hover:to-orange-700 text-white shadow-lg hover:shadow-yellow-500/25;
|
|
}
|
|
|
|
.card {
|
|
@apply bg-gray-900/50 backdrop-blur-sm border border-gray-800 rounded-xl p-6 shadow-xl hover:shadow-2xl transition-all duration-300;
|
|
}
|
|
|
|
.card-gradient {
|
|
@apply relative overflow-hidden;
|
|
background: linear-gradient(135deg, rgba(30, 30, 31, 0.9) 0%, rgba(26, 26, 27, 0.9) 100%);
|
|
}
|
|
|
|
.card-gradient::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
height: 1px;
|
|
background: linear-gradient(90deg, transparent, rgba(34, 211, 238, 0.5), transparent);
|
|
}
|
|
|
|
.status-indicator {
|
|
@apply inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium;
|
|
}
|
|
|
|
.status-online {
|
|
@apply bg-green-100 text-green-800 border border-green-200;
|
|
}
|
|
|
|
.status-offline {
|
|
@apply bg-red-100 text-red-800 border border-red-200;
|
|
}
|
|
|
|
.status-pending {
|
|
@apply bg-yellow-100 text-yellow-800 border border-yellow-200;
|
|
}
|
|
}
|
|
|
|
/* Animations */
|
|
@keyframes pulse-glow {
|
|
0%, 100% {
|
|
box-shadow: 0 0 5px rgba(34, 211, 238, 0.5);
|
|
}
|
|
50% {
|
|
box-shadow: 0 0 20px rgba(34, 211, 238, 0.8), 0 0 30px rgba(34, 211, 238, 0.4);
|
|
}
|
|
}
|
|
|
|
.pulse-glow {
|
|
animation: pulse-glow 2s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes slide-up {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
.slide-up {
|
|
animation: slide-up 0.6s ease-out;
|
|
}
|
|
|
|
/* Loading spinner */
|
|
.spinner {
|
|
@apply inline-block w-4 h-4 border-2 border-gray-300 border-t-cyan-500 rounded-full animate-spin;
|
|
}
|