/* ============================================================
   PBI Monitor — Botões (extensões ao Bootstrap)
   ============================================================ */

[data-theme="dark"] body .btn-success {
    background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));
    border: none;
    font-weight: var(--font-semibold);
    letter-spacing: var(--space-2xs);
}

[data-theme="dark"] body .btn-success:hover {
    background: linear-gradient(135deg, var(--color-primary-dark), var(--color-primary-darker));
    box-shadow: var(--shadow-glow-green);
}

@media (prefers-reduced-motion: reduce) {
    [data-theme="dark"] body .btn-success:hover {
        box-shadow: none;
    }
}

/* ============================================================
   Estado :disabled / .disabled — feedback visual universal
   Garante que o botão fica VISUALMENTE apagado mesmo sob
   gradientes customizados (tema dark). Casa com o gating
   programático do form_validator.js (auto-bind).

   Sem !important (governança): os seletores `:disabled` (0,2,0)
   já vencem `.em-generate-btn:hover`/`:active` (0,1,1) por
   especificidade. O bloco base não define `background`, então
   não conflita com o gradiente base de `.btn-success`. E como
   `pointer-events: none` impede o `:hover` de ativar em botão
   desabilitado, não é preciso anular o gradiente de hover.
   ============================================================ */
.btn:disabled,
.btn.disabled,
button[disabled].btn,
button.btn[aria-disabled="true"],
.em-generate-btn:disabled,
.em-generate-btn.disabled,
.em-copy-btn:disabled,
.em-copy-btn.disabled {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
    filter: grayscale(40%);
    box-shadow: none;
    transform: none;
}
