/* A small travel companion for the footer, with a separate launch layer. */
.footer-bottom { align-items: center; }
.footer-bottom > .rocket-top {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 52px;
  margin-left: auto;
  padding: 0 5px;
  flex: 0 0 auto;
  align-self: center;
  color: inherit;
  border-radius: 12px;
  text-decoration: none;
  -webkit-tap-highlight-color: transparent;
}
.rocket-top-art {
  display: block;
  width: 88px;
  height: 88px;
  aspect-ratio: 1;
  flex: 0 0 88px;
  transform-origin: 50% 80%;
  transition: transform .25s ease, opacity .18s ease;
}
.rocket-top-art img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.rocket-top-label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .04em;
  white-space: nowrap;
}
.rocket-top-label svg { width: 17px; height: 17px; flex: none; }
.rocket-top:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 5px;
}
.rocket-top.is-launching .rocket-top-art { opacity: .18; }
@media (hover: hover) and (pointer: fine) {
  .rocket-top:hover .rocket-top-art { transform: translateY(-5px) rotate(-4deg); }
}
.rocket-flight {
  position: fixed;
  z-index: 120;
  width: 140px;
  height: 140px;
  aspect-ratio: 1;
  pointer-events: none;
  user-select: none;
  transform-origin: 50% 100%;
  will-change: transform, opacity;
  animation: nekotabi-rocket-flight 1.3s cubic-bezier(.36, 0, .72, .35) both;
}
.rocket-flight > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.rocket-flight-smoke {
  position: absolute;
  left: 50%;
  bottom: -2px;
  z-index: -1;
  width: 12px;
  height: 12px;
  margin-left: -6px;
  border-radius: 50%;
  background: var(--paper, #fff9ed);
  box-shadow: -7px 7px 0 1px #ffdfae, 7px 11px 0 2px var(--paper, #fff9ed);
  animation: nekotabi-rocket-smoke .55s ease-out infinite;
}
.rocket-flight-smoke:nth-of-type(2) { animation-delay: -.18s; }
.rocket-flight-smoke:nth-of-type(3) { animation-delay: -.36s; }
@keyframes nekotabi-rocket-flight {
  0% { transform: translate3d(0, 0, 0) rotate(0) scale(var(--rocket-start-scale, .68)); opacity: 1; }
  16% { transform: translate3d(1px, -12px, 0) rotate(3deg) scale(.88); opacity: 1; }
  38% { transform: translate3d(-7px, -65px, 0) rotate(-5deg) scale(1); opacity: 1; }
  100% { transform: translate3d(-24px, var(--rocket-rise, -100vh), 0) rotate(-8deg) scale(1); opacity: 1; }
}
@keyframes nekotabi-rocket-smoke {
  from { transform: translate3d(0, 0, 0) scale(.55); opacity: .65; }
  to { transform: translate3d(0, 54px, 0) scale(1.7); opacity: 0; }
}
@media (max-width: 760px) {
  .footer-bottom > .rocket-top { gap: 2px; }
  .rocket-top-art { width: 80px; height: 80px; flex-basis: 80px; }
  .rocket-top-label { font-size: 10px; gap: 5px; }
}
@media (prefers-reduced-motion: reduce) {
  .rocket-top-art { transition: none; }
  .rocket-top:hover .rocket-top-art { transform: none; }
  .rocket-flight { display: none; }
}
.motion-off .rocket-top-art { transition: none; }
.motion-off .rocket-top:hover .rocket-top-art { transform: none; }
.motion-off .rocket-flight { display: none; }
