Spaces:
Running
Running
| /* Responsive Design */ | |
| /* Minimum supported width: 320px */ | |
| html, body { | |
| min-width: 320px; | |
| } | |
| /* Desktop (≥1024px) - sidebar + main content side by side */ | |
| @media (min-width: 1024px) { | |
| .row { | |
| display: flex; | |
| } | |
| .col-lg-3 { | |
| flex: 0 0 25%; | |
| max-width: 25%; | |
| } | |
| .col-lg-9 { | |
| flex: 0 0 75%; | |
| max-width: 75%; | |
| } | |
| #modelListContainer { | |
| max-height: 600px; | |
| overflow-y: auto; | |
| } | |
| .card { | |
| margin-bottom: 1.5rem; | |
| } | |
| #graphContainer { | |
| height: 500px; | |
| } | |
| /* Hide mobile tab nav on desktop */ | |
| .mobile-tab-nav { | |
| display: none; | |
| } | |
| } | |
| /* Tablet (768px - 1023px) - stacked layout with model list on top */ | |
| @media (min-width: 768px) and (max-width: 1023px) { | |
| .row { | |
| display: flex; | |
| flex-wrap: wrap; | |
| } | |
| .col-md-4 { | |
| flex: 0 0 33.333%; | |
| max-width: 33.333%; | |
| } | |
| .col-md-6 { | |
| flex: 0 0 50%; | |
| max-width: 50%; | |
| } | |
| .col-md-8 { | |
| flex: 0 0 66.667%; | |
| max-width: 66.667%; | |
| } | |
| .col-12 { | |
| flex: 0 0 100%; | |
| max-width: 100%; | |
| } | |
| /* On tablet, sidebar goes full width on top */ | |
| .col-lg-3, | |
| .col-lg-9 { | |
| flex: 0 0 100%; | |
| max-width: 100%; | |
| } | |
| /* Sidebar toggle on tablet */ | |
| .sidebar-hidden { | |
| width: 0 ; | |
| max-width: 0 ; | |
| flex: 0 0 0 ; | |
| padding: 0 ; | |
| opacity: 0; | |
| overflow: hidden; | |
| margin: 0 ; | |
| } | |
| .sidebar-collapsed { | |
| flex: 0 0 100% ; | |
| max-width: 100% ; | |
| } | |
| #modelListContainer { | |
| max-height: 400px; | |
| overflow-y: auto; | |
| margin-bottom: 1.5rem; | |
| } | |
| .card { | |
| margin-bottom: 1rem; | |
| } | |
| #graphContainer { | |
| height: 400px; | |
| } | |
| /* Hide mobile tab nav on tablet */ | |
| .mobile-tab-nav { | |
| display: none; | |
| } | |
| } | |
| /* Mobile (<768px) - fully stacked, tab-based navigation for panels */ | |
| @media (max-width: 767px) { | |
| body { | |
| padding: 0; | |
| } | |
| #app { | |
| padding: 0; | |
| } | |
| header { | |
| margin-bottom: 1rem; | |
| } | |
| header .navbar-brand { | |
| font-size: 1rem; | |
| } | |
| .navbar-nav { | |
| flex-direction: row; | |
| gap: 0.5rem; | |
| } | |
| .btn-sm { | |
| padding: 0.25rem 0.5rem; | |
| font-size: 0.75rem; | |
| } | |
| .row { | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .col-lg-3, | |
| .col-lg-9, | |
| .col-md-4, | |
| .col-md-6, | |
| .col-md-8, | |
| .col-12 { | |
| flex: 0 0 100%; | |
| max-width: 100%; | |
| padding: 0.5rem; | |
| } | |
| /* Sidebar toggle on mobile */ | |
| .sidebar-hidden { | |
| width: 0 ; | |
| max-width: 0 ; | |
| flex: 0 0 0 ; | |
| padding: 0 ; | |
| opacity: 0; | |
| overflow: hidden; | |
| margin: 0 ; | |
| } | |
| .sidebar-collapsed { | |
| flex: 0 0 100% ; | |
| max-width: 100% ; | |
| } | |
| #modelListContainer { | |
| max-height: 300px; | |
| overflow-y: auto; | |
| margin-bottom: 1rem; | |
| } | |
| .card { | |
| margin-bottom: 1rem; | |
| border-radius: 0.375rem; | |
| } | |
| .card-header { | |
| padding: 0.75rem; | |
| } | |
| .card-header h5 { | |
| font-size: 1rem; | |
| } | |
| .card-body { | |
| padding: 0.75rem; | |
| font-size: 0.9rem; | |
| } | |
| #graphContainer { | |
| height: 300px; | |
| } | |
| .form-control { | |
| font-size: 16px; /* Prevents zoom on iOS */ | |
| } | |
| .list-group-item { | |
| padding: 0.5rem 0.75rem; | |
| font-size: 0.9rem; | |
| } | |
| /* Mobile tab navigation for detail panels */ | |
| .mobile-tab-nav { | |
| display: flex; | |
| overflow-x: auto; | |
| -webkit-overflow-scrolling: touch; | |
| border-bottom: 2px solid #dee2e6; | |
| margin-bottom: 0.75rem; | |
| gap: 0; | |
| scrollbar-width: none; | |
| } | |
| .mobile-tab-nav::-webkit-scrollbar { | |
| display: none; | |
| } | |
| .mobile-tab-nav .tab-btn { | |
| flex: 0 0 auto; | |
| padding: 0.5rem 0.875rem; | |
| border: none; | |
| background: none; | |
| color: #6c757d; | |
| font-size: 0.85rem; | |
| white-space: nowrap; | |
| border-bottom: 2px solid transparent; | |
| margin-bottom: -2px; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| } | |
| .mobile-tab-nav .tab-btn:hover { | |
| color: #007bff; | |
| } | |
| .mobile-tab-nav .tab-btn.active { | |
| color: #007bff; | |
| border-bottom-color: #007bff; | |
| font-weight: 600; | |
| } | |
| /* Hide non-active panels on mobile */ | |
| .mobile-panel { | |
| display: none; | |
| } | |
| .mobile-panel.active { | |
| display: block; | |
| } | |
| } | |
| /* Extra Small Devices (320px - 480px) */ | |
| @media (max-width: 480px) { | |
| header .navbar-brand { | |
| font-size: 0.9rem; | |
| } | |
| .btn-sm { | |
| padding: 0.2rem 0.4rem; | |
| font-size: 0.7rem; | |
| } | |
| .card-header h5 { | |
| font-size: 0.95rem; | |
| } | |
| .card-body { | |
| padding: 0.5rem; | |
| font-size: 0.85rem; | |
| } | |
| #graphContainer { | |
| height: 250px; | |
| } | |
| #modelListContainer { | |
| max-height: 250px; | |
| } | |
| } | |
| /* Minimum supported width: 320px */ | |
| @media (max-width: 320px) { | |
| #app { | |
| min-width: 320px; | |
| overflow-x: auto; | |
| } | |
| .card-body { | |
| padding: 0.4rem; | |
| font-size: 0.8rem; | |
| } | |
| #graphContainer { | |
| height: 220px; | |
| } | |
| } | |
| /* Landscape Orientation */ | |
| @media (orientation: landscape) and (max-height: 600px) { | |
| #modelListContainer { | |
| max-height: 300px; | |
| } | |
| #graphContainer { | |
| height: 300px; | |
| } | |
| .card { | |
| margin-bottom: 0.5rem; | |
| } | |
| } | |
| /* Print Styles */ | |
| @media print { | |
| header, | |
| .btn, | |
| #searchInput { | |
| display: none; | |
| } | |
| .card { | |
| page-break-inside: avoid; | |
| box-shadow: none; | |
| border: 1px solid #ddd; | |
| } | |
| } | |