
/* Filtres */
#filter-form .form-control,
#filter-form .form-select {
  border-radius: 0.5rem;
}

/* Toggle vue */
#toggle-cards.active,
#toggle-list.active {
  background-color: #007bff;
  color: white;
  border-color: #007bff;
}

/* Offres */
.offre-card {
  border: 1px solid #ddd;
  border-radius: 10px;
  padding: 1rem;
  margin-bottom: 1rem;
  transition: all 0.3s ease;
}
.offre-card:hover {
  background: #f9f9f9;
}
.offre-title {
  font-size: 1.2rem;
  font-weight: 600;
}
.offre-meta {
  font-size: 0.9rem;
  color: #555;
}

/* Chargement */
.spinner {
  width: 3rem;
  height: 3rem;
  border: 5px solid #ccc;
  border-top: 5px solid #007bff;
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin: auto;
}
@keyframes spin {
  to { transform: rotate(360deg); }
}

/* ====== Variables ====== */
:root{
  --primary:#1e40af;          /* bleu profond */
  --primary-600:#2563eb;      /* action */
  --primary-100:#dbeafe;
  --ink:#0f172a;
  --muted:#475569;
  --line:rgba(2,6,23,.08);
  --shadow:0 10px 30px rgba(2,6,23,.06);
  --shadow-lg:0 18px 40px rgba(2,6,23,.12);
  --radius:18px;
}

/* ====== Filtres ====== */
#filter-form{
  border:1px solid var(--line);
  border-radius: calc(var(--radius) + 2px);
  box-shadow: var(--shadow);
}
#filter-form .form-control,
#filter-form .form-select{
  border-radius:12px;
  border-color: var(--line);
}
#filter-form .form-control:focus,
#filter-form .form-select:focus{
  box-shadow: 0 0 0 .2rem rgba(37,99,235,.15);
  border-color: var(--primary-600);
}

/* ====== Toggle vue ====== */
.view-toggle .btn{
  border-radius:10px;
}
.view-toggle .btn.active{
  background: var(--primary);
  border-color: var(--primary);
  color:#fff;
}

/* ====== HERO VIP ====== */
.vip-hero{
  color:#fff;
}
.vip-hero .chip{
  display:inline-block;
  background: rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.25);
  color:#fff;
  padding:.35rem .65rem;
  border-radius:999px;
  font-weight:700;
  letter-spacing:.2px;
}

/* ====== Cartes d'offres ====== */
.vip-card{
  position:relative;
  border:1px solid var(--line);
  border-radius: var(--radius);
  background:#fff;
  box-shadow: var(--shadow);
  transition: transform .15s ease, box-shadow .2s ease, border-color .2s ease, background .2s ease;
}
.vip-card:hover{
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
  border-color: rgba(37,99,235,.35);
}

/* Pills d'infos */
.badge-soft{
  display:inline-block;
  background: rgba(37,99,235,.1);
  color:#1e3a8a;
  border:1px solid rgba(37,99,235,.18);
  padding:.32rem .6rem;
  font-weight:700;
  font-size:.85rem;
  border-radius:999px;
}
.badge-soft.gray{
  background: rgba(2,6,23,.06);
  color:#0f172a;
  border-color: var(--line);
}

/* CTA */
.cta-btn{
  padding:.85rem 1.1rem;
  border-radius:12px;
  font-weight:800;
  letter-spacing:.2px;
  box-shadow: 0 8px 20px rgba(37,99,235,.25);
  transition: transform .12s ease, box-shadow .2s ease, opacity .2s ease;
}
.cta-btn:hover{
  transform: translateY(-1px);
  box-shadow: 0 12px 26px rgba(37,99,235,.35);
}

/* ====== Vue liste ====== */
#offres-container.view-list .vip-card{
  display:grid;
  grid-template-columns: 1fr auto;
  gap:1rem;
}
#offres-container.view-list .vip-card .cta-btn{
  align-self:center;
}

/* ====== Textes ====== */
h3.h4{
  color:var(--ink);
  font-weight:800;
}
.text-muted{
  color: var(--muted) !important;
}

/* ====== Pagination ====== */
.pagination .page-link{
  border-radius:10px;
}
.pagination .page-item.active .page-link{
  background: var(--primary);
  border-color: var(--primary);
}

/* ====== Utilitaires ====== */
.rounded-4{ border-radius: calc(var(--radius) + 4px) !important; }
.border{ border-color: var(--line) !important; }
.shadow-sm{ box-shadow: var(--shadow) !important; }

/* ====== Spinner (si besoin) ====== */
.spinner{
  width:3rem;height:3rem;border:5px solid #e5e7eb;border-top:5px solid var(--primary-600);
  border-radius:50%;animation:spin 1s linear infinite;margin:auto;
}
@keyframes spin{ to{ transform: rotate(360deg);} }

.card-vip.accent{
  background: linear-gradient(180deg, #f0f7ff 0%, #ffffff 60%);
  border-color: rgba(37,99,235,.25);
  box-shadow: 0 14px 36px rgba(37,99,235,.18);
}
.card-vip.accent h5 { color:#0f1e6a; }
.card-vip.accent .btn-cta { box-shadow: 0 10px 24px rgba(37,99,235,.35); }

.card-vip.accent {
  background: linear-gradient(180deg, #f0f7ff 0%, #ffffff 60%);
  border-color: rgba(37,99,235,.25);
  box-shadow: 0 14px 36px rgba(37,99,235,.18);
}
.card-vip.accent h5 { color: #0f1e6a; }
.card-vip.accent .btn-cta { box-shadow: 0 10px 24px rgba(37,99,235,.35); }
