/* ============================================================
   APP CONFIRM / APP BUSY — modal de confirmação e indicador de
   carregamento compartilhados por admin, painel e site.

   Substitui alert/confirm/prompt nativos: mesmo visual em toda a casa,
   com foco preso no diálogo, Esc para cancelar e Enter para confirmar.
   Cores em variáveis com fallback, para valer fora do admin (o site não
   carrega o reset.css).
   ============================================================ */
.appc_overlay {
    position: fixed; inset: 0; z-index: 99990;
    background: rgba(16, 18, 20, .62);
    backdrop-filter: blur(2px);
    display: flex; align-items: center; justify-content: center;
    padding: 20px;
    opacity: 0; transition: opacity .15s ease;
}
.appc_overlay.is-on { opacity: 1; }

.appc_box {
    width: 460px; max-width: 100%;
    background: var(--ui-surface, #fff);
    color: var(--ui-ink, #202223);
    border-radius: var(--ui-radius, 14px);
    box-shadow: 0 18px 48px -12px rgba(0, 0, 0, .45), 0 0 0 1px rgba(0, 0, 0, .06);
    padding: 22px 22px 18px;
    transform: translateY(8px) scale(.98); transition: transform .15s ease;
    font-size: 14px; line-height: 1.5;
}
.appc_overlay.is-on .appc_box { transform: none; }
.appc_title { font-size: 1.15em; font-weight: 700; margin: 0 0 8px; display: flex; align-items: center; gap: 10px; }
.appc_title .appc_ico { width: 30px; height: 30px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: rgba(29, 95, 191, .12); color: #1d5fbf; flex: 0 0 auto; }
.appc_box.is-danger .appc_title .appc_ico { background: rgba(179, 52, 31, .12); color: #b3341f; }
.appc_msg { margin: 0 0 16px; color: var(--ui-ink-2, #4a4d50); font-size: .95em; line-height: 1.55; overflow-wrap: anywhere; }
.appc_field { margin: -4px 0 16px; }
.appc_field label { display: block; font-size: .85em; font-weight: 600; margin-bottom: 5px; }
.appc_field input, .appc_field textarea {
    width: 100%; box-sizing: border-box; padding: 9px 11px;
    border: 1px solid var(--ui-line-2, var(--ui-line)); border-radius: 8px;
    background: var(--ui-surface, #fff); color: inherit; font: inherit;
}
.appc_field input:focus, .appc_field textarea:focus { outline: none; border-color: #1d5fbf; box-shadow: 0 0 0 2px rgba(29, 95, 191, .2); }
.appc_field .is-invalid { border-color: #b3341f; }
.appc_actions { display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.appc_btn {
    padding: 9px 16px; border-radius: 8px; border: 1px solid var(--ui-line-2, var(--ui-line));
    background: var(--ui-surface, #fff); color: inherit; font: inherit; font-weight: 600; cursor: pointer;
}
.appc_btn:hover { background: var(--ui-surface-2, #f3f4f5); }
.appc_btn:focus-visible { outline: 2px solid #1d5fbf; outline-offset: 2px; }
.appc_btn_primary { background: #1d5fbf; border-color: #1d5fbf; color: #fff; }
.appc_btn_primary:hover { background: #174c99; }
.appc_box.is-danger .appc_btn_primary { background: #b3341f; border-color: #b3341f; }
.appc_box.is-danger .appc_btn_primary:hover { background: #8f2918; }

/* Carregando: véu leve com spinner e texto. Fica por baixo do modal de
   confirmação e segura cliques enquanto a requisição roda. */
.appb_overlay {
    position: fixed; inset: 0; z-index: 99980;
    background: rgba(16, 18, 20, .38);
    display: flex; align-items: center; justify-content: center;
    opacity: 0; transition: opacity .12s ease; pointer-events: none;
}
.appb_overlay.is-on { opacity: 1; pointer-events: auto; cursor: progress; }
.appb_card {
    display: flex; align-items: center; gap: 12px;
    background: var(--ui-surface, #fff); color: var(--ui-ink, #202223);
    padding: 14px 18px; border-radius: 12px;
    box-shadow: 0 12px 32px -10px rgba(0, 0, 0, .4);
    font-size: 14px; line-height: 1.4; font-weight: 600;
}
.appb_spin {
    width: 22px; height: 22px; border-radius: 50%; flex: 0 0 auto;
    border: 3px solid rgba(29, 95, 191, .2); border-top-color: #1d5fbf;
    animation: appb_spin .8s linear infinite;
}
@keyframes appb_spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .appb_spin { animation-duration: 1.6s; } .appc_box, .appc_overlay, .appb_overlay { transition: none; } }
