From 1221674fd99417ca86eae571202b74d1e5543ce8 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Fri, 10 Apr 2026 14:56:04 -0400 Subject: [PATCH] feat: add spots counter, cancellation policy, and update registration perks - Live spots counter (X of 60 remaining) with progress bar on registration sidebar - Cancellation policy on step 2: 70% refund >1 month, 30% refund >1 week, none <1 week - Updated sidebar perks to reflect actual offering (was "priority booking when tickets open") Co-Authored-By: Claude Opus 4.6 --- index.html | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 9e680ed..3d1e8ed 100644 --- a/index.html +++ b/index.html @@ -1164,6 +1164,57 @@ border-color: var(--accent-purple); } + /* Spots counter */ + .spots-counter { + background: rgba(255, 0, 110, 0.08); + border: 1px solid rgba(255, 0, 110, 0.3); + border-radius: 12px; + padding: 1.25rem 1.5rem; + margin-bottom: 2rem; + text-align: center; + } + + .spots-number { + font-family: 'Space Mono', monospace; + font-size: 1.1rem; + color: var(--text-primary); + margin-bottom: 0.75rem; + } + + .spots-number span:first-child { + font-size: 2rem; + font-weight: 700; + color: var(--accent-magenta); + } + + .spots-label { + font-size: 0.9rem; + color: var(--text-secondary); + } + + .spots-bar { + height: 6px; + background: rgba(255, 0, 110, 0.15); + border-radius: 3px; + overflow: hidden; + margin-bottom: 0.75rem; + } + + .spots-bar-fill { + height: 100%; + background: var(--gradient-3); + border-radius: 3px; + transition: width 1s ease; + width: 0%; + } + + .spots-note { + font-size: 0.8rem; + color: var(--text-secondary); + margin: 0; + font-style: italic; + } + /* Call to Action */ .cta-section { text-align: center; @@ -1718,12 +1769,18 @@
-

Early registration gets you

+
+
-- of 60 spots remaining
+
+

Rooms are assigned first-come, first-served. Popular options fill up fast.

+
+ +

What you get

  • - Priority booking when tickets open + 7 days of sessions, workshops, games and LARPs
  • @@ -1985,6 +2042,10 @@ About food: Food is not included in this payment. Expect approximately €15–20 per person per day. We'll be in touch about food choices and dietary preferences before the event.
+
+ Deposit & cancellation: This is a full payment. If you cancel more than 1 month before the event, you'll receive a 70% refund. If you cancel between 1 month and 1 week before, you'll receive a 30% refund. No refunds within 1 week of the event. +
+
@@ -2073,6 +2134,21 @@ }, 800); }); + // Spots counter — fetch registration count + const MAX_SPOTS = 60; + (async function loadSpots() { + try { + const res = await fetch('/api/stats'); + if (!res.ok) return; + const stats = await res.json(); + const taken = stats.totalRegistrations || 0; + const remaining = Math.max(0, MAX_SPOTS - taken); + document.getElementById('spots-remaining').textContent = remaining; + const pct = Math.min(100, Math.round((taken / MAX_SPOTS) * 100)); + document.getElementById('spots-bar-fill').style.width = pct + '%'; + } catch(e) { /* silently fail */ } + })(); + // Mobile navigation toggle const navToggle = document.querySelector('.nav-toggle'); const navLinks = document.querySelector('.nav-links');