.app-progress { position: fixed; z-index: 2200; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, #f1e1bd, #986424, #f1e1bd); background-size: 200% 100%; animation: app-loading 1.2s linear infinite; }
.app-notice { position: fixed; z-index: 2100; bottom: calc(88px + env(safe-area-inset-bottom)); left: 50%; transform: translateX(-50%); width: max-content; max-width: calc(100% - 2rem); padding: .75rem 1.15rem; border: 1px solid #d6c29e; border-radius: .85rem; background: #fffdf7; box-shadow: 0 5px 24px #46351b1a; color: #665030; font-size: .85rem; pointer-events: none; }
.app-notice.is-error { border-color: #d0a499; color: #8f3c32; background: #fff9f6; }
.ajax-validation { scroll-margin-top: 7rem; }
.ajax-validation:focus { outline-offset: 3px; }
.profile-avatar-image { object-fit: cover; }
@keyframes app-loading { to { background-position: -200% 0; } }
@media (prefers-reduced-motion: reduce) { .app-progress { animation: none; } }
@media print { .app-progress, .app-notice { display: none !important; } }
