diff --git a/pets.html b/pets.html index a116b7d..3420a97 100644 --- a/pets.html +++ b/pets.html @@ -35,6 +35,44 @@ } #status.hidden { display: none; } + #version { + position: fixed; + bottom: 4px; + right: 8px; + font-size: 10px; + color: rgba(255,255,255,0.35); + font-family: ui-monospace, "SF Mono", Menlo, monospace; + pointer-events: none; + text-shadow: 0 0 3px rgba(0,0,0,0.8); + } + + #reload-toast { + position: fixed; + top: 24px; + left: 50%; + transform: translateX(-50%) translateY(-12px); + padding: 8px 18px; + background: rgba(20,20,28,0.85); + color: #fff; + font-size: 13px; + font-weight: 600; + font-family: ui-monospace, "SF Mono", Menlo, monospace; + letter-spacing: 0.06em; + border-radius: 999px; + border: 1px solid rgba(255,255,255,0.18); + box-shadow: 0 4px 18px rgba(0,0,0,0.5); + pointer-events: none; + opacity: 0; + z-index: 500; + animation: reload-toast 3.6s ease-out forwards; + } + @keyframes reload-toast { + 0% { opacity: 0; transform: translateX(-50%) translateY(-12px); } + 8% { opacity: 1; transform: translateX(-50%) translateY(0); } + 80% { opacity: 1; transform: translateX(-50%) translateY(0); } + 100% { opacity: 0; transform: translateX(-50%) translateY(-8px); } + } + .pet { position: absolute; bottom: 14px; @@ -302,6 +340,16 @@ 100% { transform: translate(var(--sway, 0), -110vh) scale(var(--end-scale, 1.1)); opacity: 0; } } + /* !barrelroll — rotates the entire viewport once. Gated by badge ownership. */ + .fx-barrelroll { + transform-origin: 50% 50%; + animation: barrelroll 1.4s cubic-bezier(.5,0,.5,1) forwards; + } + @keyframes barrelroll { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } + } + /* !quake — shakes the stage */ .fx-quake { animation: quake 0.55s linear; } @keyframes quake { @@ -400,6 +448,19 @@
+ + - + + +