/* ─────────────────────────────────────────────────────────────────────
   Maltem Africa — Charte stricte
   Palette : uniquement des dérivés tonals de #2C3338 (charbon) et
             #DC3F35 (corail), + neutres purs (blanc, gris).
   ───────────────────────────────────────────────────────────────────── */

:root{
  /* — Maltem Dark scale (charbon) — */
  --mlt-dark-900:#14181B;
  --mlt-dark-800:#1F2428;
  --mlt-dark-700:#252B30;
  --mlt-dark:    #2C3338;   /* ⭐ Maltem charcoal — signature */
  --mlt-dark-500:#4A535C;
  --mlt-dark-400:#6B7681;
  --mlt-dark-300:#8B939B;
  --mlt-dark-200:#C5CACE;
  --mlt-dark-100:#E5E7E9;

  /* — Maltem Red scale (corail) — */
  --mlt-red-900: #7A1D17;
  --mlt-red-800: #9F2A22;
  --mlt-red-700: #C2342B;   /* hover */
  --mlt-red:     #DC3F35;   /* ⭐ Maltem coral — signature */
  --mlt-red-400: #F19A92;
  --mlt-red-300: #F8C9C3;
  --mlt-red-200: #FCE4E1;   /* light bg */
  --mlt-red-100: #FEEBE8;   /* very pale */

  /* — Neutres purs — */
  --bg:    #F5F6F7;
  --panel: #FFFFFF;
  --panel2:#F0F2F4;
  --border:#E2E5E9;
  --text:  var(--mlt-dark);
  --muted: #6B7280;

  /* — Aliases sémantiques (tous dérivés de la charte) — */
  --accent:        var(--mlt-red);
  --accent-hover:  var(--mlt-red-700);
  --accent-soft:   var(--mlt-red-200);

  /* — BPMN element styling (mappé sur la charte) — */
  --task:    var(--mlt-dark);
  --gateway: var(--mlt-red);
  --start:   var(--mlt-dark-400);
  --inter:   var(--mlt-dark-500);
  --end:     var(--mlt-red);
}

*{box-sizing:border-box}
html,body{margin:0;height:100%;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg);color:var(--text);font-size:13px}

/* ── Layout ─────────────────────────────────────────────────────────── */
.app{display:grid;grid-template-columns:340px 1fr;height:100vh}
.sidebar{background:var(--panel);border-right:1px solid var(--border);overflow:hidden;display:flex;flex-direction:column}
.sb-head{padding:18px 16px 14px;border-bottom:1px solid var(--border);background:#fff}
.sb-head .logo{display:block;width:160px;max-width:80%;margin-bottom:14px}
.sb-head h1{margin:0 0 4px 0;font-size:14px;font-weight:600;color:var(--mlt-dark);letter-spacing:-.2px}
.sb-head .sub{color:var(--muted);font-size:11px;line-height:1.5}
.sb-head .brand-strip{height:3px;background:linear-gradient(90deg,var(--mlt-red) 0,var(--mlt-red) 38%,var(--mlt-dark) 38%,var(--mlt-dark) 100%);margin:14px -16px -14px;border-radius:0}

.selectors{padding:10px 12px;border-bottom:1px solid var(--border);background:var(--panel2);display:flex;gap:8px}
.select-row{flex:1;min-width:0}
.select-row label{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--mlt-red);font-weight:700;display:block;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.select-row select{width:100%;background:#fff;border:1px solid var(--border);color:var(--mlt-dark);padding:6px 8px;border-radius:5px;font-size:12px;outline:none;font-weight:500;cursor:pointer}
.select-row select:focus{border-color:var(--mlt-red)}
.select-row:last-child{flex:0 0 110px}

.search{padding:12px;border-bottom:1px solid var(--border);background:var(--panel)}
.search input{width:100%;background:#fff;border:1px solid var(--border);color:var(--text);padding:8px 12px;border-radius:6px;font-size:12px;outline:none;transition:border-color .15s, box-shadow .15s}
.search input:focus{border-color:var(--mlt-red);box-shadow:0 0 0 3px var(--mlt-red-200)}

.tree{flex:1;overflow:auto;padding:6px 0;background:var(--panel)}
.fn{margin:2px 0}
.fn-head{display:flex;align-items:center;gap:6px;padding:7px 12px;cursor:pointer;user-select:none;font-weight:600;color:var(--mlt-dark);font-size:12.5px}
.fn-head:hover{background:var(--panel2)}
.fn-head .chev{width:10px;color:var(--mlt-red);transition:transform .15s;font-size:10px}
.fn.open .fn-head .chev{transform:rotate(90deg)}
.fn-body{display:none;padding:2px 0 6px 22px}
.fn.open .fn-body{display:block}
.fn-cat{font-size:9px;color:#fff;background:var(--mlt-dark);padding:1px 6px;border-radius:3px;text-transform:uppercase;letter-spacing:.5px;margin-left:auto;font-weight:600}

.proc{padding:5px 10px;border-radius:4px;margin:1px 8px 1px 0;cursor:pointer;color:var(--muted);font-size:12px;display:flex;align-items:center;gap:8px;border-left:2px solid transparent}
.proc:hover{background:var(--panel2);color:var(--mlt-dark);border-left-color:var(--mlt-red-300)}
.proc.active{background:var(--mlt-red);color:#fff;border-left-color:var(--mlt-red-700)}
.proc .code{font-family:'SF Mono',Menlo,monospace;font-size:10px;opacity:.75;font-weight:600}
.proc.active .code{opacity:.95}

.main{overflow:hidden;display:flex;flex-direction:column;background:var(--bg)}

/* ── Top nav (mode tabs) ───────────────────────────────────────────── */
.top-nav{display:flex;gap:0;background:var(--panel);border-bottom:1px solid var(--border);padding:0 18px;flex-shrink:0;box-shadow:0 1px 2px rgba(20,24,27,.03)}
.nav-tab{background:transparent;border:none;border-bottom:3px solid transparent;padding:14px 18px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;font-weight:600;transition:all .12s;font-family:inherit;position:relative}
.nav-tab:hover:not(:disabled){color:var(--mlt-dark);background:var(--panel2)}
.nav-tab.active{color:var(--mlt-red);border-bottom-color:var(--mlt-red)}
.nav-tab:disabled{opacity:.4;cursor:not-allowed}
.nav-tab-icon{font-size:16px}
.nav-tab-label{font-weight:600}
.nav-tab-hint{font-size:10px;font-weight:500;color:var(--muted);background:var(--panel2);padding:2px 7px;border-radius:8px;font-family:'SF Mono',Menlo,monospace}
.nav-tab.active .nav-tab-hint{background:var(--mlt-red-200);color:var(--mlt-red)}

.view-host{flex:1;overflow:auto;background:var(--bg)}

/* ── Dashboard editorial (view A v2) ──────────────────────────────── */
.ed-dash{max-width:1180px;margin:0 auto;padding:36px 40px 48px}
@media (max-width:900px){.ed-dash{padding:24px 18px 32px}}

/* Hero search — Google-style centerpiece */
.ed-hero-search{text-align:center;padding:36px 0 28px;position:relative}
.ed-hero-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.18em;color:var(--mlt-red);font-weight:700;margin-bottom:14px}
.ed-hero-title{font-family:'Fraunces',Georgia,serif;font-weight:700;font-size:42px;color:var(--mlt-dark);letter-spacing:-.02em;margin:0 0 26px;line-height:1.1}
@media (max-width:700px){.ed-hero-title{font-size:30px}}
.ed-search-wrap{position:relative;max-width:640px;margin:0 auto}
.ed-search-input{width:100%;background:#fff;border:1px solid var(--border);border-radius:32px;padding:16px 22px 16px 52px;font-size:15px;color:var(--mlt-dark);outline:none;box-shadow:0 1px 3px rgba(20,24,27,.06),0 4px 16px rgba(20,24,27,.04);transition:all .2s;font-family:inherit}
.ed-search-input::placeholder{color:var(--mlt-dark-300)}
.ed-search-input:focus{border-color:var(--mlt-red);box-shadow:0 1px 3px rgba(20,24,27,.06),0 8px 28px rgba(220,63,53,.18)}
.ed-search-icon{position:absolute;left:20px;top:50%;transform:translateY(-50%);font-size:18px;color:var(--mlt-red);pointer-events:none}
.ed-search-hints{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:6px;margin-top:16px}
.ed-search-hint-lbl{font-size:11px;color:var(--muted);margin-right:4px}
.ed-chip{background:var(--panel2);border:1px solid var(--border);color:var(--mlt-dark-500);padding:4px 12px;border-radius:16px;font-size:11.5px;cursor:pointer;font-family:inherit;transition:all .15s}
.ed-chip:hover{background:var(--mlt-red-100);border-color:var(--mlt-red-300);color:var(--mlt-red)}

.ed-search-results{max-width:640px;margin:14px auto 0;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:0 10px 32px rgba(20,24,27,.10);overflow:hidden;text-align:left;animation:fadeIn .15s ease-out}
@keyframes fadeIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.ed-no-results{padding:18px 22px;color:var(--muted);font-style:italic;font-size:13px;text-align:center}
.ed-result{display:flex;align-items:center;gap:14px;padding:12px 18px;cursor:pointer;border-bottom:1px solid var(--border);transition:background .12s}
.ed-result:last-child{border-bottom:0}
.ed-result:hover,.ed-result.focus{background:var(--mlt-red-100)}
.ed-result-icon{flex-shrink:0;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;background:var(--mlt-dark-400)}
.ed-result-icon.task{background:var(--mlt-dark)}
.ed-result-icon.gateway{background:var(--mlt-red)}
.ed-result-icon.proc{background:var(--mlt-red-700)}
.ed-result-body{flex:1;min-width:0}
.ed-result-line{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.ed-result-code{font-family:'Fira Code','SF Mono',monospace;font-size:10.5px;color:var(--mlt-red);font-weight:600;background:var(--mlt-red-100);padding:1px 6px;border-radius:6px}
.ed-result-name{font-weight:600;color:var(--mlt-dark);font-size:13.5px}
.ed-result-name mark{background:#FCE96F;color:var(--mlt-dark);padding:0 1px;border-radius:2px}
.ed-result-ai{font-size:10.5px;color:var(--mlt-red);font-weight:700;margin-left:auto}
.ed-result-path{font-size:11px;color:var(--muted);margin-top:2px;font-style:italic}
.ed-result-arrow{font-size:13px;color:var(--mlt-red);opacity:.5;font-family:'Fira Code',monospace}
.ed-result.focus .ed-result-arrow{opacity:1}

/* Inline KPI strip — dividers, not boxes */
.ed-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin:36px 0 30px;background:var(--panel);border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:20px 0}
@media (max-width:760px){.ed-kpis{grid-template-columns:repeat(2,1fr);padding:12px 0}.ed-kpi{padding:10px}}
.ed-kpi{padding:6px 22px;border-right:1px solid var(--border);position:relative}
.ed-kpi:last-child{border-right:0}
.ed-kpi-num{font-family:'Fira Code','SF Mono',monospace;font-size:28px;font-weight:600;color:var(--mlt-dark);letter-spacing:-.03em;line-height:1;display:flex;align-items:baseline;gap:6px}
.ed-kpi-icon{font-size:18px}
.ed-kpi-frac{font-size:14px;color:var(--muted);font-weight:500}
.ed-kpi-lbl{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;margin-top:8px;font-weight:600}
.ed-kpi-ai .ed-kpi-num{color:var(--mlt-red)}

/* Featured opportunity card */
.ed-feat{background:linear-gradient(135deg,#fff 0%,var(--mlt-red-100) 100%);border:1px solid var(--mlt-red-300);border-radius:14px;padding:24px 28px;margin-bottom:28px;cursor:pointer;position:relative;transition:all .25s cubic-bezier(.2,.8,.2,1);overflow:hidden}
.ed-feat::before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--mlt-red)}
.ed-feat:hover{transform:translateY(-2px);box-shadow:0 12px 32px rgba(220,63,53,.18)}
.ed-feat-stamp{display:inline-flex;align-items:center;gap:6px;background:var(--mlt-red);color:#fff;padding:4px 10px;border-radius:12px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:14px}
.ed-feat-stamp-mark{font-size:11px}
.ed-feat-body{}
.ed-feat-line{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-size:11.5px}
.ed-feat-code{font-family:'Fira Code',monospace;color:var(--mlt-red);font-weight:700;background:#fff;padding:2px 8px;border-radius:8px;border:1px solid var(--mlt-red-300)}
.ed-feat-fn{color:var(--muted);font-weight:500}
.ed-feat-title{font-family:'Fraunces',Georgia,serif;font-weight:700;font-size:24px;color:var(--mlt-dark);margin:0 0 10px;line-height:1.25;letter-spacing:-.01em}
.ed-feat-rationale{color:var(--mlt-dark-500);font-size:13.5px;line-height:1.55;margin:0 0 18px;max-width:780px}
.ed-feat-foot{display:flex;flex-wrap:wrap;align-items:flex-end;gap:18px;margin-bottom:16px}
.ed-feat-gain{flex:0 0 auto}
.ed-feat-gain-lbl{font-size:9.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--mlt-red);font-weight:700;margin-bottom:2px}
.ed-feat-gain-val{font-family:'Fira Code',monospace;font-size:18px;font-weight:600;color:var(--mlt-red-800);line-height:1.1}
.ed-feat-caps{display:flex;flex-wrap:wrap;gap:5px;flex:1;justify-content:flex-end}
.ed-feat-cta{background:var(--mlt-red);color:#fff;border:none;padding:9px 18px;border-radius:22px;font-size:12.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-family:inherit;transition:all .15s}
.ed-feat-cta:hover{background:var(--mlt-red-700);gap:10px}
.ed-feat-cta-arrow{font-family:'Fira Code',monospace}

/* 2-column body */
.ed-body{display:grid;grid-template-columns:300px 1fr;gap:32px;margin-bottom:32px}
@media (max-width:900px){.ed-body{grid-template-columns:1fr;gap:24px}}
.ed-side{display:flex;flex-direction:column;gap:24px;min-width:0}
.ed-main{min-width:0}
.ed-side-h{font-family:'Fraunces',Georgia,serif;font-size:18px;font-weight:600;color:var(--mlt-dark);margin-bottom:14px;letter-spacing:-.01em;padding-bottom:8px;border-bottom:2px solid var(--mlt-red)}
.ed-side-block{}

/* Maturity bar (segmented) */
.ed-mat-bar{display:flex;height:12px;border-radius:6px;overflow:hidden;background:var(--panel2);border:1px solid var(--border)}
.ed-mat-seg{display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#fff;font-family:'Fira Code',monospace;transition:flex .3s}
.ed-mat-prod{background:var(--mlt-red)}
.ed-mat-pilot{background:var(--mlt-red-400);color:var(--mlt-red-900)}
.ed-mat-idea{background:var(--mlt-dark-300);color:#fff}
.ed-mat-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;font-size:11px;color:var(--mlt-dark-500)}
.ed-mat-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}
.ed-mat-dot.ed-mat-prod{background:var(--mlt-red)}
.ed-mat-dot.ed-mat-pilot{background:var(--mlt-red-400)}
.ed-mat-dot.ed-mat-idea{background:var(--mlt-dark-300)}

/* Capability ranking — mini bar chart */
.ed-cap-rank{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.ed-cap-row{display:grid;grid-template-columns:24px 1fr 60px 28px;gap:8px;align-items:center}
.ed-cap-icon{width:22px;height:22px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:12px;flex-shrink:0}
.ed-cap-name{font-size:11.5px;color:var(--mlt-dark);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ed-cap-bar{height:6px;background:var(--panel2);border-radius:3px;overflow:hidden;position:relative}
.ed-cap-bar-fill{display:block;height:100%;border-radius:3px;transition:width .3s}
.ed-cap-n{font-family:'Fira Code',monospace;font-size:11px;color:var(--mlt-dark);font-weight:700;text-align:right}

/* Opportunity list (editorial numbered) */
.ed-opp-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.ed-opp{display:flex;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid var(--border);cursor:pointer;transition:all .15s}
.ed-opp:last-child{border-bottom:0}
.ed-opp:hover{padding-left:8px}
.ed-opp:hover .ed-opp-rank{color:var(--mlt-red)}
.ed-opp:hover .ed-opp-arrow{opacity:1;transform:translateX(4px)}
.ed-opp-rank{font-family:'Fira Code',monospace;font-size:13px;color:var(--mlt-dark-300);font-weight:700;flex-shrink:0;width:30px;transition:color .15s}
.ed-opp-body{flex:1;min-width:0}
.ed-opp-line{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.ed-opp-code{font-family:'Fira Code',monospace;font-size:11px;color:var(--mlt-red);font-weight:600}
.ed-opp-name{font-size:14px;font-weight:600;color:var(--mlt-dark)}
.ed-opp-meta{display:flex;align-items:center;gap:8px;font-size:11px;flex-wrap:wrap}
.ed-opp-gain{color:var(--mlt-red-800);font-weight:700}
.ed-opp-arrow{font-family:'Fira Code',monospace;color:var(--mlt-red);opacity:0;transition:all .15s;font-size:14px;flex-shrink:0}

.ed-foot{margin-top:36px;padding-top:18px;border-top:2px solid var(--mlt-red);font-size:11px;color:var(--muted);text-align:center;letter-spacing:.05em;text-transform:uppercase}

/* ── Print stylesheet (PDF via window.print) ─────────────────────── */
@media print {
  @page { size: A4 landscape; margin: 12mm }
  body, .view-host, .main, .app { background: #fff !important; overflow: visible !important; height: auto !important }
  .sidebar, .top-nav, .export-wrap, .modal-bg, .login-gate, .proc-aside { display: none !important }
  .app { display: block !important; grid-template-columns: none !important }
  .main { overflow: visible !important }
  .proc-layout, .proc-layout.with-aside { display: block !important }
  .proc-view { padding: 0 !important }
  .section { box-shadow: none !important; border-color: #e2e5e9 !important; page-break-inside: avoid }
  .ai-section { page-break-inside: avoid }
  .diagram-wrap { max-height: none !important; overflow: visible !important; border: none !important; background: #fff !important }
  .section-head { background: #f5f6f7 !important }
  h2, h3 { color: #2C3338 !important }
  .pill, .ai-badge-meta, .ai-maturity { -webkit-print-color-adjust: exact; print-color-adjust: exact }
  .element-list { grid-template-columns: 1fr 1fr !important }
  .el-card { break-inside: avoid }
  /* Add a print header */
  .proc-view::before {
    content: 'Maltem Africa · Cartographie des processus';
    display: block;
    font-size: 10pt;
    color: #DC3F35;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2px;
    margin-bottom: 8mm;
    padding-bottom: 4mm;
    border-bottom: 2pt solid #DC3F35;
  }
}

/* ── Welcome ────────────────────────────────────────────────────────── */
.welcome{padding:48px;color:var(--muted);max-width:820px}
.welcome h2{color:var(--mlt-dark);font-size:28px;margin:0 0 4px;letter-spacing:-.5px}
.welcome h2 .africa{color:var(--mlt-red)}
.welcome .tagline{color:var(--muted);font-size:14px;margin-bottom:32px}
.welcome ul{line-height:1.9;list-style:none;padding:0}
.welcome ul li{padding:4px 0;border-bottom:1px solid var(--border)}
.welcome ul li b{color:var(--mlt-dark)}
.welcome .footer-note{margin-top:32px;color:var(--muted);font-size:11px;border-top:2px solid var(--mlt-red);padding-top:14px;display:inline-block}

.loader{padding:48px;text-align:center;color:var(--muted);font-size:13px}
.loader .spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--mlt-red);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 14px}
@keyframes spin{to{transform:rotate(360deg)}}
.error{padding:32px;color:var(--mlt-red);background:var(--mlt-red-200);border:1px solid var(--mlt-red);border-radius:8px;margin:24px;font-family:'SF Mono',Menlo,monospace;font-size:12px;white-space:pre-wrap}

/* ── Process view (mode B) ──────────────────────────────────────────── */
.proc-layout{display:block}
.proc-layout.with-aside{display:grid;grid-template-columns:1fr 320px;gap:0}
@media (max-width:1100px){.proc-layout.with-aside{grid-template-columns:1fr}}

.proc-aside{background:var(--panel2);border-left:1px solid var(--border);padding:18px 16px;overflow-y:auto;max-height:calc(100vh - 100px);position:sticky;top:0}
.aside-head{display:flex;align-items:center;gap:10px;padding-bottom:12px;border-bottom:2px solid var(--mlt-red);margin-bottom:14px}
.aside-icon{font-size:22px}
.aside-title{font-weight:700;color:var(--mlt-dark);font-size:13px}
.aside-sub{font-size:11px;color:var(--muted)}
.aside-maturity{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:14px}
.aside-block{margin-bottom:18px}
.aside-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--mlt-red);margin-bottom:8px}
.aside-caps{display:flex;flex-direction:column;gap:4px}
.aside-stack{display:flex;flex-direction:column;gap:3px}
.aside-stack-row{display:flex;justify-content:space-between;align-items:center;font-size:11px;background:#fff;border:1px solid var(--border);padding:5px 8px;border-radius:4px}
.aside-stack-row code{font-family:'SF Mono',Menlo,monospace;color:var(--mlt-dark);font-size:11px;background:none;padding:0;border:none}
.aside-stack-n{color:var(--mlt-red);font-weight:700;font-size:10px}
.aside-anns{display:flex;flex-direction:column;gap:6px}
.aside-ann{background:#fff;border:1px solid var(--border);border-left:3px solid var(--mlt-red);border-radius:5px;padding:8px 10px;cursor:pointer;transition:all .1s}
.aside-ann:hover{border-color:var(--mlt-red);box-shadow:0 2px 6px rgba(220,63,53,.10)}
.aside-ann-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}
.aside-ann-code{font-family:'SF Mono',Menlo,monospace;font-size:10px;color:var(--mlt-red);font-weight:700}
.aside-ann-name{font-size:11.5px;font-weight:600;color:var(--mlt-dark);line-height:1.35;margin-bottom:4px}
.aside-ann-gain{font-size:10.5px;color:#059669;font-weight:700;margin-bottom:4px}
.aside-ann-caps{display:flex;gap:3px}

.proc-view{padding:22px 28px}
.proc-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}
.proc-header-main{flex:1;min-width:0}
.proc-header-main h2{margin:0 0 4px 0}
.proc-header-main .proc-meta{margin-bottom:0}

/* ── Export menu (dropdown) ─────────────────────────────────────── */
.export-wrap{position:relative;flex-shrink:0}
.export-btn{background:var(--mlt-dark);color:#fff;border:none;padding:8px 14px;border-radius:8px;font-size:12.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:8px;font-family:inherit;transition:all .15s}
.export-btn:hover{background:var(--mlt-dark-700);transform:translateY(-1px);box-shadow:0 4px 12px rgba(20,24,27,.20)}
.export-btn-caret{font-size:9px;opacity:.7}
.export-menu{position:absolute;top:calc(100% + 6px);right:0;width:320px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px rgba(20,24,27,.18);z-index:30;padding:6px;animation:fadeIn .12s ease-out}
.export-menu[hidden]{display:none}
.export-item{display:flex;align-items:center;gap:10px;width:100%;background:transparent;border:none;padding:9px 11px;text-align:left;cursor:pointer;border-radius:6px;font-family:inherit;color:var(--mlt-dark);transition:background .1s}
.export-item:hover{background:var(--panel2)}
.export-item-star:hover{background:var(--mlt-red-100)}
.export-item .export-icon{font-size:18px;flex-shrink:0;width:24px;text-align:center;font-family:'Fira Code',monospace}
.export-text{flex:1;min-width:0}
.export-item .export-name{font-weight:600;font-size:12.5px;line-height:1.2;display:flex;align-items:center;gap:6px}
.export-item .export-hint{font-size:10.5px;color:var(--muted);margin-top:2px;line-height:1.3}
.export-tag{font-size:9px;background:var(--mlt-red);color:#fff;padding:1px 6px;border-radius:8px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.export-divider{height:1px;background:var(--border);margin:4px 6px}
.proc-view h2{margin:0 0 4px 0;font-size:20px;color:var(--mlt-dark);letter-spacing:-.3px}
.proc-meta{color:var(--muted);font-size:12px;margin-bottom:18px}
.proc-meta .pill{display:inline-block;padding:2px 8px;background:var(--mlt-red);color:#fff;border:none;border-radius:10px;font-family:'SF Mono',Menlo,monospace;font-size:10px;margin-right:6px;font-weight:600}
.section{background:var(--panel);border:1px solid var(--border);border-radius:8px;margin-bottom:14px;box-shadow:0 1px 2px rgba(20,24,27,.04)}
.section-head{padding:11px 16px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:12px;color:var(--mlt-dark)}
.section-head .count{color:var(--muted);font-weight:400;font-size:11px}
.section-body{padding:16px}
.desc{line-height:1.6;color:var(--mlt-dark-500);font-size:13px}
.desc p{margin:0 0 10px 0}
.desc p:last-child{margin-bottom:0}
.desc-section{margin-bottom:14px;padding-top:8px;border-top:1px solid var(--border)}
.desc-section:first-child{padding-top:0;border-top:0}
.desc-label{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--mlt-red);margin-bottom:6px;padding:2px 8px;background:var(--mlt-red-100);border-radius:3px}
.desc-list{margin:6px 0 10px 0;padding:0 0 0 18px;list-style:disc;list-style-position:outside}
.desc-list li{line-height:1.55;margin:0 0 4px 0;color:var(--mlt-dark-500)}
.desc-list li:last-child{margin-bottom:0}

.diagram-wrap{background:#FAFBFC;border-radius:6px;overflow:auto;border:1px solid var(--border);max-height:65vh}
.diagram-wrap svg{display:block}
.element-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.el-card{background:#fff;border:1px solid var(--border);border-radius:6px;padding:10px 12px;cursor:pointer;transition:all .12s}
.el-card:hover{border-color:var(--mlt-red);box-shadow:0 2px 6px rgba(220,63,53,.12);transform:translateY(-1px)}
.el-card .nm{font-weight:600;font-size:12px;margin-bottom:3px;color:var(--mlt-dark)}
.el-card .cd{font-family:'SF Mono',Menlo,monospace;font-size:10px;color:var(--muted)}
.el-card.task{border-left:3px solid var(--task)}
.el-card.gateway{border-left:3px solid var(--gateway)}
.el-card.startEvent{border-left:3px solid var(--start)}
.el-card.intermediateEvent{border-left:3px solid var(--inter)}
.el-card.endEvent{border-left:3px solid var(--end)}

/* ── Modal ──────────────────────────────────────────────────────────── */
.modal-bg{position:fixed;inset:0;background:rgba(44,51,56,.55);display:none;align-items:center;justify-content:center;z-index:50;padding:20px;backdrop-filter:blur(2px)}
.modal-bg.show{display:flex}
.modal{background:var(--panel);border:1px solid var(--border);border-radius:10px;max-width:760px;width:100%;max-height:85vh;overflow:auto;box-shadow:0 12px 32px rgba(20,24,27,.20)}
.modal-head{padding:16px 20px;border-bottom:2px solid var(--mlt-red);display:flex;justify-content:space-between;align-items:start;gap:12px;position:sticky;top:0;background:var(--panel);z-index:1}
.modal-head h3{margin:0;font-size:16px;color:var(--mlt-dark)}
.modal-head .x{background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:22px;padding:0 6px;line-height:1}
.modal-head .x:hover{color:var(--mlt-red)}
.modal-body{padding:20px}
.kv{margin:0 0 14px 0}
.kv dt{color:var(--mlt-red);font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;margin-bottom:5px;font-weight:700}
.kv dd{margin:0 0 10px 0;color:var(--mlt-dark)}
.sw-item{background:var(--panel2);border:1px solid var(--border);border-left:3px solid var(--mlt-red);padding:9px 12px;border-radius:5px;margin-bottom:6px}
.sw-item .sw-name{font-weight:600;color:var(--mlt-dark)}
.sw-item .sw-desc{color:var(--muted);font-size:12px;margin-top:3px;line-height:1.5}
.empty{color:var(--muted);font-style:italic;font-size:12px}
.hl{background:var(--mlt-red-200)}

/* ─────────────────────────────────────────────────────────────────────
   AI overlay — couleurs DÉRIVÉES DE LA CHARTE Maltem
   Distinction des capabilities via icônes + nuances tonales red/dark
   ───────────────────────────────────────────────────────────────────── */
.ai-count{background:var(--mlt-red);color:#fff;padding:1px 8px;border-radius:10px;font-weight:600;font-size:10px;margin-left:4px}

.ai-toggle{padding:10px 12px;border-bottom:1px solid var(--border);background:var(--panel);display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--muted);cursor:pointer;user-select:none}
.ai-toggle input{accent-color:var(--mlt-red);cursor:pointer}
.ai-toggle:hover{color:var(--mlt-dark)}
.ai-toggle strong{color:var(--mlt-red)}

.proc-ai{margin-left:auto;font-size:11px;color:var(--mlt-red);font-weight:600}
.proc-ai sup{font-size:9px;color:var(--mlt-red);margin-left:1px}
.proc.active .proc-ai{color:#fff}
.proc.active .proc-ai sup{color:#fff}

.ai-dot-inline{display:inline-block;background:var(--mlt-red);color:#fff;border-radius:50%;width:18px;height:18px;line-height:18px;text-align:center;font-size:10px;vertical-align:middle}
.ai-badge-meta{display:inline-block;padding:2px 8px;background:var(--mlt-red);color:#fff;border-radius:10px;font-size:10px;margin-left:6px;font-weight:600}

/* Welcome stats grid */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:24px 0}
.stat{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px 16px;box-shadow:0 1px 2px rgba(20,24,27,.04)}
.stat-num{font-size:24px;font-weight:700;color:var(--mlt-dark);letter-spacing:-.5px}
.stat-lbl{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-top:2px}
.stat.ai{background:linear-gradient(135deg,#fff,var(--mlt-red-100));border-color:var(--mlt-red-300)}
.stat.ai .stat-num{color:var(--mlt-red)}

.section-title{font-size:14px;color:var(--mlt-dark);margin:28px 0 12px 0;font-weight:700;letter-spacing:-.2px;display:flex;align-items:center;gap:8px}
.section-title::before{content:'';width:4px;height:14px;background:var(--mlt-red);border-radius:2px}

.cap-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px}
.cap-card{background:var(--panel);border:1px solid var(--border);border-left:4px solid var(--mlt-red);border-radius:6px;padding:12px 14px;transition:all .15s}
.cap-card:hover{box-shadow:0 4px 12px rgba(220,63,53,.12);transform:translateY(-1px)}
.cap-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.cap-icon{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;font-size:15px;color:#fff;flex-shrink:0;background:var(--mlt-red)}
.cap-icon-sm{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;font-size:12px;color:#fff;flex-shrink:0;background:var(--mlt-red)}
.cap-name{font-weight:700;color:var(--mlt-dark);font-size:13px}
.cap-count{font-size:10.5px;color:var(--muted);margin-top:1px}
.cap-desc{font-size:11.5px;color:var(--muted);line-height:1.5}

/* Element cards with AI tag */
.ai-tag{color:var(--mlt-red);font-size:11px;margin-left:4px}
.el-card.has-ai{border-color:var(--mlt-red-300);background:linear-gradient(135deg,#fff,var(--mlt-red-100))}
.el-card.has-ai:hover{border-color:var(--mlt-red);box-shadow:0 2px 8px rgba(220,63,53,.18)}
.el-cap-bar{display:flex;gap:3px;margin-top:6px;flex-wrap:wrap}
.cap-chip{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:5px;font-size:10px;color:#fff;background:var(--mlt-red)}
.cap-chip-l{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:14px;font-size:11.5px;color:#fff;font-weight:600;background:var(--mlt-red)}
.cap-chip-l span{font-size:13px}

/* AI section in process / modal */
.ai-section{border-left:3px solid var(--mlt-red)}
.ai-section .section-head{color:var(--mlt-red)}
.ai-maturity{padding:2px 8px;border-radius:10px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;border:1px solid}
.ai-maturity.production{color:#fff;border-color:var(--mlt-red);background:var(--mlt-red)}
.ai-maturity.pilot{color:var(--mlt-red);border-color:var(--mlt-red-300);background:var(--mlt-red-100)}
.ai-maturity.idea{color:var(--mlt-dark-400);border-color:var(--mlt-dark-200);background:var(--mlt-dark-100)}
.ai-score{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:8px 0 12px}
.ai-score-item{display:inline-flex;align-items:center;gap:6px}
.ai-score-lbl{color:var(--mlt-dark-400);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px}
.ai-score-dots{color:var(--mlt-red);font-size:11px;letter-spacing:2px}
.ai-quickwin{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--mlt-red-800);background:var(--mlt-red-100);border:1px solid var(--mlt-red-300);white-space:nowrap}
.cap-chips-large{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.ai-rationale{background:var(--panel2);border-left:3px solid var(--mlt-red);padding:10px 14px;border-radius:5px;color:var(--mlt-dark);font-size:12.5px;line-height:1.55;margin-bottom:12px}
.ai-meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.ai-meta-grid > div{padding:8px 0}
.ai-meta-grid dt, .ai-meta dt{color:var(--mlt-red);font-size:10px;text-transform:uppercase;letter-spacing:.6px;margin-bottom:4px;font-weight:700}
.ai-meta-grid dd, .ai-meta dd{margin:0 0 6px 0;color:var(--mlt-dark);font-size:12.5px}
.ai-gain{color:var(--mlt-red);font-weight:700}
code.tech{display:inline-flex;align-items:center;gap:4px;background:var(--panel2);border:1px solid var(--border);padding:2px 7px;border-radius:4px;font-size:11px;color:var(--mlt-dark);font-family:'SF Mono',Menlo,monospace;margin:0 2px 4px 0;vertical-align:top}
code.tech.has-tip{cursor:help;border-color:var(--mlt-red-300);background:var(--mlt-red-100)}
code.tech.has-tip:hover{border-color:var(--mlt-red);background:var(--mlt-red-200)}
code.tech .tip-mark{color:var(--mlt-red);font-size:10px;font-family:-apple-system,sans-serif;opacity:.7}
code.tech.has-tip:hover .tip-mark{opacity:1}
code.tech.has-tip{outline:none}
code.tech.has-tip:focus{box-shadow:0 0 0 2px var(--mlt-red-200)}

.stack-tip{
  position:fixed;
  z-index:300;
  max-width:340px;
  min-width:240px;
  background:var(--panel);
  border:1px solid var(--mlt-red-300);
  border-left:3px solid var(--mlt-red);
  border-radius:8px;
  padding:12px 14px;
  box-shadow:0 12px 32px rgba(20,24,27,.18), 0 4px 12px rgba(220,63,53,.10);
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  font-size:12px;
  color:var(--mlt-dark);
  pointer-events:none;
  animation:tipIn .12s ease-out;
}
@keyframes tipIn{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.stack-tip-head{font-weight:700;color:var(--mlt-red);font-size:13px;margin-bottom:4px}
.stack-tip-desc{color:var(--mlt-dark-500);line-height:1.5;margin-bottom:10px;padding-bottom:10px;border-bottom:1px dashed var(--border)}
.stack-tip-alts-label{font-size:10px;color:var(--mlt-red);text-transform:uppercase;letter-spacing:.5px;font-weight:700;margin-bottom:6px}
.stack-tip-alts{margin:0;padding:0 0 0 16px;list-style:disc;color:var(--mlt-dark)}
.stack-tip-alts li{line-height:1.6;margin:0;font-family:'SF Mono',Menlo,monospace;font-size:11.5px}

/* Modal AI panel */
.ai-tag-modal{display:inline-block;background:var(--mlt-red);color:#fff;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:700;margin-left:8px;vertical-align:middle}
.ai-panel{background:linear-gradient(135deg,#fff,var(--mlt-red-100));border:1px solid var(--mlt-red-300);border-left:4px solid var(--mlt-red);border-radius:8px;padding:14px 16px;margin-bottom:18px}
.ai-panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.ai-panel-title{font-weight:700;color:var(--mlt-red);font-size:13px}
.ai-meta{margin:14px 0 0 0}
.cap-detail-list{margin-top:14px;display:flex;flex-direction:column;gap:6px}
.cap-detail{background:var(--panel2);border:1px solid var(--border);border-left:3px solid var(--mlt-red);border-radius:5px;padding:8px 11px}
.cap-detail-head{display:flex;align-items:center;gap:8px;margin-bottom:3px;color:var(--mlt-dark);font-size:12px}
.cap-detail-desc{font-size:11.5px;color:var(--muted);line-height:1.5}

/* SVG AI badge */
.ai-badge{cursor:pointer;animation:aiPulse 2.4s ease-in-out infinite}
@keyframes aiPulse{0%,100%{opacity:1}50%{opacity:.78}}
g.has-ai .svg-task{stroke:var(--mlt-red);stroke-width:2}

/* ── AI Atlas (mode C) ──────────────────────────────────────────────── */
.atlas{padding:28px 32px;max-width:1300px;margin:0 auto}
.atlas-head{margin-bottom:18px}
.atlas-head h2{margin:0;font-size:24px;color:var(--mlt-dark);letter-spacing:-.4px}
.atlas-sub{font-size:13px;color:var(--muted);margin-top:4px}
.atlas-sub #atlasCount{font-weight:700;color:var(--mlt-red);font-family:'SF Mono',Menlo,monospace}

.atlas-filters{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px 16px;margin-bottom:18px;display:flex;flex-direction:column;gap:12px;box-shadow:0 1px 2px rgba(20,24,27,.03)}
.filter-group{display:flex;align-items:flex-start;gap:12px}
.filter-label{flex:0 0 110px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--mlt-red);font-weight:700;padding-top:6px}
.filter-chips{display:flex;flex-wrap:wrap;gap:6px;flex:1}
.filter-chip{background:var(--panel2);border:1px solid var(--border);color:var(--mlt-dark);padding:5px 11px;border-radius:14px;font-size:11.5px;cursor:pointer;transition:all .1s;font-family:inherit;font-weight:500}
.filter-chip:hover{border-color:var(--mlt-red-300)}
.filter-chip.on{background:var(--mlt-red);color:#fff;border-color:var(--mlt-red)}
.filter-chip.mat-production.on{background:var(--mlt-red);border-color:var(--mlt-red)}
.filter-chip.mat-pilot.on{background:var(--mlt-red-400);border-color:var(--mlt-red-400)}
.filter-chip.mat-idea.on{background:var(--mlt-dark-400);border-color:var(--mlt-dark-400)}
.filter-search{flex:1;background:#fff;border:1px solid var(--border);color:var(--mlt-dark);padding:7px 12px;border-radius:6px;font-size:12px;outline:none;font-family:inherit}
.filter-search:focus{border-color:var(--mlt-red);box-shadow:0 0 0 3px var(--mlt-red-200)}

.atlas-results{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:10px}
.atlas-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px 14px;cursor:pointer;transition:all .12s;box-shadow:0 1px 2px rgba(20,24,27,.03);display:flex;flex-direction:column;gap:6px}
.atlas-card:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(220,63,53,.10);border-color:var(--mlt-red-300)}
.atlas-card-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-left:3px solid var(--mlt-red);padding-left:10px;margin-left:-14px;padding-right:0}
.atlas-cap{font-weight:700;color:var(--mlt-dark);font-size:12px}
.atlas-code{font-family:'SF Mono',Menlo,monospace;font-size:10.5px;color:var(--mlt-red);background:var(--mlt-red-100);padding:1px 7px;border-radius:8px;font-weight:700}
.atlas-gain{margin-left:auto;color:#059669;font-weight:700;font-size:11.5px}
.atlas-card-univ{font-size:11px;color:var(--muted);font-weight:500}
.atlas-card-rationale{font-size:12px;color:var(--mlt-dark-500);line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.atlas-card-foot{display:flex;justify-content:space-between;align-items:center;margin-top:4px;border-top:1px dashed var(--border);padding-top:8px}
.atlas-card-caps{display:flex;gap:3px}
.atlas-open{background:transparent;border:1px solid var(--mlt-red);color:var(--mlt-red);padding:4px 10px;border-radius:14px;font-size:11px;cursor:pointer;font-weight:600;font-family:inherit;transition:all .1s}
.atlas-open:hover{background:var(--mlt-red);color:#fff}

/* ── Login gate (charte Maltem) ─────────────────────────────────────── */
.login-gate{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(135deg,var(--mlt-dark) 0%,var(--mlt-dark-800) 100%);backdrop-filter:blur(4px)}
.login-gate[hidden]{display:none}
.login-card{background:#fff;border-radius:14px;padding:36px 32px 28px;max-width:380px;width:100%;box-shadow:0 24px 60px rgba(0,0,0,.45),0 8px 24px rgba(220,63,53,.18);text-align:center;animation:loginIn .35s cubic-bezier(.2,.8,.2,1)}
@keyframes loginIn{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
.login-logo{display:block;width:160px;margin:0 auto 18px}
.login-card h2{margin:0 0 6px;font-size:18px;color:var(--mlt-dark);letter-spacing:-.2px}
.login-card p{margin:0 0 22px;color:var(--muted);font-size:12.5px;line-height:1.5}
#loginForm{display:flex;flex-direction:column;gap:10px}
#loginPassword{background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:11px 14px;font-size:14px;color:var(--mlt-dark);outline:none;transition:all .15s;font-family:inherit}
#loginPassword:focus{border-color:var(--mlt-red);background:#fff;box-shadow:0 0 0 3px var(--mlt-red-200)}
#loginButton{background:var(--mlt-red);color:#fff;border:none;border-radius:8px;padding:11px 14px;font-size:13.5px;font-weight:700;cursor:pointer;transition:all .15s;letter-spacing:.2px}
#loginButton:hover:not(:disabled){background:var(--mlt-red-700)}
#loginButton:disabled{opacity:.6;cursor:wait}
.login-error{background:var(--mlt-red-100);border:1px solid var(--mlt-red-300);color:var(--mlt-red-800);padding:9px 12px;border-radius:6px;margin-top:14px;font-size:12px;font-weight:500}
.login-brand{margin-top:22px;height:3px;background:linear-gradient(90deg,var(--mlt-red) 0,var(--mlt-red) 38%,var(--mlt-dark) 38%,var(--mlt-dark) 100%);border-radius:2px}

/* ── SVG BPMN element styles (charte uniquement) ────────────────────── */
.svg-task{fill:#fff;stroke:var(--mlt-dark);stroke-width:1.5;cursor:pointer;transition:fill .12s}
.svg-task:hover{fill:var(--mlt-red-200)}
.svg-gateway{fill:var(--mlt-red-200);stroke:var(--mlt-red);stroke-width:1.5;cursor:pointer}
.svg-gateway:hover{fill:var(--mlt-red-300)}
.svg-start{fill:var(--mlt-dark-100);stroke:var(--mlt-dark-400);stroke-width:1.5;cursor:pointer}
.svg-end{fill:var(--mlt-red-200);stroke:var(--mlt-red);stroke-width:2.5;cursor:pointer}
.svg-inter{fill:var(--mlt-dark-100);stroke:var(--mlt-dark-500);stroke-width:1.5;cursor:pointer}
.svg-flow{fill:none;stroke:var(--mlt-dark-400);stroke-width:1.3}
.svg-label{font-family:-apple-system,sans-serif;font-size:10px;fill:var(--mlt-dark);pointer-events:none;text-anchor:middle;dominant-baseline:middle;font-weight:500}
.svg-label-event{font-size:8.5px}
