diff --git a/css/styles.css b/css/styles.css index 8c4e9ae..71c9bc2 100644 --- a/css/styles.css +++ b/css/styles.css @@ -489,15 +489,15 @@ body { /* HUD Metrics */ .hud-metrics-row { display: grid; - grid-template-columns: 1fr 1fr; - gap: 12px; + grid-template-columns: repeat(3, 1fr); + gap: 8px; } .hud-metric-box { background: rgba(7, 9, 14, 0.6); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); - padding: 12px; + padding: 10px 4px; text-align: center; } @@ -2948,7 +2948,7 @@ body { pointer-events: auto; } - /* Compact Floating Action Button on Mobile */ + /* Compact Floating Action Buttons on Mobile */ .driver-fab-container { position: absolute; bottom: max(18px, env(safe-area-inset-bottom)); @@ -2956,22 +2956,37 @@ body { z-index: 500; margin: 0; pointer-events: auto; + display: flex; + flex-direction: row; + align-items: center; + gap: 8px; } .btn-driver-fab { - padding: 10px 16px; + padding: 10px 14px; border-radius: 9999px; - gap: 8px; - box-shadow: 0 4px 16px rgba(239, 68, 68, 0.45); + gap: 6px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4); + } + + .btn-fab-stamp { + background: linear-gradient(135deg, #0284c7, #0369a1); + border: 1.5px solid rgba(56, 189, 248, 0.5); + box-shadow: 0 4px 16px rgba(2, 132, 199, 0.45); + } + + .btn-fab-photo { background: linear-gradient(135deg, #ef4444, #dc2626); + border: 1.5px solid rgba(255, 255, 255, 0.3); + box-shadow: 0 4px 16px rgba(239, 68, 68, 0.45); } .fab-icon-glow { - font-size: 1.25rem; + font-size: 1.15rem; } .fab-main-title { - font-size: 0.84rem; + font-size: 0.82rem; font-weight: 700; } @@ -3277,37 +3292,56 @@ body { box-shadow: 0 0 8px rgba(56, 189, 248, 0.3); } -/* 3. Giant 1-Tap "Log Flock Camera" Driver FAB */ +/* 3. Floating Action Buttons: 1-Tap Sighting Stamp & Photo Log */ .driver-fab-container { position: absolute; bottom: 25px; right: 25px; z-index: 1100; + display: flex; + flex-direction: column; + gap: 10px; + align-items: flex-end; } .btn-driver-fab { display: flex; align-items: center; gap: 12px; - background: linear-gradient(135deg, #ef4444 0%, #b91c1c 100%); color: #ffffff; - border: 2px solid rgba(255, 255, 255, 0.4); border-radius: 50px; - padding: 14px 22px; - font-size: 0.95rem; + padding: 12px 20px; + font-size: 0.92rem; font-weight: 700; letter-spacing: 0.5px; cursor: pointer; - box-shadow: 0 6px 25px rgba(239, 68, 68, 0.55), 0 0 15px rgba(239, 68, 68, 0.4); transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1); user-select: none; touch-action: manipulation; } -.btn-driver-fab:hover { +.btn-fab-stamp { + background: linear-gradient(135deg, #0284c7 0%, #0369a1 100%); + border: 2px solid rgba(56, 189, 248, 0.6); + box-shadow: 0 6px 25px rgba(2, 132, 199, 0.5), 0 0 15px rgba(56, 189, 248, 0.35); +} + +.btn-fab-stamp:hover { + transform: translateY(-2px) scale(1.02); + border-color: #38bdf8; + box-shadow: 0 8px 30px rgba(2, 132, 199, 0.7), 0 0 22px rgba(56, 189, 248, 0.5); +} + +.btn-fab-photo { + background: linear-gradient(135deg, #ef4444 0%, #b91c1c 100%); + border: 2px solid rgba(255, 255, 255, 0.4); + box-shadow: 0 6px 25px rgba(239, 68, 68, 0.55), 0 0 15px rgba(239, 68, 68, 0.4); +} + +.btn-fab-photo:hover { transform: translateY(-2px) scale(1.02); - box-shadow: 0 8px 30px rgba(239, 68, 68, 0.75), 0 0 25px rgba(239, 68, 68, 0.5); border-color: #ffffff; + box-shadow: 0 8px 30px rgba(239, 68, 68, 0.75), 0 0 25px rgba(239, 68, 68, 0.5); } .btn-driver-fab:active { @@ -4689,3 +4723,218 @@ body { grid-template-columns: 1fr; } } + +/* ========================================================================== + v27 DRIVER-CENTRIC POLISH REFINEMENTS + 1. Directional Approach Angle & FOV Badges + 2. Time-to-Zone Intercept Dynamic Countdown + 3. Windshield Reflection Mirror Mode & Stealth AMOLED Mode + 4. Instant 1-Tap Driving Sighting Stamp + 5. Tools Drawer Cockpit HUD & Sound/Haptics Controls + ========================================================================== */ + +/* Directional Approach Angle Badges */ +.hud-approach-badge { + display: inline-flex; + align-items: center; + gap: 4px; + font-size: 0.66rem; + font-weight: 700; + padding: 3px 8px; + border-radius: 9999px; + letter-spacing: 0.04em; + text-transform: uppercase; + transition: all 0.25s ease; + white-space: nowrap; +} + +.hud-approach-badge.approach-direct { + background: rgba(239, 68, 68, 0.22); + color: #f87171; + border: 1px solid rgba(239, 68, 68, 0.5); + box-shadow: 0 0 10px rgba(239, 68, 68, 0.35); + animation: pulse-approach 1.2s infinite alternate; +} + +@keyframes pulse-approach { + 0% { transform: scale(1); box-shadow: 0 0 6px rgba(239, 68, 68, 0.3); } + 100% { transform: scale(1.04); box-shadow: 0 0 12px rgba(239, 68, 68, 0.6); } +} + +.hud-approach-badge.approach-cross { + background: rgba(245, 158, 11, 0.2); + color: #fbbf24; + border: 1px solid rgba(245, 158, 11, 0.45); +} + +.hud-approach-badge.approach-away { + background: rgba(148, 163, 184, 0.15); + color: #94a3b8; + border: 1px solid rgba(148, 163, 184, 0.3); +} + +.hud-approach-badge.approach-none { + background: rgba(16, 185, 129, 0.14); + color: #34d399; + border: 1px solid rgba(16, 185, 129, 0.3); +} + +/* Time-to-Zone Intercept Countdown */ +#hud-eta-box { + transition: all 0.2s ease; +} + +#hud-eta-box .hud-metric-number { + color: #38bdf8; + text-shadow: 0 0 8px rgba(56, 189, 248, 0.3); +} + +/* Windshield Reflection Mirror Mode (Inverts horizontally for dashboard reflection) */ +.mirror-hud { + transform: scaleX(-1) !important; + transform-origin: center center; +} + +/* Stealth AMOLED Pitch Dark Mode (#000000 Zero Cockpit Glare) */ +body.stealth-amoled { + background-color: #000000 !important; + color: #e2e8f0; +} + +body.stealth-amoled .radar-view-container, +body.stealth-amoled .radar-map-canvas, +body.stealth-amoled #radar-map { + background-color: #000000 !important; + filter: brightness(0.4) contrast(1.5) saturate(0.2) !important; +} + +body.stealth-amoled .driver-hud { + background: #000000 !important; + border-color: #1e293b !important; + box-shadow: 0 0 24px rgba(0, 0, 0, 0.95), 0 0 0 1px #111827 !important; + backdrop-filter: none !important; + -webkit-backdrop-filter: none !important; +} + +body.stealth-amoled .hud-capsule-header { + background: #000000 !important; + border-color: #1e293b !important; +} + +body.stealth-amoled .hud-metric-box { + background: #040608 !important; + border-color: #1e293b !important; +} + +body.stealth-amoled .hud-metric-number { + color: #00f0ff !important; + text-shadow: 0 0 8px rgba(0, 240, 255, 0.45) !important; +} + +body.stealth-amoled .map-top-controls { + background: rgba(0, 0, 0, 0.98) !important; + border-color: #1e293b !important; +} + +body.stealth-amoled .app-header, +body.stealth-amoled .site-nav { + background: #000000 !important; + border-color: #1e293b !important; +} + +/* Tools Drawer Toggle Grid */ +.tools-toggle-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 8px; +} + +@media (max-width: 420px) { + .tools-toggle-grid { + grid-template-columns: 1fr; + } +} + +/* Saved Sighting Stamps in Tools Drawer */ +.stamps-list-container { + display: flex; + flex-direction: column; + gap: 6px; + max-height: 140px; + overflow-y: auto; + padding: 4px; +} + +.stamps-empty-hint { + font-size: 0.76rem; + color: var(--text-muted); + line-height: 1.4; + margin: 0; + font-style: italic; +} + +.stamp-item-card { + display: flex; + align-items: center; + justify-content: space-between; + background: rgba(255, 255, 255, 0.04); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 6px; + padding: 6px 10px; + font-size: 0.74rem; + color: #cbd5e1; + transition: background 0.15s ease; +} + +.stamp-item-card:hover { + background: rgba(56, 189, 248, 0.1); + border-color: rgba(56, 189, 248, 0.3); +} + +.stamp-item-left { + display: flex; + align-items: center; + gap: 6px; +} + +.stamp-badge-zap { + color: #f59e0b; + font-weight: bold; +} + +.btn-mini-clear { + background: none; + border: none; + color: #94a3b8; + font-size: 0.72rem; + cursor: pointer; + padding: 2px 6px; + border-radius: 4px; + transition: all 0.15s ease; +} + +.btn-mini-clear:hover { + background: rgba(239, 68, 68, 0.15); + color: #ef4444; +} + +/* Temporary Stamp Marker Animation on Map */ +.stamp-pulse-pin { + display: flex; + align-items: center; + justify-content: center; + background: #f59e0b; + color: #000; + font-weight: 800; + font-size: 14px; + border-radius: 50%; + border: 2px solid #fff; + box-shadow: 0 0 16px rgba(245, 158, 11, 0.85); + animation: stamp-drop 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); +} + +@keyframes stamp-drop { + 0% { transform: scale(0.3) translateY(-20px); opacity: 0; } + 70% { transform: scale(1.2) translateY(3px); opacity: 1; } + 100% { transform: scale(1) translateY(0); opacity: 1; } +} diff --git a/index.html b/index.html index 07a93b6..4d9fd9d 100644 --- a/index.html +++ b/index.html @@ -54,7 +54,7 @@ - +
@@ -155,7 +155,7 @@ ALL CLEAR - +No quick stamps yet. Tap ⚡ Stamp while driving to record GPS instantly.
+