
/* ══ CODE GRAPH v2.1 — Aligné sur landing-institutional.css (Carta Design System) ══ */

#avcGraphMainView{
  display:flex;flex-direction:column;height:100%;overflow:hidden;
  /* ── Mapping direct sur les tokens institutionnels ── */
  --cg-bg:#ffffff;
  --cg-bg-canvas:#FAFAFC;
  --cg-text:#0a0a0a;
  --cg-text-dim:#4a4a52;
  --cg-text-dimmer:#8a8a92;
  --cg-panel-bg:#ffffff;
  --cg-panel-border:#E4E4EC;
  --cg-node-bg:#ffffff;
  --cg-node-border:#E4E4EC;
  --cg-node-text:#0a0a0a;
  --cg-edge:#d8d8de;
  --cg-edge-hi:#6366f1;
  --cg-grid:#F5F5F8;
  --cg-metric-bg:#F5F5F8;
  --cg-issue-bg:#FBF3E7;
  --cg-issue-border:#f0dcb8;
  --cg-issue-text:#8a5a13;
  --cg-issue-crit-bg:#FBEAEA;
  --cg-issue-crit-border:#f0c3c3;
  --cg-issue-crit-text:#9c2b2b;
  --cg-issue-info-bg:var(--ink-accent-pale, #F3F2FE);
  --cg-issue-info-border:var(--ink-accent-light, #E4E3FB);
  --cg-issue-info-text:var(--ink-accent-dark, #4f46e5);
  --cg-input-bg:#F5F5F8;
  --cg-input-border:#E4E4EC;
  --cg-corner:#b0b0ba;
  --cg-dot:#d8d8de;
  background:var(--cg-bg);
  font-family:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  color:var(--cg-text);
}
body:not(.avc-light-mode) #avcGraphMainView{
  --cg-bg:#0a0a0a;
  --cg-bg-canvas:#0a0a0a;
  --cg-text:#f2f2f5;
  --cg-text-dim:rgba(255,255,255,.62);
  --cg-text-dimmer:rgba(255,255,255,.4);
  --cg-panel-bg:#14151a;
  --cg-panel-border:rgba(255,255,255,.1);
  --cg-node-bg:#191a21;
  --cg-node-border:rgba(255,255,255,.14);
  --cg-node-text:#f2f2f5;
  --cg-edge:rgba(255,255,255,.16);
  --cg-edge-hi:#8b5cf6;
  --cg-grid:rgba(255,255,255,.045);
  --cg-metric-bg:rgba(255,255,255,.04);
  --cg-issue-bg:rgba(217,150,30,.1);
  --cg-issue-border:rgba(217,150,30,.28);
  --cg-issue-text:#f0c26a;
  --cg-issue-crit-bg:rgba(220,50,50,.1);
  --cg-issue-crit-border:rgba(220,50,50,.28);
  --cg-issue-crit-text:#f19a9a;
  --cg-issue-info-bg:rgba(99,102,241,.12);
  --cg-issue-info-border:rgba(99,102,241,.3);
  --cg-issue-info-text:#a5b4fc;
  --cg-input-bg:rgba(255,255,255,.04);
  --cg-input-border:rgba(255,255,255,.14);
  --cg-corner:rgba(255,255,255,.28);
  --cg-dot:rgba(255,255,255,.14);
}

#avcGraphMainView * { box-sizing:border-box; }

/* ── Toolbar — une seule ligne, scroll horizontal si nécessaire ── */
.cg-toolbar{
  display:flex;align-items:center;gap:8px;padding:14px 20px;
  border-bottom:1px solid var(--cg-panel-border);flex-shrink:0;
  background:var(--cg-panel-bg);
  flex-wrap:nowrap;              /* ✅ FIX — plus de retour à la ligne */
  overflow-x:auto;               /* ✅ FIX — scroll horizontal si ça dépasse */
  overflow-y:hidden;
  scrollbar-width:thin;
  scrollbar-color:var(--cg-panel-border) transparent;
}
.cg-toolbar::-webkit-scrollbar{ height:6px; }
.cg-toolbar::-webkit-scrollbar-thumb{ background:var(--cg-panel-border); border-radius:3px; }
.cg-toolbar::-webkit-scrollbar-track{ background:transparent; }

/* Les boutons/chips ne doivent jamais se compresser ni se casser en plusieurs lignes */
.cg-toolbar > *{ flex-shrink:0; }
.cg-toolbar select,
.cg-toolbar input,
.cg-btn,
.cg-chip,
.cg-mode-toggle{ white-space:nowrap; }

/* ── Buttons — alignés sur .lp-btn (radius 4px, letter-spacing, transitions) ── */
.cg-btn{padding:9px 16px;border-radius:4px;border:1px solid var(--cg-panel-border);
  background:var(--cg-input-bg);color:var(--cg-text-dim);font-size:.8rem;font-weight:600;
  cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:7px;white-space:nowrap;
  letter-spacing:-.005em;
  transition:background .18s cubic-bezier(.4,0,.2,1),color .18s cubic-bezier(.4,0,.2,1),
    border-color .18s cubic-bezier(.4,0,.2,1),transform .18s cubic-bezier(.4,0,.2,1);}
.cg-btn:active{transform:scale(.97);}
.cg-btn:hover{background:#EDEDF2;border-color:#d4d4e0;color:var(--cg-text);}
body:not(.avc-light-mode) .cg-btn:hover{background:rgba(255,255,255,.08);color:#fff;}

.cg-btn.accent{border-color:var(--ink-accent-light,#E4E3FB);background:var(--ink-accent-pale,#F3F2FE);color:var(--ink-accent-dark,#4f46e5);}
.cg-btn.accent:hover{background:var(--ink-accent-light,#E4E3FB);}
.cg-btn.danger{border-color:#f0c3c3;background:#FBEAEA;color:#9c2b2b;}
.cg-btn.danger:hover{background:#f7d9d9;}
.cg-btn.success{border-color:#bfe3cf;background:#EBF7F0;color:#146c43;}
.cg-btn.success:hover{background:#d7eee0;}

body:not(.avc-light-mode) .cg-btn.accent{background:rgba(139,92,246,.12);border-color:rgba(139,92,246,.3);color:#c4b5fd;}
body:not(.avc-light-mode) .cg-btn.danger{background:rgba(248,113,113,.1);border-color:rgba(248,113,113,.25);color:#f87171;}
body:not(.avc-light-mode) .cg-btn.success{background:rgba(52,211,153,.1);border-color:rgba(52,211,153,.25);color:#34d399;}

.cg-chip{font-size:.68rem;font-weight:700;padding:4px 10px;border-radius:20px;background:var(--cg-metric-bg);
  color:var(--cg-text-dim);border:1px solid var(--cg-panel-border);letter-spacing:.01em;}

/* ── Body / canvas ── */
.cg-body{flex:1;display:flex;min-height:0;}
.cg-canvas-wrap{flex:1;position:relative;overflow:hidden;background:
  radial-gradient(var(--cg-dot) 1.3px,transparent 1.3px) 0 0/16px 16px,
  var(--cg-bg-canvas);}
#cgSvg{width:100%;height:100%;cursor:grab;display:block;}
#cgSvg:active{cursor:grabbing;}

.cg-zoom-controls{position:absolute;bottom:18px;right:18px;display:flex;flex-direction:column;gap:3px;
  background:var(--cg-panel-bg);border:1px solid var(--cg-panel-border);border-radius:8px;padding:4px;
  box-shadow:0 6px 16px rgba(10,10,10,.07),0 1px 3px rgba(10,10,10,.05);}
.cg-zoom-controls button{width:30px;height:30px;border:none;background:transparent;border-radius:5px;
  color:var(--cg-text-dim);cursor:pointer;font-size:.72rem;transition:background .15s,color .15s;}
.cg-zoom-controls button:hover{background:var(--cg-metric-bg);color:var(--cg-text);}

/* ── Nodes ── */
.cg-node-circle{fill:var(--cg-node-bg);stroke:var(--cg-node-accent,#8a8a92);stroke-width:2.2;
  filter:drop-shadow(0 2px 5px rgba(10,10,10,.08));transition:stroke-width .12s;cursor:grab;}
.cg-node:hover .cg-node-circle{stroke-width:3;}
.cg-node-selected .cg-node-circle{stroke:#6366f1;stroke-width:3.4;
  filter:drop-shadow(0 0 10px rgba(99,102,241,.35));}
.cg-node-orphan .cg-node-circle{stroke-dasharray:5 3;stroke:#c0392b;}
.cg-node-label{fill:var(--cg-node-text);font:600 10.5px 'Inter',sans-serif;pointer-events:none;letter-spacing:-.01em;}
.cg-note-dot{fill:#f2703e;stroke:var(--cg-bg);stroke-width:1.5;}

/* ── Edges ── */
.cg-edge{stroke:var(--cg-edge);stroke-width:1.4;fill:none;}
.cg-edge-highlight{stroke:var(--cg-edge-hi);stroke-width:2.2;}
.cg-edge-uncertain{stroke-dasharray:4 3;stroke:#c8871f;}

/* ── Side panel — aligné .lp-pillar / cartes institutionnelles ── */
.cg-side{width:360px;flex-shrink:0;border-left:1px solid var(--cg-panel-border);
  overflow-y:auto;background:var(--cg-panel-bg);padding:20px;}
.cg-side h4{font-family:'Inter',sans-serif;font-size:.68rem;font-weight:700;color:var(--cg-text-dim);
  text-transform:uppercase;letter-spacing:.08em;margin:18px 0 10px;display:flex;align-items:center;gap:8px;}
.cg-side h4:first-child{margin-top:0;}
.cg-side h4::before{content:'';width:8px;height:8px;background:linear-gradient(135deg,#6366f1 0%,#8b5cf6 100%);
  clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);flex-shrink:0;}

.cg-metric{display:flex;justify-content:space-between;padding:8px 12px;border-radius:6px;
  background:var(--cg-metric-bg);margin-bottom:6px;font-size:.8rem;color:var(--cg-text-dim);
  border:1px solid var(--cg-panel-border);}
.cg-metric b{color:var(--cg-text);font-weight:700;}

.cg-issue{padding:11px 13px;border-radius:8px;margin-bottom:8px;font-size:.8rem;line-height:1.6;
  border:1px solid var(--cg-issue-border);background:var(--cg-issue-bg);color:var(--cg-issue-text);}
.cg-issue.crit{border-color:var(--cg-issue-crit-border);background:var(--cg-issue-crit-bg);color:var(--cg-issue-crit-text);}
.cg-issue.info{border-color:var(--cg-issue-info-border);background:var(--cg-issue-info-bg);color:var(--cg-issue-info-text);}

.cg-ref-line{display:flex;gap:8px;padding:7px 10px;border-radius:6px;font-size:.75rem;
  cursor:pointer;color:var(--cg-text-dim);font-family:'SFMono-Regular',Consolas,monospace;
  transition:background .15s;}
.cg-ref-line:hover{background:var(--cg-metric-bg);color:var(--cg-text);}

.cg-conf{font-size:.62rem;font-weight:700;padding:1px 7px;border-radius:5px;}
.cg-conf-high{background:#EBF7F0;color:#146c43;}
.cg-conf-med{background:#FBF3E7;color:#8a5a13;}
.cg-conf-low{background:#FBEAEA;color:#9c2b2b;}
body:not(.avc-light-mode) .cg-conf-high{background:rgba(52,211,153,.15);color:#34d399;}
body:not(.avc-light-mode) .cg-conf-med{background:rgba(217,150,30,.15);color:#f0c26a;}
body:not(.avc-light-mode) .cg-conf-low{background:rgba(220,38,38,.15);color:#f87171;}

.cg-plan-step{display:flex;gap:10px;padding:10px 12px;border-radius:8px;background:var(--cg-metric-bg);
  margin-bottom:6px;font-size:.8rem;color:var(--cg-text-dim);border:1px solid var(--cg-panel-border);}
.cg-plan-step .n{width:20px;height:20px;border-radius:50%;background:var(--ink-accent-pale,#F3F2FE);
  color:var(--ink-accent-dark,#4f46e5);font-size:.62rem;font-weight:700;display:flex;align-items:center;
  justify-content:center;flex-shrink:0;}
body:not(.avc-light-mode) .cg-plan-step .n{background:rgba(139,92,246,.15);color:#c4b5fd;}

.cg-diff-block{background:var(--cg-metric-bg);border:1px solid var(--cg-panel-border);border-radius:8px;
  padding:10px 12px;margin-bottom:8px;font-size:.72rem;font-family:'SFMono-Regular',Consolas,monospace;}
.cg-diff-old{color:#9c2b2b;text-decoration:line-through;opacity:.8;}
.cg-diff-new{color:#146c43;}
body:not(.avc-light-mode) .cg-diff-old{color:#f87171;}
body:not(.avc-light-mode) .cg-diff-new{color:#34d399;}

/* ── Instant restructure ── */
.cg-restructure-group{margin-bottom:12px;border:1px solid var(--cg-panel-border);border-radius:8px;
  padding:11px 13px;background:var(--cg-metric-bg);}
.cg-restructure-dir{font-size:.75rem;font-weight:700;color:var(--ink-accent-dark,#4f46e5);margin-bottom:8px;
  display:flex;align-items:center;gap:6px;}
body:not(.avc-light-mode) .cg-restructure-dir{color:#c4b5fd;}
.cg-restructure-dir::before{content:'\f07b';font-family:'Font Awesome 6 Free';font-weight:900;font-size:.68rem;}
.cg-restructure-item{padding:7px 0;border-top:1px solid var(--cg-panel-border);font-size:.7rem;
  font-family:'SFMono-Regular',Consolas,monospace;}
.cg-restructure-item:first-child{border-top:none;}

.cg-chip-isolated{
  background:var(--ink-accent-pale,#F3F2FE);border-color:var(--ink-accent-light,#E4E3FB);
  color:var(--ink-accent-dark,#4f46e5);
  display:flex;align-items:center;gap:6px;font-weight:700;
  animation:cgPulseIn .25s ease;
}
body:not(.avc-light-mode) .cg-chip-isolated{
  background:rgba(139,92,246,.15);border-color:rgba(139,92,246,.35);color:#c4b5fd;
}
.cg-badge-exit{
  background:rgba(79,70,229,.12);border:none;border-radius:50%;
  width:16px;height:16px;display:flex;align-items:center;justify-content:center;
  cursor:pointer;color:inherit;font-size:8px;padding:0;
}
.cg-badge-exit:hover{ background:rgba(79,70,229,.25); }
@keyframes cgPulseIn{ from{transform:scale(.85);opacity:0;} to{transform:scale(1);opacity:1;} }


.cg-mode-toggle{display:flex;background:var(--cg-input-bg);border:1px solid var(--cg-input-border);border-radius:6px;padding:2px;gap:2px;}
.cg-mode-btn{padding:6px 12px;border:none;background:transparent;border-radius:5px;color:var(--cg-text-dim);
  font-size:.75rem;font-weight:600;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:6px;
  transition:background .15s,color .15s;}
.cg-mode-btn.active{background:var(--cg-panel-bg);color:var(--ink-accent-dark,#4f46e5);box-shadow:0 1px 3px rgba(10,10,10,.08);}
body:not(.avc-light-mode) .cg-mode-btn.active{color:#c4b5fd;}
.cg-node-rect{fill:var(--cg-node-bg);stroke:var(--cg-node-accent,#8a8a92);stroke-width:2;rx:8;ry:8;
  filter:drop-shadow(0 2px 5px rgba(10,10,10,.08));cursor:grab;}
.cg-node.cg-func-node:hover .cg-node-rect{stroke-width:2.6;}
.cg-func-node.cg-node-selected .cg-node-rect{stroke:#6366f1;stroke-width:3;filter:drop-shadow(0 0 10px rgba(99,102,241,.35));}
.cg-node-sublabel{fill:var(--cg-text-dimmer);font:500 8.5px 'Inter',sans-serif;pointer-events:none;}
