/* Partners 3.0 state helpers. Each treatment has one semantic purpose. */

.ss3-empty-state {
    padding: var(--ss3-space-2) 0;
    border: 0;
    background: transparent;
    color: var(--ss3-color-text-muted);
    font-size: var(--ss3-font-size-supporting);
    line-height: var(--ss3-line-height-body);
    text-align: left;
}

.ss3-empty-state:empty {
    display: none;
}

.ss3-loading-state {
    padding: var(--ss3-space-2) 0;
    border: 0;
    background: transparent;
    color: var(--ss3-color-text);
    font-size: var(--ss3-font-size-supporting);
    line-height: var(--ss3-line-height-body);
    text-align: left;
}

.ss3-save-state {
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--ss3-color-text-muted);
    font-size: var(--ss3-font-size-supporting);
    line-height: var(--ss3-line-height-body);
    text-align: left;
}

.ss3-save-state:empty {
    display: none;
}

.ss3-save-state.is-dirty {
    color: var(--ss3-color-warning);
    font-weight: var(--ss3-font-weight-strong);
}

.ss3-save-state.is-saving {
    color: var(--ss3-color-info);
    font-weight: var(--ss3-font-weight-strong);
}

.ss3-save-state.is-saved {
    color: var(--ss3-color-success);
    font-weight: var(--ss3-font-weight-strong);
}

.ss3-save-state.is-error {
    color: var(--ss3-color-error);
    font-weight: var(--ss3-font-weight-strong);
}

.ss3-save-state.is-readonly {
    color: var(--ss3-color-text-muted);
    font-weight: var(--ss3-font-weight-strong);
}

.ss3-loading-state[aria-busy="true"]::before,
.ss3-loading-state[data-ss3-loading="true"]::before {
    content: "";
    display: inline-block;
    width: 0.9rem;
    height: 0.9rem;
    margin-right: var(--ss3-space-2);
    border: 2px solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    vertical-align: -0.1rem;
    animation: ss3-spin 0.8s linear infinite;
}


.ss3-error-summary[data-ss3-message-host="true"].is-info {
    border-color: rgb(36 82 122 / 0.28);
    background: var(--ss3-color-info-bg);
    color: var(--ss3-color-info);
}

.ss3-error-summary[data-ss3-message-host="true"].is-success {
    border-color: rgb(20 108 67 / 0.28);
    background: var(--ss3-color-success-bg);
    color: var(--ss3-color-success);
}

.ss3-error-summary[data-ss3-message-host="true"].is-warning {
    border-color: rgb(138 90 0 / 0.32);
    background: var(--ss3-color-warning-bg);
    color: var(--ss3-color-warning);
}

.ss3-error-summary[data-ss3-message-host="true"].is-error {
    border-color: rgb(168 32 32 / 0.28);
    background: var(--ss3-color-error-bg);
    color: var(--ss3-color-error);
}

/* Shared perceptible action acknowledgement and asynchronous pending state. */
button[data-ss3-action-state="acknowledged"],
.button[data-ss3-action-state="acknowledged"] {
    filter: brightness(0.86);
    box-shadow: 0 0 0 3px var(--ss3-color-action-soft), inset 0 0 0 1px currentColor;
}

button[data-ss3-action-state="pending"],
.button[data-ss3-action-state="pending"] {
    cursor: progress;
    filter: brightness(0.9);
    box-shadow: 0 0 0 3px var(--ss3-color-action-soft), inset 0 0 0 1px currentColor;
    animation: ss3-action-pending 0.9s ease-in-out infinite alternate;
}

button[data-ss3-action-state="pending"] *,
.button[data-ss3-action-state="pending"] * {
    pointer-events: none;
}

@keyframes ss3-action-pending {
    from {
        filter: brightness(0.88);
    }
    to {
        filter: brightness(1.02);
    }
}

@media (prefers-reduced-motion: reduce) {
    .ss3-loading-state[aria-busy="true"]::before,
    .ss3-loading-state[data-ss3-loading="true"]::before,
    button[data-ss3-action-state="pending"],
    .button[data-ss3-action-state="pending"] {
        animation: none;
    }
}

.ss3-hidden {
    display: none !important;
}

@keyframes ss3-spin {
    to {
        transform: rotate(360deg);
    }
}

/* Shared indicator for stored/displayed Email values with an invalid pattern. */
.ss3-invalid-indicator {
    margin-inline-start: var(--ss3-space-1);
    color: var(--ss3-color-error);
    font-size: 0.9em;
    vertical-align: 0.05em;
}

[data-ss3-email-invalid="true"] {
    overflow-wrap: anywhere;
}

.ss3-loading-state [data-ss3-loading-elapsed] {
    margin-inline-start: var(--ss3-space-2);
    white-space: nowrap;
}

.ss3-loading-state[hidden] { display: none; }

/* Keep report captions in place; pending/failed reads are never an empty success. */
[data-ss3-loading="true"] table > thead,
[data-ss3-loading="true"] table > tbody,
[data-ss3-loading="true"] table > tfoot,
[data-ss3-loading="true"] .dt-info,
[data-ss3-loading="true"] .dt-paging,
[data-ss3-read-failed="true"] table > thead,
[data-ss3-read-failed="true"] table > tbody,
[data-ss3-read-failed="true"] table > tfoot,
[data-ss3-read-failed="true"] .dt-info,
[data-ss3-read-failed="true"] .dt-paging {
    visibility: hidden;
}
