/* CollectCash — styles propres à l'application (le thème couleurs est dans theme-collectcash.css) */

body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
main { flex: 1 0 auto; }

.navbar-brand img { display: block; }

.card { border-color: #E7DFD8; }
.card-header { border-bottom-color: #EFE8E2; }

.kpi-card .kpi-value {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--cc-bordeaux);
  line-height: 1.2;
}

.table > :not(caption) > * > * { padding-top: .65rem; padding-bottom: .65rem; }
.table-sm > :not(caption) > * > * { padding-top: .4rem; padding-bottom: .4rem; }

/* Page de connexion */
.auth-page { background: var(--cc-creme); }
.auth-wrapper {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px 16px;
}
.auth-card { width: 100%; max-width: 420px; }

/* ---------- Assistant d'installation ---------- */
.install-wrapper { width: 100%; max-width: 680px; margin: 0 auto; padding: 40px 16px; }
.install-steps { display: flex; justify-content: space-between; gap: 8px; list-style: none; padding: 0; margin: 0 0 24px; counter-reset: none; }
.install-step { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; position: relative; min-width: 0; }
.install-step:not(:last-child)::after { content: ""; position: absolute; top: 15px; left: calc(50% + 20px); right: calc(-50% + 20px); height: 2px; background: #E2D6D0; }
.install-step.is-done:not(:last-child)::after { background: var(--cc-dore); }
.install-step-num { width: 32px; height: 32px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-weight: 600; font-size: .9rem; background: #fff; border: 2px solid #E2D6D0; color: var(--cc-gris-chaud); }
.install-step.is-current .install-step-num { background: var(--cc-bordeaux); border-color: var(--cc-bordeaux); color: #fff; }
.install-step.is-done .install-step-num { background: var(--cc-dore); border-color: var(--cc-dore); color: #2B1A0A; }
.install-step-label { font-size: .8rem; color: var(--cc-gris-chaud); line-height: 1.2; }
.install-step.is-current .install-step-label { color: var(--cc-bordeaux); font-weight: 600; }
@media (max-width: 480px) { .install-step-label { display: none; } .install-step.is-current .install-step-label { display: block; } }
details > summary { cursor: pointer; }

/* ---------- Lot 2 : balance âgée ---------- */
.aging-bar { display: flex; height: 14px; border-radius: 7px; overflow: hidden; background: #EFE8E2; gap: 2px; }
.aging-seg { min-width: 4px; }
.aging-dot { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 6px; vertical-align: baseline; }
.aging-not_due { background: #198754; }
.aging-d30 { background: #D9A84E; }
.aging-d60 { background: #E07B39; }
.aging-d90 { background: #C2410C; }
.aging-d90p { background: #722F3E; }
.aging-table td, .aging-table th { white-space: nowrap; }
.font-monospace { font-variant-numeric: tabular-nums; }
.nav-pills .nav-link { color: var(--cc-bordeaux); }
.nav-pills .nav-link.active { background-color: var(--cc-bordeaux); color: #fff; }

/* Montants : chiffres alignés dans la police du texte (plus lisible qu'une police à chasse fixe) */
.font-monospace { font-family: inherit !important; font-variant-numeric: tabular-nums; }
.main-nav .nav-link, .navbar .nav-link { white-space: nowrap; }
@media (min-width: 992px) and (max-width: 1399.98px) {
  .main-nav .nav-link .bi { display: none; }
}
a.kpi-card { color: inherit; transition: border-color .15s, box-shadow .15s; }
a.kpi-card:hover { border-color: var(--cc-dore); box-shadow: 0 2px 8px rgba(114, 47, 62, .08); }
