// calc-gate-upsell.jsx — the lightweight signup gate (the only friction, exists so
// the upsell can recognise a returning buyer), the Stripe checkout note (VAT added
// here), and the signature post-purchase upsell comparison.
function SignupGate({ sel, onClose, onSignup, margin }) {
const q = window.quotePrice(sel, margin);
return (
e.stopPropagation()}>
Create a free account to make it
Quick and free — it's the only step. We just need to know it's you so your video lands in your account.
{window.fmt(q.total)}+ VAT · charged at checkout
Why an account? So we can save your videos and, if you come back, show you when subscribing would cost you less than buying one-by-one.
No subscription is created. By continuing you agree to the Terms and Privacy Policy.
You've made {count} videos for {window.fmt(spend)}. There's a better deal.
At the rate you're buying, a subscription would give you far more video for about what you're already spending.
What you've spent — one-off
{window.fmt(spend)} so far
{count} videos, bought one at a time.
That's ≈{window.fmt(Math.round(oneOffRate))} per video.
Pay again for every new video
No monthly render-second allowance
Best value
{plan.name} subscription
{window.fmt(plan.price)} / month
{plan.blurb}{moreVideos > 0 ? — {moreVideos} more clips than you've made so far : null}.
Just ≈{window.fmt(Math.round(planRate))} per clip — plus render seconds for bigger productions.
{plan.blurb}
{plan.extras.map((x, i) =>
{x}
)}
For about the same monthly spend, {plan.name} gives you {plan.thClips} talking-head clips + {plan.rsec} render seconds every month{saving > 0 ? — roughly {window.fmt(saving)} of value over buying one-off : null}.