Spaces:
Paused
Paused
| /* static/dispatcher/style.css - TO'LIQ TAYYOR VERSIYA */ | |
| /* ==================== GLOBAL STYLES ==================== */ | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| body { | |
| font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; | |
| background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); | |
| min-height: 100vh; | |
| } | |
| /* ==================== NAVBAR ==================== */ | |
| .bg-gradient-primary { | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) ; | |
| } | |
| .navbar-brand { | |
| font-size: 1.25rem; | |
| letter-spacing: 0.5px; | |
| } | |
| @keyframes pulse { | |
| 0%, | |
| 100% { | |
| opacity: 1; | |
| transform: scale(1); | |
| } | |
| 50% { | |
| opacity: 0.8; | |
| transform: scale(1.05); | |
| } | |
| } | |
| .pulse-badge { | |
| animation: pulse 2s infinite; | |
| } | |
| /* ==================== STATS CARDS ==================== */ | |
| .stats-card { | |
| background: white; | |
| border-radius: 12px; | |
| padding: 20px; | |
| display: flex; | |
| align-items: center; | |
| gap: 15px; | |
| transition: all 0.3s ease; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); | |
| border: 1px solid rgba(0, 0, 0, 0.05); | |
| cursor: pointer; | |
| } | |
| .stats-card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); | |
| } | |
| .stats-icon { | |
| width: 60px; | |
| height: 60px; | |
| border-radius: 12px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.75rem; | |
| color: white; | |
| } | |
| .stats-card-danger .stats-icon { | |
| background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%); | |
| } | |
| .stats-card-warning .stats-icon { | |
| background: linear-gradient(135deg, #ffd89b 0%, #ffa41b 100%); | |
| } | |
| .stats-card-success .stats-icon { | |
| background: linear-gradient(135deg, #a8edea 0%, #44a08d 100%); | |
| } | |
| .stats-card-info .stats-icon { | |
| background: linear-gradient(135deg, #a1c4fd 0%, #4b79e4 100%); | |
| } | |
| .stats-content h3 { | |
| font-size: 2rem; | |
| font-weight: 700; | |
| color: #2d3748; | |
| } | |
| .stats-content p { | |
| font-size: 0.875rem; | |
| color: #718096; | |
| margin: 0; | |
| } | |
| /* ==================== CARDS ==================== */ | |
| .card { | |
| border-radius: 12px ; | |
| border: none ; | |
| box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08) ; | |
| } | |
| .card-header { | |
| background: white ; | |
| border-bottom: 1px solid rgba(0, 0, 0, 0.05) ; | |
| padding: 1rem 1.25rem ; | |
| } | |
| .card-header h5, | |
| .card-header h6 { | |
| margin: 0; | |
| font-weight: 600; | |
| color: #2d3748; | |
| } | |
| /* ==================== CASES LIST ==================== */ | |
| .cases-scroll-container { | |
| max-height: calc(100vh - 350px); | |
| overflow-y: auto; | |
| overflow-x: hidden; | |
| } | |
| .cases-scroll-container::-webkit-scrollbar { | |
| width: 6px; | |
| } | |
| .cases-scroll-container::-webkit-scrollbar-track { | |
| background: #f1f1f1; | |
| } | |
| .cases-scroll-container::-webkit-scrollbar-thumb { | |
| background: #cbd5e0; | |
| border-radius: 10px; | |
| } | |
| .cases-scroll-container::-webkit-scrollbar-thumb:hover { | |
| background: #a0aec0; | |
| } | |
| .case-card { | |
| padding: 1rem 1.25rem; | |
| border-bottom: 1px solid rgba(0, 0, 0, 0.05); | |
| transition: all 0.2s ease; | |
| cursor: pointer; | |
| background: white; | |
| } | |
| .case-card:hover { | |
| background: #f7fafc; | |
| transform: translateX(5px); | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); | |
| } | |
| .case-card:last-child { | |
| border-bottom: none; | |
| } | |
| .case-card h6 { | |
| font-size: 1rem; | |
| font-weight: 600; | |
| color: #2d3748; | |
| margin-bottom: 0.5rem; | |
| } | |
| .case-card .badge { | |
| font-size: 0.75rem; | |
| padding: 0.35rem 0.65rem; | |
| font-weight: 500; | |
| } | |
| .badge-risk-qizil { | |
| animation: glow-red 2s infinite; | |
| } | |
| .badge-risk-sariq { | |
| animation: glow-yellow 2s infinite; | |
| } | |
| .badge-risk-yashil { | |
| animation: glow-green 2s infinite; | |
| } | |
| @keyframes glow-red { | |
| 0%, | |
| 100% { | |
| box-shadow: 0 0 5px rgba(220, 53, 69, 0.5); | |
| } | |
| 50% { | |
| box-shadow: 0 0 15px rgba(220, 53, 69, 0.8); | |
| } | |
| } | |
| @keyframes glow-yellow { | |
| 0%, | |
| 100% { | |
| box-shadow: 0 0 5px rgba(255, 193, 7, 0.5); | |
| } | |
| 50% { | |
| box-shadow: 0 0 15px rgba(255, 193, 7, 0.8); | |
| } | |
| } | |
| @keyframes glow-green { | |
| 0%, | |
| 100% { | |
| box-shadow: 0 0 5px rgba(40, 167, 69, 0.5); | |
| } | |
| 50% { | |
| box-shadow: 0 0 15px rgba(40, 167, 69, 0.8); | |
| } | |
| } | |
| /* ==================== MAP STYLES ==================== */ | |
| #clinic-map { | |
| height: calc(100vh - 350px); | |
| min-height: 400px; | |
| border-radius: 0 0 12px 12px; | |
| z-index: 1; | |
| } | |
| .sticky-map { | |
| position: sticky; | |
| top: 100px; | |
| } | |
| .custom-clinic-marker { | |
| background: transparent ; | |
| border: none ; | |
| } | |
| .clinic-marker-icon { | |
| animation: marker-bounce 2s ease-in-out infinite; | |
| } | |
| @keyframes marker-bounce { | |
| 0%, | |
| 100% { | |
| transform: rotate(-45deg) translateY(0); | |
| } | |
| 50% { | |
| transform: rotate(-45deg) translateY(-5px); | |
| } | |
| } | |
| .marker-cluster-wrapper { | |
| background: transparent ; | |
| border: none ; | |
| } | |
| .marker-cluster-custom { | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| border-radius: 50%; | |
| border: 3px solid white; | |
| box-shadow: 0 3px 10px rgba(0, 0, 0, 0.3); | |
| color: white; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-weight: 700; | |
| font-size: 14px; | |
| width: 100%; | |
| height: 100%; | |
| } | |
| .marker-cluster-small { | |
| width: 40px; | |
| height: 40px; | |
| } | |
| .marker-cluster-medium { | |
| width: 50px; | |
| height: 50px; | |
| font-size: 16px; | |
| } | |
| .marker-cluster-large { | |
| width: 60px; | |
| height: 60px; | |
| font-size: 18px; | |
| } | |
| .leaflet-popup-content-wrapper { | |
| border-radius: 12px; | |
| box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); | |
| padding: 0; | |
| } | |
| .leaflet-popup-content { | |
| margin: 0; | |
| padding: 0; | |
| } | |
| .clinic-popup { | |
| padding: 15px; | |
| min-width: 220px; | |
| } | |
| .clinic-popup h6 { | |
| font-size: 0.95rem; | |
| font-weight: 600; | |
| color: #2d3748; | |
| } | |
| .clinic-popup hr { | |
| margin: 8px 0; | |
| opacity: 0.2; | |
| } | |
| .custom-popup .leaflet-popup-tip { | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); | |
| } | |
| .leaflet-control-zoom { | |
| border: none ; | |
| box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15) ; | |
| border-radius: 8px ; | |
| overflow: hidden; | |
| } | |
| .leaflet-control-zoom a { | |
| border: none ; | |
| font-size: 18px ; | |
| width: 34px ; | |
| height: 34px ; | |
| line-height: 34px ; | |
| background: white ; | |
| color: #4a5568 ; | |
| } | |
| .leaflet-control-zoom a:hover { | |
| background: #f7fafc ; | |
| } | |
| /* ==================== BRIGADE MARKERS ==================== */ | |
| .brigade-marker { | |
| background: transparent ; | |
| border: none ; | |
| } | |
| .brigade-marker-icon { | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| } | |
| .brigade-marker-icon:hover { | |
| transform: scale(1.15); | |
| } | |
| @keyframes brigade-pulse { | |
| 0%, | |
| 100% { | |
| box-shadow: 0 3px 12px rgba(0, 0, 0, 0.4), 0 0 0 0 rgba(220, 53, 69, 0.7); | |
| } | |
| 50% { | |
| box-shadow: 0 3px 12px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(220, 53, 69, 0); | |
| } | |
| } | |
| .brigade-popup { | |
| padding: 12px; | |
| min-width: 200px; | |
| } | |
| .brigade-popup h6 { | |
| font-size: 0.95rem; | |
| font-weight: 600; | |
| color: #2d3748; | |
| margin-bottom: 8px; | |
| } | |
| .brigade-popup hr { | |
| margin: 8px 0; | |
| opacity: 0.2; | |
| } | |
| .brigade-popup .badge { | |
| font-size: 0.7rem; | |
| padding: 0.25rem 0.5rem; | |
| } | |
| .leaflet-marker-icon { | |
| transition: all 1s linear ; | |
| } | |
| /* ==================== CLINIC MODAL ==================== */ | |
| #clinicModal .modal-content { | |
| border-radius: 20px; | |
| border: none; | |
| overflow: hidden; | |
| } | |
| #clinicModal .modal-header { | |
| padding: 1.5rem; | |
| } | |
| #clinicModal .modal-title { | |
| font-size: 1.25rem; | |
| } | |
| #clinicModal .modal-body { | |
| padding: 1.5rem; | |
| } | |
| #clinicModal img.img-fluid { | |
| border-radius: 12px; | |
| border: 1px solid rgba(0, 0, 0, 0.1); | |
| } | |
| #clinicModal .card { | |
| border: 1px solid rgba(0, 0, 0, 0.1) ; | |
| transition: all 0.3s ease; | |
| } | |
| #clinicModal .card:hover { | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) ; | |
| transform: translateY(-3px); | |
| } | |
| #clinicModal img.rounded-circle { | |
| border: 2px solid #e2e8f0; | |
| object-fit: cover; | |
| } | |
| #clinicModal .list-group-item { | |
| border-left: 3px solid #667eea; | |
| transition: all 0.2s ease; | |
| } | |
| #clinicModal .list-group-item:hover { | |
| background-color: #f7fafc; | |
| padding-left: 20px; | |
| } | |
| #clinicModal .alert-info { | |
| background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%); | |
| border: none; | |
| border-left: 4px solid #2196f3; | |
| } | |
| /* ==================== BUTTONS ==================== */ | |
| .btn-group .btn { | |
| font-size: 0.875rem; | |
| padding: 0.375rem 0.75rem; | |
| border-radius: 8px; | |
| transition: all 0.2s ease; | |
| } | |
| .btn-group .btn:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); | |
| } | |
| .btn-group .btn.active { | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); | |
| } | |
| /* ==================== ANIMATIONS ==================== */ | |
| @keyframes fadeIn { | |
| from { | |
| opacity: 0; | |
| transform: translateY(20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .case-card { | |
| animation: fadeIn 0.4s ease-in-out; | |
| } | |
| /* ==================== RESPONSIVE DESIGN ==================== */ | |
| @media (max-width: 992px) { | |
| #clinic-map { | |
| height: 400px; | |
| } | |
| .sticky-map { | |
| position: relative; | |
| top: 0; | |
| } | |
| .cases-scroll-container { | |
| max-height: 500px; | |
| } | |
| .stats-card { | |
| padding: 15px; | |
| } | |
| .stats-icon { | |
| width: 50px; | |
| height: 50px; | |
| font-size: 1.5rem; | |
| } | |
| .stats-content h3 { | |
| font-size: 1.5rem; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .navbar-brand { | |
| font-size: 1rem; | |
| } | |
| .btn-group .btn { | |
| font-size: 0.75rem; | |
| padding: 0.25rem 0.5rem; | |
| } | |
| #clinic-map { | |
| height: 300px; | |
| } | |
| .case-card { | |
| padding: 0.75rem 1rem; | |
| } | |
| } | |
| @media (max-width: 576px) { | |
| .stats-card { | |
| margin-bottom: 10px; | |
| } | |
| #clinicModal .modal-dialog { | |
| margin: 10px; | |
| } | |
| #clinicModal .modal-body { | |
| padding: 1rem; | |
| } | |
| } | |
| /* ==================== PRINT STYLES ==================== */ | |
| @media print { | |
| #clinic-map, | |
| .btn-group, | |
| .navbar { | |
| display: none ; | |
| } | |
| .case-card { | |
| page-break-inside: avoid; | |
| } | |
| body { | |
| background: white; | |
| } | |
| } |