.turbo-progress-bar {
  height: 3px;
  background: linear-gradient(90deg, #22c55e, #16a34a);
  box-shadow: 0 1px 6px rgb(34 197 94 / 45%);
}

html[aria-busy="true"] {
  cursor: progress;
}

html[aria-busy="true"] #main-content {
  opacity: 0.985;
}

#main-content:focus {
  outline: none;
}

@media (prefers-reduced-motion: no-preference) {
  #main-content {
    transition: opacity 120ms ease;
  }
}

.catback-infinite-loader {
  display: flex;
  min-height: 54px;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 14px 8px 4px;
  color: #66758f;
  font: 600 11px/1.4 Inter, Arial, sans-serif;
  text-align: center;
}

.catback-infinite-loader[hidden] { display: none; }

.catback-chat-loader {
  display: none;
  min-width: 48px;
  height: 30px;
  flex: 0 0 48px;
  align-items: center;
  justify-content: center;
  gap: 4px;
  border: 1px solid rgba(11, 144, 152, .13);
  border-radius: 16px 16px 16px 6px;
  background: #eaf8f8;
  box-shadow: 0 4px 12px rgba(6, 87, 95, .1);
}

.catback-chat-loader > span {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #0b9098;
  animation: catback-chat-dot 1.05s ease-in-out infinite;
}

.catback-chat-loader > span:nth-child(2) { animation-delay: .14s; }
.catback-chat-loader > span:nth-child(3) { animation-delay: .28s; }

.catback-infinite-loader.is-loading .catback-chat-loader { display: inline-flex; }

.catback-infinite-loader.has-error .catback-chat-loader { display: none; }

.catback-infinite-loader.is-complete {
  min-height: 46px;
  color: #0b8790;
}

.catback-infinite-loader button {
  min-height: 34px;
  padding: 7px 14px;
  border: 1px solid #0b9098;
  border-radius: 999px;
  color: #087c89;
  background: #fff;
  font: inherit;
  font-weight: 750;
  cursor: pointer;
}

@keyframes catback-chat-dot {
  0%, 60%, 100% { opacity: .38; transform: translateY(0); }
  30% { opacity: 1; transform: translateY(-4px); }
}

@keyframes catback-infinite-item-enter {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

.is-infinite-new { animation: catback-infinite-item-enter .28s ease-out both; }

@media (prefers-reduced-motion: reduce) {
  .catback-chat-loader > span,
  .is-infinite-new { animation: none; }
}
