Download frontend/css/style.css from NOT-OMEGA/AutoForge: direct link, hf CLI and curl.
- Browser
- Download file 22.2 kB
-
https://huggingface.co/spaces/NOT-OMEGA/AutoForge/resolve/main/frontend/css/style.css
- Command line
-
hf download hf://spaces/NOT-OMEGA/AutoForge/frontend/css/style.css
-
curl -L -o style.css https://huggingface.co/spaces/NOT-OMEGA/AutoForge/resolve/main/frontend/css/style.css
22.2 kB
| /* βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| AutoForge β Design System | |
| Dark developer-tool aesthetic with glassmorphism | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap'); | |
| /* ββ CSS Custom Properties βββββββββββββββββββββββββββββββββββββββββ */ | |
| :root { | |
| /* Background */ | |
| --bg-primary: #0a0a0f; | |
| --bg-secondary: #12121a; | |
| --bg-tertiary: #1a1a28; | |
| --bg-surface: rgba(255, 255, 255, 0.03); | |
| --bg-surface-hover: rgba(255, 255, 255, 0.06); | |
| --bg-glass: rgba(18, 18, 26, 0.75); | |
| /* Accent gradient */ | |
| --accent-blue: #00d4ff; | |
| --accent-purple: #7b2ff7; | |
| --accent-pink: #f72fff; | |
| --gradient-primary: linear-gradient(135deg, var(--accent-blue), var(--accent-purple)); | |
| --gradient-secondary: linear-gradient(135deg, var(--accent-purple), var(--accent-pink)); | |
| --gradient-glow: linear-gradient(135deg, rgba(0, 212, 255, 0.15), rgba(123, 47, 247, 0.15)); | |
| /* Text */ | |
| --text-primary: #e8e8f0; | |
| --text-secondary: #9898b0; | |
| --text-muted: #5e5e78; | |
| --text-accent: var(--accent-blue); | |
| /* Status */ | |
| --status-success: #00e88f; | |
| --status-warning: #ffb800; | |
| --status-error: #ff4060; | |
| --status-pending: #5e5e78; | |
| /* Borders */ | |
| --border-subtle: rgba(255, 255, 255, 0.06); | |
| --border-medium: rgba(255, 255, 255, 0.1); | |
| --border-accent: rgba(0, 212, 255, 0.3); | |
| /* Shadows */ | |
| --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.3); | |
| --shadow-md: 0 4px 20px rgba(0, 0, 0, 0.4); | |
| --shadow-lg: 0 8px 40px rgba(0, 0, 0, 0.5); | |
| --shadow-glow: 0 0 30px rgba(0, 212, 255, 0.1); | |
| /* Spacing */ | |
| --space-xs: 0.25rem; | |
| --space-sm: 0.5rem; | |
| --space-md: 1rem; | |
| --space-lg: 1.5rem; | |
| --space-xl: 2rem; | |
| --space-2xl: 3rem; | |
| /* Radius */ | |
| --radius-sm: 6px; | |
| --radius-md: 10px; | |
| --radius-lg: 16px; | |
| --radius-xl: 24px; | |
| /* Typography */ | |
| --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; | |
| --font-mono: 'JetBrains Mono', 'Fira Code', monospace; | |
| /* Transitions */ | |
| --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1); | |
| --transition-base: 250ms cubic-bezier(0.4, 0, 0.2, 1); | |
| --transition-slow: 400ms cubic-bezier(0.4, 0, 0.2, 1); | |
| /* Layout */ | |
| --sidebar-width: 260px; | |
| --header-height: 64px; | |
| } | |
| /* ββ Reset βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| *, *::before, *::after { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| html { | |
| font-size: 16px; | |
| -webkit-font-smoothing: antialiased; | |
| -moz-osx-font-smoothing: grayscale; | |
| } | |
| body { | |
| font-family: var(--font-sans); | |
| background: var(--bg-primary); | |
| color: var(--text-primary); | |
| line-height: 1.6; | |
| min-height: 100vh; | |
| overflow-x: hidden; | |
| } | |
| a { | |
| color: var(--text-accent); | |
| text-decoration: none; | |
| transition: color var(--transition-fast); | |
| } | |
| a:hover { | |
| color: var(--accent-purple); | |
| } | |
| /* ββ Scrollbar βββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| ::-webkit-scrollbar { | |
| width: 8px; | |
| height: 8px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: var(--bg-secondary); | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: var(--bg-tertiary); | |
| border-radius: 4px; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| background: rgba(255, 255, 255, 0.15); | |
| } | |
| /* ββ Glass Panel βββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .glass { | |
| background: var(--bg-glass); | |
| backdrop-filter: blur(16px); | |
| -webkit-backdrop-filter: blur(16px); | |
| border: 1px solid var(--border-subtle); | |
| border-radius: var(--radius-lg); | |
| } | |
| .glass-strong { | |
| background: rgba(18, 18, 26, 0.9); | |
| backdrop-filter: blur(24px); | |
| -webkit-backdrop-filter: blur(24px); | |
| border: 1px solid var(--border-medium); | |
| border-radius: var(--radius-lg); | |
| } | |
| /* ββ Layout ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .app-layout { | |
| display: flex; | |
| min-height: 100vh; | |
| } | |
| .sidebar { | |
| position: fixed; | |
| left: 0; | |
| top: 0; | |
| width: var(--sidebar-width); | |
| height: 100vh; | |
| background: var(--bg-glass); | |
| backdrop-filter: blur(20px); | |
| -webkit-backdrop-filter: blur(20px); | |
| border-right: 1px solid var(--border-subtle); | |
| display: flex; | |
| flex-direction: column; | |
| z-index: 100; | |
| transition: transform var(--transition-base); | |
| } | |
| .sidebar-header { | |
| padding: var(--space-xl); | |
| border-bottom: 1px solid var(--border-subtle); | |
| } | |
| .sidebar-brand { | |
| display: flex; | |
| align-items: center; | |
| gap: var(--space-sm); | |
| } | |
| .sidebar-brand .logo { | |
| width: 36px; | |
| height: 36px; | |
| background: var(--gradient-primary); | |
| border-radius: var(--radius-sm); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-weight: 700; | |
| font-size: 1.1rem; | |
| color: #fff; | |
| } | |
| .sidebar-brand h1 { | |
| font-size: 1.2rem; | |
| font-weight: 700; | |
| background: var(--gradient-primary); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| .sidebar-nav { | |
| flex: 1; | |
| padding: var(--space-md); | |
| display: flex; | |
| flex-direction: column; | |
| gap: var(--space-xs); | |
| } | |
| .nav-item { | |
| display: flex; | |
| align-items: center; | |
| gap: var(--space-md); | |
| padding: var(--space-sm) var(--space-md); | |
| border-radius: var(--radius-md); | |
| color: var(--text-secondary); | |
| font-size: 0.9rem; | |
| font-weight: 500; | |
| transition: all var(--transition-fast); | |
| cursor: pointer; | |
| border: 1px solid transparent; | |
| text-decoration: none; | |
| } | |
| .nav-item:hover { | |
| background: var(--bg-surface-hover); | |
| color: var(--text-primary); | |
| border-color: var(--border-subtle); | |
| } | |
| .nav-item.active { | |
| background: var(--gradient-glow); | |
| color: var(--text-accent); | |
| border-color: var(--border-accent); | |
| } | |
| .nav-item .icon { | |
| width: 20px; | |
| height: 20px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.1rem; | |
| } | |
| .sidebar-footer { | |
| padding: var(--space-md) var(--space-xl); | |
| border-top: 1px solid var(--border-subtle); | |
| } | |
| .main-content { | |
| margin-left: var(--sidebar-width); | |
| flex: 1; | |
| padding: var(--space-2xl); | |
| min-height: 100vh; | |
| } | |
| /* ββ Page Header βββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .page-header { | |
| margin-bottom: var(--space-2xl); | |
| } | |
| .page-header h2 { | |
| font-size: 1.75rem; | |
| font-weight: 700; | |
| margin-bottom: var(--space-xs); | |
| } | |
| .page-header p { | |
| color: var(--text-secondary); | |
| font-size: 0.95rem; | |
| } | |
| /* ββ Cards βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .card { | |
| background: var(--bg-surface); | |
| border: 1px solid var(--border-subtle); | |
| border-radius: var(--radius-lg); | |
| padding: var(--space-xl); | |
| transition: all var(--transition-base); | |
| } | |
| .card:hover { | |
| border-color: var(--border-medium); | |
| box-shadow: var(--shadow-md); | |
| transform: translateY(-2px); | |
| } | |
| .card-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); | |
| gap: var(--space-lg); | |
| } | |
| .card-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: var(--space-md); | |
| } | |
| .card-title { | |
| font-size: 1rem; | |
| font-weight: 600; | |
| } | |
| /* ββ Status Badges βββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .badge { | |
| display: inline-flex; | |
| align-items: center; | |
| padding: var(--space-xs) var(--space-sm); | |
| border-radius: 999px; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| } | |
| .badge-pending { | |
| background: rgba(94, 94, 120, 0.2); | |
| color: var(--status-pending); | |
| border: 1px solid rgba(94, 94, 120, 0.3); | |
| } | |
| .badge-running { | |
| background: rgba(0, 212, 255, 0.1); | |
| color: var(--accent-blue); | |
| border: 1px solid rgba(0, 212, 255, 0.3); | |
| animation: pulse-glow 2s infinite; | |
| } | |
| .badge-completed { | |
| background: rgba(0, 232, 143, 0.1); | |
| color: var(--status-success); | |
| border: 1px solid rgba(0, 232, 143, 0.3); | |
| } | |
| .badge-failed { | |
| background: rgba(255, 64, 96, 0.1); | |
| color: var(--status-error); | |
| border: 1px solid rgba(255, 64, 96, 0.3); | |
| } | |
| /* ββ Buttons βββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .btn { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: var(--space-sm); | |
| padding: 0.65rem 1.5rem; | |
| border-radius: var(--radius-md); | |
| font-family: var(--font-sans); | |
| font-size: 0.9rem; | |
| font-weight: 600; | |
| cursor: pointer; | |
| border: 1px solid transparent; | |
| transition: all var(--transition-fast); | |
| outline: none; | |
| } | |
| .btn:active { | |
| transform: scale(0.97); | |
| } | |
| .btn-primary { | |
| background: var(--gradient-primary); | |
| color: #fff; | |
| border: none; | |
| box-shadow: 0 4px 15px rgba(0, 212, 255, 0.25); | |
| } | |
| .btn-primary:hover { | |
| box-shadow: 0 6px 25px rgba(0, 212, 255, 0.35); | |
| transform: translateY(-1px); | |
| } | |
| .btn-secondary { | |
| background: var(--bg-surface); | |
| color: var(--text-primary); | |
| border: 1px solid var(--border-medium); | |
| } | |
| .btn-secondary:hover { | |
| background: var(--bg-surface-hover); | |
| border-color: var(--border-accent); | |
| } | |
| .btn-ghost { | |
| background: transparent; | |
| color: var(--text-secondary); | |
| border: none; | |
| } | |
| .btn-ghost:hover { | |
| color: var(--text-primary); | |
| background: var(--bg-surface); | |
| } | |
| .btn-danger { | |
| background: rgba(255, 64, 96, 0.15); | |
| color: var(--status-error); | |
| border: 1px solid rgba(255, 64, 96, 0.3); | |
| } | |
| .btn-danger:hover { | |
| background: rgba(255, 64, 96, 0.25); | |
| } | |
| .btn-lg { | |
| padding: 0.85rem 2rem; | |
| font-size: 1rem; | |
| } | |
| .btn-sm { | |
| padding: 0.4rem 0.9rem; | |
| font-size: 0.8rem; | |
| } | |
| /* ββ Forms ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .form-group { | |
| margin-bottom: var(--space-lg); | |
| } | |
| .form-label { | |
| display: block; | |
| font-size: 0.85rem; | |
| font-weight: 500; | |
| color: var(--text-secondary); | |
| margin-bottom: var(--space-sm); | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| } | |
| .form-input { | |
| width: 100%; | |
| padding: 0.75rem 1rem; | |
| background: var(--bg-surface); | |
| border: 1px solid var(--border-subtle); | |
| border-radius: var(--radius-md); | |
| color: var(--text-primary); | |
| font-family: var(--font-sans); | |
| font-size: 0.95rem; | |
| transition: all var(--transition-fast); | |
| outline: none; | |
| } | |
| .form-input:focus { | |
| border-color: var(--accent-blue); | |
| box-shadow: 0 0 0 3px rgba(0, 212, 255, 0.1); | |
| } | |
| .form-input::placeholder { | |
| color: var(--text-muted); | |
| } | |
| textarea.form-input { | |
| resize: vertical; | |
| min-height: 120px; | |
| font-family: var(--font-mono); | |
| font-size: 0.9rem; | |
| line-height: 1.7; | |
| } | |
| /* ββ Auth Layout βββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .auth-layout { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 100vh; | |
| padding: var(--space-xl); | |
| position: relative; | |
| } | |
| .auth-layout::before { | |
| content: ''; | |
| position: absolute; | |
| top: -50%; | |
| left: -50%; | |
| width: 200%; | |
| height: 200%; | |
| background: radial-gradient(ellipse at 30% 20%, rgba(0, 212, 255, 0.08) 0%, transparent 50%), | |
| radial-gradient(ellipse at 70% 80%, rgba(123, 47, 247, 0.08) 0%, transparent 50%); | |
| animation: bg-drift 20s ease-in-out infinite alternate; | |
| pointer-events: none; | |
| } | |
| .auth-card { | |
| width: 100%; | |
| max-width: 440px; | |
| padding: var(--space-2xl); | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .auth-header { | |
| text-align: center; | |
| margin-bottom: var(--space-2xl); | |
| } | |
| .auth-header .logo-large { | |
| width: 64px; | |
| height: 64px; | |
| background: var(--gradient-primary); | |
| border-radius: var(--radius-md); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.8rem; | |
| font-weight: 700; | |
| color: #fff; | |
| margin: 0 auto var(--space-lg); | |
| box-shadow: 0 8px 30px rgba(0, 212, 255, 0.25); | |
| } | |
| .auth-header h2 { | |
| font-size: 1.5rem; | |
| font-weight: 700; | |
| margin-bottom: var(--space-xs); | |
| } | |
| .auth-header p { | |
| color: var(--text-secondary); | |
| font-size: 0.9rem; | |
| } | |
| .auth-toggle { | |
| text-align: center; | |
| margin-top: var(--space-xl); | |
| color: var(--text-secondary); | |
| font-size: 0.9rem; | |
| } | |
| .auth-toggle a { | |
| font-weight: 600; | |
| } | |
| .form-error { | |
| color: var(--status-error); | |
| font-size: 0.85rem; | |
| margin-top: var(--space-sm); | |
| display: none; | |
| } | |
| .form-error.visible { | |
| display: block; | |
| } | |
| /* ββ Workflow Card βββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .workflow-card { | |
| cursor: pointer; | |
| } | |
| .workflow-card .prompt-preview { | |
| color: var(--text-secondary); | |
| font-size: 0.9rem; | |
| line-height: 1.5; | |
| margin-bottom: var(--space-md); | |
| display: -webkit-box; | |
| -webkit-line-clamp: 3; | |
| -webkit-box-orient: vertical; | |
| overflow: hidden; | |
| } | |
| .workflow-card .meta { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| font-size: 0.8rem; | |
| color: var(--text-muted); | |
| } | |
| /* ββ Create Workflow Card ββββββββββββββββββββββββββββββββββββββββββ */ | |
| .create-card { | |
| border: 2px dashed var(--border-medium); | |
| background: transparent; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 200px; | |
| cursor: pointer; | |
| transition: all var(--transition-base); | |
| } | |
| .create-card:hover { | |
| border-color: var(--accent-blue); | |
| background: var(--gradient-glow); | |
| } | |
| .create-card .icon-large { | |
| width: 48px; | |
| height: 48px; | |
| border-radius: 50%; | |
| background: var(--gradient-primary); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.5rem; | |
| color: #fff; | |
| margin-bottom: var(--space-md); | |
| } | |
| .create-card p { | |
| color: var(--text-secondary); | |
| font-weight: 500; | |
| } | |
| /* ββ Modal ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .modal-overlay { | |
| position: fixed; | |
| inset: 0; | |
| background: rgba(0, 0, 0, 0.6); | |
| backdrop-filter: blur(4px); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 1000; | |
| opacity: 0; | |
| visibility: hidden; | |
| transition: all var(--transition-base); | |
| } | |
| .modal-overlay.active { | |
| opacity: 1; | |
| visibility: visible; | |
| } | |
| .modal { | |
| width: 100%; | |
| max-width: 560px; | |
| padding: var(--space-2xl); | |
| transform: translateY(20px) scale(0.95); | |
| transition: transform var(--transition-base); | |
| } | |
| .modal-overlay.active .modal { | |
| transform: translateY(0) scale(1); | |
| } | |
| .modal-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: var(--space-xl); | |
| } | |
| .modal-header h3 { | |
| font-size: 1.25rem; | |
| font-weight: 700; | |
| } | |
| .modal-close { | |
| width: 32px; | |
| height: 32px; | |
| border-radius: 50%; | |
| background: var(--bg-surface); | |
| border: 1px solid var(--border-subtle); | |
| color: var(--text-secondary); | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.1rem; | |
| transition: all var(--transition-fast); | |
| } | |
| .modal-close:hover { | |
| background: var(--bg-surface-hover); | |
| color: var(--text-primary); | |
| } | |
| /* ββ Stats Bar βββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .stats-bar { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); | |
| gap: var(--space-lg); | |
| margin-bottom: var(--space-2xl); | |
| } | |
| .stat-card { | |
| padding: var(--space-lg); | |
| } | |
| .stat-card .stat-value { | |
| font-size: 2rem; | |
| font-weight: 700; | |
| background: var(--gradient-primary); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| .stat-card .stat-label { | |
| font-size: 0.8rem; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.06em; | |
| margin-top: var(--space-xs); | |
| } | |
| /* ββ Empty State βββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .empty-state { | |
| text-align: center; | |
| padding: var(--space-2xl) * 2; | |
| color: var(--text-muted); | |
| } | |
| .empty-state .icon-empty { | |
| font-size: 3rem; | |
| margin-bottom: var(--space-lg); | |
| opacity: 0.5; | |
| } | |
| .empty-state h3 { | |
| font-size: 1.1rem; | |
| color: var(--text-secondary); | |
| margin-bottom: var(--space-sm); | |
| } | |
| /* ββ Loading Spinner βββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .spinner { | |
| width: 24px; | |
| height: 24px; | |
| border: 3px solid var(--border-subtle); | |
| border-top-color: var(--accent-blue); | |
| border-radius: 50%; | |
| animation: spin 0.8s linear infinite; | |
| } | |
| .spinner-sm { | |
| width: 16px; | |
| height: 16px; | |
| border-width: 2px; | |
| } | |
| /* ββ Notifications βββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .toast { | |
| position: fixed; | |
| bottom: var(--space-xl); | |
| right: var(--space-xl); | |
| padding: var(--space-md) var(--space-lg); | |
| border-radius: var(--radius-md); | |
| font-size: 0.9rem; | |
| font-weight: 500; | |
| z-index: 2000; | |
| transform: translateY(100px); | |
| opacity: 0; | |
| transition: all var(--transition-base); | |
| } | |
| .toast.visible { | |
| transform: translateY(0); | |
| opacity: 1; | |
| } | |
| .toast-success { | |
| background: rgba(0, 232, 143, 0.15); | |
| border: 1px solid rgba(0, 232, 143, 0.3); | |
| color: var(--status-success); | |
| } | |
| .toast-error { | |
| background: rgba(255, 64, 96, 0.15); | |
| border: 1px solid rgba(255, 64, 96, 0.3); | |
| color: var(--status-error); | |
| } | |
| /* ββ Placeholder Pages βββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .placeholder-content { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 400px; | |
| text-align: center; | |
| } | |
| .placeholder-content .icon-placeholder { | |
| font-size: 4rem; | |
| margin-bottom: var(--space-lg); | |
| opacity: 0.3; | |
| } | |
| .placeholder-content h3 { | |
| font-size: 1.3rem; | |
| margin-bottom: var(--space-sm); | |
| } | |
| .placeholder-content p { | |
| color: var(--text-muted); | |
| max-width: 400px; | |
| } | |
| /* ββ User Menu βββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .user-menu { | |
| display: flex; | |
| align-items: center; | |
| gap: var(--space-sm); | |
| padding: var(--space-sm) var(--space-md); | |
| border-radius: var(--radius-md); | |
| cursor: pointer; | |
| transition: background var(--transition-fast); | |
| } | |
| .user-menu:hover { | |
| background: var(--bg-surface-hover); | |
| } | |
| .user-avatar { | |
| width: 32px; | |
| height: 32px; | |
| border-radius: 50%; | |
| background: var(--gradient-primary); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-weight: 700; | |
| font-size: 0.85rem; | |
| color: #fff; | |
| } | |
| .user-name { | |
| font-size: 0.85rem; | |
| font-weight: 500; | |
| color: var(--text-secondary); | |
| } | |
| /* ββ Animations ββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| @keyframes spin { | |
| to { transform: rotate(360deg); } | |
| } | |
| @keyframes pulse-glow { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.7; } | |
| } | |
| @keyframes bg-drift { | |
| 0% { transform: translate(0, 0) rotate(0deg); } | |
| 100% { transform: translate(-2%, -2%) rotate(1deg); } | |
| } | |
| @keyframes fade-in { | |
| from { opacity: 0; transform: translateY(10px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .fade-in { | |
| animation: fade-in 0.4s ease-out forwards; | |
| } | |
| /* ββ Responsive ββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| @media (max-width: 768px) { | |
| .sidebar { | |
| transform: translateX(-100%); | |
| } | |
| .sidebar.open { | |
| transform: translateX(0); | |
| } | |
| .main-content { | |
| margin-left: 0; | |
| padding: var(--space-lg); | |
| } | |
| .card-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .stats-bar { | |
| grid-template-columns: repeat(2, 1fr); | |
| } | |
| } | |