/* Shared UI helpers extracted from inline blocks */
.loading-dots::after { content: ''; animation: loading 1.5s infinite; }
@keyframes loading {
  0%, 20% { content: ''; }
  40% { content: '.'; }
  60% { content: '..'; }
  80%, 100% { content: '...'; }
}
.adobe-button::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
  transition: left 0.5s;
}
.adobe-button:hover::before { left: 100%; }
.downloading { opacity: 0.7; cursor: not-allowed; pointer-events: none; }


