feat: tablet-first UX overhaul with wizard improvements

- Tablet-first responsive scoreboard: whole player card is tap target
- Per-step wizard backgrounds and live summary panel
- Larger touch targets, safe-area handling, reduced-motion support
- German UI error strings in App.tsx
- Updated SOUL.md and README.md for current architecture
- Cleanup: removed legacy components, .cursor/, UI_IMPROVEMENTS.md
- Renamed package to bscscore, fixed TOTAL_WIZARD_STEPS
This commit is contained in:
Frank Schwenk
2026-09-21 17:59:31 +02:00
parent 3327f6e19e
commit 678977ab23
92 changed files with 3359 additions and 3063 deletions
+13 -14
View File
@@ -1,6 +1,5 @@
---
import "../styles/index.css";
import BscScoreApp from "../components/BscScoreApp.astro";
import App from "../components/App";
---
@@ -8,12 +7,9 @@ import App from "../components/App";
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content">
<title>BSC Score - Pool Scoring App</title>
<meta name="description" content="Professional pool/billiards scoring application for tournaments and casual games">
<!-- Performance optimizations -->
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover, interactive-widget=resizes-content">
<title>BSC Score – Live-Scoring am Billardtisch</title>
<meta name="description" content="Live-Scoring für 8-, 9- und 10-Ball am Billardtisch. Offline, schnell, ein Tipp pro Punkt.">
<!-- PWA Meta tags -->
<meta name="theme-color" content="#1a1a1a">
@@ -27,16 +23,19 @@ import App from "../components/App";
<link rel="icon" type="image/png" sizes="192x192" href="/icon-192.png">
<link rel="icon" type="image/png" sizes="512x512" href="/icon-512.png">
<link rel="apple-touch-icon" href="/icon-192.png">
<style>
#app-root {
height: var(--app-height, 100dvh);
width: 100%;
overflow: hidden;
}
</style>
</head>
<body>
<BscScoreApp>
<!--
Using client:only for the main app since it's highly interactive
and benefits from full client-side rendering
-->
<App client:only="preact" slot="app-content" />
</BscScoreApp>
<div id="app-root">
<App client:only="preact" />
</div>
<script>
if (typeof window !== 'undefined' && 'serviceWorker' in navigator) {
window.addEventListener('load', () => {