/* Keen-free utilities used by public signup / aside-tutoriel.
   Spacing scale matches Metronic (1 = 0.25rem). Bootstrap 5 is still loaded;
   this file covers aliases and extras the bundles used to provide. */

/* ── Flex ── */
.d-flex { display: flex !important; }
.d-none { display: none !important; }
.flex-column { flex-direction: column !important; }
.flex-center { display: flex; justify-content: center; align-items: center; }
.justify-content-center { justify-content: center !important; }
.justify-content-between { justify-content: space-between !important; }
.flex-root { flex: 1; min-height: 0; }
.flex-column-fluid { flex: 1 0 auto; }
.flex-column-auto { flex: none; }
.flex-row-fluid { flex: 1 auto; min-width: 0; }
.flex-row-auto { flex: 0 0 auto; }
@media (min-width: 992px) {
  .flex-lg-row { flex-direction: row !important; }
}

/* ── Text ── */
.text-right { text-align: right !important; }
.text-center { text-align: center !important; }
.text-muted { color: #7E8299 !important; }
.text-dark { color: #181C32 !important; }
.font-weight-bold { font-weight: 500 !important; }
.font-weight-bolder { font-weight: 600 !important; }
.font-size-h6 { font-size: 1.175rem !important; }
.font-size-h4 { font-size: 1.35rem !important; }
.display5 { font-size: 2.25rem !important; line-height: 1.2; }

/* ── Spacing (Keen) ── */
.m-0 { margin: 0 !important; }
.mt-0 { margin-top: 0 !important; }
.mb-0 { margin-bottom: 0 !important; }
.ml-0 { margin-left: 0 !important; }
.mr-0 { margin-right: 0 !important; }
.ml-1 { margin-left: .25rem !important; }
.mr-1 { margin-right: .25rem !important; }
.mr-2 { margin-right: .5rem !important; }
.mr-3 { margin-right: .75rem !important; }
.my-3 { margin-top: .75rem !important; margin-bottom: .75rem !important; }
.mb-10 { margin-bottom: 2.5rem !important; }
.p-0 { padding: 0 !important; }
.p-10 { padding: 2.5rem !important; }
.pt-3 { padding-top: .75rem !important; }
.pt-5 { padding-top: 1.25rem !important; }
.pt-15 { padding-top: 3.75rem !important; }
.pb-5 { padding-bottom: 1.25rem !important; }
.pb-6 { padding-bottom: 1.5rem !important; }
.pb-10 { padding-bottom: 2.5rem !important; }
.py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
.px-9 { padding-left: 2.25rem !important; padding-right: 2.25rem !important; }
.px-15 { padding-left: 3.75rem !important; padding-right: 3.75rem !important; }
.pl-6 { padding-left: 1.5rem !important; }
.pl-8 { padding-left: 2rem !important; }
.pr-4 { padding-right: 1rem !important; }
.pr-8 { padding-right: 2rem !important; }
@media (min-width: 992px) {
  .pt-lg-15 { padding-top: 3.75rem !important; }
  .pb-lg-15 { padding-bottom: 3.75rem !important; }
}

/* ── Forms ── */
.form-group { margin-bottom: 1.25rem; }
.form-control::placeholder {
  color: #8489a3;
}
.control-label { display: inline-block; margin-bottom: .5rem; font-weight: 500; }
.form-control-solid {
  background-color: #F3F6F9;
  border-color: #F3F6F9;
  color: #3F4254;
  transition: color .15s ease, background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.form-control-solid:focus {
  background-color: #EBEDF3;
  border-color: #EBEDF3;
  color: #3F4254;
  box-shadow: none;
}
.input-group-solid {
  align-items: center;
  background-color: #F3F6F9;
  border-radius: .42rem;
}
.input-group-prepend,
.input-group-append { display: flex; }
.input-group-text {
  display: flex;
  align-items: center;
  padding: .65rem 1rem;
  font-size: 1rem;
  font-weight: 500;
  color: #3F4254;
  background-color: #F3F6F9;
  border: 1px solid #F3F6F9;
}

/* ── Buttons ── */
.btn-light-primary {
  color: #6993FF;
  background-color: #E1E9FF;
  border-color: transparent;
}
.btn-light-primary:hover {
  color: #fff;
  background-color: #3699FF;
}

/* ── Alerts ── */
.alert.alert-custom {
  display: flex;
  align-items: stretch;
  padding: 1.5rem 2rem;
}
.alert.alert-custom .alert-icon {
  display: flex;
  align-items: center;
  padding: 0 1.25rem 0 0;
}
.alert.alert-custom .alert-text {
  align-self: center;
  flex-grow: 1;
}
.alert.alert-custom .alert-close {
  padding: 0 0 0 1rem;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  line-height: 0;
  background: none;
  border: 0;
  cursor: pointer;
}
.alert-light-danger { background-color: #FFE2E5; border-color: transparent; color: #F64E60; }
.alert-block { display: block; }
.alert-heading { font-weight: 600; margin-bottom: .25rem; }

/* ── Icons ── */
.svg-icon { display: inline-flex; line-height: 0; }
.svg-icon svg { height: 1.5rem; width: 1.5rem; }
.svg-icon-md svg { height: 1.5rem !important; width: 1.5rem !important; }
.svg-icon.svg-icon-2x svg {
  height: 2rem !important;
  width: 2rem !important
}
.ki {
  font-style: normal;
  font-weight: 400;
  display: inline-block;
  line-height: 1;
  speak: none;
}
.ki-check::before { content: "✓"; }
.ki-close::before { content: "×"; font-size: 1.1em; }
.flaticon-warning::before { content: "⚠"; }

/* ── Fade (alerts) ── */
.fade { transition: opacity .15s linear; }
.fade:not(.show) { opacity: 0; }
