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;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.8), var(--shadow-glow);
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
inset: 0;
margin: auto;
max-height: 88vh;
max-height: 88dvh;
overflow-y: auto !important;
@@ -3642,15 +3641,26 @@ body {
========================================================================== */
.support-dialog {
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));
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);
}
.support-modal-header {
padding: 16px 22px;
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 {
display: inline-flex;
align-items: center;
@@ -3658,20 +3668,20 @@ body {
background: rgba(239, 68, 68, 0.14);
border: 1px solid rgba(239, 68, 68, 0.35);
border-radius: 9999px;
padding: 3px 10px;
font-size: 0.72rem;
padding: 2px 9px;
font-size: 0.68rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #fca5a5;
margin-bottom: 8px;
margin-bottom: 4px;
}
.support-intro-text {
font-size: 0.92rem;
line-height: 1.6;
font-size: 0.84rem;
line-height: 1.45;
color: var(--text-muted);
margin-bottom: 20px;
margin-bottom: 12px;
}
/* Monthly Subscription Banner */
@@ -3679,14 +3689,14 @@ body {
display: flex;
align-items: center;
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));
border: 1.5px solid rgba(16, 185, 129, 0.45);
border-radius: 18px;
padding: 22px 24px;
border-radius: 14px;
padding: 12px 18px;
text-decoration: none;
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);
transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
position: relative;
@@ -3694,30 +3704,30 @@ body {
}
.monthly-sub-banner:hover {
transform: translateY(-3px);
transform: translateY(-2px);
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 {
display: inline-flex;
align-items: center;
gap: 6px;
gap: 5px;
background: rgba(16, 185, 129, 0.2);
border: 1px solid #10b981;
color: #34d399;
font-size: 0.7rem;
font-size: 0.68rem;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 0.06em;
padding: 3px 10px;
padding: 2px 8px;
border-radius: 9999px;
margin-bottom: 8px;
margin-bottom: 4px;
}
.pulse-sub-dot {
width: 7px;
height: 7px;
width: 6px;
height: 6px;
border-radius: 50%;
background: #10b981;
box-shadow: 0 0 8px #10b981;
@@ -3726,17 +3736,17 @@ body {
.monthly-title {
font-family: var(--font-heading);
font-size: 1.35rem;
font-size: 1.15rem;
font-weight: 800;
color: #ffffff;
margin-bottom: 6px;
margin-bottom: 2px;
}
.monthly-desc {
font-size: 0.82rem;
font-size: 0.76rem;
color: #94a3b8;
line-height: 1.5;
max-width: 460px;
line-height: 1.35;
max-width: 440px;
}
.monthly-sub-right {
@@ -3837,8 +3847,8 @@ body {
.support-tiers-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
margin-bottom: 24px;
gap: 12px;
margin-bottom: 16px;
}
@media (max-width: 820px) {
@@ -3856,8 +3866,8 @@ body {
.support-tier-card {
background: rgba(15, 23, 42, 0.65);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 16px;
padding: 20px 16px;
border-radius: 14px;
padding: 15px 14px;
display: flex;
flex-direction: column;
justify-content: space-between;
@@ -3918,18 +3928,18 @@ body {
.tier-amount {
font-family: var(--font-heading);
font-size: 2.2rem;
font-size: 1.9rem;
font-weight: 800;
color: #ffffff;
line-height: 1;
margin-bottom: 12px;
margin-bottom: 6px;
}
.tier-desc {
font-size: 0.78rem;
font-size: 0.75rem;
color: #94a3b8;
line-height: 1.45;
margin-bottom: 18px;
line-height: 1.4;
margin-bottom: 12px;
flex: 1;
}
@@ -3938,10 +3948,10 @@ body {
align-items: center;
justify-content: center;
gap: 6px;
padding: 10px 14px;
border-radius: 10px;
padding: 8px 12px;
border-radius: 9px;
font-weight: 700;
font-size: 0.85rem;
font-size: 0.82rem;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.15);
color: #ffffff;
@@ -3974,7 +3984,7 @@ body {
.support-security-footer {
border-top: 1px solid rgba(255, 255, 255, 0.08);
padding-top: 18px;
padding-top: 14px;
}
.security-badges-row {
+6 -6
View File
@@ -54,7 +54,7 @@
<meta name="apple-mobile-web-app-title" content="FlockRadar">
<!-- Main Stylesheet -->
<link rel="stylesheet" href="css/styles.css?v=21">
<link rel="stylesheet" href="css/styles.css?v=22">
</head>
<body>
@@ -1313,11 +1313,11 @@
<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 -->
<script src="data/portals.js?v=21"></script>
<script src="js/icons.js?v=21"></script>
<script src="js/auth.js?v=21"></script>
<script src="js/radar.js?v=21"></script>
<script src="js/app.js?v=21"></script>
<script src="data/portals.js?v=22"></script>
<script src="js/icons.js?v=22"></script>
<script src="js/auth.js?v=22"></script>
<script src="js/radar.js?v=22"></script>
<script src="js/app.js?v=22"></script>
<!-- Service Worker Instant Cache Invalidation -->
<script>
+11
View File
@@ -2597,10 +2597,21 @@
openSupportModal();
});
}
if (el.supportCloseBtn) {
el.supportCloseBtn.addEventListener('click', (e) => {
e.preventDefault();
e.stopPropagation();
closeSupportModal();
});
}
if (el.supportModal) {
el.supportModal.addEventListener('click', e => {
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!
+13 -13
View File
@@ -1,20 +1,20 @@
// Service Worker for FlockRadar Offline Driving & Live Updates
const CACHE_NAME = 'flockradar-v21';
const CACHE_NAME = 'flockradar-v22';
const ASSETS_TO_CACHE = [
'./',
'./index.html',
'./css/styles.css?v=21',
'./js/icons.js?v=21',
'./js/app.js?v=21',
'./js/auth.js?v=21',
'./js/radar.js?v=21',
'./data/portals.js?v=21',
'./favicon.svg?v=21',
'./favicon.ico?v=21',
'./apple-touch-icon.png?v=21',
'./icon-192.png?v=21',
'./icon-512.png?v=21',
'./og-image.png?v=21',
'./css/styles.css?v=22',
'./js/icons.js?v=22',
'./js/app.js?v=22',
'./js/auth.js?v=22',
'./js/radar.js?v=22',
'./data/portals.js?v=22',
'./favicon.svg?v=22',
'./favicon.ico?v=22',
'./apple-touch-icon.png?v=22',
'./icon-192.png?v=22',
'./icon-512.png?v=22',
'./og-image.png?v=22',
'./assets/img/logo.svg',
'./assets/img/flock_pole_cam_palmdale.jpg',
'./manifest.json'