skrep / frontend /src /index.css
trtlbby's picture
chore(frontend): normalize index.css encoding to UTF-8
42fbb36
Raw History Blame Contribute Delete
23.1 kB
/* ================= DESIGN SYSTEM SYSTEM TOKENS ================= */ :root { /* Colors */ --bg: #070913; --bg-gradient: linear-gradient(135deg, #070913 0%, #0d122b 100%); --surface: rgba(16, 22, 42, 0.7); --surface-hover: rgba(22, 31, 59, 0.85); --surface-solid: #0f142c; --border: rgba(255, 255, 255, 0.08); --border-focus: rgba(124, 58, 237, 0.5); --text: #f3f4f6; --text-muted: #9ca3af; --text-dark: #6b7280; /* Accent Hues */ --accent: #8b5cf6; /* Vibrant violet */ --accent-secondary: #06b6d4; /* Vibrant cyan */ --accent-gradient: linear-gradient(135deg, #8b5cf6 0%, #06b6d4 100%); /* Status Colors */ --success: #10b981; /* Emerald */ --warning: #f59e0b; /* Amber */ --danger: #f43f5e; /* Rose */ /* Fonts */ --font-title: 'Outfit', sans-serif; --font-body: 'Inter', sans-serif; --font-mono: 'JetBrains Mono', monospace; /* Layout */ --header-height: 70px; --sidebar-width: 250px; --radius-sm: 6px; --radius-md: 12px; --radius-lg: 20px; --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.3); --shadow-md: 0 8px 30px rgba(0, 0, 0, 0.5); --shadow-glow: 0 0 15px rgba(139, 92, 246, 0.2); } /* ================= BASIC RESET & SCROLLBAR ================= */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: var(--font-body); background: var(--bg); background-image: var(--bg-gradient); background-attachment: fixed; color: var(--text); font-size: 14px; line-height: 1.5; min-height: 100vh; overflow-x: hidden; } /* Custom Scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: rgba(7, 9, 19, 0.5); } ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.1); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.2); } /* ================= AUTHENTICATION VIEW ================= */ .auth-wrapper { display: flex; justify-content: center; align-items: center; min-height: 100vh; padding: 20px; } .auth-card { background: var(--surface); border: 1px solid var(--border); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-radius: var(--radius-lg); padding: 40px; width: 100%; max-width: 480px; box-shadow: var(--shadow-md); animation: fadeIn 0.6s cubic-bezier(0.16, 1, 0.3, 1); } .auth-header { text-align: center; margin-bottom: 30px; } .auth-logo { display: inline-block; font-family: var(--font-title); font-size: 24px; font-weight: 700; background: var(--accent-gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; padding: 4px 12px; border: 1px solid rgba(139, 92, 246, 0.3); border-radius: var(--radius-sm); margin-bottom: 16px; box-shadow: var(--shadow-glow); } .auth-header h1 { font-family: var(--font-title); font-size: 24px; font-weight: 600; margin-bottom: 8px; letter-spacing: -0.5px; } .auth-header p { color: var(--text-muted); font-size: 13px; } .auth-divider { display: flex; align-items: center; text-align: center; margin: 24px 0; color: var(--text-dark); font-size: 11px; text-transform: uppercase; letter-spacing: 1px; } .auth-divider::before, .auth-divider::after { content: ''; flex: 1; border-bottom: 1px solid var(--border); } .auth-divider span { padding: 0 10px; } .demo-accounts-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; } .demo-accounts-grid button { display: flex; flex-direction: column; align-items: center; padding: 12px; text-align: center; } .demo-role { font-weight: 600; font-size: 12px; color: var(--text); margin-bottom: 2px; } .demo-desc { font-size: 10px; color: var(--text-muted); } /* ================= COMMON UI ELEMENTS ================= */ h2 { font-family: var(--font-title); font-size: 24px; font-weight: 600; color: var(--text); margin-bottom: 4px; } h3 { font-family: var(--font-title); font-size: 16px; font-weight: 500; color: var(--text); margin-bottom: 16px; } .section-header { margin-bottom: 24px; } .section-header p { color: var(--text-muted); font-size: 14px; } /* Form Styles */ .form-group { display: flex; flex-direction: column; gap: 6px; margin-bottom: 18px; } .form-group label { font-size: 12px; font-weight: 500; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; } input, select, textarea { background: rgba(7, 9, 19, 0.6); border: 1px solid var(--border); color: var(--text); font-family: var(--font-body); font-size: 14px; padding: 10px 14px; border-radius: var(--radius-sm); transition: all 0.2s ease; width: 100%; } input:focus, select:focus, textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px rgba(139, 92, 246, 0.2); background: rgba(7, 9, 19, 0.8); } textarea { resize: vertical; min-height: 100px; } .form-tip { font-size: 11px; color: var(--text-dark); margin-top: 4px; } .password-input-wrapper { position: relative; } .password-input-wrapper input { padding-right: 60px; } .btn-toggle-password { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); background: transparent; border: none; color: var(--text-muted); cursor: pointer; font-size: 11px; font-weight: 600; text-transform: uppercase; padding: 4px; } .btn-toggle-password:hover { color: var(--text); } /* Button Styles */ button { font-family: var(--font-body); font-size: 13px; font-weight: 500; border-radius: var(--radius-sm); padding: 10px 18px; cursor: pointer; transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); display: inline-flex; align-items: center; justify-content: center; border: 1px solid transparent; } .btn-primary { background: var(--accent-gradient); color: #ffffff; box-shadow: var(--shadow-sm); } .btn-primary:hover { box-shadow: var(--shadow-glow); transform: translateY(-1px); filter: brightness(1.1); } .btn-primary:active { transform: translateY(0); } .btn-secondary { background: rgba(255, 255, 255, 0.03); border-color: var(--border); color: var(--text); } .btn-secondary:hover { background: rgba(255, 255, 255, 0.08); border-color: rgba(255, 255, 255, 0.2); } .btn-danger { background: rgba(244, 63, 94, 0.05); border: 1px solid rgba(244, 63, 94, 0.3); color: var(--danger); } .btn-danger:hover { background: rgba(244, 63, 94, 0.25); border-color: var(--danger); } .btn-block { display: flex; width: 100%; } .btn-large { padding: 12px 24px; font-size: 14px; font-weight: 600; } .btn-small { padding: 6px 12px; font-size: 11px; } button:disabled { opacity: 0.4; cursor: not-allowed; transform: none !important; box-shadow: none !important; filter: none !important; } /* Spinner */ .btn-spinner { width: 16px; height: 16px; border: 2px solid rgba(255, 255, 255, 0.3); border-radius: 50%; border-top-color: #ffffff; animation: spin 0.8s linear infinite; margin-left: 8px; display: none; } /* Badges */ .badge { display: inline-flex; align-items: center; font-family: var(--font-mono); font-size: 10px; font-weight: 500; padding: 2px 8px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; background: rgba(255, 255, 255, 0.05); border: 1px solid var(--border); color: var(--text-muted); } .badge-active { color: var(--success); background: rgba(16, 185, 129, 0.06); border-color: rgba(16, 185, 129, 0.3); } .badge-archived { color: var(--text-dark); background: rgba(255, 255, 255, 0.02); border-color: var(--border); } .badge-running { color: var(--warning); background: rgba(245, 158, 11, 0.06); border-color: rgba(245, 158, 11, 0.3); } .badge-completed { color: var(--success); background: rgba(16, 185, 129, 0.06); border-color: rgba(16, 185, 129, 0.3); } .badge-failed { color: var(--danger); background: rgba(244, 63, 94, 0.06); border-color: rgba(244, 63, 94, 0.3); } .badge-admin { color: var(--accent-secondary); background: rgba(6, 182, 212, 0.06); border-color: rgba(6, 182, 212, 0.3); } .badge-faculty { color: var(--accent); background: rgba(139, 92, 246, 0.06); border-color: rgba(139, 92, 246, 0.3); } /* Glass Panels */ .glass-panel { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 24px; box-shadow: var(--shadow-sm); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); transition: border-color 0.3s ease, transform 0.3s ease; margin-bottom: 24px; } .glass-panel:hover { border-color: rgba(255, 255, 255, 0.12); } .panel-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .panel-header h3 { margin-bottom: 0; } /* ================= APP LAYOUT ================= */ .app-layout { display: grid; grid-template-rows: var(--header-height) 1fr; grid-template-columns: var(--sidebar-width) 1fr; grid-template-areas: "header header" "sidebar main"; min-height: 100vh; } /* Header */ #header { grid-area: header; height: var(--header-height); background: rgba(11, 16, 36, 0.8); border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; padding: 0 30px; position: fixed; top: 0; left: 0; right: 0; z-index: 1000; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); } .header-left { display: flex; align-items: center; gap: 20px; } .header-logo { font-family: var(--font-title); font-size: 18px; font-weight: 700; letter-spacing: -0.5px; } .logo-accent { background: var(--accent-gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; font-weight: 500; } .api-status-badge { display: inline-flex; align-items: center; gap: 6px; background: rgba(255, 255, 255, 0.03); border: 1px solid var(--border); padding: 4px 10px; border-radius: 20px; font-size: 11px; } .status-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--warning); display: inline-block; } .status-text { color: var(--text-muted); } .header-right { display: flex; align-items: center; gap: 24px; } .user-profile { display: flex; align-items: center; gap: 12px; padding-right: 20px; border-right: 1px solid var(--border); } .user-avatar { width: 36px; height: 36px; border-radius: 50%; background: var(--accent-gradient); color: #fff; display: flex; align-items: center; justify-content: center; font-family: var(--font-title); font-weight: 600; font-size: 14px; box-shadow: var(--shadow-glow); } .user-info { display: flex; flex-direction: column; } .user-name { font-size: 13px; font-weight: 600; color: var(--text); } .user-role-badge { font-size: 10px; color: var(--accent-secondary); font-family: var(--font-mono); text-transform: uppercase; letter-spacing: 0.5px; margin-top: 1px; } .btn-icon-logout { background: transparent; border: none; color: var(--text-muted); gap: 6px; padding: 6px 12px; } .btn-icon-logout:hover { color: var(--danger); background: rgba(244, 63, 94, 0.05); } /* Sidebar */ #sidebar { grid-area: sidebar; width: var(--sidebar-width); position: fixed; top: var(--header-height); left: 0; bottom: 0; background: rgba(9, 13, 30, 0.6); border-right: 1px solid var(--border); display: flex; flex-direction: column; justify-content: space-between; padding: 24px 0; z-index: 999; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); } .sidebar-nav { display: flex; flex-direction: column; gap: 4px; padding: 0 12px; } .nav-item { display: flex; align-items: center; gap: 12px; padding: 12px 16px; color: var(--text-muted); cursor: pointer; border-radius: var(--radius-sm); text-decoration: none; transition: all 0.2s ease; font-weight: 500; } .nav-item svg { transition: color 0.2s ease; opacity: 0.7; } .nav-item:hover { color: var(--text); background: rgba(255, 255, 255, 0.03); } .nav-item:hover svg { opacity: 1; } .nav-item.active { color: #fff; background: var(--accent-gradient); box-shadow: 0 4px 12px rgba(139, 92, 246, 0.25); } .nav-item.active svg { opacity: 1; } .sidebar-footer { padding: 0 24px; } .system-version { font-size: 11px; color: var(--text-dark); font-family: var(--font-mono); } /* Main Area */ #main { grid-area: main; margin-left: var(--sidebar-width); margin-top: var(--header-height); padding: 40px; min-height: calc(100vh - var(--header-height)); width: calc(100% - var(--sidebar-width)); } .app-section { display: none; animation: fadeIn 0.4s cubic-bezier(0.16, 1, 0.3, 1); } .app-section.active { display: block; } /* ================= GRID SYSTEM & LAYOUT UTILITIES ================= */ .row { display: flex; flex-wrap: wrap; margin-right: -12px; margin-left: -12px; } .col-md-4, .col-md-5, .col-md-7, .col-md-8 { position: relative; width: 100%; padding-right: 12px; padding-left: 12px; margin-bottom: 24px; } @media (min-width: 768px) { .col-md-4 { flex: 0 0 33.333333%; max-width: 33.333333%; } .col-md-5 { flex: 0 0 41.666667%; max-width: 41.666667%; } .col-md-7 { flex: 0 0 58.333333%; max-width: 58.333333%; } .col-md-8 { flex: 0 0 66.666667%; max-width: 66.666667%; } } /* ================= OVERVIEW SECTION STYLES ================= */ .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; margin-bottom: 30px; } .stat-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 20px; display: flex; align-items: center; gap: 16px; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: var(--shadow-sm); transition: transform 0.2s ease, border-color 0.2s ease; } .stat-card:hover { transform: translateY(-2px); border-color: rgba(255, 255, 255, 0.15); } .stat-icon { width: 48px; height: 48px; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; } .res-icon { background: rgba(6, 182, 212, 0.1); color: var(--accent-secondary); } .topic-icon { background: rgba(139, 92, 246, 0.1); color: var(--accent); } .embedded-icon { background: rgba(245, 158, 11, 0.1); color: var(--warning); } .crawl-icon { background: rgba(16, 185, 129, 0.1); color: var(--success); } .stat-info { display: flex; flex-direction: column; } .stat-label { font-size: 12px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; } .stat-value { font-family: var(--font-title); font-size: 22px; font-weight: 700; color: #fff; margin-top: 2px; } /* ================= TABLES ================= */ .table-responsive { width: 100%; overflow-x: auto; margin-top: 10px; } table { width: 100%; border-collapse: collapse; text-align: left; } th { font-family: var(--font-title); font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-muted); padding: 12px 16px; border-bottom: 2px solid var(--border); } td { padding: 14px 16px; border-bottom: 1px solid var(--border); font-size: 13px; vertical-align: middle; } tbody tr { transition: background 0.15s ease; } tbody tr:hover { background: rgba(255, 255, 255, 0.015); } .empty-msg { color: var(--text-dark); text-align: center; padding: 40px 0; font-size: 13px; } /* ================= CRAWL CONSOLE ELEMENTS ================= */ .crawl-telemetry-placeholder { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 60px 20px; text-align: center; color: var(--text-muted); height: 100%; min-height: 250px; } .telemetry-radar { width: 60px; height: 60px; border: 2px solid var(--border); border-radius: 50%; margin-bottom: 20px; position: relative; display: flex; align-items: center; justify-content: center; } .telemetry-radar::before { content: ''; width: 10px; height: 10px; background: var(--accent-secondary); border-radius: 50%; animation: radar-pulse 1.5s infinite ease-in-out; } .crawl-result-card { background: rgba(7, 9, 19, 0.4); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 20px; animation: slideUp 0.3s ease; } .telemetry-row { display: flex; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.03); } .telemetry-row:last-child { border-bottom: none; } .telemetry-row .label { color: var(--text-muted); font-weight: 500; } .telemetry-row .value { font-family: var(--font-mono); font-size: 13px; } /* ================= RESOURCE FILTER & PAGINATION ================= */ .resource-filter-bar { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px; margin-bottom: 20px; padding-bottom: 16px; border-bottom: 1px solid var(--border); } .filter-group { display: flex; align-items: center; gap: 12px; } .filter-label { font-size: 12px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; } .filter-buttons { display: flex; gap: 6px; } .filter-btn { background: transparent; border: 1px solid var(--border); color: var(--text-muted); padding: 6px 12px; font-size: 11px; } .filter-btn:hover { border-color: rgba(255, 255, 255, 0.2); color: var(--text); } .filter-btn.active { background: rgba(139, 92, 246, 0.1); border-color: var(--accent); color: var(--accent); box-shadow: 0 0 10px rgba(139, 92, 246, 0.1); } .pagination-footer { display: flex; justify-content: space-between; align-items: center; margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--border); } .pagination-info { font-size: 12px; color: var(--text-muted); } .pagination-controls { display: flex; gap: 8px; } /* ================= SEMANTIC MATCHER ================= */ .topic-selection-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; margin-top: 10px; max-height: 250px; overflow-y: auto; padding: 4px; } .topic-selection-grid label { background: rgba(7, 9, 19, 0.4); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 12px 16px; display: flex; align-items: center; gap: 12px; cursor: pointer; transition: all 0.2s ease; user-select: none; } .topic-selection-grid label:hover:not(.disabled) { border-color: rgba(255, 255, 255, 0.2); background: rgba(7, 9, 19, 0.6); } .topic-selection-grid input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--accent); cursor: pointer; } .topic-selection-grid label.disabled { opacity: 0.35; cursor: not-allowed; background: rgba(255, 255, 255, 0.01); } .matcher-telemetry-placeholder { text-align: center; color: var(--text-muted); padding: 60px 0; } .match-summary-card { background: rgba(139, 92, 246, 0.03); border: 1px solid rgba(139, 92, 246, 0.15); border-radius: var(--radius-sm); padding: 12px 20px; margin-bottom: 20px; font-size: 13px; color: var(--text-muted); display: flex; justify-content: space-between; flex-wrap: wrap; gap: 10px; } .match-summary-card strong { color: var(--text); } .results-list { display: flex; flex-direction: column; gap: 16px; } .result-card { background: rgba(7, 9, 19, 0.3); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 20px; position: relative; overflow: hidden; transition: transform 0.2s ease, border-color 0.2s ease; } .result-card:hover { transform: translateX(2px); border-color: rgba(255, 255, 255, 0.15); } .result-header-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 8px; } .result-title-area { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; } .result-index { font-family: var(--font-mono); color: var(--accent-secondary); font-weight: 700; font-size: 15px; } .result-title-text { font-family: var(--font-title); font-size: 15px; font-weight: 600; color: #fff; } .score-badge { font-family: var(--font-mono); font-size: 13px; font-weight: 700; padding: 4px 10px; border-radius: 4px; display: inline-flex; align-items: center; background: rgba(255, 255, 255, 0.05); } .score-high { color: var(--success); border: 1px solid rgba(16, 185, 129, 0.3); background: rgba(16, 185, 129, 0.05); } .score-med { color: var(--warning); border: 1px solid rgba(245, 158, 11, 0.3); background: rgba(245, 158, 11, 0.05); } .score-low { color: var(--text-muted); border: 1px solid var(--border); } .result-meta-row { font-size: 12px; color: var(--text-muted); margin-bottom: 12px; display: flex; flex-direction: column; gap: 4px; } .result-alignment-scores { font-size: 11px; background: rgba(255, 255, 255, 0.02); border: 1px solid var(--border); border-radius: 4px; padding: 10px 14px; margin-bottom: 16px; display: flex; flex-direction: column; gap: 4px; } .alignment-item { display: flex; justify-content: space-between; } .alignment-topic { color: var(--text-muted); } .alignment-val { font-family: var(--font-mono); font-weight: 600; color: var(--text); } /* ================= TOAST NOTIFICATION ================= */ #toast { position: fixed; bottom: 30px; right: 30px; background: var(--surface-solid); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text); font-size: 13px; font-weight: 500; padding: 14px 24px; display: none; z-index: 10000; box-shadow: var(--shadow-md); animation: slideIn 0.3s cubic-bezier(0.16, 1, 0.3, 1); } #toast.success { border-color: var(--success); color: var(--success); box-shadow: 0 0 15px rgba(16, 185, 129, 0.15); } #toast.error { border-color: var(--danger); color: var(--danger); box-shadow: 0 0 15px rgba(244, 63, 94, 0.15); } /* ================= KEYFRAME ANIMATIONS ================= */ @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } @keyframes spin { to { transform: rotate(360deg); } } @keyframes radar-pulse { 0% { transform: scale(1); opacity: 1; box-shadow: 0 0 0 0 rgba(6, 182, 212, 0.4); } 70% { transform: scale(1.8); opacity: 0.2; box-shadow: 0 0 0 10px rgba(6, 182, 212, 0); } 100% { transform: scale(1.8); opacity: 0; } }
/* ================= DESIGN SYSTEM SYSTEM TOKENS ================= */
:root {
/* Colors */
--bg: #070913;
--bg-gradient: linear-gradient(135deg, #070913 0%, #0d122b 100%);
--surface: rgba(16, 22, 42, 0.7);
--surface-hover: rgba(22, 31, 59, 0.85);
--surface-solid: #0f142c;
--border: rgba(255, 255, 255, 0.08);
--border-focus: rgba(124, 58, 237, 0.5);
--text: #f3f4f6;
--text-muted: #9ca3af;
--text-dark: #6b7280;
/* Accent Hues */
--accent: #8b5cf6; /* Vibrant violet */
--accent-secondary: #06b6d4; /* Vibrant cyan */
--accent-gradient: linear-gradient(135deg, #8b5cf6 0%, #06b6d4 100%);
/* Status Colors */
--success: #10b981; /* Emerald */
--warning: #f59e0b; /* Amber */
--danger: #f43f5e; /* Rose */
/* Fonts */
--font-title: 'Outfit', sans-serif;
--font-body: 'Inter', sans-serif;
--font-mono: 'JetBrains Mono', monospace;
/* Layout */
--header-height: 70px;
--sidebar-width: 250px;
--radius-sm: 6px;
--radius-md: 12px;
--radius-lg: 20px;
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.3);
--shadow-md: 0 8px 30px rgba(0, 0, 0, 0.5);
--shadow-glow: 0 0 15px rgba(139, 92, 246, 0.2);
}
/* ================= BASIC RESET & SCROLLBAR ================= */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: var(--font-body);
background: var(--bg);
background-image: var(--bg-gradient);
background-attachment: fixed;
color: var(--text);
font-size: 14px;
line-height: 1.5;
min-height: 100vh;
overflow-x: hidden;
}
/* Custom Scrollbar */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: rgba(7, 9, 19, 0.5);
}
::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.1);
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: rgba(255, 255, 255, 0.2);
}
/* ================= AUTHENTICATION VIEW ================= */
.auth-wrapper {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
padding: 20px;
}
.auth-card {
background: var(--surface);
border: 1px solid var(--border);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border-radius: var(--radius-lg);
padding: 40px;
width: 100%;
max-width: 480px;
box-shadow: var(--shadow-md);
animation: fadeIn 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
.auth-header {
text-align: center;