.pulse-update-banner {
  position: fixed;
  z-index: 10000;
  left: 50%;
  bottom: max(18px, env(safe-area-inset-bottom));
  width: min(92vw, 520px);
  transform: translate(-50%, calc(100% + 48px));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 14px 16px 14px 20px;
  color: #f8f8fa;
  background: rgba(12, 12, 18, .96);
  border: 1px solid rgba(216, 255, 39, .35);
  border-radius: 18px;
  box-shadow: 0 22px 70px rgba(0, 0, 0, .45);
  font: 600 14px/1.25 Inter, system-ui, sans-serif;
  opacity: 0;
  pointer-events: none;
  transition: transform .28s ease, opacity .28s ease;
}
.pulse-update-banner.is-visible {
  transform: translate(-50%, 0);
  opacity: 1;
  pointer-events: auto;
}
.pulse-update-banner span {
  display: grid;
  gap: 3px;
}
.pulse-update-banner small {
  color: #a7a7b2;
  font-size: 12px;
  font-weight: 500;
}
.pulse-update-banner button {
  flex: none;
  padding: 10px 14px;
  color: #090a06;
  background: #d8ff27;
  border: 0;
  border-radius: 12px;
  font: 800 13px/1 Inter, system-ui, sans-serif;
  cursor: pointer;
}
