Spaces:
Sleeping
Sleeping
| /* | |
| Futuristic Glassmorphism CSS Design System | |
| AI Face Recognition Attendance System | |
| */ | |
| @import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&display=swap'); | |
| :root { | |
| --bg-gradient: linear-gradient(135deg, #090514 0%, #0f0b24 50%, #030107 100%); | |
| --glass-bg: rgba(20, 16, 38, 0.45); | |
| --glass-border: rgba(0, 255, 242, 0.12); | |
| --glass-border-hover: rgba(0, 255, 242, 0.35); | |
| --neon-cyan: #00fff2; | |
| --neon-green: #2ecc71; | |
| --neon-red: #e74c3c; | |
| --neon-amber: #f1c40f; | |
| --text-primary: #ffffff; | |
| --text-secondary: #a0aec0; | |
| --text-muted: #64748b; | |
| --shadow-neon: 0 0 15px rgba(0, 255, 242, 0.3); | |
| --shadow-neon-success: 0 0 15px rgba(46, 204, 113, 0.3); | |
| --transition-smooth: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); | |
| } | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| font-family: 'Outfit', sans-serif; | |
| } | |
| body { | |
| background: var(--bg-gradient); | |
| color: var(--text-primary); | |
| min-height: 100vh; | |
| overflow: hidden; | |
| } | |
| /* Scrollbar Customization */ | |
| ::-webkit-scrollbar { | |
| width: 6px; | |
| height: 6px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: rgba(0, 255, 242, 0.2); | |
| border-radius: 4px; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| background: var(--neon-cyan); | |
| } | |
| /* Core Layout */ | |
| .app-container { | |
| display: flex; | |
| height: 100vh; | |
| width: 100vw; | |
| position: relative; | |
| } | |
| /* Left Sidebar */ | |
| .sidebar { | |
| width: 260px; | |
| background: rgba(10, 8, 20, 0.8); | |
| border-right: 1px solid var(--glass-border); | |
| display: flex; | |
| flex-direction: column; | |
| padding: 24px 16px; | |
| z-index: 10; | |
| backdrop-filter: blur(10px); | |
| } | |
| .logo-container { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| margin-bottom: 40px; | |
| padding-left: 8px; | |
| } | |
| .logo-icon { | |
| color: var(--neon-cyan); | |
| font-size: 28px; | |
| text-shadow: var(--shadow-neon); | |
| animation: logo-glow 3s infinite ease-in-out; | |
| } | |
| .logo-text { | |
| font-size: 18px; | |
| font-weight: 700; | |
| letter-spacing: 1px; | |
| background: linear-gradient(90deg, #ffffff, var(--neon-cyan)); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| } | |
| .nav-links { | |
| list-style: none; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| flex-grow: 1; | |
| } | |
| .nav-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 14px; | |
| padding: 12px 16px; | |
| border-radius: 12px; | |
| cursor: pointer; | |
| color: var(--text-secondary); | |
| font-size: 15px; | |
| font-weight: 500; | |
| transition: var(--transition-smooth); | |
| border: 1px solid transparent; | |
| } | |
| .nav-item i { | |
| font-size: 20px; | |
| transition: var(--transition-smooth); | |
| } | |
| .nav-item:hover { | |
| color: var(--neon-cyan); | |
| background: rgba(0, 255, 242, 0.05); | |
| border-color: rgba(0, 255, 242, 0.1); | |
| transform: translateX(4px); | |
| } | |
| .nav-item.active { | |
| color: var(--neon-cyan); | |
| background: rgba(0, 255, 242, 0.08); | |
| border-color: var(--glass-border-hover); | |
| box-shadow: inset 0 0 10px rgba(0, 255, 242, 0.05); | |
| } | |
| .nav-item.active i { | |
| text-shadow: var(--shadow-neon); | |
| } | |
| .sidebar-footer { | |
| border-top: 1px solid rgba(255, 255, 255, 0.05); | |
| padding-top: 16px; | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| } | |
| .sys-status-indicator { | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| background: var(--neon-green); | |
| box-shadow: 0 0 8px var(--neon-green); | |
| } | |
| .sys-status-text { | |
| font-size: 12px; | |
| color: var(--text-muted); | |
| font-weight: 500; | |
| } | |
| /* Main Viewport */ | |
| .main-content { | |
| flex-grow: 1; | |
| padding: 32px; | |
| overflow-y: auto; | |
| position: relative; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| /* Header styling */ | |
| .view-header { | |
| margin-bottom: 28px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .view-title h1 { | |
| font-size: 26px; | |
| font-weight: 700; | |
| letter-spacing: -0.5px; | |
| margin-bottom: 4px; | |
| } | |
| .view-title p { | |
| color: var(--text-secondary); | |
| font-size: 14px; | |
| } | |
| /* Dynamic Panels */ | |
| .tab-panel { | |
| display: none; | |
| animation: panel-fade-in 0.4s ease-out; | |
| flex-grow: 1; | |
| } | |
| .tab-panel.active { | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| /* Glassmorphism Cards */ | |
| .glass-card { | |
| background: var(--glass-bg); | |
| border: 1px solid var(--glass-border); | |
| border-radius: 16px; | |
| padding: 24px; | |
| backdrop-filter: blur(16px); | |
| box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37); | |
| transition: var(--transition-smooth); | |
| } | |
| .glass-card:hover { | |
| border-color: var(--glass-border-hover); | |
| } | |
| /* Widget Grid (Dashboard) */ | |
| .widgets-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); | |
| gap: 20px; | |
| margin-bottom: 24px; | |
| } | |
| .widget-card { | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| } | |
| .widget-icon { | |
| width: 48px; | |
| height: 48px; | |
| border-radius: 12px; | |
| background: rgba(0, 255, 242, 0.08); | |
| border: 1px solid rgba(0, 255, 242, 0.2); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: var(--neon-cyan); | |
| font-size: 24px; | |
| box-shadow: var(--shadow-neon); | |
| } | |
| .widget-info h3 { | |
| font-size: 24px; | |
| font-weight: 700; | |
| line-height: 1.1; | |
| } | |
| .widget-info p { | |
| font-size: 13px; | |
| color: var(--text-secondary); | |
| font-weight: 500; | |
| } | |
| /* Main Dashboard Panel Split */ | |
| .dashboard-layout { | |
| display: grid; | |
| grid-template-columns: 2fr 1fr; | |
| gap: 24px; | |
| flex-grow: 1; | |
| } | |
| /* Feed Container */ | |
| .feed-container { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| position: relative; | |
| overflow: hidden; | |
| background: rgba(0, 0, 0, 0.3); | |
| border: 1px solid var(--glass-border); | |
| border-radius: 16px; | |
| aspect-ratio: 4/3; | |
| width: 100%; | |
| } | |
| .live-feed-img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| border-radius: 14px; | |
| } | |
| .feed-overlay-text { | |
| position: absolute; | |
| color: var(--neon-cyan); | |
| font-weight: 600; | |
| font-size: 16px; | |
| letter-spacing: 1px; | |
| } | |
| /* Logs and Activity List */ | |
| .activity-card { | |
| display: flex; | |
| flex-direction: column; | |
| height: 100%; | |
| } | |
| .activity-header { | |
| font-size: 16px; | |
| font-weight: 600; | |
| margin-bottom: 16px; | |
| padding-bottom: 8px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.05); | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .activity-list { | |
| flex-grow: 1; | |
| overflow-y: auto; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| } | |
| .activity-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| padding: 10px 14px; | |
| background: rgba(255, 255, 255, 0.02); | |
| border: 1px solid rgba(255, 255, 255, 0.04); | |
| border-radius: 12px; | |
| transition: var(--transition-smooth); | |
| } | |
| .activity-item:hover { | |
| background: rgba(255, 255, 255, 0.04); | |
| } | |
| .activity-avatar { | |
| width: 38px; | |
| height: 38px; | |
| border-radius: 50%; | |
| background: rgba(0, 255, 242, 0.1); | |
| border: 1px solid rgba(0, 255, 242, 0.3); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: var(--neon-cyan); | |
| font-weight: 700; | |
| font-size: 14px; | |
| } | |
| .activity-item.check_in .activity-avatar { | |
| background: rgba(46, 204, 113, 0.1); | |
| border-color: rgba(46, 204, 113, 0.3); | |
| color: var(--neon-green); | |
| } | |
| .activity-item.check_out .activity-avatar { | |
| background: rgba(241, 196, 15, 0.1); | |
| border-color: rgba(241, 196, 15, 0.3); | |
| color: var(--neon-amber); | |
| } | |
| .activity-details { | |
| flex-grow: 1; | |
| } | |
| .activity-details h5 { | |
| font-size: 14px; | |
| font-weight: 600; | |
| } | |
| .activity-details p { | |
| font-size: 12px; | |
| color: var(--text-secondary); | |
| } | |
| .activity-badge { | |
| font-size: 10px; | |
| padding: 4px 8px; | |
| border-radius: 20px; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| } | |
| .check_in .activity-badge { | |
| background: rgba(46, 204, 113, 0.15); | |
| color: var(--neon-green); | |
| border: 1px solid rgba(46, 204, 113, 0.3); | |
| } | |
| .check_out .activity-badge { | |
| background: rgba(241, 196, 15, 0.15); | |
| color: var(--neon-amber); | |
| border: 1px solid rgba(241, 196, 15, 0.3); | |
| } | |
| /* User Directory & Forms styling */ | |
| .directory-layout { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 20px; | |
| flex-grow: 1; | |
| } | |
| .table-controls { | |
| display: flex; | |
| justify-content: space-between; | |
| gap: 16px; | |
| } | |
| .search-input-wrapper { | |
| position: relative; | |
| flex-grow: 1; | |
| max-width: 400px; | |
| } | |
| .search-input-wrapper i { | |
| position: absolute; | |
| left: 14px; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| color: var(--text-muted); | |
| } | |
| .search-input { | |
| width: 100%; | |
| background: rgba(0, 0, 0, 0.2); | |
| border: 1px solid var(--glass-border); | |
| border-radius: 12px; | |
| padding: 10px 16px 10px 42px; | |
| color: #ffffff; | |
| outline: none; | |
| font-size: 14px; | |
| transition: var(--transition-smooth); | |
| } | |
| .search-input:focus { | |
| border-color: var(--neon-cyan); | |
| box-shadow: 0 0 10px rgba(0, 255, 242, 0.15); | |
| } | |
| .btn { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| background: linear-gradient(135deg, rgba(0, 255, 242, 0.2) 0%, rgba(0, 255, 242, 0.05) 100%); | |
| border: 1px solid var(--neon-cyan); | |
| color: #ffffff; | |
| padding: 10px 20px; | |
| border-radius: 12px; | |
| font-size: 14px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: var(--transition-smooth); | |
| text-shadow: var(--shadow-neon); | |
| } | |
| .btn:hover { | |
| background: linear-gradient(135deg, rgba(0, 255, 242, 0.3) 0%, rgba(0, 255, 242, 0.1) 100%); | |
| box-shadow: var(--shadow-neon); | |
| transform: translateY(-2px); | |
| } | |
| .btn-danger { | |
| border-color: var(--neon-red); | |
| background: rgba(231, 76, 60, 0.1); | |
| text-shadow: 0 0 8px rgba(231, 76, 60, 0.3); | |
| } | |
| .btn-danger:hover { | |
| background: rgba(231, 76, 60, 0.2); | |
| box-shadow: 0 0 12px rgba(231, 76, 60, 0.3); | |
| } | |
| /* Elegant responsive tables */ | |
| .table-container { | |
| width: 100%; | |
| overflow-x: auto; | |
| } | |
| table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| text-align: left; | |
| } | |
| th { | |
| padding: 14px 18px; | |
| color: var(--text-secondary); | |
| font-weight: 600; | |
| font-size: 13px; | |
| text-transform: uppercase; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.05); | |
| } | |
| td { | |
| padding: 16px 18px; | |
| font-size: 14px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.03); | |
| } | |
| tr:hover td { | |
| background: rgba(255, 255, 255, 0.01); | |
| } | |
| /* Advanced Multi-Angle Enrollment Wizard */ | |
| .wizard-modal { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| background: rgba(5, 3, 10, 0.85); | |
| backdrop-filter: blur(8px); | |
| z-index: 100; | |
| display: none; | |
| align-items: center; | |
| justify-content: center; | |
| animation: fade-in 0.3s ease-out; | |
| } | |
| .wizard-card { | |
| width: 850px; | |
| max-width: 90vw; | |
| height: 600px; | |
| display: flex; | |
| overflow: hidden; | |
| border: 1px solid var(--glass-border-hover); | |
| box-shadow: 0 0 40px rgba(0, 255, 242, 0.2); | |
| } | |
| .wizard-sidebar { | |
| width: 250px; | |
| background: rgba(10, 8, 20, 0.6); | |
| border-right: 1px solid var(--glass-border); | |
| padding: 32px 24px; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .wizard-steps { | |
| list-style: none; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 20px; | |
| margin-top: 30px; | |
| } | |
| .step-indicator { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| opacity: 0.4; | |
| transition: var(--transition-smooth); | |
| } | |
| .step-indicator.active { | |
| opacity: 1; | |
| color: var(--neon-cyan); | |
| } | |
| .step-indicator.completed { | |
| opacity: 1; | |
| color: var(--neon-green); | |
| } | |
| .step-num { | |
| width: 24px; | |
| height: 24px; | |
| border-radius: 50%; | |
| border: 1px solid currentColor; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 12px; | |
| font-weight: 700; | |
| } | |
| .step-indicator.completed .step-num { | |
| background: var(--neon-green); | |
| color: #000; | |
| border-color: var(--neon-green); | |
| } | |
| .wizard-content { | |
| flex-grow: 1; | |
| padding: 36px; | |
| display: flex; | |
| flex-direction: column; | |
| position: relative; | |
| } | |
| .wizard-panel { | |
| display: none; | |
| flex-direction: column; | |
| flex-grow: 1; | |
| height: 100%; | |
| } | |
| .wizard-panel.active { | |
| display: flex; | |
| } | |
| .form-group { | |
| margin-bottom: 20px; | |
| } | |
| .form-label { | |
| display: block; | |
| font-size: 13px; | |
| font-weight: 600; | |
| color: var(--text-secondary); | |
| margin-bottom: 8px; | |
| text-transform: uppercase; | |
| } | |
| .form-input { | |
| width: 100%; | |
| background: rgba(0, 0, 0, 0.25); | |
| border: 1px solid var(--glass-border); | |
| border-radius: 12px; | |
| padding: 12px 16px; | |
| color: #ffffff; | |
| outline: none; | |
| font-size: 14px; | |
| transition: var(--transition-smooth); | |
| } | |
| .form-input:focus { | |
| border-color: var(--neon-cyan); | |
| } | |
| /* Enrollment Camera Area styling */ | |
| .scan-area-layout { | |
| display: grid; | |
| grid-template-columns: 1.2fr 1fr; | |
| gap: 24px; | |
| flex-grow: 1; | |
| } | |
| .angle-selector { | |
| display: grid; | |
| grid-template-columns: 1fr; | |
| gap: 12px; | |
| } | |
| .angle-card { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 12px 16px; | |
| background: rgba(255, 255, 255, 0.02); | |
| border: 1px solid var(--glass-border); | |
| border-radius: 12px; | |
| cursor: pointer; | |
| transition: var(--transition-smooth); | |
| } | |
| .angle-card:hover { | |
| background: rgba(0, 255, 242, 0.03); | |
| border-color: rgba(0, 255, 242, 0.2); | |
| } | |
| .angle-card.active { | |
| border-color: var(--neon-cyan); | |
| background: rgba(0, 255, 242, 0.06); | |
| box-shadow: 0 0 10px rgba(0, 255, 242, 0.1); | |
| } | |
| .angle-card.completed { | |
| border-color: var(--neon-green); | |
| background: rgba(46, 204, 113, 0.06); | |
| } | |
| .angle-label { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| font-size: 14px; | |
| font-weight: 500; | |
| } | |
| .angle-status-icon { | |
| font-size: 18px; | |
| color: var(--text-muted); | |
| } | |
| .angle-card.completed .angle-status-icon { | |
| color: var(--neon-green); | |
| } | |
| .angle-card.active .angle-status-icon { | |
| color: var(--neon-cyan); | |
| } | |
| /* Floating Alerts Success Banner */ | |
| .alerts-container { | |
| position: fixed; | |
| top: 24px; | |
| right: 24px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 16px; | |
| z-index: 1000; | |
| pointer-events: none; | |
| } | |
| .alert-toast { | |
| pointer-events: auto; | |
| width: 320px; | |
| background: rgba(20, 16, 38, 0.85); | |
| border-left: 4px solid var(--neon-green); | |
| border-radius: 12px; | |
| padding: 16px; | |
| box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); | |
| backdrop-filter: blur(12px); | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 12px; | |
| animation: toast-slide-in 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); | |
| transition: var(--transition-smooth); | |
| } | |
| .alert-toast.check_out { | |
| border-left-color: var(--neon-amber); | |
| } | |
| .alert-toast-icon { | |
| width: 36px; | |
| height: 36px; | |
| border-radius: 50%; | |
| background: rgba(46, 204, 113, 0.1); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: var(--neon-green); | |
| font-size: 20px; | |
| flex-shrink: 0; | |
| } | |
| .alert-toast.check_out .alert-toast-icon { | |
| background: rgba(241, 196, 15, 0.1); | |
| color: var(--neon-amber); | |
| } | |
| .alert-toast-content h4 { | |
| font-size: 14px; | |
| font-weight: 700; | |
| margin-bottom: 2px; | |
| } | |
| .alert-toast-content p { | |
| font-size: 12px; | |
| color: var(--text-secondary); | |
| } | |
| /* Settings Forms styling */ | |
| .settings-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); | |
| gap: 24px; | |
| } | |
| /* Animations */ | |
| @keyframes panel-fade-in { | |
| from { opacity: 0; transform: translateY(12px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| @keyframes fade-in { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| @keyframes logo-glow { | |
| 0%, 100% { text-shadow: 0 0 10px rgba(0, 255, 242, 0.3); } | |
| 50% { text-shadow: 0 0 25px rgba(0, 255, 242, 0.8); } | |
| } | |
| @keyframes toast-slide-in { | |
| from { opacity: 0; transform: translateX(100px); } | |
| to { opacity: 1; transform: translateX(0); } | |
| } | |
| /* ========================================== | |
| 🔑 ENHANCEMENT CSS: AUTH & KIOSK & CHARTS | |
| ========================================== */ | |
| /* 1. Glassmorphism Login Overlay */ | |
| .login-overlay { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| background: rgba(4, 2, 10, 0.8); | |
| backdrop-filter: blur(20px) saturate(180%); | |
| -webkit-backdrop-filter: blur(20px) saturate(180%); | |
| z-index: 10000; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| animation: fade-in 0.5s ease-out; | |
| } | |
| .login-card { | |
| width: 420px; | |
| max-width: 90vw; | |
| border: 1px solid var(--glass-border-hover) ; | |
| box-shadow: 0 0 40px rgba(0, 255, 242, 0.25) ; | |
| padding: 36px ; | |
| animation: panel-fade-in 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); | |
| } | |
| /* 2. Floating Escape Button */ | |
| .kiosk-escape-btn { | |
| position: fixed; | |
| top: 24px; | |
| right: 24px; | |
| z-index: 9999; | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| background: rgba(231, 76, 60, 0.15); | |
| border: 1px solid var(--neon-red); | |
| color: #ffffff; | |
| padding: 10px 18px; | |
| border-radius: 12px; | |
| font-size: 13px; | |
| font-weight: 700; | |
| cursor: pointer; | |
| box-shadow: 0 0 15px rgba(231, 76, 60, 0.2); | |
| transition: var(--transition-smooth); | |
| } | |
| .kiosk-escape-btn:hover { | |
| background: rgba(231, 76, 60, 0.3); | |
| box-shadow: 0 0 25px rgba(231, 76, 60, 0.5); | |
| transform: translateY(-2px); | |
| } | |
| /* 3. Kiosk Mode Viewport Lockdown */ | |
| body.kiosk-mode .sidebar { | |
| display: none ; | |
| } | |
| body.kiosk-mode .main-content { | |
| padding: 0 ; | |
| width: 100vw ; | |
| height: 100vh ; | |
| overflow: hidden ; | |
| } | |
| body.kiosk-mode .view-header { | |
| display: none ; | |
| } | |
| body.kiosk-mode #tab-scanner { | |
| display: flex ; | |
| width: 100vw ; | |
| height: 100vh ; | |
| } | |
| body.kiosk-mode #tab-scanner .dashboard-layout { | |
| display: block ; /* Stack them or hide logs list entirely */ | |
| width: 100% ; | |
| height: 100% ; | |
| } | |
| body.kiosk-mode #tab-scanner .glass-card:first-child { | |
| width: 100vw ; | |
| height: 100vh ; | |
| border: none ; | |
| border-radius: 0 ; | |
| padding: 0 ; | |
| background: #000000 ; | |
| gap: 0 ; | |
| } | |
| body.kiosk-mode #tab-scanner .activity-header, | |
| body.kiosk-mode #tab-scanner button#btn-toggle-camera, | |
| body.kiosk-mode #tab-scanner div:last-child { | |
| display: none ; /* Hide titles and toggles inside Kiosk Mode */ | |
| } | |
| body.kiosk-mode #tab-scanner .feed-container { | |
| width: 100vw ; | |
| height: 100vh ; | |
| border: none ; | |
| border-radius: 0 ; | |
| aspect-ratio: auto ; | |
| } | |
| body.kiosk-mode #tab-scanner .live-feed-img { | |
| width: 100vw ; | |
| height: 100vh ; | |
| object-fit: cover ; | |
| border-radius: 0 ; | |
| } | |
| body.kiosk-mode #tab-scanner .activity-card { | |
| display: none ; /* Hide session logs list in Kiosk Mode */ | |
| } | |
| /* 4. Interactive SVG Charts elements styling */ | |
| .chart-card { | |
| background: linear-gradient(135deg, rgba(20, 16, 38, 0.5) 0%, rgba(0, 255, 242, 0.03) 100%); | |
| border-color: rgba(0, 255, 242, 0.15) ; | |
| } | |
| /* Grid markers */ | |
| .chart-grid-line { | |
| stroke: rgba(255, 255, 255, 0.03); | |
| stroke-width: 1; | |
| } | |
| .chart-axis-line { | |
| stroke: rgba(255, 255, 255, 0.08); | |
| stroke-width: 1.5; | |
| } | |
| .chart-axis-text { | |
| fill: var(--text-muted); | |
| font-size: 10px; | |
| font-weight: 600; | |
| font-family: 'Outfit', sans-serif; | |
| letter-spacing: 0.5px; | |
| } | |
| /* Spline line */ | |
| .chart-path-line { | |
| stroke: var(--neon-cyan); | |
| stroke-width: 3; | |
| fill: none; | |
| stroke-linecap: round; | |
| filter: url(#neon-glow); | |
| stroke-dasharray: 1000; | |
| stroke-dashoffset: 1000; | |
| animation: chart-draw 2.5s ease-out forwards; | |
| } | |
| /* Bar columns */ | |
| .chart-bar-column { | |
| fill: rgba(46, 204, 113, 0.7); | |
| stroke: var(--neon-green); | |
| stroke-width: 1.5; | |
| transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); | |
| cursor: pointer; | |
| } | |
| .chart-bar-column:hover { | |
| fill: var(--neon-green); | |
| filter: url(#green-glow); | |
| transform: translateY(-3px); | |
| } | |
| /* Data point circles */ | |
| .chart-data-node { | |
| fill: #0c0919; | |
| stroke: var(--neon-cyan); | |
| stroke-width: 2.5; | |
| cursor: pointer; | |
| transition: all 0.2s ease-in-out; | |
| } | |
| .chart-data-node:hover { | |
| fill: var(--neon-cyan); | |
| stroke: #ffffff; | |
| r: 6; | |
| filter: url(#neon-glow); | |
| } | |
| /* Chart Tooltip Overlay */ | |
| .chart-tooltip { | |
| position: absolute; | |
| background: rgba(10, 8, 20, 0.95); | |
| border: 1px solid var(--glass-border-hover); | |
| color: #ffffff; | |
| padding: 8px 12px; | |
| border-radius: 8px; | |
| font-size: 11px; | |
| font-weight: 600; | |
| pointer-events: none; | |
| opacity: 0; | |
| transition: opacity 0.2s ease-in-out; | |
| box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5); | |
| z-index: 10; | |
| } | |
| @keyframes chart-draw { | |
| to { stroke-dashoffset: 0; } | |
| } | |