.site-loading { position: fixed; z-index: 10000; inset: 0 0 auto; height: 3px; pointer-events: none; background: #795c4726; }
.site-loading[hidden] { display: none; }
.site-loading__bar { display: block; width: 36%; height: 100%; background: #795c47; animation: site-loading-travel 1.35s ease-in-out infinite; }
.site-loading__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.site-photo-frame { position: relative; }
.site-photo-loading { position: absolute; z-index: 3; top: 50%; left: 50%; display: grid; place-items: center; width: 2.75rem; height: 2.75rem; margin: -1.375rem; border: 1px solid #795c4730; border-radius: 50%; background: #fbfaf7f2; box-shadow: 0 3px 16px #1b1a1812; pointer-events: none; }
.site-photo-loading::before, .form-status.is-progress::before, #recolorForm[aria-busy="true"] #recolorStatus::before, .message-loading::before, .projects-loading i { content: ''; display: inline-block; flex: 0 0 auto; width: 1rem; height: 1rem; box-sizing: border-box; border: 2px solid #795c4733; border-top-color: #795c47; border-radius: 50%; animation: site-loading-spin .85s linear infinite; }
.form-status.is-progress:not(:empty), #recolorForm[aria-busy="true"] #recolorStatus { display: flex; align-items: center; gap: .65rem; color: var(--ink-soft, #55504a); }
.form-status.is-progress:empty::before { display: none; }
.form-status.is-progress[hidden] { display: none; }
.message-loading { display: flex; align-items: center; gap: .65rem; }
.message-loading::after { content: 'Готовим ответ…'; font-size: .85rem; color: var(--ink-soft, #55504a); }
.message-loading > span { display: none; }
@keyframes site-loading-spin { to { transform: rotate(360deg); } }
@keyframes site-loading-travel { from { transform: translateX(-100%); } to { transform: translateX(380%); } }
@media (prefers-reduced-motion: reduce) {
  .site-loading__bar { animation: none; width: 100%; opacity: .65; }
  .site-photo-loading::before, .form-status.is-progress::before, #recolorForm[aria-busy="true"] #recolorStatus::before, .message-loading::before, .projects-loading i { animation: none; border-top-color: #795c47; border-right-color: #795c47; }
}
@media (forced-colors: active) {
  .site-loading__bar { background: Highlight; }
  .site-photo-loading { background: Canvas; border-color: CanvasText; }
}
