/* 77_01_01 – Primo livello del sistema condiviso di azioni CoParentManager.
 * Il riferimento visivo sono le azioni di Gestione Documentale: conserviamo
 * le varianti Bootstrap e i loro significati, senza riscrivere markup o eventi.
 * Solo pulsanti nell'area applicativa. Sidebar, collegamenti testuali, chiusure,
 * gruppi e input-group conservano le loro regole specialistiche.
 * Le correzioni cromatiche Dark sotto sono limitate al contenuto principale:
 * non ridefiniscono le barre di contesto e i widget già verificati.
 */
:root {
    --cpm-action-radius: .55rem;
    --cpm-action-font-weight: 600;
    --cpm-action-min-height: 2.375rem;
    --cpm-action-min-height-sm: 1.95rem;
    --cpm-action-min-height-lg: 2.8rem;
    --cpm-action-padding-y: .46rem;
    --cpm-action-padding-x: .875rem;
    --cpm-action-focus: #1d4ed8;
    --cpm-action-hover-shadow: 0 3px 10px rgba(15, 23, 42, .12);
    --cpm-action-disabled-opacity: .72;
}
html[data-bs-theme="dark"] {
    --cpm-action-focus: #a9caff;
    --cpm-action-hover-shadow: 0 3px 10px rgba(0, 0, 0, .3);
    --cpm-action-disabled-opacity: .76;
}

/* Manteniamo il display originale: pulsanti lunghi, responsive, toolbar e
 * controlli con spinner non devono cambiare struttura o area cliccabile. */
.app-layout-content :is(a.btn, button.btn, input.btn, summary.btn):not(.btn-close):not(.btn-link):not(.btn-group > .btn):not(.btn-group-vertical > .btn):not(.input-group > .btn) {
    box-sizing: border-box;
    font-weight: var(--cpm-action-font-weight);
    line-height: 1.25;
    border-radius: var(--cpm-action-radius);
    text-decoration: none;
    vertical-align: middle;
    transition: background-color .16s ease, border-color .16s ease,
                color .16s ease, box-shadow .16s ease, opacity .16s ease,
                transform .16s ease;
}
.app-layout-content :is(a.btn, button.btn, input.btn, summary.btn):not(.btn-close):not(.btn-link):not(.btn-sm):not(.btn-lg):not(.btn-group > .btn):not(.btn-group-vertical > .btn):not(.input-group > .btn) {
    min-height: var(--cpm-action-min-height);
    padding-block: var(--cpm-action-padding-y);
    padding-inline: var(--cpm-action-padding-x);
}
.app-layout-content :is(a.btn, button.btn, input.btn, summary.btn).btn-sm:not(.btn-close):not(.btn-link):not(.btn-group > .btn):not(.btn-group-vertical > .btn):not(.input-group > .btn) {
    min-height: var(--cpm-action-min-height-sm);
}
.app-layout-content :is(a.btn, button.btn, input.btn, summary.btn).btn-lg:not(.btn-close):not(.btn-link):not(.btn-group > .btn):not(.btn-group-vertical > .btn):not(.input-group > .btn) {
    min-height: var(--cpm-action-min-height-lg);
}

/* Ombra lieve al passaggio, senza inventare nuove azioni o sovrascrivere i
 * colori semantici di btn-primary/outline-*/
@media (hover: hover) {
    .app-layout-content main :is(a.btn, button.btn, input.btn, summary.btn):not(.btn-close):not(.btn-link):not(.btn-group > .btn):not(.btn-group-vertical > .btn):not(.input-group > .btn):hover:not(:disabled):not(.disabled):not([aria-disabled="true"]) {
        box-shadow: var(--cpm-action-hover-shadow);
    }
}

/* Stati condivisi: una distinzione netta fra focus da tastiera e hover.
 * Nessuna regola cambia disabled, aria-disabled, URL o gestione degli eventi. */
.app-layout-content :is(a.btn, button.btn, input.btn, summary.btn):not(.btn-close):focus-visible {
    outline: 2px solid var(--cpm-action-focus);
    outline-offset: 2px;
}
.app-layout-content :is(a.btn, button.btn, input.btn, summary.btn):is(:disabled, .disabled, [aria-disabled="true"]) {
    opacity: var(--cpm-action-disabled-opacity);
    cursor: not-allowed;
    transform: none !important;
    box-shadow: none;
}

/* In Dark gli outline Bootstrap grigio/scuro, verde e rosso sul fondo del
 * workspace risultano poco leggibili. Usiamo i token già presenti del tema,
 * lasciando intatti Light, primary già corretto e gli override di pagina.
 * :where() tiene bassa la specificità: le regole specialistiche prevalgono. */
html[data-bs-theme="dark"] .app-layout-content main :where(.btn-outline-secondary) {
    --bs-btn-color: #c5d1dd;
    --bs-btn-border-color: #8ca3b8;
    --bs-btn-hover-color: #101820;
    --bs-btn-hover-bg: #c5d1dd;
    --bs-btn-hover-border-color: #c5d1dd;
    --bs-btn-active-color: #101820;
    --bs-btn-active-bg: #c5d1dd;
    --bs-btn-active-border-color: #c5d1dd;
    --bs-btn-disabled-color: #c5d1dd;
    --bs-btn-disabled-border-color: #8ca3b8;
}
html[data-bs-theme="dark"] .app-layout-content main :where(.btn-outline-dark) {
    --bs-btn-color: #e2ebf4;
    --bs-btn-border-color: #a8bacb;
    --bs-btn-hover-color: #101820;
    --bs-btn-hover-bg: #e2ebf4;
    --bs-btn-hover-border-color: #e2ebf4;
    --bs-btn-active-color: #101820;
    --bs-btn-active-bg: #e2ebf4;
    --bs-btn-active-border-color: #e2ebf4;
    --bs-btn-disabled-color: #e2ebf4;
    --bs-btn-disabled-border-color: #a8bacb;
}
html[data-bs-theme="dark"] .app-layout-content main :where(.btn-outline-success) {
    --bs-btn-color: var(--cpm-success);
    --bs-btn-border-color: var(--cpm-success);
    --bs-btn-hover-color: #101820;
    --bs-btn-hover-bg: var(--cpm-success);
    --bs-btn-hover-border-color: var(--cpm-success);
    --bs-btn-active-color: #101820;
    --bs-btn-active-bg: var(--cpm-success);
    --bs-btn-active-border-color: var(--cpm-success);
    --bs-btn-disabled-color: var(--cpm-success);
    --bs-btn-disabled-border-color: var(--cpm-success);
}
html[data-bs-theme="dark"] .app-layout-content main :where(.btn-outline-danger) {
    --bs-btn-color: var(--cpm-danger);
    --bs-btn-border-color: var(--cpm-danger);
    --bs-btn-hover-color: #101820;
    --bs-btn-hover-bg: var(--cpm-danger);
    --bs-btn-hover-border-color: var(--cpm-danger);
    --bs-btn-active-color: #101820;
    --bs-btn-active-bg: var(--cpm-danger);
    --bs-btn-active-border-color: var(--cpm-danger);
    --bs-btn-disabled-color: var(--cpm-danger);
    --bs-btn-disabled-border-color: var(--cpm-danger);
}

@media (prefers-reduced-motion: reduce) {
    .app-layout-content :is(a.btn, button.btn, input.btn, summary.btn):not(.btn-close) {
        transition: none;
        transform: none;
    }
}
