/* ══ ACTIVITÉ DU PROJET ══════════════════════════════════════
   Le temps passé en vocal face aux heures promises dans les disponibilités. */

.pact-head{ display:flex; justify-content:space-between; align-items:flex-start;
  gap:16px; flex-wrap:wrap; margin-bottom:18px; }
.pact-sub{ font-size:13px; color:var(--text3); margin-top:4px; max-width:620px; }
.pact-periode{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.pact-nav{ display:inline-flex; align-items:center; gap:6px; font-size:13px; }

.pact-kpis{ display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:12px; margin-bottom:16px; }
.pact-kpi{ background:var(--bg2); border:1px solid var(--border); border-radius:var(--r); padding:14px 16px;
  display:flex; flex-direction:column; gap:2px; }
.pact-kpi span{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.8px; color:var(--text3); }
.pact-kpi b{ font-family:var(--font-head); font-size:24px; font-weight:800; line-height:1.1; }
.pact-kpi small{ font-size:11px; color:var(--text3); }

.pact-tools{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:10px; }
.pact-legende{ display:flex; gap:12px; flex-wrap:wrap; font-size:11px; color:var(--text3); }
.pact-legende span{ display:inline-flex; align-items:center; gap:5px; }
.pact-legende i{ width:11px; height:11px; border-radius:3px; background:var(--bg4); display:inline-block; }

/* Les quatre états d'une case, partagés par la légende et la grille */
.c-ok{ background:#22c55e !important; }
.c-partiel{ background:#eab308 !important; }
.c-manque{ background:#ef4444 !important; }
.c-bonus{ background:#3b82f6 !important; }
.c-bonus-court{ background:rgba(59,130,246,.45) !important; }

/* ── Tableau ── */
.pact-table-wrap{ overflow-x:auto; border:1px solid var(--border); border-radius:var(--r); }
.pact-table{ width:100%; border-collapse:collapse; font-size:13px; }
.pact-table th{ background:var(--bg3); padding:9px 10px; text-align:left; font-size:11px; font-weight:700;
  text-transform:uppercase; letter-spacing:.5px; color:var(--text3); white-space:nowrap; border-bottom:1px solid var(--border); }
.pact-th{ cursor:pointer; user-select:none; }
.pact-th:hover{ color:var(--text); }
.pact-th.on{ color:var(--accent); }
.pact-table td{ padding:9px 10px; border-bottom:1px solid var(--border); vertical-align:middle; }
.pact-table tbody tr{ cursor:pointer; transition:background .12s; }
.pact-table tbody tr:hover{ background:var(--bg3); }
.pact-table tbody tr:last-child td{ border-bottom:none; }
.pact-num{ text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
.pact-membre{ display:flex; align-items:center; gap:9px; min-width:0; }
.pact-membre img, .pact-ph{ width:30px; height:30px; border-radius:50%; object-fit:cover; flex-shrink:0; }
.pact-ph{ background:var(--bg4); display:flex; align-items:center; justify-content:center;
  font-size:12px; font-weight:700; color:var(--text2); }
.pact-nom{ font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pact-grade{ font-size:11px; color:var(--text3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pact-jauge{ height:3px; background:var(--bg4); border-radius:2px; overflow:hidden; margin-top:6px; }
.pact-jauge i{ display:block; height:100%; border-radius:2px; transition:width .25s; }
.pact-foot{ font-size:11.5px; color:var(--text3); margin-top:10px; line-height:1.6; }

/* ── Grille heure par heure d'un membre ──
   Une ligne par jour, 24 cases d'une heure. Les colonnes sont fixes (1fr chacune) :
   la grille se compresse avec la fenêtre sans jamais déborder. */
.pact-grille{ display:flex; flex-direction:column; gap:3px; }
.pact-gr-ligne{ display:grid; grid-template-columns:72px repeat(24, minmax(0,1fr)) 62px;
  gap:2px; align-items:center; }
.pact-gr-jour{ font-size:11px; color:var(--text3); white-space:nowrap; }
.pact-gr-bilan{ font-size:11px; color:var(--text3); text-align:right; white-space:nowrap;
  font-variant-numeric:tabular-nums; }
.pact-gr-case{ height:16px; border-radius:3px; background:var(--bg4); display:block; }
.pact-gr-entete .pact-gr-h{ font-size:9.5px; color:var(--text3); text-align:center; font-style:normal; }
