From f2a8660f10520f7de3029646d10796ce2c13ad35 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Sat, 12 Sep 2026 09:23:23 -0700 Subject: [PATCH] feat(mobile): declutter mobile driving interface, make map 100% immersive, compact HUD capsule and slide-up controls drawer --- css/styles.css | 302 +++++++++++++++++++++++++++++++++++++++++++++++-- index.html | 186 +++++++++++++++++------------- js/radar.js | 58 +++++++++- sw.js | 12 +- 4 files changed, 464 insertions(+), 94 deletions(-) diff --git a/css/styles.css b/css/styles.css index ce2bc82..09285b8 100644 --- a/css/styles.css +++ b/css/styles.css @@ -303,6 +303,31 @@ body { transition: border-color var(--transition-normal); } +.hud-capsule-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; +} + +.hud-capsule-actions { + display: none; +} + +.hud-collapsible-content { + display: flex; + flex-direction: column; + gap: 14px; +} + +.drawer-header { + display: none; +} + +.tools-overlay { + display: none; +} + /* HUD Zone Badges */ .hud-badge { display: inline-flex; @@ -1838,20 +1863,283 @@ body { to { opacity: 1; transform: translateY(0); } } -/* Responsive */ +/* Responsive Mobile Driving Mode (Calm, Uncluttered, Immersive Map) */ @media (max-width: 768px) { + /* Ultra-Compact Site Nav */ + .site-nav { + padding: 6px 12px; + } + .brand-text .brand-tagline, + .badge-live-pulse { + display: none; + } + .brand-title { + font-size: 0.92rem; + } + .nav-mode-switcher { + gap: 4px; + } + .nav-mode-btn { + padding: 5px 8px; + font-size: 0.72rem; + } + .user-profile-pill { + padding: 4px 8px; + font-size: 0.72rem; + } + + /* Sleek Floating Top Driving Capsule */ .driver-hud { - width: calc(100% - 40px); + position: absolute; top: 10px; - left: 20px; - padding: 14px; + left: 10px; + right: 10px; + width: auto; + padding: 8px 12px; + border-radius: 16px; + background: rgba(10, 14, 23, 0.88); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.12); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4); + gap: 4px; + z-index: 1000; } + + .hud-capsule-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + } + + .hud-badge { + padding: 4px 8px; + font-size: 0.68rem; + gap: 5px; + flex-shrink: 0; + } + + .hud-metrics-row { + display: flex; + align-items: center; + gap: 10px; + margin: 0; + } + + .hud-metric-box { + padding: 0; + background: transparent; + border: none; + } + + .hud-metric-number { + font-size: 1.15rem; + font-weight: 800; + } + + .hud-metric-unit { + font-size: 0.65rem; + } + + .hud-metric-label { + display: none; + } + + .hud-capsule-actions { + display: flex; + align-items: center; + gap: 6px; + margin-left: auto; + } + + .btn-capsule-trigger { + background: rgba(255, 255, 255, 0.08); + border: 1px solid rgba(255, 255, 255, 0.15); + color: #f8fafc; + border-radius: 8px; + padding: 6px 10px; + font-size: 0.76rem; + font-weight: 600; + cursor: pointer; + display: flex; + align-items: center; + gap: 4px; + transition: all 0.2s ease; + } + + .btn-capsule-trigger:active { + background: rgba(6, 182, 212, 0.3); + border-color: #06b6d4; + } + + .btn-expand-details { + padding: 6px 8px; + } + + .hud-location-bar { + font-size: 0.72rem; + color: #94a3b8; + margin: 2px 0 0; + padding: 0; + border: none; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: flex; + align-items: center; + gap: 5px; + } + + /* Hidden by default on mobile to ensure 100% map visibility */ + .hud-collapsible-content { + display: none; + margin-top: 8px; + padding-top: 8px; + border-top: 1px solid rgba(255, 255, 255, 0.08); + flex-direction: column; + gap: 8px; + max-height: 50vh; + overflow-y: auto; + } + + .driver-hud.is-expanded .hud-collapsible-content { + display: flex; + } + + /* Slide-Up Driving Controls Drawer */ .map-top-controls { + position: fixed; + bottom: 0; + left: 0; + right: 0; top: auto; - bottom: 80px; - right: 20px; + width: 100%; + background: rgba(10, 14, 23, 0.97); + backdrop-filter: blur(25px); + -webkit-backdrop-filter: blur(25px); + border-top: 1px solid rgba(255, 255, 255, 0.18); + border-radius: 22px 22px 0 0; + padding: 16px 16px 36px; + display: flex; + flex-direction: column; + gap: 8px; + transform: translateY(105%); + transition: transform 0.32s cubic-bezier(0.16, 1, 0.3, 1); + z-index: 3000; + box-shadow: 0 -12px 35px rgba(0, 0, 0, 0.75); + max-height: 75vh; + overflow-y: auto; + } + + .map-top-controls.open-drawer { + transform: translateY(0); + } + + .drawer-header { + display: flex; + justify-content: space-between; + align-items: center; + padding-bottom: 10px; + margin-bottom: 6px; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); + } + + .drawer-title { + font-size: 0.95rem; + font-weight: 700; + color: #f8fafc; + } + + .btn-close-drawer { + background: rgba(255, 255, 255, 0.1); + border: none; + color: #fff; + width: 28px; + height: 28px; + border-radius: 50%; + cursor: pointer; + font-size: 0.85rem; + display: flex; + align-items: center; + justify-content: center; + } + + .btn-hud-action { + width: 100%; + justify-content: flex-start; + padding: 12px 16px; + font-size: 0.88rem; + background: rgba(30, 41, 59, 0.7); + border-radius: 10px; + } + + .tools-overlay { + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.65); + z-index: 2999; + backdrop-filter: blur(2px); + transition: opacity 0.25s ease; + opacity: 0; + pointer-events: none; + display: block; + } + + .tools-overlay.visible { + opacity: 1; + pointer-events: auto; + } + + /* Compact Floating Action Button on Mobile */ + .driver-fab-container { + position: absolute; + bottom: 22px; + right: 14px; + z-index: 500; + margin: 0; + pointer-events: auto; + } + + .btn-driver-fab { + padding: 10px 16px; + border-radius: 9999px; + gap: 8px; + box-shadow: 0 4px 16px rgba(239, 68, 68, 0.45); + background: linear-gradient(135deg, #ef4444, #dc2626); + } + + .fab-icon-glow { + font-size: 1.25rem; + } + + .fab-main-title { + font-size: 0.84rem; + font-weight: 700; + } + + .fab-sub-title { + display: none; + } + + /* Minimal Recenter Button on Mobile */ + .btn-recenter-pill { + bottom: 22px; + left: 14px; + padding: 10px 16px; + border-radius: 9999px; + font-size: 0.82rem; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5); + } + + .map-legend { + display: none; + } + + /* Leaflet Controls minimal */ + .leaflet-control-zoom { + display: none !important; /* Touch pinch-to-zoom is native */ } - .map-legend { display: none; } } /* --- SLEEK RADAR DARK MODE FOR MAP TILES (Zero API Key, Zero Watermarks, 100% Free) --- */ diff --git a/index.html b/index.html index cac4c8a..0262be1 100644 --- a/index.html +++ b/index.html @@ -28,7 +28,7 @@ - + @@ -89,51 +89,50 @@
- -