/* ============================================================
   Concorda - surcouche UI (refonte v2, promue interface unique)
   Chargee par base.html sur toutes les pages.
   Tout est scope sous body[data-ui="v2"] : aucune fuite possible
   vers l'interface par defaut. On raffine l'existant, on ne le
   reecrit pas. Conventions du projet respectees (pas de cadratin).
   ============================================================ */

body[data-ui="v2"]{
  /* Palette affinee : navy un peu plus profond, papier plus chaud,
     lignes plus douces. Les noms de variables restent compatibles. */
  --navy:#1c3257; --navy-d:#132341; --taupe:#a9977c; --taupe-d:#8a7858;
  --ink:#1f2730; --muted:#62707f; --line:#e4e7ec; --line-2:#eef1f5;
  --bg:#f4f4f0; --card:#ffffff;
  --green:#2e8b57; --red:#bd382a; --amber:#bf7016; --blue:#2c66ad;
  --shadow:0 1px 2px rgba(18,28,48,.05), 0 10px 28px rgba(18,28,48,.06);
  --radius:14px;
  background:
    radial-gradient(1200px 360px at 50% -120px, rgba(28,50,87,.05), transparent 70%),
    var(--bg);
}

/* ---------- En-tete ---------- */
body[data-ui="v2"] .topbar{
  padding:13px 30px;
  background:rgba(255,255,255,.86);
  backdrop-filter:saturate(140%) blur(8px);
  border-bottom:1px solid var(--line);
}
body[data-ui="v2"] .brand .word{letter-spacing:5px;font-size:18px}
body[data-ui="v2"] .navlink{
  font-size:13.5px;padding:6px 2px;border-radius:8px;transition:color .15s ease;
}
body[data-ui="v2"] .navlink.who{
  background:#f1f4f9;padding:5px 11px;border-radius:999px;
}

/* ---------- Cartes ---------- */
body[data-ui="v2"] .card{
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:20px 22px;
  box-shadow:var(--shadow);
  transition:box-shadow .18s ease, border-color .18s ease;
}
body[data-ui="v2"] .card:hover{
  border-color:#d7dce4;
  box-shadow:0 2px 4px rgba(18,28,48,.06), 0 16px 40px rgba(18,28,48,.08);
}

/* ---------- Titres ---------- */
body[data-ui="v2"] h1{font-size:27px;letter-spacing:.2px}
/* Le titre du hero garde sa taille responsive (la regle h1 generique ci-dessus
   ne doit pas le raboter). */
body[data-ui="v2"] .hero-title{font-size:clamp(30px,4.3vw,44px);letter-spacing:-.5px}
body[data-ui="v2"] h2{font-size:19.5px}

/* ---------- Boutons ---------- */
body[data-ui="v2"] .btn{
  border-radius:10px;font-weight:600;
  transition:transform .04s ease, background .15s ease, box-shadow .15s ease;
}
body[data-ui="v2"] .btn:active{transform:translateY(1px)}
body[data-ui="v2"] .btn-primary{
  box-shadow:0 1px 0 rgba(255,255,255,.12) inset, 0 6px 16px rgba(28,50,87,.18);
}

/* ---------- Pastilles de phase (frise de procedure) ----------
   Primitives reutilisables pour la console arbitre. Le HTML de
   dossier.html v2 pourra s'appuyer dessus (chip + etat). */
body[data-ui="v2"] .phase-rail{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0 2px;
}
body[data-ui="v2"] .phase-chip{
  display:inline-flex;align-items:center;gap:7px;
  font-size:12px;font-weight:600;color:var(--muted);
  background:#f1f3f7;border:1px solid var(--line);
  padding:5px 11px;border-radius:999px;white-space:nowrap;
}
body[data-ui="v2"] .phase-chip .dot{
  width:7px;height:7px;border-radius:50%;background:#c2cad6;
}
body[data-ui="v2"] .phase-chip.is-done{color:var(--navy);background:#eef2f8}
body[data-ui="v2"] .phase-chip.is-done .dot{background:var(--green)}
body[data-ui="v2"] .phase-chip.is-current{
  color:#fff;background:var(--navy);border-color:var(--navy-d);
}
body[data-ui="v2"] .phase-chip.is-current .dot{background:var(--taupe)}

/* ---------- Coquille deux colonnes (console arbitre) ----------
   Volontairement opt-in : ne s'applique qu'aux ecrans v2 qui
   adoptent la classe .console-grid. */
/* La page console respire plus large que le gabarit standard (1060px). */
body[data-ui="v2"] .wrap:has(.console-grid){max-width:1300px}
body[data-ui="v2"] .console-grid{
  display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:24px;align-items:start;
}
body[data-ui="v2"] .console-main{min-width:0}
body[data-ui="v2"] .console-aside{position:sticky;top:78px;min-width:0}
@media (max-width:1000px){
  body[data-ui="v2"] .console-grid{grid-template-columns:1fr}
  body[data-ui="v2"] .console-aside{position:static}
}

/* Tableaux du rail (pieces, ecritures, journal) : tenir dans la colonne,
   les contenus longs (horodatages, details) passent a la ligne. */
body[data-ui="v2"] .console-aside table,
body[data-ui="v2"] .fold table{width:100%;table-layout:fixed}
body[data-ui="v2"] .console-aside table th,
body[data-ui="v2"] .console-aside table td,
body[data-ui="v2"] .fold table th,
body[data-ui="v2"] .fold table td{
  white-space:normal;word-break:break-word;overflow-wrap:anywhere;vertical-align:top;
}
body[data-ui="v2"] .console-aside .just,
body[data-ui="v2"] .fold .just{font-size:11.5px;margin-top:2px}

/* Rail droit : cartes compactes, hierarchie visuelle attenuee. */
body[data-ui="v2"] .console-aside .card{
  padding:14px 15px;margin:0 0 14px;font-size:13.5px;box-shadow:none;
  border-color:var(--line);background:#fcfcfb;
}
body[data-ui="v2"] .console-aside .card:hover{box-shadow:none;border-color:#d7dce4}
body[data-ui="v2"] .console-aside h2{font-size:14px;margin:.1em 0 .5em}
body[data-ui="v2"] .console-aside h2::after{display:none}
body[data-ui="v2"] .console-aside .grid.small{font-size:12.5px}

/* Sections repliables (Termine, Journal) dans le rail. */
body[data-ui="v2"] .fold{
  border:1px solid var(--line);border-radius:12px;background:#fcfcfb;margin:0 0 14px;
}
body[data-ui="v2"] .fold>summary{
  cursor:pointer;list-style:none;padding:11px 14px;font-weight:600;color:var(--navy);
  font-size:13.5px;display:flex;align-items:center;justify-content:space-between;
}
body[data-ui="v2"] .fold>summary::-webkit-details-marker{display:none}
body[data-ui="v2"] .fold>summary::after{content:"\25be";color:var(--muted);transition:transform .15s ease}
body[data-ui="v2"] .fold[open]>summary::after{transform:rotate(180deg)}
body[data-ui="v2"] .fold>summary .count{margin-left:6px}
body[data-ui="v2"] .fold .fold-body{padding:0 14px 12px}
body[data-ui="v2"] .fold .grid.small{font-size:12px}

/* ---------- Unité des titres de boîtes (console) ---------- */
/* Tous les titres de sections (cartes h2, summaries de folds, panneau loquet)
   partagent police, taille, graisse et couleur ; le compteur est une grappe
   alignée à gauche, le chevron des folds est repoussé à droite. */
body[data-ui="v2"] .console-grid .card h2,
body[data-ui="v2"] .console-grid .fold>summary,
body[data-ui="v2"] .console-grid .loquet-summary .h2-inline{
  font-family:var(--serif);font-size:17.5px;font-weight:700;color:var(--navy);line-height:1.3;
}
body[data-ui="v2"] .console-grid .card h2{
  display:flex;align-items:center;gap:8px;margin:0 0 12px;
}
body[data-ui="v2"] .console-grid .synthese-head h2{margin:0}
body[data-ui="v2"] .console-grid .fold>summary{
  justify-content:flex-start;gap:8px;
}
body[data-ui="v2"] .console-grid .fold>summary::after{margin-left:auto}
body[data-ui="v2"] .console-grid .fold>summary .count{margin-left:0}
body[data-ui="v2"] .console-grid .count{
  margin-left:0;flex:0 0 auto;font-size:11px;font-weight:600;padding:2px 8px;line-height:1.5;
}

/* Zone d'alertes pleine largeur : seules les actions requises s'y trouvent. */
body[data-ui="v2"] .alerts{margin:4px 0 18px;display:flex;flex-direction:column;gap:12px}
body[data-ui="v2"] .alert-card{
  border:1px solid #e2c9a8;background:#fbf6ee;border-left:4px solid var(--amber);
  border-radius:12px;padding:14px 16px;box-shadow:var(--shadow);
}
body[data-ui="v2"] .alert-card.urgent{border-color:#e6bdb6;background:#fbf0ee;border-left-color:var(--red)}
body[data-ui="v2"] .alert-card h2{font-size:16px;margin:0 0 6px}
body[data-ui="v2"] .alert-card h2::after{display:none}

/* ---------- Tableau de bord : grille de cartes ---------- */
body[data-ui="v2"] .dossier-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px;margin:20px 0;
}
body[data-ui="v2"] .dossier-card{
  position:relative;background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:16px 17px;box-shadow:var(--shadow);
  transition:box-shadow .18s ease, border-color .18s ease, transform .06s ease;
  display:flex;flex-direction:column;gap:2px;
}
body[data-ui="v2"] .dossier-card:hover{
  border-color:#d3dae4;box-shadow:0 2px 4px rgba(18,28,48,.06), 0 16px 40px rgba(18,28,48,.09);
}
body[data-ui="v2"] .dc-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
body[data-ui="v2"] .dc-id{color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.2px}
/* Pastille « action attendue » sur la carte de dossier (liste d'accueil). */
body[data-ui="v2"] .dc-dot{
  width:9px;height:9px;border-radius:50%;background:#e07a3e;flex:0 0 auto;margin-right:auto;
  box-shadow:0 0 0 0 rgba(224,122,62,.5);animation:tabdot-pulse 1.8s ease-out infinite;
}
body[data-ui="v2"] .dc-attente{border-color:#e7b48f}
body[data-ui="v2"] .dossier-card h3{margin:.35em 0 .15em;font-size:16px}
body[data-ui="v2"] .dossier-card h3 .dc-link{color:var(--navy);text-decoration:none}
/* Lien etire : toute la carte est cliquable. */
body[data-ui="v2"] .dc-link::after{content:"";position:absolute;inset:0;border-radius:14px}
body[data-ui="v2"] .dc-parties{font-size:13px;margin:.1em 0 0}
body[data-ui="v2"] .dc-vs{color:var(--taupe-d);font-style:italic;margin:0 2px}
body[data-ui="v2"] .dc-foot{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin-top:12px;padding-top:10px;border-top:1px solid var(--line-2);
}
body[data-ui="v2"] .dc-val{font-weight:700;color:var(--navy);font-size:13.5px}
/* Le bouton supprimer passe au-dessus du lien etire. */
body[data-ui="v2"] .dc-del{position:relative;z-index:2}

/* Boutons flottants (FAB). */
body[data-ui="v2"] .fab{
  position:fixed;z-index:60;border:none;cursor:pointer;border-radius:999px;
  font-weight:600;font-family:var(--sans);box-shadow:0 6px 22px rgba(20,30,50,.22);
  display:inline-flex;align-items:center;gap:8px;transition:transform .06s ease, box-shadow .15s ease;
}
body[data-ui="v2"] .fab:active{transform:translateY(1px)}
body[data-ui="v2"] .fab-chat{
  right:22px;bottom:22px;width:58px;height:58px;justify-content:center;
  background:var(--navy);color:#fff;
}
body[data-ui="v2"] .fab-chat .lic{width:24px;height:24px}
body[data-ui="v2"] .fab-chat .badge-n{
  position:absolute;top:-3px;right:-3px;background:var(--red);color:#fff;
  font-size:11px;font-weight:700;min-width:19px;height:19px;border-radius:999px;
  display:flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid #fff;
}
body[data-ui="v2"] .fab-actions{
  right:92px;bottom:28px;padding:11px 18px;background:#fff;color:var(--navy);
  border:1px solid var(--line);font-size:13.5px;
}
body[data-ui="v2"] .fab-actions:hover{border-color:#cfd6e1}
body[data-ui="v2"] .fab-finances{
  right:92px;bottom:76px;padding:11px 18px;background:#fff;color:var(--navy);
  border:1px solid var(--line);font-size:13.5px;
}
body[data-ui="v2"] .fab-finances:hover{border-color:#cfd6e1}
body[data-ui="v2"] .fab-finances.fab-finances-low{bottom:28px}
body[data-ui="v2"] .msg-reply{font-size:12.5px;margin:2px 0 4px;opacity:.85}
body[data-ui="v2"] .msg-file{margin-top:4px;font-size:13px}
body[data-ui="v2"] .msg-actions{margin-top:5px}
body[data-ui="v2"] .reply-banner{background:#eef2f7;border:1px solid var(--line);border-radius:8px;padding:6px 10px;margin-bottom:8px;font-size:13px;display:flex;align-items:center;gap:10px;justify-content:space-between}
body[data-ui="v2"] .msg-unread{border-left:3px solid var(--navy)}
body[data-ui="v2"] .msg-unread .msg-nom{font-weight:700}
body[data-ui="v2"] .msg-lu{background:none;border:none;cursor:pointer;padding:2px 4px;line-height:0;color:#9aa4b2;display:inline-flex;align-items:center;border-radius:6px}
body[data-ui="v2"] .msg-lu:hover{color:var(--navy);background:#f0f3f7}
body[data-ui="v2"] .msg-lu-unread,body[data-ui="v2"] .msg-unread .msg-lu{color:var(--navy)}

/* Tiroirs coulissants + voile. */
body[data-ui="v2"] .drawer-overlay{
  position:fixed;inset:0;background:rgba(20,28,45,.42);z-index:70;
  opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease;
}
body[data-ui="v2"] .drawer-overlay.show{opacity:1;visibility:visible}
body[data-ui="v2"] .drawer{
  position:fixed;top:0;right:0;height:100%;width:min(440px,92vw);z-index:80;
  background:var(--bg);box-shadow:-10px 0 40px rgba(20,30,50,.18);
  transform:translateX(100%);transition:transform .24s cubic-bezier(.4,0,.2,1);
  display:flex;flex-direction:column;
}
body[data-ui="v2"] .drawer.left{right:auto;left:0;transform:translateX(-100%);box-shadow:10px 0 40px rgba(20,30,50,.18)}
body[data-ui="v2"] .drawer.open{transform:translateX(0)}
body[data-ui="v2"] .drawer-wide{width:min(760px,96vw)}
body[data-ui="v2"] .drawer-head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:15px 18px;border-bottom:1px solid var(--line);background:#fff;
}
body[data-ui="v2"] .drawer-head h2{margin:0;font-size:17px}
body[data-ui="v2"] .drawer-head h2::after{display:none}
body[data-ui="v2"] .drawer-close{
  border:none;background:#eef1f5;color:var(--navy);width:32px;height:32px;border-radius:8px;
  cursor:pointer;font-size:18px;line-height:1;
}
body[data-ui="v2"] .drawer-body{overflow-y:auto;padding:16px 18px;flex:1}
/* Dans le tiroir, la carte de communications redevient nue (pas de double cadre). */
body[data-ui="v2"] .drawer-body .card{border:none;box-shadow:none;padding:0;margin:0;background:transparent}
body[data-ui="v2"] .drawer-body .card h2{display:none}

/* ---------------------------------------------------------------------------
   Presentation de l'arbitre, centree, entre la designation et la premiere
   ecriture de la partie (cf. partie_dossier.html, bloc .arbitre-hero).
   --------------------------------------------------------------------------- */
body[data-ui="v2"] .arbitre-hero{
  text-align:center;border-color:#cfe0f3;
  background:linear-gradient(180deg,#f7faff,#fff);margin-bottom:18px;
}
body[data-ui="v2"] .arbitre-hero .arbitre-hero-top{
  display:flex;flex-direction:column;align-items:center;gap:4px;
}
body[data-ui="v2"] .arbitre-hero .arbitre-photo,
body[data-ui="v2"] .arbitre-hero .arbitre-photo-vide{
  width:108px;height:108px;border-radius:50%;object-fit:cover;
  border:3px solid #fff;box-shadow:0 4px 18px rgba(20,40,80,.18);margin-bottom:6px;
}
body[data-ui="v2"] .arbitre-hero .arbitre-photo-vide{
  background:var(--navy);color:#fff;font-size:40px;font-weight:600;
  display:flex;align-items:center;justify-content:center;
}
body[data-ui="v2"] .arbitre-hero .arbitre-label{
  font-size:11.5px;font-weight:bold;letter-spacing:.06em;text-transform:uppercase;
  color:var(--taupe,#a9977c);
}
body[data-ui="v2"] .arbitre-hero h2{margin:2px 0 0;font-size:22px}
body[data-ui="v2"] .arbitre-hero h2::after{display:none}
body[data-ui="v2"] .arbitre-hero .arbitre-titre{
  margin:2px 0 0;color:var(--navy);font-weight:600;font-size:14px;
}
body[data-ui="v2"] .arbitre-hero .arbitre-grid{
  text-align:left;max-width:560px;margin:16px auto 0;
}
body[data-ui="v2"] .arbitre-hero .arbitre-bio{
  max-width:620px;margin:14px auto 0;text-align:left;
}
/* Encadre expliquant les deux demarches distinctes (recusation / competence). */
body[data-ui="v2"] .arbitre-hero .arbitre-demarches{
  max-width:640px;margin:18px auto 0;padding:14px 16px;text-align:left;
  background:#fff;border:1px solid var(--line);border-radius:12px;
}
body[data-ui="v2"] .arbitre-hero .arbitre-demarches p{margin:0 0 8px}
body[data-ui="v2"] .arbitre-hero .arbitre-demarches p:last-child{margin-bottom:0}
/* Rappel compact de l'arbitre une fois la premiere ecriture deposee (rail droit). */
body[data-ui="v2"] .console-aside .arbitre-mini{display:flex;gap:12px;align-items:center}
body[data-ui="v2"] .console-aside .arbitre-mini .arbitre-photo,
body[data-ui="v2"] .console-aside .arbitre-mini .arbitre-photo-vide{
  width:52px;height:52px;border-radius:50%;object-fit:cover;flex:0 0 auto;
}
body[data-ui="v2"] .console-aside .arbitre-mini .arbitre-photo-vide{
  background:var(--navy);color:#fff;font-weight:600;
  display:flex;align-items:center;justify-content:center;
}

/* Liens vers la page pédigrée de l'arbitre (photo, nom, carte compacte). */
body[data-ui="v2"] .arbitre-link{color:inherit;text-decoration:none}
body[data-ui="v2"] .arbitre-hero h2 a{color:inherit;text-decoration:none}
body[data-ui="v2"] .arbitre-hero h2 a:hover{text-decoration:underline}
body[data-ui="v2"] .arbitre-link .arbitre-photo,
body[data-ui="v2"] .arbitre-link .arbitre-photo-vide{transition:box-shadow .15s ease,transform .06s ease}
body[data-ui="v2"] .arbitre-link:hover .arbitre-photo,
body[data-ui="v2"] .arbitre-link:hover .arbitre-photo-vide{box-shadow:0 6px 22px rgba(20,40,80,.30)}
body[data-ui="v2"] .console-aside a.arbitre-mini:hover b{text-decoration:underline}

/* Volet large (console arbitre, mesures d'instruction) : table d'actions
   conservée en layout auto, sinon le table-layout:fixed des .fold écrase
   les colonnes de boutons. */
body[data-ui="v2"] .fold.fold-wide>summary{font-size:15px}
body[data-ui="v2"] .fold.fold-wide table{table-layout:auto}
body[data-ui="v2"] .fold.fold-wide .grid.small{font-size:12.5px}

/* « Mesures d'instruction » : sortie des deux colonnes pour occuper toute la
   largeur de la grille (le rail de 360px n'écrase plus le tableau d'actions). */
body[data-ui="v2"] .console-grid>.fold-full{grid-column:1/-1;margin-bottom:18px}
/* La dernière colonne (boutons admettre/écarter/supprimer) tient sur une ligne. */
body[data-ui="v2"] .fold-full .grid th:last-child,
body[data-ui="v2"] .fold-full .grid td:last-child{white-space:nowrap}

/* ---------- Console arbitre « traitement de texte » ---------- */
/* La console occupe une page large, l'éditeur prend toute la hauteur utile. */
body[data-ui="v2"] .wrap:has(.wp){max-width:1180px}
body[data-ui="v2"] .wp{display:block;margin:0}
body[data-ui="v2"] .wp-bar{
  position:sticky;top:8px;z-index:30;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  background:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 13px;
  margin:0 0 14px;box-shadow:var(--shadow);
}
body[data-ui="v2"] .wp-back{color:var(--navy);text-decoration:none;font-weight:600;white-space:nowrap}
body[data-ui="v2"] .wp-title{flex:1 1 180px;min-width:120px;font-weight:600;color:var(--navy)}
body[data-ui="v2"] .wp-signataire{flex:0 1 220px}
body[data-ui="v2"] .wp-editor{
  display:block;width:100%;box-sizing:border-box;min-height:calc(100vh - 170px);
  font-family:Georgia,"Times New Roman",serif;font-size:15.5px;line-height:1.75;color:#1c2733;
  padding:34px 42px;border:1px solid var(--line);border-radius:12px;background:#fff;
  box-shadow:var(--shadow);resize:vertical;
}
body[data-ui="v2"] .wp-editor:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(28,50,87,.08)}
body[data-ui="v2"] .wp-foot{margin-top:18px}
body[data-ui="v2"] .h2-sub{font-weight:400;font-size:.78em}
/* Barre de mise en forme de l'editeur de sentence (titres, puces, gras, souligne). */
body[data-ui="v2"] .wp-tools{
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  margin:0 0 10px;padding:6px 10px;background:#fff;
  border:1px solid var(--line);border-radius:10px;box-shadow:var(--sh-soft);
}
body[data-ui="v2"] .wp-tool{
  min-width:30px;padding:5px 10px;border:1px solid #d6def0;border-radius:8px;
  background:#fff;color:var(--navy);font-weight:600;font-size:13px;cursor:pointer;
  font-family:var(--sans);line-height:1.2;
}
body[data-ui="v2"] .wp-tool:hover{border-color:var(--blue);color:var(--blue)}
body[data-ui="v2"] .wp-tools-sep{width:1px;align-self:stretch;background:var(--line);margin:0 3px}
body[data-ui="v2"] .wp-tools-hint{font-size:12px;margin-left:auto}
/* Rendu WYSIWYG dans l'editeur : titres sur 4 niveaux, puces, gras, souligne. */
body[data-ui="v2"] .wp-editor{overflow:auto}
body[data-ui="v2"] .wp-editor p{margin:0 0 .55em}
body[data-ui="v2"] .wp-editor h1,
body[data-ui="v2"] .wp-editor h2,
body[data-ui="v2"] .wp-editor h3,
body[data-ui="v2"] .wp-editor h4{color:var(--navy);font-family:Georgia,"Times New Roman",serif;line-height:1.3;margin:.7em 0 .35em}
body[data-ui="v2"] .wp-editor h1{font-size:1.5em;font-weight:700}
body[data-ui="v2"] .wp-editor h2{font-size:1.28em;font-weight:700}
body[data-ui="v2"] .wp-editor h3{font-size:1.12em;font-weight:700}
body[data-ui="v2"] .wp-editor h4{font-size:1em;font-weight:700;font-style:italic;color:#1c2733}
body[data-ui="v2"] .wp-editor ul{margin:.3em 0 .7em;padding-left:1.5em}
body[data-ui="v2"] .wp-editor li{margin:.15em 0;list-style:disc}

/* ---------- Prototype d'interface à onglets (réversible) ---------- */
/* Barre d'onglets ; en mode onglets la grille s'empile en une colonne et le JS
   masque les sections hors de l'onglet actif (classe .tab-off). */
body[data-ui="v2"] .tabbar{
  display:flex;gap:2px;flex-wrap:wrap;align-items:center;
  border-bottom:2px solid var(--line);margin:2px 0 18px;
}
body[data-ui="v2"] .tab-btn{
  appearance:none;border:none;background:none;cursor:pointer;font:inherit;font-weight:600;
  padding:10px 18px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-2px;
}
body[data-ui="v2"] .tab-btn:hover{color:var(--navy)}
body[data-ui="v2"] .tab-btn.is-active{color:var(--navy);border-bottom-color:var(--navy)}
body[data-ui="v2"] .tab-classic{margin-left:auto;font-size:12.5px;color:var(--muted);text-decoration:none}
body[data-ui="v2"] .tab-classic:hover{color:var(--navy);text-decoration:underline}
body[data-ui="v2"] .console-grid.tabbed{display:block}
body[data-ui="v2"] .console-grid.tabbed .console-main,
body[data-ui="v2"] .console-grid.tabbed .console-aside{display:contents}
body[data-ui="v2"] .console-grid.tabbed .tab-off{display:none !important}

/* Pastille « à faire » sur l'onglet concerné. */
body[data-ui="v2"] .tab-btn .tab-dot{
  display:inline-block;width:8px;height:8px;margin-left:7px;border-radius:50%;
  background:#e07a3e;vertical-align:middle;box-shadow:0 0 0 0 rgba(224,122,62,.55);
  animation:tabdot-pulse 1.8s ease-out infinite;
}
@keyframes tabdot-pulse{
  0%{box-shadow:0 0 0 0 rgba(224,122,62,.5)}
  70%{box-shadow:0 0 0 6px rgba(224,122,62,0)}
  100%{box-shadow:0 0 0 0 rgba(224,122,62,0)}
}

/* ---------- Bandeau « à faire » (rappel visuel, dégradé bleu foncé) ---------- */
/* Visible uniquement quand une action est attendue de l'utilisateur ; cliquable,
   il bascule sur l'onglet concerné (data-goto-tab). */
body[data-ui="v2"] .todo-banner{
  display:flex;align-items:center;gap:14px;width:100%;text-align:left;
  border:none;cursor:pointer;font:inherit;color:#fff;
  background:linear-gradient(135deg,#132341,#1c3257 55%,#2a4576);
  border-radius:14px;padding:15px 18px;margin:0 0 16px;
  box-shadow:0 8px 22px rgba(19,35,65,.28);
}
body[data-ui="v2"] .todo-banner:hover{filter:brightness(1.08)}
body[data-ui="v2"] .todo-ico{
  flex:0 0 auto;width:34px;height:34px;border-radius:50%;color:#fff;
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.14);
}
body[data-ui="v2"] .todo-ico .lic{width:19px;height:19px}
body[data-ui="v2"] .todo-text{flex:1 1 auto;line-height:1.4}
body[data-ui="v2"] .todo-text .todo-kicker{
  display:block;font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;
  opacity:.72;margin-bottom:2px;
}
body[data-ui="v2"] .todo-text b{font-weight:600}
body[data-ui="v2"] .todo-go{
  flex:0 0 auto;font-size:13px;font-weight:600;white-space:nowrap;
  background:rgba(255,255,255,.16);border-radius:999px;padding:7px 14px;
}

/* ---------- Blason de niveau d'identité (en-tete) ---------- */
/* Petit ecusson a cote du nom : couleur du orange (non verifie) au vert (verifie). */
.blason{display:inline-flex;align-items:center;justify-content:center;line-height:0;
  flex:0 0 auto;cursor:help;position:relative}
/* Infobulle CSS (fiable, instantanee) : le title/<title> natif ne se declenche pas
   de maniere fiable au survol d'une icone SVG. */
.blason::after{
  content:attr(data-tip);
  position:absolute;top:calc(100% + 8px);right:-4px;
  background:#1b2436;color:#fff;font-size:12px;line-height:1.35;font-weight:500;
  padding:7px 10px;border-radius:7px;width:max-content;max-width:240px;
  white-space:normal;text-align:left;
  box-shadow:0 6px 20px rgba(18,28,48,.22);
  opacity:0;transform:translateY(-3px);pointer-events:none;
  transition:opacity .12s ease, transform .12s ease;z-index:60}
.blason:hover::after,.blason:focus::after{opacity:1;transform:translateY(0)}
.blason:focus{outline:none}
.blason svg{width:16px;height:16px;display:block;
  filter:drop-shadow(0 1px 1px rgba(18,28,48,.18))}
.blason .shield{fill:currentColor}
.blason .ck{fill:none;stroke:#fff;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round}
.blason-none{color:#e0792e}     /* orange : identite non verifiee */
.blason-email{color:#d6a519}    /* ambre : adresse e-mail verifiee */
.blason-fort{color:#2faa57}     /* vert : identite verifiee (courrier) */
/* Le chevron de validation n'est plein qu'aux niveaux superieurs ; au niveau
   'none' on attenue la coche pour signaler l'absence de verification. */
.blason-none .ck{opacity:.45}

/* ---------- Sections de formulaire separees par une ligne ---------- */
/* Distingue nettement demandeur / objet / defendeur / autres parties. */
.form-sections .sub2{
  border-top:1px solid var(--line);
  margin-top:22px;padding-top:16px;
}
.form-sections .sub2:first-of-type{border-top:0;margin-top:0;padding-top:0}

/* ---------- Loquet bilatéral / consorité (distinction visuelle, UI seule) ---------- */
.head-badges{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.loquet{display:inline-block;font-size:11.5px;font-weight:600;line-height:1;
  padding:4px 9px;border-radius:999px;white-space:nowrap;letter-spacing:.2px}
.loquet-bi{background:#eef2f8;color:#46566e}            /* bilatéral : neutre, discret */
.loquet-multi{background:#e9f2ec;color:#1f6b46;
  box-shadow:inset 0 0 0 1px #bfe0cb}                    /* consorité : accent vert sobre */
/* Panneau « loquet » repliable (carte composition des parties) */
.loquet-panel > .loquet-summary{cursor:pointer;list-style:none;display:flex;
  align-items:center;gap:10px;flex-wrap:wrap}
.loquet-panel > .loquet-summary::-webkit-details-marker{display:none}
.loquet-panel > .loquet-summary::before{content:"\25B8";color:#8a97a8;
  transition:transform .15s ease;font-size:12px}
.loquet-panel[open] > .loquet-summary::before{transform:rotate(90deg)}
.loquet-summary .h2-inline{font-size:17px;font-weight:700;color:var(--navy)}
/* Loquet consorité dans les formulaires (ouvrir / proposer) : séparé comme une section */
.form-sections .form-loquet{border-top:1px solid var(--line);margin-top:22px;padding-top:16px}
/* Interrupteur on/off (CSS pur) : affiche les champs consorts quand activé */
.consort-toggle .switch-input{position:absolute;opacity:0;width:0;height:0}
.consort-toggle .switch-row{display:inline-flex;align-items:center;gap:11px;cursor:pointer;
  font-weight:600;color:var(--navy);font-size:14.5px;user-select:none}
.consort-toggle .switch{flex:0 0 auto;width:42px;height:24px;border-radius:999px;
  background:#cdd4df;position:relative;transition:background .15s ease}
.consort-toggle .switch::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;
  border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(18,28,48,.3);transition:transform .15s ease}
.consort-toggle .switch-input:checked + .switch-row .switch{background:var(--green)}
.consort-toggle .switch-input:checked + .switch-row .switch::after{transform:translateX(18px)}
.consort-toggle .switch-input:focus-visible + .switch-row .switch{outline:2px solid var(--navy);outline-offset:2px}
.consort-toggle .consort-fields{display:none;margin-top:14px}
.consort-toggle .switch-input:checked ~ .consort-fields{display:block}

/* ---------- Champ non modifiable affiché en texte (pas une boîte de saisie) ---------- */
.field-locked{margin:.15rem 0 .35rem;padding:0;font-weight:600;color:var(--navy);
  font-size:14.5px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.field-locked .lock{font-size:11px;font-weight:600;color:#1f6b46;background:#e9f2ec;
  border-radius:999px;padding:2px 8px}

/* ---------- Constructeur de consorts (ajout des parties une à une) ---------- */
.consort-builder{margin:.2rem 0 .6rem}
.consort-builder .cb-row{display:flex;gap:8px;margin-bottom:7px;flex-wrap:wrap}
.consort-builder .cb-row .inp{flex:1 1 140px;min-width:0}
.consort-builder .cb-add{flex:0 0 auto;white-space:nowrap}
.consort-builder .cb-list{list-style:none;padding:0;margin:8px 0 0}
.consort-builder .cb-list li{display:flex;align-items:center;justify-content:space-between;
  gap:10px;background:#f3f6fa;border:1px solid var(--line);border-radius:9px;
  padding:7px 11px;margin-bottom:6px;font-size:13px;color:var(--navy)}
.consort-builder .cb-del{border:none;background:transparent;cursor:pointer;
  font-size:18px;line-height:1;color:#bd382a;padding:0 2px}
.consort-builder .cb-list:empty{display:none}
