feat: replace CTA with registration focus, expand footer, add newsletter & sponsorships

- Replace bottom-of-page waitlist form with registration CTA linking to /apply.html
- Add newsletter signup bar (email-only, subscribes to Listmonk) for visitors not ready to register
- Expand footer to 3-column grid (Event, Navigate, Community) with sponsorships link
- Create sponsorship package (VOTC26-Sponsorship-Package.md) and web page (sponsorships.html)
- Add /api/newsletter endpoint for lightweight mailing list signup
- Update nav link from "Get involved" to "Register", community partners link updated
- Fix listmonk.js to not overwrite existing subscriber names with empty strings
- Update apply.html and payment-return.html footers for consistency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-03-09 14:29:25 -07:00
parent 9fdfb29893
commit 3f20e2d9c3
10 changed files with 1011 additions and 104 deletions

View File

@ -0,0 +1,290 @@
# Valley of the Commons 2026
## Sponsorship Package
---
# A Four-Week Pop-Up Village on Common Ground
**August 24 September 20, 2026 | Commons Hub, Austrian Alps**
---
## Executive Summary
**Valley of the Commons (VotC)** is a four-week pop-up village in the Austrian Alps where commons practitioners, governance innovators, housing co-op builders, and cosmo-localism researchers come together to prototype life beyond extractive systems. Rooted at Commons Hub in Höllental, this gathering is a living commons — shared in work and study, in making and care, in governance and everyday life.
### At a Glance
| | |
|---|---|
| **Dates** | August 24 September 20, 2026 |
| **Location** | Commons Hub, Höllental, Austrian Alps |
| **Expected Attendance** | 60100 participants |
| **Format** | Four-week structured pop-up village |
| **Organizers** | Commons Hub |
| **Pass Value** | €300/week (€1,200 for full 4 weeks) |
---
## Why Sponsor VotC 2026?
### 1. Reach Engaged Practitioners & Thought Leaders
VotC attracts a unique audience committed to building alternatives:
- **Commons Practitioners** — Contributors to cosmo-local production, mutual aid networks, cooperative economies
- **Governance Innovators** — DAO architects, participatory governance designers, cooperative founders
- **Housing Co-op Builders** — Architects, community land trust leaders, co-housing pioneers
- **Academic Researchers** — PhD students, professors, and policy experts on commons, degrowth, and post-capitalism
- **Cosmo-localism Practitioners** — Open-source hardware designers, fab lab operators, distributed manufacturing advocates
### 2. Association with Tangible Impact
VotC isn't a conference — it's a practice-oriented community building toward permanence. Outcomes include:
- **Governance charters** and cooperative legal structures
- **Housing cluster plans** for the valley
- **Open value accounting** frameworks tested in practice
- **Cosmo-local production** prototypes and economic models
### 3. Values-Aligned Audience
VotC participants are committed builders who:
- Lead projects with real traction in cooperative economics, regenerative governance, and housing
- Make decisions for their organizations and communities
- Influence discourse in commons, cooperative, and network society movements
- Seek genuine partnerships over marketing placements
### 4. Deep Engagement, Not Drive-By Exposure
Four weeks of co-living creates relationships that last. Sponsors become part of the community fabric, not backdrop.
---
## Audience Profile
### Who Attends VotC?
```
60100 participants from 15+ countries
```
| Segment | % | Description |
|---------|---|-------------|
| **Commons & Co-op Builders** | 30% | Cooperative founders, community organizers, commons practitioners |
| **Researchers & Academics** | 25% | PhD students, professors, think tank members |
| **Governance & Legal Designers** | 20% | DAO contributors, participatory governance architects, co-op lawyers |
| **Makers & Technologists** | 15% | Fab lab operators, open-source hardware designers, cosmo-local producers |
| **Investors & Funders** | 10% | Impact investors, grant makers, commons-aligned foundations |
### Attendee Interests
- Commons theory and practice
- Cosmo-local production and open value accounting
- Housing co-ops and co-living design
- Horizontal governance and funding mechanisms
- Degrowth and post-capitalism
- Community currencies and mutual credit
- Network societies and intentional communities
- Regenerative land use and stewardship
### Geographic Distribution
- **Europe:** 65%
- **North America:** 15%
- **Global South:** 10%
- **Asia-Pacific:** 10%
---
## Sponsorship Tiers
### MYCELIUM PARTNER | €10,000
*Become part of the Valley ecosystem*
**Recognition & Visibility**
- Logo placement on website hero section and all pages
- Featured sponsor section on event materials and signage
- Acknowledgment at opening and closing ceremonies
- Social media recognition across all VotC channels
- Logo on participant materials and signage
**Engagement**
- **4 complimentary full passes** (4 weeks each — €4,800 value)
- Dedicated 60-minute sponsored session slot
- Private dinner with organizers and community leaders
- First access to participant list (with consent) for networking
**Content & Media**
- Sponsor spotlight in pre-event communications
- Feature in post-event summary and report
- Rights to use "Official Partner of VotC 2026" in marketing
---
### SPORE PARTNER | €5,000
*Plant seeds for regenerative futures*
**Recognition & Visibility**
- Logo on website sponsor section
- Logo on event signage and materials
- Social media recognition
- Acknowledgment at ceremonies
**Engagement**
- **2 complimentary full passes** (€2,400 value)
- 30-minute workshop or presentation slot
- Access to participant introductions (with consent)
**Content & Media**
- Mention in event communications
- Inclusion in post-event summary
---
### SYMBIONT SUPPORTER | €2,500
*Support commons-building infrastructure*
**Recognition & Visibility**
- Logo on website sponsor section
- Logo on event signage
- Social media mention
**Engagement**
- **1 complimentary full pass** (€1,200 value)
- Priority registration access
**Content & Media**
- Mention in event newsletter
---
### FRIEND OF THE COMMONS | €1,000
*Show solidarity with the movement*
**Recognition & Visibility**
- Name/logo listed on website supporters section
- Social media thank-you post
**Engagement**
- **1 discounted pass** (50% off — €600 value)
---
## Alternative Partnership Opportunities
Beyond financial sponsorship, we welcome in-kind contributions and creative partnerships:
### Theme / Week Sponsorship | Custom
Sponsor a specific themed week (e.g., "Cosmo-local Production Week" or "Governance & Funding Week") with naming rights and session curation involvement.
### Accommodation Sponsorship | ~€3,0008,000
Cover accommodation costs for participants who need financial support, enabling broader access across the four weeks.
### Meal Sponsorship | ~€2,0006,000
Sponsor shared meals for a week or the entire event — your name becomes synonymous with nourishment and community care.
### Documentation Sponsorship | ~€2,000
Support professional documentation (photography, videography, written summaries) with credit and content rights.
### Travel Grants | Custom
Fund travel scholarships for participants from underrepresented regions or backgrounds.
### Technology Partnership | In-Kind
Provide tools, platforms, or infrastructure (collaboration tools, fab lab equipment, etc.) in exchange for recognition.
---
## What Makes VotC Different?
### It's Not a Conference — It's a Village
Unlike traditional events, VotC is:
- **Practice-oriented** — Outcomes feed into real governance charters, housing plans, and economic models
- **Deeply relational** — Four weeks of co-living creates bonds that last
- **Rooted in place** — Höllental isn't just a venue; it's a site for permanence
- **Non-extractive** — Built on commons principles, organized by Commons Hub
### Participants Contribute, Not Just Consume
Everyone shares in the work of village life — cooking, cleaning, building, documenting. This creates relationships of mutual care and shared responsibility.
### Building Toward Permanence
This popup isn't a simulation. It is a real community taking steps toward valley transformation: exploring housing clusters, cooperative legal structures, and economic models that can anchor a permanent settlement.
---
## Programme Structure
| Week | Theme | Dates |
|------|-------|-------|
| **Week 1** | Return of the Commons | Aug 2430 |
| **Week 2** | Cosmo-local Production & Open Value Accounting | Aug 31Sep 6 |
| **Week 3** | Future Living | Sep 713 |
| **Week 4** | Governance & Funding Models | Sep 1420 |
**Daily rhythm:** Mornings are structured learning paths. Afternoons host workshops, field visits, and working groups. Evenings are for shared life, reflection, and communal time. Weekends remain open for exploration and connection.
---
## Event Budget Overview
In the spirit of transparency:
| Category | Allocation |
|----------|------------|
| Venue & Infrastructure | 35% |
| Food & Catering | 30% |
| Programme & Facilitators | 15% |
| Documentation & Media | 10% |
| Accessibility & Support | 10% |
---
## Contact & Next Steps
We'd love to discuss how a partnership could work for your organization.
**Primary Contact:**
- **Email:** team@valleyofthecommons.com
**Event Website:**
- https://valleyofthecommons.com
**Community:**
- Telegram: https://t.me/valleyofthecommons
**Organizer:**
- Commons Hub: https://www.commons-hub.at
---
## Key Dates
| Date | Milestone |
|------|-----------|
| **Now** | Sponsorship discussions open |
| **May 31, 2026** | Early bird registration closes |
| **July 31, 2026** | Regular registration closes |
| **August 1, 2026** | Final sponsor deliverables due |
| **Aug 24 Sep 20, 2026** | Valley of the Commons 2026 |
| **October 2026** | Post-event report and media shared |
---
## Closing Note
VotC isn't seeking sponsors who want logo placement in exchange for attention. We're seeking **partners** who share our vision of commons-based, cooperative, regenerative futures.
If your organization is building toward a world where value flows differently, where communities hold land and resources in trust, and where governance serves human and ecological flourishing — we want to collaborate.
Join us in the Austrian Alps for four weeks that might just change how you see what's possible.
---
*This sponsorship package was prepared by Commons Hub. Feel free to share this document with potential partners who might be aligned.*
**Last updated:** March 2026

View File

@ -28,7 +28,7 @@ async function addToListmonk(email, name, attribs = {}) {
// Check if subscriber exists
const existing = await client.query(
'SELECT id, attribs FROM subscribers WHERE email = $1',
'SELECT id, name, attribs FROM subscribers WHERE email = $1',
[email]
);
@ -38,9 +38,11 @@ async function addToListmonk(email, name, attribs = {}) {
subscriberId = existing.rows[0].id;
const existingAttribs = existing.rows[0].attribs || {};
const merged = { ...existingAttribs, ...mergeAttribs };
// Only update name if a non-empty name is provided
const updateName = name || existing.rows[0].name || '';
await client.query(
'UPDATE subscribers SET name = $1, attribs = $2, updated_at = NOW() WHERE id = $3',
[name, JSON.stringify(merged), subscriberId]
[updateName, JSON.stringify(merged), subscriberId]
);
console.log(`[Listmonk] Updated existing subscriber: ${email} (ID: ${subscriberId})`);
} else {

38
api/newsletter.js Normal file
View File

@ -0,0 +1,38 @@
// Newsletter signup endpoint — adds email to Listmonk mailing list
const { addToListmonk } = require('./listmonk');
module.exports = async function handler(req, res) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
if (req.method === 'OPTIONS') {
return res.status(200).end();
}
if (req.method !== 'POST') {
return res.status(405).json({ error: 'Method not allowed' });
}
try {
const { email } = req.body;
if (!email || !email.includes('@')) {
return res.status(400).json({ error: 'Valid email is required' });
}
const emailLower = email.toLowerCase().trim();
await addToListmonk(emailLower, '', {
source: 'newsletter_signup',
});
return res.status(200).json({
success: true,
message: 'Successfully subscribed!'
});
} catch (error) {
console.error('Newsletter signup error:', error);
return res.status(500).json({ error: 'Failed to subscribe. Please try again later.' });
}
};

View File

@ -706,7 +706,7 @@
</div>
<footer class="footer">
<p>Valley of the Commons · <a href="https://www.commons-hub.at/">Commons Hub</a> · <a href="mailto:team@valleyofthecommons.com">team@valleyofthecommons.com</a> · <a href="privacy.html">Privacy Policy</a></p>
<p>© 2026 Commons Hub · <a href="mailto:team@valleyofthecommons.com">team@valleyofthecommons.com</a> · <a href="/privacy.html">Privacy Policy</a> · <a href="/sponsorships.html">Sponsorships</a></p>
</footer>
<script>

View File

@ -10,7 +10,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Urbanist:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="styles.css">
<script src="waitlist.js" defer></script>
<script src="main.js" defer></script>
<script src="speakers.js" defer></script>
<script src="community-partners.js" defer></script>
</head>
@ -51,7 +51,7 @@
<span class="nav-speakers-short">Collaborators</span>
</a>
<a href="#explore">Explore the Valley</a>
<a href="#waitlist" class="nav-get-involved">Get involved</a>
<a href="#register" class="nav-get-involved">Register</a>
<a href="game.html" target="_blank" rel="noopener noreferrer" class="nav-rabbit">🐰</a>
<a href="/apply.html" class="nav-cta-button">APPLY NOW</a>
</nav>
@ -203,7 +203,7 @@
<!-- Partners will be dynamically loaded here -->
</div>
<p style="text-align: center; margin-top: var(--spacing-md);">
<a href="#waitlist" class="explore-link">Get involved</a>
<a href="#register" class="explore-link">Register</a>
</p>
</section>
@ -215,49 +215,30 @@
</div>
</section>
<!-- Call to Action Section -->
<section id="waitlist" class="section cta-section">
<!-- Register CTA Section -->
<section id="register" class="section cta-section">
<div class="cta-content">
<h2>Get involved</h2>
<p>Join as a partner, theme curator, or sponsor.</p>
<!-- Waitlist Form -->
<form id="waitlist-form" class="waitlist-form">
<div class="form-group">
<input
type="email"
id="waitlist-email"
name="email"
placeholder="Enter your email"
required
aria-label="Email address"
>
</div>
<div class="form-group">
<input
type="text"
id="waitlist-name"
name="name"
placeholder="Your name"
required
aria-label="Your name"
>
</div>
<div class="form-group">
<textarea
id="waitlist-involvement"
name="involvement"
placeholder="Describe your desired involvement."
required
aria-label="Describe your desired involvement"
rows="4"
></textarea>
</div>
<button type="submit" class="waitlist-submit">Submit</button>
<div id="waitlist-message" class="waitlist-message" role="status" aria-live="polite"></div>
</form>
<h2>Join Us in the Valley</h2>
<p>Four weeks of commons-building in the Austrian Alps. Live, learn, and build together with practitioners, researchers, and community builders shaping life beyond extractive systems.</p>
<div class="cta-details">
<span>Aug 24 Sep 20, 2026</span>
<span>Höllental, Austrian Alps</span>
<span>€300 / week</span>
</div>
<a href="/apply.html" class="register-button">REGISTER NOW</a>
<p class="cta-note">You'll be added to our mailing list to stay updated.</p>
</div>
</section>
<p class="cta-final">Together, we can turn vision into reality.</p>
<!-- Newsletter Signup -->
<section class="newsletter-section">
<div class="newsletter-content">
<p class="newsletter-heading">Not ready to register? Stay in the loop.</p>
<form id="newsletter-form" class="newsletter-form">
<input type="email" id="newsletter-email" name="email" placeholder="your@email.com" required aria-label="Email address">
<button type="submit">Subscribe</button>
</form>
<div id="newsletter-message" class="newsletter-message" role="status" aria-live="polite"></div>
</div>
</section>
</main>
@ -265,7 +246,36 @@
<!-- Footer -->
<footer class="footer">
<div class="footer-container">
<p>&copy; 2026 Commons Hub. <a href="https://www.commons-hub.at" target="_blank" rel="noopener noreferrer">commons-hub.at</a> · <a href="mailto:team@valleyofthecommons.com">team@valleyofthecommons.com</a></p>
<div class="footer-grid">
<div class="footer-column">
<h4>Event</h4>
<ul>
<li>Aug 24 Sep 20, 2026</li>
<li>Höllental, Austrian Alps</li>
<li>€300 / week</li>
</ul>
</div>
<div class="footer-column">
<h4>Navigate</h4>
<ul>
<li><a href="#schedule">Schedule</a></li>
<li><a href="#collaborators">Collaborators</a></li>
<li><a href="#explore">Explore the Valley</a></li>
<li><a href="#register">Register</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Community</h4>
<ul>
<li><a href="https://t.me/valleyofthecommons" target="_blank" rel="noopener noreferrer">Telegram</a></li>
<li><a href="https://www.commons-hub.at" target="_blank" rel="noopener noreferrer">Commons Hub</a></li>
<li><a href="/sponsorships.html">Sponsorships</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2026 Commons Hub · <a href="mailto:team@valleyofthecommons.com">team@valleyofthecommons.com</a> · <a href="/privacy.html">Privacy Policy</a></p>
</div>
</div>
</footer>
</body>

136
main.js Normal file
View File

@ -0,0 +1,136 @@
// Smooth scroll to section, ensuring title is visible
function scrollToSection(sectionId, e) {
const section = document.getElementById(sectionId);
if (!section) return;
e.preventDefault();
// Get header height for offset
const header = document.querySelector('.header');
const headerHeight = header ? header.offsetHeight : 0;
const padding = 40; // Extra padding to ensure title is fully visible
// Calculate position to show section with title visible
const sectionRect = section.getBoundingClientRect();
const sectionTop = sectionRect.top + window.pageYOffset;
// Scroll to position that shows the section title with proper spacing
const scrollPosition = sectionTop - headerHeight - padding;
window.scrollTo({
top: Math.max(0, scrollPosition),
behavior: 'smooth'
});
}
// Loading screen handler
function initLoadingScreen() {
const loadingScreen = document.getElementById('loading-screen');
if (!loadingScreen) return;
let isHiding = false;
function hideLoadingScreen() {
if (isHiding) return;
isHiding = true;
loadingScreen.classList.add('hidden');
setTimeout(function() {
loadingScreen.remove();
}, 1200);
window.removeEventListener('scroll', onScroll);
window.removeEventListener('wheel', onScroll);
window.removeEventListener('touchmove', onScroll);
}
function onScroll() {
hideLoadingScreen();
}
const skipButton = document.getElementById('skip-loading');
if (skipButton) {
skipButton.addEventListener('click', hideLoadingScreen);
}
window.addEventListener('scroll', onScroll, { passive: true });
window.addEventListener('wheel', onScroll, { passive: true });
window.addEventListener('touchmove', onScroll, { passive: true });
window.addEventListener('load', function() {
setTimeout(function() {
hideLoadingScreen();
}, 6500);
});
}
// Newsletter form submission handler
function initNewsletterForm() {
const form = document.getElementById('newsletter-form');
if (!form) return;
const emailInput = document.getElementById('newsletter-email');
const messageDiv = document.getElementById('newsletter-message');
const submitButton = form.querySelector('button[type="submit"]');
form.addEventListener('submit', async function(e) {
e.preventDefault();
submitButton.disabled = true;
submitButton.textContent = 'Subscribing...';
messageDiv.textContent = '';
messageDiv.className = 'newsletter-message';
const email = emailInput.value.trim();
if (!email || !email.includes('@')) {
showMessage('Please enter a valid email address.', 'error');
submitButton.disabled = false;
submitButton.textContent = 'Subscribe';
return;
}
try {
const response = await fetch('/api/newsletter', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email }),
});
const data = await response.json();
if (response.ok && data.success) {
showMessage('You\'re subscribed! We\'ll keep you updated.', 'success');
form.reset();
} else {
showMessage(data.error || 'Something went wrong. Please try again.', 'error');
}
} catch (error) {
console.error('Error subscribing:', error);
showMessage('Network error. Please try again.', 'error');
} finally {
submitButton.disabled = false;
submitButton.textContent = 'Subscribe';
}
});
function showMessage(message, type) {
messageDiv.textContent = message;
messageDiv.className = `newsletter-message ${type}`;
}
}
document.addEventListener('DOMContentLoaded', function() {
initLoadingScreen();
// Set up scroll handlers for anchor links
const registerLinks = document.querySelectorAll('a[href="#register"]');
registerLinks.forEach(link => {
link.addEventListener('click', (e) => scrollToSection('register', e));
});
const scheduleLinks = document.querySelectorAll('a[href="#schedule"]');
scheduleLinks.forEach(link => {
link.addEventListener('click', (e) => scrollToSection('schedule', e));
});
initNewsletterForm();
});

View File

@ -162,7 +162,7 @@
</div>
<footer class="footer">
<p>Valley of the Commons &middot; <a href="https://www.commons-hub.at/">Commons Hub</a> &middot; <a href="mailto:team@valleyofthecommons.com">team@valleyofthecommons.com</a> &middot; <a href="privacy.html">Privacy Policy</a></p>
<p>&copy; 2026 Commons Hub &middot; <a href="mailto:team@valleyofthecommons.com">team@valleyofthecommons.com</a> &middot; <a href="/privacy.html">Privacy Policy</a> &middot; <a href="/sponsorships.html">Sponsorships</a></p>
</footer>
<script>

View File

@ -21,6 +21,7 @@ app.use((req, res, next) => {
// API routes - wrap Vercel serverless functions
const waitlistHandler = require('./api/waitlist-db');
const newsletterHandler = require('./api/newsletter');
const applicationHandler = require('./api/application');
const gameChatHandler = require('./api/game-chat');
const shareToGithubHandler = require('./api/share-to-github');
@ -39,6 +40,7 @@ const vercelToExpress = (handler) => async (req, res) => {
};
app.all('/api/waitlist', vercelToExpress(waitlistHandler));
app.all('/api/newsletter', vercelToExpress(newsletterHandler));
app.all('/api/application', vercelToExpress(applicationHandler));
app.all('/api/game-chat', vercelToExpress(gameChatHandler));
app.all('/api/share-to-github', vercelToExpress(shareToGithubHandler));

330
sponsorships.html Normal file
View File

@ -0,0 +1,330 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/svg+xml" href="icon.svg">
<link rel="alternate icon" href="icon.svg">
<title>Sponsorships - Valley of the Commons</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Urbanist:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap" rel="stylesheet">
<style>
:root {
--color-text: #1a1a1a;
--color-text-light: #666;
--color-bg: #ffffff;
--color-accent: #000;
--color-link: #000;
--font-sans: 'Urbanist', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
--spacing-xs: 0.5rem;
--spacing-sm: 1rem;
--spacing-md: 2rem;
--spacing-lg: 4rem;
--max-width: 900px;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: var(--font-sans);
color: var(--color-text);
background: var(--color-bg);
line-height: 1.6;
font-size: 18px;
}
.header {
background: var(--color-bg);
border-bottom: 1px solid #e5e5e5;
padding: 1rem 0;
}
.header-container {
max-width: var(--max-width);
margin: 0 auto;
padding: 0 var(--spacing-md);
display: flex;
justify-content: space-between;
align-items: center;
}
.header a {
color: var(--color-link);
text-decoration: none;
text-transform: uppercase;
font-size: 14px;
font-weight: 500;
letter-spacing: 0.05em;
}
.header a:hover { text-decoration: underline; }
.content {
max-width: var(--max-width);
margin: 0 auto;
padding: var(--spacing-lg) var(--spacing-md);
}
h1 {
font-size: clamp(2rem, 4vw, 3rem);
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: var(--spacing-xs);
}
.subtitle {
font-size: 1.2rem;
color: var(--color-text-light);
margin-bottom: var(--spacing-lg);
}
.intro {
font-size: 1.1rem;
margin-bottom: var(--spacing-lg);
max-width: 700px;
}
.tiers {
display: grid;
gap: var(--spacing-md);
margin-bottom: var(--spacing-lg);
}
.tier {
border: 2px solid #e5e5e5;
padding: var(--spacing-md);
transition: border-color 0.2s;
}
.tier:hover {
border-color: var(--color-accent);
}
.tier-header {
display: flex;
justify-content: space-between;
align-items: baseline;
margin-bottom: var(--spacing-sm);
flex-wrap: wrap;
gap: var(--spacing-xs);
}
.tier-name {
font-size: 1.3rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.tier-price {
font-size: 1.5rem;
font-weight: 700;
}
.tier-tagline {
font-style: italic;
color: var(--color-text-light);
margin-bottom: var(--spacing-sm);
}
.tier ul {
list-style: none;
padding: 0;
}
.tier ul li {
padding: 0.3rem 0;
padding-left: 1.5rem;
position: relative;
font-size: 1rem;
}
.tier ul li::before {
content: "—";
position: absolute;
left: 0;
color: var(--color-text-light);
}
.tier .highlight {
font-weight: 600;
}
h2 {
font-size: 1.5rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: var(--spacing-sm);
}
.alternatives {
margin-bottom: var(--spacing-lg);
}
.alternatives ul {
list-style: none;
padding: 0;
}
.alternatives ul li {
padding: 0.5rem 0;
border-bottom: 1px solid #f0f0f0;
font-size: 1rem;
}
.alternatives ul li strong {
display: inline;
}
.cta-block {
background: var(--color-accent);
color: var(--color-bg);
padding: var(--spacing-lg);
text-align: center;
margin-bottom: var(--spacing-lg);
}
.cta-block h2 {
color: var(--color-bg);
margin-bottom: var(--spacing-sm);
}
.cta-block p {
margin-bottom: var(--spacing-sm);
font-size: 1.1rem;
}
.cta-block a {
color: var(--color-bg);
text-decoration: underline;
font-weight: 600;
font-size: 1.2rem;
}
.cta-block a:hover {
text-decoration: none;
}
.footer {
border-top: 1px solid #e5e5e5;
padding: var(--spacing-md) 0;
text-align: center;
color: var(--color-text-light);
font-size: 14px;
}
.footer a {
color: var(--color-link);
text-decoration: none;
}
.footer a:hover { text-decoration: underline; }
@media (max-width: 600px) {
.content { padding: var(--spacing-md); }
.tier { padding: var(--spacing-sm); }
.tier-header { flex-direction: column; }
.cta-block { padding: var(--spacing-md); }
}
</style>
</head>
<body>
<header class="header">
<div class="header-container">
<a href="/">Valley of the Commons</a>
<a href="/apply.html">Apply Now</a>
</div>
</header>
<div class="content">
<h1>Sponsorships</h1>
<p class="subtitle">Aug 24 Sep 20, 2026 · Höllental, Austrian Alps</p>
<p class="intro">Valley of the Commons is a four-week pop-up village where commons practitioners, governance innovators, and housing co-op builders come together to prototype life beyond extractive systems. We're seeking partners who share this vision.</p>
<div class="tiers">
<div class="tier">
<div class="tier-header">
<span class="tier-name">Mycelium Partner</span>
<span class="tier-price">€10,000</span>
</div>
<p class="tier-tagline">Become part of the Valley ecosystem</p>
<ul>
<li><span class="highlight">4 complimentary full passes</span> (4 weeks each — €4,800 value)</li>
<li>60-minute sponsored session slot</li>
<li>Private dinner with organizers and community leaders</li>
<li>Logo on hero section, all pages, and signage</li>
<li>Featured in opening and closing ceremonies</li>
<li>Pre &amp; post-event spotlight</li>
</ul>
</div>
<div class="tier">
<div class="tier-header">
<span class="tier-name">Spore Partner</span>
<span class="tier-price">€5,000</span>
</div>
<p class="tier-tagline">Plant seeds for regenerative futures</p>
<ul>
<li><span class="highlight">2 complimentary full passes</span> (€2,400 value)</li>
<li>30-minute workshop slot</li>
<li>Logo on sponsor section and signage</li>
<li>Social media recognition</li>
</ul>
</div>
<div class="tier">
<div class="tier-header">
<span class="tier-name">Symbiont Supporter</span>
<span class="tier-price">€2,500</span>
</div>
<p class="tier-tagline">Support commons-building infrastructure</p>
<ul>
<li><span class="highlight">1 complimentary full pass</span> (€1,200 value)</li>
<li>Priority registration</li>
<li>Logo on sponsor section</li>
<li>Newsletter mention</li>
</ul>
</div>
<div class="tier">
<div class="tier-header">
<span class="tier-name">Friend of the Commons</span>
<span class="tier-price">€1,000</span>
</div>
<p class="tier-tagline">Show solidarity with the movement</p>
<ul>
<li><span class="highlight">1 discounted pass</span> (50% off — €600 value)</li>
<li>Name on supporters section</li>
<li>Social media thank-you</li>
</ul>
</div>
</div>
<div class="alternatives">
<h2>Alternative Partnerships</h2>
<ul>
<li><strong>Theme / Week Sponsorship</strong> — Naming rights and session curation for a themed week</li>
<li><strong>Accommodation Sponsorship</strong> (€3,0008,000) — Cover housing for participants who need support</li>
<li><strong>Meal Sponsorship</strong> (€2,0006,000) — Sponsor shared meals for a week or the full event</li>
<li><strong>Documentation Sponsorship</strong> (~€2,000) — Support professional photography, videography, and summaries</li>
<li><strong>Travel Grants</strong> — Fund travel scholarships for underrepresented participants</li>
<li><strong>Technology Partnership</strong> — Provide tools, platforms, or fab lab equipment in-kind</li>
</ul>
</div>
<div class="cta-block">
<h2>Let's Talk</h2>
<p>We're seeking partners, not advertisers. If your organization is building toward commons-based, cooperative, regenerative futures — we want to collaborate.</p>
<a href="mailto:team@valleyofthecommons.com">team@valleyofthecommons.com</a>
</div>
</div>
<footer class="footer">
<p>&copy; 2026 Commons Hub · <a href="mailto:team@valleyofthecommons.com">team@valleyofthecommons.com</a> · <a href="/privacy.html">Privacy Policy</a> · <a href="/">Home</a></p>
</footer>
</body>
</html>

View File

@ -166,8 +166,8 @@ html {
scroll-behavior: smooth;
}
/* Ensure waitlist section has proper spacing for centering */
#waitlist {
/* Ensure register section has proper spacing for centering */
#register {
scroll-margin-top: 0;
scroll-margin-bottom: 0;
}
@ -1000,72 +1000,115 @@ body {
display: block;
}
/* Waitlist Form */
.waitlist-form {
max-width: 500px;
margin: var(--spacing-md) auto var(--spacing-md);
padding: 0;
/* Register CTA */
.cta-details {
display: flex;
justify-content: center;
gap: var(--spacing-md);
margin: var(--spacing-md) 0;
font-size: 1.1rem;
font-weight: 500;
flex-wrap: wrap;
}
.form-group {
margin-bottom: var(--spacing-sm);
.cta-details span {
white-space: nowrap;
}
.waitlist-form input[type="email"],
.waitlist-form input[type="text"],
.waitlist-form textarea {
width: 100%;
padding: var(--spacing-sm) var(--spacing-md);
font-size: 1rem;
border: 2px solid rgba(255, 255, 255, 0.3);
background: rgba(255, 255, 255, 0.1);
color: var(--color-bg);
border-radius: 0;
.register-button {
display: inline-block;
background: var(--color-bg);
color: var(--color-accent) !important;
padding: var(--spacing-sm) var(--spacing-lg);
text-decoration: none !important;
text-transform: uppercase;
font-weight: 700;
letter-spacing: 0.1em;
font-size: 1.2rem;
border: 2px solid var(--color-bg);
transition: all 0.2s ease;
margin: var(--spacing-sm) 0;
}
.register-button:hover {
background: transparent;
color: var(--color-bg) !important;
transform: translateY(-2px);
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
}
.cta-note {
font-size: 0.9rem !important;
opacity: 0.8;
margin-top: var(--spacing-sm) !important;
}
/* Newsletter Signup */
.newsletter-section {
background: #f8f8f8;
padding: var(--spacing-md) var(--spacing-md);
text-align: center;
}
.newsletter-content {
max-width: var(--max-width);
margin: 0 auto;
}
.newsletter-heading {
font-size: 1.1rem;
margin-bottom: var(--spacing-sm);
color: var(--color-text);
}
.newsletter-form {
display: flex;
justify-content: center;
gap: var(--spacing-xs);
max-width: 460px;
margin: 0 auto;
}
.newsletter-form input[type="email"] {
flex: 1;
padding: var(--spacing-xs) var(--spacing-sm);
font-size: 1rem;
border: 2px solid #e5e5e5;
background: var(--color-bg);
color: var(--color-text);
font-family: var(--font-sans);
resize: vertical;
}
.waitlist-form input[type="email"]:focus,
.waitlist-form input[type="text"]:focus,
.waitlist-form textarea:focus {
.newsletter-form input[type="email"]:focus {
outline: none;
border-color: var(--color-bg);
background: rgba(255, 255, 255, 0.2);
border-color: var(--color-accent);
}
.waitlist-form input::placeholder,
.waitlist-form textarea::placeholder {
color: rgba(255, 255, 255, 0.7);
}
.waitlist-submit {
width: 100%;
padding: var(--spacing-sm) var(--spacing-md);
.newsletter-form button {
padding: var(--spacing-xs) var(--spacing-md);
font-size: 1rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.1em;
background: var(--color-bg);
color: var(--color-accent);
border: 2px solid var(--color-bg);
letter-spacing: 0.05em;
background: var(--color-accent);
color: var(--color-bg);
border: 2px solid var(--color-accent);
cursor: pointer;
transition: all 0.2s ease;
font-family: var(--font-sans);
margin-top: var(--spacing-sm);
white-space: nowrap;
}
.waitlist-submit:hover:not(:disabled) {
background: transparent;
color: var(--color-bg);
.newsletter-form button:hover:not(:disabled) {
background: rgba(0, 0, 0, 0.8);
}
.waitlist-submit:disabled {
.newsletter-form button:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.waitlist-message {
.newsletter-message {
margin-top: var(--spacing-xs);
padding: var(--spacing-xs) var(--spacing-sm);
text-align: center;
@ -1073,22 +1116,18 @@ body {
min-height: 1.2rem;
}
.waitlist-message.success {
color: #90EE90;
background: rgba(144, 238, 144, 0.1);
border: 1px solid rgba(144, 238, 144, 0.3);
.newsletter-message.success {
color: #2d5016;
}
.waitlist-message.error {
color: #FFB6C1;
background: rgba(255, 182, 193, 0.1);
border: 1px solid rgba(255, 182, 193, 0.3);
.newsletter-message.error {
color: #c53030;
}
/* Footer */
.footer {
border-top: 1px solid #e5e5e5;
padding: var(--spacing-md) 0;
padding: var(--spacing-lg) 0 var(--spacing-md);
margin-top: 0;
}
@ -1096,17 +1135,59 @@ body {
max-width: var(--max-width);
margin: 0 auto;
padding: 0 var(--spacing-md);
text-align: center;
color: var(--color-text-light);
font-size: 14px;
}
.footer-container a {
.footer-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: var(--spacing-lg);
margin-bottom: var(--spacing-md);
}
.footer-column h4 {
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.1em;
margin-bottom: var(--spacing-sm);
color: var(--color-text);
}
.footer-column ul {
list-style: none;
padding: 0;
margin: 0;
}
.footer-column ul li {
margin-bottom: 0.4rem;
font-size: 0.9rem;
line-height: 1.5;
}
.footer-column ul li a {
color: var(--color-link);
text-decoration: none;
}
.footer-container a:hover {
.footer-column ul li a:hover {
text-decoration: underline;
}
.footer-bottom {
border-top: 1px solid #e5e5e5;
padding-top: var(--spacing-md);
text-align: center;
}
.footer-bottom a {
color: var(--color-link);
text-decoration: none;
}
.footer-bottom a:hover {
text-decoration: underline;
}
@ -1255,6 +1336,24 @@ body {
padding: var(--spacing-xs) var(--spacing-sm);
font-size: 12px;
}
.cta-details {
flex-direction: column;
gap: var(--spacing-xs);
}
.footer-grid {
grid-template-columns: 1fr;
gap: var(--spacing-md);
}
.newsletter-form {
flex-direction: column;
}
.newsletter-form button {
width: 100%;
}
}
@media (max-width: 480px) {