/* Fransou · Projets v2 (Projets et temps, Dossiers, Achats) · la feuille (18/10/2026). Socle commun avec Agenda v2 (jetons v4,
   maquettes validées le 18/10), sous .pj2 seulement : aucune règle ne touche le reste de l'appli. Rien sous 12 px. Un seul bouton plein par écran. */
@font-face{font-family:'Fransou Texte';src:url('/factures-v2/fonts/FransouTexte-Regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Fransou Texte';src:url('/factures-v2/fonts/FransouTexte-Medium.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Fransou Texte';src:url('/factures-v2/fonts/FransouTexte-Semibold.woff2') format('woff2');font-weight:600;font-display:swap}

.pj2{
  /* Les jetons v4 (commun-v4/v4.css, maquettes validées le 18/10) : coque, page, carte, actif, filets, carte claire, voix bleu nuit, quatre teintes de données. */
  --fond:#0C181C; --page:#162125; --carte:#1D282C; --survol:#273135; --filet-doux:#2E383C; --filet:#536066;
  --texte:#FFFFFF; --sec:#B9BFC1; --plein-fond:#FFFFFF; --plein-texte:#0C181C; --faire-fond:#D7DDDE; --faire-texte:#0C181C;
  --avant-fond:#F3F4F3; --avant-carte:#E9ECEC; --avant-texte:#0C181C; --avant-sec:#536066; --nuit:#0B121B; --nuit-sec:#A9B6C8; --soie-op:.045;
  --d-glacier:#7FB3C8; --d-sauge:#9CC59A; --d-sable:#D8B47A; --d-poudre:#C99AB8; --d-gris:#7D8B90; --sur-teinte:#0C181C;
  --police:'Fransou Texte',system-ui,sans-serif; --r-pastille:4px; --r-champ:6px; --r-bouton:8px; --r-carte:12px;
  --ease:cubic-bezier(.23,1,.32,1);
  position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;z-index:1;isolation:isolate;background:var(--page);color:var(--texte);font:400 15px/1.55 var(--police);font-synthesis:none;font-variant-numeric:tabular-nums
}
.pj2[data-pj2-mode="clair"]{
  --fond:#F3F4F3; --page:#FFFFFF; --carte:#F6F7F6; --survol:#E5E8E8; --filet-doux:#D7DDDE; --filet:#C9D0D2;
  --texte:#0C181C; --sec:#536066; --plein-fond:#0C181C; --plein-texte:#FFFFFF; --faire-fond:#0C181C; --faire-texte:#FFFFFF;
  --avant-fond:#0C181C; --avant-carte:#162125; --avant-texte:#FFFFFF; --avant-sec:#B9BFC1; --nuit:#EBF0F6; --nuit-sec:#4A5868; --soie-op:.04;
  --d-glacier:#3F6E8C; --d-sauge:#4E7A5A; --d-sable:#8A6420; --d-poudre:#875070; --d-gris:#6B787D; --sur-teinte:#FFFFFF
}
:where(.pj2) *{box-sizing:border-box}
:where(.pj2) a{color:inherit;text-decoration:none}
:where(.pj2) button{font:inherit;color:inherit;background:transparent;border:0;padding:0;cursor:pointer}
:where(.pj2) :where(h1,h2,h3,p,ul,ol,blockquote){margin:0}
:where(.pj2) :where(ul,ol){padding:0;list-style:none}
.pj2 [hidden],.pj2 .pj2-cache{position:absolute!important;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0)}
.pj2 :focus-visible{outline:2px solid currentColor;outline-offset:3px}
.pj2 .pj2-ic{flex:none}
.pj2-chargement{padding:48px;color:#B9BFC1}
@media (prefers-reduced-motion:reduce){.pj2 *{transition-duration:.01ms!important;animation-duration:.01ms!important}.pj2-soie{transform:none!important}}

/* En-tête : le nom seul, le fil d'Ariane, le bouton du mode, « Parler à Fransou » ; le signe SOIE en motif, même place sur chaque page. */
.pj2-entete{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:72px;padding:0 40px;background:var(--fond)}
.pj2-soie{position:absolute;left:38%;top:-150px;width:540px;aspect-ratio:632/288;pointer-events:none;background:var(--texte);opacity:var(--soie-op);-webkit-mask:url('/projets-v2/soie.svg') center/contain no-repeat;mask:url('/projets-v2/soie.svg') center/contain no-repeat;will-change:transform}
.pj2-gauche{position:relative;display:flex;align-items:center;gap:32px;min-width:0}
.pj2-sig{display:inline-flex;align-items:center;min-height:44px}
.pj2-sig img{height:20px;width:auto}
.pj2[data-pj2-mode="clair"] .pj2-sig img{filter:brightness(0)}
.pj2-ariane{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--sec);white-space:nowrap;min-width:0;overflow:hidden}
.pj2-ariane a:hover{color:var(--texte)}
.pj2-ariane b{font-weight:500;color:var(--texte);overflow:hidden;text-overflow:ellipsis}
.pj2-ariane i{font-style:normal}
.pj2-droite{position:relative;display:flex;align-items:center;gap:12px;flex:none}
.pj2-mode{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--filet);border-radius:var(--r-bouton);color:var(--texte);transition:transform .14s var(--ease),border-color .14s}
.pj2-mode:hover{border-color:var(--texte)}
.pj2-mode:active{transform:scale(.97)}
.pj2-heure{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--sec);white-space:nowrap;flex:none}
.pj2-icone,.pj2-icone-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--r-bouton);color:var(--sec);transition:background .14s var(--ease),color .14s}
.pj2-icone-btn{border:1px solid var(--filet);color:var(--texte)}
.pj2-icone:hover,.pj2-icone-btn:hover{background:var(--survol);color:var(--texte)}
/* La barre des espaces, du ton du cadre ; l'espace ouvert est souligné. */
.pj2-espaces{background:var(--fond)}
.pj2-dedans{display:flex;align-items:center;gap:24px;min-height:56px;padding:0 40px}
.pj2-titre-app{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--sec);white-space:nowrap;padding-right:20px;border-right:1px solid var(--filet-doux)}
.pj2-liste-esp{display:flex;gap:4px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}
.pj2-liste-esp a{display:inline-flex;align-items:center;gap:9px;min-height:54px;padding:0 14px;color:var(--sec);font-weight:500;white-space:nowrap;border-bottom:2px solid transparent;transition:color .14s}
.pj2-liste-esp a:hover{color:var(--texte)}
.pj2-liste-esp a.actif{color:var(--texte);border-bottom-color:var(--texte)}
.pj2 .n{min-width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--filet);border-radius:11px;font-size:12px;font-weight:600;color:var(--texte);padding:0 6px}
.pj2-liste-esp a.actif .n{background:var(--plein-fond);color:var(--plein-texte);border-color:var(--plein-fond)}
.pj2-bas{display:none}

/* Page */
.pj2-principal{padding:28px 40px 72px;background:var(--page);min-width:0}
.pj2-page{max-width:1360px;margin:0}
.pj2-page[data-pj2-etat="charge"] .pj2-tete h1{opacity:.55}
.pj2-sous{display:flex;gap:28px;border-bottom:1px solid var(--filet);margin-bottom:24px;overflow-x:auto;scrollbar-width:none}
.pj2-sous a{display:inline-flex;align-items:center;min-height:44px;color:var(--sec);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.pj2-sous a.actif{color:var(--texte);border-bottom-color:var(--texte)}
.pj2-sous-rdv{margin-top:-8px}
.pj2-retour{display:inline-flex;align-items:center;gap:6px;min-height:36px;font-size:14px;font-weight:500;color:var(--sec);margin:-8px 0 6px}
.pj2-surtitre{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--sec);margin-bottom:8px}
.pj2-tete{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;margin-bottom:20px}
.pj2-texte{min-width:0}
.pj2-tete h1{font-size:34px;line-height:1.15;font-weight:600;letter-spacing:-.015em;text-wrap:balance}
.pj2-sous-titre{font-size:17px;color:var(--sec);margin-top:8px;max-width:780px}
.pj2-tete-act{display:flex;align-items:center;gap:12px;flex:none}
.pj2 h2{font-size:13px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--sec);margin-bottom:12px;display:flex;align-items:center;gap:8px}
.pj2-h2-ligne{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:12px;flex-wrap:wrap}
.pj2-h2-ligne h2{margin:0}
.pj2-h2-espace{margin-top:22px!important}
.pj2-phrase{font-size:16px;font-weight:500;line-height:1.4;margin:-4px 0 14px;max-width:680px}
.pj2-note{font-size:13px;line-height:1.5;color:var(--sec)}
.pj2-bloc{margin-top:32px}
.pj2-carte{border:1px solid var(--carte);border-radius:var(--r-carte);padding:22px;min-width:0;background:var(--carte)}
.pj2-carte.forte{background:var(--avant-fond);border-color:var(--avant-fond);color:var(--avant-texte);--sec:var(--avant-sec);--texte:var(--avant-texte);--filet:#C9D0D2;--plein-fond:var(--avant-texte);--plein-texte:var(--avant-fond);--survol:var(--avant-carte)}
.pj2-g21{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:20px;margin-top:20px}
.pj2-g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:20px}
.pj2-esp{flex:1}

/* Boutons, liens, champs */
.pj2-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 16px;border-radius:var(--r-bouton);border:1px solid var(--filet);color:var(--texte);font:500 15px/1.2 var(--police);white-space:nowrap;transition:background .14s var(--ease),transform .14s var(--ease),border-color .14s}
.pj2-btn:hover{background:var(--survol);border-color:var(--sec)}
.pj2-btn:active{transform:scale(.97)}
.pj2-btn.plein{background:var(--plein-fond);border-color:var(--plein-fond);color:var(--plein-texte);font-weight:600;min-height:48px;padding:12px 22px}
.pj2-btn.plein:hover{opacity:.9}
.pj2-btn.petit{min-height:36px;font-size:14px;padding:6px 12px}
.pj2-lien{display:inline-flex;align-items:center;gap:6px;min-height:32px;text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px;font-weight:500;cursor:pointer}
.pj2-gestes{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pj2-carte .pj2-gestes{margin-top:14px}
.pj2-champ{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--filet);border-radius:var(--r-champ);background:transparent;color:var(--texte);font:400 15px/1.4 var(--police)}
.pj2-champ:focus{border-color:var(--texte);outline:none}
.pj2-champ.petit{width:auto;max-width:100%;min-height:36px;padding:6px 10px;font-size:14px}
.pj2 select.pj2-champ option{background:var(--fond);color:var(--texte)}
.pj2 textarea.pj2-champ{resize:vertical;min-height:120px}
.pj2-champ-l{display:flex;flex-direction:column;gap:6px;min-width:0}
.pj2-champ-l > span{font-size:13px;color:var(--sec)}
.pj2-form{display:flex;flex-direction:column;gap:16px}
.pj2-rang3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.pj2-rapide{display:flex;gap:10px;margin-top:20px}
.pj2-rapide input{flex:1;min-width:0;min-height:44px;padding:10px 12px;border:1px solid var(--filet);border-radius:var(--r-champ);background:transparent;color:var(--texte);font:inherit}
.pj2-modifiable{display:inline-flex;align-items:center;gap:6px;border-bottom:1px dashed var(--sec);line-height:1.35;cursor:text;max-width:100%}
.pj2-modifiable .pj2-ic{color:var(--sec)}
.pj2-grand{font-size:22px;font-weight:500;margin-bottom:8px}
.pj2-edition{max-width:420px}
.pj2-kv{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:10px 0;border-bottom:1px solid var(--filet);font-size:15px;min-height:46px}
.pj2-kv:last-of-type{border-bottom:0}
.pj2-kv > span:first-child{color:var(--sec);white-space:nowrap}
.pj2-kv > span:last-child{text-align:right;min-width:0}
.pj2-ligne-choix{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.pj2-choix{display:flex;flex-direction:column;gap:6px;min-width:200px}
.pj2-choix > span{font-size:13px;color:var(--sec)}
.pj2-etat{display:inline-flex;align-items:center;gap:6px;min-height:26px;padding:0 9px;border:1px solid var(--filet);border-radius:var(--r-pastille);font-size:13px;font-weight:500;white-space:nowrap}
.pj2-etat.fort{border-color:var(--texte);font-weight:600}
.pj2-etat.calme{color:var(--sec)}
.pj2-interrupteur{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--sec);white-space:nowrap}
.pj2-regle{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--filet)}
.pj2-regle > span{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.pj2-regle small{font-size:13px;color:var(--sec)}
.pj2-regle input[type=checkbox]{margin-top:4px;width:18px;height:18px;accent-color:var(--texte);flex:none}
.pj2-regle .pj2-ligne-choix{flex:none}

/* Voix de Fransou, toasts, échecs */
.pj2-voix{display:flex;gap:12px;align-items:flex-start;font-size:15px;line-height:1.5;padding:16px 18px;margin:12px 0;background:var(--nuit);border-radius:var(--r-carte);--sec:var(--nuit-sec)}
.pj2-voix p b{display:block;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--sec);font-weight:600;margin-bottom:2px}
.pj2-voix-signe{display:inline-block;width:26px;height:12px;margin-top:6px;flex:none;background:var(--texte);-webkit-mask:url('/projets-v2/soie.svg') center/contain no-repeat;mask:url('/projets-v2/soie.svg') center/contain no-repeat}
.pj2-voix-signe.petit{width:20px;height:10px}
.pj2-dire{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:60;max-width:min(640px,calc(100vw - 32px))}
.pj2-toast{display:flex;align-items:center;gap:16px;padding:12px 16px;border:1px solid var(--texte);border-radius:var(--r-champ);background:var(--fond);font-size:14px;box-shadow:0 12px 40px rgba(0,0,0,.35);animation:pj2-monte .22s var(--ease)}
@keyframes pj2-monte{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.pj2-echec{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px dashed var(--sec);border-radius:var(--r-champ);margin:12px 0}
.pj2-squelette{padding:14px 0;color:var(--sec);font-size:14px}
.pj2-citation{margin:12px 0 0;padding:10px 14px;border-left:2px solid var(--filet);color:var(--sec);font-size:14px;white-space:pre-wrap}

/* Barre d'actions */
.pj2-outils{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 20px;padding:10px 0;border-top:1px solid var(--filet);border-bottom:1px solid var(--filet)}
.pj2-cherche{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border:1px solid var(--filet);border-radius:var(--r-champ);color:var(--sec);min-width:240px}
.pj2-cherche input{border:0;background:transparent;color:var(--texte);font:inherit;min-width:0;flex:1;outline:none;min-height:38px}
.pj2-outils .pj2-btn{min-height:40px;padding:6px 12px;font-size:14px}
.pj2-sel{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}
.pj2-sel > span{display:inline-flex;gap:8px}

/* Filtres, puces, segments */
.pj2-filtres{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.pj2-puces{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.pj2-puce{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:0 12px;border:1px solid var(--filet);border-radius:var(--r-bouton);font-size:14px;white-space:nowrap;transition:border-color .14s}
.pj2-puce b{font-weight:600}
.pj2-puce.actif{background:var(--faire-fond);border-color:var(--faire-fond);color:var(--faire-texte)}
.pj2-puce.actif .pj2-puce-teinte{outline:1px solid var(--faire-texte)}
.pj2-puce-teinte{width:10px;height:10px;border-radius:2px;display:inline-block}
.pj2-puce-teinte.t-pointille{border:1.5px dashed var(--sec)}
.pj2-segment{display:inline-flex;border:1px solid var(--filet);border-radius:var(--r-bouton);padding:3px;gap:2px;flex-wrap:wrap}
.pj2-segment a,.pj2-segment label{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border-radius:6px;color:var(--sec);font-weight:500;cursor:pointer;white-space:nowrap}
.pj2-segment .actif{background:var(--faire-fond);color:var(--faire-texte)}

/* Teintes de données */
.pj2 .t-glacier{background:var(--d-glacier);fill:var(--d-glacier);stroke:var(--d-glacier)}
.pj2 .t-sauge{background:var(--d-sauge);fill:var(--d-sauge);stroke:var(--d-sauge)}
.pj2 .t-sable{background:var(--d-sable);fill:var(--d-sable);stroke:var(--d-sable)}
.pj2 .t-poudre{background:var(--d-poudre);fill:var(--d-poudre);stroke:var(--d-poudre)}
.pj2 .t-gris{background:var(--d-gris);fill:var(--d-gris);stroke:var(--d-gris)}
.pj2 .t-bord-glacier{border-left:3px solid var(--d-glacier)}.pj2 .t-bord-sauge{border-left:3px solid var(--d-sauge)}.pj2 .t-bord-sable{border-left:3px solid var(--d-sable)}.pj2 .t-bord-poudre{border-left:3px solid var(--d-poudre)}.pj2 .t-bord-gris{border-left:3px solid var(--d-gris)}
.pj2-legende{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--sec);margin:4px 0 10px}
.pj2-legende span{display:inline-flex;align-items:center;gap:6px}
.pj2-legende i{width:10px;height:10px;border-radius:2px;display:inline-block}

/* Décisions */
.pj2-decisions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.pj2-decision{display:flex;flex-direction:column;gap:12px}
.pj2-rang{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pj2-t{font-size:16px;line-height:1.45}
.pj2-decision .pj2-gestes{margin-top:auto}
.pj2-plus{display:flex;align-items:center;gap:10px;justify-content:center;color:var(--sec)}
.pj2-plus b{font-size:28px;color:var(--texte);font-weight:500}

/* Graphiques */
.pj2-graph{width:100%;height:auto;display:block;overflow:visible}
.pj2-graph [data-href]{cursor:pointer}
.pj2-graph rect[data-href]:hover{opacity:.8}
.pj2-axe{fill:var(--sec);font-size:12px;font-family:var(--police)}
.pj2-repere{stroke:var(--texte);stroke-width:2;stroke-dasharray:4 3}
.pj2-aire{opacity:.85;stroke:none}
.pj2-courbe-n1{fill:none;stroke:var(--texte);stroke-width:1.6;stroke-dasharray:5 4}
.pj2-courbe{fill:none;stroke-width:2}
.pj2-courbe.c2{stroke:var(--texte)}
.pj2-courbe.c1{stroke:var(--sec);stroke-dasharray:6 4}
.pj2-courbe.c0{stroke:var(--filet);stroke-dasharray:2 4}
.pj2-zone{fill:transparent}
.pj2-zone:hover{fill:var(--survol)}
.pj2-jauge{width:180px;height:auto;display:block;margin:4px auto 6px}
.pj2-jauge-fond{fill:none;stroke:var(--filet);stroke-width:12;stroke-linecap:round}
.pj2-jauge-plein{fill:none;stroke:var(--d-sauge);stroke-width:12;stroke-linecap:round}
.pj2-jauge-txt{fill:var(--texte);font-size:20px;font-weight:600;font-family:var(--police)}
.pj2-anneau{width:170px;height:170px;display:block;margin:0 auto 8px}
.pj2-anneau [data-href]{cursor:pointer}
.pj2-entonnoir{display:flex;flex-direction:column;gap:12px}
.pj2-ent-ligne,.pj2-bh{display:grid;grid-template-columns:minmax(120px,190px) minmax(0,1fr) auto 44px;gap:12px;align-items:center;font-size:14px}
.pj2-bh{grid-template-columns:minmax(110px,220px) minmax(0,1fr) auto;min-height:32px;border-radius:6px}
a.pj2-bh:hover{background:var(--survol)}
.pj2-barresh{display:flex;flex-direction:column;gap:6px}
.pj2-ent-nom,.pj2-bh-nom{color:var(--sec);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj2-ent-piste{height:12px;border-radius:6px;background:var(--survol);overflow:hidden}
.pj2-ent-piste i{display:block;height:100%;border-radius:6px;transition:width .4s var(--ease)}
.pj2-ent-ligne small{color:var(--sec)}
.pj2-chaleur{display:grid;gap:4px;font-size:12px}
.pj2-chaleur-col{color:var(--sec);text-align:center;white-space:nowrap;overflow:hidden}
.pj2-chaleur-lig{color:var(--sec);align-self:center}
.pj2-chaleur-case{min-height:30px;border-radius:4px;display:flex;align-items:center;justify-content:center;background:var(--survol);color:var(--sur-teinte);font-weight:600}
.pj2-chaleur-case[data-n="1"]{background:color-mix(in srgb,var(--d-glacier) 30%,transparent);color:var(--texte)}
.pj2-chaleur-case[data-n="2"]{background:color-mix(in srgb,var(--d-glacier) 52%,transparent);color:var(--texte)}
.pj2-chaleur-case[data-n="3"]{background:color-mix(in srgb,var(--d-glacier) 76%,transparent)}
.pj2-chaleur-case[data-n="4"]{background:var(--d-glacier)}
a.pj2-chaleur-case:hover{outline:1px solid var(--texte)}

/* La frise d'une journée */
.pj2-frise{position:relative;height:84px;border:1px solid var(--filet);border-radius:var(--r-carte);margin-top:22px;overflow:visible}
.pj2-frise-h{position:absolute;top:-20px;transform:translateX(-50%);font-size:12px;color:var(--sec);white-space:nowrap}
.pj2-frise-h:last-of-type{transform:translateX(-100%)}
.pj2-frise-h:first-child{transform:none}
.pj2-frise-ev{position:absolute;top:10px;bottom:10px;border-radius:6px;padding:6px 8px;color:var(--sur-teinte);overflow:hidden;display:flex;flex-direction:column;min-width:0;transition:transform .14s var(--ease)}
.pj2-frise-ev:hover{transform:translateY(-2px)}
.pj2-frise-ev b{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj2-frise-ev small{font-size:12px;opacity:.85;white-space:nowrap}
.pj2-frise-ev.propose{background:transparent!important;border:1.5px dashed var(--d-glacier);color:var(--texte)}
.pj2-frise-libre{position:absolute;top:22px;bottom:22px;border:1px dashed var(--filet);border-radius:6px;color:var(--sec);font-size:12px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.pj2-frise-libre:hover{border-color:var(--d-sauge);color:var(--texte)}
.pj2-frise-maintenant{position:absolute;top:-6px;bottom:-6px;width:2px;background:var(--texte);transform:translateX(-1px)}
.pj2-frise-maintenant small{position:absolute;bottom:-20px;left:50%;transform:translateX(-50%);font-size:12px;white-space:nowrap;font-weight:600}
.pj2-frise-ligne{display:grid;grid-template-columns:56px minmax(0,1fr);gap:12px;align-items:center;margin-top:8px}
.pj2-frise-ligne .pj2-frise{height:56px;margin-top:20px}
.pj2-frise-ligne .pj2-frise-ev small{display:none}

/* Listes */
.pj2-liste{display:flex;flex-direction:column}
.pj2-ligne{display:flex;align-items:center;gap:12px;min-height:58px;padding:8px 0;border-bottom:1px solid var(--filet)}
.pj2-ligne:last-child{border-bottom:0}
.pj2-ligne.eteint{opacity:.55}
.pj2-ligne.propose .pj2-pastille{background:transparent!important;border:1.5px dashed var(--d-glacier)}
.pj2-ligne input[type=checkbox]{width:18px;height:18px;accent-color:var(--texte);flex:none}
.pj2-pastille{width:10px;height:10px;border-radius:3px;flex:none;display:inline-block}
.pj2-ligne-txt{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}
.pj2-ligne-txt b{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj2-ligne-txt small{font-size:13px;color:var(--sec);overflow:hidden;text-overflow:ellipsis}
.pj2-ligne .pj2-gestes{flex:none}
.pj2-poignee{display:inline-flex;color:var(--sec);cursor:grab;flex:none}
.pj2-coches li{display:flex;align-items:center;gap:10px;min-height:48px;border-bottom:1px solid var(--filet)}
.pj2-coches label{display:flex;align-items:center;gap:10px;flex:1;min-width:0;cursor:pointer}
.pj2-coches input{width:18px;height:18px;accent-color:var(--texte);flex:none}
.pj2-coches .fait{text-decoration:line-through;color:var(--sec)}
.pj2-sait li{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--filet)}
.pj2-sait li:last-child{border-bottom:0}
.pj2-suite li{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--filet)}
.pj2-suite li:last-child{border-bottom:0}
.pj2-suite li > span:first-child{min-width:0}
.pj2-journal li{display:grid;grid-template-columns:120px minmax(0,1fr) auto;gap:14px;align-items:center;padding:10px 0;border-bottom:1px solid var(--filet)}
.pj2-journal li > span:nth-child(2){min-width:0}
.pj2-journal small{display:block;color:var(--sec);font-size:13px}
.pj2-journal-n{font-size:13px;color:var(--sec);font-weight:500}
.pj2-chrono li{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--filet);font-size:14px}
.pj2-jamais li{display:flex;gap:10px;align-items:flex-start;padding:8px 0;font-size:14px}
.pj2-etapes{list-style:decimal;padding-left:20px;display:flex;flex-direction:column;gap:10px}
.pj2-table{width:100%;border-collapse:collapse;font-size:14px}
.pj2-table th{text-align:left;font-weight:500;color:var(--sec);padding:8px 10px;border-bottom:1px solid var(--filet);white-space:nowrap}
.pj2-table td{padding:10px;border-bottom:1px solid var(--filet)}
.pj2-table td .pj2-pastille{margin-right:8px}
.pj2-nav-jours{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pj2-nav-jours b{font-weight:600;margin-left:6px}
.pj2-barre-sem{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.pj2-barre-sem .pj2-filtres{margin:0}

/* La semaine */
.pj2-semaine{display:grid;grid-template-columns:minmax(0,1fr);gap:20px}
.pj2-semaine.avec-panneau{grid-template-columns:minmax(0,1fr) 320px}
.pj2-grille-cadre{max-height:640px;overflow:auto;background:var(--carte);border:1px solid var(--filet-doux);border-radius:var(--r-carte);overscroll-behavior:contain}
.pj2-grille{display:grid;grid-template-rows:auto 1fr;position:relative;min-width:640px}
.pj2-col-tete{display:flex;flex-direction:column;gap:4px;padding:10px 8px;border-bottom:1px solid var(--filet);border-left:1px solid var(--filet);position:sticky;top:0;background:var(--carte);z-index:3;font-size:13px;color:var(--sec)}
.pj2-col-tete b{font-size:20px;color:var(--texte);font-weight:500;line-height:1}
.pj2-col-tete.auj b{display:inline-flex;align-items:center;justify-content:center;background:var(--plein-fond);color:var(--plein-texte);border-radius:4px;padding:2px 6px;width:max-content}
.pj2-charge{display:flex;height:4px;gap:1px;border-radius:2px;overflow:hidden;background:var(--survol)}
.pj2-charge i{display:block;height:100%}
.pj2-heures{position:relative;grid-row:2;height:calc(var(--hh,11) * 56px)}
.pj2-heures span{position:absolute;right:8px;transform:translateY(-50%);font-size:12px;color:var(--sec)}
.pj2-heures span:first-child{transform:none}
.pj2-col{position:relative;grid-row:2;height:calc(var(--hh,11) * 56px);border-left:1px solid var(--filet);background-image:linear-gradient(var(--filet) 1px,transparent 1px);background-size:100% 56px}
.pj2-case{position:absolute;left:0;right:0;border-radius:0}
.pj2-case:hover{background:var(--survol)}
.pj2-ev{position:absolute;padding:5px 7px;border-radius:6px;color:var(--texte);background:var(--carte)!important;overflow:hidden;text-align:left;display:flex;flex-direction:column;gap:1px;border:1px solid var(--filet);border-left-width:3px;z-index:2;cursor:grab;touch-action:none;transition:box-shadow .14s,transform .14s var(--ease);font-size:13px}
.pj2-ev b{font-weight:600;font-size:13px;line-height:1.25;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.pj2-ev small{font-size:12px;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj2-ev-type{display:inline-flex;align-items:center;gap:4px}
.pj2-ev.propose{background:var(--fond)!important;border:1.5px dashed var(--d-glacier);color:var(--texte)}
.pj2-ev.lecture{background:transparent!important;border:1px solid var(--d-gris);color:var(--sec);cursor:default}
.pj2-ev.choisi{box-shadow:0 0 0 2px var(--texte)}
.pj2-ev.tenu{opacity:.75;z-index:9;cursor:grabbing;box-shadow:0 10px 30px rgba(0,0,0,.4)}
.pj2-ev[data-cible]::after{content:attr(data-cible);position:absolute;bottom:-1px;left:4px;font-size:12px;font-weight:600;background:var(--fond);color:var(--texte);padding:0 4px;border-radius:3px}
.pj2-maintenant{position:absolute;left:0;right:0;height:2px;background:var(--texte);z-index:1;pointer-events:none}
.pj2-maintenant::before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--texte)}
.pj2-journee{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.pj2-panneau{border:1px solid var(--texte);border-radius:var(--r-carte);padding:18px;display:flex;flex-direction:column;gap:6px;align-self:start;position:sticky;top:12px}
.pj2-pan-tete{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pj2-pan-titre{font-size:18px;font-weight:500;margin:6px 0 0}
.pj2-pan-pied{margin-top:10px}

/* Le mois */
.pj2-mois{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--filet);border-left:1px solid var(--filet)}
.pj2-mois-tete{padding:8px;font-size:13px;color:var(--sec);border-right:1px solid var(--filet);border-bottom:1px solid var(--filet)}
.pj2-mois-jour{position:relative;min-height:116px;padding:6px;border-right:1px solid var(--filet);border-bottom:1px solid var(--filet);display:flex;flex-direction:column;gap:3px;min-width:0}
.pj2-mois-jour.hors{opacity:.45}
.pj2-mois-jour.auj .pj2-mois-n{background:var(--plein-fond);color:var(--plein-texte)}
.pj2-mois-n{align-self:flex-start;font-weight:600;font-size:14px;padding:1px 6px;border-radius:4px}
.pj2-mois-ev{font-size:12px;line-height:1.3;padding:2px 6px;border-radius:3px;background:var(--survol);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}
.pj2-mois-ev.propose{border-style:dashed}
.pj2-mois-plus{position:absolute;top:6px;right:6px;color:var(--sec);opacity:0;transition:opacity .14s}
.pj2-mois-jour:hover .pj2-mois-plus{opacity:1}

/* Les dates d'une ressource */
.pj2-dates{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:12px}
.pj2-date{display:flex;flex-direction:column;gap:2px;padding:12px;border-radius:var(--r-carte);border:1px solid var(--filet);min-height:96px;text-align:left;min-width:0;transition:transform .14s var(--ease)}
.pj2-date:hover{transform:translateY(-2px)}
.pj2-date b{font-size:24px;font-weight:500;line-height:1}
.pj2-date small{font-size:12px;color:var(--sec)}
.pj2-date span{font-size:13px;margin-top:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pj2-date.vendu{background:var(--d-poudre);border-color:var(--d-poudre);color:var(--sur-teinte)}
.pj2-date.vendu small{color:inherit;opacity:.8}
.pj2-date.option{border:1.5px dashed var(--d-sable)}
.pj2-date.libre{border-style:solid;color:var(--sec)}
.pj2-date.libre:hover{border-color:var(--texte);color:var(--texte)}

/* La réservation en ligne */
.pj2-url{font-size:15px;word-break:break-all;padding:12px;border:1px solid var(--filet);border-radius:var(--r-champ);margin-bottom:10px}
.pj2-qr-carte{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}
.pj2-qr{border-radius:8px;background:#fff}
.pj2-telephone{max-width:390px;margin:0 auto 24px;border:1px solid var(--filet);border-radius:28px;padding:24px 18px}
.pj2-public h3{font-size:24px;font-weight:600;margin:0 0 10px}

/* Barre du bas et téléphone */
@media (max-width:1100px){.pj2-decisions{grid-template-columns:repeat(2,minmax(0,1fr))}.pj2-g3{grid-template-columns:1fr}}
@media (max-width:760px){
  .pj2-entete{padding:0 16px;min-height:60px}
  .pj2-ariane,.pj2-heure{display:none}
  .pj2-droite .pj2-btn{display:none}
  .pj2-espaces{display:none}
  .pj2-soie{left:auto;right:-160px;width:380px;top:-110px}
  .pj2-principal{padding:20px 16px 110px}
  .pj2-tete{flex-direction:column;align-items:stretch;gap:16px}
  .pj2-tete h1{font-size:26px}
  .pj2-sous-titre{font-size:15px}
  .pj2-tete-act{flex-direction:column;align-items:stretch}
  .pj2-tete-act .pj2-btn{width:100%}
  .pj2-sous{gap:20px}
  .pj2-decisions,.pj2-g21,.pj2-g3,.pj2-rang3{grid-template-columns:minmax(0,1fr)}
  .pj2-semaine.avec-panneau{grid-template-columns:minmax(0,1fr)}
  .pj2-panneau{position:static}
  .pj2-outils{gap:8px}
  .pj2-cherche{min-width:0;flex:1 1 100%}
  .pj2-outils .pj2-btn{flex:1 1 auto}
  .pj2-ligne{flex-wrap:wrap}
  .pj2-ligne .pj2-gestes{width:100%;justify-content:flex-end}
  .pj2-journal li{grid-template-columns:minmax(0,1fr)}
  .pj2-ent-ligne{grid-template-columns:minmax(0,1fr) auto;row-gap:4px}
  .pj2-ent-ligne .pj2-ent-piste{grid-column:1/-1;grid-row:2}
  .pj2-ent-ligne small{display:none}
  .pj2-bh{grid-template-columns:minmax(0,96px) minmax(0,1fr) auto}
  .pj2-suite li{flex-direction:column;align-items:flex-start}
  .pj2-kv{flex-wrap:wrap}
  .pj2-kv > span:last-child{text-align:left}
  .pj2-ligne-choix{justify-content:flex-start}
  .pj2-mois-jour{min-height:78px;padding:4px}
  .pj2-mois-ev{font-size:12px;padding:1px 3px}
  .pj2-frise-h:nth-child(even){display:none}
  .pj2-frise-ev small{display:none}
  .pj2-dates{grid-template-columns:repeat(3,minmax(0,1fr))}
  .pj2-chaleur-col{font-size:12px;writing-mode:vertical-rl;transform:rotate(180deg);height:44px}
  .pj2-chaleur-case{min-height:24px;font-size:12px}
  .pj2-table{font-size:13px}
  .pj2-table th,.pj2-table td{padding:6px}
  .pj2-dire{bottom:88px}
  .pj2-bas{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--fond);border-top:1px solid var(--filet);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
  .pj2-bas a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:52px;justify-content:center;font-size:12px;color:var(--sec);min-width:0}
  .pj2-bas a.actif{color:var(--texte)}
  .pj2-bas-ic{position:relative;display:inline-flex}
  .pj2-bas-ic .n{position:absolute;top:-6px;right:-14px;min-width:18px;height:18px;font-size:12px;background:var(--fond)}
}
@media print{.pj2-entete,.pj2-espaces,.pj2-bas,.pj2-outils,.pj2-dire,.pj2-casquette{display:none!important}.pj2{background:#fff;color:#000;--texte:#000;--sec:#444;--filet:#bbb;--fond:#fff}.pj2-grille-cadre{max-height:none;overflow:visible}}

.pj2-logo{width:14px;height:14px;vertical-align:-2px;flex:none}
.pj2-g21 .pj2-frise-h:nth-child(even),.pj2-frise-ligne .pj2-frise-h:nth-child(even){display:none}
.pj2-trouve{margin-bottom:20px}
.pj2-questions{display:flex;flex-direction:column;gap:14px;margin-top:12px}
.pj2-question p{font-weight:500}

.pj2-page > .pj2-carte, .pj2-page > form.pj2-carte, .pj2-page > .pj2-bloc + .pj2-carte, .pj2-page > .pj2-carte + .pj2-bloc{margin-top:20px}
.pj2-defile{overflow-x:auto;max-width:100%}
.pj2-ligne-choix{min-width:0;max-width:100%}
@media (max-width:760px){.pj2 .pj2-btn{white-space:normal;text-align:center}.pj2-dates{gap:12px}}
.pj2-pied-page{margin-top:24px}
.pj2-grille.j7{grid-template-columns:52px repeat(7,minmax(0,1fr))}
.pj2-grille.j5{grid-template-columns:52px repeat(5,minmax(0,1fr))}
.pj2-chaleur.c12{grid-template-columns:56px repeat(12,minmax(0,1fr))}
.pj2-chaleur.c4{grid-template-columns:72px repeat(4,minmax(0,1fr))}
.pj2-chaleur.c24{grid-template-columns:56px repeat(24,minmax(0,1fr))}

.pj2-ev.t-glacier{border-left-color:var(--d-glacier)}.pj2-ev.t-sauge{border-left-color:var(--d-sauge);border-style:dashed;border-left-style:solid}.pj2-ev.t-sable{border-left-color:var(--d-sable)}.pj2-ev.t-poudre{border-left-color:var(--d-poudre)}.pj2-ev.t-gris{border-left-color:var(--d-gris)}
.pj2-ev small{color:var(--sec)}
.pj2-frise-ev{background:var(--carte)!important;color:var(--texte);border:1px solid var(--filet);border-left-width:3px}
.pj2-frise-ev.t-glacier{border-left-color:var(--d-glacier)}.pj2-frise-ev.t-sauge{border-left-color:var(--d-sauge)}.pj2-frise-ev.t-sable{border-left-color:var(--d-sable)}.pj2-frise-ev.t-poudre{border-left-color:var(--d-poudre)}.pj2-frise-ev.t-gris{border-left-color:var(--d-gris)}
.pj2-outils{border-top-color:var(--filet-doux);border-bottom-color:var(--filet-doux)}
.pj2-sous{border-bottom-color:var(--filet-doux)}
/* v4 : la ligne forte d'une décision (date, échéance, durée), comme la maquette. */
.pj2-gros{font-size:28px;line-height:1.15;font-weight:600;letter-spacing:-.01em;margin:6px 0 0;font-variant-numeric:tabular-nums;color:inherit}
@media (max-width:760px){.pj2-gros{font-size:24px}}
.pj2-ev b svg{width:12px;height:12px;vertical-align:-1px}
.pj2-ev.court{padding:1px 6px;justify-content:center}.pj2-ev.court b,.pj2-ev.moyen b{-webkit-line-clamp:1;font-size:12px}.pj2-ev.court small,.pj2-ev.court .pj2-ev-type{display:none}
.pj2-ev.court b,.pj2-ev.moyen b{display:block;white-space:nowrap;text-overflow:ellipsis}

/* ------------------------------------------------------------------ propre à Projets, Dossiers et Achats */
/* Projets et temps : la bande des espaces encadrée, l'espace courant en boîte (maquette v4). */
.pj2-espaces{background:var(--page);border-bottom:1px solid var(--filet-doux)}
.pj2-dedans{min-height:72px}
.pj2-liste-esp{background:var(--carte);border-radius:var(--r-bouton);padding:4px;gap:2px;flex:0 1 auto}
.pj2-liste-esp a{min-height:44px;border:1px solid transparent;border-radius:6px;border-bottom-width:1px}
.pj2-liste-esp a.actif{border-color:var(--texte);background:transparent}
.pj2-heure{margin-left:auto}
/* Dossiers et Achats : la colonne de côté (maquette v4). */
.pj2-corps{display:grid;grid-template-columns:256px minmax(0,1fr);min-height:calc(100% - 72px)}
.pj2-corps .pj2-principal{min-width:0}
.pj2-cote{background:var(--fond);padding:28px 20px;display:flex;flex-direction:column;gap:10px;border-right:1px solid var(--filet-doux)}
.pj2-cote .pj2-titre-app{border:0;padding:0 12px;margin-top:6px}
.pj2-cote-nav{display:flex;flex-direction:column;gap:2px}
.pj2-cote-lien{display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;border-radius:var(--r-bouton);color:var(--sec);font-weight:500}
.pj2-cote-lien:hover{color:var(--texte);background:var(--survol)}
.pj2-cote-lien.actif{background:var(--survol);color:var(--texte)}
.pj2-cote-lien span:not(.n){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pj2-cote-lien .n{font-size:13px;color:var(--sec);font-variant-numeric:tabular-nums}
.pj2-cote-resume{border-top:1px solid var(--filet-doux);border-bottom:1px solid var(--filet-doux);padding:18px 12px;margin:8px 0;display:flex;flex-direction:column;gap:8px}
.pj2-cote-resume b{font-weight:600}
.pj2-points{display:flex;flex-wrap:wrap;gap:3px}.pj2-points i{width:7px;height:7px;border-radius:50%;border:1px solid var(--sec)}.pj2-points i.plein{background:var(--texte);border-color:var(--texte)}
/* Les repères chiffrés (trois par ligne, un trait fin entre eux). */
.pj2-reperes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:var(--carte);border-radius:var(--r-carte);margin-top:28px}
.pj2-reperes .pj2-repere{stroke:none;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"lbl sp" "val sp" "note sp" "lien lien";column-gap:16px;row-gap:4px;padding:22px 24px;border-left:1px solid var(--filet-doux);color:var(--texte)}
.pj2-reperes .pj2-repere:first-child{border-left:0}
.pj2-reperes .pj2-repere:hover{background:var(--survol)}
.pj2-lbl{grid-area:lbl;color:var(--sec);font-size:14px}.pj2-moyen{grid-area:val;font-size:24px;font-weight:600;font-variant-numeric:tabular-nums}
.pj2-repere>.pj2-note{grid-area:note}.pj2-repere>svg{grid-area:sp;align-self:center}
.pj2-fleche{grid-area:lien;display:inline-flex;align-items:center;gap:4px;margin-top:8px;font-weight:500}
.pj2-spark{width:110px;height:40px;overflow:visible}.pj2-spark path{fill:none;stroke-width:1.6}.pj2-spark-l{stroke:var(--texte)}.pj2-spark-n1{stroke:var(--sec);stroke-dasharray:3 3}.pj2-spark-p{fill:var(--texte)}
.pj2-gros{font-size:28px;line-height:1.15;font-weight:600;letter-spacing:-.01em;font-variant-numeric:tabular-nums;margin-top:6px;overflow-wrap:anywhere}
.pj2-gros small{font-size:15px;font-weight:400;color:var(--sec)}
.pj2-carte.forte .pj2-gros small{color:var(--avant-sec)}
.pj2-piste{display:block;height:8px;border-radius:4px;background:var(--filet-doux);overflow:hidden}.pj2-piste i{display:block;height:100%;border-radius:4px}
.pj2-piste i.t-d1,.pj2-chrono-barre.t-d1{background:var(--d-glacier)}.pj2-piste i.t-d2,.pj2-chrono-barre.t-d2{background:var(--d-sauge)}.pj2-piste i.t-d3,.pj2-chrono-barre.t-d3{background:var(--d-sable)}.pj2-piste i.t-d4,.pj2-chrono-barre.t-d4{background:var(--d-poudre)}
.pj2-graph rect.t-d1{fill:var(--d-glacier)}.pj2-graph rect.t-d2{fill:var(--d-sauge)}.pj2-graph rect.t-d3{fill:var(--d-sable)}.pj2-graph rect.t-d4{fill:var(--d-poudre)}
.pj2-graph{width:100%;height:auto;display:block;margin-top:12px}.pj2-axe{font-size:12px;fill:var(--sec)}.pj2-axe.fort{fill:var(--texte);font-weight:600}
.pj2-chiffre{font-variant-numeric:tabular-nums;white-space:nowrap}
.pj2-barre{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}
/* Colonnes des projets (glisser d'une étape à l'autre). */
.pj2-colonnes{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;align-items:start}
.pj2-colonne{border:1px solid var(--filet-doux);border-radius:var(--r-carte);padding:14px;display:flex;flex-direction:column;gap:10px;min-height:180px;transition:border-color .14s,background .14s}
.pj2-colonne h2{display:flex;justify-content:space-between;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--sec);font-weight:600}
.pj2-colonne.survol{border:1px dashed var(--texte);background:var(--survol)}
.pj2-vide{padding:22px 8px;text-align:center;border:1px dashed var(--filet-doux);border-radius:var(--r-bouton)}
.pj2-tuile{display:flex;flex-direction:column;gap:8px;padding:14px;background:var(--carte);border-radius:10px;cursor:grab;transition:background .14s,transform .14s var(--ease)}
.pj2-tuile:hover{background:var(--survol)}.pj2-tuile:active{cursor:grabbing}
.pj2-tuile-tete{display:flex;justify-content:space-between;gap:8px}.pj2-tuile-tete b{font-weight:600;overflow-wrap:anywhere}
.pj2-poignee{color:var(--sec)}
.pj2-tuile-ligne{display:flex;justify-content:space-between;gap:8px;font-size:14px;color:var(--sec)}.pj2-tuile-ligne b{color:var(--texte);font-variant-numeric:tabular-nums}
.pj2-tuile small{font-size:13px;color:var(--sec)}
.pj2-progression{display:block;height:4px;border-radius:2px;background:var(--filet-doux);overflow:hidden}.pj2-progression i{display:block;height:100%;background:var(--texte);border-radius:2px}.pj2-progression i.depasse{background:var(--d-poudre)}
.pj2-carte.forte .pj2-progression{background:var(--avant-carte)}.pj2-carte.forte .pj2-progression i{background:var(--avant-texte)}
/* Chronologie. */
.pj2-chrono{display:grid;grid-template-columns:minmax(150px,220px) repeat(6,minmax(0,1fr));row-gap:0;overflow-x:auto}
.pj2-chrono-col{font-size:13px;color:var(--sec);padding:0 8px 10px;border-left:1px solid var(--filet-doux)}
.pj2-chrono-nom{display:flex;flex-direction:column;padding:10px 12px 10px 0;border-top:1px solid var(--filet-doux);min-width:0}.pj2-chrono-nom b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pj2-chrono-nom small{font-size:13px;color:var(--sec)}
.pj2-chrono-case{border-top:1px solid var(--filet-doux);border-left:1px solid var(--filet-doux);display:flex;align-items:center;padding:6px}
.pj2-chrono-barre{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:6px;color:var(--sur-teinte);font-size:13px;font-weight:600;white-space:nowrap}
/* La fiche d'un projet. */
.pj2-faits{display:flex;flex-wrap:wrap;gap:10px 28px;align-items:center;margin:4px 0 22px;color:var(--sec)}
.pj2-faits>span,.pj2-fait-champ{display:inline-flex;align-items:center;gap:8px}.pj2-faits b{color:var(--texte)}
.pj2-etapes{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
.pj2-etape{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 4px 6px;color:var(--sec);text-align:left;font-size:14px;border-radius:6px}
.pj2-etape:hover{color:var(--texte);background:var(--survol)}
.pj2-etape i{display:block;width:100%;height:4px;border-radius:2px;background:var(--filet-doux)}
.pj2-etape.fait i{background:var(--sec)}.pj2-etape.courante i{background:var(--texte)}.pj2-etape.courante{color:var(--texte);font-weight:600}
.pj2-etape b{font-weight:inherit}
.pj2-ligne-choix{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
/* Dossiers. */
.pj2-ajout{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;border:1px dashed var(--filet);background:transparent;margin-bottom:16px}
.pj2-ajout p{display:flex;align-items:center;gap:10px;color:var(--sec)}
.pj2-dossiers{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:16px 0}
.pj2-dossier{display:flex;flex-direction:column;gap:6px;padding:16px;background:var(--carte);border-radius:var(--r-carte);position:relative;transition:background .14s}
.pj2-dossier.survol{background:var(--survol);outline:1px dashed var(--texte)}
.pj2-dossier-tete{display:flex;justify-content:space-between;align-items:center;color:var(--sec)}
.pj2-dossier small{font-size:13px;color:var(--sec);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pj2-dossier>.pj2-btn{position:absolute;right:10px;bottom:10px}
.pj2-depot-carte{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:center;margin-bottom:12px}
.pj2-url{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;overflow-wrap:anywhere;color:var(--sec);margin:6px 0 10px}
.pj2-qr{border-radius:8px;background:#fff;padding:0}
/* Achats et notes. */
.pj2-ticket{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;min-height:320px}
.pj2-photo{max-width:100%;max-height:520px;border-radius:8px;object-fit:contain;background:#fff}
.pj2-lu{display:grid;grid-template-columns:140px minmax(0,1fr);gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--filet-doux)}
.pj2-lu:first-of-type{border-top:0}
.pj2-lu b{font-weight:600}
@media (max-width:1100px){.pj2-reperes{grid-template-columns:1fr}.pj2-reperes .pj2-repere{border-left:0;border-top:1px solid var(--filet-doux)}.pj2-reperes .pj2-repere:first-child{border-top:0}.pj2-etapes{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.pj2-corps{grid-template-columns:minmax(0,1fr)}.pj2-cote{display:none}}
@media (max-width:760px){.pj2-depot-carte{grid-template-columns:minmax(0,1fr)}.pj2-lu{grid-template-columns:minmax(0,1fr)}.pj2-chrono{grid-template-columns:120px repeat(6,minmax(64px,1fr))}.pj2-colonnes{grid-template-columns:minmax(0,1fr)}.pj2-etapes{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media print{.pj2-cote{display:none!important}.pj2-corps{display:block}}
/* L'autocomplétion du registre. */
.pj2-entreprise{position:relative}
.pj2-suggest{display:flex;flex-direction:column;gap:2px;margin-top:4px}
.pj2-suggest:empty{display:none}
.pj2-suggest-b{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;min-height:44px;padding:8px 12px;border-radius:6px;text-align:left;background:var(--carte)}
.pj2-suggest-b:hover{background:var(--survol)}.pj2-suggest-b b{font-weight:500}.pj2-suggest-b small{font-size:13px;color:var(--sec)}
/* Les actions de chaque objet, visibles en permanence (Modifier, Dupliquer, Supprimer). */
.pj2-actions{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}
.pj2-actions .pj2-btn.petit,.pj2-actions .pj2-lien{min-height:32px;padding:0 9px;font-size:13px;gap:5px}
.pj2-actions .pj2-lien{display:inline-flex;align-items:center;border-radius:6px}
.pj2-actions .pj2-lien:hover{background:var(--survol)}
.pj2-tuile .pj2-actions{margin-top:2px;border-top:1px solid var(--filet-doux);padding-top:8px}
.pj2-tuile-titre{min-width:0}.pj2-tuile-titre:hover b{text-decoration:underline}
.pj2-edition-ligne{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.pj2-edition-ligne .pj2-champ.petit{flex:1 1 120px;min-width:0}
.pj2-points i{display:inline-block;flex:none;width:7px;height:7px;padding:0}
.pj2-champ-l .pj2-ligne-choix{display:flex;gap:8px;flex-wrap:nowrap;margin-top:0}
.pj2-champ-l .pj2-ligne-choix>*{flex:1 1 0;min-width:0}
.pj2-rapide{flex-wrap:wrap}
.pj2-rapide>input:not(.petit){flex:1 1 220px;min-width:0}
.pj2-rapide>.pj2-champ.petit{flex:0 1 auto;min-width:0;max-width:100%}
@media (max-width:760px){.pj2-rapide>*{flex:1 1 100%}}
.pj2-cherche{min-width:320px}@media (max-width:760px){.pj2-cherche{min-width:0;flex:1 1 100%}}
