/* Unified focus ring */
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
.input:focus-visible,
[role="button"]:focus-visible,
[tabindex]:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px var(--accent-glow);
    border-color: var(--accent);
}

/* Hover / active consistency */
.btn:active:not(:disabled),
button:active:not(:disabled) {
    transform: translateY(1px);
}

.btn:hover:not(:disabled),
.tab-btn:hover,
.page-link:hover {
    transition-timing-function: var(--easing-emphasized);
}

/* Simple visibility helper */
.is-hidden {
    display: none;
}

/* Loading state helpers */
.is-loading,
[aria-busy="true"] {
    cursor: progress;
}

.is-loading {
    opacity: 0.9;
}

.is-loading > .btn-text {
    opacity: 0.75;
}

.is-loading > .btn-loading {
    display: inline-flex !important;
}

/* Error / success form affordances */
.input.is-error,
input.is-error,
textarea.is-error,
select.is-error {
    border-color: var(--danger);
}

.input.is-success,
input.is-success,
textarea.is-success,
select.is-success {
    border-color: var(--success);
}

.form-hint.error,
.field-error {
    color: var(--danger);
}

.form-hint.success,
.field-success {
    color: var(--success);
}

/* Empty and error slots */
.loading,
.loading-state {
    color: var(--text-secondary);
}
