/* The Honk Party goose (js/goose.js): a round clay porthole in the bottom-left corner. Tap it and it honks. */
.goose { position: fixed; z-index: 39; left: calc(18px + var(--safe-l, 0px)); bottom: calc(18px + var(--safe-b, 0px)); width: 96px; aspect-ratio: 1; padding: 0; border-radius: 50%; overflow: hidden; isolation: isolate; cursor: pointer;
  border: 3px solid #14100c; background: #f3e6cf url(/art/goose/goose.webp) center / cover no-repeat; box-shadow: 0 4px 0 #14100c, 0 18px 40px -14px rgba(0, 0, 0, .9);
  transform-origin: 50% 100%; animation: goose-in .7s 1.4s var(--spring, cubic-bezier(.34, 1.56, .64, 1)) backwards; transition: transform .25s var(--spring, ease), box-shadow .2s; -webkit-tap-highlight-color: transparent; }
.goose[hidden] { display: none; }
.goose:hover { transform: translateY(-3px) rotate(-3deg); }
.goose:active { transform: translateY(2px) scale(.96); box-shadow: 0 1px 0 #14100c, 0 10px 24px -12px rgba(0, 0, 0, .9); }
.goose:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }
.goose video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 38%; display: block; opacity: 0; transition: opacity .1s linear; pointer-events: none; }
.goose video.on { opacity: 1; }
.goose video.on.cut { transition-duration: .2s; }
.goose::after { content: ''; position: absolute; inset: 0; z-index: 2; border-radius: 50%; pointer-events: none; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .35), inset 0 -14px 22px -12px rgba(0, 0, 0, .35); }
@keyframes goose-in { from { opacity: 0; transform: translateY(120%) rotate(-14deg); } }
@media (max-width: 640px) { .goose { width: 68px; left: calc(12px + var(--safe-l, 0px)); bottom: calc(14px + var(--safe-b, 0px)); border-width: 2.5px; box-shadow: 0 3px 0 #14100c, 0 12px 28px -12px rgba(0, 0, 0, .9); } }
@media (prefers-reduced-motion: reduce) { .goose { animation: none; transition: none; } }
html.splash .goose { visibility: hidden; }
