{"id":15686,"date":"2026-03-25T15:13:35","date_gmt":"2026-03-25T13:13:35","guid":{"rendered":"https:\/\/angeingabire.com\/?page_id=15686"},"modified":"2026-05-17T02:19:16","modified_gmt":"2026-05-17T00:19:16","slug":"ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia","status":"publish","type":"page","link":"https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/","title":{"rendered":"Ortive \u2014 Studio Produit IA | Concevez et Monetisez vos Produits IA"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"15686\" class=\"elementor elementor-15686\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0b3e41b e-flex e-con-boxed e-con e-parent\" data-id=\"0b3e41b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-df74441 elementor-widget elementor-widget-html\" data-id=\"df74441\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"UTF-8\"\/>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\"\/>\n<title>Ortive Studio \u2014 Fran\u00e7ais<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Instrument+Serif:ital@0;1&family=Geist:wght@300;400;500;600;700&family=Geist+Mono:wght@400;500;600&display=swap\" rel=\"stylesheet\"\/>\n<style>\n*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}\n\nhtml,body{\n  background:#F5F1E9;color:#13120D;\n  font-family:'Geist','Helvetica Neue',Helvetica,sans-serif;\n  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;\n  min-height:100vh;\n}\n::-webkit-scrollbar{width:3px;height:3px}\n::-webkit-scrollbar-thumb{background:rgba(19,18,13,.2)}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 MASTHEAD \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.masthead{\n  position:sticky;top:0;z-index:200;\n  background:#F5F1E9;\n  border-bottom:1.5px solid #13120D;\n  display:grid;\n  grid-template-columns:auto 1fr auto;\n  align-items:center;\n  gap:24px;\n  padding:0 28px;\n  height:54px;\n}\n.mast-brand{display:flex;align-items:center;gap:10px;flex-shrink:0}\n.mast-dot{width:8px;height:8px;border-radius:50%;background:#C47B3A;flex-shrink:0}\n.mast-name{font-family:'Instrument Serif',Georgia,serif;font-style:italic;font-size:22px;letter-spacing:-.02em;line-height:1;color:#13120D}\n.mast-name em{font-style:normal;color:#3E6B58}\n.mast-sub{font-family:'Geist Mono',ui-monospace,monospace;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:#A09880;margin-left:4px}\n\n.mast-step{font-family:'Geist Mono',ui-monospace,monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#7A7266;text-align:center}\n.mast-step span{color:#3E6B58}\n\n\/* BYOK *\/\n.mast-byok{display:flex;align-items:center;gap:0;flex-shrink:0}\n.byok-disconnected{display:flex;align-items:center;gap:0}\n.byok-select{\n  height:34px;padding:0 28px 0 10px;\n  background:transparent;\n  border:1px solid rgba(19,18,13,.25);border-right:none;\n  font-family:'Geist Mono',ui-monospace,monospace;\n  font-size:10px;letter-spacing:.06em;color:#13120D;\n  outline:none;cursor:pointer;\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%237A7266' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\");\n  background-repeat:no-repeat;background-position:right 8px center;\n  -webkit-appearance:none;min-width:160px;\n}\n.byok-select:focus{border-color:#3E6B58;outline:none}\n.byok-key-inp{\n  height:34px;padding:0 10px;width:200px;\n  background:transparent;\n  border:1px solid rgba(19,18,13,.25);border-right:none;\n  font-family:'Geist Mono',ui-monospace,monospace;\n  font-size:11px;color:#13120D;outline:none;\n}\n.byok-key-inp::placeholder{color:#A09880}\n.byok-key-inp:focus{border-color:#3E6B58}\n.byok-connect-btn{\n  height:34px;padding:0 16px;\n  background:#13120D;color:#F5F1E9;\n  font-family:'Geist Mono',ui-monospace,monospace;\n  font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;\n  border:1px solid #13120D;cursor:pointer;\n  display:flex;align-items:center;gap:8px;\n  transition:all .15s;white-space:nowrap;\n}\n.byok-connect-btn:hover{background:#3E6B58;border-color:#3E6B58}\n.byok-connect-btn .arrow{font-family:'Instrument Serif',Georgia,serif;font-size:18px;font-style:normal;transition:transform .2s}\n.byok-connect-btn:hover .arrow{transform:translateX(3px)}\n\n.byok-connected{display:none;align-items:center;gap:12px}\n.byok-connected.show{display:flex}\n.byok-disconnected.hide{display:none}\n.byok-pulse{width:6px;height:6px;border-radius:50%;background:#C47B3A;animation:pulse 2.2s ease-in-out infinite;flex-shrink:0}\n.byok-name{font-family:'Geist Mono',ui-monospace,monospace;font-size:10px;letter-spacing:.08em;color:#13120D}\n.byok-change{background:none;border:none;cursor:pointer;font-family:'Geist Mono',ui-monospace,monospace;font-size:10px;letter-spacing:.08em;color:#A09880;padding:0;transition:color .15s;text-decoration:underline;text-underline-offset:2px}\n.byok-change:hover{color:#3E6B58}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 USAGE CAP OVERLAY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.cap-overlay{position:fixed;inset:0;background:rgba(19,18,13,.6);z-index:9000;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(2px);animation:in .25s ease}\n.cap-overlay.hidden{display:none}\n.cap-box{background:#F5F1E9;border:1.5px solid #13120D;box-shadow:6px 6px 0 #13120D;width:480px;max-width:94vw;padding:40px 40px 36px;position:relative;animation:up .32s ease}\n.cap-close{position:absolute;top:14px;right:18px;background:none;border:none;cursor:pointer;font-family:'Geist Mono',monospace;font-size:16px;color:#A09880;line-height:1;padding:4px}\n.cap-close:hover{color:#13120D}\n.cap-kicker{font-family:'Geist Mono',monospace;font-size:9px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:#3E6B58;margin-bottom:14px;display:flex;align-items:center;gap:8px}\n.cap-title{font-family:'Instrument Serif',Georgia,serif;font-style:italic;font-size:28px;letter-spacing:-.02em;color:#13120D;margin-bottom:10px;line-height:1.1}\n.cap-body{font-size:13.5px;color:#7A7266;line-height:1.65;margin-bottom:24px}\n.cap-form{display:flex;gap:0;border:1.5px solid #13120D}\n.cap-form input{border:none;border-right:1.5px solid #13120D;padding:12px 14px;font-size:15px;font-family:'Instrument Serif',Georgia,serif;font-style:italic;flex:1;background:transparent;color:#13120D;outline:none}\n.cap-form input::placeholder{color:#A09880}\n.cap-form input:focus{background:rgba(62,107,88,.04)}\n.cap-form button{padding:12px 20px;background:#13120D;color:#F5F1E9;border:none;cursor:pointer;font-family:'Geist Mono',monospace;font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;transition:background .15s;flex-shrink:0}\n.cap-form button:hover{background:#3E6B58}\n.cap-note{font-family:'Geist Mono',monospace;font-size:9.5px;color:#A09880;margin-top:10px;letter-spacing:.06em}\n\n@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.85)}}\n@keyframes up{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}\n@keyframes in{from{opacity:0}to{opacity:1}}\n@keyframes spin{to{transform:rotate(360deg)}}\n@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 LAYOUT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.layout{display:flex;min-height:calc(100vh - 54px)}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 SIDEBAR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sidebar{\n  width:232px;flex-shrink:0;\n  background:#13120D;\n  position:sticky;top:54px;\n  height:calc(100vh - 54px);\n  overflow-y:auto;\n  display:flex;flex-direction:column;\n  padding:24px 0 24px;\n}\n.side-section{\n  font-family:'Geist Mono',ui-monospace,monospace;\n  font-size:8.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;\n  color:rgba(255,255,255,.2);\n  padding:0 20px;margin:20px 0 8px;\n}\n.side-section:first-child{margin-top:0}\n.nav-item{\n  display:flex;align-items:center;gap:10px;\n  padding:8px 20px;\n  cursor:pointer;border:none;background:transparent;\n  text-align:left;width:100%;\n  border-left:2px solid transparent;\n  transition:all .15s;\n}\n.nav-item:hover .nav-label{color:rgba(255,255,255,.7)}\n.nav-item.on{background:rgba(255,255,255,.05);border-left-color:#C47B3A}\n.nav-item.on .nav-label{color:#fff;font-weight:600}\n.nav-item.on .nav-num{border-color:#C47B3A;color:#C47B3A}\n.nav-item.done .nav-num{background:#C47B3A;border-color:#C47B3A;color:#13120D;display:grid;place-items:center}\n.nav-num{\n  width:20px;height:20px;border-radius:0;\n  border:1px solid rgba(255,255,255,.15);\n  display:grid;place-items:center;\n  font-family:'Geist Mono',ui-monospace,monospace;\n  font-size:8px;font-weight:600;color:rgba(255,255,255,.25);\n  flex-shrink:0;transition:all .2s;\n}\n.nav-label{font-size:12px;font-weight:400;color:rgba(255,255,255,.35);line-height:1;transition:color .15s;letter-spacing:-.01em}\n.nav-dot{margin-left:auto;width:4px;height:4px;border-radius:50%;background:#C47B3A;opacity:0;flex-shrink:0}\n.nav-item.on .nav-dot{opacity:1}\n.side-divider{height:1px;background:rgba(255,255,255,.07);margin:12px 20px}\n.side-foot{\n  margin-top:auto;padding:16px 20px 0;\n  border-top:1px solid rgba(255,255,255,.07);\n  display:flex;align-items:center;gap:10px;\n}\n.side-avi{width:26px;height:26px;background:#C47B3A;display:grid;place-items:center;flex-shrink:0;font-family:'Instrument Serif',Georgia,serif;font-style:italic;font-size:12px;color:#fff;}\n.side-foot-name{font-size:11.5px;font-weight:500;color:rgba(255,255,255,.55);letter-spacing:-.01em}\n.side-foot-sub{font-family:'Geist Mono',ui-monospace,monospace;font-size:9px;color:rgba(255,255,255,.2);letter-spacing:.08em;margin-top:1px}\n\n.mob-ov{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:150;animation:in .2s}\n.mob-ov.on{display:block}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 MAIN \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.main{flex:1;padding:48px 52px;min-height:calc(100vh - 54px);max-width:1100px}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 PAGE HEADER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.eyebrow{\n  font-family:'Geist Mono',ui-monospace,monospace;\n  font-size:10px;letter-spacing:.2em;text-transform:uppercase;\n  color:#3E6B58;margin-bottom:22px;\n  display:flex;align-items:center;gap:12px;\n}\n.eyebrow::before,.eyebrow::after{content:\"\";height:1px;background:#3E6B58;opacity:.4}\n.eyebrow::before{width:32px}\n.eyebrow::after{flex:1;opacity:.15}\n\n.pg-h1{\n  font-family:'Instrument Serif',Georgia,serif !important;\n  font-style:italic !important;\n  font-size:42px !important;font-weight:400 !important;\n  letter-spacing:-.025em !important;line-height:.98 !important;\n  color:#13120D !important;margin-bottom:14px !important;\n}\n.pg-sub{font-size:14px;color:#7A7266;line-height:1.65;max-width:480px}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 VIEWS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.view{display:none}\n.view.on{display:block;animation:up .3s ease both}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 CARDS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.card{background:#fff;border:1px solid #13120D;box-shadow:3px 3px 0 #13120D;padding:24px}\n.card-sm{background:#fff;border:1px solid #13120D;padding:18px}\n.inset{background:#E8E2D5;border:1px solid rgba(19,18,13,.12);padding:14px}\n.inset-accent{background:rgba(62,107,88,.06);border:1px solid rgba(62,107,88,.3);padding:14px}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 GRID \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.g2{display:grid;grid-template-columns:1fr 1fr;gap:18px}\n.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}\n.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}\n.col{display:flex;flex-direction:column}\n.row{display:flex;align-items:center}\n.between{display:flex;justify-content:space-between;align-items:center}\n.gap6{gap:6px}.gap8{gap:8px}.gap10{gap:10px}.gap12{gap:12px}.gap14{gap:14px}.gap16{gap:16px}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 TYPOGRAPHY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.ct{font-family:'Instrument Serif',Georgia,serif;font-style:italic;font-weight:400;font-size:15px;letter-spacing:-.01em;color:#13120D}\n.cs{color:#7A7266;font-size:12.5px;margin-top:2px;line-height:1.5}\n.lbl{font-family:'Geist Mono',ui-monospace,monospace;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:#7A7266;display:block;margin-bottom:7px}\n.body{font-size:13.5px;color:#1E1B15;line-height:1.72}\n.mono{font-family:'Geist Mono',ui-monospace,monospace;font-size:12px;color:#7A7266}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 BADGES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.badge{display:inline-flex;align-items:center;font-family:'Geist Mono',ui-monospace,monospace;font-size:9px;font-weight:600;padding:3px 8px;letter-spacing:.08em;text-transform:uppercase;border-radius:0}\n.bg{background:rgba(62,107,88,.1);color:#3E6B58;border:1px solid rgba(62,107,88,.35)}\n.bt{background:#E8E2D5;color:#7A7266;border:1px solid rgba(19,18,13,.15)}\n.bn{background:#13120D;color:#F5F1E9;border:1px solid #13120D}\n.bi{background:#E8E2D5;color:#7A7266;border:1px solid rgba(19,18,13,.12)}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 BUTTONS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.btn{\n  display:inline-flex;align-items:center;justify-content:center;gap:8px;\n  font-family:'Geist Mono',ui-monospace,monospace;\n  font-weight:600;font-size:10.5px;\n  letter-spacing:.14em;text-transform:uppercase;\n  border:none;cursor:pointer;transition:all .15s;\n  padding:10px 20px;border-radius:0;\n}\n.btn-dark{background:#13120D;color:#F5F1E9;border:1px solid #13120D}\n.btn-dark:hover{background:#3E6B58;border-color:#3E6B58;transform:translateY(-1px)}\n.btn-dark:disabled{background:#7A7266;border-color:#7A7266;cursor:not-allowed;transform:none}\n.btn-ghost{background:transparent;border:1px solid #13120D;color:#13120D}\n.btn-ghost:hover{background:#13120D;color:#F5F1E9}\n.btn-accent{background:#3E6B58;color:#fff;border:1px solid #3E6B58}\n.btn-accent:hover{background:#2D5448;border-color:#2D5448;transform:translateY(-1px)}\n.btn-full{width:100%;padding:13px;font-size:10.5px}\n.btn-sm{padding:6px 12px;font-size:9.5px}\n.btn-xl{padding:14px 28px;font-size:11px}\n.btn-arrow::after{content:\"\u2192\";font-family:'Instrument Serif',Georgia,serif;font-size:18px;font-style:normal;transition:transform .2s;letter-spacing:0}\n.btn-dark.btn-arrow:hover::after,.btn-ghost.btn-arrow:hover::after{transform:translateX(4px)}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 INPUTS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\ninput[type=text],input[type=email],input[type=password],textarea,select{\n  background:transparent;border:none;border-bottom:1.5px solid #13120D;\n  padding:8px 2px;color:#13120D;\n  font-family:'Instrument Serif',Georgia,serif;\n  font-style:italic;font-size:20px;\n  outline:none;width:100%;transition:border-color .2s;\n}\ninput[type=text]:focus,input[type=email]:focus,input[type=password]:focus,\ntextarea:focus,select:focus{border-bottom-color:#3E6B58}\ninput::placeholder,textarea::placeholder{color:#A09880;font-style:italic}\ntextarea{resize:vertical;min-height:80px;line-height:1.55;font-size:16px}\nselect{\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='11' height='11' viewBox='0 0 24 24' fill='none' stroke='%237A7266' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\");\n  background-repeat:no-repeat;background-position:right 4px bottom 10px;\n  -webkit-appearance:none;padding-right:28px;font-size:17px;\n}\ninput[type=range]{width:100%;accent-color:#3E6B58;cursor:pointer;margin:4px 0}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 CHIPS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.chip-group{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px}\n.chip{\n  display:inline-flex;align-items:center;gap:5px;padding:5px 11px;\n  border:1px solid rgba(19,18,13,.25);border-radius:0;\n  cursor:pointer;background:transparent;\n  font-family:'Geist Mono',ui-monospace,monospace;\n  font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;\n  color:#7A7266;transition:all .15s;\n}\n.chip svg{width:11px;height:11px;stroke:#A09880;flex-shrink:0;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:stroke .15s}\n.chip:hover{border-color:#13120D;color:#13120D}\n.chip.on{border-color:#13120D;background:#13120D;color:#F5F1E9}\n.chip.on svg{stroke:#F5F1E9}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 PRODUCT TYPE CARD \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.ptype{\n  background:#fff;border:1px solid #13120D;\n  box-shadow:3px 3px 0 #13120D;\n  padding:20px 18px;cursor:pointer;\n  transition:all .18s;position:relative;\n}\n.ptype:hover{transform:translate(-1px,-1px);box-shadow:5px 5px 0 #13120D}\n.ptype.sel{border-color:#3E6B58;box-shadow:3px 3px 0 #3E6B58;background:rgba(62,107,88,.04)}\n.ptype.sel::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:#3E6B58}\n.ptype-icon{width:40px;height:40px;display:grid;place-items:center;margin-bottom:14px;background:#E8E2D5}\n.ptype-name{font-family:'Instrument Serif',Georgia,serif;font-style:italic;font-weight:400;font-size:15px;color:#13120D;margin-bottom:5px;letter-spacing:-.01em}\n.ptype-desc{font-size:11.5px;color:#7A7266;line-height:1.55}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 OUTPUT TABS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.out-tabs{display:flex;border-bottom:1px solid #13120D;overflow-x:auto;scrollbar-width:none}\n.out-tabs::-webkit-scrollbar{display:none}\n.out-tab{\n  padding:10px 16px;\n  font-family:'Geist Mono',ui-monospace,monospace;\n  font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;\n  color:#7A7266;cursor:pointer;\n  border-bottom:2px solid transparent;white-space:nowrap;flex-shrink:0;\n  background:none;border-top:none;border-left:none;border-right:none;transition:all .15s;\n}\n.out-tab:hover{color:#13120D}\n.out-tab.on{color:#13120D;border-bottom-color:#3E6B58}\n.out-tab-push{flex:1}\n.dl-btn{\n  display:flex;align-items:center;gap:5px;padding:5px 12px;\n  background:#13120D;color:#F5F1E9;border:none;\n  font-family:'Geist Mono',ui-monospace,monospace;\n  font-size:9px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;\n  cursor:pointer;flex-shrink:0;transition:all .15s;margin:auto 0;\n}\n.dl-btn:hover{background:#3E6B58}\n.out-pane{display:none;padding:22px}\n.out-pane.on{display:block}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 RESULT SECTIONS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rsec{background:#E8E2D5;border:1px solid rgba(19,18,13,.12);padding:16px;margin-bottom:10px}\n.rsec-lbl{\n  font-family:'Geist Mono',ui-monospace,monospace;\n  font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.14em;\n  color:#3E6B58;margin-bottom:10px;display:flex;align-items:center;gap:8px;\n}\n.rsec-lbl::after{content:\"\";flex:1;height:1px;background:rgba(62,107,88,.2)}\n.rsec ul{list-style:none}\n.rsec ul li{font-size:13px;color:#1E1B15;line-height:1.7;padding:2px 0 2px 14px;position:relative}\n.rsec ul li::before{content:'\u25c6';position:absolute;left:0;top:6px;color:#3E6B58;font-size:6px}\n.code-wrap{background:#13120D;padding:18px;margin-bottom:10px}\n.code-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}\n.code-lbl{font-family:'Geist Mono',ui-monospace,monospace;font-size:9px;color:rgba(255,255,255,.35);letter-spacing:.14em;text-transform:uppercase}\n.code-pre{font-family:'Geist Mono',ui-monospace,monospace;font-size:11.5px;color:rgba(255,255,255,.78);white-space:pre-wrap;word-break:break-word;line-height:1.65}\n.copy-btn{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.4);font-size:9px;font-weight:600;padding:3px 9px;cursor:pointer;font-family:'Geist Mono',ui-monospace,monospace;letter-spacing:.08em;transition:all .15s;border-radius:0}\n.copy-btn:hover{background:rgba(255,255,255,.14);color:#fff}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 FLOW STEPS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.flow-step{display:flex;gap:10px;margin-bottom:8px}\n.flow-n{width:22px;height:22px;min-width:22px;background:#13120D;color:rgba(255,255,255,.6);display:grid;place-items:center;font-family:'Geist Mono',ui-monospace,monospace;font-size:8.5px;font-weight:600}\n.flow-txt{flex:1;background:#E8E2D5;border:1px solid rgba(19,18,13,.1);padding:7px 11px;font-size:12.5px;color:#1E1B15;line-height:1.5}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 TOGGLE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.tgl{width:32px;height:17px;border-radius:0;cursor:pointer;position:relative;flex-shrink:0;transition:background .18s}\n.tgl-k{position:absolute;top:2px;width:13px;height:13px;background:#fff;transition:left .18s;box-shadow:0 1px 3px rgba(0,0,0,.2)}\n.cap-row{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid rgba(19,18,13,.08)}\n.cap-row:last-child{border-bottom:none;padding-bottom:0}\n.cap-label{font-size:12.5px;color:#1E1B15}\n.rule-r{display:flex;gap:8px;margin-bottom:7px;align-items:flex-start}\n.rule-ic{width:16px;height:16px;background:rgba(62,107,88,.1);display:grid;place-items:center;flex-shrink:0;margin-top:2px}\n.rule-txt{flex:1;background:#E8E2D5;border:1px solid rgba(19,18,13,.1);padding:6px 10px;font-size:12px;color:#1E1B15;line-height:1.5}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 TIER CARDS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.tier-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:12px;border:1px solid #13120D}\n.tier-card{padding:18px;position:relative;border-right:1px solid rgba(19,18,13,.15)}\n.tier-card:last-child{border-right:none}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 SKEL \/ SPINNER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.skel{background:linear-gradient(90deg,#E8E2D5 25%,#DFD9CC 50%,#E8E2D5 75%);background-size:200% 100%;animation:shimmer 1.4s ease infinite;margin-bottom:8px}\n.spin{display:inline-block;width:12px;height:12px;border:1.5px solid rgba(245,241,233,.2);border-top-color:#F5F1E9;border-radius:50%;animation:spin .65s linear infinite}\n.spin-d{display:inline-block;width:12px;height:12px;border:1.5px solid rgba(19,18,13,.1);border-top-color:#13120D;border-radius:50%;animation:spin .65s linear infinite}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 EMPTY STATE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:150px;gap:10px;color:#A09880;font-size:13px;text-align:center}\n.empty span{max-width:220px;line-height:1.6;font-family:'Instrument Serif',Georgia,serif;font-style:italic;font-size:15px}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 TOAST \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#toast{position:fixed;bottom:24px;right:24px;background:#13120D;color:#F5F1E9;padding:11px 18px;font-family:'Geist Mono',ui-monospace,monospace;font-size:11px;letter-spacing:.06em;box-shadow:3px 3px 0 #C47B3A;transform:translateY(60px);opacity:0;transition:all .26s;z-index:9999;pointer-events:none;border-radius:0}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 MOBILE BAR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.mob-bar{display:none;position:fixed;top:0;left:0;right:0;height:52px;background:#13120D;z-index:300;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid rgba(255,255,255,.1)}\n.mob-brand{display:flex;align-items:center;gap:8px}\n.mob-name{font-family:'Instrument Serif',Georgia,serif;font-style:italic;font-size:20px;color:#F5F1E9;letter-spacing:-.02em}\n.mob-name em{font-style:normal;color:#3E6B58}\n.mob-step-lbl{font-family:'Geist Mono',ui-monospace,monospace;font-size:9px;color:rgba(255,255,255,.35);letter-spacing:.1em}\n.mob-menu-btn{width:32px;height:32px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);display:grid;place-items:center;cursor:pointer}\n\n@media(max-width:900px){.sidebar{width:200px}.main{padding:32px 24px}.g4{grid-template-columns:repeat(2,1fr)}}\n@media(max-width:700px){\n  .mob-bar{display:flex}.masthead{display:none}\n  .sidebar{position:fixed;top:52px;left:0;height:calc(100vh - 52px);z-index:200;transform:translateX(-100%);transition:transform .28s cubic-bezier(.4,0,.2,1)}\n  .sidebar.open{transform:translateX(0)}\n  .layout{display:block}\n  .main{margin-left:0;padding:72px 16px 28px}\n  .g2,.g3,.g4{grid-template-columns:1fr}\n  .pg-h1{font-size:30px !important}\n  .tier-grid{grid-template-columns:1fr}\n  .tier-card{border-right:none;border-bottom:1px solid rgba(19,18,13,.15)}\n  .tier-card:last-child{border-bottom:none}\n}\n<\/style>\n<\/head>\n<body>\n\n<!-- USAGE CAP OVERLAY -->\n<div class=\"cap-overlay hidden\" id=\"cap-overlay\">\n  <div class=\"cap-box\">\n    <button class=\"cap-close\" onclick=\"closeCapPopup()\">\u2715<\/button>\n    <div class=\"cap-kicker\"><span style=\"width:5px;height:5px;border-radius:50%;background:#3E6B58;display:inline-block\"><\/span>Ortive Studio \u2014 Version MVP<\/div>\n    <div class=\"cap-title\">Merci d'avoir essay\u00e9 Ortive Studio<\/div>\n    <p class=\"cap-body\">Vous avez utilis\u00e9 vos 3 g\u00e9n\u00e9rations gratuites et explor\u00e9 tout ce que la version MVP a \u00e0 offrir. Laissez votre e-mail ci-dessous \u2014 nous vous avertirons d\u00e8s que la version compl\u00e8te sera disponible avec des sessions illimit\u00e9es, des projets sauvegard\u00e9s et bien plus encore.<\/p>\n    <div class=\"cap-form\">\n      <input type=\"email\" id=\"cap-email\" placeholder=\"votre@email.com\" onkeydown=\"if(event.key==='Enter')submitCapEmail()\"\/>\n      <button onclick=\"submitCapEmail()\">Me notifier \u2192<\/button>\n    <\/div>\n    <p class=\"cap-note\">Un seul e-mail. Jamais de spam. D\u00e9sinscription \u00e0 tout moment.<\/p>\n    <div id=\"cap-success\" style=\"display:none;margin-top:16px;padding:12px;background:rgba(62,107,88,.08);border:1px solid rgba(62,107,88,.3);font-family:'Geist Mono',monospace;font-size:10.5px;color:#3E6B58;letter-spacing:.06em\">\n      \u2713 Vous \u00eates sur la liste. On vous tient inform\u00e9.\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- MOBILE BAR -->\n<div class=\"mob-bar\">\n  <div class=\"mob-brand\"><span class=\"mob-name\">Ort<em>ive<\/em><\/span><\/div>\n  <span class=\"mob-step-lbl\" id=\"mob-label\">Construire \u00b7 \u00c9tape 1<\/span>\n  <div class=\"mob-menu-btn\" onclick=\"openSide()\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"rgba(255,255,255,.6)\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"\/><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"\/><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"\/><\/svg><\/div>\n<\/div>\n<div class=\"mob-ov\" id=\"mob-ov\" onclick=\"closeSide()\"><\/div>\n\n<!-- MASTHEAD -->\n<header class=\"masthead\">\n  <div class=\"mast-brand\">\n    <div class=\"mast-dot\"><\/div>\n    <span class=\"mast-name\">Ort<em>ive<\/em><span class=\"mast-sub\">Studio<\/span><\/span>\n  <\/div>\n  <div class=\"mast-step\" id=\"mast-step\">Construire <span>\u00b7<\/span> \u00c9tape 1 sur 5<\/div>\n  <div class=\"mast-byok\">\n    <div class=\"byok-disconnected\" id=\"byok-dis\">\n      <select class=\"byok-select\" id=\"gw-provider\" onchange=\"gwProviderChange()\">\n        <optgroup label=\"\u2500\u2500 Frontier \u2500\u2500\">\n          <option value=\"anthropic\">Claude \u2014 Anthropic<\/option>\n          <option value=\"openai\">GPT-4o \u2014 OpenAI<\/option>\n          <option value=\"google\">Gemini 1.5 Flash \u2014 Google<\/option>\n          <option value=\"xai\">Grok-2 \u2014 xAI<\/option>\n          <option value=\"mistral\">Mistral Large<\/option>\n          <option value=\"deepseek\">DeepSeek Chat<\/option>\n          <option value=\"cohere\">Command R+ \u2014 Cohere<\/option>\n        <\/optgroup>\n        <optgroup label=\"\u2500\u2500 Rapide \/ Open Source \u2500\u2500\">\n          <option value=\"groq\">Llama 3.3 70B \u2014 Groq<\/option>\n          <option value=\"together\">Llama 3.3 \u2014 Together AI<\/option>\n          <option value=\"fireworks\">Llama 3.1 405B \u2014 Fireworks<\/option>\n          <option value=\"perplexity\">Sonar Pro \u2014 Perplexity<\/option>\n        <\/optgroup>\n      <\/select>\n      <input class=\"byok-key-inp\" type=\"password\" id=\"gw-key\" placeholder=\"sk-ant-api...\" autocomplete=\"off\" onkeydown=\"if(event.key==='Enter')gwConnect()\"\/>\n      <button class=\"byok-connect-btn\" id=\"gw-btn\" onclick=\"gwConnect()\">Connecter <span class=\"arrow\">\u2192<\/span><\/button>\n    <\/div>\n    <div class=\"byok-connected\" id=\"byok-con\">\n      <div class=\"byok-pulse\"><\/div>\n      <span class=\"byok-name\" id=\"byok-name\">Claude \u2014 Anthropic<\/span>\n      <button class=\"byok-change\" onclick=\"gwReset()\">Changer<\/button>\n    <\/div>\n  <\/div>\n<\/header>\n\n<!-- LAYOUT -->\n<div class=\"layout\">\n\n<!-- SIDEBAR -->\n<aside class=\"sidebar\" id=\"sidebar\">\n  <div class=\"side-section\">Construire<\/div>\n  <button class=\"nav-item on\" data-v=\"b1\" onclick=\"nav('b1',this)\"><div class=\"nav-num\" id=\"nn-b1\">1<\/div><span class=\"nav-label\">Type de produit<\/span><div class=\"nav-dot\"><\/div><\/button>\n  <button class=\"nav-item\" data-v=\"b2\" onclick=\"nav('b2',this)\"><div class=\"nav-num\" id=\"nn-b2\">2<\/div><span class=\"nav-label\">Conception IA<\/span><div class=\"nav-dot\"><\/div><\/button>\n  <button class=\"nav-item\" data-v=\"b3\" onclick=\"nav('b3',this)\"><div class=\"nav-num\" id=\"nn-b3\">3<\/div><span class=\"nav-label\">Fonctionnalit\u00e9s<\/span><div class=\"nav-dot\"><\/div><\/button>\n  <button class=\"nav-item\" data-v=\"b4\" onclick=\"nav('b4',this)\"><div class=\"nav-num\" id=\"nn-b4\">4<\/div><span class=\"nav-label\">Flux de travail<\/span><div class=\"nav-dot\"><\/div><\/button>\n  <button class=\"nav-item\" data-v=\"b5\" onclick=\"nav('b5',this)\"><div class=\"nav-num\" id=\"nn-b5\">5<\/div><span class=\"nav-label\">Guide de d\u00e9ploiement<\/span><div class=\"nav-dot\"><\/div><\/button>\n  <div class=\"side-divider\"><\/div>\n  <div class=\"side-section\">Mon\u00e9tiser<\/div>\n  <button class=\"nav-item\" data-v=\"m1\" onclick=\"nav('m1',this)\"><div class=\"nav-num\" id=\"nn-m1\">A<\/div><span class=\"nav-label\">D\u00e9finir l'offre<\/span><div class=\"nav-dot\"><\/div><\/button>\n  <button class=\"nav-item\" data-v=\"m2\" onclick=\"nav('m2',this)\"><div class=\"nav-num\" id=\"nn-m2\">B<\/div><span class=\"nav-label\">Package commercial<\/span><div class=\"nav-dot\"><\/div><\/button>\n  <button class=\"nav-item\" data-v=\"m3\" onclick=\"nav('m3',this)\"><div class=\"nav-num\" id=\"nn-m3\">C<\/div><span class=\"nav-label\">Page de vente<\/span><div class=\"nav-dot\"><\/div><\/button>\n  <button class=\"nav-item\" data-v=\"m4\" onclick=\"nav('m4',this)\"><div class=\"nav-num\" id=\"nn-m4\">D<\/div><span class=\"nav-label\">Prospection<\/span><div class=\"nav-dot\"><\/div><\/button>\n  <button class=\"nav-item\" data-v=\"m5\" onclick=\"nav('m5',this)\"><div class=\"nav-num\" id=\"nn-m5\">E<\/div><span class=\"nav-label\">Mod\u00e8le de revenus<\/span><div class=\"nav-dot\"><\/div><\/button>\n  <div class=\"side-foot\"><div class=\"side-avi\">O<\/div><div><div class=\"side-foot-name\">Ortive Studio<\/div><div class=\"side-foot-sub\">Acc\u00e8s anticip\u00e9<\/div><\/div><\/div>\n<\/aside>\n\n<!-- MAIN -->\n<main class=\"main\">\n\n<!-- B1 -->\n<div class=\"view on\" id=\"v-b1\">\n  <div style=\"margin-bottom:32px\">\n    <div class=\"eyebrow\">Construire \u2014 \u00c9tape 1 sur 5<\/div>\n    <h1 class=\"pg-h1\">Quel produit IA allez-vous lancer&nbsp;?<\/h1>\n    <p class=\"pg-sub\">S\u00e9lectionnez un type de produit. Votre sch\u00e9ma, vos modules et votre guide de d\u00e9ploiement s'adapteront \u00e0 ce choix.<\/p>\n  <\/div>\n  <div class=\"g4\" id=\"type-grid\"><\/div>\n  <div style=\"margin-top:24px;display:flex;justify-content:flex-end\">\n    <button class=\"btn btn-dark btn-xl btn-arrow\" id=\"btn-next-type\" onclick=\"nav('b2')\" disabled>Continuer vers le sch\u00e9ma&nbsp;<\/button>\n  <\/div>\n<\/div>\n\n<!-- B2 -->\n<div class=\"view\" id=\"v-b2\">\n  <div style=\"margin-bottom:32px\">\n    <div class=\"eyebrow\">Construire \u2014 \u00c9tape 2 sur 5<\/div>\n    <h1 class=\"pg-h1\">Conception de votre produit IA<\/h1>\n    <p class=\"pg-sub\">D\u00e9crivez votre produit. Plus votre contexte est pr\u00e9cis, plus le sch\u00e9ma est profond.<\/p>\n  <\/div>\n  <div class=\"g2\" style=\"gap:22px\">\n    <div class=\"col gap14\">\n      <div class=\"card\">\n        <div class=\"row gap10\" style=\"margin-bottom:18px\">\n          <div id=\"b2-type-icon\" style=\"width:36px;height:36px;background:#E8E2D5;display:grid;place-items:center;flex-shrink:0\"><\/div>\n          <div><div class=\"ct\" id=\"b2-type-lbl\">Type s\u00e9lectionn\u00e9<\/div><div class=\"cs\" id=\"b2-type-desc\">Configurez ci-dessous<\/div><\/div>\n        <\/div>\n        <div id=\"b2-mode-chips\"><\/div>\n        <div id=\"b2-fields\"><\/div>\n        <button class=\"btn btn-dark btn-full btn-arrow\" style=\"margin-top:14px\" id=\"btn-gen-bp\" onclick=\"genBlueprint()\">G\u00e9n\u00e9rer le sch\u00e9ma&nbsp;<\/button>\n      <\/div>\n    <\/div>\n    <div class=\"card\" id=\"b2-out\" style=\"min-height:380px;padding:0;overflow:hidden\">\n      <div class=\"empty\" style=\"padding:24px\">\n        <svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#A09880\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><\/svg>\n        <span>Votre sch\u00e9ma appara\u00eetra ici \u2014 architecture, scripts, flux et mon\u00e9tisation<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div style=\"margin-top:16px;display:flex;justify-content:flex-end\">\n    <button class=\"btn btn-ghost btn-arrow\" onclick=\"nav('b3')\">Suivant : Fonctionnalit\u00e9s&nbsp;<\/button>\n  <\/div>\n<\/div>\n\n<!-- B3 -->\n<div class=\"view\" id=\"v-b3\">\n  <div style=\"margin-bottom:32px\">\n    <div class=\"eyebrow\">Construire \u2014 \u00c9tape 3 sur 5<\/div>\n    <h1 class=\"pg-h1\">Modules de fonctionnalit\u00e9s<\/h1>\n    <p class=\"pg-sub\">Activez ce que votre produit peut faire. Votre guide de d\u00e9ploiement r\u00e9f\u00e9rencera tout ce que vous activez ici.<\/p>\n  <\/div>\n  <div class=\"card\" style=\"margin-bottom:16px\">\n    <div class=\"between\"><div><div class=\"ct\">Modules actifs<\/div><div class=\"cs\">Combinez librement entre les cat\u00e9gories<\/div><\/div><span class=\"badge bg\" id=\"cap-badge\">0 actif<\/span><\/div>\n  <\/div>\n  <div class=\"g2\" id=\"cap-grid\"><\/div>\n  <div style=\"margin-top:16px;display:flex;justify-content:flex-end\">\n    <button class=\"btn btn-ghost btn-arrow\" onclick=\"nav('b4')\">Construire le flux&nbsp;<\/button>\n  <\/div>\n<\/div>\n\n<!-- B4 -->\n<div class=\"view\" id=\"v-b4\">\n  <div style=\"margin-bottom:32px\">\n    <div class=\"eyebrow\">Construire \u2014 \u00c9tape 4 sur 5<\/div>\n    <h1 class=\"pg-h1\">Flux de travail<\/h1>\n    <p class=\"pg-sub\">Flux d'ex\u00e9cution de bout en bout, canaux de diffusion et r\u00e8gles de comportement.<\/p>\n  <\/div>\n  <div class=\"card\" style=\"margin-bottom:16px\">\n    <div class=\"between\">\n      <div><div class=\"ct\">G\u00e9n\u00e9r\u00e9 automatiquement<\/div><div class=\"cs\">Se met \u00e0 jour selon vos fonctionnalit\u00e9s et canaux<\/div><\/div>\n      <button class=\"btn btn-ghost btn-sm\" onclick=\"buildWorkflow()\">\n        <svg width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"23 4 23 10 17 10\"\/><polyline points=\"1 20 1 14 7 14\"\/><path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"\/><\/svg>\n        R\u00e9g\u00e9n\u00e9rer\n      <\/button>\n    <\/div>\n  <\/div>\n  <div class=\"g2\" style=\"gap:18px\">\n    <div class=\"col gap14\">\n      <div class=\"card\"><div class=\"ct\" style=\"margin-bottom:14px\">Flux d'ex\u00e9cution<\/div><div id=\"wf-steps\"><\/div><\/div>\n    <\/div>\n    <div class=\"col gap14\">\n      <div class=\"card\"><div class=\"ct\" style=\"margin-bottom:12px\">Canaux de diffusion<\/div><div id=\"wf-channels\"><\/div><\/div>\n      <div class=\"card\">\n        <div class=\"ct\" style=\"margin-bottom:11px\">R\u00e8gles de comportement<\/div>\n        <div id=\"wf-rules\"><\/div>\n        <div style=\"display:flex;gap:8px;margin-top:12px;align-items:flex-end\">\n          <div style=\"flex:1\"><input type=\"text\" id=\"rule-inp\" placeholder=\"Ajouter une r\u00e8gle\u2026\" onkeydown=\"if(event.key==='Enter')addRule()\" style=\"font-size:15px\"\/><\/div>\n          <button class=\"btn btn-dark btn-sm\" onclick=\"addRule()\">+<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div style=\"margin-top:16px;display:flex;justify-content:flex-end\">\n    <button class=\"btn btn-ghost btn-arrow\" onclick=\"nav('b5')\">Guide de d\u00e9ploiement&nbsp;<\/button>\n  <\/div>\n<\/div>\n\n<!-- B5 -->\n<div class=\"view\" id=\"v-b5\">\n  <div style=\"margin-bottom:32px\">\n    <div class=\"eyebrow\">Construire \u2014 \u00c9tape 5 sur 5<\/div>\n    <h1 class=\"pg-h1\">Guide de d\u00e9ploiement<\/h1>\n    <p class=\"pg-sub\">Outils r\u00e9els, prix r\u00e9els, phases de construction r\u00e9elles \u2014 g\u00e9n\u00e9r\u00e9 depuis tout ce que vous avez configur\u00e9.<\/p>\n  <\/div>\n  <div class=\"g2\" style=\"gap:22px\">\n    <div class=\"col gap12\">\n      <div class=\"inset-accent\"><div class=\"lbl\">R\u00e9sum\u00e9 de session<\/div><div id=\"b5-summary\" class=\"col gap6\"><\/div><\/div>\n      <button class=\"btn btn-dark btn-full btn-arrow\" id=\"btn-gen-deploy\" onclick=\"genDeploy()\">G\u00e9n\u00e9rer le guide&nbsp;<\/button>\n      <button class=\"btn btn-ghost btn-full\" id=\"btn-copy-deploy\" onclick=\"copyDeploy()\" disabled>Copier le guide complet<\/button>\n      <div class=\"card\" style=\"background:rgba(62,107,88,.05);border-color:rgba(62,107,88,.4)\">\n        <div class=\"ct\" style=\"margin-bottom:6px;font-size:13px\">Piste Construire termin\u00e9e<\/div>\n        <div class=\"body\" style=\"font-size:12px;margin-bottom:12px\">Passez \u00e0 la piste Mon\u00e9tiser pour g\u00e9n\u00e9rer votre grille tarifaire, page de vente, s\u00e9quence de prospection et projections de revenus.<\/div>\n        <button class=\"btn btn-accent btn-full btn-arrow\" onclick=\"nav('m1')\">Aller vers Mon\u00e9tiser&nbsp;<\/button>\n      <\/div>\n    <\/div>\n    <div class=\"card\" id=\"b5-out\" style=\"min-height:450px;max-height:78vh;overflow-y:auto;padding:0\">\n      <div class=\"empty\" style=\"padding:24px\">\n        <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#A09880\" stroke-width=\"1.2\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><\/svg>\n        <span>Stack technique, phases de construction, checklist et estimations appara\u00eetront ici<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- M1 -->\n<div class=\"view\" id=\"v-m1\">\n  <div style=\"margin-bottom:32px\">\n    <div class=\"eyebrow\">Mon\u00e9tiser \u2014 \u00c9tape A sur E<\/div>\n    <h1 class=\"pg-h1\">D\u00e9finir votre offre<\/h1>\n    <p class=\"pg-sub\">Le contexte de votre session est pr\u00e9rempli. Ajustez avant de g\u00e9n\u00e9rer votre package complet.<\/p>\n  <\/div>\n  <div class=\"g2\" style=\"gap:22px\">\n    <div class=\"card\">\n      <div class=\"lbl\" style=\"margin-bottom:10px\">Secteur d'activit\u00e9<\/div>\n      <input type=\"text\" id=\"m-industry\" value=\"Sant\u00e9\" style=\"margin-bottom:20px\"\/>\n      <div class=\"lbl\" style=\"margin-bottom:10px\">Probl\u00e8me que vous r\u00e9solvez<\/div>\n      <textarea id=\"m-problem\" rows=\"3\" style=\"margin-bottom:20px\">Patients qui manquent leurs rendez-vous, taux d'absence \u00e9lev\u00e9, personnel perdu sur les rappels manuels<\/textarea>\n      <div class=\"lbl\" style=\"margin-bottom:10px\">Client id\u00e9al<\/div>\n      <input type=\"text\" id=\"m-customer\" value=\"Cabinets dentaires priv\u00e9s, 3\u201315 employ\u00e9s, 20+ rendez-vous\/jour\" style=\"margin-bottom:20px\"\/>\n      <div class=\"lbl\" style=\"margin-bottom:10px\">Diff\u00e9renciateur cl\u00e9<\/div>\n      <input type=\"text\" id=\"m-diff\" value=\"Enti\u00e8rement autonome \u2014 fonctionne 24h\/24 sans intervention du personnel\" style=\"margin-bottom:20px\"\/>\n      <div class=\"lbl\">Mod\u00e8le tarifaire<\/div>\n      <div class=\"chip-group\" id=\"m-pricing-btns\"><\/div>\n      <div class=\"lbl\">Prix : <span id=\"m-price-disp\">97<\/span> \u20ac\/mois<\/div>\n      <input type=\"range\" id=\"m-price-slider\" min=\"9\" max=\"497\" value=\"97\" oninput=\"document.getElementById('m-price-disp').textContent=this.value\" style=\"margin-bottom:18px\"\/>\n    <\/div>\n    <div class=\"card\">\n      <div class=\"ct\" style=\"margin-bottom:16px\">Aper\u00e7u de l'offre<\/div>\n      <div class=\"col gap10\">\n        <div class=\"inset\"><div class=\"lbl\">Produit<\/div><div style=\"font-family:'Instrument Serif',serif;font-style:italic;font-size:18px;color:#13120D\" id=\"m1-name\">\u2014<\/div><div class=\"cs\" id=\"m1-type\">\u2014<\/div><\/div>\n        <div class=\"inset\"><div class=\"lbl\">Tarif<\/div><div style=\"font-family:'Instrument Serif',serif;font-style:italic;font-size:32px;color:#13120D\"><span id=\"m1-price\">97<\/span><span style=\"font-size:14px;font-style:normal;color:#7A7266\"> \u20ac\/mois<\/span><\/div><div class=\"cs\" id=\"m1-model\">Abonnement<\/div><\/div>\n        <div class=\"inset\"><div class=\"lbl\">Client cible<\/div><div class=\"body\" style=\"font-size:12.5px\" id=\"m1-target\">Cabinets dentaires priv\u00e9s\u2026<\/div><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div class=\"card\" style=\"margin-top:16px\">\n    <button class=\"btn btn-dark btn-full btn-arrow\" onclick=\"nav('m2')\">Continuer vers le package commercial&nbsp;<\/button>\n  <\/div>\n<\/div>\n\n<!-- M2 -->\n<div class=\"view\" id=\"v-m2\">\n  <div style=\"margin-bottom:32px\">\n    <div class=\"eyebrow\">Mon\u00e9tiser \u2014 \u00c9tape B sur E<\/div>\n    <h1 class=\"pg-h1\">Package commercial<\/h1>\n    <p class=\"pg-sub\">Nom de produit, accroche, titre h\u00e9ro, arguments de vente et grille tarifaire.<\/p>\n  <\/div>\n  <div class=\"g2\" style=\"gap:22px\">\n    <div class=\"card\"><div class=\"ct\" style=\"margin-bottom:6px\">Package commercial IA<\/div><div class=\"cs\" style=\"margin-bottom:18px\">G\u00e9n\u00e8re nom, accroche, titre, arguments et grille tarifaire depuis votre offre.<\/div>\n      <button class=\"btn btn-dark btn-full btn-arrow\" id=\"btn-gen-offer\" onclick=\"genOffer()\">G\u00e9n\u00e9rer le package&nbsp;<\/button>\n    <\/div>\n    <div class=\"card\" id=\"m2-out\" style=\"min-height:260px\"><div class=\"empty\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#A09880\" stroke-width=\"1.2\"><line x1=\"16.5\" y1=\"9.4\" x2=\"7.5\" y2=\"4.21\"\/><path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"\/><\/svg><span>Nom, accroche, titre h\u00e9ro, arguments et grille tarifaire appara\u00eetront ici<\/span><\/div><\/div>\n  <\/div>\n  <div style=\"margin-top:16px;display:flex;justify-content:flex-end\"><button class=\"btn btn-ghost btn-arrow\" onclick=\"nav('m3')\">Suivant : Page de vente&nbsp;<\/button><\/div>\n<\/div>\n\n<!-- M3 -->\n<div class=\"view\" id=\"v-m3\">\n  <div style=\"margin-bottom:32px\">\n    <div class=\"eyebrow\">Mon\u00e9tiser \u2014 \u00c9tape C sur E<\/div>\n    <h1 class=\"pg-h1\">Page de vente<\/h1>\n    <p class=\"pg-sub\">H\u00e9ro, probl\u00e8me, solution, fonctionnalit\u00e9s, t\u00e9moignages, FAQ et appel \u00e0 l'action \u2014 pr\u00eat \u00e0 coller dans n'importe quel constructeur.<\/p>\n  <\/div>\n  <div class=\"card\" style=\"margin-bottom:16px\"><button class=\"btn btn-dark btn-full btn-arrow\" id=\"btn-gen-lp\" onclick=\"genLP()\">G\u00e9n\u00e9rer la page de vente&nbsp;<\/button><\/div>\n  <div class=\"card\" id=\"m3-out\" style=\"min-height:180px\"><div class=\"empty\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#A09880\" stroke-width=\"1.2\"><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"1\"\/><\/svg><span>Toutes les sections de la page de vente appara\u00eetront ici<\/span><\/div><\/div>\n  <div style=\"margin-top:16px;display:flex;justify-content:flex-end\"><button class=\"btn btn-ghost btn-arrow\" onclick=\"nav('m4')\">Suivant : Prospection&nbsp;<\/button><\/div>\n<\/div>\n\n<!-- M4 -->\n<div class=\"view\" id=\"v-m4\">\n  <div style=\"margin-bottom:32px\">\n    <div class=\"eyebrow\">Mon\u00e9tiser \u2014 \u00c9tape D sur E<\/div>\n    <h1 class=\"pg-h1\">S\u00e9quence de prospection<\/h1>\n    <p class=\"pg-sub\">3 e-mails \u00e0 froid \u2014 introduction, relance valeur et rupture \u2014 r\u00e9dig\u00e9s pour votre client id\u00e9al.<\/p>\n  <\/div>\n  <div class=\"card\" style=\"margin-bottom:16px\"><button class=\"btn btn-dark btn-full btn-arrow\" id=\"btn-gen-out\" onclick=\"genOutreach()\">G\u00e9n\u00e9rer la s\u00e9quence de 3 e-mails&nbsp;<\/button><\/div>\n  <div class=\"col gap12\" id=\"m4-out\"><div class=\"card\"><div class=\"empty\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#A09880\" stroke-width=\"1.2\"><path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"\/><polyline points=\"22,6 12,13 2,6\"\/><\/svg><span>Trois e-mails pr\u00eats \u00e0 envoyer appara\u00eetront ici<\/span><\/div><\/div><\/div>\n  <div style=\"margin-top:16px;display:flex;justify-content:flex-end\"><button class=\"btn btn-ghost btn-arrow\" onclick=\"nav('m5')\">Suivant : Mod\u00e8le de revenus&nbsp;<\/button><\/div>\n<\/div>\n\n<!-- M5 -->\n<div class=\"view\" id=\"v-m5\">\n  <div style=\"margin-bottom:32px\">\n    <div class=\"eyebrow\">Mon\u00e9tiser \u2014 \u00c9tape E sur E<\/div>\n    <h1 class=\"pg-h1\">Mod\u00e8le de revenus<\/h1>\n    <p class=\"pg-sub\">Ajustez vos hypoth\u00e8ses de croissance. Visualisez votre business \u00e0 chaque \u00e9tape cl\u00e9.<\/p>\n  <\/div>\n  <div class=\"g2\" style=\"gap:22px\">\n    <div class=\"col gap14\">\n      <div class=\"card\">\n        <div class=\"ct\" style=\"margin-bottom:12px\">Projections de revenus<\/div>\n        <div class=\"cs\" style=\"margin-bottom:18px\">\u00c0 <span id=\"rev-pr\">97<\/span> \u20ac\/mois. Faites glisser les curseurs.<\/div>\n        <div class=\"lbl\">Clients au mois 3<\/div><input type=\"range\" id=\"rc3\" min=\"1\" max=\"80\" value=\"8\" oninput=\"calcRev()\" style=\"margin-bottom:14px\"\/>\n        <div class=\"lbl\">Clients au mois 6<\/div><input type=\"range\" id=\"rc6\" min=\"5\" max=\"200\" value=\"30\" oninput=\"calcRev()\" style=\"margin-bottom:14px\"\/>\n        <div class=\"lbl\">Clients au mois 12<\/div><input type=\"range\" id=\"rc12\" min=\"10\" max=\"400\" value=\"80\" oninput=\"calcRev()\" style=\"margin-bottom:14px\"\/>\n        <div class=\"lbl\">Taux d'attrition mensuel (%)<\/div><input type=\"range\" id=\"rch\" min=\"0\" max=\"15\" value=\"5\" oninput=\"calcRev()\" style=\"margin-bottom:18px\"\/>\n        <div id=\"rev-out\" class=\"col gap9\"><\/div>\n      <\/div>\n    <\/div>\n    <div class=\"col gap14\">\n      <div class=\"card\" style=\"background:rgba(62,107,88,.04);border-color:rgba(62,107,88,.3)\">\n        <div class=\"ct\" style=\"margin-bottom:12px\">Check-list de lancement<\/div>\n        <div id=\"gtm-list\" class=\"col gap7\"><\/div>\n      <\/div>\n      <div class=\"card\">\n        <div class=\"ct\" style=\"margin-bottom:7px\">Exporter la session compl\u00e8te<\/div>\n        <div class=\"cs\" style=\"margin-bottom:14px\">Copiez le sch\u00e9ma, textes de vente, e-mails et projections dans votre presse-papiers.<\/div>\n        <button class=\"btn btn-dark btn-full\" onclick=\"exportAll()\">Copier le package complet<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<\/main>\n<\/div>\n<div id=\"toast\"><\/div>\n\n<script>\n\/* \u2550\u2550 BYOK \u2550\u2550 *\/\nvar BYOK_PROVIDERS={\n  anthropic:{label:'Claude \u2014 Anthropic',ph:'sk-ant-api...',model:'claude-sonnet-4-20250514'},\n  openai:{label:'GPT-4o \u2014 OpenAI',ph:'sk-proj-...',model:'gpt-4o'},\n  google:{label:'Gemini 1.5 Flash \u2014 Google',ph:'AIzaSy...',model:'gemini-1.5-flash'},\n  xai:{label:'Grok-2 \u2014 xAI',ph:'xai-...',model:'grok-2-latest'},\n  mistral:{label:'Mistral Large',ph:'your-key...',model:'mistral-large-latest'},\n  deepseek:{label:'DeepSeek Chat',ph:'sk-...',model:'deepseek-chat'},\n  cohere:{label:'Command R+ \u2014 Cohere',ph:'your-key...',model:'command-r-plus'},\n  groq:{label:'Llama 3.3 70B \u2014 Groq',ph:'gsk_...',model:'llama-3.3-70b-versatile'},\n  together:{label:'Llama 3.3 \u2014 Together AI',ph:'your-key...',model:'meta-llama\/Llama-3.3-70B-Instruct-Turbo'},\n  fireworks:{label:'Llama 3.1 405B \u2014 Fireworks',ph:'fw-...',model:'accounts\/fireworks\/models\/llama-v3p1-405b-instruct'},\n  perplexity:{label:'Sonar Pro \u2014 Perplexity',ph:'pplx-...',model:'sonar-pro'}\n};\nfunction gwProviderChange(){var p=document.getElementById('gw-provider').value;var inp=document.getElementById('gw-key');if(inp)inp.placeholder=BYOK_PROVIDERS[p].ph;}\nfunction gwConnect(){\n  var key=(document.getElementById('gw-key').value||'').trim();\n  var provider=document.getElementById('gw-provider').value;\n  if(!key){document.getElementById('gw-key').style.borderColor='#E05252';setTimeout(function(){document.getElementById('gw-key').style.borderColor='';},1200);return;}\n  sessionStorage.setItem('ortive_key',key);sessionStorage.setItem('ortive_provider',provider);\n  showConnected(provider);toast(BYOK_PROVIDERS[provider].label+' connect\u00e9.');\n}\nfunction gwReset(){sessionStorage.removeItem('ortive_key');sessionStorage.removeItem('ortive_provider');document.getElementById('gw-key').value='';document.getElementById('byok-dis').classList.remove('hide');document.getElementById('byok-con').classList.remove('show');}\nfunction showConnected(provider){document.getElementById('byok-name').textContent=BYOK_PROVIDERS[provider].label;document.getElementById('byok-dis').classList.add('hide');document.getElementById('byok-con').classList.add('show');}\n\n\/* \u2550\u2550 STATE \u2550\u2550 *\/\nvar SHEETS='https:\/\/script.google.com\/macros\/s\/AKfycbyIaKOXR5FZqN2CPPugCHXQXOpsdUgftucEfQl7XqbYygHiKy48wNvzVzo9WKGB1jsbsg\/exec';\nvar USES_KEY='ortive_uses_v2';\nvar MAX_USES=3;\n\nfunction getUses(){return parseInt(localStorage.getItem(USES_KEY)||'0');}\nfunction incrementUses(){localStorage.setItem(USES_KEY,getUses()+1);}\nfunction checkCap(){if(getUses()>=MAX_USES){openCapPopup();return false;}return true;}\nfunction openCapPopup(){var ov=document.getElementById('cap-overlay');if(ov)ov.classList.remove('hidden');}\nfunction closeCapPopup(){var ov=document.getElementById('cap-overlay');if(ov)ov.classList.add('hidden');}\nfunction submitCapEmail(){\n  var em=(document.getElementById('cap-email')||{}).value||'';\n  if(!em||!em.includes('@'))return;\n  var btn=document.querySelector('.cap-form button');if(btn){btn.textContent='Envoi\\u2026';btn.disabled=true;}\n  fetch(SHEETS,{method:'POST',mode:'no-cors',headers:{'Content-Type':'application\/json'},body:JSON.stringify({email:em,source:'ortive-studio-fr',ts:new Date().toISOString()})})\n  .finally(function(){\n    var f=document.querySelector('.cap-form');if(f)f.style.display='none';\n    var s=document.getElementById('cap-success');if(s)s.style.display='block';\n    var n=document.querySelector('.cap-note');if(n)n.style.display='none';\n  });\n}\nvar S={\n  type:null,typeName:'',typeDesc:'',typeColor:'',typeBg:'',typeIcon:'',\n  modeChip:'',name:'',desc:'',\n  caps:{},\n  rules:['Identifier l\\u2019utilisateur avant de partager des informations personnalis\\u00e9es.','Escalader vers un humain apr\\u00e8s deux expressions de frustration.','Proposer les tarifs d\\u00e8s que l\\u2019intention d\\u2019achat est d\\u00e9tect\\u00e9e.'],\n  channels:{'\\u00c9l\\u00e9phone\/Voix':false,'Widget Chat':true,'WhatsApp':true,'SMS':false,'E-mail':true,'API REST':false},\n  blueprint:null,bpTabs:[],deployRaw:'',\n  offerData:null,lpData:null,outreachData:null,pricingModel:'Abonnement'\n};\n\n\/* \u2550\u2550 PRODUCT TYPES \u2550\u2550 *\/\nvar TYPES=[\n  {id:'agent',name:'Agent IA',color:'#13120D',bg:'#E8E2D5',desc:'IA autonome qui qualifie, r\\u00e9serve et fait des relances 24h\/24.',icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"1\"\/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/><circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\" stroke=\"none\"\/><\/svg>',chips:['Qualification de leads','Support client','Prise de rendez-vous','Prospection commerciale','Int\\u00e9gration patients','Collecte de donn\\u00e9es','Op\\u00e9rations internes','Personnalis\\u00e9'],chiplabel:'Type d\\u2019agent',extra:[{id:'channel',label:'Canal de diffusion',type:'select',opts:['WhatsApp','T\\u00e9l\\u00e9phone \/ Voix','Widget Chat','SMS','E-mail','Slack \/ Teams','API','Multicanal']},{id:'role',label:'R\\u00f4le de l\\u2019agent',placeholder:'ex.\\u00a0: Qualifier les leads entrants et r\\u00e9server des d\\u00e9mos'},{id:'buyer',label:'Qui ach\\u00e8te cet agent\\u00a0?',placeholder:'ex.\\u00a0: Fondateurs SaaS B2B, 50k\\u2013500k MRR'}]},\n  {id:'saas',name:'Application SaaS',color:'#13120D',bg:'#E8E2D5',desc:'Plateforme web o\\u00f9 les clients se connectent et paient chaque mois.',icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"1\"\/><line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"\/><line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"\/><\/svg>',chips:['CRM \/ Ventes','Marketing','Productivit\\u00e9','Analytique','RH \/ People Ops','Finance \/ Facturation','DevOps \/ Infra','Personnalis\\u00e9'],chiplabel:'Cat\\u00e9gorie SaaS',extra:[{id:'comp',label:'Concurrent principal',placeholder:'ex.\\u00a0: HubSpot, Salesforce'},{id:'startprice',label:'Prix de lancement cible',placeholder:'ex.\\u00a0: 99\\u20ac\/mois par utilisateur'},{id:'icp',label:'Profil client id\\u00e9al',placeholder:'ex.\\u00a0: \\u00c9quipes RevOps de startups S\\u00e9rie A\\u2013B'}]},\n  {id:'chatbot',name:'Chatbot',color:'#13120D',bg:'#E8E2D5',desc:'Widget conversationnel int\\u00e9gr\\u00e9 sur un site ou une application.',icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\/><\/svg>',chips:['Capture de leads','Bot FAQ','Bot support','Guide d\\u2019int\\u00e9gration','Recommandation produit','Bot de r\\u00e9servation','Sondage','Personnalis\\u00e9'],chiplabel:'Objectif du chatbot',extra:[{id:'platform',label:'Int\\u00e9gr\\u00e9 sur',type:'select',opts:['Site web','Application web','Application mobile','Messenger','Slack','WhatsApp','Plusieurs plateformes']},{id:'user',label:'Utilisateur final',placeholder:'ex.\\u00a0: Utilisateurs en essai gratuit SaaS'}]},\n  {id:'api',name:'API REST',color:'#13120D',bg:'#E8E2D5',desc:'Endpoint IA sans interface que d\\u2019autres produits int\\u00e8grent.',icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"16 18 22 12 16 6\"\/><polyline points=\"8 6 2 12 8 18\"\/><\/svg>',chips:['Scoring de CV','Analyse de sentiment','Mod\\u00e9ration de contenu','Extraction d\\u2019entit\\u00e9s','Classification','Traduction','Analyse d\\u2019image','Personnalis\\u00e9'],chiplabel:'Fonction de l\\u2019API',extra:[{id:'output',label:'Format de r\\u00e9ponse',type:'select',opts:['JSON','JSON + Score de confiance','Sch\\u00e9ma structur\\u00e9','Texte brut','\\u00c9v\\u00e9nement webhook']},{id:'devbuyer',label:'Qui construit avec cet API\\u00a0?',placeholder:'ex.\\u00a0: D\\u00e9veloppeurs de plateformes RH'}]},\n  {id:'automation',name:'Automatisation',color:'#13120D',bg:'#E8E2D5',desc:'Flux de travail IA qui d\\u00e9clenche des actions dans tout votre stack.',icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2a3 3 0 1 0 0 6m7-3a3 3 0 1 0 0 6M5 9a3 3 0 1 0 0 6m7 3v-3m-3.5-3.5 2 2m5-2-2 2\"\/><\/svg>',chips:['Traitement de factures','Routage de leads','Analyse de contrats','Alertes de stock','Planification r\\u00e9seaux sociaux','Flux d\\u2019int\\u00e9gration','G\\u00e9n\\u00e9ration de rapports','Personnalis\\u00e9'],chiplabel:'Type d\\u2019automatisation',extra:[{id:'trigger',label:'D\\u00e9clencheur principal',placeholder:'ex.\\u00a0: Nouvelle soumission de formulaire, e-mail entrant'},{id:'stack',label:'Outils de votre stack',placeholder:'ex.\\u00a0: HubSpot, Slack, Google Sheets, Notion'}]},\n  {id:'mobile',name:'Application mobile',color:'#13120D',bg:'#E8E2D5',desc:'Exp\\u00e9rience mobile native ou PWA propuls\\u00e9e par l\\u2019IA.',icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"1\"\/><line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\"\/><\/svg>',chips:['Forme & Bien-\\u00eatre','Apprentissage des langues','Finance \/ Budget','Suivi sant\\u00e9','Productivit\\u00e9','\\u00c9ducation','Vie sociale','Personnalis\\u00e9'],chiplabel:'Cat\\u00e9gorie d\\u2019application',extra:[{id:'platform',label:'Plateforme',type:'select',opts:['iOS + Android','iOS uniquement','Android uniquement','Progressive Web App (PWA)']},{id:'muser',label:'Utilisateur cible',placeholder:'ex.\\u00a0: Ind\\u00e9pendants, \\u00e9quipes PME, jeunes actifs'}]},\n  {id:'plugin',name:'Plugin \/ Extension',color:'#13120D',bg:'#E8E2D5',desc:'Extension navigateur ou plugin CMS ajoutant l\\u2019IA \\u00e0 des outils existants.',icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2v4M4 12H2M6.34 6.34 4.93 4.93M17.66 6.34l1.41-1.41M22 12h-2M12 18v4M6.34 17.66l-1.41 1.41M17.66 17.66l1.41 1.41\"\/><\/svg>',chips:['Extension Chrome','Plugin WordPress','App Shopify','Plugin Figma','Int\\u00e9gration Notion','Extension VS Code','App Zapier','Personnalis\\u00e9'],chiplabel:'Plateforme du plugin',extra:[{id:'hostapp',label:'Application h\\u00f4te',placeholder:'ex.\\u00a0: Chrome, WordPress, Shopify'},{id:'pluguser',label:'Qui l\\u2019utilise\\u00a0?',placeholder:'ex.\\u00a0: Copywriters, propri\\u00e9taires de boutiques'}]},\n  {id:'copilot',name:'Copilote IA',color:'#13120D',bg:'#E8E2D5',desc:'Assistant IA int\\u00e9gr\\u00e9 dans un autre produit pour guider les utilisateurs.',icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2a7 7 0 0 1 7 7c0 3.87-4 7-7 9-3-2-7-5.13-7-9a7 7 0 0 1 7-7z\"\/><circle cx=\"12\" cy=\"9\" r=\"2\"\/><\/svg>',chips:['Copilote CRM','Assistant r\\u00e9daction','Revue de code','Analyse de donn\\u00e9es','Retour design','Analyse juridique','Conseil financier','Personnalis\\u00e9'],chiplabel:'Fonction du copilote',extra:[{id:'host',label:'Produit \/ Plateforme h\\u00f4te',placeholder:'ex.\\u00a0: Notion, Figma, Airtable, votre propre SaaS'},{id:'guidance',label:'Ce qu\\u2019il guide les utilisateurs \\u00e0 faire',placeholder:'ex.\\u00a0: R\\u00e9diger de meilleures relances, corriger du code'}]}\n];\n\nvar CAPS={\n  'Noyau IA':['Raisonnement LLM','Base de connaissances','M\\u00e9moire long terme','Pipeline RAG','Affinage (Fine-tuning)','Recherche vectorielle'],\n  'Communication':['Widget Chat','Voix (T\\u00e9l\\u00e9phone)','WhatsApp','E-mail automatis\\u00e9','SMS','R\\u00e9seaux sociaux'],\n  'Donn\\u00e9es & Logique':['Scoring de leads','Arbres de d\\u00e9cision','Extraction de donn\\u00e9es','Classification','Synth\\u00e8se','Traduction'],\n  'Actions':['R\\u00e9servation calendrier','Mise \\u00e0 jour CRM','Envoi de facture','Encaissement','G\\u00e9n\\u00e9ration de documents','\\u00c9criture BDD'],\n  'Int\\u00e9gration':['Zapier \/ Make','Webhooks','Appels API REST','Flux OAuth','Facturation Stripe','Google Workspace'],\n  'Infrastructure':['Auth utilisateur','Multi-locataire','Analytique','Surveillance uptime','Limitation de d\\u00e9bit','CDN \/ Edge']\n};\n\n\/* \u2550\u2550 MOBILE \u2550\u2550 *\/\nfunction openSide(){document.getElementById('sidebar').classList.add('open');document.getElementById('mob-ov').classList.add('on');document.body.style.overflow='hidden'}\nfunction closeSide(){document.getElementById('sidebar').classList.remove('open');document.getElementById('mob-ov').classList.remove('on');document.body.style.overflow=''}\n\n\/* \u2550\u2550 NAV \u2550\u2550 *\/\nvar STEP_LABELS={b1:'Construire \u00b7 \u00c9tape 1',b2:'Construire \u00b7 \u00c9tape 2',b3:'Construire \u00b7 \u00c9tape 3',b4:'Construire \u00b7 \u00c9tape 4',b5:'Construire \u00b7 \u00c9tape 5',m1:'Mon\u00e9tiser \u00b7 A',m2:'Mon\u00e9tiser \u00b7 B',m3:'Mon\u00e9tiser \u00b7 C',m4:'Mon\u00e9tiser \u00b7 D',m5:'Mon\u00e9tiser \u00b7 E'};\nvar MAST_LABELS={b1:'Construire <span>\u00b7<\/span> \u00c9tape 1 sur 5',b2:'Construire <span>\u00b7<\/span> \u00c9tape 2 sur 5',b3:'Construire <span>\u00b7<\/span> \u00c9tape 3 sur 5',b4:'Construire <span>\u00b7<\/span> \u00c9tape 4 sur 5',b5:'Construire <span>\u00b7<\/span> \u00c9tape 5 sur 5',m1:'Mon\u00e9tiser <span>\u00b7<\/span> \u00c9tape A',m2:'Mon\u00e9tiser <span>\u00b7<\/span> \u00c9tape B',m3:'Mon\u00e9tiser <span>\u00b7<\/span> \u00c9tape C',m4:'Mon\u00e9tiser <span>\u00b7<\/span> \u00c9tape D',m5:'Mon\u00e9tiser <span>\u00b7<\/span> \u00c9tape E'};\nfunction nav(v,el){\n  document.querySelectorAll('.view').forEach(function(x){x.classList.remove('on')});\n  document.querySelectorAll('.nav-item').forEach(function(x){x.classList.remove('on')});\n  var vEl=document.getElementById('v-'+v);if(vEl){vEl.classList.add('on');vEl.style.animation='none';void vEl.offsetWidth;vEl.style.animation='up .3s ease both'}\n  var nEl=el||document.querySelector('.nav-item[data-v=\"'+v+'\"]');if(nEl)nEl.classList.add('on');\n  var ms=document.getElementById('mast-step');if(ms&&MAST_LABELS[v])ms.innerHTML=MAST_LABELS[v];\n  var ml=document.getElementById('mob-label');if(ml&&STEP_LABELS[v])ml.textContent=STEP_LABELS[v];\n  closeSide();\n  if(v==='b2')setupB2();\n  if(v==='b3'){buildCapGrid();if(Object.values(S.caps).some(Boolean)){mark('b3');sessionStorage.setItem('os_done_b3','1');}}\n  if(v==='b4')buildWorkflow();\n  if(v==='b5')setupB5();\n  if(v==='m1')setupM1();\n  if(v==='m5'){var _ps=document.getElementById('m-price-slider');var _rp=document.getElementById('rev-pr');if(_ps&&_rp)_rp.textContent=_ps.value;calcRev();buildGTM();}\n  window.scrollTo(0,0);\n}\n\n\/* \u2550\u2550 B1 \u2550\u2550 *\/\nfunction buildTypeGrid(){\n  var g=document.getElementById('type-grid');if(!g)return;\n  TYPES.forEach(function(t){\n    var c=document.createElement('div');c.className='ptype'+(S.type===t.id?' sel':'');\n    c.innerHTML='<div class=\"ptype-icon\">'+t.icon.replace('<svg','<svg width=\"18\" height=\"18\" stroke=\"#13120D\"')+'<\/div><div class=\"ptype-name\">'+t.name+'<\/div><div class=\"ptype-desc\">'+t.desc+'<\/div>';\n    c.onclick=function(){S.type=t.id;S.typeName=t.name;S.typeDesc=t.desc;S.typeColor=t.color;S.typeBg=t.bg;S.typeIcon=t.icon;document.querySelectorAll('.ptype').forEach(function(x){x.classList.remove('sel')});c.classList.add('sel');document.getElementById('btn-next-type').disabled=false;mark('b1');sessionStorage.setItem('os_done_b1','1');};\n    g.appendChild(c);\n  });\n}\n\n\/* \u2550\u2550 B2 \u2550\u2550 *\/\nfunction setupB2(){\n  if(!S.type)return;\n  var t=TYPES.find(function(x){return x.id===S.type});if(!t)return;\n  var ic=document.getElementById('b2-type-icon');if(ic){ic.innerHTML=t.icon.replace('<svg','<svg width=\"16\" height=\"16\" stroke=\"#13120D\"')}\n  var lb=document.getElementById('b2-type-lbl');if(lb)lb.textContent=t.name;\n  var db=document.getElementById('b2-type-desc');if(db)db.textContent=t.desc;\n  var mc=document.getElementById('b2-mode-chips');\n  if(mc){mc.innerHTML='<div class=\"lbl\">'+t.chiplabel+'<\/div><div class=\"chip-group\" id=\"mode-chips-inner\"><\/div>';var ci=document.getElementById('mode-chips-inner');t.chips.forEach(function(chip){var btn=document.createElement('button');btn.className='chip'+(S.modeChip===chip?' on':'');btn.innerHTML='<svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>'+chip;btn.onclick=function(){document.querySelectorAll('#mode-chips-inner .chip').forEach(function(x){x.classList.remove('on')});btn.classList.add('on');S.modeChip=chip;};ci.appendChild(btn);});}\n  var df=document.getElementById('b2-fields');if(!df)return;df.innerHTML='';\n  df.innerHTML+='<div class=\"lbl\" style=\"margin-top:16px\">Nom du produit<\/div><input type=\"text\" id=\"b2-name\" placeholder=\"ex.\\u00a0: DentaFlow IA\" style=\"margin-bottom:20px\"\/>';\n  t.extra.forEach(function(f){var id='b2-'+f.id;df.innerHTML+='<div class=\"lbl\">'+f.label+'<\/div>';if(f.type==='select'){var opts=(f.opts||[]).map(function(o){return'<option>'+o+'<\/option>'}).join('');df.innerHTML+='<select id=\"'+id+'\" style=\"margin-bottom:20px\">'+opts+'<\/select>';}else{df.innerHTML+='<input type=\"text\" id=\"'+id+'\" placeholder=\"'+(f.placeholder||'')+'\" style=\"margin-bottom:20px\"\/>';}});\n  df.innerHTML+='<div class=\"lbl\">Probl\\u00e8me principal et ce que \\u00e7a r\\u00e9sout<\/div><textarea id=\"b2-desc\" rows=\"3\" placeholder=\"ex.\\u00a0: Les patients manquent 30% de leurs rendez-vous.\"><\/textarea>';\n}\n\nasync function genBlueprint(){\n  if(!checkCap())return;\n  var t=TYPES.find(function(x){return x.id===S.type});\n  var nm=(document.getElementById('b2-name')||{}).value||'';\n  var desc=(document.getElementById('b2-desc')||{}).value||'';\n  if(!desc){toast('D\\u00e9crivez votre produit d\\u2019abord.');return}\n  S.name=nm||S.typeName;S.desc=desc;\n  var extras=[];if(t)t.extra.forEach(function(f){var el=document.getElementById('b2-'+f.id);if(el&&el.value)extras.push(f.label+': '+el.value)});\n  var btn=document.getElementById('btn-gen-bp'),out=document.getElementById('b2-out');\n  btn.disabled=true;btn.innerHTML='<span class=\"spin\"><\/span> G\\u00e9n\\u00e9ration\\u2026';\n  out.innerHTML=skelHTML();\n  var isAgent=S.type==='agent',isSaas=S.type==='saas';\n  var agentExtra=isAgent?',\"systemPrompt\":\"prompt syst\\u00e8me complet de 200 mots, identit\\u00e9, comportement, contraintes\",\"opening\":\"message d\\u2019ouverture + 3 questions de qualification\",\"objections\":\"top 3 objections avec r\\u00e9ponses verbatim\",\"handoff\":\"s\\u00e9quence d\\u2019escalade et de cl\\u00f4ture\"':'';\n  var saasExtra=isSaas?',\"icpDetail\":{\"firmographics\":\"taille, secteur, CA\",\"psychographics\":\"mentalit\\u00e9, objectifs, douleurs\",\"buyingTriggers\":[\"t1\",\"t2\",\"t3\"]},\"competitors\":[{\"name\":\"c1\",\"weakness\":\"faiblesse1\",\"edge\":\"avantage1\"},{\"name\":\"c2\",\"weakness\":\"faiblesse2\",\"edge\":\"avantage2\"}],\"pricingTiers\":[{\"name\":\"Starter\",\"price\":\"X\\u20ac\/mois\",\"for\":\"qui\",\"features\":[\"f1\",\"f2\",\"f3\"]},{\"name\":\"Growth\",\"price\":\"X\\u20ac\/mois\",\"for\":\"qui\",\"features\":[\"f1\",\"f2\",\"f3\",\"f4\"],\"recommended\":true},{\"name\":\"Enterprise\",\"price\":\"X\\u20ac\/mois\",\"for\":\"qui\",\"features\":[\"f1\",\"f2\",\"f3\",\"f4\",\"f5\"]}],\"coldEmail\":{\"subject\":\"objet de l\\u2019e-mail\",\"body\":\"corps de l\\u2019e-mail 100 mots [PR\\u00c9NOM] [ENTREPRISE]\"}':'';\n  var prompt='R\\u00e9ponds uniquement en fran\\u00e7ais. Tu es un architecte expert en produits IA. G\\u00e9n\\u00e8re un sch\\u00e9ma produit d\\u00e9taill\\u00e9.\\n\\nType: '+S.typeName+'\\nMode: '+(S.modeChip||'G\\u00e9n\\u00e9ral')+'\\nNom: '+S.name+'\\nDescription: '+desc+'\\nContexte: '+extras.join(' | ')+'\\n\\nRetourne UNIQUEMENT du JSON valide. Un seul objet JSON compact. Pas de markdown ni d\\u2019explication. Commence par { et termine par }:\\n{\"productName\":\"...\",\"tagline\":\"accroche en une ligne\",\"elevator\":\"pitch en 2 phrases\",\"coreProblem\":\"probl\\u00e8me exact en une phrase\",\"mvpFeatures\":[\"f1\",\"f2\",\"f3\",\"f4\",\"f5\",\"f6\"],\"v2Features\":[\"f1\",\"f2\",\"f3\"],\"techStack\":{\"primary\":\"...\",\"ai\":\"...\",\"database\":\"...\",\"auth\":\"...\",\"hosting\":\"...\",\"integrations\":\"...\"},\"stackRationale\":\"pourquoi ce stack en 2 phrases\",\"icp\":\"client id\\u00e9al en 2 phrases\",\"revenueModel\":\"mod\\u00e8le tarifaire recommand\\u00e9\",\"revenueRange\":\"fourchette mensuelle r\\u00e9aliste avec chronologie\"'+agentExtra+saasExtra+',\"launchSteps\":[{\"title\":\"phase\",\"detail\":\"what\"},{\"title\":\"phase\",\"detail\":\"what\"},{\"title\":\"phase\",\"detail\":\"what\"},{\"title\":\"phase\",\"detail\":\"what\"}],\"risks\":[\"r1\",\"r2\",\"r3\"]}';\n  try{\n    var _bpTok=isSaas?4000:isAgent?3200:2400;var res=await apiFetch(prompt,_bpTok);\n    S.blueprint=res;incrementUses();mark('b2');sessionStorage.setItem('os_done_b2','1');renderBlueprint(res);\n  }catch(e){out.innerHTML='<div style=\"padding:22px\"><div class=\"inset\" style=\"border-color:rgba(224,82,82,.3);background:rgba(224,82,82,.05)\"><p style=\"font-family:Geist Mono,monospace;font-size:11px;color:#C04040;letter-spacing:.04em\">Erreur : '+e.message+'<\/p><\/div><\/div>';}\n  btn.disabled=false;btn.innerHTML='G\\u00e9n\\u00e9rer le sch\\u00e9ma&nbsp;<span style=\"font-family:Instrument Serif,serif;font-size:18px;font-style:normal\">\\u2192<\/span>';\n}\n\nfunction renderBlueprint(r){\n  var out=document.getElementById('b2-out');\n  var isAgent=S.type==='agent',isSaas=S.type==='saas';\n  var tabs=isAgent?['Architecture','Scripts','Flux']:isSaas?['Positionnement','Grille tarifaire','Commercialisation']:['Sch\\u00e9ma','Stack technique','Plan de lancement'];\n  S.bpTabs=tabs;\n  var tabHtml='<div class=\"out-tabs\" id=\"bp-tabs\">';\n  tabs.forEach(function(t,i){tabHtml+='<button class=\"out-tab'+(i===0?' on':'')+'\" onclick=\"switchBPTab('+i+',this)\">'+t+'<\/button>';});\n  tabHtml+='<div class=\"out-tab-push\"><\/div><button class=\"dl-btn\" onclick=\"downloadBP()\">\\u2193 Sauvegarder<\/button><\/div><div id=\"bp-panes\">';\n  var p0='',p1='',p2='';\n  if(isAgent){\n    p0+=rsec('Identit\\u00e9 de l\\u2019agent','<p class=\"body\">'+r.elevator+'<\/p>');var st=r.techStack||{};p0+=rsec('Stack recommand\\u00e9',listHtml([st.primary,st.ai,st.integrations].filter(Boolean)));p0+=rsec('Capacit\\u00e9s principales',listHtml(r.mvpFeatures));p0+=rsec('Garde-fous',listHtml(r.risks));\n    if(r.systemPrompt)p1+=codeBlock('System Prompt',r.systemPrompt);if(r.opening)p1+=codeBlock('Message d\\u2019ouverture + Qualificateurs',r.opening);if(r.objections)p1+=codeBlock('Gestion des objections',r.objections);if(r.handoff)p1+=codeBlock('Escalade & Cl\\u00f4ture',r.handoff);\n    var steps=['L\\u2019utilisateur d\\u00e9clenche l\\u2019interaction','L\\u2019IA traite la saisie et le contexte','Recherche dans la base de connaissances','Logique principale et arbre de d\\u00e9cision','Action ex\\u00e9cut\\u00e9e (r\\u00e9servation, mise \\u00e0 jour, message)','R\\u00e9ponse livr\\u00e9e \\u00e0 l\\u2019utilisateur','\\u00c9v\\u00e9nement enregistr\\u00e9 dans la BDD \/ le CRM','Relance ou notification programm\\u00e9e'];\n    p2+=rsec('Flux d\\u2019ex\\u00e9cution en 8 \\u00e9tapes',steps.map(function(s,i){return'<div class=\"flow-step\"><div class=\"flow-n\">'+(i+1<10?'0'+(i+1):i+1)+'<\/div><div class=\"flow-txt\">'+s+'<\/div><\/div>';}).join(''));\n    p2+=rsec('Int\\u00e9grations',listHtml(['CRM (HubSpot \/ Salesforce)','Calendrier (Calendly \/ Cal.com)','Helpdesk (Intercom \/ Zendesk)','Zapier \/ Make pour l\\u2019automatisation']));\n  } else if(isSaas){\n    p0+=rsec('Positionnement','<p style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:20px;color:#13120D;margin-bottom:6px\">'+r.productName+'<\/p><p class=\"body\" style=\"font-style:italic;margin-bottom:10px\">\"'+r.tagline+'\"<\/p><p class=\"body\">'+r.elevator+'<\/p>');\n    p0+=rsec('Probl\\u00e8me principal','<p class=\"body\">'+r.coreProblem+'<\/p>');\n    if(r.icpDetail){p0+=rsec('Profil client id\\u00e9al','<p class=\"body\"><b>Firmographics:<\/b> '+r.icpDetail.firmographics+'<\/p><p class=\"body\" style=\"margin-top:6px\"><b>Mindset:<\/b> '+r.icpDetail.psychographics+'<\/p>'+listHtml(r.icpDetail.buyingTriggers,'D\\u00e9clencheurs d\\u2019achat'));}\n    if(r.competitors){p0+=rsec('Paysage concurrentiel',r.competitors.map(function(c){return'<div style=\"margin-bottom:10px\"><p class=\"body\" style=\"font-weight:600\">'+c.name+'<\/p><p class=\"body\" style=\"margin-top:3px;color:#C04040\">Faiblesse : '+c.weakness+'<\/p><p class=\"body\" style=\"margin-top:3px;color:#3E6B58\">Notre avantage : '+c.edge+'<\/p><\/div>';}).join(''));}\n    var bg3=['#E8E2D5','#13120D','#3E6B58'],fg3=['#13120D','#F5F1E9','#fff'],sub3=['#7A7266','rgba(245,241,233,.5)','rgba(255,255,255,.6)'];\n    if(r.pricingTiers){p1+='<div class=\"rsec-lbl\" style=\"margin-bottom:10px\">Grille tarifaire recommand\\u00e9e<\/div><div class=\"tier-grid\">'+r.pricingTiers.map(function(t,i){return'<div class=\"tier-card\" style=\"background:'+bg3[i]+'\">'+(t.recommended?'<div style=\"font-family:Geist Mono,monospace;font-size:8px;color:'+fg3[i]+';opacity:.5;text-transform:uppercase;letter-spacing:.1em;margin-bottom:6px\">Recommand\\u00e9<\/div>':'')+'<div style=\"font-family:Geist Mono,monospace;font-size:9px;color:'+sub3[i]+';text-transform:uppercase;letter-spacing:.1em;margin-bottom:4px\">'+t.name+'<\/div><div style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:28px;color:'+fg3[i]+';margin-bottom:4px\">'+t.price+'<\/div><div style=\"font-size:11px;color:'+sub3[i]+';margin-bottom:10px\">'+t.for+'<\/div><ul style=\"list-style:none\">'+(t.features||[]).map(function(f){return'<li style=\"font-size:11.5px;color:'+fg3[i]+';opacity:.8;padding:2px 0 2px 12px;position:relative\"><span style=\"position:absolute;left:0;top:8px;color:#C47B3A;font-size:7px\">\\u25c6<\/span>'+f+'<\/li>';}).join('')+'<\/ul><\/div>';}).join('')+'<\/div>';}\n    if(r.coldEmail)p2+=codeBlock('E-mail \\u00e0 froid \u2014 '+r.coldEmail.subject,r.coldEmail.body);if(r.launchSteps){p2+=rsec('Plan de lancement',r.launchSteps.map(function(s,i){return'<div class=\"flow-step\"><div class=\"flow-n\">'+(i+1)+'<\/div><div class=\"flow-txt\"><b>'+s.title+'<\/b><br>'+s.detail+'<\/div><\/div>';}).join(''));}\n    p2+=rsec('M\\u00e9triques cl\\u00e9s',listHtml(['Croissance du MRR','CAC vs LTV','Taux d\\u2019attrition mensuel','Taux d\\u2019activation (essai vers payant)']));\n  } else {\n    p0+=rsec('Vue d\\u2019ensemble','<p style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:20px;color:#13120D;margin-bottom:6px\">'+r.productName+'<\/p><p class=\"body\" style=\"font-style:italic;margin-bottom:10px\">\"'+r.tagline+'\"<\/p><p class=\"body\">'+r.elevator+'<\/p>');p0+=rsec('Probl\\u00e8me principal','<p class=\"body\">'+r.coreProblem+'<\/p>');p0+=rsec('Fonctionnalit\\u00e9s MVP',listHtml(r.mvpFeatures));p0+=rsec('Fonctionnalit\\u00e9s V2',listHtml(r.v2Features));\n    var stk=r.techStack||{};var stkK={primary:'Principal',ai:'IA \/ LLM',database:'Base de donn\\u00e9es',auth:'Authentification',hosting:'H\\u00e9bergement',integrations:'Int\\u00e9grations'};\n    p1+='<div style=\"display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid #13120D;margin-bottom:12px\">';\n    Object.keys(stkK).forEach(function(k){if(stk[k])p1+='<div style=\"background:#13120D;padding:12px;border-right:1px solid rgba(245,241,233,.1);border-bottom:1px solid rgba(245,241,233,.1)\"><div style=\"font-family:Geist Mono,monospace;font-size:8px;color:rgba(245,241,233,.3);text-transform:uppercase;letter-spacing:.1em;margin-bottom:3px\">'+stkK[k]+'<\/div><div style=\"font-size:12px;color:rgba(245,241,233,.82)\">'+stk[k]+'<\/div><\/div>';});\n    p1+='<\/div>';if(r.stackRationale)p1+=rsec('Pourquoi ce stack','<p class=\"body\">'+r.stackRationale+'<\/p>');\n    if(r.launchSteps)p2+=rsec('Feuille de route',r.launchSteps.map(function(s,i){return'<div class=\"flow-step\"><div class=\"flow-n\">'+(i+1)+'<\/div><div class=\"flow-txt\"><b>'+s.title+'<\/b><br>'+s.detail+'<\/div><\/div>';}).join(''));if(r.risks)p2+=rsec('Risques \\u00e0 surveiller',listHtml(r.risks));\n  }\n  tabHtml+=[p0,p1,p2].map(function(p,i){return'<div class=\"out-pane'+(i===0?' on':'')+'\" id=\"bpp-'+i+'\"><div style=\"padding:4px\">'+p+'<\/div><\/div>';}).join('')+'<\/div>';\n  out.innerHTML=tabHtml;\n}\nfunction switchBPTab(i,el){document.querySelectorAll('#bp-tabs .out-tab').forEach(function(t){t.classList.remove('on')});document.querySelectorAll('#bp-panes .out-pane').forEach(function(p,j){p.classList.toggle('on',j===i)});if(el)el.classList.add('on');}\nfunction downloadBP(){var lines=['ORTIVE STUDIO \\u2014 SCH\\u00c9MA','Produit: '+S.name,'Type: '+S.typeName,'G\\u00e9n\\u00e9r\\u00e9 le: '+new Date().toLocaleDateString('fr-FR'),''];document.querySelectorAll('#bp-panes .out-pane').forEach(function(p,i){if(p.innerText.trim()){lines.push('--- '+(S.bpTabs[i]||'Section '+(i+1)).toUpperCase()+' ---','',p.innerText.trim(),'');}});var blob=new Blob([lines.join('\\n')],{type:'text\/plain'});var a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='ortive-schema.txt';document.body.appendChild(a);a.click();document.body.removeChild(a);}\n\n\/* \u2550\u2550 B3 \u2550\u2550 *\/\nfunction buildCapGrid(){\n  var g=document.getElementById('cap-grid');if(!g)return;g.innerHTML='';\n  Object.keys(CAPS).forEach(function(cat){\n    var card=document.createElement('div');card.className='card-sm';\n    var h='<div style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:14px;color:#13120D;margin-bottom:12px\">'+cat+'<\/div>';\n    CAPS[cat].forEach(function(item){var k=cat+':'+item,on=!!S.caps[k];var uid='c_'+k.replace(\/[^a-z0-9]\/gi,'_');h+='<div class=\"cap-row\"><span class=\"cap-label\" style=\"color:'+(on?'#13120D':'#7A7266')+'\" id=\"cl_'+uid+'\">'+item+'<\/span><div class=\"tgl\" id=\"'+uid+'\" style=\"background:'+(on?'#3E6B58':'rgba(19,18,13,.2)')+'\" onclick=\"toggleCap(\\''+cat+'\\',\\''+item+'\\')\"><div class=\"tgl-k\" style=\"left:'+(on?'17px':'2px')+'\"><\/div><\/div><\/div>';});\n    card.innerHTML=h;g.appendChild(card);\n  });updateCapBadge();\n}\nfunction toggleCap(cat,item){var k=cat+':'+item;S.caps[k]=!S.caps[k];var uid='c_'+k.replace(\/[^a-z0-9]\/gi,'_');var t=document.getElementById(uid),l=document.getElementById('cl_'+uid);if(t){t.style.background=S.caps[k]?'#3E6B58':'rgba(19,18,13,.2)';t.querySelector('.tgl-k').style.left=S.caps[k]?'17px':'2px'}if(l)l.style.color=S.caps[k]?'#13120D':'#7A7266';updateCapBadge();if(Object.values(S.caps).some(Boolean))sessionStorage.setItem('os_done_b3','1');}\nfunction updateCapBadge(){var n=Object.values(S.caps).filter(Boolean).length;var el=document.getElementById('cap-badge');if(el)el.textContent=n+(n<=1?' actif':' actifs');}\n\n\/* \u2550\u2550 B4 \u2550\u2550 *\/\nvar WF=['L\\u2019utilisateur d\\u00e9clenche l\\u2019interaction','L\\u2019IA traite la saisie et le contexte','Recherche dans la base de connaissances','Logique principale et arbre de d\\u00e9cision','Action ex\\u00e9cut\\u00e9e (r\\u00e9servation, mise \\u00e0 jour, message)','R\\u00e9ponse livr\\u00e9e \\u00e0 l\\u2019utilisateur','\\u00c9v\\u00e9nement enregistr\\u00e9 dans la BDD \/ le CRM','Relance ou notification programm\\u00e9e'];\nfunction buildWorkflow(){\n  var el=document.getElementById('wf-steps');if(el){el.innerHTML='';WF.forEach(function(s,i){el.innerHTML+='<div class=\"flow-step\" style=\"animation:up .3s '+i*.04+'s both\"><div class=\"flow-n\">'+(i+1<10?'0'+(i+1):i+1)+'<\/div><div class=\"flow-txt\">'+s+'<\/div><\/div>';});}\n  var ch=document.getElementById('wf-channels');if(ch){ch.innerHTML='';Object.keys(S.channels).forEach(function(name){var on=S.channels[name];var row=document.createElement('div');row.style.cssText='display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid rgba(19,18,13,.08)';row.innerHTML='<span style=\"font-size:12.5px;color:#1E1B15\">'+name+'<\/span>';var t=document.createElement('div');t.className='tgl';t.style.background=on?'#3E6B58':'rgba(19,18,13,.2)';t.innerHTML='<div class=\"tgl-k\" style=\"left:'+(on?'17px':'2px')+'\"><\/div>';t.onclick=function(){S.channels[name]=!S.channels[name];t.querySelector('.tgl-k').style.left=S.channels[name]?'17px':'2px';t.style.background=S.channels[name]?'#3E6B58':'rgba(19,18,13,.2)';};row.appendChild(t);ch.appendChild(row);});}\n  renderRules();mark('b4');sessionStorage.setItem('os_done_b4','1');\n}\nfunction renderRules(){var el=document.getElementById('wf-rules');if(!el)return;el.innerHTML='';S.rules.forEach(function(r,i){var row=document.createElement('div');row.className='rule-r';row.innerHTML='<div class=\"rule-ic\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#3E6B58\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div><div class=\"rule-txt\">'+r+'<\/div>';var del=document.createElement('button');del.style.cssText='background:none;border:none;cursor:pointer;color:#A09880;padding:3px;flex-shrink:0;font-size:14px';del.textContent='\\u00d7';del.onclick=function(){S.rules.splice(i,1);renderRules();};row.appendChild(del);el.appendChild(row);});}\nfunction addRule(){var inp=document.getElementById('rule-inp');if(!inp||!inp.value.trim())return;S.rules.push(inp.value.trim());inp.value='';renderRules();}\n\n\/* \u2550\u2550 B5 \u2550\u2550 *\/\nfunction setupB5(){\n  var el=document.getElementById('b5-summary');if(!el)return;\n  var caps=Object.keys(S.caps).filter(function(k){return S.caps[k]}).map(function(k){return k.split(':')[1]});\n  el.innerHTML='';\n  [['Produit',S.name||'Sans nom'],['Type',S.typeName||'\\u2014'],['Mode',S.modeChip||'\\u2014'],['Fonctionnalit\\u00e9s',caps.length+(caps.length<=1?' active':' actives')],['R\\u00e8gles',S.rules.length+' configur\\u00e9e'+(S.rules.length>1?'s':'')]].forEach(function(r){el.innerHTML+='<div style=\"display:flex;justify-content:space-between;font-size:12px;padding:5px 0;border-bottom:1px solid rgba(62,107,88,.2)\"><span style=\"color:#7A7266;font-family:Geist Mono,monospace;font-size:9.5px;text-transform:uppercase;letter-spacing:.1em\">'+r[0]+'<\/span><span style=\"font-weight:500;color:#13120D;font-family:Instrument Serif,serif;font-style:italic;font-size:14px\">'+r[1]+'<\/span><\/div>';});\n}\nasync function genDeploy(){\n  if(!checkCap())return;\n  var isAgent=S.type==='agent',isSaas=S.type==='saas';\n  var caps=Object.keys(S.caps).filter(function(k){return S.caps[k]}).map(function(k){return k.split(':')[1]}).join(', ')||'G\\u00e9n\\u00e9ral';\n  var chs=Object.keys(S.channels).filter(function(c){return S.channels[c]}).join(', ')||'Web';\n  var btn=document.getElementById('btn-gen-deploy'),out=document.getElementById('b5-out');\n  btn.disabled=true;btn.innerHTML='<span class=\"spin-d\"><\/span> G\\u00e9n\\u00e9ration\\u2026';out.innerHTML=skelHTML(true);\n  var prompt='R\\u00e9ponds uniquement en fran\\u00e7ais. Ing\\u00e9nieur senior en produits IA. G\\u00e9n\\u00e8re un guide de d\\u00e9ploiement pr\\u00e9cis et actionnable.\\n\\nProduit: '+S.name+'\\nType: '+S.typeName+' \/ Mode: '+S.modeChip+'\\nDescription: '+S.desc+'\\nFonctionnalit\\u00e9s: '+caps+'\\nCanaux: '+chs+'\\nR\\u00e8gles: '+S.rules.join('; ')+'\\n\\nChaque outil, prix et \\u00e9tape doivent \\u00eatre r\\u00e9els et sp\\u00e9cifiques.\\n\\nRetourne UNIQUEMENT du JSON valide. Un seul objet JSON compact. Pas de markdown. Commence par { et termine par }:\\n{\"productName\":\"...\",\"monthlyCost\":\"ex. 80\\u2013220\\u20ac\/mois\",\"techStack\":[{\"category\":\"Frontend\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"Backend\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"IA \/ LLM\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"Base de donn\\u00e9es\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"Auth\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"Paiements\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"H\\u00e9bergement\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"Monitoring\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"}],\"phases\":[{\"title\":\"Phase 1 \\u2014 Fondations (Sem. 1\\u20132)\",\"steps\":[\"...\",\"...\",\"...\",\"...\"]},{\"title\":\"Phase 2 \\u2014 Construction (Sem. 3\\u20134)\",\"steps\":[\"...\",\"...\",\"...\",\"...\"]},{\"title\":\"Phase 3 \\u2014 Int\\u00e9gration IA (Sem. 5\\u20136)\",\"steps\":[\"...\",\"...\",\"...\",\"...\"]},{\"title\":\"Phase 4 \\u2014 Lancement (Sem. 7\\u20138)\",\"steps\":[\"...\",\"...\",\"...\",\"...\"]}],\"checklist\":[\"...\",\"...\",\"...\",\"...\",\"...\",\"...\",\"...\"],\"warnings\":[\"...\",\"...\",\"...\"]}';\n  try{\n    var _dpTok=isAgent?3500:isSaas?3200:2600;var res=await apiFetch(prompt,_dpTok);S.deployRaw=JSON.stringify(res);incrementUses();\n    var h='<div style=\"padding:24px\">';\n    h+='<div style=\"display:flex;align-items:baseline;justify-content:space-between;margin-bottom:22px;padding-bottom:16px;border-bottom:1px solid #13120D\"><div style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:22px;color:#13120D\">'+res.productName+' \\u2014 Guide de d\\u00e9ploiement<\/div><span class=\"badge bg\">~'+res.monthlyCost+'<\/span><\/div>';\n    h+='<div class=\"lbl\" style=\"margin-bottom:10px\">Stack technique<\/div>';\n    (res.techStack||[]).forEach(function(t){h+='<div style=\"display:flex;justify-content:space-between;align-items:flex-start;padding:10px 0;border-bottom:1px solid rgba(19,18,13,.08)\"><div><div style=\"font-family:Geist Mono,monospace;font-size:8.5px;color:#A09880;text-transform:uppercase;letter-spacing:.1em;margin-bottom:2px\">'+t.category+'<\/div><div style=\"font-weight:500;font-size:13.5px;color:#13120D\">'+t.tool+'<\/div><p style=\"font-size:12px;color:#7A7266;margin-top:3px\">'+t.why+'<\/p><\/div><span style=\"font-family:Geist Mono,monospace;font-size:11px;color:#C47B3A;white-space:nowrap;margin-left:16px\">'+t.cost+'<\/span><\/div>';});\n    h+='<div class=\"lbl\" style=\"margin-top:20px;margin-bottom:10px\">Phases de construction<\/div>';\n    (res.phases||[]).forEach(function(p){h+='<div style=\"margin-bottom:12px\"><div style=\"font-family:Geist Mono,monospace;font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:#3E6B58;margin-bottom:8px\">'+p.title+'<\/div><div class=\"inset\">'+(p.steps||[]).map(function(s,i){return'<div style=\"display:flex;gap:10px;margin-bottom:6px\"><div style=\"width:16px;height:16px;background:#13120D;display:grid;place-items:center;flex-shrink:0;font-family:Geist Mono,monospace;font-size:8px;color:rgba(245,241,233,.6)\">'+(i+1)+'<\/div><span style=\"font-size:12.5px;color:#1E1B15\">'+s+'<\/span><\/div>';}).join('')+'<\/div><\/div>';});\n    h+='<div class=\"lbl\" style=\"margin-top:20px;margin-bottom:10px\">Checklist de lancement<\/div><div class=\"inset\" style=\"margin-bottom:14px\">'+(res.checklist||[]).map(function(c){return'<div style=\"display:flex;gap:9px;margin-bottom:7px\"><div style=\"width:14px;height:14px;border:1px solid rgba(19,18,13,.3);flex-shrink:0;margin-top:1px\"><\/div><span style=\"font-size:12.5px;color:#1E1B15\">'+c+'<\/span><\/div>';}).join('')+'<\/div>';\n    if(res.warnings&&res.warnings.length){h+='<div class=\"lbl\" style=\"margin-bottom:8px\">Avertissements<\/div><div class=\"inset-accent\">'+(res.warnings||[]).map(function(w){return'<div style=\"display:flex;gap:8px;margin-bottom:7px\"><span style=\"color:#3E6B58;font-size:13px;flex-shrink:0\">\\u25c6<\/span><span style=\"font-size:12px;color:#1E1B15\">'+w+'<\/span><\/div>';}).join('')+'<\/div>';}\n    h+='<\/div>';out.innerHTML=h;var cb=document.getElementById('btn-copy-deploy');if(cb)cb.disabled=false;sessionStorage.setItem('os_done_b5','1');mark('b5');\n  }catch(e){out.innerHTML='<div style=\"padding:22px\"><div class=\"inset\" style=\"border-color:rgba(224,82,82,.3);background:rgba(224,82,82,.05)\"><p style=\"font-family:Geist Mono,monospace;font-size:11px;color:#C04040;letter-spacing:.04em\">Erreur : '+e.message+'<\/p><\/div><\/div>';}\n  btn.disabled=false;btn.innerHTML='G\\u00e9n\\u00e9rer le guide&nbsp;<span style=\"font-family:Instrument Serif,serif;font-size:18px;font-style:normal\">\\u2192<\/span>';\n}\nfunction copyDeploy(){if(!S.deployRaw)return;try{var j=JSON.parse(S.deployRaw),lines=['=== GUIDE DE D\\u00c9PLOIEMENT : '+j.productName+' ===','Co\\u00fbt estim\\u00e9 : '+j.monthlyCost,''];(j.techStack||[]).forEach(function(t){lines.push(t.category+': '+t.tool+' ('+t.cost+')\\n  '+t.why,'');});(j.phases||[]).forEach(function(p){lines.push('',p.title);(p.steps||[]).forEach(function(s,i){lines.push('  '+(i+1)+'. '+s)});});lines.push('','--- CHECKLIST DE LANCEMENT ---');(j.checklist||[]).forEach(function(c){lines.push('[ ] '+c)});navigator.clipboard.writeText(lines.join('\\n')).then(function(){toast('Guide copi\\u00e9.')});}catch(e){toast('\\u00c9chec de la copie.');}}\nfunction downloadLP(){if(!S.lpData)return;var lp=S.lpData,p=['=== PAGE DE VENTE ===','Produit: '+S.name,''];if(lp.hero)p.push('--- HERO ---',lp.hero.headline||'',lp.hero.sub||'','');if(lp.problem)p.push('--- PROBLEME ---',lp.problem.title||'',lp.problem.body||'');(lp.problem&&lp.problem.pains||[]).forEach(function(x){p.push('  - '+x)});p.push('');if(lp.solution)p.push('--- SOLUTION ---',lp.solution.title||'',lp.solution.body||'','');(lp.features||[]).forEach(function(f,i){if(i===0)p.push('--- FONCTIONNALIT\\u00c9S ---');p.push(f.title+': '+f.desc)});p.push('');(lp.faq||[]).forEach(function(f,i){if(i===0)p.push('--- FAQ ---');p.push('Q: '+f.q,'R: '+f.a,'')});if(lp.cta)p.push('--- CTA ---',lp.cta.headline||'',lp.cta.button||'');var blob=new Blob([p.join('\\n')],{type:'text\/plain'});var a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download=(S.name||'page').replace(\/\\s+\/g,'-').toLowerCase()+'-page-vente.txt';document.body.appendChild(a);a.click();document.body.removeChild(a);toast('Page de vente enregistr\\u00e9e.');}\nfunction downloadOutreach(){if(!S.outreachData)return;var p=['=== S\\u00c9QUENCE DE PROSPECTION ===','Produit: '+S.name,''];(S.outreachData.emails||[]).forEach(function(e){p.push('--- '+e.label+' ---','Objet: '+(e.subject||''),'',e.body||'','')});var blob=new Blob([p.join('\\n')],{type:'text\/plain'});var a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download=(S.name||'prospection').replace(\/\\s+\/g,'-').toLowerCase()+'-prospection.txt';document.body.appendChild(a);a.click();document.body.removeChild(a);toast('Prospection enregistr\\u00e9e.');}\n\n\/* \u2550\u2550 MONETIZE \u2550\u2550 *\/\nvar PRICING_MODELS=['Abonnement','Paiement unique','Bas\\u00e9 sur l\\u2019usage','Freemium + Payant','Forfait mensuel'];\nfunction setupM1(){\n  if(S.blueprint){var n=S.blueprint.productName||S.name;var nm=document.getElementById('m1-name');if(nm)nm.textContent=n;var tp=document.getElementById('m1-type');if(tp)tp.textContent=S.typeName;var ic=S.blueprint.icp;if(ic){var cu=document.getElementById('m-customer');if(cu&&!cu.dataset.edited)cu.value=ic;}}\n  var pb=document.getElementById('m-pricing-btns');if(pb&&!pb.dataset.built){pb.dataset.built='1';PRICING_MODELS.forEach(function(m){var b=document.createElement('button');b.className='chip'+(m===S.pricingModel?' on':'');b.textContent=m;b.onclick=function(){S.pricingModel=m;pb.querySelectorAll('.chip').forEach(function(x){x.classList.remove('on')});b.classList.add('on');var mm=document.getElementById('m1-model');if(mm)mm.textContent=m;};pb.appendChild(b);});}\n  var ps=document.getElementById('m-price-slider');if(ps){ps.oninput=function(){var v=this.value;['m-price-disp','m1-price','rev-pr'].forEach(function(id){var e=document.getElementById(id);if(e)e.textContent=v;});};}\n  var cu=document.getElementById('m-customer');if(cu){cu.oninput=function(){this.dataset.edited='1';var d=document.getElementById('m1-target');if(d)d.textContent=this.value;};}\n  mark('m1');sessionStorage.setItem('os_done_m1','1');\n}\nfunction getCtx(){return{name:S.name||'Sans nom',type:S.typeName,industry:(document.getElementById('m-industry')||{}).value||'G\\u00e9n\\u00e9ral',problem:(document.getElementById('m-problem')||{}).value||'',customer:(document.getElementById('m-customer')||{}).value||'',diff:(document.getElementById('m-diff')||{}).value||'',price:(document.getElementById('m-price-slider')||{}).value||97,model:S.pricingModel};}\nasync function genOffer(){\n  if(!checkCap())return;\n  var ctx=getCtx();var btn=document.getElementById('btn-gen-offer'),out=document.getElementById('m2-out');\n  btn.disabled=true;btn.innerHTML='<span class=\"spin\"><\/span> G\\u00e9n\\u00e9ration\\u2026';out.innerHTML=skelHTML();\n  var bpCtx=S.blueprint?(S.blueprint.elevator||''):'';\n  var prompt='R\\u00e9ponds uniquement en fran\\u00e7ais. Expert en marketing de produits IA. G\\u00e9n\\u00e8re un package commercial complet.\\n\\nProduit: '+ctx.name+' ('+ctx.type+')\\nSecteur: '+ctx.industry+'\\nProbl\\u00e8me: '+ctx.problem+'\\nPrix: '+ctx.price+'\\u20ac\/mois ('+ctx.model+')\\nClient: '+ctx.customer+'\\nDiff\\u00e9renciateur: '+ctx.diff+'\\n'+(bpCtx?'Contexte sch\\u00e9ma: '+bpCtx:'')+'\\n\\nRetourne UNIQUEMENT du JSON valide. Un seul objet JSON compact. Pas de markdown. Commence par { et termine par }:\\n{\"productName\":\"...\",\"tagline\":\"...\",\"heroHeadline\":\"...\",\"subHeadline\":\"...\",\"bullets\":[\"...\",\"...\",\"...\",\"...\",\"...\"],\"socialProof\":\"une ligne de cr\\u00e9dibilit\\u00e9\",\"cta\":\"texte du bouton CTA\",\"urgency\":\"ligne d\\u2019urgence ou de raret\\u00e9\",\"tiers\":[{\"name\":\"Starter\",\"price\":\"X\\u20ac\/mois\",\"for\":\"...\",\"features\":[\"f1\",\"f2\",\"f3\"]},{\"name\":\"Growth\",\"price\":\"X\\u20ac\/mois\",\"for\":\"...\",\"features\":[\"f1\",\"f2\",\"f3\",\"f4\"],\"pop\":true},{\"name\":\"Enterprise\",\"price\":\"X\\u20ac\/mois\",\"for\":\"...\",\"features\":[\"f1\",\"f2\",\"f3\",\"f4\",\"f5\"]}]}';\n  try{\n    var r=await apiFetch(prompt,2000);S.offerData=r;incrementUses();mark('m2');sessionStorage.setItem('os_done_m2','1');\n    var bg3=['#E8E2D5','#13120D','#3E6B58'],fg3=['#13120D','#F5F1E9','#fff'],sub3=['#7A7266','rgba(245,241,233,.5)','rgba(255,255,255,.65)'];\n    out.innerHTML='<div style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:26px;color:#13120D;margin-bottom:4px\">'+r.productName+'<\/div><p class=\"body\" style=\"font-style:italic;color:#3E6B58;margin-bottom:18px\">\"'+r.tagline+'\"<\/p><div class=\"inset\" style=\"margin-bottom:14px\"><div style=\"font-family:Instrument Serif,serif;font-weight:400;font-size:19px;color:#13120D;margin-bottom:5px\">'+r.heroHeadline+'<\/div><p class=\"body\" style=\"margin-bottom:14px\">'+r.subHeadline+'<\/p><ul style=\"list-style:none\">'+(r.bullets||[]).map(function(b){return'<li style=\"display:flex;gap:8px;margin-bottom:6px;font-size:13px;color:#1E1B15\"><span style=\"color:#3E6B58;font-size:8px;margin-top:5px\">\\u25c6<\/span>'+b+'<\/li>';}).join('')+'<\/ul><\/div><div class=\"inset-accent\" style=\"margin-bottom:12px\"><p class=\"body\" style=\"font-size:12px\">'+r.socialProof+'<\/p><\/div><div style=\"display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px\"><div style=\"background:#13120D;color:#F5F1E9;font-family:Geist Mono,monospace;font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;padding:10px 18px\">'+r.cta+'<\/div><div style=\"background:#E8E2D5;border:1px solid rgba(19,18,13,.15);font-size:12px;color:#7A7266;padding:10px 13px\">'+r.urgency+'<\/div><\/div><div class=\"lbl\" style=\"margin-bottom:10px\">Grille tarifaire<\/div><div class=\"tier-grid\">'+(r.tiers||[]).map(function(t,i){return'<div class=\"tier-card\" style=\"background:'+bg3[i]+'\">'+(t.pop?'<div style=\"font-family:Geist Mono,monospace;font-size:7.5px;color:'+fg3[i]+';opacity:.5;text-transform:uppercase;letter-spacing:.1em;margin-bottom:5px\">Recommand\\u00e9<\/div>':'')+'<div style=\"font-family:Geist Mono,monospace;font-size:9px;color:'+sub3[i]+';margin-bottom:4px;text-transform:uppercase;letter-spacing:.08em\">'+t.name+'<\/div><div style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:26px;color:'+fg3[i]+';margin-bottom:4px\">'+t.price+'<\/div><div style=\"font-size:10.5px;color:'+sub3[i]+';margin-bottom:10px\">'+t.for+'<\/div><ul style=\"list-style:none\">'+(t.features||[]).map(function(f){return'<li style=\"font-size:11px;color:'+fg3[i]+';opacity:.8;padding:2px 0 2px 10px;position:relative\"><span style=\"position:absolute;left:0;top:8px;color:#C47B3A;font-size:6px\">\\u25c6<\/span>'+f+'<\/li>';}).join('')+'<\/ul><\/div>';}).join('')+'<\/div>';\n  }catch(e){out.innerHTML='<div class=\"inset\" style=\"border-color:rgba(224,82,82,.3);background:rgba(224,82,82,.05)\"><p style=\"font-family:Geist Mono,monospace;font-size:11px;color:#C04040;letter-spacing:.04em\">Erreur : '+e.message+'<\/p><\/div>';}\n  btn.disabled=false;btn.innerHTML='Reg\\u00e9n\\u00e9rer&nbsp;<span style=\"font-family:Instrument Serif,serif;font-size:18px;font-style:normal\">\\u2192<\/span>';\n}\nasync function genLP(){\n  if(!checkCap())return;\n  var ctx=getCtx();var nm=S.offerData?S.offerData.productName:S.name;\n  var btn=document.getElementById('btn-gen-lp'),out=document.getElementById('m3-out');\n  btn.disabled=true;btn.innerHTML='<span class=\"spin\"><\/span> G\\u00e9n\\u00e9ration\\u2026';out.innerHTML=skelHTML();\n  var prompt='R\\u00e9ponds uniquement en fran\\u00e7ais. Expert en copywriting de pages de vente. R\\u00e9dige une page de vente compl\\u00e8te.\\nProduit: '+nm+' ('+ctx.type+')\\nSecteur: '+ctx.industry+'\\nProbl\\u00e8me: '+ctx.problem+'\\nPrix: '+ctx.price+'\\u20ac\/mois\\nClient: '+ctx.customer+'\\nDiff\\u00e9renciateur: '+ctx.diff+'\\n\\nRetourne UNIQUEMENT du JSON valide. Commence par { et termine par }:\\n{\"hero\":{\"headline\":\"...\",\"sub\":\"...\"},\"problem\":{\"title\":\"...\",\"body\":\"...\",\"pains\":[\"...\",\"...\",\"...\"]},\"solution\":{\"title\":\"...\",\"body\":\"...\"},\"features\":[{\"title\":\"...\",\"desc\":\"...\"},{\"title\":\"...\",\"desc\":\"...\"},{\"title\":\"...\",\"desc\":\"...\"},{\"title\":\"...\",\"desc\":\"...\"}],\"proof\":{\"headline\":\"...\",\"testimonials\":[{\"name\":\"...\",\"role\":\"...\",\"quote\":\"...\"},{\"name\":\"...\",\"role\":\"...\",\"quote\":\"...\"}]},\"faq\":[{\"q\":\"...\",\"a\":\"...\"},{\"q\":\"...\",\"a\":\"...\"},{\"q\":\"...\",\"a\":\"...\"},{\"q\":\"...\",\"a\":\"...\"}],\"cta\":{\"headline\":\"...\",\"sub\":\"...\",\"button\":\"...\"}}';\n  try{\n    var r=await apiFetch(prompt,2800);S.lpData=r;incrementUses();mark('m3');sessionStorage.setItem('os_done_m3','1');\n    var h='<div class=\"between\" style=\"margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid rgba(19,18,13,.12)\"><span class=\"lbl\" style=\"margin-bottom:0\">Page de vente<\/span><button class=\"btn btn-ghost btn-sm\" onclick=\"downloadLP()\">\\u2193 Enregistrer<\/button><\/div>';\n    h+='<div class=\"lbl\" style=\"margin-bottom:8px\">H\u00e9ro<\/div><div class=\"inset\" style=\"margin-bottom:14px\"><div style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:22px;color:#13120D;margin-bottom:5px\">'+r.hero.headline+'<\/div><p class=\"body\">'+r.hero.sub+'<\/p><\/div>';\n    h+='<div class=\"lbl\" style=\"margin-bottom:8px\">Probl\\u00e8me<\/div><div class=\"inset\" style=\"margin-bottom:14px\"><div style=\"font-weight:600;font-size:14px;color:#13120D;margin-bottom:5px\">'+r.problem.title+'<\/div><p class=\"body\" style=\"margin-bottom:10px\">'+r.problem.body+'<\/p>'+(r.problem.pains||[]).map(function(p){return'<div style=\"display:flex;gap:7px;margin-bottom:5px;font-size:12.5px;color:#C04040\"><span>\\u00d7<\/span>'+p+'<\/div>';}).join('')+'<\/div>';\n    h+='<div class=\"lbl\" style=\"margin-bottom:8px\">Solution<\/div><div class=\"inset\" style=\"margin-bottom:14px\"><div style=\"font-weight:600;font-size:14px;color:#13120D;margin-bottom:5px\">'+r.solution.title+'<\/div><p class=\"body\">'+r.solution.body+'<\/p><\/div>';\n    h+='<div class=\"lbl\" style=\"margin-bottom:8px\">Fonctionnalit\\u00e9s<\/div><div class=\"g2\" style=\"gap:10px;margin-bottom:14px\">'+(r.features||[]).map(function(f){return'<div class=\"inset\"><div style=\"font-weight:600;font-size:12.5px;color:#13120D;margin-bottom:3px\">'+f.title+'<\/div><p class=\"body\" style=\"font-size:12px\">'+f.desc+'<\/p><\/div>';}).join('')+'<\/div>';\n    h+='<div class=\"lbl\" style=\"margin-bottom:8px\">Preuves sociales<\/div><div class=\"inset\" style=\"margin-bottom:14px\"><div style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:16px;color:#13120D;margin-bottom:10px\">'+r.proof.headline+'<\/div>'+(r.proof.testimonials||[]).map(function(t){return'<div style=\"border:1px solid rgba(19,18,13,.12);padding:12px;margin-bottom:8px\"><p class=\"body\" style=\"font-style:italic;font-size:12px;margin-bottom:5px\">\"'+t.quote+'\"<\/p><div style=\"font-family:Geist Mono,monospace;font-size:9.5px;color:#7A7266;text-transform:uppercase;letter-spacing:.08em\">'+t.name+' \u00b7 '+t.role+'<\/div><\/div>';}).join('')+'<\/div>';\n    h+='<div class=\"lbl\" style=\"margin-bottom:8px\">FAQ<\/div>'+(r.faq||[]).map(function(f){return'<div style=\"border-bottom:1px solid rgba(19,18,13,.08);padding:10px 0\"><div style=\"font-weight:500;font-size:13px;color:#13120D;margin-bottom:4px\">'+f.q+'<\/div><p class=\"body\" style=\"font-size:12px\">'+f.a+'<\/p><\/div>';}).join('');\n    h+='<div class=\"lbl\" style=\"margin-top:16px;margin-bottom:8px\">Appel \\u00e0 l\\u2019action<\/div><div class=\"inset-accent\"><div style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:17px;color:#13120D;margin-bottom:5px\">'+r.cta.headline+'<\/div><p class=\"body\" style=\"font-size:12px;margin-bottom:12px\">'+r.cta.sub+'<\/p><div style=\"background:#13120D;color:#F5F1E9;font-family:Geist Mono,monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:10px 18px;display:inline-block\">'+r.cta.button+' \\u2192<\/div><\/div>';\n    out.innerHTML=h;\n  }catch(e){out.innerHTML='<div class=\"inset\" style=\"border-color:rgba(224,82,82,.3);background:rgba(224,82,82,.05)\"><p style=\"font-family:Geist Mono,monospace;font-size:11px;color:#C04040;letter-spacing:.04em\">Erreur : '+e.message+'<\/p><\/div>';}\n  btn.disabled=false;btn.innerHTML='Reg\\u00e9n\\u00e9rer&nbsp;<span style=\"font-family:Instrument Serif,serif;font-size:18px;font-style:normal\">\\u2192<\/span>';\n}\nasync function genOutreach(){\n  var ctx=getCtx();var nm=S.offerData?S.offerData.productName:S.name;\n  var btn=document.getElementById('btn-gen-out'),out=document.getElementById('m4-out');\n  btn.disabled=true;btn.innerHTML='<span class=\"spin\"><\/span> R\\u00e9daction\\u2026';\n  out.innerHTML='<div class=\"card\"><div class=\"empty\"><span class=\"spin-d\"><\/span><span>R\\u00e9daction de 3 e-mails\\u2026<\/span><\/div><\/div>';\n  var prompt='R\\u00e9ponds uniquement en fran\\u00e7ais. Expert en prospection commerciale B2B. R\\u00e9dige une s\\u00e9quence de 3 e-mails \\u00e0 froid.\\nProduit: '+nm+' ('+ctx.type+')\\nSecteur: '+ctx.industry+'\\nProbl\\u00e8me: '+ctx.problem+'\\nPrix: '+ctx.price+'\\u20ac\/mois\\nClient: '+ctx.customer+'\\nDiff\\u00e9renciateur: '+ctx.diff+'\\n\\nRetourne UNIQUEMENT du JSON valide. Commence par { et termine par }:\\n{\"emails\":[{\"label\":\"E-mail 1 \\u2014 Introduction\",\"subject\":\"...\",\"preview\":\"...\",\"body\":\"e-mail d\\u2019intro de 150 mots avec [PR\\u00c9NOM] et [ENTREPRISE]\"},{\"label\":\"E-mail 2 \\u2014 Relance valeur\",\"subject\":\"...\",\"preview\":\"...\",\"body\":\"relance de 100 mots montrant le ROI\"},{\"label\":\"E-mail 3 \\u2014 Rupture\",\"subject\":\"...\",\"preview\":\"...\",\"body\":\"e-mail de rupture de 60 mots cr\\u00e9ant une derni\\u00e8re urgence\"}]}';\n  try{\n    var r=await apiFetch(prompt,2400);S.outreachData=r;incrementUses();mark('m4');sessionStorage.setItem('os_done_m4','1');\n    out.innerHTML='<div class=\"between\" style=\"margin-bottom:8px\"><span class=\"lbl\" style=\"margin-bottom:0\">S\\u00e9quence de 3 e-mails<\/span><button class=\"btn btn-ghost btn-sm\" onclick=\"downloadOutreach()\">\\u2193 Enregistrer<\/button><\/div>';\n    (r.emails||[]).forEach(function(e,i){var card=document.createElement('div');card.className='card';card.style.cssText='margin-bottom:12px;animation:up .3s '+i*.09+'s both';var uid='e_'+Math.random().toString(36).slice(2,6);card.innerHTML='<div class=\"between\" style=\"margin-bottom:10px\"><span class=\"badge bi\">'+e.label+'<\/span><button class=\"btn btn-ghost btn-sm\" onclick=\"cpText(\\''+uid+'\\')\">Copier<\/button><\/div><div style=\"font-weight:500;font-size:13px;color:#13120D;margin-bottom:2px\">Objet : '+e.subject+'<\/div><div style=\"font-family:Geist Mono,monospace;font-size:10px;color:#A09880;margin-bottom:10px;letter-spacing:.04em\">'+e.preview+'<\/div><div style=\"background:#E8E2D5;border:1px solid rgba(19,18,13,.1);padding:14px\"><pre id=\"'+uid+'\" style=\"font-family:Geist,sans-serif;font-size:13px;color:#1E1B15;white-space:pre-wrap;line-height:1.68\">'+e.body+'<\/pre><\/div>';out.appendChild(card);});\n  }catch(e){out.innerHTML='<div class=\"card\"><div class=\"inset\" style=\"border-color:rgba(224,82,82,.3);background:rgba(224,82,82,.05)\"><p style=\"font-family:Geist Mono,monospace;font-size:11px;color:#C04040;letter-spacing:.04em\">Erreur : '+e.message+'<\/p><\/div><\/div>';}\n  btn.disabled=false;btn.innerHTML='Reg\\u00e9n\\u00e9rer la s\\u00e9quence&nbsp;<span style=\"font-family:Instrument Serif,serif;font-size:18px;font-style:normal\">\\u2192<\/span>';\n}\nfunction calcRev(){\n  var pr=parseInt(document.getElementById('m-price-slider').value)||97;\n  var c3=parseInt(document.getElementById('rc3').value)||8;var c6=parseInt(document.getElementById('rc6').value)||30;var c12=parseInt(document.getElementById('rc12').value)||80;var ch=parseInt(document.getElementById('rch').value)||5;\n  document.getElementById('rev-pr').textContent=pr;\n  var m3=c3*pr,m6=c6*pr,m12=c12*pr,arr=m12*12,net=Math.round(c12*(1-ch\/100)),nmrr=net*pr;\n  var el=document.getElementById('rev-out');if(!el)return;\n  el.innerHTML='<div style=\"display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:1px solid #13120D;margin-bottom:14px\">'+[['Mois 3',m3.toLocaleString('fr-FR')+'\\u20ac',c3+' clients'],['Mois 6',m6.toLocaleString('fr-FR')+'\\u20ac',c6+' clients'],['Mois 12',m12.toLocaleString('fr-FR')+'\\u20ac',c12+' clients']].map(function(s,i){return'<div style=\"padding:14px 12px;border-right:'+(i<2?'1px solid rgba(19,18,13,.15)':'none')+'\\\"><div style=\"font-family:Geist Mono,monospace;font-size:8.5px;text-transform:uppercase;letter-spacing:.1em;color:#7A7266;margin-bottom:6px\">'+s[0]+'<\/div><div style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:24px;color:#13120D\">'+s[1]+'<\/div><div style=\"font-size:11px;color:#A09880;margin-top:2px\">'+s[2]+'<\/div><\/div>';}).join('')+'<\/div><div style=\"border:1px solid rgba(19,18,13,.12);padding:14px\"><div style=\"display:flex;justify-content:space-between;margin-bottom:8px\"><span style=\"font-size:13px;color:#7A7266\">Revenus annuels projet\\u00e9s<\/span><span style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:20px;color:#13120D\">'+arr.toLocaleString('fr-FR')+'\\u20ac<\/span><\/div><div style=\"display:flex;justify-content:space-between;margin-bottom:8px\"><span style=\"font-size:13px;color:#7A7266\">MRR net apr\\u00e8s '+ch+'% d\\u2019attrition<\/span><span style=\"font-family:Instrument Serif,serif;font-style:italic;font-size:16px;color:#C47B3A\">'+nmrr.toLocaleString('fr-FR')+'\\u20ac\/mois<\/span><\/div><div style=\"display:flex;justify-content:space-between\"><span style=\"font-size:13px;color:#7A7266\">Clients nets (Mois 12)<\/span><span style=\"font-weight:600;font-size:13px;color:#13120D\">'+net+'<\/span><\/div><\/div>';\n}\nfunction buildGTM(){\n  var el=document.getElementById('gtm-list');if(!el)return;el.innerHTML='';\n  [{t:'S\\u00e9lectionner le type de produit et le mode',d:!!(S.type&&S.modeChip)||!!sessionStorage.getItem('os_done_b1')},{t:'G\\u00e9n\\u00e9rer le sch\\u00e9ma produit',d:!!S.blueprint||!!sessionStorage.getItem('os_done_b2')},{t:'Configurer les fonctionnalit\\u00e9s',d:Object.values(S.caps).some(Boolean)||!!sessionStorage.getItem('os_done_b3')},{t:'D\\u00e9finir l\\u2019offre et les tarifs',d:!!S.offerData||!!sessionStorage.getItem('os_done_m1')},{t:'G\\u00e9n\\u00e9rer le package commercial',d:!!S.offerData||!!sessionStorage.getItem('os_done_m2')},{t:'G\\u00e9n\\u00e9rer la page de vente',d:!!S.lpData||!!sessionStorage.getItem('os_done_m3')},{t:'G\\u00e9n\\u00e9rer la s\\u00e9quence de prospection',d:!!S.outreachData||!!sessionStorage.getItem('os_done_m4')},{t:'Cr\\u00e9er un lien de paiement Stripe',d:false},{t:'Publier la page de vente',d:false},{t:'Envoyer les 50 premiers e-mails',d:false}].forEach(function(item){\n    el.innerHTML+='<div style=\"display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid rgba(62,107,88,.15)\"><div style=\"width:14px;height:14px;border:'+(item.d?'1px solid #3E6B58':'1px solid rgba(62,107,88,.3)')+';background:'+(item.d?'rgba(62,107,88,.12)':'transparent')+';display:grid;place-items:center;flex-shrink:0\">'+(item.d?'<span style=\"color:#3E6B58;font-size:8px\">\\u2713<\/span>':'')+'<\/div><span style=\"font-size:12.5px;color:'+(item.d?'#13120D':'#7A7266')+'\">'+item.t+'<\/span><\/div>';\n  });\n}\nfunction exportAll(){\n  var p=[],ctx=getCtx();p.push('=== ORTIVE STUDIO - SESSION COMPL\\u00c8TE ===','Produit: '+S.name,'Type: '+S.typeName+' \/ Mode: '+S.modeChip,'Date: '+new Date().toLocaleDateString('fr-FR'),'');\n  if(S.blueprint){var b=S.blueprint;p.push('--- SCH\\u00c9MA ---','Nom: '+(b.productName||S.name),'Accroche: '+(b.tagline||''),'Pitch: '+(b.elevator||''),'');}\n  if(S.deployRaw){try{var dj=JSON.parse(S.deployRaw);p.push('--- GUIDE DE D\\u00c9PLOIEMENT ---','Co\\u00fbt: '+dj.monthlyCost,'');(dj.techStack||[]).forEach(function(t){p.push(t.category+': '+t.tool+' ('+t.cost+') - '+t.why)});p.push('');}catch(e){}}\n  p.push('--- OFFRE ---','Secteur: '+ctx.industry,'Probl\\u00e8me: '+ctx.problem,'Client: '+ctx.customer,'Prix: '+ctx.price+' \\u20ac\/mois','');\n  if(S.offerData){var od=S.offerData;p.push('--- PACKAGE COMMERCIAL ---','Produit: '+(od.productName||S.name),'Accroche: '+(od.tagline||''));(od.bullets||[]).forEach(function(bl){p.push('- '+bl)});p.push('');}\n  if(S.outreachData){p.push('--- S\\u00c9QUENCE DE PROSPECTION ---');(S.outreachData.emails||[]).forEach(function(e){p.push('',e.label,'Objet: '+(e.subject||''),e.body||'','')});}\n  var pr=parseInt((document.getElementById('m-price-slider')||{}).value)||97;var rc12=parseInt((document.getElementById('rc12')||{}).value)||80;p.push('--- REVENUS ---','Prix: '+pr+' \\u20ac\/mois','Mois 12: '+rc12+' clients = '+(rc12*pr)+' \\u20ac\/mois','ARR: '+(rc12*pr*12)+' \\u20ac');\n  var txt=p.join('\\n');navigator.clipboard.writeText(txt).catch(function(){});var blob=new Blob([txt],{type:'text\/plain'});var a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download=(S.name||'session').replace(\/\\s+\/g,'-').toLowerCase()+'-ortive-session.txt';document.body.appendChild(a);a.click();document.body.removeChild(a);toast('Session enregistr\\u00e9e et copi\\u00e9e.');\n}\n\n\/* \u2550\u2550 UNIFIED apiFetch \u2550\u2550 *\/\nasync function apiFetch(prompt,maxT){\n  var key=sessionStorage.getItem('ortive_key');\n  var provider=sessionStorage.getItem('ortive_provider')||'anthropic';\n  if(!key)throw new Error('Aucune cl\\u00e9 API connect\\u00e9e. Collez votre cl\\u00e9 dans la barre en haut.');\n  var text=await _llmCall(provider,key,prompt,maxT);\n  return JSON.parse(text.replace(\/```json|```\/g,'').trim());\n}\nasync function _llmCall(provider,key,prompt,maxT){\n  var cfg=BYOK_PROVIDERS[provider];var res,data;\n  if(provider==='anthropic'){res=await fetch('https:\/\/api.anthropic.com\/v1\/messages',{method:'POST',headers:{'Content-Type':'application\/json','x-api-key':key,'anthropic-version':'2023-06-01','anthropic-dangerous-direct-browser-access':'true'},body:JSON.stringify({model:cfg.model,max_tokens:maxT,messages:[{role:'user',content:prompt}]})});data=await res.json();if(!res.ok)throw new Error(data.error?data.error.message:'Erreur Anthropic '+res.status);return(data.content||[]).map(function(b){return b.text||''}).join('');}\n  if(provider==='google'){var url='https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/'+cfg.model+':generateContent?key='+key;res=await fetch(url,{method:'POST',headers:{'Content-Type':'application\/json'},body:JSON.stringify({contents:[{role:'user',parts:[{text:prompt}]}]})});data=await res.json();if(!res.ok||data.error)throw new Error(data.error?data.error.message:'Erreur Google '+res.status);return data.candidates[0].content.parts[0].text;}\n  if(provider==='cohere'){res=await fetch('https:\/\/api.cohere.com\/v1\/chat',{method:'POST',headers:{'Authorization':'Bearer '+key,'Content-Type':'application\/json'},body:JSON.stringify({model:cfg.model,max_tokens:maxT,message:prompt})});data=await res.json();if(!res.ok||data.message)throw new Error(data.message||'Erreur Cohere '+res.status);return data.text;}\n  var endpoints={openai:'https:\/\/api.openai.com\/v1\/chat\/completions',xai:'https:\/\/api.x.ai\/v1\/chat\/completions',mistral:'https:\/\/api.mistral.ai\/v1\/chat\/completions',deepseek:'https:\/\/api.deepseek.com\/v1\/chat\/completions',groq:'https:\/\/api.groq.com\/openai\/v1\/chat\/completions',together:'https:\/\/api.together.xyz\/v1\/chat\/completions',fireworks:'https:\/\/api.fireworks.ai\/inference\/v1\/chat\/completions',perplexity:'https:\/\/api.perplexity.ai\/chat\/completions'};\n  res=await fetch(endpoints[provider],{method:'POST',headers:{'Authorization':'Bearer '+key,'Content-Type':'application\/json'},body:JSON.stringify({model:cfg.model,max_tokens:maxT,messages:[{role:'user',content:prompt}]})});\n  data=await res.json();if(!res.ok||data.error)throw new Error(data.error?data.error.message:cfg.label+' erreur '+res.status);return data.choices[0].message.content;\n}\n\n\/* \u2550\u2550 HELPERS \u2550\u2550 *\/\nfunction skelHTML(tall){var h='<div style=\"padding:20px\">';for(var i=0;i<(tall?8:5);i++)h+='<div class=\"skel\" style=\"height:'+(i===0?14:10)+'px;width:'+(60+Math.random()*30|0)+'%;margin-bottom:'+(i===0?14:8)+'px\"><\/div>';return h+'<\/div>';}\nfunction rsec(label,body){return'<div class=\"rsec\"><div class=\"rsec-lbl\">'+label+'<\/div>'+body+'<\/div>';}\nfunction listHtml(items,label){if(!Array.isArray(items)||!items.length)return'';var h=label?'<div class=\"rsec-lbl\">'+label+'<\/div>':'';h+='<ul>';items.forEach(function(i){h+='<li>'+i+'<\/li>';});h+='<\/ul>';return h;}\nfunction codeBlock(label,text){var id='c_'+Math.random().toString(36).slice(2,7);return'<div class=\"code-wrap\"><div class=\"code-top\"><span class=\"code-lbl\">'+label+'<\/span><button class=\"copy-btn\" onclick=\"cpText(\\''+id+'\\')\">Copier<\/button><\/div><pre class=\"code-pre\" id=\"'+id+'\">'+text+'<\/pre><\/div>';}\nfunction cpText(id){var el=document.getElementById(id);if(!el)return;navigator.clipboard.writeText(el.textContent).then(function(){toast('Copi\\u00e9.')});}\nfunction mark(step){var el=document.getElementById('nn-'+step);if(el){el.innerHTML='<svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>';el.parentElement.classList.add('done');}}\nfunction toast(msg){var t=document.getElementById('toast');if(!t)return;t.textContent=msg;t.style.transform='translateY(0)';t.style.opacity='1';setTimeout(function(){t.style.transform='translateY(60px)';t.style.opacity='0';},2600);}\n\n\/* \u2550\u2550 INIT \u2550\u2550 *\/\n(function init(){\n  var savedKey=sessionStorage.getItem('ortive_key');\n  var savedProvider=sessionStorage.getItem('ortive_provider')||'anthropic';\n  if(savedKey&&BYOK_PROVIDERS[savedProvider]){showConnected(savedProvider);var sel=document.getElementById('gw-provider');if(sel)sel.value=savedProvider;}\n  buildTypeGrid();calcRev();buildGTM();\n  var ps=document.getElementById('m-price-slider');if(ps)ps.oninput=function(){var v=this.value;['m-price-disp','m1-price','rev-pr'].forEach(function(id){var e=document.getElementById(id);if(e)e.textContent=v;});};\n})();\n<\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Concevez, structurez et monetisez vos produits IA \u2014 agents, applications SaaS, API, chatbots \u2014 avec un studio guide par l&#8217;intelligence artificielle. Definissez votre produit, generez un guide de deploiement avec stack technique et couts reels, puis creez votre kit commercial, page de vente et sequence de prospection. Un seul outil, de l&#8217;idee au revenu.<\/p>\n","protected":false},"author":1,"featured_media":15879,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_glsr_average":0,"_glsr_ranking":0,"_glsr_reviews":0,"footnotes":""},"class_list":["post-15686","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ortive \u2014 Studio Produit IA | Concevez et Monetisez vos Produits IA - Ange Ingabire |E-commerce &amp; AI Business Consultant<\/title>\n<meta name=\"description\" content=\"Concevez, structurez et monetisez vos produits IA \u2014 agents, applications SaaS, API, chatbots \u2014 avec un studio guide par l&#039;intelligence artificielle. Definissez votre produit, generez un guide de deploiement avec stack technique et couts reels, puis creez votre kit commercial, page de vente et sequence de prospection. Un seul outil, de l&#039;idee au revenu.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ortive \u2014 Studio Produit IA | Concevez et Monetisez vos Produits IA - Ange Ingabire |E-commerce &amp; AI Business Consultant\" \/>\n<meta property=\"og:description\" content=\"Concevez, structurez et monetisez vos produits IA \u2014 agents, applications SaaS, API, chatbots \u2014 avec un studio guide par l&#039;intelligence artificielle. Definissez votre produit, generez un guide de deploiement avec stack technique et couts reels, puis creez votre kit commercial, page de vente et sequence de prospection. Un seul outil, de l&#039;idee au revenu.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/\" \/>\n<meta property=\"og:site_name\" content=\"Ange Ingabire |E-commerce &amp; AI Business Consultant\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-17T00:19:16+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/angeingabire.com\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_iopeo4iopeo4iope.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1408\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/angeingabire.com\\\/index.php\\\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\\\/\",\"url\":\"https:\\\/\\\/angeingabire.com\\\/index.php\\\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\\\/\",\"name\":\"Ortive \u2014 Studio Produit IA | Concevez et Monetisez vos Produits IA - Ange Ingabire |E-commerce &amp; AI Business Consultant\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/angeingabire.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/angeingabire.com\\\/index.php\\\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/angeingabire.com\\\/index.php\\\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/angeingabire.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/Gemini_Generated_Image_iopeo4iopeo4iope.png\",\"datePublished\":\"2026-03-25T13:13:35+00:00\",\"dateModified\":\"2026-05-17T00:19:16+00:00\",\"description\":\"Concevez, structurez et monetisez vos produits IA \u2014 agents, applications SaaS, API, chatbots \u2014 avec un studio guide par l'intelligence artificielle. Definissez votre produit, generez un guide de deploiement avec stack technique et couts reels, puis creez votre kit commercial, page de vente et sequence de prospection. Un seul outil, de l'idee au revenu.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/angeingabire.com\\\/index.php\\\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/angeingabire.com\\\/index.php\\\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/angeingabire.com\\\/index.php\\\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\\\/#primaryimage\",\"url\":\"https:\\\/\\\/angeingabire.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/Gemini_Generated_Image_iopeo4iopeo4iope.png\",\"contentUrl\":\"https:\\\/\\\/angeingabire.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/Gemini_Generated_Image_iopeo4iopeo4iope.png\",\"width\":1408,\"height\":768,\"caption\":\"Ortive \u2014 The AI Product Studio | Build & Monetize AI Products\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/angeingabire.com\\\/index.php\\\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/angeingabire.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ortive \u2014 Studio Produit IA | Concevez et Monetisez vos Produits IA\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/angeingabire.com\\\/#website\",\"url\":\"https:\\\/\\\/angeingabire.com\\\/\",\"name\":\"Ange Ingabire |E-commerce &amp; AI Business Consultant\",\"description\":\"E-commerce &amp; AI Business Solutions\",\"publisher\":{\"@id\":\"https:\\\/\\\/angeingabire.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/angeingabire.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/angeingabire.com\\\/#organization\",\"name\":\"Ange Ingabire\",\"url\":\"https:\\\/\\\/angeingabire.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/angeingabire.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/angeingabire.com\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/7.png\",\"contentUrl\":\"https:\\\/\\\/angeingabire.com\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/7.png\",\"width\":1080,\"height\":1080,\"caption\":\"Ange Ingabire\"},\"image\":{\"@id\":\"https:\\\/\\\/angeingabire.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.pinterest.com\\\/ange_ingabire\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ange-ingabire-327893236\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ortive \u2014 Studio Produit IA | Concevez et Monetisez vos Produits IA - Ange Ingabire |E-commerce &amp; AI Business Consultant","description":"Concevez, structurez et monetisez vos produits IA \u2014 agents, applications SaaS, API, chatbots \u2014 avec un studio guide par l'intelligence artificielle. Definissez votre produit, generez un guide de deploiement avec stack technique et couts reels, puis creez votre kit commercial, page de vente et sequence de prospection. Un seul outil, de l'idee au revenu.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/","og_locale":"en_GB","og_type":"article","og_title":"Ortive \u2014 Studio Produit IA | Concevez et Monetisez vos Produits IA - Ange Ingabire |E-commerce &amp; AI Business Consultant","og_description":"Concevez, structurez et monetisez vos produits IA \u2014 agents, applications SaaS, API, chatbots \u2014 avec un studio guide par l'intelligence artificielle. Definissez votre produit, generez un guide de deploiement avec stack technique et couts reels, puis creez votre kit commercial, page de vente et sequence de prospection. Un seul outil, de l'idee au revenu.","og_url":"https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/","og_site_name":"Ange Ingabire |E-commerce &amp; AI Business Consultant","article_modified_time":"2026-05-17T00:19:16+00:00","og_image":[{"width":1408,"height":768,"url":"http:\/\/angeingabire.com\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_iopeo4iopeo4iope.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/","url":"https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/","name":"Ortive \u2014 Studio Produit IA | Concevez et Monetisez vos Produits IA - Ange Ingabire |E-commerce &amp; AI Business Consultant","isPartOf":{"@id":"https:\/\/angeingabire.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/#primaryimage"},"image":{"@id":"https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/#primaryimage"},"thumbnailUrl":"https:\/\/angeingabire.com\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_iopeo4iopeo4iope.png","datePublished":"2026-03-25T13:13:35+00:00","dateModified":"2026-05-17T00:19:16+00:00","description":"Concevez, structurez et monetisez vos produits IA \u2014 agents, applications SaaS, API, chatbots \u2014 avec un studio guide par l'intelligence artificielle. Definissez votre produit, generez un guide de deploiement avec stack technique et couts reels, puis creez votre kit commercial, page de vente et sequence de prospection. Un seul outil, de l'idee au revenu.","breadcrumb":{"@id":"https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/#primaryimage","url":"https:\/\/angeingabire.com\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_iopeo4iopeo4iope.png","contentUrl":"https:\/\/angeingabire.com\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_iopeo4iopeo4iope.png","width":1408,"height":768,"caption":"Ortive \u2014 The AI Product Studio | Build & Monetize AI Products"},{"@type":"BreadcrumbList","@id":"https:\/\/angeingabire.com\/index.php\/ortive-studio-produit-ia-concevez-et-monetisez-vos-produits-ia\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/angeingabire.com\/"},{"@type":"ListItem","position":2,"name":"Ortive \u2014 Studio Produit IA | Concevez et Monetisez vos Produits IA"}]},{"@type":"WebSite","@id":"https:\/\/angeingabire.com\/#website","url":"https:\/\/angeingabire.com\/","name":"Ange Ingabire |E-commerce &amp; AI Business Consultant","description":"E-commerce &amp; AI Business Solutions","publisher":{"@id":"https:\/\/angeingabire.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/angeingabire.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/angeingabire.com\/#organization","name":"Ange Ingabire","url":"https:\/\/angeingabire.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/angeingabire.com\/#\/schema\/logo\/image\/","url":"https:\/\/angeingabire.com\/wp-content\/uploads\/2023\/06\/7.png","contentUrl":"https:\/\/angeingabire.com\/wp-content\/uploads\/2023\/06\/7.png","width":1080,"height":1080,"caption":"Ange Ingabire"},"image":{"@id":"https:\/\/angeingabire.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.pinterest.com\/ange_ingabire\/","https:\/\/www.linkedin.com\/in\/ange-ingabire-327893236\/"]}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/angeingabire.com\/index.php\/wp-json\/wp\/v2\/pages\/15686","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/angeingabire.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/angeingabire.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/angeingabire.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/angeingabire.com\/index.php\/wp-json\/wp\/v2\/comments?post=15686"}],"version-history":[{"count":46,"href":"https:\/\/angeingabire.com\/index.php\/wp-json\/wp\/v2\/pages\/15686\/revisions"}],"predecessor-version":[{"id":16043,"href":"https:\/\/angeingabire.com\/index.php\/wp-json\/wp\/v2\/pages\/15686\/revisions\/16043"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/angeingabire.com\/index.php\/wp-json\/wp\/v2\/media\/15879"}],"wp:attachment":[{"href":"https:\/\/angeingabire.com\/index.php\/wp-json\/wp\/v2\/media?parent=15686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}