/**
 * MIP — Action visibility / UX hardening V2 (MAIN + TENANTS)
 * Couche de cohérence visuelle par-dessus les thèmes existants.
 * V2 : tokens étendus, adaptateurs Hospital/POS, rôles icon-only, sticky élargi.
 *
 * PRIMARY   : .btn-primary, .btn.btn-primary, .submit-btn, .mip-tenant-btn--primary
 * SECONDARY : .btn-secondary, .btn-sm (footers), .modal-cancel, .mip-action--secondary
 * DANGER    : .btn-danger, .mip-action--danger, [data-delete], *.delete*
 * SUCCESS   : .btn-success, .mip-action--success
 * NEUTRAL   : .mip-action--neutral (Edit/View/Preview)
 */

:root {
    --mip-action-min-h: 42px;
    --mip-action-gap: 10px;
    --mip-action-radius: 10px;
    --mip-action-primary: var(--primary, var(--mip-emerald, #0d9488));
    --mip-action-primary-dark: var(--primary-dark, var(--mip-petrol, #004d40));
    --mip-action-secondary-bg: var(--surface, #fff);
    --mip-action-secondary-fg: var(--text, #334155);
    --mip-action-secondary-border: var(--border-color, #cbd5e1);
    --mip-action-danger: var(--danger, #dc2626);
    --mip-action-success: #059669;
    --mip-action-focus: var(--mip-action-primary);
    --mip-action-disabled-opacity: 0.55;
    --mip-action-icon-size: 36px;
}

/* ---------- PRIMARY ---------- */
.btn-primary,
.btn.btn-primary,
.submit-btn,
.mip-tenant-btn--primary,
.mip-modal-btn-primary,
.mip-alert-btn--primary,
.register-wizard-nav__btn--primary,
.mip-welcome-btn--primary {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    min-height: var(--mip-action-min-h);
    padding: 0.55rem 1.15rem;
    border-radius: var(--mip-action-radius);
    font-weight: 700;
    cursor: pointer;
    text-decoration: none;
    box-sizing: border-box;
}

/* Submit pleine largeur seulement hors barres d’actions */
.form-actions .submit-btn,
.mip-dialog-footer .submit-btn,
.mip-crud-dialog__footer .submit-btn,
.mip-tenant-dialog-footer .submit-btn,
.mip-tenant-dialog-form-footer .submit-btn,
.modal-footer .submit-btn,
.lab-form-actions .submit-btn,
.cds-form-footer .submit-btn,
.cds-appt-form-actions .submit-btn,
.form-actions .btn-primary,
.form-actions .btn.btn-primary,
.mip-dialog-footer .btn-primary,
.modal-footer .btn-primary,
.lab-form-actions .btn-primary,
.cds-form-footer .btn-primary,
.cds-appt-form-actions .btn-primary {
    width: auto !important;
    min-width: 7.5rem;
    flex: 0 0 auto;
}

/* Alias main app : btn-primary = même poids que submit-btn */
body.mip-main-app .btn-primary:not(.btn-sm):not(.btn-secondary):not(.btn-danger),
body.mip-main-app .btn.btn-primary:not(.btn-sm) {
    background: var(--mip-action-primary);
    color: #fff;
    border: 1px solid transparent;
    box-shadow: 0 2px 8px color-mix(in srgb, var(--mip-action-primary) 28%, transparent);
}
body.mip-main-app .btn-primary:not(.btn-sm):not(.btn-secondary):not(.btn-danger):hover,
body.mip-main-app .btn.btn-primary:not(.btn-sm):hover {
    background: var(--mip-action-primary-dark);
}

/* ---------- HOSPITAL adapter (.btn.btn-primary sans Bootstrap) ---------- */
.btn.btn-primary {
    background: var(--mip-action-primary);
    color: #fff;
    border: 1px solid transparent;
    box-shadow: 0 2px 8px color-mix(in srgb, var(--mip-action-primary) 24%, transparent);
}
.btn.btn-primary:hover {
    background: var(--mip-action-primary-dark);
    color: #fff;
}
.btn.btn-sm {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--mip-action-icon-size);
    min-width: var(--mip-action-icon-size);
    padding: 0.35rem 0.75rem;
    border-radius: 8px;
    border: 1px solid var(--mip-action-secondary-border);
    background: var(--mip-action-secondary-bg);
    font-weight: 600;
    cursor: pointer;
}

/* ---------- SECONDARY / CANCEL / BACK / CLOSE ---------- */
.btn-secondary,
.modal-cancel,
.mip-tenant-btn--secondary,
.mip-modal-btn-secondary,
.mip-alert-btn--secondary,
.mip-action--secondary {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    min-height: var(--mip-action-min-h);
    padding: 0.55rem 1.1rem;
    border-radius: var(--mip-action-radius);
    font-weight: 600;
    cursor: pointer;
    box-sizing: border-box;
}

/* Dans les footers, .btn-sm / liens Cancel → secondaire */
.form-actions > .btn-sm,
.mip-dialog-footer > .btn-sm,
.mip-crud-dialog__footer > .btn-sm,
.mip-tenant-dialog-footer > .btn-sm,
.modal-footer > .btn-sm:not([data-delete]):not(.btn-danger):not(.btn-primary):not(.mip-action--danger),
.form-actions > a.btn-sm,
.mip-dialog-footer > a.btn-sm,
.mip-crud-dialog__footer > a.btn-sm {
    min-height: var(--mip-action-min-h);
    padding: 0.5rem 1rem;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

/* ---------- DANGER ---------- */
.btn-danger,
.mip-modal-btn-danger,
button.btn-sm.btn-danger,
.mip-tenant-btn--danger,
.mip-action--danger {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    min-height: var(--mip-action-min-h);
    padding: 0.5rem 1rem;
    border-radius: var(--mip-action-radius);
    font-weight: 700;
    cursor: pointer;
    background: color-mix(in srgb, var(--mip-action-danger) 12%, #fff) !important;
    color: var(--mip-action-danger) !important;
    border: 1px solid color-mix(in srgb, var(--mip-action-danger) 45%, transparent) !important;
    box-sizing: border-box;
}
.btn-danger:hover,
.mip-modal-btn-danger:hover,
button.btn-sm.btn-danger:hover,
.mip-action--danger:hover {
    background: var(--mip-action-danger) !important;
    color: #fff !important;
    border-color: var(--mip-action-danger) !important;
}
[data-theme="dark"] .btn-danger,
[data-theme="dark"] .mip-modal-btn-danger,
[data-theme="dark"] button.btn-sm.btn-danger,
[data-theme="dark"] .mip-action--danger {
    background: color-mix(in srgb, var(--mip-action-danger) 22%, transparent) !important;
    color: #fecaca !important;
}

/* Delete en tableau — jamais plus dominant que Save */
.btn-sm[data-delete],
.btn-sm.action-delete,
.btn-sm.action-revoke-key,
.btn-sm.patient-delete,
.btn-sm.drug-delete,
.btn-sm.sub-delete,
.btn-sm.ad-delete,
.btn-sm.manufacturer-delete,
.btn-sm.disease-delete-btn,
.mip-tenant-btn-icon--danger,
.mip-action-icon.mip-action--danger {
    min-width: var(--mip-action-icon-size);
    min-height: var(--mip-action-icon-size);
    color: var(--mip-action-danger) !important;
    border-color: color-mix(in srgb, var(--mip-action-danger) 40%, var(--border-color, #cbd5e1)) !important;
    background: color-mix(in srgb, var(--mip-action-danger) 8%, #fff) !important;
    font-weight: 700;
}

/* Edit / View / Preview — neutre identifiable */
.mip-action-icon.mip-action--neutral,
.btn-sm.patient-edit,
.btn-sm.drug-edit,
.btn-sm.action-edit,
.btn-sm.patient-preview,
.btn-sm.drug-preview,
.btn-sm.action-preview,
.btn-sm.sub-preview,
.btn-sm.patient-dossier,
a.btn-icon {
    min-width: var(--mip-action-icon-size);
    min-height: var(--mip-action-icon-size);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--mip-action-secondary-border);
    border-radius: 8px;
    background: var(--mip-action-secondary-bg);
    font-weight: 600;
}

/* ---------- SUCCESS ---------- */
.btn-success,
.mip-tenant-btn--success,
.mip-action--success {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    min-height: var(--mip-action-min-h);
    padding: 0.5rem 1rem;
    border-radius: var(--mip-action-radius);
    font-weight: 700;
    cursor: pointer;
    background: color-mix(in srgb, var(--mip-action-success) 14%, #fff);
    color: var(--mip-action-success);
    border: 1px solid color-mix(in srgb, var(--mip-action-success) 40%, transparent);
    box-sizing: border-box;
}
.btn-success:hover,
.mip-action--success:hover {
    background: var(--mip-action-success);
    color: #fff;
}

/* ---------- ACTION BARS / FOOTERS ---------- */
.form-actions,
.mip-form-actions,
.mip-dialog-footer,
.mip-crud-dialog__footer,
.mip-tenant-dialog-footer,
.mip-tenant-dialog-form-footer,
.modal-footer,
.lab-form-actions,
.cds-form-footer,
.cds-appt-form-actions,
.mip-modal-footer,
.register-form-actions {
    display: flex !important;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: var(--mip-action-gap);
    row-gap: 0.65rem;
}

[dir="rtl"] .form-actions,
[dir="rtl"] .mip-dialog-footer,
[dir="rtl"] .modal-footer,
[dir="rtl"] .lab-form-actions,
[dir="rtl"] .cds-form-footer,
[dir="rtl"] .cds-appt-form-actions {
    justify-content: flex-end;
}

/* Toolbar Add/Create */
.list-header .btn-primary,
.list-toolbar .btn-primary,
.mip-list-toolbar .btn-primary,
.patients-toolbar .btn-primary,
.inventory-toolbar .btn-primary,
.mip-crud-toolbar .btn-primary,
.mip-tenant-dialog-toolbar .mip-tenant-btn--primary,
.page-header .btn-primary,
.view-header .btn-primary,
.btn.btn-primary#hospErRefresh,
.btn.btn-primary#hospAdmRefresh,
.btn.btn-primary#hospBedRefresh,
.btn.btn-primary#hospDeptRefresh,
.btn.btn-primary#hospPhRefresh {
    min-height: 44px;
    box-shadow: 0 3px 12px color-mix(in srgb, var(--mip-action-primary) 30%, transparent);
}

/* ---------- STICKY (opt-in + pages longues) ---------- */
.form-actions--sticky,
.mip-form-actions-bar,
body.mip-clinic-pro .cds-form-page > .cds-form-footer,
body.mip-clinic-pro .cds-form-page .cds-form-footer,
.mip-tenant-modern-form__footer,
body.mip-main-app #settings-view .mip-settings-save-row,
body.mip-main-app .mip-plans-page .mip-plans-actions,
body.mip-main-app #users-view form .form-actions,
body.mip-main-app #drugs-view form .mip-dialog-footer,
body.mip-main-app .mip-drugs-simple-form .mip-dialog-footer {
    position: sticky;
    bottom: 0;
    z-index: 40;
    padding: 0.75rem 1rem;
    margin-inline: 0;
    background: color-mix(in srgb, var(--bg-dark, #f8fafc) 92%, transparent);
    backdrop-filter: blur(8px);
    border-top: 1px solid var(--border-color, #e2e8f0);
    box-shadow: 0 -4px 16px rgba(15, 23, 42, 0.06);
}
[data-theme="dark"] .form-actions--sticky,
[data-theme="dark"] .mip-form-actions-bar,
[data-theme="dark"] body.mip-clinic-pro .cds-form-page .cds-form-footer,
[data-theme="dark"] .mip-tenant-modern-form__footer {
    background: color-mix(in srgb, #0f172a 88%, transparent);
    border-top-color: rgba(148, 163, 184, 0.25);
}

/* Pas de sticky dans les modales */
.mip-dialog-overlay .mip-dialog-footer,
.mip-crud-dialog-overlay .mip-crud-dialog__footer,
.mip-tenant-dialog-overlay .mip-tenant-dialog-footer,
.modal .modal-footer,
.mip-dialog-footer,
.mip-crud-dialog__footer,
.mip-tenant-dialog-footer,
.modal-footer,
.mip-modal-footer {
    position: static !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
}

.cds-consult-workspace-footer .btn-primary,
.cds-consult-workspace-footer .btn-secondary {
    min-height: var(--mip-action-min-h);
}

/* ---------- ICON-ONLY ---------- */
.btn-sm:where([title], [aria-label]),
.tenant-action-btn,
.cds-icon-action-btn,
.mip-action-icon,
a.btn-icon {
    min-width: var(--mip-action-icon-size);
    min-height: var(--mip-action-icon-size);
}

/* ---------- POS / Razipos : hiérarchie sans écraser le thème ---------- */
#razipos-view .btn-primary,
#pos-view .btn-primary,
.app-wrapper.pos-fullscreen .btn-primary,
html.razipos-mode .modal.razipos-modal .modal-footer .btn-primary {
    min-height: var(--mip-action-min-h) !important;
    font-weight: 700 !important;
}
#razipos-view .btn-secondary,
#pos-view .btn-secondary,
.app-wrapper.pos-fullscreen .btn-secondary,
html.razipos-mode .modal.razipos-modal .modal-footer .btn-secondary {
    min-height: var(--mip-action-min-h) !important;
    font-weight: 600 !important;
}
#razipos-view .modal-footer,
#pos-view .modal-footer,
#razipos-view .cart-actions,
#pos-view .cart-actions,
html.razipos-mode .modal.razipos-modal .modal-footer,
.modal-footer--pos-home {
    display: flex !important;
    flex-wrap: wrap;
    gap: var(--mip-action-gap);
    align-items: center;
    justify-content: flex-end;
}
#razipos-view .btn-danger,
#pos-view .btn-danger,
html.razipos-mode .btn-danger,
html.razipos-mode .modal.razipos-modal .btn-danger {
    min-height: var(--mip-action-min-h) !important;
    font-weight: 700 !important;
    /* Couleur danger reste distincte même sous thème POS */
    background: color-mix(in srgb, var(--mip-action-danger) 14%, #fff) !important;
    color: var(--mip-action-danger) !important;
    border: 1px solid color-mix(in srgb, var(--mip-action-danger) 45%, transparent) !important;
}
@media (max-width: 720px) {
    #razipos-view .modal-footer,
    #pos-view .modal-footer,
    html.razipos-mode .modal.razipos-modal .modal-footer {
        flex-direction: column-reverse;
        align-items: stretch;
    }
    #razipos-view .modal-footer > .btn-primary,
    #pos-view .modal-footer > .btn-primary,
    #razipos-view .modal-footer > .btn-secondary,
    #pos-view .modal-footer > .btn-secondary,
    html.razipos-mode .modal.razipos-modal .modal-footer > .btn-primary,
    html.razipos-mode .modal.razipos-modal .modal-footer > .btn-secondary {
        width: 100% !important;
    }
}

/* Pharmacy product modal footer */
#modalProduct.product-edit-modal .modal-footer .btn-primary,
#modalProduct.product-edit-modal .modal-footer .btn-secondary {
    min-height: var(--mip-action-min-h) !important;
    font-weight: 700 !important;
}

/* Emoji / icon-only MAIN : après classification JS, surpasser styles inline */
button.btn-sm.mip-action--danger,
button.btn-icon.mip-action--danger,
a.btn-icon.mip-action--danger {
    color: var(--mip-action-danger) !important;
    border-color: color-mix(in srgb, var(--mip-action-danger) 45%, transparent) !important;
    background: color-mix(in srgb, var(--mip-action-danger) 10%, #fff) !important;
}
button.btn-sm.mip-action--neutral,
a.btn-icon.mip-action--neutral,
a.btn-sm.mip-action--neutral {
    color: var(--mip-action-secondary-fg) !important;
    border-color: var(--mip-action-secondary-border) !important;
    background: var(--mip-action-secondary-bg) !important;
    font-weight: 600 !important;
}

/* ---------- Focus / disabled / loading ---------- */
.btn-primary:focus-visible,
.btn.btn-primary:focus-visible,
.btn-secondary:focus-visible,
.btn-danger:focus-visible,
.btn-success:focus-visible,
.btn-sm:focus-visible,
.submit-btn:focus-visible,
.mip-tenant-btn:focus-visible,
.modal-cancel:focus-visible,
.tenant-action-btn:focus-visible,
.mip-action-icon:focus-visible,
a.btn-icon:focus-visible {
    outline: 2px solid var(--mip-action-focus);
    outline-offset: 2px;
}

.btn-primary:disabled,
.btn.btn-primary:disabled,
.btn-secondary:disabled,
.btn-danger:disabled,
.submit-btn:disabled,
.mip-tenant-btn:disabled,
.mip-action-icon:disabled {
    opacity: var(--mip-action-disabled-opacity);
    cursor: not-allowed !important;
    transform: none !important;
    box-shadow: none !important;
}

.btn-primary.is-loading,
.submit-btn.is-loading,
.mip-tenant-btn--primary.is-loading {
    pointer-events: none;
    opacity: 0.75;
}

/* ---------- MOBILE ---------- */
@media (max-width: 720px) {
    .form-actions,
    .mip-dialog-footer,
    .mip-crud-dialog__footer,
    .mip-tenant-dialog-footer,
    .mip-tenant-dialog-form-footer,
    .modal-footer,
    .lab-form-actions,
    .cds-form-footer,
    .cds-appt-form-actions {
        flex-direction: column-reverse;
        align-items: stretch;
    }
    .form-actions > .btn-primary,
    .form-actions > .btn.btn-primary,
    .form-actions > .btn-secondary,
    .form-actions > .submit-btn,
    .form-actions > .btn-sm,
    .mip-dialog-footer > .btn-primary,
    .mip-dialog-footer > .btn-secondary,
    .mip-dialog-footer > .submit-btn,
    .mip-dialog-footer > .btn-sm,
    .modal-footer > .btn-primary,
    .modal-footer > .btn-secondary,
    .modal-footer > .btn-sm,
    .lab-form-actions > .btn-primary,
    .lab-form-actions > .btn-secondary {
        width: 100% !important;
        min-width: 0;
        justify-content: center;
    }
}
