WHAT: Changed handleSubscribe() to redirect to OAuth endpoint WHY: Discord-Stripe linking requires OAuth before checkout Old flow: Button → API call → Stripe checkout (no Discord ID) New flow: Button → Discord OAuth → Stripe checkout (Discord ID linked) Endpoint: https://discord-bot.firefrostgaming.com/stripe/auth?tier=X Signed-off-by: Claude <claude@firefrostgaming.com>
214 lines
18 KiB
Plaintext
214 lines
18 KiB
Plaintext
---
|
|
layout: layouts/base.njk
|
|
title: Subscribe
|
|
description: Choose your tier and join the Firefrost Gaming community
|
|
---
|
|
|
|
<!-- The Trinity Hero Image -->
|
|
<div style="text-align: center; margin-bottom: 0; background: #0a0a1a;">
|
|
<img src="/assets/images/2026/03/The-Trinity-3.png" alt="The Trinity - Fire, Arcane, Frost" style="max-width: 100%; height: auto; display: block;" />
|
|
</div>
|
|
|
|
<!-- Hero Section -->
|
|
<div style="background: linear-gradient(135deg, #FF6B35 0%, #A855F7 50%, #4ECDC4 100%); padding: 80px 20px; text-align: center; margin-bottom: 60px;">
|
|
<h1 style="font-size: 3.5em; font-weight: 700; color: white; margin: 0 0 20px 0; text-shadow: 2px 2px 4px rgba(0,0,0,0.3);">Choose Your Path</h1>
|
|
<p style="font-size: 1.3em; color: rgba(255,255,255,0.95); max-width: 800px; margin: 0 auto; line-height: 1.6;">Join the Firefrost Gaming community. All subscribers access all servers — choose your tier based on homes, chunks, and automation needs.</p>
|
|
</div>
|
|
|
|
<!-- Important Notice -->
|
|
<div style="max-width: 900px; margin: 0 auto 60px auto; padding: 30px; background: linear-gradient(135deg, rgba(255,107,53,0.1) 0%, rgba(168,85,247,0.1) 50%, rgba(78,205,196,0.1) 100%); border-left: 5px solid #A855F7; border-radius: 8px;">
|
|
<h3 style="margin: 0 0 15px 0; color: #A855F7; font-size: 1.5em;">🌟 All Servers Available to All Subscribers</h3>
|
|
<p style="margin: 0; font-size: 1.1em; line-height: 1.6; color: #e0e0e0;">Fire and Frost paths are about <strong>community identity</strong>, not server restrictions. Every subscriber can access every Minecraft server regardless of tier. Choose your tier based on homes, claimed chunks, and force-loaded chunks — not server access.</p>
|
|
</div>
|
|
|
|
<!-- The Awakened - Entry Tier -->
|
|
<div style="max-width: 1200px; margin: 0 auto 40px auto;">
|
|
<div style="background: linear-gradient(135deg, rgba(255,255,255,0.05) 0%, rgba(255,255,255,0.02) 100%); border: 2px solid rgba(255,255,255,0.2); border-radius: 12px; padding: 40px; text-align: center;">
|
|
<h2 style="font-size: 2.5em; margin: 0 0 10px 0; color: white;">The Awakened</h2>
|
|
<p style="font-size: 1.8em; font-weight: 700; color: #FFD600; margin: 0 0 20px 0;">$1.00 <span style="font-size: 0.6em; font-weight: 400; color: rgba(255,255,255,0.7);">one-time</span></p>
|
|
<p style="font-size: 1.2em; color: rgba(255,255,255,0.9); margin: 0 0 30px 0; line-height: 1.6;">The Handshake. Unlock whitelist access to all 13+ Minecraft servers. 1 home. Choose your path at Elemental tier.</p>
|
|
<button onclick="handleSubscribe(event, 1)" style="display: inline-block; background: linear-gradient(135deg, #FF6B35 0%, #FF4D00 100%); color: white; padding: 18px 50px; font-size: 1.2em; font-weight: 600; text-decoration: none; border-radius: 8px; transition: transform 0.2s; cursor: pointer; border: none;">Subscribe Now</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Elemental Tier - Path Choice -->
|
|
<div style="max-width: 1200px; margin: 0 auto 60px auto;">
|
|
<h2 style="text-align: center; font-size: 2.5em; margin: 0 0 40px 0; color: white;">Choose Your Path</h2>
|
|
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px;">
|
|
|
|
<!-- Fire Elemental -->
|
|
<div style="background: linear-gradient(135deg, rgba(255,107,53,0.15) 0%, rgba(255,77,0,0.1) 100%); border: 2px solid #FF6B35; border-radius: 12px; padding: 35px; text-align: center;">
|
|
<h3 style="font-size: 2em; margin: 0 0 10px 0; color: #FF6B35;">🔥 Fire Elemental</h3>
|
|
<p style="font-size: 1.6em; font-weight: 700; color: white; margin: 0 0 15px 0;">$5.00 <span style="font-size: 0.6em; font-weight: 400; color: rgba(255,255,255,0.7);">/ month</span></p>
|
|
<ul style="text-align: left; list-style: none; padding: 0; margin: 0 0 25px 0; color: rgba(255,255,255,0.9); font-size: 1.05em; line-height: 1.8;">
|
|
<li>✓ 5 homes</li>
|
|
<li>✓ 25 claimed chunks</li>
|
|
<li>✓ /rtp 60min cooldown</li>
|
|
<li>✓ Join GingerFury's Flamecrafter community</li>
|
|
<li>✓ Fire-exclusive Discord channels</li>
|
|
</ul>
|
|
<button onclick="handleSubscribe(event, 2)" style="display: inline-block; background: linear-gradient(135deg, #FF6B35 0%, #FF4D00 100%); color: white; padding: 15px 40px; font-size: 1.1em; font-weight: 600; text-decoration: none; border-radius: 8px; transition: transform 0.2s; cursor: pointer; border: none;">Subscribe</button>
|
|
</div>
|
|
|
|
<!-- Frost Elemental -->
|
|
<div style="background: linear-gradient(135deg, rgba(78,205,196,0.15) 0%, rgba(0,229,255,0.1) 100%); border: 2px solid #4ECDC4; border-radius: 12px; padding: 35px; text-align: center;">
|
|
<h3 style="font-size: 2em; margin: 0 0 10px 0; color: #4ECDC4;">❄️ Frost Elemental</h3>
|
|
<p style="font-size: 1.6em; font-weight: 700; color: white; margin: 0 0 15px 0;">$5.00 <span style="font-size: 0.6em; font-weight: 400; color: rgba(255,255,255,0.7);">/ month</span></p>
|
|
<ul style="text-align: left; list-style: none; padding: 0; margin: 0 0 25px 0; color: rgba(255,255,255,0.9); font-size: 1.05em; line-height: 1.8;">
|
|
<li>✓ 5 homes</li>
|
|
<li>✓ 25 claimed chunks</li>
|
|
<li>✓ /rtp 60min cooldown</li>
|
|
<li>✓ Join Frostystyle's Crystal Engineer community</li>
|
|
<li>✓ Frost-exclusive Discord channels</li>
|
|
</ul>
|
|
<button onclick="handleSubscribe(event, 3)" style="display: inline-block; background: linear-gradient(135deg, #4ECDC4 0%, #00E5FF 100%); color: white; padding: 15px 40px; font-size: 1.1em; font-weight: 600; text-decoration: none; border-radius: 8px; transition: transform 0.2s; cursor: pointer; border: none;">Subscribe</button>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Knight Tier -->
|
|
<div style="max-width: 1200px; margin: 0 auto 60px auto;">
|
|
<h2 style="text-align: center; font-size: 2.5em; margin: 0 0 40px 0; color: white;">Knight Tier</h2>
|
|
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px;">
|
|
|
|
<!-- Fire Knight -->
|
|
<div style="background: linear-gradient(135deg, rgba(255,107,53,0.15) 0%, rgba(255,77,0,0.1) 100%); border: 2px solid #FF6B35; border-radius: 12px; padding: 35px; text-align: center;">
|
|
<h3 style="font-size: 2em; margin: 0 0 10px 0; color: #FF6B35;">🔥 Fire Knight</h3>
|
|
<p style="font-size: 1.6em; font-weight: 700; color: white; margin: 0 0 15px 0;">$10.00 <span style="font-size: 0.6em; font-weight: 400; color: rgba(255,255,255,0.7);">/ month</span></p>
|
|
<ul style="text-align: left; list-style: none; padding: 0; margin: 0 0 25px 0; color: rgba(255,255,255,0.9); font-size: 1.05em; line-height: 1.8;">
|
|
<li>✓ 10 homes</li>
|
|
<li>✓ 49 claimed chunks</li>
|
|
<li>✓ 4 force-loaded chunks</li>
|
|
<li>✓ /rtp 30min cooldown</li>
|
|
</ul>
|
|
<button onclick="handleSubscribe(event, 4)" style="display: inline-block; background: linear-gradient(135deg, #FF6B35 0%, #FF4D00 100%); color: white; padding: 15px 40px; font-size: 1.1em; font-weight: 600; text-decoration: none; border-radius: 8px; transition: transform 0.2s; cursor: pointer; border: none;">Subscribe</button>
|
|
</div>
|
|
|
|
<!-- Frost Knight -->
|
|
<div style="background: linear-gradient(135deg, rgba(78,205,196,0.15) 0%, rgba(0,229,255,0.1) 100%); border: 2px solid #4ECDC4; border-radius: 12px; padding: 35px; text-align: center;">
|
|
<h3 style="font-size: 2em; margin: 0 0 10px 0; color: #4ECDC4;">❄️ Frost Knight</h3>
|
|
<p style="font-size: 1.6em; font-weight: 700; color: white; margin: 0 0 15px 0;">$10.00 <span style="font-size: 0.6em; font-weight: 400; color: rgba(255,255,255,0.7);">/ month</span></p>
|
|
<ul style="text-align: left; list-style: none; padding: 0; margin: 0 0 25px 0; color: rgba(255,255,255,0.9); font-size: 1.05em; line-height: 1.8;">
|
|
<li>✓ 10 homes</li>
|
|
<li>✓ 49 claimed chunks</li>
|
|
<li>✓ 4 force-loaded chunks</li>
|
|
<li>✓ /rtp 30min cooldown</li>
|
|
</ul>
|
|
<button onclick="handleSubscribe(event, 5)" style="display: inline-block; background: linear-gradient(135deg, #4ECDC4 0%, #00E5FF 100%); color: white; padding: 15px 40px; font-size: 1.1em; font-weight: 600; text-decoration: none; border-radius: 8px; transition: transform 0.2s; cursor: pointer; border: none;">Subscribe</button>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Master Tier -->
|
|
<div style="max-width: 1200px; margin: 0 auto 60px auto;">
|
|
<h2 style="text-align: center; font-size: 2.5em; margin: 0 0 40px 0; color: white;">Master Tier</h2>
|
|
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px;">
|
|
|
|
<!-- Fire Master -->
|
|
<div style="background: linear-gradient(135deg, rgba(255,107,53,0.15) 0%, rgba(255,77,0,0.1) 100%); border: 2px solid #FF6B35; border-radius: 12px; padding: 35px; text-align: center;">
|
|
<h3 style="font-size: 2em; margin: 0 0 10px 0; color: #FF6B35;">🔥 Fire Master</h3>
|
|
<p style="font-size: 1.6em; font-weight: 700; color: white; margin: 0 0 15px 0;">$15.00 <span style="font-size: 0.6em; font-weight: 400; color: rgba(255,255,255,0.7);">/ month</span></p>
|
|
<ul style="text-align: left; list-style: none; padding: 0; margin: 0 0 25px 0; color: rgba(255,255,255,0.9); font-size: 1.05em; line-height: 1.8;">
|
|
<li>✓ 20 homes</li>
|
|
<li>✓ 100 claimed chunks</li>
|
|
<li>✓ 9 force-loaded chunks</li>
|
|
<li>✓ /rtp 15min cooldown</li>
|
|
</ul>
|
|
<button onclick="handleSubscribe(event, 6)" style="display: inline-block; background: linear-gradient(135deg, #FF6B35 0%, #FF4D00 100%); color: white; padding: 15px 40px; font-size: 1.1em; font-weight: 600; text-decoration: none; border-radius: 8px; transition: transform 0.2s; cursor: pointer; border: none;">Subscribe</button>
|
|
</div>
|
|
|
|
<!-- Frost Master -->
|
|
<div style="background: linear-gradient(135deg, rgba(78,205,196,0.15) 0%, rgba(0,229,255,0.1) 100%); border: 2px solid #4ECDC4; border-radius: 12px; padding: 35px; text-align: center;">
|
|
<h3 style="font-size: 2em; margin: 0 0 10px 0; color: #4ECDC4;">❄️ Frost Master</h3>
|
|
<p style="font-size: 1.6em; font-weight: 700; color: white; margin: 0 0 15px 0;">$15.00 <span style="font-size: 0.6em; font-weight: 400; color: rgba(255,255,255,0.7);">/ month</span></p>
|
|
<ul style="text-align: left; list-style: none; padding: 0; margin: 0 0 25px 0; color: rgba(255,255,255,0.9); font-size: 1.05em; line-height: 1.8;">
|
|
<li>✓ 20 homes</li>
|
|
<li>✓ 100 claimed chunks</li>
|
|
<li>✓ 9 force-loaded chunks</li>
|
|
<li>✓ /rtp 15min cooldown</li>
|
|
</ul>
|
|
<button onclick="handleSubscribe(event, 7)" style="display: inline-block; background: linear-gradient(135deg, #4ECDC4 0%, #00E5FF 100%); color: white; padding: 15px 40px; font-size: 1.1em; font-weight: 600; text-decoration: none; border-radius: 8px; transition: transform 0.2s; cursor: pointer; border: none;">Subscribe</button>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Legend Tier -->
|
|
<div style="max-width: 1200px; margin: 0 auto 60px auto;">
|
|
<h2 style="text-align: center; font-size: 2.5em; margin: 0 0 40px 0; color: white;">Legend Tier</h2>
|
|
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px;">
|
|
|
|
<!-- Fire Legend -->
|
|
<div style="background: linear-gradient(135deg, rgba(255,107,53,0.15) 0%, rgba(255,77,0,0.1) 100%); border: 2px solid #FF6B35; border-radius: 12px; padding: 35px; text-align: center;">
|
|
<h3 style="font-size: 2em; margin: 0 0 10px 0; color: #FF6B35;">🔥 Fire Legend</h3>
|
|
<p style="font-size: 1.6em; font-weight: 700; color: white; margin: 0 0 15px 0;">$20.00 <span style="font-size: 0.6em; font-weight: 400; color: rgba(255,255,255,0.7);">/ month</span></p>
|
|
<ul style="text-align: left; list-style: none; padding: 0; margin: 0 0 25px 0; color: rgba(255,255,255,0.9); font-size: 1.05em; line-height: 1.8;">
|
|
<li>✓ 35 homes</li>
|
|
<li>✓ 121 claimed chunks</li>
|
|
<li>✓ 16 force-loaded chunks</li>
|
|
<li>✓ /rtp 10min cooldown</li>
|
|
</ul>
|
|
<button onclick="handleSubscribe(event, 8)" style="display: inline-block; background: linear-gradient(135deg, #FF6B35 0%, #FF4D00 100%); color: white; padding: 15px 40px; font-size: 1.1em; font-weight: 600; text-decoration: none; border-radius: 8px; transition: transform 0.2s; cursor: pointer; border: none;">Subscribe</button>
|
|
</div>
|
|
|
|
<!-- Frost Legend -->
|
|
<div style="background: linear-gradient(135deg, rgba(78,205,196,0.15) 0%, rgba(0,229,255,0.1) 100%); border: 2px solid #4ECDC4; border-radius: 12px; padding: 35px; text-align: center;">
|
|
<h3 style="font-size: 2em; margin: 0 0 10px 0; color: #4ECDC4;">❄️ Frost Legend</h3>
|
|
<p style="font-size: 1.6em; font-weight: 700; color: white; margin: 0 0 15px 0;">$20.00 <span style="font-size: 0.6em; font-weight: 400; color: rgba(255,255,255,0.7);">/ month</span></p>
|
|
<ul style="text-align: left; list-style: none; padding: 0; margin: 0 0 25px 0; color: rgba(255,255,255,0.9); font-size: 1.05em; line-height: 1.8;">
|
|
<li>✓ 35 homes</li>
|
|
<li>✓ 121 claimed chunks</li>
|
|
<li>✓ 16 force-loaded chunks</li>
|
|
<li>✓ /rtp 10min cooldown</li>
|
|
</ul>
|
|
<button onclick="handleSubscribe(event, 9)" style="display: inline-block; background: linear-gradient(135deg, #4ECDC4 0%, #00E5FF 100%); color: white; padding: 15px 40px; font-size: 1.1em; font-weight: 600; text-decoration: none; border-radius: 8px; transition: transform 0.2s; cursor: pointer; border: none;">Subscribe</button>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Sovereign (Founder) - Premium Tier -->
|
|
<div style="max-width: 1200px; margin: 0 auto 80px auto;">
|
|
<div style="background: linear-gradient(135deg, rgba(255,214,0,0.2) 0%, rgba(168,85,247,0.15) 50%, rgba(255,214,0,0.2) 100%); border: 3px solid #FFD600; border-radius: 12px; padding: 50px; text-align: center; position: relative; overflow: hidden;">
|
|
<div style="position: absolute; top: 20px; right: 20px; background: #FFD600; color: #1a1a1a; padding: 8px 20px; border-radius: 20px; font-weight: 700; font-size: 0.9em;">LIFETIME ACCESS</div>
|
|
<h2 style="font-size: 3em; margin: 0 0 10px 0; color: #FFD600;">⚡ Sovereign (Founder)</h2>
|
|
<p style="font-size: 2.2em; font-weight: 700; color: white; margin: 0 0 25px 0;">$499.00 <span style="font-size: 0.5em; font-weight: 400; color: rgba(255,255,255,0.7);">one-time</span></p>
|
|
<p style="font-size: 1.3em; color: rgba(255,255,255,0.95); margin: 0 0 30px 0; line-height: 1.7; max-width: 800px; margin-left: auto; margin-right: auto;">The Ascended. Access to <strong>BOTH Fire + Frost</strong> paths. Maximum perks across all dimensions. Exclusive Founder channels in Discord.</p>
|
|
<ul style="text-align: left; list-style: none; padding: 0; margin: 0 0 35px 0; color: rgba(255,255,255,0.95); font-size: 1.15em; line-height: 2; max-width: 600px; margin-left: auto; margin-right: auto;">
|
|
<li>✓ <strong>50 homes</strong> — Ultimate mobility</li>
|
|
<li>✓ <strong>225 claimed chunks</strong> — Enormous protected territory</li>
|
|
<li>✓ <strong>81 force-loaded chunks</strong> — Massive automation networks</li>
|
|
<li>✓ <strong>No /rtp cooldown</strong> — Unlimited random teleport</li>
|
|
<li>✓ <strong>Both Fire AND Frost Discord channels</strong></li>
|
|
<li>✓ <strong>Exclusive Founder channels (The Nexus)</strong></li>
|
|
<li>✓ <strong>Lifetime access — Never pay again</strong></li>
|
|
</ul>
|
|
<button onclick="handleSubscribe(event, 10)" style="display: inline-block; background: linear-gradient(135deg, #FFD600 0%, #FFA000 100%); color: #1a1a1a; padding: 20px 60px; font-size: 1.3em; font-weight: 700; text-decoration: none; border-radius: 8px; box-shadow: 0 4px 15px rgba(255,214,0,0.4); transition: transform 0.2s; cursor: pointer; border: none;">Claim Founder Status</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Footer CTA -->
|
|
<div style="max-width: 900px; margin: 0 auto 40px auto; text-align: center; padding: 40px 20px; background: linear-gradient(135deg, rgba(255,107,53,0.08) 0%, rgba(168,85,247,0.08) 50%, rgba(78,205,196,0.08) 100%); border-radius: 12px;">
|
|
<h3 style="font-size: 2em; margin: 0 0 15px 0; color: white;">Ready to Join?</h3>
|
|
<p style="font-size: 1.2em; color: rgba(255,255,255,0.9); margin: 0 0 25px 0; line-height: 1.6;">All subscriptions are processed securely through Stripe. Cancel anytime. Questions? <a href="/contact" style="color: #A855F7; text-decoration: none; font-weight: 600;">Contact us</a>.</p>
|
|
<p style="font-size: 1em; color: rgba(255,255,255,0.7); margin: 0;"><em>Fire + Frost + Foundation = Where Love Builds Legacy</em></p>
|
|
</div>
|
|
|
|
<!-- Discord OAuth → Stripe Checkout Handler -->
|
|
<script>
|
|
function handleSubscribe(event, tierLevel) {
|
|
const button = event.currentTarget;
|
|
|
|
// Lock the button immediately (Prevent double-clicks)
|
|
button.disabled = true;
|
|
button.style.opacity = '0.7';
|
|
button.style.cursor = 'wait';
|
|
button.innerHTML = 'Connecting to Discord...';
|
|
|
|
// Redirect to OAuth flow - Discord login then Stripe checkout
|
|
window.location.href = `https://discord-bot.firefrostgaming.com/stripe/auth?tier=${tierLevel}`;
|
|
}
|
|
</script>
|