/* Nouvelle interface Projets (public/js/modules/projets-v2/) — lot A.
   Tout est rangé sous #projets-v2-view et peint avec les jetons --gs-* de la
   coquille (css/shell.css) : le thème sombre suit sans une ligne de plus.
   Rendu fidèle à la maquette validée le 21/10/2026. */

#projets-v2-view { padding: 20px 32px 64px; color: var(--gs-ink); }
#projets-v2-view *, #projets-v2-view *::before, #projets-v2-view *::after { box-sizing: border-box; }
/* Sans poids (:where) : les classes qui posent une couleur (bouton coché,
   statut choisi) doivent gagner sur cette remise à zéro. */
:where(#projets-v2-view) :where(button, input, textarea) { font: inherit; color: inherit; }
#projets-v2-view button:focus-visible, #projets-v2-view input:focus-visible, #projets-v2-view textarea:focus-visible { outline: 2px solid var(--gs-accent); outline-offset: 1px; }

.pv2 { display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-start; }
.pv2-principal { flex: 999 1 560px; min-width: 0; }
.pv2-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.pv2-discret { color: var(--gs-ink-faint); font-size: 13px; }
.pv2-retard { color: var(--gs-crit); font-weight: 600; }
.pv2-pad { padding: 6px 10px; margin: 0; }

.pv2-toprow { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.pv2-haut { margin-bottom: 14px; }
.pv2-mtabs { display: inline-flex; gap: 3px; padding: 3px; background: var(--gs-accent-soft); border-radius: 10px; }
.pv2-mtab { border: 0; background: transparent; border-radius: 8px; padding: 0 16px; min-height: 38px; font-size: 14px; font-weight: 600; color: var(--gs-ink-dim); cursor: pointer; }
.pv2-mtab-on { background: var(--gs-panel); color: var(--gs-ink); box-shadow: 0 1px 3px rgba(40, 34, 24, .14); }

.pv2-tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--gs-line); margin: 4px 0 14px; flex-wrap: wrap; }
.pv2-tab { border: 0; background: transparent; padding: 10px 12px; font-size: 14px; color: var(--gs-ink-dim); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; display: flex; gap: 8px; align-items: center; min-height: 44px; }
.pv2-tab-on { color: var(--gs-ink); font-weight: 600; border-bottom-color: var(--gs-accent); }
.pv2-c, .pv2-gc { font-size: 12px; background: var(--gs-accent-soft); border-radius: 999px; padding: 0 8px; font-weight: 500; color: var(--gs-ink-dim); letter-spacing: 0; text-transform: none; }

.pv2-carte { background: var(--gs-panel); border: 1px solid var(--gs-line); border-radius: var(--gs-radius-panel, 14px); }
.pv2-grp { margin-top: 14px; padding: 12px 8px 6px; }
.pv2-gtitre { font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--gs-ink-dim); margin: 0 0 4px; display: flex; gap: 8px; align-items: center; padding: 0 8px; }
.pv2-gr-retard { color: var(--gs-crit); }
.pv2-lnom { text-align: left; min-width: 0; border: 0; background: transparent; padding: 4px 0; font: inherit; letter-spacing: inherit; text-transform: inherit; color: inherit; cursor: pointer; }
.pv2-lnom:hover { color: var(--gs-ink); text-decoration: underline; text-underline-offset: 3px; }
.pv2-lignes { list-style: none; margin: 0; padding: 0; }
.pv2-ligne { display: flex; align-items: center; gap: 10px; padding: 2px 8px; border-radius: 8px; border-top: 1px solid var(--gs-line); min-height: 46px; }
.pv2-ligne:hover { background: var(--gs-accent-soft); }
.pv2-ouverte { background: var(--gs-accent-soft); }
.pv2-faite .pv2-titre { text-decoration: line-through; color: var(--gs-ink-faint); }
.pv2-chk { width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid var(--gs-ink-faint); background: var(--gs-panel); display: grid; place-items: center; cursor: pointer; flex: none; padding: 0; color: transparent; }
.pv2-chk svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.pv2-chk:hover { border-color: var(--gs-ok); color: var(--gs-ok); }
.pv2-chk-on, .pv2-chk-on:hover { background: var(--gs-ok); border-color: var(--gs-ok); color: #FFFFFF; }
.pv2-chk-s { width: 18px; height: 18px; cursor: default; }
.pv2-titre { flex: 1; min-width: 0; border: 0; background: transparent; text-align: left; font-size: 14px; padding: 10px 0; cursor: pointer; line-height: 1.35; }
.pv2-meta { display: flex; align-items: center; gap: 10px; font-size: 12px; color: var(--gs-ink-faint); flex: none; }
.pv2-sec { font-size: 11px; color: var(--gs-ink-dim); background: var(--gs-accent-soft); border-radius: 6px; padding: 2px 7px; max-width: 180px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pv2-pchip { display: inline-flex; align-items: center; gap: 6px; max-width: 220px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pv2-dot { width: 10px; height: 10px; border-radius: 3px; flex: none; display: inline-block; }
.pv2-due { white-space: nowrap; min-width: 62px; text-align: right; }
.pv2-due.pv2-retard { color: var(--gs-crit); }
.pv2-jour { color: var(--gs-ok); font-weight: 600; }
.pv2-av { width: 26px; height: 26px; border-radius: 50%; color: #FFFFFF; font-size: 10px; font-weight: 600; display: inline-grid; place-items: center; flex: none; vertical-align: middle; }
.pv2-av-vide { background: transparent; border: 1.5px dashed var(--gs-ink-faint); color: var(--gs-ink-faint); }
.pv2-plus { font-size: 11px; margin-left: -6px; }
.pv2-m { white-space: nowrap; }

.pv2-sechead { list-style: none; display: flex; align-items: center; gap: 8px; padding: 14px 8px 6px; font-size: 13px; font-weight: 600; color: var(--gs-ink-dim); border-top: 1px solid var(--gs-line); }
.pv2-sechead::before { content: ''; width: 3px; height: 14px; border-radius: 2px; background: var(--gs-gold-a, #C2A868); }
.pv2-secnom { flex: 1; min-width: 0; }
.pv2-li-ajout { list-style: none; }

.pv2-ajoutbtn { display: flex; align-items: center; gap: 8px; width: 100%; border: 0; border-top: 1px solid var(--gs-line); background: transparent; color: var(--gs-accent); padding: 8px; min-height: 44px; cursor: pointer; font-size: 14px; text-align: left; border-radius: 0 0 8px 8px; }
.pv2-ajoutbtn:hover { background: var(--gs-accent-soft); }
.pv2-ajout { padding: 8px 0; border-top: 1px solid var(--gs-line); }
.pv2-quick { display: flex; align-items: center; gap: 8px; border: 1px solid var(--gs-line-strong); border-radius: 10px; padding: 4px 4px 4px 12px; background: var(--gs-panel); }
.pv2-quick:focus-within { border-color: var(--gs-accent); box-shadow: 0 0 0 3px var(--gs-accent-soft); }
.pv2-quick input { flex: 1; min-width: 0; border: 0; outline: none; font-size: 14px; height: 40px; background: transparent; }
.pv2-apercu { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; font-size: 12px; }
.pv2-apercu:empty { display: none; }
.pv2-qchip { border-radius: 999px; padding: 3px 10px; background: var(--gs-accent-soft); color: var(--gs-ink-dim); }
.pv2-qchip-on { background: color-mix(in srgb, var(--gs-ok) 18%, transparent); color: var(--gs-ink); }

.pv2-btn { border: 0; background: var(--gs-accent); color: var(--gs-on-accent, #FFFFFF); border-radius: 8px; padding: 0 16px; height: 40px; font-weight: 600; cursor: pointer; font-size: 14px; white-space: nowrap; }
.pv2-btn:disabled { opacity: .45; cursor: default; }
.pv2-btn-ghost { border: 1px solid var(--gs-line-strong); background: var(--gs-panel); border-radius: 8px; padding: 0 14px; height: 40px; cursor: pointer; font-size: 14px; white-space: nowrap; }
.pv2-lien { border: 0; background: transparent; color: var(--gs-accent); cursor: pointer; padding: 4px 2px; font-size: 13px; text-decoration: underline; text-underline-offset: 2px; }
.pv2-ibtn { width: 32px; height: 32px; flex: none; border: 0; border-radius: 6px; background: transparent; color: var(--gs-ink-dim); cursor: pointer; display: grid; place-items: center; padding: 0; font-size: 15px; }
.pv2-ibtn:hover { background: var(--gs-accent-soft); color: var(--gs-ink); }

.pv2-vide { margin-top: 20px; padding: 28px; border: 1px dashed var(--gs-line-strong); border-radius: 12px; text-align: center; color: var(--gs-ink-dim); background: var(--gs-panel); }
.pv2-chargement { margin-top: 20px; padding: 28px; text-align: center; color: var(--gs-ink-faint); }

.pv2-crumb { font-size: 13px; color: var(--gs-ink-dim); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: 4px; }
.pv2-resume { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 8px 0 0; font-size: 13px; color: var(--gs-ink-dim); }
.pv2-h2 { font-size: 18px; font-weight: 600; margin: 24px 0 10px; }
.pv2-h3 { font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--gs-ink-dim); margin: 6px 0 0; display: flex; gap: 8px; align-items: center; }

.pv2-filtre { display: flex; align-items: center; border: 1px solid var(--gs-line-strong); border-radius: 10px; padding: 0 12px; height: 44px; background: var(--gs-panel); flex: 1 1 280px; max-width: 420px; }
.pv2-filtre input { flex: 1; min-width: 0; border: 0; outline: none; font-size: 14px; background: transparent; }
.pv2-egrille { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; margin-top: 16px; }
.pv2-ecarte { display: flex; align-items: center; gap: 12px; width: 100%; padding: 16px; text-align: left; cursor: pointer; min-height: 76px; }
.pv2-ecarte:hover { border-color: var(--gs-line-strong); background: var(--gs-panel-2, var(--gs-panel)); }
.pv2-esq { width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center; color: #FFFFFF; font-weight: 700; font-size: 13px; flex: none; }
.pv2-esq-s { width: 22px; height: 22px; font-size: 11px; border-radius: 6px; }
.pv2-ebody { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.pv2-enom { font-family: 'Outfit', 'Inter', sans-serif; font-weight: 600; font-size: 16px; line-height: 1.2; }
.pv2-emeta { font-size: 12px; color: var(--gs-ink-faint); }
.pv2-pill-retard { font-size: 11px; font-weight: 700; color: var(--gs-crit); background: color-mix(in srgb, var(--gs-crit) 14%, transparent); border-radius: 999px; padding: 0 7px; line-height: 18px; white-space: nowrap; }
.pv2-chev { width: 14px; height: 14px; fill: none; stroke: var(--gs-ink-faint); stroke-width: 2; flex: none; }
.pv2-liste-simple { padding: 2px 10px; }
.pv2-eproj { display: flex; align-items: center; gap: 10px; width: 100%; border: 0; border-top: 1px solid var(--gs-line); background: transparent; text-align: left; padding: 8px 6px; min-height: 44px; cursor: pointer; }
.pv2-eproj:first-child { border-top: 0; }
.pv2-nm { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 14px; }

.pv2-tbl { margin-top: 14px; overflow-x: auto; padding: 2px 8px; }
.pv2-trow { display: grid; grid-template-columns: minmax(220px, 2.4fr) 80px 110px minmax(160px, 1.6fr); gap: 12px; align-items: center; width: 100%; min-width: 620px; border: 0; border-top: 1px solid var(--gs-line); background: transparent; text-align: left; padding: 10px 8px; min-height: 52px; cursor: pointer; font-size: 14px; border-radius: 8px; }
.pv2-trow:hover { background: var(--gs-accent-soft); }
.pv2-trow-h { cursor: default; border-top: 0; font-size: 12px; font-weight: 600; color: var(--gs-ink-dim); min-height: 36px; }
.pv2-trow-h:hover { background: transparent; }
.pv2-tnom { display: flex; align-items: center; gap: 10px; min-width: 0; font-weight: 500; }
.pv2-ell { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Le quai : le détail d'une tâche, à droite de la liste sur ordinateur. */
.pv2-quai { flex: 1 1 360px; max-width: 480px; position: sticky; top: calc(var(--gs-universal-h, 72px) + 12px); max-height: calc(100dvh - var(--gs-universal-h, 72px) - 24px); overflow-y: auto; background: var(--gs-panel); border: 1px solid var(--gs-line); border-radius: var(--gs-radius-panel, 14px); padding: 16px 20px 24px; display: flex; flex-direction: column; gap: 14px; }
.pv2-retour-m { display: none; }
.pv2-qtop { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.pv2-qtitre { display: flex; gap: 12px; align-items: flex-start; }
.pv2-qtitre .pv2-chk { margin-top: 4px; }
.pv2-qtitre h2 { font-family: 'Outfit', 'Inter', sans-serif; font-size: 20px; font-weight: 600; margin: 0; line-height: 1.3; }
.pv2-champs { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 10px 12px; margin: 0; font-size: 14px; align-items: center; }
.pv2-champs dt { color: var(--gs-ink-faint); font-size: 13px; }
.pv2-champs dd { margin: 0; min-width: 0; line-height: 1.9; }
.pv2-seg { display: inline-flex; flex-wrap: wrap; border: 1px solid var(--gs-line-strong); border-radius: 8px; overflow: hidden; }
.pv2-segb { border: 0; background: var(--gs-panel); padding: 6px 10px; font-size: 13px; cursor: pointer; min-height: 34px; border-right: 1px solid var(--gs-line); }
.pv2-segb:last-child { border-right: 0; }
.pv2-segb-on { background: var(--gs-ink); color: var(--gs-panel); }
.pv2-desc { white-space: pre-wrap; font-size: 14px; color: var(--gs-ink-dim); border-left: 3px solid var(--gs-line-strong); padding-left: 10px; }
.pv2-sous { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; font-size: 14px; }
.pv2-sous li { display: flex; gap: 10px; align-items: center; min-height: 30px; }
.pv2-sfaite { text-decoration: line-through; color: var(--gs-ink-faint); }
.pv2-fil { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.pv2-com { display: flex; gap: 10px; }
.pv2-cbody { min-width: 0; flex: 1; font-size: 14px; }
.pv2-cbody p { margin: 2px 0 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.pv2-ctexte { margin: 2px 0 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.pv2-chead { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 6px; }
.pv2-coutils { margin-left: auto; display: inline-flex; gap: 10px; opacity: 0; transition: opacity .15s; }
.pv2-com:hover .pv2-coutils, .pv2-coutils:focus-within { opacity: 1; }
@media (hover: none) { .pv2-coutils { opacity: 1; } }
.pv2-coutils .pv2-lien { font-size: 12px; }
.pv2-editcom { margin-top: 6px; }
.pv2-ctexte.pv2-riche, .pv2-desc.pv2-riche { white-space: normal; }
.pv2-quai .gc-inline-img { max-width: 100%; height: auto; max-height: 320px; border-radius: 8px; cursor: zoom-in; }
.pv2-quai .gc-atts { margin-top: 6px; }
.pv2-qboutons { display: flex; gap: 4px; flex-shrink: 0; }
.pv2-qplein svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.pv2-qcols, .pv2-qinfo, .pv2-qdisc { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
/* Pleine page (ouverture par défaut) : la tâche à la place de la liste, dans
   la page de GANDALF — une colonne, deux cartes bien distinctes : la tâche
   (titre, champs, description, pièces jointes, sous-tâches) puis la
   discussion. */
.pv2-quai.pv2-quai-page { position: static; flex: none; width: 100%; max-width: 1040px; margin: 0 auto; max-height: none; overflow: visible; background: transparent; border: 0; border-radius: 0; padding: 0; gap: 16px; }
.pv2-quai-page .pv2-qtop { align-items: center; }
.pv2-quai-page .pv2-retour { font-weight: 600; text-decoration: none; }
.pv2-quai-page .pv2-crumb span[aria-hidden] { margin: 0 8px; color: var(--gs-ink-faint); }
.pv2-quai-page .pv2-qcols { gap: 20px; }
.pv2-quai-page .pv2-qinfo, .pv2-quai-page .pv2-qdisc { background: var(--gs-panel); border: 1px solid var(--gs-line); border-radius: var(--gs-radius-panel, 14px); padding: 22px 26px 26px; }
.pv2-quai-page .pv2-qdisc > .pv2-h3:first-child { margin-top: 0; font-size: 16px; }
.pv2-quai-page .gc-inline-img { max-height: 520px; }
/* Panneau à côté de la liste : un simple trait sépare la tâche de la discussion. */
.pv2-quai:not(.pv2-quai-page) .pv2-qdisc { border-top: 1px solid var(--gs-line); padding-top: 14px; }
/* Au téléphone, la tâche est toujours une page : pas de bascule « à côté de la liste ». */
@media (max-width: 860px) {
  .pv2-qplein { display: none; }
  .pv2-quai.pv2-quai-page { position: static; inset: auto; z-index: auto; padding: 0; }
  .pv2-quai-page .pv2-retour-m { display: none; }
  .pv2-quai-page .pv2-qinfo, .pv2-quai-page .pv2-qdisc { padding: 16px; }
}
.pv2-composer { display: flex; flex-direction: column; gap: 8px; }
.pv2-composer textarea { width: 100%; min-height: 76px; resize: vertical; border: 1px solid var(--gs-line-strong); border-radius: 8px; padding: 10px 12px; font-size: 14px; background: var(--gs-panel); outline: none; }
.pv2-composer textarea:focus { border-color: var(--gs-accent); }
.pv2-droite { display: flex; justify-content: flex-end; }

/* Téléphone : une colonne ; la tâche s'ouvre en plein écran, au-dessus de la
   barre du bas, avec un bouton Retour. */
@media (max-width: 860px) {
  #projets-v2-view { padding: 12px 14px 96px; }
  .pv2-mtabs { display: flex; width: 100%; }
  .pv2-mtab { flex: 1; }
  .pv2-meta .pv2-pchip, .pv2-meta .pv2-sec { max-width: 120px; }
  .pv2-due { min-width: 0; }
  .pv2-quai { position: fixed; inset: 0; z-index: 120; max-width: none; max-height: none; border-radius: 0; border: 0; padding: calc(12px + env(safe-area-inset-top)) 16px calc(24px + env(safe-area-inset-bottom)); }
  .pv2-retour-m { display: inline-flex; align-self: flex-start; border: 0; background: transparent; color: var(--gs-accent); font-size: 15px; padding: 6px 0; min-height: 40px; cursor: pointer; }
}

/* ---------------- Lot B : organiser ---------------- */
.pv2-ic { width: 16px; height: 16px; fill: currentColor; }
.pv2-ligne, .pv2-sechead, .pv2-gtitre { position: relative; }
.pv2-grip { width: 12px; flex: none; color: var(--gs-ink-faint); font-size: 12px; letter-spacing: -3px; cursor: grab; opacity: .35; user-select: none; }
.pv2-ligne:hover .pv2-grip, .pv2-sechead:hover .pv2-grip, .pv2-gtitre:hover .pv2-grip { opacity: 1; }
.pv2-rmenu, .pv2-lmenu, .pv2-secacts { opacity: .5; }
.pv2-ligne:hover .pv2-rmenu, .pv2-rmenu[aria-expanded="true"], .pv2-gtitre:hover .pv2-lmenu, .pv2-lmenu[aria-expanded="true"], .pv2-sechead:hover .pv2-secacts { opacity: 1; }
.pv2-lmenu { margin-left: auto; }
.pv2-secacts { display: flex; gap: 2px; }
.pv2-pop { position: absolute; right: 8px; top: calc(100% - 6px); z-index: 30; min-width: 220px; background: var(--gs-panel); border: 1px solid var(--gs-line-strong); border-radius: 10px; box-shadow: 0 14px 30px rgba(20, 17, 12, .18); padding: 6px; display: flex; flex-direction: column; text-transform: none; letter-spacing: 0; font-weight: 400; }
.pv2-pop button { border: 0; background: transparent; text-align: left; padding: 9px 10px; border-radius: 6px; font-size: 14px; cursor: pointer; }
.pv2-pop button:hover { background: var(--gs-accent-soft); }
.pv2-pop button:disabled { opacity: .45; cursor: default; background: transparent; }
.pv2-danger, .pv2-pop .pv2-danger { color: var(--gs-crit); }
.pv2-pop-note { margin: 2px 10px 6px; font-size: 12px; color: var(--gs-ink-faint); }
.pv2-ren { display: flex; gap: 8px; flex: 1; flex-wrap: wrap; align-items: center; }
.pv2-ren input { flex: 1 1 200px; height: 36px; border: 1px solid var(--gs-line-strong); border-radius: 8px; padding: 0 10px; font-size: 14px; background: var(--gs-panel); outline: none; }
.pv2-ren .pv2-btn, .pv2-ren .pv2-btn-ghost { height: 36px; }
.pv2-survol { background: color-mix(in srgb, var(--gs-ok) 14%, transparent) !important; box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--gs-ok) 60%, transparent); border-radius: 8px; }
.pv2-selbox { width: 18px; height: 18px; accent-color: var(--gs-accent); flex: none; margin: 0; }
.pv2-ajoutrow { display: flex; flex-wrap: wrap; border-top: 1px solid var(--gs-line); }
.pv2-ajoutrow .pv2-ajoutbtn { border-top: 0; width: auto; }
.pv2-nlrow { display: flex; gap: 8px; flex-wrap: wrap; }
.pv2-nlrow input { flex: 1 1 220px; border: 1px solid var(--gs-line-strong); border-radius: 8px; padding: 0 12px; height: 40px; font-size: 14px; background: var(--gs-panel); outline: none; }
.pv2-nlrow input:focus { border-color: var(--gs-accent); }
.pv2-nouvelle { margin-top: 14px; padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
.pv2-lbl { font-size: 12px; font-weight: 600; color: var(--gs-ink-dim); }
.pv2-outils { margin-top: 10px; align-items: flex-start; }
.pv2-astuce { margin: 0; font-size: 12px; color: var(--gs-ink-faint); flex: 1 1 260px; }
.pv2-outils-btns { display: flex; gap: 8px; flex-wrap: wrap; }
.pv2-qactions { display: flex; gap: 8px; flex-wrap: wrap; }
.pv2-qactions .pv2-btn-ghost { height: 34px; font-size: 13px; }

/* Barre noire de la sélection, collée au bas de l'écran. */
.pv2-lot { position: sticky; bottom: 16px; margin-top: 16px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; background: #282828; color: #FFFFFF; border-radius: 12px; padding: 10px 12px; box-shadow: 0 12px 30px rgba(20, 17, 12, .25); z-index: 25; }
.pv2-lotb { border: 1px solid rgba(255, 255, 255, .3); background: transparent; color: #FFFFFF; border-radius: 8px; height: 36px; padding: 0 12px; cursor: pointer; font-size: 13px; }
.pv2-lotb:hover { background: rgba(255, 255, 255, .1); }
.pv2-lotb:disabled { opacity: .45; cursor: default; }
.pv2-lot-danger { color: #F2B8AC; }
.pv2-lot .pv2-lot-fermer { color: #E8DCC0; margin-left: auto; }
.pv2-lotpop { position: absolute; bottom: calc(100% + 8px); left: 0; width: 360px; max-width: 100%; background: var(--gs-panel); color: var(--gs-ink); border: 1px solid var(--gs-line-strong); border-radius: 12px; box-shadow: 0 18px 40px rgba(20, 17, 12, .22); padding: 12px; display: flex; flex-direction: column; gap: 8px; }
.pv2-lotgrille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; }
.pv2-lotit { display: flex; align-items: center; gap: 8px; border: 0; background: var(--gs-accent-soft); border-radius: 8px; padding: 8px 10px; min-height: 40px; cursor: pointer; text-align: left; font-size: 13px; }
.pv2-lotit .pv2-discret { margin-left: auto; font-size: 11px; white-space: nowrap; }
.pv2-lotliste { max-height: 260px; overflow-y: auto; display: flex; flex-direction: column; gap: 2px; }
.pv2-lotliste .pv2-lotit { background: transparent; }
.pv2-lotliste .pv2-lotit:hover { background: var(--gs-accent-soft); }
.pv2-lotinput { height: 38px; border: 1px solid var(--gs-line-strong); border-radius: 8px; padding: 0 10px; font-size: 14px; outline: none; background: var(--gs-panel); }
.pv2-lotpop .pv2-seg { align-self: flex-start; }

/* Fenêtre « Déplacer vers… » */
.pv2-voile { position: fixed; inset: 0; background: rgba(20, 17, 12, .35); z-index: 130; display: flex; justify-content: center; align-items: flex-start; padding: 80px 16px 16px; }
.pv2-fenetre { width: 100%; max-width: 640px; max-height: calc(100dvh - 100px); background: var(--gs-panel); border-radius: 14px; box-shadow: 0 24px 60px rgba(20, 17, 12, .3); display: flex; flex-direction: column; overflow: hidden; }
.pv2-fhead { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--gs-line); }
.pv2-fprojets { padding: 10px 16px; display: flex; gap: 6px; flex-wrap: wrap; align-items: center; border-bottom: 1px solid var(--gs-line); max-height: 140px; overflow-y: auto; }
.pv2-chip { border: 1px solid var(--gs-line-strong); background: var(--gs-panel); border-radius: 999px; padding: 4px 12px; cursor: pointer; font-size: 12px; min-height: 30px; }
.pv2-chip-on { background: var(--gs-ink); border-color: var(--gs-ink); color: var(--gs-panel); }
.pv2-fcorps { overflow-y: auto; padding: 8px; }
.pv2-dest { display: flex; align-items: center; gap: 10px; width: 100%; border: 0; background: transparent; text-align: left; padding: 8px 10px; min-height: 40px; border-radius: 8px; cursor: pointer; font-size: 14px; }
.pv2-dest:hover { background: var(--gs-accent-soft); }
.pv2-dest:disabled { color: var(--gs-ink-faint); cursor: default; background: transparent; }
.pv2-dest .pv2-discret { margin-left: auto; font-size: 12px; }
.pv2-dest-l { font-weight: 600; }
.pv2-dest-s { padding-left: 30px; }
.pv2-filtre-dp { max-width: none; flex: 1 1 auto; }
.pv2-fpied { padding: 8px 16px; border-top: 1px solid var(--gs-line); font-size: 12px; color: var(--gs-ink-faint); }

/* Avis avec « Annuler » (posé sur <body>). */
.pv2-avis { position: fixed; left: 50%; bottom: 24px; transform: translate(-50%, 20px); opacity: 0; pointer-events: none; transition: opacity .15s, transform .15s; background: #282828; color: #FFFFFF; padding: 10px 16px; border-radius: 10px; font: 13px Inter, sans-serif; z-index: 140; box-shadow: 0 10px 30px rgba(20, 17, 12, .25); display: flex; align-items: center; gap: 12px; max-width: 90vw; }
.pv2-avis-on { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.pv2-avis-annuler { border: 0; background: transparent; color: #E8C77A; font-weight: 700; cursor: pointer; text-decoration: underline; font-size: 13px; }

@media (max-width: 860px) {
  .pv2-grip { display: none; }
  .pv2-rmenu, .pv2-lmenu, .pv2-secacts { opacity: 1; }
  .pv2-lot { bottom: calc(var(--gs-tabbar-h, 62px) + 12px); }
  .pv2-lotpop { width: 100%; }
  .pv2-voile { padding: 16px; align-items: flex-end; }
  .pv2-fenetre { max-height: 85dvh; }
  .pv2-avis { bottom: calc(var(--gs-tabbar-h, 62px) + 16px); }
}

/* ---------------- Lot C : onglets du projet ---------------- */
.pv2-etoile svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linejoin: round; }
.pv2-etoile-on svg { fill: var(--gs-gold-a, #C2A868); stroke: var(--gs-accent); }
/* Projet favori dans le rail de la coquille (hors #projets-v2-view). */
.gshell-fav-projet { display: block; width: 10px; height: 10px; border-radius: 3px; background: var(--gs-accent); }

.pv2-kanban { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(240px, 1fr); gap: 12px; overflow-x: auto; padding-bottom: 8px; align-items: start; }
.pv2-kcol { background: var(--gs-accent-soft); border: 1px solid var(--gs-line); border-radius: 12px; padding: 10px; display: flex; flex-direction: column; gap: 8px; min-height: 200px; }
.pv2-kcol .pv2-gtitre { padding: 0 4px; }
.pv2-kcarte { display: flex; flex-direction: column; gap: 8px; text-align: left; border: 1px solid var(--gs-line); background: var(--gs-panel); border-radius: 10px; padding: 10px 12px; cursor: pointer; box-shadow: 0 1px 2px rgba(40, 34, 24, .05); width: 100%; }
.pv2-kcarte:hover { border-color: var(--gs-line-strong); }
.pv2-kcarte.pv2-ouverte { border-color: var(--gs-accent); }
.pv2-ktitre { font-size: 14px; line-height: 1.35; }
.pv2-kcarte.pv2-faite .pv2-ktitre { text-decoration: line-through; color: var(--gs-ink-faint); }
.pv2-kmeta { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 12px; min-width: 0; }
.pv2-kdroite { display: flex; align-items: center; gap: 8px; flex: none; }

.pv2-cal-tete { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.pv2-cal-tete strong { font-family: 'Outfit', 'Inter', sans-serif; font-size: 18px; min-width: 150px; text-align: center; text-transform: capitalize; }
.pv2-cal-cadre { overflow-x: auto; border: 1px solid var(--gs-line); border-radius: 12px; background: var(--gs-panel); }
.pv2-cal { display: grid; grid-template-columns: repeat(7, minmax(96px, 1fr)); min-width: 680px; }
.pv2-cal-h { font-size: 12px; font-weight: 600; color: var(--gs-ink-dim); padding: 6px 8px; border-bottom: 1px solid var(--gs-line); background: var(--gs-accent-soft); }
.pv2-cal-j { min-height: 104px; border-right: 1px solid var(--gs-line); border-bottom: 1px solid var(--gs-line); padding: 6px; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.pv2-cal-autre { opacity: .55; }
.pv2-cal-ajd { background: var(--gs-accent-soft); }
.pv2-cal-n { font-size: 12px; color: var(--gs-ink-dim); }
.pv2-cal-ajd .pv2-cal-n { color: var(--gs-ink); font-weight: 700; }
.pv2-cal-t { border: 0; text-align: left; background: color-mix(in srgb, #4F6B8A 16%, transparent); border-radius: 6px; padding: 4px 6px; font-size: 12px; cursor: pointer; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pv2-cal-retard { background: color-mix(in srgb, var(--gs-crit) 16%, transparent); color: var(--gs-crit); }
.pv2-cal-fait { color: var(--gs-ink-faint); text-decoration: line-through; background: var(--gs-accent-soft); }

.pv2-post { padding: 4px 16px 14px; margin-bottom: 10px; }
.pv2-post-tete { display: flex; gap: 12px; align-items: center; width: 100%; border: 0; background: transparent; text-align: left; padding: 10px 0; cursor: pointer; }
.pv2-post-corps { margin: 0 0 0 38px; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 14px; color: var(--gs-ink-dim); }
.pv2-reponses { margin: 12px 0 0 38px; padding: 12px 0 0; border-top: 1px solid var(--gs-line); }
.pv2-post .pv2-composer { margin: 12px 0 0 38px; }
.pv2-zone { width: 100%; min-height: 100px; resize: vertical; border: 1px solid var(--gs-line-strong); border-radius: 8px; padding: 10px 12px; font-size: 14px; background: var(--gs-panel); outline: none; }

.pv2-frow { display: grid; grid-template-columns: minmax(180px, 2fr) minmax(160px, 2fr) 120px 70px; gap: 12px; align-items: center; padding: 8px; border-top: 1px solid var(--gs-line); min-width: 600px; font-size: 13px; }
.pv2-frow .pv2-lien { text-align: left; }
.pv2-frow.pv2-trow-h { border-top: 0; }

@media (max-width: 860px) {
  .pv2-kanban { grid-auto-columns: 80%; }
  .pv2-post-corps, .pv2-reponses, .pv2-post .pv2-composer { margin-left: 0; }
}

/* Confirmation dans le menu d'une liste (tâches ouvertes emportées). */
.pv2-confirmer { border-top: 1px solid var(--gs-line); margin-top: 4px; padding-top: 6px; display: flex; flex-direction: column; }
.pv2-confirmer p { margin: 4px 10px 6px; font-size: 13px; color: var(--gs-ink-dim); max-width: 260px; }

/* Menu ⋯ d'un espace ou d'un projet, et page Archives. */
.pv2-pmenu, .pv2-pact { position: relative; display: inline-flex; align-items: center; gap: 4px; }
.pv2-pmenu .pv2-pop { top: calc(100% + 4px); }
.pv2-arow { display: flex; align-items: center; gap: 10px; padding: 8px 6px; min-height: 52px; border-top: 1px solid var(--gs-line); }
.pv2-arow:first-child { border-top: 0; }
.pv2-arow .pv2-btn-ghost { height: 34px; font-size: 13px; }
.pv2-ren-projet { margin: 10px 0 4px; padding: 10px 12px; background: var(--gs-panel); border: 1px solid var(--gs-line-strong); border-radius: 10px; }
.pv2-ren-projet .pv2-lbl { flex-basis: 100%; }

/* Compteur pas encore lu : discret, et il respire doucement. */
.pv2-attente { color: var(--gs-ink-faint); animation: pv2-respire 1.4s ease-in-out infinite; }
@keyframes pv2-respire { 50% { opacity: .45; } }
@media (prefers-reduced-motion: reduce) { .pv2-attente { animation: none; } }

/* Confirmation dans un commentaire (et non dans un menu ⋯). */
.pv2-com .pv2-confirmer { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 8px; padding: 8px 10px; border: 1px solid var(--gs-line); border-radius: 8px; }
.pv2-com .pv2-confirmer p { flex-basis: 100%; margin: 0; max-width: none; }

/* Champ de commentaire compact : le « + » de l'ancien écran (même rangée que
   tasks-desktop.css, ici pour la nouvelle interface). */
#projets-v2-view .pv2-compo .gc-composer.tm-compact-composer { border: 0; box-shadow: none; border-radius: 0; margin: 0; padding: 0; background: none; max-width: none; }
#projets-v2-view .pv2-compo .tm-compose-row { display: grid; grid-template-columns: 38px minmax(0, 1fr) 40px; position: relative; min-width: 0; align-items: end; border: 1px solid var(--gs-line-strong); border-radius: 10px; background: var(--gs-panel); }
#projets-v2-view .pv2-compo .tm-compose-row:focus-within { border-color: var(--gs-accent); box-shadow: 0 0 0 3px var(--gs-accent-soft); }
#projets-v2-view .pv2-compo .gc-input-wrap { grid-column: 2; grid-row: 2; min-width: 0; }
#projets-v2-view .pv2-compo :is(.gc-input, .grt-editor) { font: 400 14px/1.5 Inter, system-ui, sans-serif; min-height: clamp(76px, 12dvh, 120px); max-height: clamp(130px, 34dvh, 340px); overflow: auto; padding: 11px 7px; border: 0; background: none; color: var(--gs-ink); box-shadow: none; }
#projets-v2-view .pv2-compo .gc-toolbar { display: contents; }
#projets-v2-view .pv2-compo .tm-tools-toggle { display: flex; align-items: center; justify-content: center; grid-column: 1; grid-row: 2; border: 0; background: none; color: var(--gs-ink-dim); padding: 0; margin: 4px; width: 32px; height: 36px; border-radius: 6px; cursor: pointer; }
#projets-v2-view .pv2-compo .tm-tools-toggle:hover { background: var(--gs-panel-2); }
#projets-v2-view .pv2-compo .tm-tools-toggle[aria-expanded="true"] .gicon { transform: rotate(45deg); }
#projets-v2-view .pv2-compo .tm-composer-tools { display: none; }
#projets-v2-view .pv2-compo .tm-tools-open .tm-composer-tools { display: flex; grid-column: 1 / -1; grid-row: 1; align-items: center; flex-wrap: wrap; gap: 4px; padding: 5px 7px; border-bottom: 1px solid var(--gs-line); }
#projets-v2-view .pv2-compo .gc-tb { min-height: 32px; min-width: 32px; padding: 4px 7px; border-radius: 6px; font-size: 12px; }
#projets-v2-view .pv2-compo .gc-tb-label { display: none; }
#projets-v2-view .pv2-compo .gc-send { display: flex; align-items: center; justify-content: center; grid-column: 3; grid-row: 2; width: 32px; min-width: 0; height: 34px; min-height: 34px; margin: 5px 5px 5px 0; padding: 0; border-radius: 6px; background: var(--gs-ink); color: var(--gs-panel); border: 0; }
#projets-v2-view .pv2-compo .tm-send-label { display: none; }
#projets-v2-view .pv2-compo .tm-send-icon { display: inline-flex; }
#projets-v2-view .pv2-compo .gc-tb-status { grid-column: 1 / -1; grid-row: 3; padding: 0 8px; min-width: 0; font-size: 11px; }
#projets-v2-view .pv2-compo .gc-chips { max-height: 110px; overflow: auto; margin: 0 0 5px; }

/* Formulaire « Modifier la tâche ». */
.pv2-etform { display: flex; flex-direction: column; gap: 6px; }
.pv2-etform .pv2-lbl { margin-top: 8px; }
.pv2-etform #pv2-et-titre { font-size: 16px; font-weight: 600; }
.pv2-etchoisis { display: flex; flex-wrap: wrap; gap: 6px; }
.pv2-etpuce { display: inline-flex; align-items: center; gap: 6px; padding: 2px 4px 2px 3px; border: 1px solid var(--gs-line); border-radius: 999px; font-size: 13px; }
.pv2-etpuce .pv2-ibtn { width: 22px; height: 22px; font-size: 11px; }
.pv2-etcand { max-height: 220px; overflow: auto; border: 1px solid var(--gs-line); border-radius: 8px; display: none; }
/* Les suggestions s'ouvrent quand on cherche une personne. */
.pv2-etform:has(#pv2-et-q:focus) .pv2-etcand, .pv2-etform:has(#pv2-et-q:not(:placeholder-shown)) .pv2-etcand, .pv2-etcand:hover, .pv2-etcand:focus-within { display: block; }
.pv2-etdate { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.pv2-etdesc :is(.gc-input, .grt-editor) { min-height: 120px; max-height: 50dvh; }
.pv2-etpied { display: flex; gap: 8px; margin-top: 12px; }
