/* Sprint 3 Phase 2 — shared UI services */
.a3-ui-confirm { z-index: 12000; }
.a3-ui-confirm-dialog { width: min(440px, calc(100vw - 32px)); }
.a3-ui-confirm-dialog .modal-body p { margin: 0; line-height: 1.8; white-space: pre-wrap; }
.a3-ui-toast-action { border: 0; background: transparent; color: inherit; font-weight: 700; text-decoration: underline; cursor: pointer; margin-inline-start: 12px; }
.a3-ui-loading-overlay { position: fixed; inset: 0; z-index: 13000; display: grid; place-items: center; background: rgba(15, 23, 42, .38); backdrop-filter: blur(2px); }
.a3-ui-loading-card { min-width: 180px; display: flex; align-items: center; justify-content: center; gap: 12px; padding: 18px 22px; border-radius: 14px; background: var(--card-bg, #fff); color: var(--text-primary, #0f172a); box-shadow: 0 18px 55px rgba(15, 23, 42, .24); }
.a3-ui-spinner { width: 22px; height: 22px; border: 3px solid currentColor; border-inline-end-color: transparent; border-radius: 50%; animation: a3-ui-spin .75s linear infinite; }
@keyframes a3-ui-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .a3-ui-spinner { animation-duration: 1.5s; } }
