/* ============================================================
   AGENDA — Classes complémentaires + utilitaires globaux
   ============================================================ */

/* ── UTILITAIRES MANQUANTS ─────────────────────────────────── */
.btn-xs        { padding:.2rem .55rem; font-size:.72rem; border-radius:5px; }
.mb-4          { margin-bottom:2rem; }
.mt-4          { margin-top:2rem; }
.p-0           { padding:0 !important; }
.fw-500        { font-weight:500; }
.fw-600        { font-weight:600; }
.text-sm       { font-size:.8rem; }
.py-5          { padding-top:3rem; padding-bottom:3rem; }
.link-primary  { color:var(--bleu-info); }
.link-primary:hover { color:var(--dore); }
.mono          { font-family:var(--font-mono); font-size:.85em; }
.action-btns   { display:flex; gap:.3rem; align-items:center; }
.table-responsive { overflow-x:auto; }
.clickable-row { cursor:pointer; }
.form-actions  { display:flex; gap:.75rem; align-items:center; margin-top:1.5rem; flex-wrap:wrap; }

/* ── GRID LAYOUT (row / col) ──────────────────────────────── */
.row  { display:grid; grid-template-columns:2fr 1fr; gap:1.5rem; align-items:start; }
.col-8, .col-4 { }

/* ── FILTER FORM ──────────────────────────────────────────── */
.filter-form  { }
.filter-grid  { display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:1rem; align-items:end; }

/* ── UPLOAD ZONE ──────────────────────────────────────────── */
.upload-zone  {
  border:2px dashed var(--gris-400);
  border-radius:var(--radius-lg);
  padding:2.5rem;
  text-align:center;
  cursor:pointer;
  transition:all var(--transition);
  background:var(--gris-100);
}
.upload-zone:hover { border-color:var(--dore); background:var(--dore-pale); }
.upload-icon  { font-size:2.5rem; margin-bottom:.8rem; }
.upload-text  { font-size:1rem; color:var(--gris-700); font-weight:500; }
.upload-subtext { font-size:.85rem; color:var(--gris-500); margin:.3rem 0; }
.upload-hint  { font-size:.78rem; color:var(--gris-500); margin-top:.5rem; }
.upload-preview { margin-top:1rem; }

/* ── DOCUMENT LIST ────────────────────────────────────────── */
.doc-name  { display:flex; align-items:center; gap:.75rem; }
.doc-icon  { font-size:1.4rem; flex-shrink:0; }
.format-list { list-style:none; display:flex; flex-direction:column; gap:.5rem; }
.format-list li { display:flex; align-items:center; gap:.75rem; font-size:.85rem; color:var(--gris-700); }
.format-icon {
  display:inline-flex; align-items:center; justify-content:center;
  width:38px; height:22px; border-radius:4px;
  font-size:.65rem; font-weight:700; color:#fff; flex-shrink:0;
}
.format-icon.pdf  { background:#e74c3c; }
.format-icon.word { background:#2980b9; }
.format-icon.img  { background:#27ae60; }
.format-icon.xls  { background:#16a34a; }
.info-box {
  background:var(--gris-100);
  border-radius:var(--radius);
  padding:.9rem 1rem;
  font-size:.82rem;
  color:var(--gris-700);
  line-height:1.8;
}

/* ── AGENDA LAYOUT ────────────────────────────────────────── */
.agenda-layout {
  display:grid;
  grid-template-columns:300px 1fr;
  gap:1.5rem;
  align-items:start;
}
.agenda-sidebar {
  display:flex;
  flex-direction:column;
  gap:1rem;
  position:sticky;
  top:calc(var(--topbar-h) + 1.5rem);
}
.agenda-main { display:flex; flex-direction:column; gap:1.2rem; }

/* ── AGENDA STATS ─────────────────────────────────────────── */
.agenda-stats {
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(160px,1fr));
  gap:1rem;
  margin-bottom:1.5rem;
}
.agenda-stat {
  background:var(--blanc);
  border:1px solid var(--gris-300);
  border-radius:var(--radius-lg);
  padding:1.1rem 1.4rem;
  display:flex;
  align-items:center;
  gap:1rem;
  box-shadow:var(--shadow-sm);
}
.agenda-stat-icon {
  width:46px; height:46px;
  border-radius:10px;
  display:flex; align-items:center; justify-content:center;
  font-size:1.3rem; flex-shrink:0;
}
.agenda-stat-info { flex:1; }
.agenda-stat-value { font-size:1.6rem; font-weight:700; color:var(--bleu-nuit); line-height:1.2; }
.agenda-stat-label { font-size:.76rem; color:var(--gris-600); margin-top:.1rem; }

/* ── RDV CARDS ────────────────────────────────────────────── */
.rdv-card {
  display:grid;
  grid-template-columns:72px 1fr auto;
  align-items:center;
  gap:1rem;
  padding:1rem 1.5rem;
  border-bottom:1px solid var(--gris-200);
  border-left:3px solid transparent;
  transition:background var(--transition), border-color var(--transition);
  position:relative;
}
.rdv-card:hover { background:var(--gris-100); }
.rdv-card:last-child { border-bottom:none; }
.rdv-card-planifie { border-left-color:var(--bleu-info); }
.rdv-card-confirme  { border-left-color:var(--vert); }
.rdv-card-reporte   { border-left-color:var(--orange); }
.rdv-card-annule    { border-left-color:var(--rouge); }
.rdv-card-termine   { border-left-color:var(--gris-500); }

.rdv-card-time {
  text-align:center;
  padding:.5rem .6rem;
  background:var(--gris-100);
  border-radius:var(--radius);
  border:1px solid var(--gris-200);
}
.rdv-card-hour  { display:block; font-size:1rem; font-weight:700; color:var(--bleu-nuit); }
.rdv-card-until { display:block; font-size:.68rem; color:var(--gris-500); margin-top:.1rem; }

.rdv-card-body  { flex:1; min-width:0; }
.rdv-card-title {
  font-weight:600; font-size:.92rem; color:var(--gris-800);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.rdv-card-meta  { display:flex; gap:.75rem; flex-wrap:wrap; margin-top:.3rem; }
.rdv-card-meta span {
  font-size:.76rem; color:var(--gris-600);
  display:flex; align-items:center; gap:.3rem;
}

.rdv-card-right {
  display:flex; flex-direction:column;
  align-items:flex-end; gap:.5rem;
}
.rdv-card-actions { display:flex; gap:.3rem; opacity:0; transition:opacity var(--transition); }
.rdv-card:hover .rdv-card-actions { opacity:1; }

/* ── DAY SEPARATOR ────────────────────────────────────────── */
.rdv-day-header {
  padding:.45rem 1.5rem;
  background:linear-gradient(to right, var(--dore-pale), transparent);
  border-bottom:1px solid rgba(201,168,76,.2);
  font-size:.73rem;
  font-weight:700;
  color:#856B1A;
  text-transform:uppercase;
  letter-spacing:.08em;
}

/* ── STATUS DOT LEGEND ────────────────────────────────────── */
.rdv-dot {
  width:9px; height:9px;
  border-radius:50%;
  display:inline-block;
  flex-shrink:0;
}
.rdv-dot-planifie { background:var(--bleu-info); }
.rdv-dot-confirme  { background:var(--vert); }
.rdv-dot-reporte   { background:var(--orange); }
.rdv-dot-annule    { background:var(--rouge); }
.rdv-dot-termine   { background:var(--gris-400); }

/* ── CALENDAR GRID ────────────────────────────────────────── */
.cal-grid {
  display:grid;
  grid-template-columns:repeat(7, 1fr);
  gap:2px;
}
.cal-head {
  text-align:center;
  font-size:.62rem;
  font-weight:700;
  color:var(--gris-500);
  text-transform:uppercase;
  padding:.5rem 0 .3rem;
  letter-spacing:.04em;
}
.cal-day {
  aspect-ratio:1;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:.8rem;
  border-radius:50%;
  cursor:pointer;
  transition:all var(--transition);
  position:relative;
  color:var(--gris-700);
  font-weight:400;
}
.cal-day:hover:not(.cal-empty) { background:var(--gris-200); }
.cal-empty { cursor:default; }
.cal-today {
  background:var(--dore) !important;
  color:var(--bleu-nuit) !important;
  font-weight:700;
}
.cal-has-rdv { font-weight:600; color:var(--bleu-nuit); }
.cal-dot {
  position:absolute; bottom:1px; left:50%;
  transform:translateX(-50%);
  width:4px; height:4px;
  border-radius:50%;
  background:var(--bleu-info);
}
.cal-today .cal-dot { background:var(--bleu-nuit); }

/* ── FORM RDV ─────────────────────────────────────────────── */
.rdv-form-header {
  background:linear-gradient(135deg, var(--bleu-nuit) 0%, var(--bleu-moyen) 100%);
  padding:1.8rem 2rem;
  border-radius:var(--radius-lg) var(--radius-lg) 0 0;
  border-bottom:3px solid var(--dore);
}
.rdv-form-header h2 { color:var(--blanc); font-size:1.2rem; font-weight:700; margin:0; }
.rdv-form-header p  { color:rgba(255,255,255,.6); font-size:.82rem; margin-top:.3rem; }

.time-inputs-grid {
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:end;
  gap:.75rem;
}
.time-sep {
  padding-bottom:.55rem;
  text-align:center;
  color:var(--gris-500);
  font-size:1.1rem;
  font-weight:300;
}

.sidebar-help-item {
  display:flex; align-items:flex-start; gap:.75rem;
  padding:.75rem 0;
  border-bottom:1px solid var(--gris-200);
  font-size:.82rem;
  color:var(--gris-700);
}
.sidebar-help-item:last-child { border-bottom:none; }
.sidebar-help-icon {
  width:32px; height:32px;
  border-radius:8px;
  background:var(--dore-pale);
  display:flex; align-items:center; justify-content:center;
  font-size:.9rem;
  flex-shrink:0;
}
.sidebar-help-item strong { display:block; color:var(--gris-800); margin-bottom:.1rem; }

.horaires-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:.4rem;
  margin-top:.5rem;
}
.horaire-pill {
  background:var(--gris-100);
  border:1px solid var(--gris-200);
  border-radius:var(--radius);
  padding:.45rem .6rem;
  font-size:.76rem;
  color:var(--gris-700);
  text-align:center;
}
.horaire-pill strong { display:block; color:var(--bleu-nuit); font-size:.82rem; }

/* ── RESPONSIVE ───────────────────────────────────────────── */
@media (max-width:1024px) {
  .agenda-layout { grid-template-columns:1fr; }
  .agenda-sidebar { position:static; }
  .row { grid-template-columns:1fr; }
}
@media (max-width:768px) {
  .agenda-stats { grid-template-columns:1fr 1fr; }
  .rdv-card { grid-template-columns:60px 1fr; }
  .rdv-card-right { display:none; }
  .rdv-card:hover .rdv-card-right { display:flex; }
}