diff --git a/apps/ops/src/pages/PlanificationPage.vue b/apps/ops/src/pages/PlanificationPage.vue index bbcb9d9..e03cc65 100644 --- a/apps/ops/src/pages/PlanificationPage.vue +++ b/apps/ops/src/pages/PlanificationPage.vue @@ -6853,7 +6853,7 @@ onBeforeRouteLeave(async () => { await autosaveDraft() }) // #2 — flush le bro .tldlg-time { font-variant-numeric: tabular-nums; color: #555; flex: 0 0 auto; min-width: 34px; } .cell.drop-hover { outline: 2px dashed #5e35b1; outline-offset: -2px; background: #f3e9fb; } .tl-proj { position: absolute; top: 0; bottom: 0; left: 0; border-radius: 2px; opacity: .42; outline: 1px dashed rgba(0,0,0,.35); outline-offset: -1px; } /* aperçu occupation projetée (fantôme) */ -.drop-badge { position: absolute; top: -8px; right: 2px; z-index: 6; background: #5e35b1; color: #fff; font-size: 9px; font-weight: 700; padding: 0 4px; border-radius: 5px; white-space: nowrap; box-shadow: 0 1px 4px rgba(0,0,0,.3); pointer-events: none; } +.drop-badge { position: absolute; top: 1px; right: 2px; z-index: 6; background: #5e35b1; color: #fff; font-size: 9px; font-weight: 700; padding: 0 4px; border-radius: 5px; white-space: nowrap; box-shadow: 0 1px 4px rgba(0,0,0,.3); pointer-events: none; } /* top:1px (pas -8px) → reste DANS la cellule maintenant que .cell clippe (sinon coupé) */ .drop-badge.over { background: #e53935; } /* projection ≥ 100% = surbooké */ .grid-wrap { overflow-x: auto; border: 1px solid #e0e0e0; border-radius: 6px; max-width: 100%; } .roster-grid { border-collapse: collapse; font-size: 12px; width: 100%; user-select: none; -webkit-user-select: none; } @@ -6904,7 +6904,7 @@ tr.res-hidden .hide-eye { opacity: 1; } .tech-name.tech-paused-pending { color: var(--ops-text-muted, #94a3b8); text-decoration: line-through; } .hol-toggle { font-size: 9px; color: #ccc; cursor: pointer; border: 1px solid #eee; border-radius: 3px; width: 14px; margin: 1px auto 0; line-height: 12px; } .hol-toggle.on { background: #ff9800; color: #fff; border-color: #ff9800; } -.cell { cursor: pointer; min-height: 24px; min-width: 132px; position: relative; background: #eef1f4; } /* gris pâle = INDISPONIBLE par défaut ; un quart crée une zone blanche (.tl-shift) */ +.cell { cursor: pointer; min-height: 24px; min-width: 132px; position: relative; background: #eef1f4; overflow: hidden; } /* clippe TOUT le contenu de la cellule à ses bornes — y compris le triangle de surcharge (.ovl-warn) et l'alerte hors-quart (.offshift-warn) qui vivent hors de .tl et débordaient */ /* gris pâle = INDISPONIBLE par défaut ; un quart crée une zone blanche (.tl-shift) */ /* Colonnes-jour à largeur lisible : ~1 semaine tient dans la vue, la 2e semaine défile (.grid-wrap overflow-x). */ .roster-grid thead th:not(.tech-col) { min-width: 132px; } .cell.over { background: #fbe2cf; } /* SURCHARGE : la cellule entière se teinte orange pâle (le triangle reste dans le coin) */