From d9b8b80eee365a8133369714f0518ae866f1ce70 Mon Sep 17 00:00:00 2001
From: Brian Smith
Date: Sat, 12 Sep 2026 10:17:01 -0700
Subject: [PATCH] feat(stripe): add /mo recurring subscription for developer
growth support (v17)
---
css/styles.css | 153 ++++++++++++++++++++++++++++++++++++++++++++++++-
index.html | 45 ++++++++++++---
sw.js | 26 ++++-----
3 files changed, 202 insertions(+), 22 deletions(-)
diff --git a/css/styles.css b/css/styles.css
index 285f62a..0e2f5ab 100644
--- a/css/styles.css
+++ b/css/styles.css
@@ -3269,7 +3269,158 @@ body {
font-size: 0.92rem;
line-height: 1.6;
color: var(--text-muted);
- margin-bottom: 24px;
+ margin-bottom: 20px;
+}
+
+/* Monthly Subscription Banner */
+.monthly-sub-banner {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 20px;
+ 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;
+ text-decoration: none;
+ color: inherit;
+ margin-bottom: 22px;
+ 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;
+ overflow: hidden;
+}
+
+.monthly-sub-banner:hover {
+ transform: translateY(-3px);
+ border-color: #10b981;
+ box-shadow: 0 14px 36px 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;
+ background: rgba(16, 185, 129, 0.2);
+ border: 1px solid #10b981;
+ color: #34d399;
+ font-size: 0.7rem;
+ font-weight: 800;
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ padding: 3px 10px;
+ border-radius: 9999px;
+ margin-bottom: 8px;
+}
+
+.pulse-sub-dot {
+ width: 7px;
+ height: 7px;
+ border-radius: 50%;
+ background: #10b981;
+ box-shadow: 0 0 8px #10b981;
+ animation: pulseGps 1.8s infinite;
+}
+
+.monthly-title {
+ font-family: var(--font-heading);
+ font-size: 1.35rem;
+ font-weight: 800;
+ color: #ffffff;
+ margin-bottom: 6px;
+}
+
+.monthly-desc {
+ font-size: 0.82rem;
+ color: #94a3b8;
+ line-height: 1.5;
+ max-width: 460px;
+}
+
+.monthly-sub-right {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-end;
+ gap: 10px;
+ flex-shrink: 0;
+}
+
+.monthly-price-wrap {
+ display: flex;
+ align-items: baseline;
+ gap: 4px;
+}
+
+.monthly-price {
+ font-family: var(--font-heading);
+ font-size: 2.3rem;
+ font-weight: 800;
+ color: #ffffff;
+ line-height: 1;
+}
+
+.monthly-cadence {
+ font-size: 0.85rem;
+ color: #6ee7b7;
+ font-weight: 700;
+}
+
+.btn-subscribe-monthly {
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
+ background: linear-gradient(135deg, #10b981, #059669);
+ color: #ffffff;
+ font-weight: 700;
+ font-size: 0.9rem;
+ padding: 11px 20px;
+ border-radius: 12px;
+ box-shadow: 0 4px 16px rgba(16, 185, 129, 0.4);
+ transition: all 0.2s ease;
+ white-space: nowrap;
+}
+
+.monthly-sub-banner:hover .btn-subscribe-monthly {
+ background: linear-gradient(135deg, #34d399, #10b981);
+ box-shadow: 0 6px 22px rgba(16, 185, 129, 0.6);
+ transform: scale(1.02);
+}
+
+.support-divider {
+ display: flex;
+ align-items: center;
+ text-align: center;
+ margin: 18px 0 20px;
+ color: #64748b;
+ font-size: 0.72rem;
+ font-weight: 700;
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+}
+
+.support-divider::before,
+.support-divider::after {
+ content: '';
+ flex: 1;
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
+}
+
+.support-divider span {
+ padding: 0 14px;
+}
+
+@media (max-width: 680px) {
+ .monthly-sub-banner {
+ flex-direction: column;
+ align-items: stretch;
+ gap: 16px;
+ }
+ .monthly-sub-right {
+ align-items: stretch;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ }
}
.support-tiers-grid {
diff --git a/index.html b/index.html
index 3dc069b..d5c82dc 100644
--- a/index.html
+++ b/index.html
@@ -54,7 +54,7 @@
-
+
@@ -104,7 +104,7 @@
National Directory (1,439)
Directory
-
+
+
+
+
+
+ Recurring Monthly Support
+
+
Monthly Growth Sustainer
+
+ Ongoing monthly support to power server infrastructure, continuous municipal portal scraping, and app development. Cancel anytime with 1 click.
+
+
+
+
+
+
+ OR CHOOSE A ONE-TIME CONTRIBUTION
+
+