diff --git a/index.html b/index.html index 0fe44e1..5b3ac34 100644 --- a/index.html +++ b/index.html @@ -1496,6 +1496,47 @@

Session Receipt

+ + + diff --git a/styles.css b/styles.css index d96e065..7ff69a0 100644 --- a/styles.css +++ b/styles.css @@ -3099,3 +3099,53 @@ footer a:hover { .milestone-flash-overlay { animation: none; background: rgba(255, 51, 51, 0.1); } .milestone-flash-content { animation: none; } } + +/* ---- Grim Reaper ---- */ +.grim-reaper { + position: fixed; + bottom: 0; + left: 0; + z-index: 10; + opacity: 0.22; + transform: translateX(-22px); + transition: opacity 0.8s ease, transform 0.8s ease; + pointer-events: auto; + filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.5)); +} + +.grim-reaper:hover { + opacity: 0.55; + transform: translateX(0); +} + +.grim-reaper svg { + display: block; + width: 80px; + height: auto; + animation: reaper-float 5s ease-in-out infinite; +} + +@keyframes reaper-float { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-10px); } +} + +.reaper-eye-inner { + filter: drop-shadow(0 0 4px #ff3333); + animation: reaper-eye-pulse 3s ease-in-out infinite; +} + +@keyframes reaper-eye-pulse { + 0%, 100% { opacity: 0.7; } + 50% { opacity: 1; } +} + +@media (max-width: 480px) { + .grim-reaper svg { width: 55px; } +} + +@media (prefers-reduced-motion: reduce) { + .grim-reaper svg, + .reaper-eye-inner { animation: none; } + .grim-reaper { transition: none; } +}