.nav-link {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  padding: 0.5rem 0.75rem;
  border-radius: 0.5rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: #475569;
  transition: all .12s ease;
}
.nav-link:hover { background:#f1f5f9; color:#0f172a; }
.nav-link.active { background:#eef4ff; color:#1d39b0; }
.nav-link.active svg { color:#2548dc; }

.btn { display:inline-flex; align-items:center; gap:.4rem; padding:.5rem .85rem; border-radius:.5rem; font-size:.875rem; font-weight:500; transition:all .12s; cursor:pointer; border:1px solid transparent; }
.btn-primary { background:#2548dc; color:white; }
.btn-primary:hover { background:#1d39b0; }
.btn-ghost { background:transparent; color:#475569; }
.btn-ghost:hover { background:#f1f5f9; color:#0f172a; }
.btn-secondary { background:white; color:#334155; border-color:#e2e8f0; }
.btn-secondary:hover { background:#f8fafc; }
.btn-danger { background:white; color:#b91c1c; border-color:#fecaca; }
.btn-danger:hover { background:#fef2f2; }

.input, .select, .textarea {
  width:100%;
  padding:.5rem .7rem;
  border:1px solid #e2e8f0;
  border-radius:.5rem;
  font-size:.875rem;
  background:white;
  color:#0f172a;
  transition: border-color .12s, box-shadow .12s;
}
.input:focus, .select:focus, .textarea:focus {
  outline:none;
  border-color:#3a64f5;
  box-shadow:0 0 0 3px rgba(58,100,245,.15);
}
.label { display:block; font-size:.75rem; font-weight:600; color:#64748b; margin-bottom:.3rem; text-transform:uppercase; letter-spacing:.02em; }

.card { background:white; border:1px solid #e2e8f0; border-radius:.75rem; }
.chip { display:inline-flex; align-items:center; gap:.25rem; padding:.15rem .55rem; font-size:.7rem; font-weight:600; border-radius:9999px; }
.chip-blue { background:#eef4ff; color:#1d39b0; }
.chip-green { background:#dcfce7; color:#166534; }
.chip-amber { background:#fef3c7; color:#92400e; }
.chip-red { background:#fee2e2; color:#991b1b; }
.chip-slate { background:#f1f5f9; color:#475569; }
.chip-purple { background:#f3e8ff; color:#6b21a8; }

.match-bar { height:6px; border-radius:9999px; background:#e2e8f0; overflow:hidden; }
.match-bar > div { height:100%; background:linear-gradient(90deg,#10b981,#3a64f5); transition: width .3s; }

/* Modal */
.modal-backdrop { position:fixed; inset:0; background:rgba(15,23,42,.5); z-index:40; display:grid; place-items:center; padding:1rem; }
.modal { background:white; border-radius:.75rem; width:100%; max-width:680px; max-height:90vh; overflow:auto; }
.modal-header { padding:1rem 1.25rem; border-bottom:1px solid #e2e8f0; display:flex; align-items:center; gap:.5rem; position:sticky; top:0; background:white; z-index:1; }
.modal-body { padding:1.25rem; }
.modal-footer { padding:.85rem 1.25rem; border-top:1px solid #e2e8f0; display:flex; justify-content:flex-end; gap:.5rem; position:sticky; bottom:0; background:white; }

.toast-show { display:block !important; animation: toast-in .25s ease; }
@keyframes toast-in { from { transform: translateY(8px); opacity:0; } to { transform: translateY(0); opacity:1; } }

.skeleton { background:linear-gradient(90deg,#f1f5f9,#e2e8f0,#f1f5f9); background-size:200% 100%; animation: shimmer 1.2s infinite; border-radius:.5rem; }
@keyframes shimmer { 0% { background-position:200% 0; } 100% { background-position:-200% 0; } }

table.data { width:100%; border-collapse:separate; border-spacing:0; }
table.data th { text-align:left; font-size:.7rem; font-weight:600; color:#64748b; text-transform:uppercase; letter-spacing:.04em; padding:.6rem .75rem; background:#f8fafc; border-bottom:1px solid #e2e8f0; position:sticky; top:0; }
table.data td { padding:.75rem; border-bottom:1px solid #f1f5f9; font-size:.875rem; vertical-align:middle; }
table.data tbody tr:hover { background:#f8fafc; }
table.data tbody tr:last-child td { border-bottom:none; }

.tag-source { display:inline-block; padding:.1rem .4rem; font-size:.65rem; font-weight:600; border-radius:.25rem; text-transform:uppercase; letter-spacing:.03em; }
.src-seloger { background:#dc2626; color:white; }
.src-pap { background:#0891b2; color:white; }
.src-leboncoin { background:#f97316; color:white; }
.src-bienici { background:#7c3aed; color:white; }
.src-orpi { background:#16a34a; color:white; }
.src-autre { background:#475569; color:white; }
