fix(modal): fix desktop support modal positioning and bind close button (v22)

This commit is contained in:
2026-09-12 11:49:37 -07:00
parent c1228a8908
commit eed7c328ed
4 changed files with 79 additions and 58 deletions
+49 -39
View File
@@ -2144,9 +2144,8 @@ body {
padding: 0; padding: 0;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.8), var(--shadow-glow); box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.8), var(--shadow-glow);
position: fixed; position: fixed;
top: 50%; inset: 0;
left: 50%; margin: auto;
transform: translate(-50%, -50%);
max-height: 88vh; max-height: 88vh;
max-height: 88dvh; max-height: 88dvh;
overflow-y: auto !important; overflow-y: auto !important;
@@ -3642,15 +3641,26 @@ body {
========================================================================== */ ========================================================================== */
.support-dialog { .support-dialog {
max-width: 860px; max-width: 860px;
max-height: 92vh;
max-height: 92dvh;
background: radial-gradient(circle at 50% 0%, rgba(30, 41, 59, 0.95), rgba(10, 14, 23, 0.98)); background: radial-gradient(circle at 50% 0%, rgba(30, 41, 59, 0.95), rgba(10, 14, 23, 0.98));
border: 1px solid rgba(245, 158, 11, 0.35); border: 1px solid rgba(245, 158, 11, 0.35);
box-shadow: 0 25px 60px -10px rgba(0, 0, 0, 0.85), 0 0 30px rgba(245, 158, 11, 0.15); box-shadow: 0 25px 60px -10px rgba(0, 0, 0, 0.85), 0 0 30px rgba(245, 158, 11, 0.15);
} }
.support-modal-header { .support-modal-header {
padding: 16px 22px;
border-bottom: 1px solid rgba(255, 255, 255, 0.08); border-bottom: 1px solid rgba(255, 255, 255, 0.08);
} }
.support-modal-header .modal-agency-meta {
display: none;
}
.support-modal-body {
padding: 14px 22px 16px;
}
.support-dev-pill { .support-dev-pill {
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
@@ -3658,20 +3668,20 @@ body {
background: rgba(239, 68, 68, 0.14); background: rgba(239, 68, 68, 0.14);
border: 1px solid rgba(239, 68, 68, 0.35); border: 1px solid rgba(239, 68, 68, 0.35);
border-radius: 9999px; border-radius: 9999px;
padding: 3px 10px; padding: 2px 9px;
font-size: 0.72rem; font-size: 0.68rem;
font-weight: 700; font-weight: 700;
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 0.05em; letter-spacing: 0.05em;
color: #fca5a5; color: #fca5a5;
margin-bottom: 8px; margin-bottom: 4px;
} }
.support-intro-text { .support-intro-text {
font-size: 0.92rem; font-size: 0.84rem;
line-height: 1.6; line-height: 1.45;
color: var(--text-muted); color: var(--text-muted);
margin-bottom: 20px; margin-bottom: 12px;
} }
/* Monthly Subscription Banner */ /* Monthly Subscription Banner */
@@ -3679,14 +3689,14 @@ body {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
gap: 20px; gap: 16px;
background: linear-gradient(135deg, rgba(16, 185, 129, 0.12), rgba(6, 182, 212, 0.15), rgba(15, 23, 42, 0.9)); background: linear-gradient(135deg, rgba(16, 185, 129, 0.12), rgba(6, 182, 212, 0.15), rgba(15, 23, 42, 0.9));
border: 1.5px solid rgba(16, 185, 129, 0.45); border: 1.5px solid rgba(16, 185, 129, 0.45);
border-radius: 18px; border-radius: 14px;
padding: 22px 24px; padding: 12px 18px;
text-decoration: none; text-decoration: none;
color: inherit; color: inherit;
margin-bottom: 22px; margin-bottom: 12px;
box-shadow: 0 8px 30px rgba(16, 185, 129, 0.15), 0 0 20px rgba(6, 182, 212, 0.1); box-shadow: 0 8px 30px rgba(16, 185, 129, 0.15), 0 0 20px rgba(6, 182, 212, 0.1);
transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1); transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
position: relative; position: relative;
@@ -3694,30 +3704,30 @@ body {
} }
.monthly-sub-banner:hover { .monthly-sub-banner:hover {
transform: translateY(-3px); transform: translateY(-2px);
border-color: #10b981; border-color: #10b981;
box-shadow: 0 14px 36px rgba(16, 185, 129, 0.25), 0 0 25px rgba(6, 182, 212, 0.2); box-shadow: 0 12px 32px rgba(16, 185, 129, 0.25), 0 0 25px rgba(6, 182, 212, 0.2);
} }
.monthly-badge { .monthly-badge {
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
gap: 6px; gap: 5px;
background: rgba(16, 185, 129, 0.2); background: rgba(16, 185, 129, 0.2);
border: 1px solid #10b981; border: 1px solid #10b981;
color: #34d399; color: #34d399;
font-size: 0.7rem; font-size: 0.68rem;
font-weight: 800; font-weight: 800;
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 0.06em; letter-spacing: 0.06em;
padding: 3px 10px; padding: 2px 8px;
border-radius: 9999px; border-radius: 9999px;
margin-bottom: 8px; margin-bottom: 4px;
} }
.pulse-sub-dot { .pulse-sub-dot {
width: 7px; width: 6px;
height: 7px; height: 6px;
border-radius: 50%; border-radius: 50%;
background: #10b981; background: #10b981;
box-shadow: 0 0 8px #10b981; box-shadow: 0 0 8px #10b981;
@@ -3726,17 +3736,17 @@ body {
.monthly-title { .monthly-title {
font-family: var(--font-heading); font-family: var(--font-heading);
font-size: 1.35rem; font-size: 1.15rem;
font-weight: 800; font-weight: 800;
color: #ffffff; color: #ffffff;
margin-bottom: 6px; margin-bottom: 2px;
} }
.monthly-desc { .monthly-desc {
font-size: 0.82rem; font-size: 0.76rem;
color: #94a3b8; color: #94a3b8;
line-height: 1.5; line-height: 1.35;
max-width: 460px; max-width: 440px;
} }
.monthly-sub-right { .monthly-sub-right {
@@ -3837,8 +3847,8 @@ body {
.support-tiers-grid { .support-tiers-grid {
display: grid; display: grid;
grid-template-columns: repeat(4, 1fr); grid-template-columns: repeat(4, 1fr);
gap: 16px; gap: 12px;
margin-bottom: 24px; margin-bottom: 16px;
} }
@media (max-width: 820px) { @media (max-width: 820px) {
@@ -3856,8 +3866,8 @@ body {
.support-tier-card { .support-tier-card {
background: rgba(15, 23, 42, 0.65); background: rgba(15, 23, 42, 0.65);
border: 1px solid rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 16px; border-radius: 14px;
padding: 20px 16px; padding: 15px 14px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
@@ -3918,18 +3928,18 @@ body {
.tier-amount { .tier-amount {
font-family: var(--font-heading); font-family: var(--font-heading);
font-size: 2.2rem; font-size: 1.9rem;
font-weight: 800; font-weight: 800;
color: #ffffff; color: #ffffff;
line-height: 1; line-height: 1;
margin-bottom: 12px; margin-bottom: 6px;
} }
.tier-desc { .tier-desc {
font-size: 0.78rem; font-size: 0.75rem;
color: #94a3b8; color: #94a3b8;
line-height: 1.45; line-height: 1.4;
margin-bottom: 18px; margin-bottom: 12px;
flex: 1; flex: 1;
} }
@@ -3938,10 +3948,10 @@ body {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 6px; gap: 6px;
padding: 10px 14px; padding: 8px 12px;
border-radius: 10px; border-radius: 9px;
font-weight: 700; font-weight: 700;
font-size: 0.85rem; font-size: 0.82rem;
background: rgba(255, 255, 255, 0.08); background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.15); border: 1px solid rgba(255, 255, 255, 0.15);
color: #ffffff; color: #ffffff;
@@ -3974,7 +3984,7 @@ body {
.support-security-footer { .support-security-footer {
border-top: 1px solid rgba(255, 255, 255, 0.08); border-top: 1px solid rgba(255, 255, 255, 0.08);
padding-top: 18px; padding-top: 14px;
} }
.security-badges-row { .security-badges-row {
+6 -6
View File
@@ -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=21"> <link rel="stylesheet" href="css/styles.css?v=22">
</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=21"></script> <script src="data/portals.js?v=22"></script>
<script src="js/icons.js?v=21"></script> <script src="js/icons.js?v=22"></script>
<script src="js/auth.js?v=21"></script> <script src="js/auth.js?v=22"></script>
<script src="js/radar.js?v=21"></script> <script src="js/radar.js?v=22"></script>
<script src="js/app.js?v=21"></script> <script src="js/app.js?v=22"></script>
<!-- Service Worker Instant Cache Invalidation --> <!-- Service Worker Instant Cache Invalidation -->
<script> <script>
+11
View File
@@ -2597,10 +2597,21 @@
openSupportModal(); openSupportModal();
}); });
} }
if (el.supportCloseBtn) {
el.supportCloseBtn.addEventListener('click', (e) => {
e.preventDefault();
e.stopPropagation();
closeSupportModal();
});
}
if (el.supportModal) { if (el.supportModal) {
el.supportModal.addEventListener('click', e => { el.supportModal.addEventListener('click', e => {
if (e.target === el.supportModal) closeSupportModal(); if (e.target === el.supportModal) closeSupportModal();
}); });
el.supportModal.addEventListener('cancel', (e) => {
e.preventDefault();
closeSupportModal();
});
} }
// Global listener for camera & portal inspection: NEVER switches views away from radar! // Global listener for camera & portal inspection: NEVER switches views away from radar!
+13 -13
View File
@@ -1,20 +1,20 @@
// Service Worker for FlockRadar Offline Driving & Live Updates // Service Worker for FlockRadar Offline Driving & Live Updates
const CACHE_NAME = 'flockradar-v21'; const CACHE_NAME = 'flockradar-v22';
const ASSETS_TO_CACHE = [ const ASSETS_TO_CACHE = [
'./', './',
'./index.html', './index.html',
'./css/styles.css?v=21', './css/styles.css?v=22',
'./js/icons.js?v=21', './js/icons.js?v=22',
'./js/app.js?v=21', './js/app.js?v=22',
'./js/auth.js?v=21', './js/auth.js?v=22',
'./js/radar.js?v=21', './js/radar.js?v=22',
'./data/portals.js?v=21', './data/portals.js?v=22',
'./favicon.svg?v=21', './favicon.svg?v=22',
'./favicon.ico?v=21', './favicon.ico?v=22',
'./apple-touch-icon.png?v=21', './apple-touch-icon.png?v=22',
'./icon-192.png?v=21', './icon-192.png?v=22',
'./icon-512.png?v=21', './icon-512.png?v=22',
'./og-image.png?v=21', './og-image.png?v=22',
'./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'