/* MOB-002 — Pull-to-Refresh */
.ptr-indicator {
  position: fixed;
  top: 0;
  left: 50%;
  transform: translate(-50%, -120%);
  z-index: 10001;
  padding: 8px 16px;
  background: var(--ptr-bg, #1e293b);
  color: var(--ptr-text, #e2e8f0);
  border-radius: 0 0 12px 12px;
  font-size: 0.85rem;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
  transition: transform 0.15s ease-out;
  pointer-events: none;
}

.ptr-indicator.ptr-visible {
  transform: translate(-50%, 8px);
}

.ptr-indicator.ptr-spinning::after {
  content: ' …';
  animation: ptr-dots 0.8s steps(3) infinite;
}

@keyframes ptr-dots {
  0% { content: ''; }
  33% { content: ' .'; }
  66% { content: ' ..'; }
}
