Sessions 5-7a: 955 tests, deployment ready
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
import type { Metadata } from 'next';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'Terms of Service',
|
||||
description: 'VYNDR terms of service. Plain English. No tricks.',
|
||||
};
|
||||
|
||||
const SECTIONS: { title: string; body: string[]; emphasized?: boolean }[] = [
|
||||
{
|
||||
title: 'What this is',
|
||||
body: [
|
||||
'VYNDR provides sports analysis for informational purposes only. VYNDR does not facilitate, process, or encourage any wagers. VYNDR is not a sportsbook.',
|
||||
'VYNDR Intelligence LLC operates this product. We grade player props using statistical models, historical data, and contextual intelligence.',
|
||||
],
|
||||
emphasized: true,
|
||||
},
|
||||
{
|
||||
title: 'Who can use this',
|
||||
body: [
|
||||
'You must be 21 years of age or older to create an account. You must use VYNDR only where sports betting and the use of sports analytics tools is legal in your jurisdiction. You are responsible for following your local laws.',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'No guaranteed outcomes',
|
||||
body: [
|
||||
'A grade is a probabilistic assessment. An "A" grade is not a guarantee, prediction, or promise. The model is wrong all the time — we publish the ledger so you can see how often. Past performance does not guarantee future results. Do not bet what you cannot afford to lose.',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Subscription terms',
|
||||
body: [
|
||||
'Paid tiers (Analyst, Desk) are billed monthly through NexaPay. You may cancel at any time from your profile page. Cancellation takes effect at the end of the current billing period. We do not refund for partial months.',
|
||||
'Founder pricing ($14.99/mo Analyst, $44.99/mo Desk) is locked for the lifetime of your continuous subscription. Lapsed subscriptions revert to standard pricing ($24.99 Analyst, $49.99 Desk) on re-subscription. After the first 100 founder seats are taken, new subscribers pay standard pricing.',
|
||||
'We may change regular pricing with 30 days notice. Founder pricing is locked.',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Acceptable use',
|
||||
body: [
|
||||
'Do not scrape, reverse engineer, or attempt to replicate the grading engine. Do not resell reads, share account credentials, or attempt to circumvent the read limit. Do not use the service to abuse, harass, or defraud others.',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Intellectual property',
|
||||
body: [
|
||||
'The grading engine, models, calibration data, factor weights, and surrounding analysis are proprietary to VYNDR Intelligence LLC. You are licensed to view grades for personal use. You are not licensed to redistribute, repackage, or sell VYNDR output.',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Limitation of liability',
|
||||
body: [
|
||||
'VYNDR is not responsible for any financial losses you incur from sports betting decisions you make using our analytics. The service is provided "as is" with no warranty. Maximum liability is limited to what you paid us in the prior 12 months.',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Governing law',
|
||||
body: [
|
||||
'These terms are governed by the laws of the State of Michigan. Any disputes will be resolved through binding arbitration in Wayne County, Michigan.',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Responsible gambling',
|
||||
body: [
|
||||
'Sports betting can become a problem. If gambling stops being fun, stop. The National Council on Problem Gambling helpline is available 24/7, free and confidential: 1-800-522-4700. More resources at ncpgambling.org. See our Responsible Gambling page for self-exclusion guidance.',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Contact',
|
||||
body: [
|
||||
'VYNDR Intelligence LLC. Questions about these terms: legal@vyndr.app',
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export default function TermsPage() {
|
||||
return (
|
||||
<LegalLayout
|
||||
title="Terms of Service"
|
||||
effective="Effective: May 2026"
|
||||
sections={SECTIONS}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
function LegalLayout({ title, effective, sections }: { title: string; effective: string; sections: { title: string; body: string[]; emphasized?: boolean }[] }) {
|
||||
return (
|
||||
<section style={{ maxWidth: 720, margin: '0 auto', padding: '48px 16px 120px' }}>
|
||||
<header style={{ marginBottom: 32 }}>
|
||||
<h1 style={{ fontSize: 36, fontWeight: 700, letterSpacing: '-0.03em', marginBottom: 8 }}>{title}</h1>
|
||||
<p className="mono" style={{ fontSize: 12, color: 'var(--text-tertiary)', letterSpacing: '0.05em' }}>
|
||||
{effective.toUpperCase()}
|
||||
</p>
|
||||
</header>
|
||||
{sections.map((s) => (
|
||||
<section
|
||||
key={s.title}
|
||||
style={{
|
||||
marginBottom: 32,
|
||||
...(s.emphasized
|
||||
? {
|
||||
borderLeft: '3px solid var(--grade-a)',
|
||||
paddingLeft: 16,
|
||||
background: 'rgba(0, 212, 160, 0.04)',
|
||||
borderRadius: 4,
|
||||
padding: '12px 16px',
|
||||
}
|
||||
: {}),
|
||||
}}
|
||||
>
|
||||
<h2 style={{ fontSize: s.emphasized ? 20 : 18, fontWeight: 700, marginBottom: 12 }}>{s.title}</h2>
|
||||
{s.body.map((p, i) => (
|
||||
<p
|
||||
key={i}
|
||||
style={{
|
||||
color: s.emphasized ? 'var(--text-0)' : 'var(--text-secondary)',
|
||||
fontSize: s.emphasized ? 16 : 15,
|
||||
lineHeight: 1.7,
|
||||
marginBottom: 12,
|
||||
}}
|
||||
>
|
||||
{p}
|
||||
</p>
|
||||
))}
|
||||
</section>
|
||||
))}
|
||||
</section>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user