/* Design Tokens */ :root { --space-1: 0.25rem; /* 4px */ --space-2: 0.5rem; /* 8px */ --space-3: 0.75rem; /* 12px */ --space-4: 1rem; /* 16px */ --space-5: 1.5rem; /* 24px */ --space-6: 2rem; /* 32px */ --color-primary: #3b82f6; --color-primary-hover: #2563eb; --color-secondary: #1f2937; --color-accent: #10b981; --color-error: #ef4444; --color-warning: #f59e0b; --font-size-xs: 0.75rem; --font-size-sm: 0.875rem; --font-size-base: 1rem; --font-size-lg: 1.125rem; --font-size-xl: 1.25rem; --card-padding: var(--space-3); --form-field-gap: var(--space-2); --section-gap: var(--space-5); } body, html { height: 100%; margin: 0; background: #1f2937; color: #e5e7eb; font-family: 'Inter', 'Segoe UI', Roboto, sans-serif; } .header-gradient { background: linear-gradient(135deg, #1e3a8a, #3b82f6); } .card { transition: all 0.3s ease; background: #374151; border: 1px solid #4b5563; } .card:hover { transform: translateY(-3px); box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.2); } .loader { border-top-color: #3b82f6; animation: spinner 1.5s linear infinite; } @keyframes spinner { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } input:not([type=file]), select, textarea, button { background-color: #4b5563; color: #e5e7eb; border: 1px solid #6b7280; } .btn-primary { background-color: var(--color-primary); color: white; transition: all 0.2s; } .btn-primary:hover { background-color: var(--color-primary-hover); transform: translateY(-1px); } .btn-delete { background-color: #ef4444; color: white; transition: all 0.2s; } .btn-delete:hover { background-color: #dc2626; transform: translateY(-1px); } /* Loading States */ .btn-loading { position: relative; pointer-events: none; opacity: 0.7; } .btn-loading::after { content: ""; position: absolute; width: 16px; height: 16px; top: 50%; left: 50%; margin-left: -8px; margin-top: -8px; border: 2px solid #ffffff; border-radius: 50%; border-top-color: transparent; animation: spinner 0.6s linear infinite; } /* Progress bars */ .progress-bar { height: 8px; border-radius: 4px; transition: width 0.5s ease; } /* Tabs */ .tab-active { border-bottom: 3px solid #3b82f6; color: #3b82f6; } /* Grafana iframe - Responsive height */ .grafana-container { height: 70vh; min-height: 600px; width: 100%; border: none; overflow: hidden; } /* Custom checkbox */ .custom-checkbox { width: 20px; height: 20px; background: #4b5563; border: 1px solid #6b7280; border-radius: 3px; position: relative; display: inline-block; margin-right: 8px; vertical-align: middle; } .custom-checkbox.checked::after { content: ""; position: absolute; top: 4px; left: 4px; width: 10px; height: 10px; background-color: #3b82f6; border-radius: 1px; } /* Form Field Spacing */ .form-field { margin-bottom: var(--form-field-gap); } .compact-card { padding: var(--card-padding); } .main-scroll-container { height: 85vh; overflow-y: auto; } /* Model Status Widths */ .w-94 { width: 94%; } .w-87 { width: 87%; } .w-95 { width: 95%; } .w-42 { width: 42%; } .w-56 { width: 56%; } .w-26 { width: 26%; } .w-41 { width: 41%; } .w-28 { width: 28%; } .w-45 { width: 45%; } .w-18-5 { width: 18.5%; } .w-44-5 { width: 44.5%; } .w-37 { width: 37%; } .w-2-5 { width: 2.5%; } .stepper-step { border-bottom: 2px solid transparent; transition: border-color 0.3s, color 0.3s; } .setup-step-active { border-color: #3b82f6; color: #3b82f6; }