/* Ações compartilhadas: botões, ícones, variantes e estados. */
.ui-button {
    display: inline-flex;
    min-height: var(--button-min-size);
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: var(--button-padding);
    border: 1px solid transparent;
    border-radius: var(--button-radius);
    font: 600 15px/1.25 var(--font-interface);
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    transition: background-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard);
}

body :is(button, a).ui-icon-only, .ui-icon-button,
.technical-icon-action,
.technical-document-actions :is(button,a),
.document-viewer :is(button,a),
.edital-icon-button,
.stage-actions .stage-arrow,
.represented-filters button {
    display: inline-flex;
    width: var(--icon-button-size);
    height: var(--icon-button-size);
    min-width: var(--icon-button-size);
    min-height: var(--icon-button-size);
    box-sizing: border-box;
    padding: 0;
    align-items: center;
    justify-content: center;
    border-radius: var(--button-radius);
}

body button.ui-filter-submit {
    width: var(--icon-button-size);
    height: var(--icon-button-size);
    min-width: var(--icon-button-size);
    min-height: var(--icon-button-size);
    padding: 0;
    border: 1px solid var(--action-neutral-border);
    border-radius: var(--button-radius);
    background: var(--action-neutral-bg);
    color: var(--forest);
    cursor: pointer;
    transition: background-color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard);
}

body button.ui-filter-submit:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)) {
    border-color: var(--action-neutral-border);
    background: var(--action-neutral-hover);
    color: var(--forest);
}

.ui-icon-only :is(svg, .technical-icon),
.ui-icon-button svg,
.technical-icon-action .technical-icon,
.technical-icon,
.lucide-icon {
    width: var(--icon-size);
    height: var(--icon-size);
    flex: 0 0 var(--icon-size);
}


body :is(button, a).ui-icon-only:focus-visible, .ui-icon-button:focus-visible {
    outline: 3px solid var(--focus-visible, var(--focus-on-light));
    outline-offset: 3px;
}

.ui-icon-button {
    border: 1px solid var(--action-neutral-border);
    background: var(--action-neutral-bg);
    color: var(--action-neutral-fg);
    cursor: pointer;
    transition: background-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard);
}

.ui-icon-button:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)) {
    background: var(--action-neutral-hover);
}

.ui-icon-button:disabled, body :is(button, a).ui-icon-only:disabled {
    opacity: .6;
    cursor: not-allowed;
}

.ui-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    clip-path: inset(50%);
}

:where(button[type="submit"]) {
    border-color: var(--action-primary-bg);
    background: var(--action-primary-bg);
    color: var(--action-primary-fg);
}

:where(button[type="submit"]:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *))) {
    border-color: var(--action-primary-hover);
    background: var(--action-primary-hover);
}

:where(button[type="button"]) {
    border-color: transparent;
    background: var(--action-neutral-bg);
    color: var(--action-neutral-fg);
}

:where(button[type="button"]:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *))) {
    background: var(--action-neutral-hover);
    color: var(--action-neutral-fg);
}

input:is([type="checkbox"], [type="radio"]) {
    accent-color: var(--toggle-accent);
}

.ui-button--primary, .action-save, .ui-icon-button.action-save {
    border-color: var(--action-primary-bg);
    background: var(--action-primary-bg);
    color: var(--action-primary-fg);
}

.ui-button--primary:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)), .action-save:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)), .ui-icon-button.action-save:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)) {
    border-color: var(--action-primary-hover);
    background: var(--action-primary-hover);
}

.ui-button--secondary, .action-close, .action-back, .action-cancel {
    border-color: var(--action-secondary-border);
    background: var(--action-secondary-bg);
    color: var(--action-secondary-fg);
}

.ui-button--secondary:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)), .action-close:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)), .action-back:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)), .action-cancel:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)) {
    background: var(--action-secondary-hover);
}

.ui-button--neutral {
    border-color: transparent;
    background: var(--action-neutral-bg);
    color: var(--action-neutral-fg);
}

.ui-button--neutral:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)) {
    background: var(--action-neutral-hover);
}

.ui-button--view, .ui-button--edit, .action-view, .ui-icon-button.action-view, .action-edit, .ui-icon-button.action-edit {
    border-color: var(--action-view-bg);
    background: var(--action-view-bg);
    color: var(--action-view-fg);
}

.ui-button--view:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)), .ui-button--edit:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)), .action-view:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)), .ui-icon-button.action-view:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)), .action-edit:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)), .ui-icon-button.action-edit:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)) {
    border-color: var(--action-view-hover);
    background: var(--action-view-hover);
    color: var(--action-view-fg);
}

.ui-button--view-inverse {
    border-color: var(--action-view-inverse-border);
    background: transparent;
    color: var(--action-view-inverse-fg);
}

.ui-button--view-inverse:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)) {
    border-color: var(--action-view-inverse-border);
    background: var(--action-view-inverse-hover);
    color: var(--action-view-inverse-fg);
}

.ui-button--danger, .action-delete, .ui-icon-button.action-delete {
    border-color: var(--action-danger-bg);
    background: var(--action-danger-bg);
    color: var(--action-danger-fg);
}

.ui-button--danger:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)), .action-delete:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)), .ui-icon-button.action-delete:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)) {
    border-color: var(--action-danger-hover);
    background: var(--action-danger-hover);
}

.ui-button--primary-inverse {
    background: var(--gold);
    color: var(--deep);
}

.ui-button--primary-inverse:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)) {
    background: var(--gold-hover);
}

.ui-button--secondary-inverse {
    border-color: #ffffffb3;
    color: var(--white);
}

.ui-button--secondary-inverse:hover:where(:not(:disabled, [aria-disabled="true"], [aria-busy="true"], [data-submitting="true"] *, [aria-busy="true"] *)) {
    background: #ffffff1a;
}

.ui-button:disabled {
    opacity: .62;
    cursor: not-allowed;
}

.ui-button:focus-visible {
    outline: 3px solid var(--focus-visible, var(--focus-on-light));
    outline-offset: 3px;
}

