@@ -439,17 +439,6 @@ export function createRoutes(stripe: Stripe | null, db: Database.Database, baseU
439439 <div class="regen-container">
440440 <h2 class="regen-section-title" style="text-align:center;">Choose Your Plan</h2>
441441
442- <!-- Individual / Organization toggle -->
443- <div style="display:flex;justify-content:center;margin-bottom:16px;">
444- <div id="plan-type-toggle" style="display:inline-flex;background:var(--regen-gray-100);border-radius:10px;padding:4px;">
445- <button id="toggle-individual" onclick="setPlanType('individual')" class="interval-btn interval-btn--active">Individual</button>
446- <button id="toggle-org" onclick="setPlanType('org')" class="interval-btn">Organization</button>
447- </div>
448- </div>
449-
450- <!-- Individual pricing (shown by default) -->
451- <div id="individual-pricing">
452-
453442 <!-- Monthly / Yearly toggle -->
454443 <div style="display:flex;justify-content:center;margin-bottom:28px;">
455444 <div id="interval-toggle" style="display:inline-flex;background:var(--regen-gray-100);border-radius:10px;padding:4px;">
@@ -486,58 +475,48 @@ export function createRoutes(stripe: Stripe | null, db: Database.Database, baseU
486475 </div>
487476 </div>
488477
489- <!-- Custom Amount — inline card under tiers -->
490- <div style="background:var(--regen-white);border:2px solid var(--regen-gray-200);border-radius:var(--regen-radius-lg);padding:20px 28px;margin-top:12px;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;">
491- <span style="font-weight:700;font-size:15px;color:var(--regen-navy);white-space:nowrap;">Set your own subscription amount</span>
492- <div style="display:flex;align-items:center;gap:8px;">
493- <label style="font-size:15px;color:var(--regen-navy);font-weight:600;">$</label>
494- <input id="custom-amount" type="number" min="1" step="0.50" value="10" style="width:80px;padding:8px 12px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:16px;text-align:center;">
495- <span style="font-size:14px;color:var(--regen-gray-500);">/mo</span>
496- </div>
497- <button onclick="fundCustom()" class="regen-btn regen-btn--solid regen-btn--sm" style="white-space:nowrap;">Subscribe</button>
498- <p id="custom-error" style="color:#c33;font-size:13px;margin:0;display:none;width:100%;text-align:center;"></p>
478+ <!-- Team plan CTA -->
479+ <div id="org-cta" style="background:var(--regen-white);border:2px solid var(--regen-gray-200);border-radius:var(--regen-radius-lg);padding:20px 28px;margin-top:12px;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;cursor:pointer;transition:border-color 0.2s;" onclick="showOrgForm()" onmouseover="this.style.borderColor='var(--regen-green)'" onmouseout="this.style.borderColor='var(--regen-gray-200)'">
480+ <span style="font-weight:700;font-size:15px;color:var(--regen-navy);white-space:nowrap;">Subscribing for your whole team?</span>
481+ <span style="font-size:14px;color:var(--regen-gray-500);">Build a custom plan based on your team size and AI usage.</span>
482+ <span class="regen-btn regen-btn--solid regen-btn--sm" style="white-space:nowrap;">Get Started</span>
499483 </div>
500484
501- </div><!-- end individual-pricing -->
502-
503- <!-- Organization form (hidden by default) -->
504- <div id="org-pricing" style="display:none;">
505- <div style="max-width:560px;margin:0 auto;">
506- <p style="text-align:center;color:var(--regen-gray-600);margin:0 0 24px;font-size:15px;line-height:1.6;">
507- Tell us about your team and we'll calculate a subscription that covers your organization's AI footprint.
508- </p>
509- <div style="background:var(--regen-white);border:1px solid var(--regen-gray-200);border-radius:var(--regen-radius-lg);padding:28px 32px;">
510- <div style="margin-bottom:18px;">
511- <label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Company name</label>
512- <input id="org-name" type="text" placeholder="e.g. Acme Corp" style="width:100%;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;box-sizing:border-box;">
513- </div>
514- <div style="margin-bottom:18px;">
515- <label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Full-time developers <span style="font-weight:400;color:var(--regen-gray-500);">— heavy AI usage (coding, debugging, agents)</span></label>
516- <input id="org-devs" type="number" min="0" value="0" style="width:100px;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;text-align:center;">
517- </div>
518- <div style="margin-bottom:18px;">
519- <label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Autonomous agents <span style="font-weight:400;color:var(--regen-gray-500);">— always-on bots, CI pipelines, agent workflows</span></label>
520- <input id="org-agents" type="number" min="0" value="0" style="width:100px;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;text-align:center;">
521- </div>
522- <div style="margin-bottom:24px;">
523- <label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Part-time AI users <span style="font-weight:400;color:var(--regen-gray-500);">— occasional AI use for writing, research, email</span></label>
524- <input id="org-parttime" type="number" min="0" value="0" style="width:100px;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;text-align:center;">
525- </div>
485+ <!-- Organization form (revealed on click) -->
486+ <div id="org-form" style="display:none;margin-top:16px;">
487+ <div style="background:var(--regen-white);border:1px solid var(--regen-gray-200);border-radius:var(--regen-radius-lg);padding:28px 32px;max-width:560px;margin:0 auto;">
488+ <h3 style="margin:0 0 4px;font-size:18px;color:var(--regen-navy);font-weight:700;">Team Plan</h3>
489+ <p style="color:var(--regen-gray-500);font-size:14px;margin:0 0 20px;">Tell us about your team and we'll suggest a monthly amount.</p>
490+ <div style="margin-bottom:18px;">
491+ <label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Company name</label>
492+ <input id="org-name" type="text" placeholder="e.g. Acme Corp" style="width:100%;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;box-sizing:border-box;">
493+ </div>
494+ <div style="margin-bottom:18px;">
495+ <label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Full-time developers <span style="font-weight:400;color:var(--regen-gray-500);">— heavy AI usage</span></label>
496+ <input id="org-devs" type="number" min="0" value="0" style="width:100px;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;text-align:center;">
497+ </div>
498+ <div style="margin-bottom:18px;">
499+ <label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Autonomous agents <span style="font-weight:400;color:var(--regen-gray-500);">— always-on bots, CI pipelines</span></label>
500+ <input id="org-agents" type="number" min="0" value="0" style="width:100px;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;text-align:center;">
501+ </div>
502+ <div style="margin-bottom:24px;">
503+ <label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Part-time AI users <span style="font-weight:400;color:var(--regen-gray-500);">— occasional use for writing, research</span></label>
504+ <input id="org-parttime" type="number" min="0" value="0" style="width:100px;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;text-align:center;">
505+ </div>
526506
527- <!-- Calculated estimate -->
528- <div id="org-estimate" style="display:none;background:linear-gradient(135deg, rgba(79,181,115,0.06), rgba(16,21,112,0.04));border:1px solid rgba(79,181,115,0.2);border-radius:10px;padding:20px 24px;margin-bottom:20px;">
529- <div style="font-size:13px;color:var(--regen-gray-500);margin-bottom:4px;">Suggested monthly subscription</div>
530- <div style="display:flex;align-items:baseline;gap:8px;">
531- <span id="org-price" style="font-size:32px;font-weight:800;color:var(--regen-navy);">$0</span>
532- <span style="font-size:14px;color:var(--regen-gray-500);">/month</span>
533- </div>
534- <div id="org-breakdown" style="margin-top:10px;font-size:13px;color:var(--regen-gray-600);line-height:1.6;"></div>
535- <div style="margin-top:12px;font-size:12px;color:var(--regen-gray-400);">You can adjust the amount up or down at checkout.</div>
507+ <!-- Calculated estimate -->
508+ <div id="org-estimate" style="display:none;background:linear-gradient(135deg, rgba(79,181,115,0.06), rgba(16,21,112,0.04));border:1px solid rgba(79,181,115,0.2);border-radius:10px;padding:20px 24px;margin-bottom:20px;">
509+ <div style="font-size:13px;color:var(--regen-gray-500);margin-bottom:4px;">Suggested monthly subscription</div>
510+ <div style="display:flex;align-items:baseline;gap:8px;">
511+ <span id="org-price" style="font-size:32px;font-weight:800;color:var(--regen-navy);">$0</span>
512+ <span style="font-size:14px;color:var(--regen-gray-500);">/month</span>
536513 </div>
537-
538- <button id="org-subscribe-btn" onclick="subscribeOrg()" class="regen-btn regen-btn--solid regen-btn--block" style="font-size:16px;padding:14px;">Subscribe Your Team</button>
539- <p id="org-error" style="color:#c33;font-size:13px;margin:8px 0 0;display:none;text-align:center;"></p>
514+ <div id="org-breakdown" style="margin-top:10px;font-size:13px;color:var(--regen-gray-600);line-height:1.6;"></div>
515+ <div style="margin-top:12px;font-size:12px;color:var(--regen-gray-400);">You can adjust the amount up or down at checkout.</div>
540516 </div>
517+
518+ <button id="org-subscribe-btn" onclick="subscribeOrg()" class="regen-btn regen-btn--solid regen-btn--block" style="font-size:16px;padding:14px;">Subscribe Your Team</button>
519+ <p id="org-error" style="color:#c33;font-size:13px;margin:8px 0 0;display:none;text-align:center;"></p>
541520 </div>
542521 </div>
543522
@@ -663,44 +642,10 @@ Then estimate my AI usage footprint and recommend a tier ($1.25, $2.50, or $5/mo
663642 <button onclick="window.location.href='/?view=agent'" style="position:fixed;bottom:24px;right:24px;z-index:9999;background:#1a1a2e;color:#4FB573;border:1px solid #4FB573;border-radius:8px;padding:10px 18px;cursor:pointer;font-family:monospace;font-size:13px;font-weight:600;box-shadow:0 4px 12px rgba(0,0,0,0.3);transition:all 0.2s;" onmouseover="this.style.background='#2a2a4e'" onmouseout="this.style.background='#1a1a2e'">🤖 Agent View</button>
664643
665644 <script>
666- function fundCustom() {
667- var input = document.getElementById('custom-amount');
668- var errEl = document.getElementById('custom-error');
669- var amount = parseFloat(input.value);
670- errEl.style.display = 'none';
671- if (!amount || amount < 1) {
672- errEl.textContent = 'Minimum amount is $1.00';
673- errEl.style.display = 'block';
674- return;
675- }
676- var cents = Math.round(amount * 100);
677- fetch('/checkout', {
678- method: 'POST',
679- headers: { 'Content-Type': 'application/json' },
680- body: JSON.stringify({ amount_cents: cents })
681- })
682- .then(function(r) { return r.json(); })
683- .then(function(data) {
684- if (data.url) window.location.href = data.url;
685- else {
686- errEl.textContent = data.error || 'Something went wrong. Is Stripe configured?';
687- errEl.style.display = 'block';
688- }
689- })
690- .catch(function(e) {
691- errEl.textContent = e.message;
692- errEl.style.display = 'block';
693- });
694- }
695- </script>
696-
697- <script>
698- function setPlanType(type) {
699- document.getElementById('individual-pricing').style.display = type === 'individual' ? '' : 'none';
700- document.getElementById('org-pricing').style.display = type === 'org' ? '' : 'none';
701- document.getElementById('toggle-individual').className = 'interval-btn' + (type === 'individual' ? ' interval-btn--active' : '');
702- document.getElementById('toggle-org').className = 'interval-btn' + (type === 'org' ? ' interval-btn--active' : '');
703- if (type === 'org') recalcOrg();
645+ function showOrgForm() {
646+ document.getElementById('org-cta').style.display = 'none';
647+ document.getElementById('org-form').style.display = 'block';
648+ document.getElementById('org-name').focus();
704649 }
705650
706651 function recalcOrg() {
0 commit comments