diff --git a/src/web_generator.py b/src/web_generator.py index 60bb50c1..95db9477 100644 --- a/src/web_generator.py +++ b/src/web_generator.py @@ -4700,6 +4700,81 @@ def generate_web_flashcards(numbers, config, output_path): }} }} + /* Route Completion Celebration */ + .route-completion-celebration {{ + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.8); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; + animation: celebrationFadeIn 0.5s ease-out; + }} + + .celebration-content {{ + background: linear-gradient(135deg, #ffd700, #ffed4e); + color: #333; + padding: 40px; + border-radius: 20px; + text-align: center; + box-shadow: 0 20px 40px rgba(255, 215, 0, 0.3); + animation: celebrationBounce 0.8s ease-out; + max-width: 400px; + }} + + .celebration-content h2 {{ + margin: 0 0 15px 0; + font-size: 1.8rem; + font-weight: 700; + }} + + .celebration-content p {{ + margin: 0 0 20px 0; + font-size: 1.1rem; + font-weight: 600; + }} + + .progress-stats {{ + display: flex; + flex-direction: column; + gap: 8px; + font-size: 0.95rem; + font-weight: 600; + }} + + .progress-stats div {{ + background: rgba(255, 255, 255, 0.3); + padding: 8px 12px; + border-radius: 8px; + }} + + @keyframes celebrationFadeIn {{ + from {{ + opacity: 0; + }} + to {{ + opacity: 1; + }} + }} + + @keyframes celebrationBounce {{ + 0% {{ + transform: scale(0.3) rotate(-10deg); + opacity: 0; + }} + 50% {{ + transform: scale(1.05) rotate(2deg); + }} + 100% {{ + transform: scale(1) rotate(0deg); + opacity: 1; + }} + }} + .equation-visual {{ display: flex; @@ -5349,6 +5424,15 @@ def generate_web_flashcards(numbers, config, output_path): letter-spacing: 1px; z-index: 10; box-shadow: 0 4px 12px rgba(0,0,0,0.3); + text-align: center; + }} + + .route-progress {{ + font-size: 0.75rem; + font-weight: 600; + margin-top: 4px; + opacity: 0.8; + letter-spacing: 0.5px; }} /* Winding Route Map */ @@ -7628,7 +7712,10 @@ def generate_web_flashcards(numbers, config, output_path):