/* brand palette start */
/* NOTE: one brand purple, one hover tint, one active tint. Every purple in the
   application derives from these three tokens. Do not introduce a new hex value
   here: change the token, or add a derived token next to it. */
:root {
    --dealisoft-brand: #741f74;
    --dealisoft-brand-hover: #5c185c;
    --dealisoft-brand-active: #4b134b;
    --dealisoft-brand-rgb: 116, 31, 116;
}
/* NOTE: brand green is the "success" color: confirm controls, success buttons and
   badges. Brand red is the "danger" color: cancel controls, delete actions, danger
   alerts, invalid fields. Same rule as the purple: derive, never add a hex. */
:root {
    --dealisoft-success: #86cb3a;
    --dealisoft-success-hover: #72ad31;
    --dealisoft-success-active: #6ba22e;
    --dealisoft-success-rgb: 134, 203, 58;
    --dealisoft-danger: #ff0000;
    --dealisoft-danger-hover: #d90000;
    --dealisoft-danger-active: #cc0000;
    --dealisoft-danger-rgb: 255, 0, 0;
}
/* brand palette end */

/* root overrides start */
/* NOTE: bootstrap reads --bs-primary / --bs-primary-rgb for the *-primary utilities
   and --bs-link-* for links, so setting them here is what keeps the framework's own
   default blue out of the application. Component colors are set through each
   component's own --bs-btn-* variables below, which is bootstrap's supported
   extension point and needs no !important. */
:root {
    --bs-primary: var(--dealisoft-brand);
    --bs-primary-rgb: var(--dealisoft-brand-rgb);
    --bs-link-color: var(--dealisoft-brand);
    --bs-link-color-rgb: var(--dealisoft-brand-rgb);
    --bs-link-hover-color: var(--dealisoft-brand-hover);
    --bs-link-hover-color-rgb: var(--dealisoft-brand-rgb);
    --bs-list-group-active-bg: var(--dealisoft-brand);
    --bs-list-group-active-border-color: var(--dealisoft-brand);
    --bs-list-group-active-color: #ffffff;
    --bs-btn-disabled-bg: #e9ecef;
    --bs-btn-disabled-border-color: #ced4da;
    --bs-btn-disabled-color: #6c757d;
    --bs-btn-focus-shadow-rgb: var(--dealisoft-brand-rgb);
    --bs-success: var(--dealisoft-success);
    --bs-success-rgb: var(--dealisoft-success-rgb);
    --bs-danger: var(--dealisoft-danger);
    --bs-danger-rgb: var(--dealisoft-danger-rgb);
    /* alert-success, table-success and list-group-item-success are built from these three */
    --bs-success-text-emphasis: #365117;
    --bs-success-bg-subtle: #e7f5d8;
    --bs-success-border-subtle: #cfeab0;
    /* alert-danger, table-danger and list-group-item-danger are built from these three */
    --bs-danger-text-emphasis: #660000;
    --bs-danger-bg-subtle: #ffcccc;
    --bs-danger-border-subtle: #ff9999;
    /* is-invalid border and invalid-feedback text */
    --bs-form-invalid-color: var(--dealisoft-danger);
    --bs-form-invalid-border-color: var(--dealisoft-danger);
}
/* root overrides end */

/* list group colors overrides start */
/* NOTE: bootstrap hardcodes colors for list group items, so root variables won't affect them, so we need to override them here */
.list-group {
    --bs-list-group-active-color: #fff;
    --bs-list-group-active-bg: var(--dealisoft-brand);
    --bs-list-group-active-border-color: var(--dealisoft-brand);
}
/* list group colors overrides end */

/* Primary color overrides start */

.btn-primary {
    --bs-btn-color: #ffffff;
    --bs-btn-bg: var(--dealisoft-brand);
    --bs-btn-border-color: var(--dealisoft-brand);
    --bs-btn-hover-color: #ffffff;
    --bs-btn-hover-bg: var(--dealisoft-brand-hover);
    --bs-btn-hover-border-color: var(--dealisoft-brand-hover);
    --bs-btn-active-color: #ffffff;
    --bs-btn-active-bg: var(--dealisoft-brand-active);
    --bs-btn-active-border-color: var(--dealisoft-brand-active);
    --bs-btn-focus-shadow-rgb: var(--dealisoft-brand-rgb);
}

.btn-outline-primary {
    --bs-btn-color: var(--dealisoft-brand);
    --bs-btn-border-color: var(--dealisoft-brand);
    --bs-btn-hover-color: #ffffff;
    --bs-btn-hover-bg: var(--dealisoft-brand);
    --bs-btn-hover-border-color: var(--dealisoft-brand);
    --bs-btn-active-color: #ffffff;
    --bs-btn-active-bg: var(--dealisoft-brand-active);
    --bs-btn-active-border-color: var(--dealisoft-brand-active);
    --bs-btn-focus-shadow-rgb: var(--dealisoft-brand-rgb);
}
/* NOTE: no :focus background rule. A mouse click leaves focus on the button, so
   repainting on :focus left every primary button visibly "lit" until the user
   clicked elsewhere, which read as a stuck or still-loading control. Bootstrap's
   own :focus-visible ring, driven by --bs-btn-focus-shadow-rgb above, covers
   keyboard focus without touching the resting appearance. */
 *:focus:not(:focus-visible) { outline: none; }

.btn:disabled,
.btn.disabled{
    background-color: #e9ecef !important;
    border-color: #ced4da !important;
    color: black !important;
    pointer-events: none !important;
    background-image: repeating-linear-gradient(
        45deg,
        rgba(255, 255, 255, 0.35),
        rgba(255, 255, 255, 0.35) 6px,
        rgba(0, 0, 0, 0.08) 6px,
        rgba(0, 0, 0, 0.08) 12px
    ) !important;
}

.form-check-input:disabled,
.form-check-input.disabled {
    background-image: repeating-linear-gradient(
        45deg,
        rgba(255, 255, 255, 0.35),
        rgba(255, 255, 255, 0.35) 3px,
        rgba(0, 0, 0, 0.35) 3px,
        rgba(0, 0, 0, 0.35) 6px
    ) !important;
}

/* NOTE: .bg-primary, .text-primary and .border-primary are intentionally not
   redeclared. Bootstrap builds all three from --bs-primary-rgb, which is set to the
   brand token above, so they now follow the palette on their own. */

/* Primary color overrides end */

/* Success color overrides start */
.btn-success {
    --bs-btn-color: #ffffff;
    --bs-btn-bg: var(--dealisoft-success);
    --bs-btn-border-color: var(--dealisoft-success);
    --bs-btn-hover-color: #ffffff;
    --bs-btn-hover-bg: var(--dealisoft-success-hover);
    --bs-btn-hover-border-color: var(--dealisoft-success-hover);
    --bs-btn-active-color: #ffffff;
    --bs-btn-active-bg: var(--dealisoft-success-active);
    --bs-btn-active-border-color: var(--dealisoft-success-active);
    --bs-btn-focus-shadow-rgb: var(--dealisoft-success-rgb);
}

.btn-outline-success {
    --bs-btn-color: var(--dealisoft-success);
    --bs-btn-border-color: var(--dealisoft-success);
    --bs-btn-hover-color: #ffffff;
    --bs-btn-hover-bg: var(--dealisoft-success);
    --bs-btn-hover-border-color: var(--dealisoft-success);
    --bs-btn-active-color: #ffffff;
    --bs-btn-active-bg: var(--dealisoft-success-active);
    --bs-btn-active-border-color: var(--dealisoft-success-active);
    --bs-btn-focus-shadow-rgb: var(--dealisoft-success-rgb);
}

/* NOTE: .bg-success and .border-success follow --bs-success-rgb on their own.
   .text-success keeps bootstrap's darker green: the brand green is a fill color and
   does not read as text on white. */
.text-success {
    color: #198754 !important;
}
/* Success color overrides end */

/* Danger color overrides start */
.btn-danger {
    --bs-btn-color: #ffffff;
    --bs-btn-bg: var(--dealisoft-danger);
    --bs-btn-border-color: var(--dealisoft-danger);
    --bs-btn-hover-color: #ffffff;
    --bs-btn-hover-bg: var(--dealisoft-danger-hover);
    --bs-btn-hover-border-color: var(--dealisoft-danger-hover);
    --bs-btn-active-color: #ffffff;
    --bs-btn-active-bg: var(--dealisoft-danger-active);
    --bs-btn-active-border-color: var(--dealisoft-danger-active);
    --bs-btn-focus-shadow-rgb: var(--dealisoft-danger-rgb);
}

.btn-outline-danger {
    --bs-btn-color: var(--dealisoft-danger);
    --bs-btn-border-color: var(--dealisoft-danger);
    --bs-btn-hover-color: #ffffff;
    --bs-btn-hover-bg: var(--dealisoft-danger);
    --bs-btn-hover-border-color: var(--dealisoft-danger);
    --bs-btn-active-color: #ffffff;
    --bs-btn-active-bg: var(--dealisoft-danger-active);
    --bs-btn-active-border-color: var(--dealisoft-danger-active);
    --bs-btn-focus-shadow-rgb: var(--dealisoft-danger-rgb);
}
/* NOTE: .bg-danger, .text-danger and .border-danger follow --bs-danger-rgb, and
   .alert-danger / .is-invalid follow the root variables above: nothing to redeclare. */
/* Danger color overrides end */

/* confirm / cancel pair start */
/* NOTE: the go-to markup for an inline confirm / cancel pair, next to a field or in
   a table row, is two borderless icon buttons and nothing else:
     confirm  <button type="submit" class="btn btn-sm btn-outline-success border-0 p-0">  (check circle svg)
     cancel   <button type="button" class="btn btn-sm btn-outline-danger border-0 p-0">   (cancel circle svg)
   They take the brand green and red from the overrides above; no extra class. */
/* confirm / cancel pair end */


/* custom class list start */

/* NOTE: neutral, not green. The attachments panel carries no positive state -- it
   usually reads "Aucun fichier joint" -- and green means success everywhere else. */
.custom--bg-attachment {
    background-color: #f6f4f7 !important;
}

.custom--overflow-y--hidden {
    overflow-y: hidden;
}

.custom--help-element--icon {
    position: absolute;
    right: 0.75rem;
    top: 50%;
    transform: translateY(-50%);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--dealisoft-brand);
    pointer-events: auto;
    cursor: pointer;
}

.loading-overlay
{
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 100%;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
}

.loading-overlay.loading-overlay--fixed
{
  position: fixed;
  left: 0;
  top: 0;
  height: 100svh;
  width: 100%;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
}

/* a number input without its spin buttons: they take room in narrow cells and operators type
   the value anyway. Bootstrap has no utility for it, and an inline style cannot reach them. */
.custom--number-input--no-spinner {
  -moz-appearance: textfield;
  appearance: textfield;
}
.custom--number-input--no-spinner::-webkit-inner-spin-button,
.custom--number-input--no-spinner::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* custom class list start */