Files
Pat-Manager/Startseite.html
2026-03-23 20:49:30 +01:00

886 lines
26 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PAT Test Manager | Professionelle Leistungsdiagnostik für Billard</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
--primary: #0f172a;
--primary-light: #1e293b;
--accent: #3b82f6;
--accent-hover: #2563eb;
--success: #10b981;
--warning: #f59e0b;
--text: #f8fafc;
--text-muted: #94a3b8;
--surface: rgba(30, 41, 59, 0.6);
--border: rgba(148, 163, 184, 0.1);
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
background: var(--primary);
color: var(--text);
line-height: 1.6;
overflow-x: hidden;
}
/* Animated Background */
.bg-animation {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
background:
radial-gradient(ellipse at 20% 80%, rgba(59, 130, 246, 0.15) 0%, transparent 50%),
radial-gradient(ellipse at 80% 20%, rgba(16, 185, 129, 0.1) 0%, transparent 50%),
radial-gradient(ellipse at 40% 40%, rgba(245, 158, 11, 0.05) 0%, transparent 40%);
}
.grid-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image:
linear-gradient(rgba(148, 163, 184, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(148, 163, 184, 0.03) 1px, transparent 1px);
background-size: 60px 60px;
z-index: -1;
mask-image: linear-gradient(to bottom, transparent, black 20%, black 80%, transparent);
}
/* Navigation */
nav {
position: fixed;
top: 0;
width: 100%;
padding: 1.5rem 5%;
display: flex;
justify-content: space-between;
align-items: center;
z-index: 1000;
background: rgba(15, 23, 42, 0.8);
backdrop-filter: blur(20px);
border-bottom: 1px solid var(--border);
}
.logo {
font-size: 1.5rem;
font-weight: 800;
background: linear-gradient(135deg, var(--text) 0%, var(--accent) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
display: flex;
align-items: center;
gap: 0.75rem;
}
.logo-icon {
width: 40px;
height: 40px;
background: linear-gradient(135deg, var(--accent), var(--success));
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
-webkit-text-fill-color: white;
font-size: 1.2rem;
}
.nav-links {
display: flex;
gap: 2.5rem;
list-style: none;
}
.nav-links a {
color: var(--text-muted);
text-decoration: none;
font-weight: 500;
transition: color 0.3s;
position: relative;
}
.nav-links a:hover {
color: var(--text);
}
.nav-links a::after {
content: '';
position: absolute;
bottom: -5px;
left: 0;
width: 0;
height: 2px;
background: var(--accent);
transition: width 0.3s;
}
.nav-links a:hover::after {
width: 100%;
}
.nav-cta {
background: linear-gradient(135deg, var(--accent), var(--accent-hover));
color: white;
padding: 0.75rem 1.5rem;
border-radius: 8px;
text-decoration: none;
font-weight: 600;
transition: transform 0.3s, box-shadow 0.3s;
border: none;
cursor: pointer;
}
.nav-cta:hover {
transform: translateY(-2px);
box-shadow: 0 10px 30px rgba(59, 130, 246, 0.3);
}
/* Hero Section */
.hero {
min-height: 100vh;
display: flex;
align-items: center;
padding: 8rem 5% 4rem;
position: relative;
}
.hero-content {
max-width: 1400px;
margin: 0 auto;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
}
.hero-badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
background: rgba(59, 130, 246, 0.1);
border: 1px solid rgba(59, 130, 246, 0.2);
padding: 0.5rem 1rem;
border-radius: 50px;
font-size: 0.875rem;
color: var(--accent);
margin-bottom: 1.5rem;
animation: pulse 2s infinite;
}
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
.hero h1 {
font-size: clamp(2.5rem, 5vw, 4.5rem);
font-weight: 800;
line-height: 1.1;
margin-bottom: 1.5rem;
letter-spacing: -0.02em;
}
.hero h1 span {
background: linear-gradient(135deg, var(--accent) 0%, var(--success) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.hero p {
font-size: 1.25rem;
color: var(--text-muted);
margin-bottom: 2.5rem;
max-width: 540px;
line-height: 1.7;
}
.hero-buttons {
display: flex;
gap: 1rem;
flex-wrap: wrap;
}
.btn-primary {
background: linear-gradient(135deg, var(--accent), var(--accent-hover));
color: white;
padding: 1rem 2rem;
border-radius: 12px;
text-decoration: none;
font-weight: 600;
font-size: 1.1rem;
transition: all 0.3s;
display: inline-flex;
align-items: center;
gap: 0.5rem;
box-shadow: 0 4px 20px rgba(59, 130, 246, 0.3);
}
.btn-primary:hover {
transform: translateY(-3px);
box-shadow: 0 10px 40px rgba(59, 130, 246, 0.4);
}
.btn-secondary {
background: transparent;
color: var(--text);
padding: 1rem 2rem;
border-radius: 12px;
text-decoration: none;
font-weight: 600;
font-size: 1.1rem;
border: 1px solid var(--border);
transition: all 0.3s;
display: inline-flex;
align-items: center;
gap: 0.5rem;
}
.btn-secondary:hover {
background: var(--surface);
border-color: var(--accent);
}
/* Hero Visual */
.hero-visual {
position: relative;
perspective: 1000px;
}
.dashboard-preview {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 24px;
padding: 2rem;
backdrop-filter: blur(20px);
transform: rotateY(-5deg) rotateX(5deg);
transition: transform 0.5s;
box-shadow:
0 25px 50px -12px rgba(0, 0, 0, 0.5),
0 0 0 1px rgba(255, 255, 255, 0.05);
}
.dashboard-preview:hover {
transform: rotateY(0deg) rotateX(0deg);
}
.preview-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1.5rem;
padding-bottom: 1rem;
border-bottom: 1px solid var(--border);
}
.preview-stats {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 1rem;
}
.stat-card {
background: rgba(15, 23, 42, 0.5);
padding: 1.5rem;
border-radius: 16px;
border: 1px solid var(--border);
}
.stat-label {
font-size: 0.875rem;
color: var(--text-muted);
margin-bottom: 0.5rem;
}
.stat-value {
font-size: 2rem;
font-weight: 700;
color: var(--accent);
}
.progress-bar {
height: 8px;
background: rgba(255, 255, 255, 0.1);
border-radius: 4px;
margin-top: 0.75rem;
overflow: hidden;
}
.progress-fill {
height: 100%;
background: linear-gradient(90deg, var(--accent), var(--success));
border-radius: 4px;
width: 75%;
animation: fillProgress 2s ease-out;
}
@keyframes fillProgress {
from { width: 0; }
to { width: 75%; }
}
/* Features Section */
.features {
padding: 6rem 5%;
position: relative;
}
.section-header {
text-align: center;
max-width: 800px;
margin: 0 auto 4rem;
}
.section-tag {
display: inline-block;
background: rgba(16, 185, 129, 0.1);
color: var(--success);
padding: 0.5rem 1rem;
border-radius: 50px;
font-size: 0.875rem;
font-weight: 600;
margin-bottom: 1rem;
border: 1px solid rgba(16, 185, 129, 0.2);
}
.section-title {
font-size: clamp(2rem, 4vw, 3rem);
font-weight: 700;
margin-bottom: 1rem;
}
.section-subtitle {
color: var(--text-muted);
font-size: 1.25rem;
}
.features-grid {
max-width: 1400px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
.feature-card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 20px;
padding: 2.5rem;
transition: all 0.4s;
position: relative;
overflow: hidden;
}
.feature-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 2px;
background: linear-gradient(90deg, transparent, var(--accent), transparent);
opacity: 0;
transition: opacity 0.4s;
}
.feature-card:hover {
transform: translateY(-5px);
border-color: rgba(59, 130, 246, 0.3);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
}
.feature-card:hover::before {
opacity: 1;
}
.feature-icon {
width: 60px;
height: 60px;
background: linear-gradient(135deg, rgba(59, 130, 246, 0.2), rgba(16, 185, 129, 0.2));
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
margin-bottom: 1.5rem;
border: 1px solid rgba(59, 130, 246, 0.2);
}
.feature-card h3 {
font-size: 1.5rem;
margin-bottom: 1rem;
font-weight: 600;
}
.feature-card p {
color: var(--text-muted);
line-height: 1.7;
}
/* How it Works */
.how-it-works {
padding: 6rem 5%;
background: linear-gradient(to bottom, transparent, rgba(30, 41, 59, 0.3), transparent);
}
.steps-container {
max-width: 1200px;
margin: 0 auto;
display: flex;
justify-content: space-between;
gap: 2rem;
position: relative;
}
.steps-container::before {
content: '';
position: absolute;
top: 40px;
left: 10%;
right: 10%;
height: 2px;
background: linear-gradient(90deg, var(--accent), var(--success));
opacity: 0.3;
z-index: 0;
}
.step {
flex: 1;
text-align: center;
position: relative;
z-index: 1;
}
.step-number {
width: 80px;
height: 80px;
background: var(--primary);
border: 2px solid var(--accent);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
font-weight: 700;
color: var(--accent);
margin: 0 auto 1.5rem;
position: relative;
box-shadow: 0 0 30px rgba(59, 130, 246, 0.3);
}
.step h3 {
font-size: 1.25rem;
margin-bottom: 0.5rem;
}
.step p {
color: var(--text-muted);
font-size: 0.95rem;
}
/* Stats Section */
.stats-section {
padding: 4rem 5%;
}
.stats-grid {
max-width: 1200px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 2rem;
background: var(--surface);
border: 1px solid var(--border);
border-radius: 24px;
padding: 3rem;
backdrop-filter: blur(20px);
}
.stat-item {
text-align: center;
padding: 1rem;
}
.stat-item-number {
font-size: 3rem;
font-weight: 800;
background: linear-gradient(135deg, var(--text), var(--accent));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
display: block;
}
.stat-item-label {
color: var(--text-muted);
font-size: 0.95rem;
margin-top: 0.5rem;
}
/* CTA Section */
.cta-section {
padding: 6rem 5%;
text-align: center;
}
.cta-box {
max-width: 900px;
margin: 0 auto;
background: linear-gradient(135deg, rgba(59, 130, 246, 0.1), rgba(16, 185, 129, 0.1));
border: 1px solid rgba(59, 130, 246, 0.2);
border-radius: 32px;
padding: 4rem;
position: relative;
overflow: hidden;
}
.cta-box::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle, rgba(59, 130, 246, 0.1) 0%, transparent 70%);
animation: rotate 20s linear infinite;
}
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.cta-content {
position: relative;
z-index: 1;
}
.cta-box h2 {
font-size: 2.5rem;
margin-bottom: 1rem;
}
.cta-box p {
color: var(--text-muted);
font-size: 1.2rem;
margin-bottom: 2rem;
}
/* Footer */
footer {
padding: 3rem 5%;
border-top: 1px solid var(--border);
text-align: center;
color: var(--text-muted);
}
.footer-links {
display: flex;
justify-content: center;
gap: 2rem;
margin-bottom: 1.5rem;
list-style: none;
}
.footer-links a {
color: var(--text-muted);
text-decoration: none;
transition: color 0.3s;
}
.footer-links a:hover {
color: var(--accent);
}
/* Mobile Responsive */
@media (max-width: 968px) {
.hero-content {
grid-template-columns: 1fr;
text-align: center;
}
.hero p {
margin-left: auto;
margin-right: auto;
}
.hero-visual {
order: -1;
}
.dashboard-preview {
transform: none;
}
.nav-links {
display: none;
}
.steps-container {
flex-direction: column;
}
.steps-container::before {
display: none;
}
.stats-grid {
grid-template-columns: repeat(2, 1fr);
}
}
/* Scroll Animations */
.fade-in {
opacity: 0;
transform: translateY(30px);
transition: opacity 0.6s, transform 0.6s;
}
.fade-in.visible {
opacity: 1;
transform: translateY(0);
}
</style>
</head>
<body>
<div class="bg-animation"></div>
<div class="grid-overlay"></div>
<!-- Navigation -->
<nav>
<div class="logo">
<div class="logo-icon">🎯</div>
PAT Manager
</div>
<ul class="nav-links">
<li><a href="#features">Features</a></li>
<li><a href="#how-it-works">So funktioniert's</a></li>
<li><a href="#stats">Statistiken</a></li>
</ul>
<a href="https://pat.web-sache.cloud/" class="nav-cta">Jetzt starten →</a>
</nav>
<!-- Hero Section -->
<section class="hero">
<div class="hero-content">
<div class="hero-text">
<div class="hero-badge">
<span></span> Jetzt live verfügbar
</div>
<h1>
Professionelle <span>PAT-Test</span> Verwaltung
</h1>
<p>
Erfasse, analysiere und verfolge Pool Ability Tests digital.
Von der Eingabe bis zum Report alles in einer intuitiven Plattform
für Trainer, Vereine und Spieler.
</p>
<div class="hero-buttons">
<a href="https://pat.web-sache.cloud/" class="btn-primary">
Kostenlos testen →
</a>
<a href="#features" class="btn-secondary">
Mehr erfahren
</a>
</div>
</div>
<div class="hero-visual">
<div class="dashboard-preview">
<div class="preview-header">
<div style="font-weight: 600;">Live Übersicht</div>
<div style="color: var(--success); font-size: 0.875rem;">● Online</div>
</div>
<div class="preview-stats">
<div class="stat-card">
<div class="stat-label">PAT Aufschlag</div>
<div class="stat-value">4/6</div>
<div class="progress-bar">
<div class="progress-fill"></div>
</div>
</div>
<div class="stat-card">
<div class="stat-label">Gesamtpunktzahl</div>
<div class="stat-value" style="color: var(--success);">87%</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 87%;"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Features Section -->
<section class="features" id="features">
<div class="section-header fade-in">
<div class="section-tag">Funktionen</div>
<h2 class="section-title">Alles, was du für PAT-Tests brauchst</h2>
<p class="section-subtitle">
Von der digitalen Erfassung bis zur teamweiten Auswertung
optimiert für den Einsatz am Billardtisch.
</p>
</div>
<div class="features-grid">
<div class="feature-card fade-in">
<div class="feature-icon">📊</div>
<h3>Smarte Auswertungen</h3>
<p>Automatische Berechnungen für jede PAT-Test-Kategorie.
Erkenne Stärken und Schwächen auf einen Blick mit visuellen Dashboards.</p>
</div>
<div class="feature-card fade-in">
<div class="feature-icon">🔒</div>
<h3>Sichere Speicherung</h3>
<p>Supabase-Backend mit verschlüsselten Daten.
Granulare Nutzersteuerung für dein gesamtes Team oder Trainingsteam.</p>
</div>
<div class="feature-card fade-in">
<div class="feature-icon">👥</div>
<h3>Team-ready</h3>
<p>Gemeinsam testen, bewerten und Versionen verwalten.
Kein Chaos mehr mit Excel-Tabellen oder Zettelwirtschaft.</p>
</div>
<div class="feature-card fade-in">
<div class="feature-icon">📈</div>
<h3>Performance-Insights</h3>
<p>Verfolge Fortschritte über Zeit, identifiziere Trends
und optimiere dein Training mit datengestützten Entscheidungen.</p>
</div>
<div class="feature-card fade-in">
<div class="feature-icon"></div>
<h3>Mobile Erfassung</h3>
<p>Direkte Dateneingabe am Court schnell, einfach und
ohne Umwege. Perfekt für den Einsatz während des Trainings.</p>
</div>
<div class="feature-card fade-in">
<div class="feature-icon">📄</div>
<h3>Export & Reports</h3>
<p>Generiere professionelle Reports für Spieler, Trainer
oder Vereine. Teile Ergebnisse mit einem Klick.</p>
</div>
</div>
</section>
<!-- How it Works -->
<section class="how-it-works" id="how-it-works">
<div class="section-header fade-in">
<div class="section-tag">Prozess</div>
<h2 class="section-title">So läuft PAT mit uns</h2>
<p class="section-subtitle">Von der Testvorlage bis zum Report alles in einem Flow</p>
</div>
<div class="steps-container fade-in">
<div class="step">
<div class="step-number">1</div>
<h3>Vorlage wählen</h3>
<p>Wähle den PAT-Test, setze Namen und Datum los geht's.</p>
</div>
<div class="step">
<div class="step-number">2</div>
<h3>Daten erfassen</h3>
<p>Einzelwerte direkt am Court eingeben, automatisch verrechnen lassen.</p>
</div>
<div class="step">
<div class="step-number">3</div>
<h3>Analysieren</h3>
<p>Ergebnisse speichern, visualisieren und mit dem Team teilen.</p>
</div>
</div>
</section>
<!-- Stats Section -->
<section class="stats-section" id="stats">
<div class="stats-grid fade-in">
<div class="stat-item">
<span class="stat-item-number">100%</span>
<div class="stat-item-label">Digital</div>
</div>
<div class="stat-item">
<span class="stat-item-number">0€</span>
<div class="stat-item-label">Kostenlos starten</div>
</div>
<div class="stat-item">
<span class="stat-item-number">SSL</span>
<div class="stat-item-label">Verschlüsselt</div>
</div>
<div class="stat-item">
<span class="stat-item-number">24/7</span>
<div class="stat-item-label">Verfügbar</div>
</div>
</div>
</section>
<!-- CTA Section -->
<section class="cta-section">
<div class="cta-box fade-in">
<div class="cta-content">
<h2>Bereit, deine PAT-Tests zu professionalisieren?</h2>
<p>Starte in Minuten. Keine Kreditkarte erforderlich.</p>
<a href="https://pat.web-sache.cloud/" class="btn-primary" style="font-size: 1.2rem; padding: 1.25rem 2.5rem;">
Jetzt kostenlos ausprobieren →
</a>
</div>
</div>
</section>
<!-- Footer -->
<footer>
<ul class="footer-links">
<li><a href="https://pat.web-sache.cloud/">App öffnen</a></li>
<li><a href="#">Datenschutz</a></li>
<li><a href="#">Impressum</a></li>
<li><a href="#">Kontakt</a></li>
</ul>
<p>&copy; 2024 PAT Test Manager. Alle Rechte vorbehalten.</p>
</footer>
<script>
// Scroll Animation
const observerOptions = {
threshold: 0.1,
rootMargin: "0px 0px -50px 0px"
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
}
});
}, observerOptions);
document.querySelectorAll('.fade-in').forEach(el => observer.observe(el));
// Smooth Scroll
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({ behavior: 'smooth', block: 'start' });
}
});
});
</script>
</body>
</html>