feat: Add FAQ and Terms pages, redesign Privacy page

Create FAQ page with accordion-style Q&A sections and Terms of Service
page with comprehensive legal content. Redesign Privacy page with neon
styling. All legal pages use system font for headings to ensure
readability.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-07 17:30:40 +01:00
parent d6048fc264
commit 51112df979
3 changed files with 742 additions and 175 deletions

191
src/routes/faq/+page.svelte Normal file
View File

@@ -0,0 +1,191 @@
<script lang="ts">
import { HelpCircle, ChevronDown, Zap, Upload, Shield, Code } from 'lucide-svelte';
interface FaqItem {
question: string;
answer: string;
category: string;
}
const faqItems: FaqItem[] = [
{
category: 'Getting Started',
question: 'What is teamflash.rip?',
answer:
'teamflash.rip is a free, open-source platform for analyzing Counter-Strike 2 matchmaking matches. We parse demo files to provide detailed statistics, including who flashed their teammates (hence the name).'
},
{
category: 'Getting Started',
question: 'How do I get my matches analyzed?',
answer:
'You can upload your CS2 demo files directly, or if your Steam profile is public, we can automatically fetch your recent competitive matches. Just search for your Steam ID or profile URL.'
},
{
category: 'Getting Started',
question: 'Is teamflash.rip free to use?',
answer:
'Yes, completely free! We are an open-source project with no premium tiers or paywalls. All features are available to everyone.'
},
{
category: 'Matches & Stats',
question: 'What statistics do you track?',
answer:
'We track kills, deaths, assists, ADR, KAST, headshot percentage, utility damage, flash assists, enemies flashed, teammates flashed (the important one!), and much more from parsed demo files.'
},
{
category: 'Matches & Stats',
question: 'How accurate is the data?',
answer:
'Our data comes directly from parsing CS2 demo files, so it is as accurate as the game itself records. We use the official demo format provided by Valve.'
},
{
category: 'Matches & Stats',
question: 'Why are some of my matches missing?',
answer:
'We can only analyze matches where demo files are available. Valve only keeps demo files for a limited time (usually 30 days for matchmaking). Upload demos manually if you want to preserve older matches.'
},
{
category: 'Privacy & Data',
question: 'What data do you collect?',
answer:
'We only collect publicly available Steam data and match statistics from demo files. We do not require accounts or collect personal information. See our Privacy Policy for details.'
},
{
category: 'Privacy & Data',
question: 'Can I remove my data?',
answer:
'Yes. Contact us through our GitHub repository to request data removal. Since we only display public Steam data, you can also adjust your Steam privacy settings.'
},
{
category: 'Technical',
question: 'What file formats do you support?',
answer:
'We support CS2 demo files (.dem). We no longer support CS:GO demos as the platform has been rebuilt specifically for CS2.'
},
{
category: 'Technical',
question: 'How can I contribute?',
answer:
'We welcome contributions! Visit our GitHub repository to report bugs, suggest features, or submit pull requests. The frontend and backend are both open source.'
}
];
const categories = [...new Set(faqItems.map((item) => item.category))];
let openItems = $state<Set<number>>(new Set());
function toggleItem(index: number) {
const newSet = new Set(openItems);
if (newSet.has(index)) {
newSet.delete(index);
} else {
newSet.add(index);
}
openItems = newSet;
}
function getCategoryIcon(category: string) {
switch (category) {
case 'Getting Started':
return Zap;
case 'Matches & Stats':
return Upload;
case 'Privacy & Data':
return Shield;
case 'Technical':
return Code;
default:
return HelpCircle;
}
}
</script>
<svelte:head>
<title>FAQ | teamflash.rip</title>
<meta
name="description"
content="Frequently asked questions about teamflash.rip - CS2 match analysis platform."
/>
</svelte:head>
<div class="relative min-h-screen bg-void">
<!-- Decorative Background -->
<div class="pointer-events-none absolute inset-0 overflow-hidden">
<div class="absolute -left-40 top-20 h-80 w-80 rounded-full bg-neon-blue/10 blur-[100px]"></div>
<div
class="absolute -right-40 top-60 h-80 w-80 rounded-full bg-neon-purple/10 blur-[100px]"
></div>
<div
class="absolute inset-0 opacity-20"
style="background-image: linear-gradient(rgba(0, 212, 255, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 212, 255, 0.03) 1px, transparent 1px); background-size: 60px 60px;"
></div>
</div>
<!-- Content -->
<div class="container relative z-10 mx-auto max-w-4xl px-4 py-12">
<!-- Header -->
<div class="mb-12 text-center">
<div class="mb-4 inline-flex rounded-full border border-neon-blue/30 bg-neon-blue/10 p-4">
<HelpCircle class="h-12 w-12 text-neon-blue" />
</div>
<h1 class="mb-4 text-4xl font-bold text-white">Frequently Asked Questions</h1>
<p class="text-lg text-white/60">Everything you need to know about teamflash.rip</p>
</div>
<!-- FAQ Sections -->
{#each categories as category}
{@const CategoryIcon = getCategoryIcon(category)}
<div class="mb-8">
<div class="mb-4 flex items-center gap-3">
<CategoryIcon class="h-5 w-5 text-neon-blue" />
<h2 class="text-xl font-semibold text-white">{category}</h2>
</div>
<div class="space-y-3">
{#each faqItems as item, index}
{#if item.category === category}
<div class="overflow-hidden rounded-xl border border-white/10 bg-void-light">
<button
class="flex w-full items-center justify-between p-4 text-left transition-colors hover:bg-white/5"
onclick={() => toggleItem(index)}
aria-expanded={openItems.has(index)}
>
<span class="pr-4 font-medium text-white">{item.question}</span>
<ChevronDown
class="h-5 w-5 shrink-0 text-white/50 transition-transform duration-200 {openItems.has(
index
)
? 'rotate-180'
: ''}"
/>
</button>
{#if openItems.has(index)}
<div class="border-t border-white/10 px-4 py-4">
<p class="leading-relaxed text-white/70">{item.answer}</p>
</div>
{/if}
</div>
{/if}
{/each}
</div>
</div>
{/each}
<!-- Still Have Questions -->
<div class="mt-12 rounded-xl border border-neon-blue/20 bg-void-light p-8 text-center">
<h2 class="mb-3 text-xl font-semibold text-white">Still have questions?</h2>
<p class="mb-6 text-white/60">
Can't find what you're looking for? Check out our GitHub or open an issue.
</p>
<a
href="https://somegit.dev/CSGOWTF/csgowtf/issues"
target="_blank"
rel="noopener noreferrer"
class="inline-flex items-center gap-2 rounded-lg bg-neon-blue px-6 py-3 font-medium text-void transition-all duration-300 hover:shadow-[0_0_25px_rgba(0,212,255,0.4)]"
>
<HelpCircle class="h-5 w-5" />
Ask on GitHub
</a>
</div>
</div>
</div>

View File

@@ -1,6 +1,11 @@
<script lang="ts">
import Card from '$lib/components/ui/Card.svelte';
import { Shield, Eye, Cookie, Server, Mail } from 'lucide-svelte';
import { Shield, Eye, Cookie, Server, Mail, Lock, Users, Globe } from 'lucide-svelte';
const lastUpdated = new Date().toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
</script>
<svelte:head>
@@ -11,207 +16,345 @@
/>
</svelte:head>
<div class="container mx-auto max-w-4xl space-y-8 px-4 py-12">
<!-- Header -->
<div class="text-center">
<div class="mb-4 inline-flex rounded-full bg-primary/10 p-4">
<Shield class="h-12 w-12 text-primary" />
</div>
<h1 class="mb-4 text-4xl font-bold text-base-content">Privacy Policy</h1>
<p class="text-lg text-base-content/70">
Last updated: {new Date().toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric'
})}
</p>
<div class="relative min-h-screen bg-void">
<!-- Decorative Background -->
<div class="pointer-events-none absolute inset-0 overflow-hidden">
<div class="absolute -left-40 top-20 h-80 w-80 rounded-full bg-neon-blue/10 blur-[100px]"></div>
<div
class="absolute -right-40 top-60 h-80 w-80 rounded-full bg-neon-purple/10 blur-[100px]"
></div>
<div
class="absolute bottom-40 left-1/3 h-60 w-60 rounded-full bg-neon-green/5 blur-[80px]"
></div>
<div
class="absolute inset-0 opacity-20"
style="background-image: linear-gradient(rgba(0, 212, 255, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 212, 255, 0.03) 1px, transparent 1px); background-size: 60px 60px;"
></div>
</div>
<!-- Introduction -->
<Card padding="lg">
<h2 class="mb-4 text-2xl font-bold text-base-content">Introduction</h2>
<p class="text-base-content/80">
teamflash.rip ("we", "our", or "us") is committed to protecting your privacy. This Privacy
Policy explains how we collect, use, and safeguard your information when you use our CS2 match
statistics and flash crime analysis platform.
</p>
</Card>
<!-- Data Collection -->
<Card padding="lg">
<div class="mb-4 flex items-center gap-2">
<Eye class="h-6 w-6 text-primary" />
<h2 class="text-2xl font-bold text-base-content">Information We Collect</h2>
<!-- Content -->
<div class="legal-content container relative z-10 mx-auto max-w-4xl space-y-8 px-4 py-12">
<!-- Header -->
<div class="text-center">
<div
class="mb-4 inline-flex rounded-full border border-neon-green/30 bg-neon-green/10 p-4"
style="box-shadow: 0 0 30px rgba(0, 255, 136, 0.2);"
>
<Shield
class="h-12 w-12 text-neon-green"
style="filter: drop-shadow(0 0 10px rgba(0, 255, 136, 0.5));"
/>
</div>
<h1
class="mb-4 text-4xl font-bold text-white"
style="text-shadow: 0 0 30px rgba(0, 212, 255, 0.5);"
>
Privacy Policy
</h1>
<p class="text-lg text-white/60">Last updated: {lastUpdated}</p>
</div>
<div class="space-y-4 text-base-content/80">
<div>
<h3 class="mb-2 font-semibold text-base-content">Public Steam Data</h3>
<p>
We collect publicly available information from Steam profiles and CS2 match data,
including:
</p>
<ul class="ml-6 mt-2 list-disc space-y-1">
<li>Steam ID and profile information</li>
<li>Match statistics and performance data</li>
<li>In-game chat messages (from parsed demo files)</li>
<li>VAC and game ban status</li>
<!-- Introduction -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<h2 class="mb-4 text-2xl font-bold text-white">Introduction</h2>
<p class="text-white/70">
teamflash.rip ("we", "our", or "us") is committed to protecting your privacy. This Privacy
Policy explains how we collect, use, and safeguard your information when you use our CS2
match statistics and flash crime analysis platform.
</p>
</div>
<!-- Data Collection -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<Eye
class="h-6 w-6 text-neon-blue"
style="filter: drop-shadow(0 0 8px rgba(0, 212, 255, 0.5));"
/>
<h2 class="text-2xl font-bold text-white">Information We Collect</h2>
</div>
<div class="space-y-6 text-white/70">
<div>
<h3 class="mb-2 font-semibold text-white">Public Steam Data</h3>
<p class="mb-2">
We collect publicly available information from Steam profiles and CS2 match data,
including:
</p>
<ul class="ml-4 space-y-1">
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-blue"></span>
Steam ID and profile information
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-blue"></span>
Match statistics and performance data
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-blue"></span>
In-game chat messages (from parsed demo files)
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-blue"></span>
VAC and game ban status
</li>
</ul>
</div>
<div>
<h3 class="mb-2 font-semibold text-white">Usage Data</h3>
<p>
We may collect information about how you interact with our service, including pages
visited and features used.
</p>
</div>
<div>
<h3 class="mb-2 font-semibold text-white">Browser Storage</h3>
<p>
We use browser local storage to save your preferences (favorite players, recently
visited players) locally on your device. This data never leaves your browser.
</p>
</div>
</div>
</div>
<!-- How We Use Data -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<Server
class="h-6 w-6 text-neon-purple"
style="filter: drop-shadow(0 0 8px rgba(168, 85, 247, 0.5));"
/>
<h2 class="text-2xl font-bold text-white">How We Use Your Information</h2>
</div>
<div class="space-y-2 text-white/70">
<p>We use collected information to:</p>
<ul class="ml-4 space-y-1">
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-purple"></span>
Provide match statistics and performance analysis
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-purple"></span>
Track player performance over time
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-purple"></span>
Generate charts and visualizations
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-purple"></span>
Improve our service and user experience
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-purple"></span>
Detect and prevent abuse
</li>
</ul>
</div>
</div>
<div>
<h3 class="mb-2 font-semibold text-base-content">Usage Data</h3>
<p>
We may collect information about how you interact with our service, including pages
visited and features used.
</p>
<!-- Cookies -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<Cookie
class="h-6 w-6 text-neon-gold"
style="filter: drop-shadow(0 0 8px rgba(255, 170, 0, 0.5));"
/>
<h2 class="text-2xl font-bold text-white">Cookies and Local Storage</h2>
</div>
<div>
<h3 class="mb-2 font-semibold text-base-content">Browser Storage</h3>
<p>
We use browser local storage to save your preferences (theme, favorite players, recently
visited players) locally on your device. This data never leaves your browser.
<div class="space-y-2 text-white/70">
<p>We use browser local storage to:</p>
<ul class="ml-4 space-y-1">
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-gold"></span>
Remember your favorite players
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-gold"></span>
Track recently visited player profiles
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-gold"></span>
Save navigation state for better UX
</li>
</ul>
<p class="mt-4">
You can clear this data at any time through your browser settings. No tracking cookies are
used.
</p>
</div>
</div>
</Card>
<!-- How We Use Data -->
<Card padding="lg">
<div class="mb-4 flex items-center gap-2">
<Server class="h-6 w-6 text-primary" />
<h2 class="text-2xl font-bold text-base-content">How We Use Your Information</h2>
<!-- Data Sharing -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<Users
class="h-6 w-6 text-neon-blue"
style="filter: drop-shadow(0 0 8px rgba(0, 212, 255, 0.5));"
/>
<h2 class="text-2xl font-bold text-white">Data Sharing and Disclosure</h2>
</div>
<div class="space-y-2 text-white/70">
<p>We do not sell, trade, or rent your personal information to third parties.</p>
<p>We may share information in the following circumstances:</p>
<ul class="ml-4 space-y-1">
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-blue"></span>
When required by law or legal process
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-blue"></span>
To protect our rights, property, or safety
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-blue"></span>
With service providers who assist in operating our platform
</li>
</ul>
</div>
</div>
<div class="space-y-2 text-base-content/80">
<p>We use collected information to:</p>
<ul class="ml-6 list-disc space-y-1">
<li>Provide match statistics and performance analysis</li>
<li>Track player performance over time</li>
<li>Generate charts and visualizations</li>
<li>Improve our service and user experience</li>
<li>Detect and prevent abuse</li>
</ul>
</div>
</Card>
<!-- Cookies -->
<Card padding="lg">
<div class="mb-4 flex items-center gap-2">
<Cookie class="h-6 w-6 text-primary" />
<h2 class="text-2xl font-bold text-base-content">Cookies and Local Storage</h2>
</div>
<div class="space-y-2 text-base-content/80">
<p>We use browser local storage to:</p>
<ul class="ml-6 list-disc space-y-1">
<li>Save your theme preference (light/dark mode)</li>
<li>Remember your favorite players</li>
<li>Track recently visited player profiles</li>
</ul>
<p class="mt-4">
You can clear this data at any time through your browser settings. No tracking cookies are
used.
<!-- Security -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<Lock
class="h-6 w-6 text-neon-green"
style="filter: drop-shadow(0 0 8px rgba(0, 255, 136, 0.5));"
/>
<h2 class="text-2xl font-bold text-white">Data Security</h2>
</div>
<p class="text-white/70">
We implement reasonable security measures to protect your information. However, no method of
transmission over the Internet is 100% secure. All Steam data displayed is already publicly
available through Steam's Community features.
</p>
</div>
</Card>
<!-- Data Sharing -->
<Card padding="lg">
<h2 class="mb-4 text-2xl font-bold text-base-content">Data Sharing and Disclosure</h2>
<div class="space-y-2 text-base-content/80">
<p>We do not sell, trade, or rent your personal information to third parties.</p>
<p>We may share information in the following circumstances:</p>
<ul class="ml-6 list-disc space-y-1">
<li>When required by law or legal process</li>
<li>To protect our rights, property, or safety</li>
<li>With service providers who assist in operating our platform</li>
</ul>
<!-- Your Rights -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<h2 class="mb-4 text-2xl font-bold text-white">Your Rights</h2>
<div class="space-y-2 text-white/70">
<p>You have the right to:</p>
<ul class="ml-4 space-y-1">
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-green"></span>
Access the data we have about you
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-green"></span>
Request correction of inaccurate data
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-green"></span>
Request deletion of your data
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-green"></span>
Opt-out of data collection by not using our service
</li>
</ul>
<p class="mt-4">
Since we only display publicly available Steam data, you can control what information is
public through your Steam privacy settings.
</p>
</div>
</div>
</Card>
<!-- Security -->
<Card padding="lg">
<h2 class="mb-4 text-2xl font-bold text-base-content">Data Security</h2>
<p class="text-base-content/80">
We implement reasonable security measures to protect your information. However, no method of
transmission over the Internet is 100% secure. All Steam data displayed is already publicly
available through Steam's Community features.
</p>
</Card>
<!-- Third-Party Services -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<Globe
class="h-6 w-6 text-neon-purple"
style="filter: drop-shadow(0 0 8px rgba(168, 85, 247, 0.5));"
/>
<h2 class="text-2xl font-bold text-white">Third-Party Services</h2>
</div>
<div class="space-y-2 text-white/70">
<p>Our service may contain links to third-party websites, including:</p>
<ul class="ml-4 space-y-1">
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-purple"></span>
Steam Community profiles
</li>
<li class="flex items-center gap-2">
<span class="h-1.5 w-1.5 rounded-full bg-neon-purple"></span>
Google Translate (for chat translation)
</li>
</ul>
<p class="mt-4">
We are not responsible for the privacy practices of these third-party services. Please
review their privacy policies.
</p>
</div>
</div>
<!-- Your Rights -->
<Card padding="lg">
<h2 class="mb-4 text-2xl font-bold text-base-content">Your Rights</h2>
<div class="space-y-2 text-base-content/80">
<p>You have the right to:</p>
<ul class="ml-6 list-disc space-y-1">
<li>Access the data we have about you</li>
<li>Request correction of inaccurate data</li>
<li>Request deletion of your data</li>
<li>Opt-out of data collection by not using our service</li>
</ul>
<p class="mt-4">
Since we only display publicly available Steam data, you can control what information is
public through your Steam privacy settings.
<!-- Children's Privacy -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<h2 class="mb-4 text-2xl font-bold text-white">Children's Privacy</h2>
<p class="text-white/70">
Our service is not directed to children under 13. We do not knowingly collect personal
information from children. If you believe we have collected information from a child, please
contact us.
</p>
</div>
</Card>
<!-- Third-Party Services -->
<Card padding="lg">
<h2 class="mb-4 text-2xl font-bold text-base-content">Third-Party Services</h2>
<div class="space-y-2 text-base-content/80">
<p>Our service may contain links to third-party websites, including:</p>
<ul class="ml-6 list-disc space-y-1">
<li>Steam Community profiles</li>
<li>Google Translate (for chat translation)</li>
</ul>
<p class="mt-4">
We are not responsible for the privacy practices of these third-party services. Please
review their privacy policies.
<!-- Changes -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<h2 class="mb-4 text-2xl font-bold text-white">Changes to This Policy</h2>
<p class="text-white/70">
We may update this Privacy Policy from time to time. Changes will be posted on this page
with an updated "Last updated" date. Continued use of the service after changes constitutes
acceptance of the updated policy.
</p>
</div>
</Card>
<!-- Children's Privacy -->
<Card padding="lg">
<h2 class="mb-4 text-2xl font-bold text-base-content">Children's Privacy</h2>
<p class="text-base-content/80">
Our service is not directed to children under 13. We do not knowingly collect personal
information from children. If you believe we have collected information from a child, please
contact us.
</p>
</Card>
<!-- Changes -->
<Card padding="lg">
<h2 class="mb-4 text-2xl font-bold text-base-content">Changes to This Policy</h2>
<p class="text-base-content/80">
We may update this Privacy Policy from time to time. Changes will be posted on this page with
an updated "Last updated" date. Continued use of the service after changes constitutes
acceptance of the updated policy.
</p>
</Card>
<!-- Contact -->
<Card padding="lg">
<div class="mb-4 flex items-center gap-2">
<Mail class="h-6 w-6 text-primary" />
<h2 class="text-2xl font-bold text-base-content">Contact Us</h2>
<!-- Contact -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<Mail
class="h-6 w-6 text-neon-blue"
style="filter: drop-shadow(0 0 8px rgba(0, 212, 255, 0.5));"
/>
<h2 class="text-2xl font-bold text-white">Contact Us</h2>
</div>
<p class="text-white/70">
If you have questions about this Privacy Policy or our data practices, please visit our
<a
href="https://somegit.dev/CSGOWTF/csgowtf"
target="_blank"
rel="noopener noreferrer"
class="text-neon-blue underline decoration-neon-blue/30 transition-colors hover:decoration-neon-blue"
>
GitHub repository
</a>
for more information or to report issues.
</p>
</div>
<p class="text-base-content/80">
If you have questions about this Privacy Policy or our data practices, please visit our GitHub
repository for more information or to report issues.
</p>
</Card>
<!-- Footer Note -->
<div class="text-center text-sm text-base-content/60">
<p>
teamflash.rip is not affiliated with Valve Corporation or Counter-Strike. All trademarks are
property of their respective owners.
</p>
<!-- Footer Note -->
<div class="text-center text-sm text-white/40">
<p>
teamflash.rip is not affiliated with Valve Corporation or Counter-Strike. All trademarks are
property of their respective owners.
</p>
</div>
</div>
</div>
<style>
.legal-content :global(h1),
.legal-content :global(h2),
.legal-content :global(h3) {
font-family:
system-ui,
-apple-system,
BlinkMacSystemFont,
'Segoe UI',
Roboto,
sans-serif;
}
</style>

View File

@@ -0,0 +1,233 @@
<script lang="ts">
import { FileText, AlertTriangle, Scale, Users, Ban, RefreshCw } from 'lucide-svelte';
const lastUpdated = new Date().toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
</script>
<svelte:head>
<title>Terms of Service | teamflash.rip</title>
<meta
name="description"
content="Terms of Service for teamflash.rip - CS2 match analysis platform."
/>
</svelte:head>
<div class="relative min-h-screen bg-void">
<!-- Decorative Background -->
<div class="pointer-events-none absolute inset-0 overflow-hidden">
<div class="absolute -left-40 top-20 h-80 w-80 rounded-full bg-neon-blue/10 blur-[100px]"></div>
<div
class="absolute -right-40 top-60 h-80 w-80 rounded-full bg-neon-purple/10 blur-[100px]"
></div>
<div
class="absolute inset-0 opacity-20"
style="background-image: linear-gradient(rgba(0, 212, 255, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 212, 255, 0.03) 1px, transparent 1px); background-size: 60px 60px;"
></div>
</div>
<!-- Content -->
<div class="legal-content container relative z-10 mx-auto max-w-4xl space-y-8 px-4 py-12">
<!-- Header -->
<div class="text-center">
<div class="mb-4 inline-flex rounded-full border border-neon-blue/30 bg-neon-blue/10 p-4">
<FileText class="h-12 w-12 text-neon-blue" />
</div>
<h1 class="mb-4 text-4xl font-bold text-white">Terms of Service</h1>
<p class="text-lg text-white/60">Last updated: {lastUpdated}</p>
</div>
<!-- Introduction -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<h2 class="mb-4 text-2xl font-bold text-white">Agreement to Terms</h2>
<p class="leading-relaxed text-white/70">
By accessing or using teamflash.rip ("the Service"), you agree to be bound by these Terms of
Service. If you do not agree to these terms, please do not use the Service. These terms
apply to all visitors, users, and others who access the Service.
</p>
</div>
<!-- Use of Service -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<Users class="h-6 w-6 text-neon-blue" />
<h2 class="text-2xl font-bold text-white">Use of Service</h2>
</div>
<div class="space-y-4 leading-relaxed text-white/70">
<p>
You agree to use the Service only for lawful purposes and in accordance with these Terms.
You agree not to:
</p>
<ul class="ml-4 space-y-2">
<li class="flex items-start gap-2">
<span class="mt-2 h-1.5 w-1.5 shrink-0 rounded-full bg-neon-blue"></span>
<span>Use the Service in any way that violates applicable laws or regulations</span>
</li>
<li class="flex items-start gap-2">
<span class="mt-2 h-1.5 w-1.5 shrink-0 rounded-full bg-neon-blue"></span>
<span>Attempt to gain unauthorized access to any part of the Service</span>
</li>
<li class="flex items-start gap-2">
<span class="mt-2 h-1.5 w-1.5 shrink-0 rounded-full bg-neon-blue"></span>
<span>Use automated systems to scrape or extract data without permission</span>
</li>
<li class="flex items-start gap-2">
<span class="mt-2 h-1.5 w-1.5 shrink-0 rounded-full bg-neon-blue"></span>
<span>Interfere with or disrupt the Service or servers connected to it</span>
</li>
<li class="flex items-start gap-2">
<span class="mt-2 h-1.5 w-1.5 shrink-0 rounded-full bg-neon-blue"></span>
<span>Use the Service to harass, abuse, or harm others</span>
</li>
</ul>
</div>
</div>
<!-- User Content -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<FileText class="h-6 w-6 text-neon-purple" />
<h2 class="text-2xl font-bold text-white">User Content</h2>
</div>
<div class="space-y-4 leading-relaxed text-white/70">
<p>
When you upload demo files or otherwise submit content to the Service, you grant us a
non-exclusive, worldwide, royalty-free license to use, store, and process that content
solely for the purpose of providing the Service.
</p>
<p>
You represent that you have the right to upload any demo files you submit and that doing
so does not violate any third-party rights or applicable laws.
</p>
</div>
</div>
<!-- Intellectual Property -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<Scale class="h-6 w-6 text-neon-gold" />
<h2 class="text-2xl font-bold text-white">Intellectual Property</h2>
</div>
<div class="space-y-4 leading-relaxed text-white/70">
<p>
The Service and its original content (excluding user-submitted content) are and will
remain the property of teamflash.rip and its contributors. The Service is licensed under
the GPL-3.0 license.
</p>
<p>
Counter-Strike, CS2, Steam, and related trademarks are property of Valve Corporation.
teamflash.rip is not affiliated with or endorsed by Valve Corporation.
</p>
</div>
</div>
<!-- Disclaimers -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<AlertTriangle class="h-6 w-6 text-neon-gold" />
<h2 class="text-2xl font-bold text-white">Disclaimers</h2>
</div>
<div class="space-y-4 leading-relaxed text-white/70">
<p>
The Service is provided "as is" and "as available" without warranties of any kind, either
express or implied, including but not limited to implied warranties of merchantability,
fitness for a particular purpose, or non-infringement.
</p>
<p>
We do not warrant that the Service will be uninterrupted, secure, or error-free. Match
statistics and analysis are provided for informational purposes only and may contain
inaccuracies.
</p>
</div>
</div>
<!-- Limitation of Liability -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<h2 class="mb-4 text-2xl font-bold text-white">Limitation of Liability</h2>
<p class="leading-relaxed text-white/70">
In no event shall teamflash.rip, its operators, or contributors be liable for any indirect,
incidental, special, consequential, or punitive damages, including without limitation loss
of profits, data, or use, arising out of or in connection with your use of the Service,
whether based on warranty, contract, tort, or any other legal theory.
</p>
</div>
<!-- Termination -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<Ban class="h-6 w-6 text-neon-red" />
<h2 class="text-2xl font-bold text-white">Termination</h2>
</div>
<p class="leading-relaxed text-white/70">
We may terminate or suspend your access to the Service immediately, without prior notice or
liability, for any reason, including if you breach these Terms. Upon termination, your right
to use the Service will immediately cease.
</p>
</div>
<!-- Changes -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<div class="mb-4 flex items-center gap-3">
<RefreshCw class="h-6 w-6 text-neon-blue" />
<h2 class="text-2xl font-bold text-white">Changes to Terms</h2>
</div>
<p class="leading-relaxed text-white/70">
We reserve the right to modify or replace these Terms at any time. Material changes will be
posted on this page with an updated date. Your continued use of the Service after changes
constitutes acceptance of the new Terms.
</p>
</div>
<!-- Governing Law -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<h2 class="mb-4 text-2xl font-bold text-white">Governing Law</h2>
<p class="leading-relaxed text-white/70">
These Terms shall be governed by and construed in accordance with applicable laws, without
regard to conflict of law provisions. Any disputes arising from these Terms or the Service
shall be resolved through good-faith negotiation.
</p>
</div>
<!-- Contact -->
<div class="rounded-xl border border-white/10 bg-void-light p-6">
<h2 class="mb-4 text-2xl font-bold text-white">Contact Us</h2>
<p class="leading-relaxed text-white/70">
If you have questions about these Terms, please visit our
<a
href="https://somegit.dev/CSGOWTF/csgowtf"
target="_blank"
rel="noopener noreferrer"
class="text-neon-blue underline decoration-neon-blue/30 transition-colors hover:decoration-neon-blue"
>
GitHub repository
</a>
or open an issue.
</p>
</div>
<!-- Footer Note -->
<div class="text-center text-sm text-white/40">
<p>
teamflash.rip is not affiliated with Valve Corporation or Counter-Strike. All trademarks are
property of their respective owners.
</p>
</div>
</div>
</div>
<style>
.legal-content :global(h1),
.legal-content :global(h2),
.legal-content :global(h3) {
font-family:
system-ui,
-apple-system,
BlinkMacSystemFont,
'Segoe UI',
Roboto,
sans-serif;
}
</style>