Spaces:
Sleeping
Sleeping
| /* ────────────────────────────────────────────────────────────────────────────── | |
| app.css — Smart Scheduling Admin Dashboard | |
| ────────────────────────────────────────────────────────────────────────────── */ | |
| /* Layout */ | |
| body { font-size: 0.9rem; } | |
| #sidebar { | |
| width: 220px; min-height: 100vh; | |
| background: #1a1f36; | |
| position: fixed; top: 0; left: 0; bottom: 0; | |
| overflow-y: auto; z-index: 100; | |
| transition: transform 0.25s ease; | |
| } | |
| /* ── Mobile hamburger button ─────────────────────────────────────────────── */ | |
| #mobileNavToggle { | |
| display: none; | |
| position: fixed; top: 10px; left: 10px; z-index: 200; | |
| background: #1a1f36; color: #fff; border: none; | |
| border-radius: 6px; padding: 6px 11px; font-size: 1.1rem; cursor: pointer; | |
| } | |
| #sidebarOverlay { | |
| display: none; | |
| position: fixed; inset: 0; | |
| background: rgba(0,0,0,0.45); z-index: 99; | |
| } | |
| /* ── Responsive: collapse sidebar on small screens ───────────────────────── */ | |
| @media (max-width: 767.98px) { | |
| #sidebar { transform: translateX(-220px); } | |
| #sidebar.sidebar-open { transform: translateX(0); } | |
| #sidebarOverlay.sidebar-open { display: block; } | |
| #main { margin-left: 0; padding: 12px; padding-top: 52px; } | |
| #mobileNavToggle { display: block; } | |
| } | |
| /* ── QR scan mode: hide sidebar/nav for clean mobile attendance page ─────── */ | |
| body.qr-scan-mode #sidebar, | |
| body.qr-scan-mode #mobileNavToggle, | |
| body.qr-scan-mode #sidebarOverlay { display: none ; } | |
| body.qr-scan-mode #main { | |
| margin-left: 0 ; | |
| padding: 24px 16px ; | |
| min-height: 100vh; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| body.qr-scan-mode #main .section { width: 100%; max-width: 480px; } | |
| body.qr-scan-mode #main h4 { text-align: center; } | |
| #sidebar .brand { | |
| font-size: 1rem; font-weight: 700; letter-spacing: .04em; | |
| padding: 1.2rem 1rem .8rem; | |
| color: #fff; border-bottom: 1px solid rgba(255,255,255,.1); | |
| } | |
| #sidebar .nav-link { | |
| color: rgba(255,255,255,.75); border-radius: 6px; margin: 2px 8px; | |
| padding: 7px 12px; font-size: .85rem; | |
| display: flex; align-items: center; gap: 8px; | |
| } | |
| #sidebar .nav-link:hover, #sidebar .nav-link.active { | |
| background: rgba(255,255,255,.12); color: #fff; | |
| } | |
| #sidebar .nav-section { | |
| font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; | |
| color: rgba(255,255,255,.4); padding: 12px 20px 4px; | |
| } | |
| #main { margin-left: 220px; padding: 24px; } | |
| /* Cards */ | |
| .stat-card { border: none; border-radius: 12px; } | |
| .stat-card .value { font-size: 2rem; font-weight: 700; } | |
| /* Tables */ | |
| .table-sm td, .table-sm th { vertical-align: middle; } | |
| .badge-locked { background: #c0392b; } | |
| .badge-confirmed { background: #27ae60; } | |
| .badge-proposed { background: #f39c12; } | |
| .badge-cancelled { background: #6c757d; } | |
| .session-cancelled { opacity: 0.65; text-decoration: line-through; } | |
| /* Settings table – fixed column widths, no layout blowout */ | |
| .settings-table { table-layout: fixed; width: 100%; } | |
| .settings-table th, .settings-table td { word-break: break-word; } | |
| .settings-table td.text-break { word-break: break-all; } | |
| /* System page – pill selector */ | |
| .system-pill { | |
| border: 1px solid #dee2e6; | |
| background: #f8f9fa; | |
| color: #495057; | |
| } | |
| .system-pill.active { | |
| background: #0d6efd; | |
| border-color: #0d6efd; | |
| color: #fff; | |
| } | |
| .system-pill:hover:not(.active) { | |
| background: #e9ecef; | |
| } | |
| /* Log viewer */ | |
| .log-viewer { | |
| background: #0d1117; | |
| color: #c9d1d9; | |
| font-size: 0.72rem; | |
| font-family: 'Consolas', 'Monaco', monospace; | |
| padding: 12px 16px; | |
| border-radius: 6px; | |
| max-height: 540px; | |
| overflow: auto; | |
| white-space: pre-wrap; | |
| word-break: break-all; | |
| line-height: 1.5; | |
| } | |
| /* Slot colour palette */ | |
| .slot-1 { background: #dbeafe; border-left: 4px solid #3b82f6; } | |
| .slot-2 { background: #dcfce7; border-left: 4px solid #22c55e; } | |
| .slot-3 { background: #fef9c3; border-left: 4px solid #eab308; } | |
| .slot-4 { background: #fce7f3; border-left: 4px solid #ec4899; } | |
| /* Calendar grid */ | |
| .cal-grid { | |
| display: grid; | |
| grid-template-columns: 90px repeat(7, 1fr); | |
| gap: 3px; | |
| font-size: .78rem; | |
| } | |
| .cal-grid .cal-header { | |
| background: #f1f5f9; font-weight: 600; | |
| text-align: center; padding: 6px 2px; | |
| border-radius: 4px; | |
| } | |
| .cal-grid .cal-time { | |
| background: #f8fafc; font-size: .72rem; color: #64748b; | |
| display: flex; align-items: center; justify-content: flex-end; | |
| padding-right: 6px; border-radius: 4px; | |
| } | |
| .cal-cell { | |
| min-height: 64px; border-radius: 6px; padding: 4px 6px; | |
| cursor: pointer; transition: opacity .15s; | |
| border: 1px solid transparent; | |
| } | |
| .cal-cell:empty { background: #f8fafc; border-color: #e2e8f0; } | |
| .cal-cell:hover { opacity: .85; } | |
| /* Proposal table */ | |
| #proposalSection { display: none; } | |
| .proposal-row td { vertical-align: middle; } | |
| /* Toast */ | |
| .toast-container { z-index: 9999; } | |
| /* Section show/hide */ | |
| .section { display: none; } | |
| .section.active { display: block; } | |
| /* Form labels */ | |
| .form-label { font-weight: 500; } | |
| /* Loading spinner overlay */ | |
| #loadingOverlay { | |
| position: fixed; inset: 0; background: rgba(255,255,255,.6); | |
| display: none; align-items: center; justify-content: center; z-index: 5000; | |
| } | |
| /* Month calendar grid */ | |
| .month-grid { | |
| display: grid; | |
| grid-template-columns: repeat(7, 1fr); | |
| gap: 4px; | |
| font-size: .8rem; | |
| } | |
| .month-day-header { | |
| text-align: center; font-weight: 600; | |
| background: #f1f5f9; padding: 5px 2px; | |
| border-radius: 4px; | |
| } | |
| .month-day { | |
| min-height: 72px; background: #fff; | |
| border: 1px solid #e2e8f0; border-radius: 6px; | |
| padding: 4px 6px; | |
| } | |
| .month-day-num { | |
| font-weight: 700; font-size: .75rem; | |
| color: #475569; margin-bottom: 3px; | |
| } | |
| .month-event { | |
| background: #dbeafe; color: #1e40af; | |
| border-radius: 4px; padding: 2px 5px; | |
| font-size: .72rem; margin-bottom: 2px; | |
| white-space: nowrap; overflow: hidden; | |
| text-overflow: ellipsis; cursor: default; | |
| } | |