/* Onglet leonard -- squelette repris du standard portail (#47/#116) : .tree-group-header/.tree-cat (portal.css, commun) + volet retractable 260px (largeur standard, cf organisation.css pour la reference nested). */
.agent-tab { padding:0; height:100%; display:flex; flex-direction:column; }
main > #tab-leonard-slot { padding:0; overflow:hidden; }
main > #tab-leonard-slot section { padding:0; flex:1; min-height:0; display:flex; flex-direction:column; }

.agent-layout { display:grid; grid-template-columns:260px 1fr; flex:1; min-height:0; transition:grid-template-columns .2s; }
.agent-layout.sidebar-hidden { grid-template-columns:0 1fr; }
.agent-layout.sidebar-hidden #leonard-sidebar { visibility:hidden; border-right:none; }
#leonard-sidebar { background:rgba(20,20,23,.25); border-right:1px solid rgba(255,255,255,.1); overflow-y:auto; backdrop-filter:blur(24px) saturate(180%); }
#leonard-tree { list-style:none; margin:0; padding:.35rem 0; }

/* Groupe niveau 1 -- .tree-group-header customise (commun portal.css) */
.agent-group { margin-bottom:.15rem; }
.agent-group-header { padding:.5rem .85rem .4rem; align-items:center; text-transform:none; letter-spacing:normal; font-size:.78rem; display:flex; gap:.5rem; cursor:pointer; }
.agent-group-header:hover { background:rgba(var(--p-base-rgb),.06); }
.agent-group-header .agent-gicon { color:var(--p-base); flex-shrink:0; display:inline-flex; align-items:center; }
.agent-group-header .g-name { flex:1; }
.agent-group-header .g-chevron { margin-left:.4rem; transition:transform .15s; color:var(--p-base); }
.agent-group.collapsed .g-chevron { transform:rotate(-90deg); }
.agent-group.collapsed .agent-group-items { display:none; }
.agent-group-items { list-style:none; margin:0; padding:0; }
/* Groupe navigable (clic sur le libelle = section overview, clic chevron = repli seul) --
   titre categorie toujours dans la teinte principale du portail (comme Pepper) */
.agent-group-header.agent-navgroup .g-name { cursor:pointer; color:var(--p-base); }
.agent-group-header.agent-navgroup.active { background:rgba(var(--p-glow-rgb),.10); }
.agent-group-header.agent-navgroup.active .agent-gicon { color:var(--p-base); }
.agent-group-empty { padding:.3rem .85rem .5rem 1.6rem; font-size:.7rem; font-style:italic; color:#52525b; }
/* Entree solo sans sous-sections (ex: Vue d'ensemble) -- grisee tant que vide, redevient
   normale des que du contenu reel est branche (retirer le flag ready sur le noeud) */
.agent-group-header.agent-navgroup.is-empty .g-name { color:#52525b; }
.agent-group-header.agent-navgroup.is-empty .agent-gicon { color:#3f3f46; }

/* Sous-groupe niveau 2 (ex: Cady/Bricolage) -- meme mecanique, indentation +1.1rem */
.agent-subgroup { list-style:none; }
.agent-subgroup-header { display:flex; align-items:center; gap:.4rem; padding:.45rem .85rem .4rem 1.6rem; font-size:.8rem; color:#d4d4d8; cursor:pointer; }
.agent-subgroup-header:hover { color:var(--p-light); }
.agent-subgroup-header .agent-icon { color:var(--p-light); flex-shrink:0; display:inline-flex; align-items:center; }
.agent-subgroup-header .agent-label { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.agent-subgroup-header .g-chevron { margin-left:.4rem; transition:transform .15s; }
/* Sous-groupe sans page propre ET sans rien de reel a l'interieur : grise integralement */
.agent-subgroup-header.is-empty { color:#52525b; }
.agent-subgroup-header.is-empty .agent-icon { color:#3f3f46; }
.agent-subgroup.collapsed .g-chevron { transform:rotate(-90deg); }
.agent-subgroup.collapsed .agent-subgroup-items { display:none; }
.agent-subgroup-items { list-style:none; margin:0; padding:0; }
.agent-subgroup-items .tree-cat { padding-left:2.7rem; }

.agent-group-items .tree-cat { padding-left:1.6rem; font-size:.8rem; color:#d4d4d8; text-transform:none; letter-spacing:normal; }
.agent-icon { color:var(--p-light); flex-shrink:0; display:inline-flex; align-items:center; }
.tree-cat.active .agent-icon { color:var(--p-base); }
.agent-label { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* Sous-categorie sans contenu reel -- titre grise, redevient normal quand la sous-categorie recoit du contenu (retirer is-empty) */
.tree-cat.is-empty .agent-label { color:#52525b; }
.tree-cat.is-empty .agent-icon { color:#3f3f46; }

#leonard-main { display:flex; flex-direction:column; background:transparent; position:relative; overflow:hidden; min-height:0; }

#leonard-content { flex:1; overflow-y:auto; padding:1rem 1.2rem; display:flex; flex-direction:column; gap:.85rem; }
.agent-empty { color:#64748b; font-style:italic; padding:1rem; }

/* ==========================================================================
   Léonard — pipeline Idées -> Projets (contenu réel des vues). Ajout 2026-07-17.
   Réutilise la teinte portail (--p-base/--p-light/--p-base-rgb) + gris neutres.
   ========================================================================== */
.leo-loading, .leo-err { padding:1rem; color:#a1a1aa; font-style:italic; }
.leo-err { color:#f87171; font-style:normal; display:flex; gap:.4rem; align-items:center; }
.leo-dim { color:#71717a; font-size:.72rem; }

.leo-head { border-bottom:1px solid rgba(255,255,255,.08); padding-bottom:.5rem; margin-bottom:.2rem; }
.leo-head h2 { font-size:1.02rem; font-weight:600; margin:0; display:flex; align-items:center; gap:.45rem; color:#f4f4f5; }
.leo-head h2 svg { color:var(--p-base); }
.leo-sub { margin:.25rem 0 0; font-size:.78rem; color:#a1a1aa; }

/* Tuiles KPI */
.leo-tiles { display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:.6rem; }
.leo-tile { display:flex; flex-direction:column; align-items:flex-start; gap:.15rem; padding:.7rem .85rem;
  background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.08); border-radius:10px; }
.leo-tile[role="button"] { cursor:pointer; transition:border-color .15s, background .15s; }
.leo-tile[role="button"]:hover { border-color:rgba(var(--p-base-rgb),.5); background:rgba(var(--p-base-rgb),.07); }
.leo-tile-ic { color:var(--p-light); }
.leo-tile-n { font-size:1.5rem; font-weight:700; color:#f4f4f5; line-height:1; }
.leo-tile-l { font-size:.72rem; color:#a1a1aa; text-transform:uppercase; letter-spacing:.03em; }

/* Cartes / tables */
.leo-card { background:rgba(255,255,255,.02); border:1px solid rgba(255,255,255,.08); border-radius:10px; overflow:hidden; }
.leo-card-h { display:flex; align-items:center; gap:.45rem; padding:.55rem .8rem; font-weight:600; font-size:.85rem;
  color:#e4e4e7; border-bottom:1px solid rgba(255,255,255,.06); }
.leo-card-h svg { color:var(--p-base); }
.leo-card-h .leo-btn-sm { margin-left:auto; }
.leo-empty { padding:.9rem; color:#71717a; font-style:italic; font-size:.82rem; }
.leo-empty a { color:var(--p-light); cursor:pointer; text-decoration:underline; }

.leo-table { width:100%; border-collapse:collapse; font-size:.82rem; }
.leo-table th { text-align:left; padding:.4rem .8rem; color:#8b8b93; font-weight:500; font-size:.72rem;
  text-transform:uppercase; letter-spacing:.03em; border-bottom:1px solid rgba(255,255,255,.06); }
.leo-table td { padding:.45rem .8rem; border-bottom:1px solid rgba(255,255,255,.04); color:#d4d4d8; }
.leo-row { cursor:pointer; transition:background .12s; }
.leo-row:hover { background:rgba(var(--p-base-rgb),.06); }
.leo-code { font-family:ui-monospace,Menlo,Consolas,monospace; color:var(--p-light); font-weight:600; }

/* Statut projet (badge) */
.leo-pstatus { font-size:.7rem; padding:.1rem .45rem; border-radius:6px; border:1px solid transparent; white-space:nowrap; }
.ps-cadrage     { color:#93c5fd; border-color:rgba(147,197,253,.35); background:rgba(147,197,253,.1); }
.ps-conception  { color:#c4b5fd; border-color:rgba(196,181,253,.35); background:rgba(196,181,253,.1); }
.ps-dev         { color:#fcd34d; border-color:rgba(252,211,77,.35);  background:rgba(252,211,77,.1); }
.ps-test        { color:#fdba74; border-color:rgba(253,186,116,.35); background:rgba(253,186,116,.1); }
.ps-livre       { color:#86efac; border-color:rgba(134,239,172,.35); background:rgba(134,239,172,.1); }
.ps-maintenance { color:#67e8f9; border-color:rgba(103,232,249,.35); background:rgba(103,232,249,.1); }
.ps-pause       { color:#a1a1aa; border-color:rgba(161,161,170,.35); background:rgba(161,161,170,.1); }
.ps-archive     { color:#71717a; border-color:rgba(113,113,122,.3);  background:rgba(113,113,122,.08); }

/* Boutons */
.leo-btn { display:inline-flex; align-items:center; gap:.35rem; padding:.4rem .7rem; font-size:.8rem; cursor:pointer;
  background:rgba(255,255,255,.05); color:#e4e4e7; border:1px solid rgba(255,255,255,.12); border-radius:8px;
  transition:background .15s, border-color .15s; }
.leo-btn:hover { background:rgba(255,255,255,.09); border-color:rgba(255,255,255,.2); }
.leo-btn svg { width:14px; height:14px; }
.leo-btn-sm { padding:.25rem .55rem; font-size:.74rem; }
.leo-btn-primary { background:rgba(var(--p-base-rgb),.16); border-color:rgba(var(--p-base-rgb),.5); color:#fff; }
.leo-btn-primary:hover { background:rgba(var(--p-base-rgb),.28); }
.leo-btn-icon { padding:.4rem .5rem; }
.leo-danger { color:#f87171; border-color:rgba(248,113,113,.3); }
.leo-danger:hover { background:rgba(248,113,113,.14); border-color:rgba(248,113,113,.5); }
.leo-btn:disabled { opacity:.5; cursor:wait; }

/* Champs de formulaire */
.leo-input { width:100%; padding:.45rem .6rem; font-size:.82rem; font-family:inherit; color:#f4f4f5;
  background:rgba(0,0,0,.28); border:1px solid rgba(255,255,255,.14); border-radius:8px; box-sizing:border-box; }
.leo-input:focus { outline:none; border-color:rgba(var(--p-base-rgb),.6); box-shadow:0 0 0 2px rgba(var(--p-base-rgb),.12); }
textarea.leo-input { resize:vertical; line-height:1.45; }
.leo-lbl { display:flex; flex-direction:column; gap:.2rem; font-size:.72rem; color:#a1a1aa; }
.leo-lbl select { padding:.4rem .5rem; font-size:.8rem; color:#f4f4f5; background:rgba(0,0,0,.28);
  border:1px solid rgba(255,255,255,.14); border-radius:8px; }
.leo-form-row { display:flex; flex-wrap:wrap; gap:.6rem; align-items:flex-end; }
.leo-form-row .leo-btn { margin-left:auto; }

/* Formulaire idée + liste */
.leo-idea-form { display:flex; flex-direction:column; gap:.55rem; padding:.85rem; margin-bottom:.4rem;
  background:rgba(var(--p-base-rgb),.05); border:1px solid rgba(var(--p-base-rgb),.18); border-radius:10px; }
.leo-ideas-list { display:flex; flex-direction:column; gap:.6rem; }
.leo-idea { padding:.7rem .85rem; background:rgba(255,255,255,.02); border:1px solid rgba(255,255,255,.09);
  border-left:3px solid #52525b; border-radius:9px; }
.leo-idea-top { display:flex; align-items:center; gap:.5rem; justify-content:space-between; }
.leo-idea-title { font-weight:600; color:#f4f4f5; font-size:.9rem; }
.leo-idea-desc { margin:.4rem 0; font-size:.82rem; color:#c4c4cc; }
.leo-idea-meta { display:flex; flex-wrap:wrap; align-items:center; gap:.35rem; margin-top:.35rem; }
.leo-idea-actions { display:flex; flex-wrap:wrap; align-items:center; gap:.4rem; margin-top:.55rem;
  padding-top:.55rem; border-top:1px solid rgba(255,255,255,.05); }
.leo-idea-actions .leo-danger { margin-left:auto; }
.leo-idea-status { padding:.35rem .5rem; font-size:.78rem; color:#e4e4e7; background:rgba(0,0,0,.28);
  border:1px solid rgba(255,255,255,.14); border-radius:8px; }

/* Bordure gauche colorée selon le statut de l'idée */
.leo-idea.st-etudier   { border-left-color:#93c5fd; }
.leo-idea.st-validee   { border-left-color:#86efac; }
.leo-idea.st-convertie { border-left-color:var(--p-base); opacity:.72; }
.leo-idea.st-rejetee   { border-left-color:#71717a; opacity:.6; }
.leo-idea.st-veille    { border-left-color:#fcd34d; }

.leo-chip { display:inline-flex; align-items:center; gap:.2rem; font-size:.7rem; padding:.12rem .45rem;
  border-radius:6px; background:rgba(255,255,255,.06); color:#c4c4cc; border:1px solid rgba(255,255,255,.08); }
.leo-chip.leo-star { color:#fcd34d; letter-spacing:.05em; }
.leo-status.st-brut      { color:#d4d4d8; }
.leo-status.st-etudier   { color:#93c5fd; border-color:rgba(147,197,253,.3); }
.leo-status.st-validee   { color:#86efac; border-color:rgba(134,239,172,.3); }
.leo-status.st-convertie { color:var(--p-light); border-color:rgba(var(--p-base-rgb),.4); }
.leo-status.st-rejetee   { color:#a1a1aa; }
.leo-status.st-veille    { color:#fcd34d; border-color:rgba(252,211,77,.3); }

/* Fiche projet */
.leo-code-badge { font-family:ui-monospace,Menlo,Consolas,monospace; font-size:.82rem; color:#0b0b0d;
  background:var(--p-base); padding:.08rem .4rem; border-radius:6px; font-weight:700; vertical-align:middle; }
.leo-fiche { display:flex; flex-direction:column; gap:.6rem; padding:.85rem; background:rgba(255,255,255,.02);
  border:1px solid rgba(255,255,255,.08); border-radius:10px; }
.leo-field { display:flex; flex-direction:column; gap:.25rem; font-size:.74rem; color:#a1a1aa; flex:1; min-width:150px; }
.leo-field > span { font-weight:500; }
.leo-fiche-actions { display:flex; align-items:center; gap:.7rem; flex-wrap:wrap; margin-top:.2rem; }
.leo-fiche-actions .leo-danger { margin-left:auto; }

.leo-sec-quick-h { display:flex; align-items:center; gap:.4rem; font-size:.75rem; color:#8b8b93;
  text-transform:uppercase; letter-spacing:.04em; margin-top:.3rem; }
.leo-sec-quick-h svg { color:var(--p-light); }
.leo-sec-quick { display:flex; flex-wrap:wrap; gap:.45rem; }
.leo-sec-chip { display:inline-flex; align-items:center; gap:.35rem; padding:.4rem .65rem; font-size:.78rem; cursor:pointer;
  color:#c4c4cc; background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.1); border-radius:8px; transition:.15s; }
.leo-sec-chip:hover { border-color:rgba(var(--p-base-rgb),.5); color:#fff; background:rgba(var(--p-base-rgb),.08); }
.leo-sec-chip svg { color:var(--p-light); }
.leo-sec-chip.filled { border-color:rgba(var(--p-base-rgb),.4); }
.leo-sec-chip .leo-dot { color:#86efac; font-size:.6rem; }

/* Sous-section markdown (aperçu / édition) */
.leo-sec-head { display:flex; align-items:flex-start; justify-content:space-between; gap:.6rem; flex-wrap:wrap; }
.leo-sec-tabs { display:flex; gap:.2rem; background:rgba(0,0,0,.25); border:1px solid rgba(255,255,255,.1);
  border-radius:8px; padding:.15rem; }
.leo-tab { display:inline-flex; align-items:center; gap:.3rem; padding:.3rem .6rem; font-size:.76rem; cursor:pointer;
  color:#a1a1aa; background:transparent; border:none; border-radius:6px; }
.leo-tab.active { background:rgba(var(--p-base-rgb),.2); color:#fff; }
.leo-sec-body { display:flex; flex-direction:column; }
.leo-edit-actions { display:flex; align-items:center; gap:.6rem; margin-top:.5rem; }
.leo-ta { font-family:ui-monospace,Menlo,Consolas,monospace; font-size:.82rem; line-height:1.5; }

/* Rendu markdown */
.leo-md { font-size:.86rem; color:#d4d4d8; line-height:1.6; }
.leo-md .leo-md-empty { color:#71717a; font-style:italic; }
.leo-md h1.leo-h { font-size:1.15rem; }
.leo-md h2.leo-h { font-size:1.02rem; }
.leo-md h3.leo-h, .leo-md h4.leo-h { font-size:.92rem; }
.leo-md .leo-h { color:#f4f4f5; margin:.8rem 0 .3rem; font-weight:600; }
.leo-md p { margin:.35rem 0; }
.leo-md .leo-ul { margin:.35rem 0; padding-left:1.3rem; }
.leo-md .leo-ul li { margin:.15rem 0; }
.leo-md code { font-family:ui-monospace,Menlo,Consolas,monospace; font-size:.82em; background:rgba(255,255,255,.08);
  padding:.05rem .3rem; border-radius:4px; color:#fcd34d; }
.leo-md pre.leo-code { background:rgba(0,0,0,.35); border:1px solid rgba(255,255,255,.08); border-radius:8px;
  padding:.7rem .85rem; overflow-x:auto; font-family:ui-monospace,Menlo,Consolas,monospace; font-size:.8rem; color:#e4e4e7; }
.leo-md a { color:var(--p-light); text-decoration:underline; }

/* ==========================================================================
   Léonard — assistance LLM sur le cahier des charges. Ajout 2026-07-17 (v2).
   Bouton Développer (proposition) + fenêtre « Demander à Léonard » (chat).
   ========================================================================== */
.leo-assist-bar { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem; margin:.1rem 0 .2rem; }
.leo-assist-hint { margin-left:auto; opacity:.8; }
.leo-btn-ai { background:linear-gradient(135deg, rgba(var(--p-base-rgb),.22), rgba(var(--p-base-rgb),.10));
  border-color:rgba(var(--p-base-rgb),.5); color:#fff; }
.leo-btn-ai:hover { background:linear-gradient(135deg, rgba(var(--p-base-rgb),.34), rgba(var(--p-base-rgb),.16)); }
.leo-btn-ai svg { color:var(--p-light); }

/* Panneau de proposition (bouton Développer) */
.leo-assist-panel { border:1px solid rgba(var(--p-base-rgb),.28); border-radius:10px;
  background:rgba(var(--p-base-rgb),.05); overflow:hidden; }
.leo-ai-thinking { display:flex; align-items:center; gap:.5rem; padding:.8rem .9rem; font-size:.84rem; color:#c4c4cc; }
.leo-ai-head { display:flex; align-items:center; gap:.5rem; padding:.5rem .8rem; font-size:.84rem; color:#e4e4e7;
  border-bottom:1px solid rgba(255,255,255,.08); background:rgba(255,255,255,.03); }
.leo-ai-head svg { color:var(--p-light); }
.leo-ai-acts { margin-left:auto; display:flex; gap:.3rem; flex-wrap:wrap; }
.leo-ai-out { padding:.7rem .9rem; max-height:46vh; overflow-y:auto; }

/* Spinner */
.leo-spin { display:inline-block; width:13px; height:13px; border:2px solid rgba(var(--p-base-rgb),.3);
  border-top-color:var(--p-base); border-radius:50%; animation:leo-spin .7s linear infinite; vertical-align:-2px; }
@keyframes leo-spin { to { transform:rotate(360deg); } }

/* Fenêtre modale « Demander à Léonard » */
.leo-modal-ov { position:fixed; inset:0; z-index:9999; background:rgba(0,0,0,.55); backdrop-filter:blur(3px);
  display:flex; align-items:center; justify-content:center; padding:2vh 2vw; }
.leo-modal { width:min(760px,96vw); height:min(80vh,720px); display:flex; flex-direction:column;
  background:#161619; border:1px solid rgba(var(--p-base-rgb),.35); border-radius:14px; overflow:hidden;
  box-shadow:0 24px 70px rgba(0,0,0,.6); }
.leo-modal-head { display:flex; align-items:center; gap:.45rem; padding:.7rem .9rem; font-size:.9rem; color:#f4f4f5;
  border-bottom:1px solid rgba(255,255,255,.09); background:rgba(var(--p-base-rgb),.08); }
.leo-modal-head svg { color:var(--p-light); }
.leo-modal-head .leo-dim { font-weight:400; }
.leo-modal-x { margin-left:auto; }
.leo-chat-msgs { flex:1; overflow-y:auto; padding:.9rem; display:flex; flex-direction:column; gap:.7rem; }
.leo-chat-hint { font-size:.8rem; color:#a1a1aa; background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.07);
  border-radius:9px; padding:.6rem .7rem; display:flex; gap:.4rem; align-items:flex-start; }
.leo-chat-hint svg { color:var(--p-light); flex-shrink:0; margin-top:.1rem; }

/* Bulles */
.leo-bubble { max-width:88%; display:flex; flex-direction:column; gap:.3rem; }
.leo-bubble-u { align-self:flex-end; align-items:flex-end; }
.leo-bubble-l { align-self:flex-start; align-items:flex-start; }
.leo-bubble-who { font-size:.68rem; text-transform:uppercase; letter-spacing:.04em; color:#8b8b93; display:flex; align-items:center; gap:.25rem; }
.leo-bubble-who svg { color:var(--p-light); width:12px; height:12px; }
.leo-bubble-body { font-size:.85rem; line-height:1.55; padding:.55rem .75rem; border-radius:12px; color:#e4e4e7; }
.leo-bubble-u .leo-bubble-body { background:rgba(var(--p-base-rgb),.18); border:1px solid rgba(var(--p-base-rgb),.3);
  border-bottom-right-radius:4px; white-space:pre-wrap; }
.leo-bubble-l .leo-bubble-body { background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.08);
  border-bottom-left-radius:4px; }
.leo-bubble-l .leo-bubble-body.leo-md p:first-child { margin-top:0; }
.leo-bubble-l .leo-bubble-body.leo-md p:last-child { margin-bottom:0; }
.leo-bubble-acts { display:flex; }

.leo-chat-input { display:flex; gap:.5rem; padding:.7rem .8rem; border-top:1px solid rgba(255,255,255,.09);
  background:rgba(0,0,0,.2); align-items:flex-end; }
.leo-chat-input textarea { flex:1; resize:none; max-height:140px; }
.leo-chat-input .leo-btn-primary { padding:.5rem .7rem; }
