/* Processing states keep the component's existing button, field and colour tokens. */
[data-ev-processing="true"] button:disabled,
[data-ev-processing="true"] input[type="submit"]:disabled {
    cursor: wait;
    opacity: 0.65;
}
[data-ev-processing="true"][aria-disabled="true"] {
    cursor: wait;
    opacity: 0.65;
}
[data-ev-processing="true"] :is(input:not([type="hidden"]), textarea, select)[aria-disabled="true"] {
    opacity: 0.7;
    cursor: wait;
}
.ev-processing-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5em;
}
.ev-processing-spinner {
    display: inline-block;
    flex: 0 0 auto;
    width: 1em;
    height: 1em;
    border: 0.15em solid currentColor;
    border-inline-end-color: transparent;
    border-radius: 50%;
    animation: ev-processing-spin 0.8s linear infinite;
}
.ev-processing-status {
    margin-block-start: 0.75em;
    color: inherit;
    font: inherit;
}

/* One semantic palette for action results, long-form summaries and slow requests. */
.ev-feedback[data-ev-feedback-type],
.ev-validation-summary {
    --ev-feedback-background: var(--ev-color-info-background);
    --ev-feedback-border: var(--ev-color-info-border);
    --ev-feedback-color: var(--ev-color-info-text, var(--ev-color-link));

    box-sizing: border-box;
    min-inline-size: 0;
    inline-size: 100%;
    grid-column: 1 / -1;
    flex-basis: 100%;
    margin: 0.5em 0;
    padding: var(--ev-participant-info-padding, 0.75em 1em);
    border: 1px solid var(--ev-feedback-border);
    border-inline-start-width: 0.25rem;
    border-radius: var(--ev-participant-info-radius, 0.2rem);
    background: var(--ev-feedback-background);
    color: var(--ev-feedback-color);
    font-size: var(--ev-ticket-type-help, 1em);
    line-height: 1.5;
    overflow-wrap: anywhere;
}

.ev-feedback[data-ev-feedback-type="success"],
.ev-validation-summary[data-ev-feedback-type="success"] {
    --ev-feedback-background: var(--ev-color-success-background);
    --ev-feedback-border: var(--ev-color-success-border);
    --ev-feedback-color: var(--ev-color-success-text);
}

.ev-feedback[data-ev-feedback-type="warning"],
.ev-validation-summary[data-ev-feedback-type="warning"] {
    --ev-feedback-background: var(--ev-color-warning-background);
    --ev-feedback-border: var(--ev-color-warning-border);
    --ev-feedback-color: var(--ev-color-warning-text);
}

.ev-feedback[data-ev-feedback-type="error"],
.ev-validation-summary[data-ev-feedback-type="error"] {
    --ev-feedback-background: var(--ev-color-error-background);
    --ev-feedback-border: var(--ev-color-error-border);
    --ev-feedback-color: var(--ev-color-error-text);
}

.ev-feedback[data-ev-feedback-type] .ev-status {
    color: inherit;
    font: inherit;
}

.ev-feedback[hidden],
.ev-feedback:empty {
    display: none !important;
}

.ev-validation-summary ul {
    margin: 0.35em 0 0;
    padding-inline-start: 1.25em;
}

.ev-validation-summary a {
    color: inherit;
    text-decoration: underline;
}

.ev-validation-summary:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 2px;
}
@keyframes ev-processing-spin {
    to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
    .ev-processing-spinner { animation: none; }
}
