/* =====================================================================
   Workflow interne : tuiles de statistiques, page Techniciens, page Planning.
   Reprend la grammaire de notifications.css (itv-*, val-*) : memes couleurs,
   memes rayons. Le rouge reste reserve a ce qui demande une action.
   ===================================================================== */

/* ---------- Statistiques ---------- */
.st { margin-bottom: 14px; }
.st-tuiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.st-tuile--echec .st-val { color: #C61E26; }
.st-tuile--muet .st-val { color: #a1959a; }
.st-tuile {
    display: flex; flex-direction: column; align-items: flex-start; gap: 2px;
    padding: 12px 14px; border: 1px solid #ece7e6; border-radius: 8px; background: #fff;
    text-align: left; cursor: pointer; font-family: inherit;
}
.st-tuile:hover { background: #faf7f6; }
.st-tuile--active { border-color: #C61E26; box-shadow: 0 0 0 2px rgba(198, 30, 38, .15); }
.st-tuile--encours .st-val { color: #17603d; }
.st-tuiles--attente .st-tuile { cursor: default; }
.st-val { font-size: 1.6rem; font-weight: 700; color: #2f2a2b; line-height: 1.1; }
.st-lbl { font-size: 0.78rem; color: #7b6e71; }
.st-liste { margin-top: 10px; border: 1px solid #ece7e6; border-radius: 8px; background: #fff; overflow: hidden; }
.st-liste-head { display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; font-weight: 600; border-bottom: 1px solid #ece7e6; }
.st-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.st-table th { text-align: left; padding: 6px 10px; color: #7b6e71; font-weight: 600; background: #faf7f6; }
.st-table td { padding: 6px 10px; border-top: 1px solid #f1ecea; }
.st-ref { font-family: ui-monospace, Consolas, monospace; font-size: 0.8rem; }
.st-urgent td:first-child { border-left: 3px solid #C61E26; }
.st-lien { color: #C61E26; }

/* Numero interne en tete de carte, dans toutes les listes : la reference que l'agence,
   le technicien et X3 partagent. */
.itv-ref {
    display: inline-block; margin-right: 6px; padding: 0 6px; border-radius: 3px;
    background: #f0ebea; color: #55494c; font-family: ui-monospace, Consolas, monospace;
    font-size: 0.78rem; font-weight: 600; vertical-align: middle;
}

/* ---------- Champs partages (Techniciens, Planning, Mes interventions, Validation) ---------- */
.tk-input { padding: 6px 8px; border: 1px solid #ddd5d4; border-radius: 5px; font-size: 0.88rem; font-family: inherit; background: #fff; }
.tk-input:focus { outline: 2px solid #C61E26; outline-offset: 1px; border-color: #C61E26; }
.tk-btn-sm { padding: 6px 10px; font-size: 0.82rem; }

/* ---------- Techniciens (prefixe tq-, distinct du tableau de bord technicien qui a pris tk-) ----------
   Liste a gauche, fiche a droite. L'etat du jour colore l'anneau de l'avatar et la pastille ;
   le vehicule se saisit dans la fiche sur sa propre ligne (champ + bouton), jamais serre dans
   une colonne de grille : c'est ce qui faisait casser « Enregistrer » lettre par lettre. */
.itv-page.tq-page { max-width: 1100px; }
.tq-sous-titre { margin: 3px 0 0; font-size: 0.85rem; color: #7b6e71; }
.tq-layout { display: grid; grid-template-columns: minmax(260px, 340px) minmax(0, 1fr); gap: 16px; align-items: start; }

.tq-liste { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.tq-carte {
    width: 100%; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px;
    padding: 10px 12px; border: 1px solid #ece7e6; border-radius: 10px; background: #fff;
    text-align: left; cursor: pointer; font-family: inherit; color: inherit;
    transition: border-color .15s, box-shadow .15s, transform .15s, background .15s;
}
.tq-carte:hover { background: #faf7f6; transform: translateY(-1px); box-shadow: 0 4px 14px rgba(43, 32, 34, .06); }
.tq-carte--active { border-color: #C61E26; box-shadow: 0 0 0 2px rgba(198, 30, 38, .12), 0 6px 18px rgba(43, 32, 34, .08); }
.tq-carte__corps { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.tq-carte__nom { font-weight: 600; color: #2f2a2b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tq-carte__meta { display: flex; flex-wrap: wrap; gap: 2px 10px; font-size: 0.78rem; color: #7b6e71; }
.tq-mono { font-family: ui-monospace, Consolas, monospace; }
.tq-vehicule { display: inline-flex; align-items: center; gap: 4px; }

.tq-avatar {
    width: 38px; height: 38px; border-radius: 50%; flex: none; display: grid; place-items: center;
    font-size: 0.8rem; font-weight: 700; letter-spacing: .02em; color: #55494c; background: #f0ebea;
    box-shadow: inset 0 0 0 2px #fff, 0 0 0 2px #e6dfde;
}
.tq-avatar--disponible      { color: #17603d; background: #e7f4ec; box-shadow: inset 0 0 0 2px #fff, 0 0 0 2px #9ccfb0; }
.tq-avatar--en_route        { color: #1f4f8b; background: #e4eefb; box-shadow: inset 0 0 0 2px #fff, 0 0 0 2px #a8c3ea; }
.tq-avatar--en_intervention { color: #8a5a10; background: #fdf0d9; box-shadow: inset 0 0 0 2px #fff, 0 0 0 2px #ebc98a; }
.tq-avatar--indisponible    { color: #8a2f36; background: #f2e8e9; box-shadow: inset 0 0 0 2px #fff, 0 0 0 2px #e0a9ad; }
.tq-avatar--grand { width: 56px; height: 56px; font-size: 1.1rem; }

.tq-etat { display: inline-flex; align-items: center; gap: 6px; padding: 3px 9px; border-radius: 999px; font-size: 0.74rem; font-weight: 600; white-space: nowrap; background: #f0ebea; color: #55494c; }
.tq-etat i { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.tq-etat--disponible      { background: #e7f4ec; color: #17603d; }
.tq-etat--en_route        { background: #e4eefb; color: #1f4f8b; }
.tq-etat--en_intervention { background: #fdf0d9; color: #8a5a10; }
.tq-etat--indisponible    { background: #f2e8e9; color: #8a2f36; }

.tq-fiche { border: 1px solid #ece7e6; border-radius: 12px; background: #fff; padding: 18px 20px 20px; min-height: 240px; }
.tq-fiche__tete { display: flex; align-items: center; gap: 14px; padding-bottom: 14px; margin-bottom: 14px; border-bottom: 1px solid #ece7e6; }
.tq-fiche__ident { min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.tq-fiche__nom { margin: 0; font-size: 1.2rem; font-weight: 700; color: #1b1416; }
.tq-fiche__etat { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.tq-fiche__detail { font-size: 0.8rem; color: #7b6e71; }

.tq-champs { display: grid; grid-template-columns: minmax(150px, auto) minmax(0, 1fr); gap: 12px; }
.tq-champ { display: flex; flex-direction: column; gap: 6px; min-width: 0; padding: 10px 12px; border-radius: 10px; background: #faf7f6; }
.tq-champ__lbl { display: flex; align-items: center; gap: 6px; font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: #7b6e71; }
.tq-champ__lbl i { color: #C61E26; }
.tq-champ__val { font-size: 1rem; font-weight: 600; color: #2f2a2b; }
.tq-vehicule-form { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.tq-vehicule-form .tk-input { flex: 1 1 160px; min-width: 0; box-sizing: border-box; text-transform: uppercase; }
.tq-vehicule-form .val-btn { flex: none; white-space: nowrap; }

.tq-bloc { padding-top: 16px; margin-top: 16px; border-top: 1px solid #ece7e6; }
.tq-bloc__titre { display: flex; align-items: center; gap: 8px; margin: 0 0 6px; font-size: 0.98rem; font-weight: 700; color: #2f2a2b; }
.tq-bloc__titre i { color: #C61E26; }
.tq-compte { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 7px; border-radius: 999px; background: #f0ebea; font-size: 0.74rem; font-weight: 700; color: #55494c; }
.tq-bloc__intro { margin: 0 0 12px; font-size: 0.86rem; line-height: 1.45; color: #6b5f62; }
.tq-vide { margin: 0 0 12px; font-size: 0.85rem; color: #8b7f82; font-style: italic; }

.tq-indispos { list-style: none; margin: 0 0 12px; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.tq-indispo {
    position: relative; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px;
    padding: 8px 10px 8px 14px; border-radius: 8px; background: #faf7f6; font-size: 0.85rem; overflow: hidden;
}
.tq-indispo::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: #d9d0cf; }
.tq-indispo--conge::before   { background: #1f4f8b; }
.tq-indispo--arret::before   { background: #8a2f36; }
.tq-indispo--absence::before { background: #b7791f; }
.tq-indispo--encours { background: #fdf5f5; }
.tq-indispo__type { padding: 1px 8px; border-radius: 999px; font-size: 0.76rem; font-weight: 600; background: #f0ebea; color: #55494c; }
.tq-indispo--conge   .tq-indispo__type { background: #e4eefb; color: #1f4f8b; }
.tq-indispo--arret   .tq-indispo__type { background: #f2e8e9; color: #8a2f36; }
.tq-indispo--absence .tq-indispo__type { background: #fdf0d9; color: #8a5a10; }
.tq-indispo__periode { color: #2f2a2b; }
.tq-indispo__encours { padding: 1px 8px; border-radius: 999px; font-size: 0.72rem; font-weight: 700; background: #C61E26; color: #fff; }
.tq-indispo__motif { flex-basis: 100%; font-size: 0.8rem; font-style: italic; color: #55494c; }
.tq-indispo .ct-suppr { margin-left: auto; }

.tq-form { display: grid; gap: 10px; padding: 14px; border: 1px dashed #d9d0cf; border-radius: 10px; background: #fff; }
.tq-form__ligne { display: grid; grid-template-columns: minmax(120px, .8fr) 1fr 1fr; gap: 10px; }
.tq-form label { display: flex; flex-direction: column; gap: 4px; min-width: 0; font-size: 0.78rem; font-weight: 600; color: #55494c; }
.tq-form .tk-input { width: 100%; min-width: 0; box-sizing: border-box; }
.tq-form .val-btn { justify-self: start; }

.tq-itvs { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.tq-itv {
    display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 4px 10px;
    padding: 9px 12px; border: 1px solid #ece7e6; border-radius: 8px; background: #fff;
    text-decoration: none; color: inherit; font-size: 0.85rem; transition: background .15s, border-color .15s;
}
.tq-itv:hover { background: #faf7f6; border-color: #e0d9d8; }
.tq-itv__ref { padding: 0 6px; border-radius: 3px; background: #f0ebea; color: #55494c; font-family: ui-monospace, Consolas, monospace; font-size: 0.78rem; font-weight: 600; }
.tq-itv__client { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tq-itv__droite { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
@media (max-width: 560px) {
    .tq-itv { grid-template-columns: auto minmax(0, 1fr); }
    .tq-itv__droite { grid-column: 1 / -1; }
}

/* ---------- Planning ---------- */
.pl-barre { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 10px; }
.pl-nav { display: flex; align-items: center; gap: 6px; }
.pl-nav-btn { width: 32px; height: 32px; border: 1px solid #ddd5d4; border-radius: 5px; background: #fff; font-size: 1.1rem; cursor: pointer; }
.pl-date { padding: 5px 8px; border: 1px solid #ddd5d4; border-radius: 5px; font-family: inherit; }
.pl-duree { display: flex; align-items: center; gap: 6px; font-size: 0.85rem; color: #55494c; }
.pl-selection {
    display: flex; align-items: center; gap: 10px; margin-bottom: 10px; padding: 9px 12px;
    border-radius: 6px; background: #fdf0d9; color: #6b4a0c; font-size: 0.88rem;
}
.pl-selection span { flex: 1; }
.pl-layout { display: grid; grid-template-columns: 3fr minmax(240px, 1fr); gap: 14px; align-items: start; }
.pl-grille-wrap { overflow-x: auto; }
.pl-grille {
    display: grid;
    grid-template-columns: 170px repeat(var(--pl-cols), minmax(26px, 1fr));
    min-width: 900px;
    border: 1px solid #ece7e6; border-radius: 8px; background: #fff; overflow: hidden;
}
.pl-entete { padding: 6px 4px; font-size: 0.75rem; color: #7b6e71; border-bottom: 1px solid #ece7e6; border-left: 1px solid #f1ecea; text-align: left; }
.pl-entete--tech { font-weight: 600; color: #2f2a2b; text-transform: capitalize; border-left: none; padding-left: 10px; }
.pl-tech { padding: 8px 10px; border-top: 1px solid #f1ecea; display: flex; flex-direction: column; gap: 2px; }
.pl-tech-nom { font-weight: 600; font-size: 0.88rem; }
.pl-tech-meta { font-size: 0.75rem; color: #7b6e71; font-family: ui-monospace, Consolas, monospace; }
.pl-ligne { position: relative; grid-column: 2 / -1; display: grid; grid-template-columns: repeat(var(--pl-cols), minmax(26px, 1fr)); border-top: 1px solid #f1ecea; min-height: 46px; }
.pl-ligne--indispo { background: repeating-linear-gradient(135deg, #f7f2f1 0 6px, #fff 6px 12px); }
.pl-cellule { border: none; border-left: 1px solid #f1ecea; background: transparent; padding: 0; min-height: 46px; }
.pl-cellule:nth-child(odd) { border-left-color: #e6dfde; }
.pl-cellule--cible { background: rgba(23, 96, 61, .08); cursor: pointer; }
.pl-cellule--cible:hover { background: rgba(23, 96, 61, .22); }
.pl-cellule:disabled { cursor: default; }
.pl-bloc {
    position: absolute; top: 5px; bottom: 5px; border-radius: 5px; padding: 3px 6px; overflow: hidden;
    display: flex; flex-direction: column; justify-content: center; gap: 1px;
    font-size: 0.72rem; line-height: 1.2; text-align: left; font-family: inherit;
    border: 1px solid transparent;
}
.pl-bloc--indispo { background: rgba(138, 47, 54, .12); color: #8a2f36; border-color: rgba(138, 47, 54, .25); font-weight: 600; pointer-events: none; }
.pl-bloc--itv { background: #eceaf5; color: #4a3f80; border-color: #d6d0ea; cursor: pointer; }
.pl-bloc--itv:hover:not(:disabled) { filter: brightness(.96); }
.pl-bloc--en_route, .pl-bloc--en_cours { background: #e7f4ec; color: #17603d; border-color: #cfe6d8; }
.pl-bloc--rapport_finalise, .pl-bloc--validee, .pl-bloc--envoyee_x3 { background: #f0ebea; color: #55494c; border-color: #e2dad8; }
.pl-bloc--urgent { border-left: 3px solid #C61E26; }
.pl-bloc--sel { outline: 2px solid #b7791f; }
.pl-bloc:disabled { cursor: default; opacity: .8; }
.pl-bloc-ref { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pl-bloc-client { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pl-legende { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; margin: 8px 0 0; font-size: 0.78rem; color: #7b6e71; }
.pl-leg { display: inline-block; width: 14px; height: 10px; border-radius: 2px; margin-right: 4px; vertical-align: middle; }
.pl-leg--libre { background: rgba(23, 96, 61, .15); }
.pl-leg--itv { background: #eceaf5; border: 1px solid #d6d0ea; }
.pl-leg--indispo { background: rgba(138, 47, 54, .12); border: 1px solid rgba(138, 47, 54, .25); }
.pl-leg--fige { background: #f0ebea; border: 1px solid #e2dad8; }
.pl-aplanifier { border: 1px solid #ece7e6; border-radius: 8px; background: #fff; padding: 12px; }
.pl-liste { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.pl-item { display: flex; gap: 8px; align-items: flex-start; padding: 8px 10px; border-radius: 6px; background: #faf7f6; }
.pl-item.urgent { border-left: 3px solid #C61E26; }
.pl-item--sel { outline: 2px solid #b7791f; }
.pl-item-main { flex: 1; display: flex; flex-direction: column; gap: 2px; font-size: 0.85rem; }
.pl-item-ref { font-family: ui-monospace, Consolas, monospace; font-weight: 600; }

/* ---------- Cockpit de la direction ---------- */
.ck-jour { margin: -4px 0 14px; font-size: 0.9rem; color: #55494c; text-transform: capitalize; }
/* Planning et cockpit ont besoin de largeur : on leve le plafond de 780 px de .itv-page (grille 7h-19h, 4 tuiles). */
.itv-page.pl-page, .itv-page.ck-page { max-width: 1400px; }
.ck-tuiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.ck-tuile { border: 1px solid #ece7e6; border-radius: 8px; background: #fff; padding: 0 0 12px; overflow: hidden; }
.ck-tuile-titre { margin: 0; padding: 10px 14px; font-size: 0.9rem; font-weight: 600; color: #2f2a2b; border-bottom: 1px solid #ece7e6; }
.ck-total { padding: 10px 14px 0; font-size: 2.3rem; font-weight: 700; line-height: 1.1; color: #2f2a2b; }
.ck-graphe { display: flex; align-items: center; gap: 12px; padding: 6px 14px 0; }
.ck-donut-wrap { position: relative; flex: none; width: 150px; height: 150px; }
.ck-donut { width: 100%; height: 100%; display: block; }
.ck-part { cursor: pointer; transition: opacity .12s; }
.ck-donut:hover .ck-part { opacity: .55; }
.ck-donut:hover .ck-part--hot, .ck-donut .ck-part--hot { opacity: 1; }
.ck-tip, .ck-vide {
    position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
    max-width: 140px; text-align: center; font-size: 0.72rem; line-height: 1.3;
}
.ck-tip { background: #111112; color: #fff; padding: 6px 8px; border-radius: 5px; box-shadow: 0 2px 10px rgba(0,0,0,.25); pointer-events: none; }
.ck-vide { color: #a1959a; font-style: italic; }
.ck-legende { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; min-width: 0; flex: 1; font-size: 0.78rem; }
.ck-legende li { display: flex; align-items: center; gap: 6px; padding: 2px 4px; border-radius: 4px; cursor: pointer; }
.ck-legende li.ck-hot { background: #faf7f6; }
.ck-puce { width: 9px; height: 9px; border-radius: 2px; flex: none; }
.ck-code { font-family: ui-monospace, Consolas, monospace; color: #55494c; }
.ck-nb { margin-left: auto; font-weight: 700; color: #2f2a2b; }
.ck-autres { color: #8b7f82; font-style: italic; }
.ck-note { margin: 12px 0 0; font-size: 0.8rem; color: #7b6e71; line-height: 1.45; }
@media (max-width: 1100px) { .ck-tuiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .ck-tuiles { grid-template-columns: 1fr; } .ck-graphe { flex-direction: column; align-items: flex-start; } }

/* Saisies hors ligne refusees au rejeu (Mes interventions). Rouge : du travail a perdu sa
   trace, et il faut que le technicien le sache avant de recommencer. */
.itv-rejets {
    margin-bottom: 12px; padding: 10px 12px; border-radius: 6px;
    background: #fdf2f2; color: #8a2f36; font-size: 0.85rem; line-height: 1.45;
}
.itv-rejets-titre { display: flex; align-items: center; gap: 8px; font-weight: 700; margin-bottom: 6px; }
.itv-rejets ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.itv-rejets li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }

@media (max-width: 900px) {
    .tq-layout, .pl-layout { grid-template-columns: 1fr; }
    .tq-form__ligne, .tq-champs { grid-template-columns: 1fr; }
    .st-tuiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Detail des blocs du planning, visible sans survol : horaires et ville d'une intervention,
   motif d'une indisponibilite (le `title` n'existe pas au doigt). */
.pl-bloc-meta { font-size: 0.66rem; opacity: .85; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 400; }
/* Pendant un placement, chaque creneau libre affiche son heure : le chef sait ou il pose. */
.pl-cellule-h { display: block; font-size: 0.58rem; line-height: 1; color: #17603d; opacity: .75; font-family: ui-monospace, Consolas, monospace; pointer-events: none; }
.pl-cellule--cible .pl-cellule-h { opacity: 1; }

/* ---------- Tactile (voir notifications.css) ---------- */
@media (pointer: coarse) {
    .pl-nav-btn { width: 44px; height: 44px; }
    .pl-date, .tk-input { min-height: 44px; font-size: 16px; }
    .tk-btn-sm { min-height: 44px; }
    .pl-cellule { min-height: 56px; }
    .pl-bloc { font-size: 0.74rem; }
}

/* =====================================================================
   Planning, refonte du 2026-10-09 (préfixe pg-, design system tokens.css)
   Pleine largeur sous le header, toute la hauteur restante ; seule la grille
   défile. En-tête de page 48 px, bande d'indicateurs 40 px, colonne des
   techniciens figée à gauche (260 px), heures figées en haut, lignes de 52 px.
   ===================================================================== */
.pg {
    display: flex; flex-direction: column;
    height: calc(100dvh - 56px);
    background: var(--df-fond-app); color: var(--df-texte);
    font-family: var(--df-police); font-size: var(--df-taille-14);
}

/* ---------- boutons communs ---------- */
.pg-icone {
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px; padding: 0; flex: none;
    border: 1px solid transparent; border-radius: var(--df-rayon); background: transparent;
    color: var(--df-texte-second); cursor: pointer;
}
.pg-icone:hover:not(:disabled) { background: var(--df-surface-survol); color: var(--df-texte); }
.pg-icone:disabled { opacity: .45; cursor: default; }
.pg-bouton {
    display: inline-flex; align-items: center; gap: var(--df-esp-1);
    height: 32px; padding: 0 var(--df-esp-3); flex: none;
    border: 1px solid var(--df-bordure); border-radius: var(--df-rayon); background: var(--df-surface);
    color: var(--df-texte); font: inherit; font-size: var(--df-taille-13); font-weight: var(--df-graisse-forte);
    white-space: nowrap; cursor: pointer;
}
.pg-bouton:hover:not(:disabled) { background: var(--df-surface-survol); }
.pg-bouton:disabled { color: var(--df-texte-inactif); cursor: default; }
.pg-bouton--petit { height: 28px; padding: 0 var(--df-esp-2); font-size: var(--df-taille-12); }
.pg-bouton--actif { background: var(--df-surface-survol); border-color: var(--df-bordure-forte); }
.pg-icone:focus-visible, .pg-bouton:focus-visible, .pg-kpi__item:focus-visible,
.pg-bloc:focus-visible, .pg-tri:focus-visible, .pg-vues button:focus-visible { outline: none; box-shadow: var(--df-focus); }

/* ---------- en-tête de page ---------- */
.pg-entete {
    display: flex; align-items: center; justify-content: space-between; gap: var(--df-esp-4);
    height: 48px; padding: 0 var(--df-esp-4); flex: none;
    background: var(--df-surface); border-bottom: 1px solid var(--df-bordure);
}
.pg-entete__gauche, .pg-entete__droite { display: flex; align-items: center; gap: var(--df-esp-3); min-width: 0; }
.pg-titre { margin: 0; font-size: var(--df-taille-20); font-weight: var(--df-graisse-forte); line-height: 1; white-space: nowrap; }
.pg-date { display: flex; align-items: center; gap: var(--df-esp-1); }
.pg-date__libelle {
    position: relative; display: inline-flex; align-items: center; gap: var(--df-esp-2);
    height: 32px; margin: 0; padding: 0 var(--df-esp-2); border-radius: var(--df-rayon);
    font-size: var(--df-taille-14); font-weight: var(--df-graisse-forte); white-space: nowrap; cursor: pointer;
}
.pg-date__libelle:hover { background: var(--df-surface-survol); }
.pg-date__libelle i { color: var(--df-texte-second); font-size: 14px; }
/* Le champ date natif couvre le libellé : un clic ouvre le calendrier du navigateur. */
.pg-date__champ { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; border: 0; padding: 0; }
.pg-date__champ::-webkit-calendar-picker-indicator { position: absolute; inset: 0; width: 100%; height: 100%; cursor: pointer; }
.pg-vues { display: inline-flex; padding: 2px; border-radius: var(--df-rayon); background: var(--df-surface-survol); }
.pg-vues button {
    height: 28px; padding: 0 var(--df-esp-3); border: 0; border-radius: 4px; background: transparent;
    font: inherit; font-size: var(--df-taille-13); color: var(--df-texte-second); cursor: default;
}
.pg-vues button.pg-vues--actif { background: var(--df-surface); color: var(--df-texte); font-weight: var(--df-graisse-forte); box-shadow: 0 0 0 1px var(--df-bordure); }
.pg-recherche {
    display: flex; align-items: center; gap: var(--df-esp-2); width: 220px; height: 32px; margin: 0;
    padding: 0 var(--df-esp-2); border: 1px solid var(--df-bordure-forte); border-radius: var(--df-rayon); background: var(--df-surface);
}
.pg-recherche:focus-within { border-color: var(--df-primaire); box-shadow: 0 0 0 1px var(--df-primaire); }
.pg-recherche i { color: var(--df-texte-second); font-size: 14px; }
.pg-recherche input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; font: inherit; font-size: var(--df-taille-13); color: var(--df-texte); }
.pg-duree { display: flex; align-items: center; gap: var(--df-esp-2); margin: 0; font-size: var(--df-taille-13); color: var(--df-texte-second); white-space: nowrap; cursor: help; }
.pg-duree select {
    height: 32px; padding: 0 var(--df-esp-2); border: 1px solid var(--df-bordure-forte); border-radius: var(--df-rayon);
    background-color: var(--df-surface); font: inherit; font-size: var(--df-taille-13); color: var(--df-texte); cursor: pointer;
}

/* ---------- indicateurs du jour et légende (40 px) ---------- */
.pg-kpi {
    display: flex; align-items: center; justify-content: space-between; gap: var(--df-esp-4);
    height: 40px; padding: 0 var(--df-esp-4); flex: none;
    background: var(--df-surface); border-bottom: 1px solid var(--df-bordure);
}
.pg-kpi__liste { display: flex; align-items: center; gap: var(--df-esp-1); min-width: 0; }
.pg-kpi__item {
    display: inline-flex; align-items: center; gap: var(--df-esp-2); height: 32px; padding: 0 var(--df-esp-2);
    border: 1px solid transparent; border-radius: var(--df-rayon); background: transparent; font: inherit; cursor: pointer; white-space: nowrap;
}
.pg-kpi__item:hover { background: var(--df-surface-survol); }
.pg-kpi__item--actif { background: var(--df-surface-survol); border-color: var(--df-bordure-forte); }
.pg-kpi__nb { font-size: var(--df-taille-16); font-weight: var(--df-graisse-forte); font-variant-numeric: tabular-nums; color: var(--df-texte); }
.pg-kpi__lbl { font-size: var(--df-taille-13); color: var(--df-texte-second); }
.pg-kpi__item--x3.pg-kpi__item--alerte .pg-kpi__nb { color: var(--df-st-echec); }
.pg-kpi__sep { width: 1px; height: 20px; margin: 0 var(--df-esp-2); background: var(--df-bordure); }
.pg-pastille { width: 10px; height: 10px; border-radius: 50%; flex: none; background: var(--df-st-couleur, var(--df-bordure-forte)); }
.pg-legende { display: flex; align-items: center; gap: var(--df-esp-3); margin: 0; padding: 0; list-style: none; flex-wrap: nowrap; overflow: hidden; }
.pg-legende li { display: inline-flex; align-items: center; gap: 6px; font-size: var(--df-taille-12); color: var(--df-texte-second); white-space: nowrap; cursor: help; }
.pg-pastille--legende { border-radius: 3px; background: var(--df-st-fond, var(--df-surface-survol)); box-shadow: inset 3px 0 0 var(--df-st-couleur, var(--df-bordure-forte)); }
.pg-pastille--indispo { background: #DC2626; box-shadow: inset 0 0 0 1px #B91C1C; }

/* ---------- échecs X3, messages, sélection ---------- */
.pg-echecs { flex: none; max-height: 220px; overflow: auto; background: var(--df-surface); border-bottom: 1px solid var(--df-bordure); }
.pg-echecs__tete { position: sticky; top: 0; display: flex; align-items: center; gap: var(--df-esp-3); padding: var(--df-esp-2) var(--df-esp-4); background: var(--df-surface); border-bottom: 1px solid var(--df-bordure); }
.pg-echecs__tete strong { font-size: var(--df-taille-14); white-space: nowrap; }
.pg-echecs__tete span { flex: 1; min-width: 0; font-size: var(--df-taille-13); color: var(--df-texte-second); }
.pg-echecs__liste { list-style: none; margin: 0; padding: 0; }
.pg-echecs__liste a {
    display: grid; grid-template-columns: 160px minmax(0, 1fr) auto auto; align-items: center; gap: var(--df-esp-3);
    height: 36px; padding: 0 var(--df-esp-4); border-bottom: 1px solid var(--df-bordure); color: var(--df-texte); text-decoration: none; font-size: var(--df-taille-13);
}
.pg-echecs__liste a:hover { background: var(--df-surface-survol); }
.pg-echecs__num { font-weight: var(--df-graisse-forte); }
.pg-echecs__client { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pg-echecs__meta { color: var(--df-texte-second); white-space: nowrap; }
.pg-vide { margin: 0; padding: var(--df-esp-3) var(--df-esp-4); font-size: var(--df-taille-13); color: var(--df-texte-second); }
.pg-message, .pg-selection {
    display: flex; align-items: center; gap: var(--df-esp-2); flex: none;
    padding: var(--df-esp-2) var(--df-esp-4); font-size: var(--df-taille-13); border-bottom: 1px solid var(--df-bordure);
}
.pg-message span, .pg-selection span { flex: 1; min-width: 0; }
.pg-message--succes { background: var(--df-succes-pale); color: var(--df-succes); }
.pg-message--erreur { background: var(--df-rouge-pale); color: var(--df-rouge-fonce); }
.pg-selection { background: var(--df-alerte-pale); color: #78350F; }

/* ---------- corps : grille + panneau ---------- */
.pg-corps { flex: 1; min-height: 0; display: flex; }
.pg-grille-zone { flex: 1; min-width: 0; overflow: auto; background: var(--df-surface); }
.pg-etat { display: flex; flex-direction: column; align-items: center; gap: var(--df-esp-2); padding: var(--df-esp-10) var(--df-esp-4); color: var(--df-texte-second); font-size: var(--df-taille-13); }
.pg-etat i { font-size: 20px; }
.pg-etat--erreur { color: var(--df-rouge-fonce); }

.pg-grille { display: grid; grid-template-columns: 260px repeat(var(--pg-cols), minmax(40px, 1fr)); min-width: max-content; } /* 48 cellules (0 h - 24 h) : deborde, defile au glisser */
.pg-coin, .pg-heure {
    position: sticky; top: 0; z-index: 3; height: 32px; display: flex; align-items: center;
    background: var(--df-surface); border-bottom: 1px solid var(--df-bordure);
    font-size: var(--df-taille-12); color: var(--df-texte-second);
}
.pg-coin { left: 0; z-index: 4; gap: var(--df-esp-2); padding: 0 var(--df-esp-3); border-right: 1px solid var(--df-bordure); font-weight: var(--df-graisse-forte); }
.pg-coin__nb { padding: 0 6px; border-radius: 999px; background: var(--df-surface-survol); font-variant-numeric: tabular-nums; }
.pg-heure { padding-left: var(--df-esp-1); border-left: 1px solid var(--df-bordure); white-space: nowrap; }
.pg-aucun { grid-column: 1 / -1; padding: var(--df-esp-6) var(--df-esp-4); font-size: var(--df-taille-13); color: var(--df-texte-second); }

/* Colonne des techniciens, figée à gauche */
.pg-tech {
    position: sticky; left: 0; z-index: 2;
    /* pastille de présence, case « indisponible toute la journée », nom, résumé du jour */
    display: grid; grid-template-columns: auto auto minmax(0, 1fr) auto; align-items: center; gap: var(--df-esp-2);
    height: 52px; padding: 0 var(--df-esp-3);
    background: var(--df-surface); border-right: 1px solid var(--df-bordure); border-bottom: 1px solid var(--df-bordure);
}
.pg-tech.pg-alt { background: #FAFAFA; }
.pg-presence { width: 8px; height: 8px; border-radius: 50%; background: var(--df-bordure-forte); cursor: help; }
.pg-presence--active { background: var(--df-st-demarree); }
.pg-tech__id { display: flex; flex-direction: column; min-width: 0; }
.pg-tech__nom { font-size: var(--df-taille-14); font-weight: var(--df-graisse-forte); line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pg-tech__meta { font-size: var(--df-taille-12); color: var(--df-texte-second); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pg-tech__resume { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; font-size: var(--df-taille-12); color: var(--df-texte-second); font-variant-numeric: tabular-nums; white-space: nowrap; }
.pg-tech__resume span { display: inline-flex; align-items: center; gap: 4px; cursor: help; }
.pg-tech__resume i { font-size: 11px; }

/* Ligne horaire : heures en traits pleins, demi-heures en pointillés, lignes alternées */
.pg-ligne {
    position: relative; grid-column: 2 / -1; height: 52px;
    display: grid; grid-template-columns: repeat(var(--pg-cols), 1fr);
    background: var(--df-surface); border-bottom: 1px solid var(--df-bordure);
}
.pg-ligne.pg-alt { background: #FAFAFA; }
.pg-cellule { min-width: 0; padding: 0; border: 0; border-left: 1px dotted #EEF0F3; background: transparent; cursor: default; }
.pg-cellule--heure { border-left: 1px solid var(--df-bordure); }
.pg-cellule--cible { cursor: pointer; background: rgba(21, 128, 61, .05); }
.pg-cellule--cible:hover { background: rgba(21, 128, 61, .14); }
.pg-cellule__h { display: block; font-size: 10px; line-height: 1; color: var(--df-succes); font-variant-numeric: tabular-nums; pointer-events: none; }

/* Indisponibilités (congé, arrêt, absence) : rouge vif depuis le 2026-10-28, hachures grises avant. */
.pg-indispo {
    position: absolute; top: 0; bottom: 0; z-index: 1; display: flex; align-items: center; overflow: hidden;
    padding: 0 var(--df-esp-2);
    background: repeating-linear-gradient(135deg, #DC2626 0 10px, #C81E1E 10px 20px);
    color: #fff; font-size: var(--df-taille-12); font-weight: 700; white-space: nowrap; cursor: help;
}

/* Heure actuelle */
.pg-maintenant { position: absolute; top: 0; bottom: 0; z-index: 3; width: 0; border-left: 2px solid var(--df-rouge); pointer-events: none; }

/* Blocs d'intervention : couleur du statut (tokens), bordure gauche 3 px, rayon 4 px */
.pg-bloc {
    position: absolute; top: 4px; bottom: 4px; z-index: 2; min-width: 6px;
    display: flex; flex-direction: column; justify-content: center; gap: 1px;
    padding: 4px 6px; border-radius: 4px; border-left: 3px solid var(--df-st-couleur, var(--df-bordure-forte));
    background: var(--df-st-fond, var(--df-surface-survol)); color: var(--df-st-texte, var(--df-texte));
    cursor: pointer; container-type: inline-size;
}
.pg-bloc:hover, .pg-bloc:focus-visible, .pg-bloc:focus-within { z-index: 6; }
.pg-bloc--fige { cursor: default; }
.pg-bloc--sel { outline: 2px solid var(--df-primaire); outline-offset: 1px; }
.pg-bloc--urgent .pg-bloc__client::before { content: "!"; display: inline-block; margin-right: 4px; color: var(--df-rouge); font-weight: 700; }
.pg-bloc--attenue { opacity: .25; }
.pg-bloc__client, .pg-bloc__second { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pg-bloc__client { font-size: var(--df-taille-12); font-weight: var(--df-graisse-forte); line-height: 1.25; }
.pg-bloc__second { font-size: 11px; line-height: 1.25; opacity: .85; }
.pg-bloc__initiales { display: none; font-size: var(--df-taille-12); font-weight: var(--df-graisse-forte); text-align: center; }
.pg-bloc__suite { position: absolute; right: 2px; top: 50%; transform: translateY(-50%); font-size: 14px; font-weight: 700; }
/* Bloc trop étroit pour un nom : seulement les initiales du client */
@container (max-width: 64px) {
    .pg-bloc__client, .pg-bloc__second { display: none; }
    .pg-bloc__initiales { display: block; }
}

/* Infobulle d'un bloc (survol ou focus clavier) */
.pg-pop {
    position: absolute; left: 0; top: calc(100% + 6px); z-index: 20;
    display: none; flex-direction: column; gap: var(--df-esp-1); width: 280px;
    padding: var(--df-esp-3); border: 1px solid var(--df-bordure); border-radius: var(--df-rayon-panneau);
    background: var(--df-surface); box-shadow: var(--df-ombre-popover);
    color: var(--df-texte); font-size: var(--df-taille-13); cursor: default; white-space: normal;
}
.pg-bloc:hover .pg-pop, .pg-bloc:focus-visible .pg-pop, .pg-bloc:focus-within .pg-pop { display: flex; }
.pg-bloc--pop-haut .pg-pop { top: auto; bottom: calc(100% + 6px); }
/* Pont invisible entre le bloc et l'infobulle : la souris peut aller jusqu'au lien. */
.pg-pop::before { content: ""; position: absolute; left: 0; right: 0; top: -8px; height: 8px; }
.pg-bloc--pop-haut .pg-pop::before { top: auto; bottom: -8px; }
.pg-pop__num { font-size: var(--df-taille-12); color: var(--df-texte-second); font-weight: var(--df-graisse-forte); }
.pg-pop__client { font-size: var(--df-taille-14); font-weight: var(--df-graisse-forte); }
.pg-pop__ligne { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; color: var(--df-texte-second); }
.pg-pop__ligne i { font-size: 12px; }
.pg-pop__lien { margin-top: var(--df-esp-1); align-self: flex-start; color: var(--df-texte); font-weight: var(--df-graisse-forte); text-decoration: none; font-size: var(--df-taille-13); }
.pg-pop__lien:hover { text-decoration: underline; }

/* ---------- panneau « À planifier » (300 px) ---------- */
.pg-panneau { width: 300px; flex: none; display: flex; flex-direction: column; min-height: 0; background: var(--df-surface); border-left: 1px solid var(--df-bordure); }
.pg-panneau__tete { display: flex; align-items: center; gap: var(--df-esp-2); height: 44px; padding: 0 var(--df-esp-2) 0 var(--df-esp-3); border-bottom: 1px solid var(--df-bordure); flex: none; }
.pg-panneau__tete strong { flex: 1; display: inline-flex; align-items: center; gap: var(--df-esp-2); font-size: var(--df-taille-14); }
.pg-compteur { padding: 0 6px; border-radius: 999px; background: var(--df-surface-survol); color: var(--df-texte-second); font-size: var(--df-taille-12); font-variant-numeric: tabular-nums; }
.pg-tri { display: inline-flex; align-items: center; gap: 4px; height: 28px; padding: 0 var(--df-esp-2); border: 0; border-radius: var(--df-rayon); background: transparent; font: inherit; font-size: var(--df-taille-12); color: var(--df-texte-second); cursor: pointer; }
.pg-tri:hover { background: var(--df-surface-survol); color: var(--df-texte); }
.pg-panneau__vide { display: flex; flex-direction: column; align-items: center; gap: var(--df-esp-2); padding: var(--df-esp-8) var(--df-esp-4); color: var(--df-texte-second); font-size: var(--df-taille-13); text-align: center; }
.pg-panneau__vide i { font-size: 20px; color: var(--df-texte-inactif); }
.pg-cartes { list-style: none; margin: 0; padding: var(--df-esp-2); display: flex; flex-direction: column; gap: var(--df-esp-2); overflow-y: auto; }
.pg-carte { display: flex; flex-direction: column; gap: var(--df-esp-1); padding: var(--df-esp-2) var(--df-esp-3); border: 1px solid var(--df-bordure); border-radius: var(--df-rayon); background: var(--df-surface); }
.pg-carte--urgent { border-left: 3px solid var(--df-rouge); }
/* Jour demandé comparé au jour affiché (2026-10-28) : orange vif quand c'est un jour plus tard. */
.pg-carte--plus-tard { background: #FFF7ED; border-color: #FDBA74; }
.pg-carte__jour { display: inline-flex; align-items: center; gap: 6px; align-self: flex-start; padding: 2px 8px; border-radius: 999px; font-size: var(--df-taille-12); font-weight: 700; }
.pg-carte__jour--ce-jour { background: #DCFCE7; color: #166534; }
.pg-carte__jour--plus-tard { background: #EA580C; color: #fff; }
.pg-carte__jour--retard { background: #FEE2E2; color: #991B1B; }
.pg-message__actions { display: inline-flex; flex-wrap: wrap; gap: var(--df-esp-2); margin-left: var(--df-esp-2); }
.pg-bouton--primaire { background: var(--df-primaire, #BF1E26); border-color: var(--df-primaire, #BF1E26); color: #fff; }
.pg-bouton--primaire:hover:not(:disabled) { background: var(--df-rouge-fonce, #991B1B); }
.pg-carte--sel { border-color: var(--df-primaire); box-shadow: 0 0 0 1px var(--df-primaire); }
.pg-carte__haut { display: flex; align-items: center; gap: var(--df-esp-2); min-width: 0; }
.pg-carte__client { flex: 1; min-width: 0; font-size: var(--df-taille-13); font-weight: var(--df-graisse-forte); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pg-carte__urgent { padding: 0 6px; border-radius: 4px; background: var(--df-rouge-pale); color: var(--df-rouge-fonce); font-size: 11px; font-weight: var(--df-graisse-forte); }
.pg-carte__meta { display: flex; flex-wrap: wrap; gap: 2px var(--df-esp-3); font-size: var(--df-taille-12); color: var(--df-texte-second); }
.pg-carte__meta span { display: inline-flex; align-items: center; gap: 4px; }
.pg-carte__bas { display: flex; align-items: center; gap: var(--df-esp-2); margin-top: 2px; min-width: 0; }
.pg-carte__tech { flex: 1; min-width: 0; display: inline-flex; align-items: center; gap: 4px; font-size: var(--df-taille-12); color: var(--df-texte-second); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pg-carte__bas .pg-bouton { margin-left: auto; }

/* ---------- écrans moins larges ---------- */
@media (max-width: 1439px) {
    .pg-legende { display: none; }
    .pg-recherche { width: 180px; }
}
@media (max-width: 1200px) {
    .pg-vues, .pg-duree span { display: none; }
}
@media (max-width: 900px) {
    .pg { height: auto; }
    .pg-entete { height: auto; flex-wrap: wrap; padding: var(--df-esp-2) var(--df-esp-3); }
    .pg-entete__gauche, .pg-entete__droite { flex-wrap: wrap; }
    .pg-kpi { height: auto; padding: var(--df-esp-1) var(--df-esp-3); overflow-x: auto; }
    .pg-corps { flex-direction: column; }
    .pg-grille-zone { max-height: 70vh; }
    .pg-panneau { width: auto; border-left: 0; border-top: 1px solid var(--df-bordure); }
    .pg-grille { grid-template-columns: 180px repeat(var(--pg-cols), minmax(28px, 1fr)); }
    .pg-tech__resume { display: none; }
}
@media (pointer: coarse) {
    .pg-icone, .pg-bouton { min-height: 44px; min-width: 44px; }
}

/* =====================================================================
   Gestes au pointeur (2026-10-12, js/planningDrag.js) : défilement au glisser,
   déplacement des blocs et dépôt des cartes « À planifier » sur un créneau,
   appui long au doigt pour créer. Le placement au clic reste possible.
   ===================================================================== */
.pg-grille-zone { touch-action: none; cursor: grab; }
.pg-grille-zone.pg-defile { cursor: grabbing; user-select: none; }
.pg-bloc, .pg-carte { touch-action: none; }
.pg-bloc:not(.pg-bloc--fige) { cursor: grab; }
.pg-cellule { cursor: cell; }
.pg-cellule--cible { cursor: pointer; }
.pg-glisse { opacity: .45; }
.pg-cellule--survol { background: rgba(31, 41, 55, .14) !important; outline: 2px dashed var(--df-primaire, #1F2937); outline-offset: -2px; }
body.pg-drag-actif { user-select: none; cursor: grabbing; }
body.pg-drag-actif .pg-pop { display: none !important; }
.pg-fantome {
    position: fixed; top: 0; left: 0; z-index: 1000; pointer-events: none;
    display: flex; flex-direction: column; gap: 2px; max-width: 260px;
    padding: 6px 10px; border-radius: 8px; background: var(--df-surface, #fff);
    border: 1px solid var(--df-bordure, #e5e7eb); box-shadow: 0 8px 24px rgba(17, 17, 18, .18);
    font-size: 13px; color: var(--df-texte, #111);
}
.pg-fantome__lib { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pg-fantome__heure { font-size: 12px; color: var(--df-texte-second, #6b7280); font-variant-numeric: tabular-nums; }
.pg-fantome__heure:empty { display: none; }

/* Case « indisponible toute la journée » à côté du technicien (2026-10-12). Depuis le 2026-10-28, à la
   demande des chefs de centre : technicien en congé, arrêt ou absence = ligne ROUGE VIF, lisible d'un coup d'œil. */
.pg-tech__indispo { display: inline-flex; align-items: center; gap: 2px; margin-right: 2px; cursor: pointer; color: var(--df-texte-second); flex: none; }
.pg-tech__indispo input { margin: 0; width: 14px; height: 14px; accent-color: var(--df-rouge, #BF1E26); cursor: pointer; }
.pg-tech__indispo i { font-size: 13px; }
.pg-tech--indispo { background: #DC2626 !important; color: #fff; }
.pg-tech--indispo .pg-tech__nom { color: #fff; font-weight: 700; }
.pg-tech--indispo .pg-tech__meta,
.pg-tech--indispo .pg-tech__resume,
.pg-tech--indispo .pg-tech__resume *,
.pg-tech--indispo .pg-tech__indispo { color: #fff !important; }
.pg-tech--indispo .pg-tech__indispo input { accent-color: #fff; }
.pg-ligne--indispo { background: repeating-linear-gradient(135deg, #DC2626 0 10px, #C81E1E 10px 20px); }
.pg-ligne--indispo .pg-cellule { cursor: not-allowed; border-color: rgba(255, 255, 255, .18); }
.pg-ligne--indispo .pg-indispo { background: transparent; }

/* Affectée sans créneau (2026-10-26) : bloc indicatif de 2 h (heure d'affectation), en pointillés. */
.pg-bloc--sans-creneau { border-style: dashed !important; background-image: repeating-linear-gradient(135deg, transparent 0 6px, rgba(0,0,0,.04) 6px 12px); }

/* Ligne « Comptoir » (2026-10-28) : ventes sans rapport du jour, sous les techniciens, blocs non déplaçables. */
.pg-tech--comptoir { grid-template-columns: auto minmax(0, 1fr) auto; background: #F3F4F6; border-top: 2px solid var(--df-bordure-forte); }
.pg-tech__icone { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; background: var(--df-primaire); color: #fff; font-size: 13px; }
.pg-ligne--comptoir { background: #F3F4F6; border-top: 2px solid var(--df-bordure-forte); }
.pg-ligne--comptoir .pg-cellule { cursor: default; }
.pg-bloc--comptoir { cursor: pointer; }
.pg-bloc--comptoir:hover { filter: brightness(.97); }
