Conversation
…overage via CSS custom props Co-authored-by: Maangled <108793241+Maangled@users.noreply.github.com> Agent-Logs-Url: https://github.com/Maangled/ferros/sessions/c8ef5f9b-10db-4d57-bbd5-c8f2319a053c
Copilot
AI
changed the title
[WIP] Add achievement rocket animation and screen-wide fireworks
Upgrade fireworks: CSS custom-prop particles, 3-burst cascade, screen-wide coverage
Mar 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces the 16 fixed-direction
fwP*keyframes from PR A with a dynamic, randomized firework system that spreads particles across the full viewport on Genesis Pioneer unlock.CSS
@keyframes fwP1–fwP16(evenly spaced, 300px fixed radius)@keyframes fireworkParticlereads--fw-dx/--fw-dycustom properties set per element:JS —
showFireworks()#34d399, purple#a78bfa)box-shadowbox-shadowfor sparkleEach particle gets
--fw-dx/--fw-dycomputed from a randomized angle + distance, so no shared keyframe conflicts and no DOM style-tag proliferation. Containers self-remove after 2 600 ms.Original prompt
Context
This is a follow-up animation PR for
docs/personal-profile.html. A companion PR (PR A) is fixing the Begin button blocker and adding the boot animation sequence. This PR (PR B) adds the achievement rocket animation and screen-wide fireworks that play AFTER the user clicks the Begin button.CRITICAL: Read
docs/AGENT_GUIDE.mdbefore touching any code. All architecture constraints are binding. Key rules:file://protocol compatibility is mandatory — no external dependencies, nofetch(), no ES modules, no CDN linkssaveProfile()is the ONLY localStorage write point — do not bypasshashData()or remove the djb2 fallbackRead the ADRs in
docs/adr/— they are binding.What This PR Does
1. Rocket Emoji Animation on Begin Click
When the user clicks the Begin button (or when the first achievement "Genesis Pioneer" unlocks):
@keyframeswith a custommotion-pathor manualtransform: translate()keyframes to trace the circular pathImplementation approach:
Use JS to calculate the position offset between the Begin button and the Genesis Pioneer achievement card, set CSS custom properties, and trigger the animation.
2. Screen-Wide Fireworks on Achievement Unlock
When the Genesis Pioneer achievement unlocks (after the rocket lands):
Implementation approach:
Use JS to:
<div>elements--dxand--dyCSS custom properties for each (range: -300px to +300px in both axes)3. Enhanced Achievement Unlock Sequence
The full sequence when Begin is clicked or Genesis Pioneer triggers:
4. Achievement Hover Tooltip Fix (backup)
If PR A doesn't already fix this: The achievement card hover tooltips from PR #23 disappear when the user moves their cursor to click a button inside the tooltip.
Fix: Change from pure CSS
:hoverto a click-to-toggle pattern:.tooltip-activeclass that keeps the tooltip visibleIf PR A already fixed this, skip this section — check the current code on
mainfirst.Implementation Notes
This pull request was created from Copilot chat.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.