/* One feedback palette for server responses, validation and live updates. */
.shell :is(.action-feedback, [data-feedback-kind], .validation-summary-errors, .notice) {
    box-sizing: border-box; border: 1px solid currentColor; border-left-width: 4px;
    border-radius: 12px; padding: 16px 20px; margin: 16px 0 24px;
    font-size: .9375rem; line-height: 1.6; overflow-wrap: anywhere;
}
.shell [data-feedback-kind] { display: block; color: var(--ink); background: var(--evt-soft); }
.shell .notice { color: var(--ink); background: var(--evt-soft); }
.shell .notice::before { content: "Informação"; display: block; font-size: 1rem; font-weight: 700; margin-bottom: 4px; }
.shell :is(.action-feedback--success, [data-feedback-kind=success]) { color: var(--ok); background: var(--ok-soft); }
.shell :is(.action-feedback--error, [data-feedback-kind=error], .validation-summary-errors) { color: var(--bad); background: var(--bad-soft); }
.shell :is(.action-feedback--pending, [data-feedback-kind=pending]) { color: var(--warn); background: var(--warn-soft); }
.shell [data-feedback-kind]::before { display: block; width: auto; height: auto; border: 0; border-radius: 0; margin: 0 0 4px; font-weight: 700; animation: none; content: "Informação"; }
.shell [data-feedback-kind=success]::before { content: "✓ Concluído"; }
.shell [data-feedback-kind=error]::before { content: "! Não foi possível concluir"; }
.shell [data-feedback-kind=pending]::before { content: "◷ Em processamento"; }
.shell [data-feedback-kind].is-loading::before { content: ""; width: 22px; height: 22px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: feedback-spin .9s linear infinite; }
.shell :is(.action-feedback, [data-feedback-kind], .validation-summary-errors) strong { color: inherit; font-size: 1rem; }
.shell .action-feedback p { color: inherit; }
.shell [data-feedback-kind] :is(p, h2, h3) { color: inherit; }
.shell [data-feedback-kind] h2, .shell [data-feedback-kind] h3 { margin-top: 4px; }
.shell [data-feedback-kind]:empty, .shell [data-feedback-kind][hidden] { display: none !important; }
@keyframes feedback-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .shell [data-feedback-kind].is-loading::before { animation: none; } }

[data-snack-source] { display:none !important; }
.feedback-snacks { position:fixed; inset:16px 16px auto auto; margin:0; padding:0; border:0; background:transparent; width:min(420px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); overflow:auto; z-index:2147483647; pointer-events:none; }
.feedback-snacks:popover-open { display:grid; gap:10px; }
.feedback-snack { display:flex; align-items:flex-start; gap:12px; padding:16px 18px; border:1px solid; border-left-width:4px; border-radius:12px; box-shadow:0 8px 28px #16234226; font-family:inherit; font-size:.9375rem; line-height:1.5; overflow-wrap:anywhere; }
.feedback-snack > span:first-child { font-size:1.2rem; font-weight:700; flex-shrink:0; }
.feedback-snack--success { color:#146c50; background:#e6f4ed; border-color:#218564; }
.feedback-snack--error { color:#a3262d; background:#fff0f0; border-color:#c43c44; }
.feedback-snacks::backdrop { background:transparent; pointer-events:none; }
