Prevent sheet editing after game completion and add game start celebration with enhanced splash screen animations
Added read-only enforcement for finished games by checking `winner_user_id` in backend PATCH endpoint and frontend sheet interactions. Implemented GameStartCelebration component with confetti burst, animated overlay card, and pulsing rune icon. Enhanced splash screen with orbiting border animation, sparkle effects, and title rise transition. Added haptic feedback (vibration) to sheet
This commit is contained in:
@@ -94,6 +94,36 @@
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.splash-card::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 18% 28%;
|
||||
border: 1px solid rgba(233, 216, 166, 0.24);
|
||||
border-radius: 50%;
|
||||
transform: rotate(-18deg);
|
||||
animation: orbit 2.8s ease-in-out infinite;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.magic-orbit {
|
||||
position: relative;
|
||||
width: 74px;
|
||||
height: 42px;
|
||||
margin: 0 auto 4px;
|
||||
}
|
||||
|
||||
.magic-orbit::before,
|
||||
.magic-orbit::after {
|
||||
content: "✦";
|
||||
position: absolute;
|
||||
color: rgba(233, 216, 166, 0.92);
|
||||
font-size: 16px;
|
||||
animation: sparkle 1.4s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.magic-orbit::before { left: 8px; top: 14px; }
|
||||
.magic-orbit::after { right: 8px; top: 3px; animation-delay: .55s; }
|
||||
|
||||
.splash-card::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
@@ -111,6 +141,7 @@
|
||||
color: rgba(245, 239, 220, 0.92);
|
||||
font-size: 18px;
|
||||
line-height: 1.25;
|
||||
animation: titleRise 700ms ease-out both;
|
||||
}
|
||||
|
||||
.splash-sub {
|
||||
@@ -156,6 +187,21 @@
|
||||
0%, 100% { opacity: 0.35; transform: scaleX(0.92); }
|
||||
50% { opacity: 0.85; transform: scaleX(1.02); }
|
||||
}
|
||||
|
||||
@keyframes orbit {
|
||||
0%, 100% { transform: rotate(-18deg) scale(.94); opacity: .45; }
|
||||
50% { transform: rotate(18deg) scale(1.06); opacity: .9; }
|
||||
}
|
||||
|
||||
@keyframes sparkle {
|
||||
0%, 100% { transform: translateY(3px) scale(.65); opacity: .25; }
|
||||
50% { transform: translateY(-4px) scale(1.2); opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes titleRise {
|
||||
from { opacity: 0; transform: translateY(8px); letter-spacing: .18em; }
|
||||
to { opacity: 1; transform: translateY(0); letter-spacing: .06em; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- Theme-Key sofort setzen -->
|
||||
@@ -170,6 +216,7 @@
|
||||
<body>
|
||||
<div id="app-splash" aria-hidden="true">
|
||||
<div class="splash-card">
|
||||
<div class="magic-orbit" aria-hidden="true"></div>
|
||||
<div class="splash-title">Zauber-Detektiv Notizbogen</div>
|
||||
<div class="splash-sub">Magie wird vorbereitet…</div>
|
||||
<div class="loader" aria-label="Laden"></div>
|
||||
|
||||
Reference in New Issue
Block a user