/* Gantt du projet (templates/_gantt.php), commun à l'admin et à l'espace client : prévu en gris, réel en couleur de l'état */
.gantt { --g-label: 200px; --g-validated: var(--st-validated, var(--ph-validated, #15803D)); --g-submitted: var(--st-submitted, var(--ph-submitted, #6D3FD6));
  --g-changes: var(--st-changes, var(--ph-changes, #C2570C)); --g-open: var(--accent); --g-upcoming: var(--muted);
  overflow-x: auto; padding-bottom: 6px; font-size: 13px; }
.g-head, .g-row { display: grid; grid-template-columns: var(--g-label) minmax(560px, 1fr); align-items: center; }
.g-head { height: 26px; border-bottom: 1px solid var(--line); }
.g-row { min-height: 52px; border-bottom: 1px solid var(--line); }
.g-label { padding: 8px 12px 8px 0; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.g-label b { font-size: 13.5px; line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.g-label span { font-size: 12px; color: var(--muted); }
.g-label em { font-style: normal; font-weight: 700; }
.g-late { color: var(--late, var(--danger, #C8102E)); }
.g-early { color: var(--g-validated); }
.g-track { position: relative; height: 100%; min-height: 26px; }
.g-month { position: absolute; top: 4px; transform: translateX(4px); font-size: 11.5px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; }
.g-grid { position: absolute; top: 0; bottom: 0; width: 1px; background: var(--line); }
.g-today { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--late, var(--danger, #C8102E)); opacity: .7; z-index: 2; }
.g-base { position: absolute; top: 10px; height: 6px; background: var(--line-mid, rgba(18,18,18,.25)); border-radius: 2px; }
.g-bar { position: absolute; top: 20px; height: 14px; border-radius: 2px; background: var(--g-open); }
.g-bar.st-validated { background: var(--g-validated); }
.g-bar.st-submitted { background: var(--g-submitted); }
.g-bar.st-changes { background: var(--g-changes); }
.g-bar.is-planned { background: transparent; border: 1.5px dashed var(--g-upcoming); }
.g-bar.is-ongoing { background-image: repeating-linear-gradient(45deg, transparent 0 6px, rgba(255,255,255,.28) 6px 10px); }
.g-mark { position: absolute; top: 18px; width: 10px; height: 18px; transform: translateX(-5px); z-index: 3; cursor: help; }
.g-mark::before { content: ""; position: absolute; left: 3px; top: 3px; width: 4px; height: 12px; border-radius: 2px; background: var(--fg, #121212); box-shadow: 0 0 0 1.5px var(--paper, #fff); }
.g-mark.mk-submitted::before { background: var(--g-submitted); }
.g-mark.mk-changes::before, .g-mark.mk-changes_recorded::before, .g-mark.mk-contested::before { background: var(--g-changes); }
.g-mark.mk-validated::before, .g-mark.mk-forced::before { background: var(--g-validated); }
.g-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 12px; font-size: 12px; color: var(--muted); }
.g-legend span { display: inline-flex; align-items: center; gap: 6px; }
.g-legend i { display: inline-block; }
.g-key-base { width: 22px; height: 6px; background: var(--line-mid, rgba(18,18,18,.25)); border-radius: 2px; }
.g-key-bar { width: 22px; height: 10px; background: var(--g-validated); border-radius: 2px; }
.g-key-planned { width: 22px; height: 10px; border: 1.5px dashed var(--g-upcoming); border-radius: 2px; }
.g-key-mark { width: 4px; height: 12px; border-radius: 2px; background: var(--fg, #121212); }
.g-key-mark.mk-submitted { background: var(--g-submitted); }
.g-key-mark.mk-changes { background: var(--g-changes); }
.g-key-mark.mk-validated { background: var(--g-validated); }
.g-key-today { width: 2px; height: 12px; background: var(--late, var(--danger, #C8102E)); }
@media (max-width: 640px) { .gantt { --g-label: 130px; } }

/* Retours en arrière : reprise d'une phase, retour en cours, décalage potentiel des phases suivantes */
.g-bar.is-rework { box-shadow: 0 0 0 2px var(--g-changes); }
.g-mark.mk-reopen_accepted::before { background: var(--g-changes); width: 6px; left: 2px; }
.g-pending { color: var(--g-changes) !important; font-weight: 700; }
.g-ghost { position: absolute; top: 37px; height: 8px; border: 1.5px dashed var(--g-changes); border-radius: 2px; background: color-mix(in srgb, var(--g-changes) 10%, transparent); }
.g-key-rework { width: 22px; height: 10px; border-radius: 2px; background: var(--g-open); box-shadow: 0 0 0 2px var(--g-changes); }
.g-key-ghost { width: 22px; height: 10px; border: 1.5px dashed var(--g-changes); border-radius: 2px; }
