fix(mobile): perfect responsive layout, zero horizontal overflow, and polished mobile nav (v23)
This commit is contained in:
+81
-22
@@ -2506,24 +2506,48 @@ body {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Ultra-Compact Site Nav */
|
||||||
/* Ultra-Compact Site Nav */
|
/* Ultra-Compact Site Nav */
|
||||||
.site-nav {
|
.site-nav {
|
||||||
padding: max(6px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) 6px max(10px, env(safe-area-inset-left));
|
padding: max(6px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) 6px max(8px, env(safe-area-inset-left));
|
||||||
min-height: 48px;
|
min-height: 48px;
|
||||||
|
overflow: hidden;
|
||||||
|
max-width: 100vw;
|
||||||
|
}
|
||||||
|
.nav-content {
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
gap: 8px;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.nav-left {
|
||||||
|
gap: 8px;
|
||||||
|
min-width: 0;
|
||||||
|
flex-shrink: 1;
|
||||||
|
}
|
||||||
|
.brand-wrapper {
|
||||||
|
gap: 0;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.brand-name {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.brand-logo-emblem {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
}
|
}
|
||||||
.brand-text .brand-tagline,
|
.brand-text .brand-tagline,
|
||||||
.badge-live-pulse {
|
.badge-live-pulse {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.brand-title {
|
|
||||||
font-size: 0.92rem;
|
|
||||||
}
|
|
||||||
.nav-mode-switcher {
|
.nav-mode-switcher {
|
||||||
gap: 4px;
|
gap: 3px;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
.nav-mode-btn {
|
.nav-mode-btn {
|
||||||
padding: 5px 8px;
|
padding: 5px 8px;
|
||||||
font-size: 0.72rem;
|
font-size: 0.72rem;
|
||||||
|
gap: 4px;
|
||||||
}
|
}
|
||||||
.nav-text-desktop {
|
.nav-text-desktop {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -2531,21 +2555,38 @@ body {
|
|||||||
.nav-text-mobile {
|
.nav-text-mobile {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
.nav-right {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
.user-profile-pill {
|
.user-profile-pill {
|
||||||
padding: 4px 8px;
|
padding: 6px;
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
font-size: 0.72rem;
|
font-size: 0.72rem;
|
||||||
}
|
}
|
||||||
|
.user-profile-pill span:last-child {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* Sleek Floating Top Driving Capsule */
|
/* Sleek Floating Top Driving Capsule */
|
||||||
.driver-hud {
|
.driver-hud {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: max(8px, env(safe-area-inset-top));
|
top: max(8px, env(safe-area-inset-top));
|
||||||
left: max(10px, env(safe-area-inset-left));
|
left: max(8px, env(safe-area-inset-left));
|
||||||
right: max(10px, env(safe-area-inset-right));
|
right: max(8px, env(safe-area-inset-right));
|
||||||
width: auto;
|
width: auto;
|
||||||
padding: 8px 12px;
|
max-width: calc(100vw - 16px);
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 6px 10px;
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
background: rgba(10, 14, 23, 0.92);
|
background: rgba(10, 14, 23, 0.94);
|
||||||
backdrop-filter: blur(20px);
|
backdrop-filter: blur(20px);
|
||||||
-webkit-backdrop-filter: blur(20px);
|
-webkit-backdrop-filter: blur(20px);
|
||||||
border: 1px solid rgba(255, 255, 255, 0.12);
|
border: 1px solid rgba(255, 255, 255, 0.12);
|
||||||
@@ -2558,20 +2599,31 @@ body {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
gap: 8px;
|
gap: 6px;
|
||||||
|
width: 100%;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hud-state-group {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
min-width: 0;
|
||||||
|
flex-shrink: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hud-badge {
|
.hud-badge {
|
||||||
padding: 4px 8px;
|
padding: 3px 6px;
|
||||||
font-size: 0.68rem;
|
font-size: 0.65rem;
|
||||||
gap: 5px;
|
gap: 4px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hud-metrics-row {
|
.hud-metrics-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10px;
|
gap: 6px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2582,12 +2634,12 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.hud-metric-number {
|
.hud-metric-number {
|
||||||
font-size: 1.15rem;
|
font-size: 1.05rem;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hud-metric-unit {
|
.hud-metric-unit {
|
||||||
font-size: 0.65rem;
|
font-size: 0.62rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hud-metric-label {
|
.hud-metric-label {
|
||||||
@@ -2597,8 +2649,9 @@ body {
|
|||||||
.hud-capsule-actions {
|
.hud-capsule-actions {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 6px;
|
gap: 4px;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-capsule-trigger {
|
.btn-capsule-trigger {
|
||||||
@@ -2606,13 +2659,13 @@ body {
|
|||||||
border: 1px solid rgba(255, 255, 255, 0.15);
|
border: 1px solid rgba(255, 255, 255, 0.15);
|
||||||
color: #f8fafc;
|
color: #f8fafc;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
padding: 6px 10px;
|
padding: 5px 7px;
|
||||||
font-size: 0.76rem;
|
font-size: 0.72rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 3px;
|
||||||
transition: all 0.2s ease;
|
transition: all 0.2s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2622,7 +2675,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn-expand-details {
|
.btn-expand-details {
|
||||||
padding: 6px 8px;
|
padding: 5px 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hud-location-bar {
|
.hud-location-bar {
|
||||||
@@ -3651,6 +3704,12 @@ body {
|
|||||||
.support-modal-header {
|
.support-modal-header {
|
||||||
padding: 16px 22px;
|
padding: 16px 22px;
|
||||||
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
|
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 30;
|
||||||
|
background: #0d121d;
|
||||||
|
backdrop-filter: blur(20px);
|
||||||
|
-webkit-backdrop-filter: blur(20px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.support-modal-header .modal-agency-meta {
|
.support-modal-header .modal-agency-meta {
|
||||||
|
|||||||
+6
-6
@@ -54,7 +54,7 @@
|
|||||||
<meta name="apple-mobile-web-app-title" content="FlockRadar">
|
<meta name="apple-mobile-web-app-title" content="FlockRadar">
|
||||||
|
|
||||||
<!-- Main Stylesheet -->
|
<!-- Main Stylesheet -->
|
||||||
<link rel="stylesheet" href="css/styles.css?v=22">
|
<link rel="stylesheet" href="css/styles.css?v=23">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
@@ -1313,11 +1313,11 @@
|
|||||||
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
|
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
|
||||||
|
|
||||||
<!-- Data & Application Logic with Cache Busting -->
|
<!-- Data & Application Logic with Cache Busting -->
|
||||||
<script src="data/portals.js?v=22"></script>
|
<script src="data/portals.js?v=23"></script>
|
||||||
<script src="js/icons.js?v=22"></script>
|
<script src="js/icons.js?v=23"></script>
|
||||||
<script src="js/auth.js?v=22"></script>
|
<script src="js/auth.js?v=23"></script>
|
||||||
<script src="js/radar.js?v=22"></script>
|
<script src="js/radar.js?v=23"></script>
|
||||||
<script src="js/app.js?v=22"></script>
|
<script src="js/app.js?v=23"></script>
|
||||||
|
|
||||||
<!-- Service Worker Instant Cache Invalidation -->
|
<!-- Service Worker Instant Cache Invalidation -->
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
// Service Worker for FlockRadar Offline Driving & Live Updates
|
// Service Worker for FlockRadar Offline Driving & Live Updates
|
||||||
const CACHE_NAME = 'flockradar-v22';
|
const CACHE_NAME = 'flockradar-v23';
|
||||||
const ASSETS_TO_CACHE = [
|
const ASSETS_TO_CACHE = [
|
||||||
'./',
|
'./',
|
||||||
'./index.html',
|
'./index.html',
|
||||||
'./css/styles.css?v=22',
|
'./css/styles.css?v=23',
|
||||||
'./js/icons.js?v=22',
|
'./js/icons.js?v=23',
|
||||||
'./js/app.js?v=22',
|
'./js/app.js?v=23',
|
||||||
'./js/auth.js?v=22',
|
'./js/auth.js?v=23',
|
||||||
'./js/radar.js?v=22',
|
'./js/radar.js?v=23',
|
||||||
'./data/portals.js?v=22',
|
'./data/portals.js?v=23',
|
||||||
'./favicon.svg?v=22',
|
'./favicon.svg?v=23',
|
||||||
'./favicon.ico?v=22',
|
'./favicon.ico?v=23',
|
||||||
'./apple-touch-icon.png?v=22',
|
'./apple-touch-icon.png?v=23',
|
||||||
'./icon-192.png?v=22',
|
'./icon-192.png?v=23',
|
||||||
'./icon-512.png?v=22',
|
'./icon-512.png?v=23',
|
||||||
'./og-image.png?v=22',
|
'./og-image.png?v=23',
|
||||||
'./assets/img/logo.svg',
|
'./assets/img/logo.svg',
|
||||||
'./assets/img/flock_pole_cam_palmdale.jpg',
|
'./assets/img/flock_pole_cam_palmdale.jpg',
|
||||||
'./manifest.json'
|
'./manifest.json'
|
||||||
|
|||||||
Reference in New Issue
Block a user