{"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-04-07T19:37:51","modified_gmt":"2026-04-07T17:37:51","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-964b690 elementor-widget elementor-widget-html\" data-id=\"964b690\" 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 &mdash; Fran&ccedil;ais<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,600;0,9..144,700;0,9..144,800;1,9..144,400&family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600;9..40,700;9..40,800&family=IBM+Plex+Mono:wght@400;500;600&display=swap\" rel=\"stylesheet\"\/>\n<style>\n*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}\n:root{\n  --ink:#111110;--ink2:#3D3C3A;--ink3:#6B6966;--ink4:#A39F9B;\n  --surface:#FAFAF8;--s2:#F3F2EE;--s3:#E8E6E0;--s4:#D9D6CE;\n  --gold:#8B6914;--gold-s:#FBF5E6;--gold-b:#E8D99A;\n  --teal:#0E6B5E;--teal-s:#EAF5F3;--teal-b:#9ED4CC;\n  --navy:#1A3A5C;--navy-s:#EBF0F7;--navy-b:#9BB8D4;\n  --rust:#7A2010;--rust-s:#FBF0EC;\n  --white:#FFFFFF;\n  --side:#16150F;\n  --r:10px;--rl:16px;\n  --shadow:0 1px 3px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.04);\n  --shadow-md:0 2px 8px rgba(0,0,0,.08),0 8px 32px rgba(0,0,0,.06);\n}\n\nhtml,body{width:100%;min-height:100vh;font-family:'DM Sans',sans-serif;color:var(--ink);background:var(--surface);-webkit-font-smoothing:antialiased}\n::-webkit-scrollbar{width:4px;height:4px}\n::-webkit-scrollbar-track{background:transparent}\n::-webkit-scrollbar-thumb{background:var(--s3);border-radius:4px}\n\n\/* \u2500 LAYOUT \u2500 *\/\n.wrap{display:flex;min-height:100vh}\n.side{width:244px;flex-shrink:0;background:var(--side);position:fixed;top:0;left:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;padding:20px 12px 20px;z-index:100;transition:transform .28s cubic-bezier(.4,0,.2,1)}\n.main{flex:1;margin-left:244px;padding:40px 44px;min-height:100vh;max-width:1140px}\n\n\/* \u2500 SIDEBAR \u2500 *\/\n.brand{display:flex;align-items:center;gap:10px;margin-bottom:28px;padding:2px 6px}\n.brand-mark{width:32px;height:32px;border-radius:9px;background:var(--gold);display:grid;place-items:center;flex-shrink:0}\n.brand-name{font-family:'Fraunces',serif;font-weight:800;font-size:18px;letter-spacing:-.3px;color:var(--white)}\n.brand-name em{font-style:normal;color:var(--gold)}\n.brand-sub{font-size:11px;font-weight:400;color:rgba(255,255,255,.28);margin-left:4px;font-family:'IBM Plex Mono',monospace;letter-spacing:.04em}\n\n.nav-section{font-family:'IBM Plex Mono',monospace;font-size:8.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.22);padding:0 6px;margin:18px 0 6px}\n.nav-item{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:7px;cursor:pointer;transition:all .15s;width:100%;border:none;background:transparent;text-align:left}\n.nav-item:hover .nav-label{color:rgba(255,255,255,.72)}\n.nav-item.on{background:rgba(255,255,255,.07)}\n.nav-item.on .nav-label{color:var(--white);font-weight:600}\n.nav-item.on .nav-num{border-color:var(--gold);color:var(--gold)}\n.nav-item.done .nav-num{background:var(--gold);border-color:var(--gold);color:var(--side)}\n.nav-num{width:20px;height:20px;border-radius:6px;border:1.5px solid rgba(255,255,255,.14);display:grid;place-items:center;font-family:'IBM Plex Mono',monospace;font-size:8px;font-weight:600;color:rgba(255,255,255,.25);flex-shrink:0;transition:all .2s}\n.nav-label{font-size:12px;font-weight:500;color:rgba(255,255,255,.38);line-height:1;transition:color .15s}\n.nav-dot{margin-left:auto;width:4px;height:4px;border-radius:50%;background:var(--gold);opacity:0;flex-shrink:0;transition:opacity .2s}\n.nav-item.on .nav-dot{opacity:1}\n.nav-divider{height:1px;background:rgba(255,255,255,.07);margin:14px 6px}\n.nav-foot{margin-top:auto;border-top:1px solid rgba(255,255,255,.07);padding-top:12px;display:flex;align-items:center;gap:9px;padding-left:4px}\n.nav-avi{width:28px;height:28px;border-radius:8px;background:var(--gold);display:grid;place-items:center;font-family:'Fraunces',serif;font-weight:800;font-size:12px;color:var(--side);flex-shrink:0}\n.nav-foot-name{font-size:12px;font-weight:600;color:rgba(255,255,255,.62)}\n.nav-foot-sub{font-size:10px;color:rgba(255,255,255,.25);margin-top:1px}\n\n\/* \u2500 VIEWS \u2500 *\/\n.view{display:none}\n.view.on{display:block;animation:up .3s ease both}\n@keyframes up{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n@keyframes in{from{opacity:0}to{opacity:1}}\n@keyframes spin{to{transform:rotate(360deg)}}\n@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}\n@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}\n\n\/* \u2500 PAGE HEADER \u2500 *\/\n.kicker{display:flex;align-items:center;gap:7px;font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-bottom:8px}\n.kicker-dot{width:5px;height:5px;border-radius:50%;background:var(--gold);animation:pulse 2s infinite}\n.pg-h1{font-family:'Fraunces',serif!important;font-size:28px!important;font-weight:800!important;letter-spacing:-.5px!important;line-height:1.18!important;color:#111110!important;margin-bottom:7px!important;display:block!important;visibility:visible!important;opacity:1!important}\n.pg-sub{font-size:13.5px;color:var(--ink3);line-height:1.65;max-width:500px}\n\n\/* \u2500 CARDS \u2500 *\/\n.card{background:var(--white);border:1px solid var(--s3);border-radius:var(--rl);padding:22px;box-shadow:var(--shadow)}\n.card-sm{background:var(--white);border:1px solid var(--s3);border-radius:var(--r);padding:16px}\n.inset{background:var(--s2);border:1px solid var(--s3);border-radius:var(--r);padding:14px}\n.inset-gold{background:var(--gold-s);border:1px solid var(--gold-b);border-radius:var(--r);padding:14px}\n\n\/* \u2500 GRIDS \u2500 *\/\n.g2{display:grid;grid-template-columns:1fr 1fr;gap:16px}\n.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}\n.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}\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}.wrap{flex-wrap:wrap}\n\n\/* \u2500 TYPOGRAPHY \u2500 *\/\n.ct{font-family:'Fraunces',serif;font-weight:700;font-size:14.5px;letter-spacing:-.15px;color:var(--ink)}\n.cs{color:var(--ink3);font-size:12.5px;margin-top:2px;line-height:1.5}\n.lbl{font-family:'IBM Plex Mono',monospace;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--ink4);display:block;margin-bottom:6px}\n.body{font-size:13px;color:var(--ink2);line-height:1.72}\n.mono{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--ink2)}\n\n\/* \u2500 BADGES \u2500 *\/\n.badge{display:inline-flex;align-items:center;border-radius:5px;font-family:'IBM Plex Mono',monospace;font-size:9px;font-weight:600;padding:3px 8px;letter-spacing:.06em;text-transform:uppercase}\n.bg{background:var(--gold-s);color:var(--gold);border:1px solid var(--gold-b)}\n.bt{background:var(--teal-s);color:var(--teal);border:1px solid var(--teal-b)}\n.bn{background:var(--navy-s);color:var(--navy);border:1px solid var(--navy-b)}\n.bi{background:var(--s2);color:var(--ink3);border:1px solid var(--s3)}\n\n\/* \u2500 BUTTONS \u2500 *\/\n.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font-family:'DM Sans',sans-serif;font-weight:700;font-size:13px;border:none;cursor:pointer;transition:all .18s;border-radius:9px;padding:9px 18px;letter-spacing:-.1px}\n.btn-dark{background:var(--ink);color:var(--white)}\n.btn-dark:hover{background:#2A2924;transform:translateY(-1px);box-shadow:0 4px 16px rgba(0,0,0,.18)}\n.btn-dark:disabled{background:var(--s3);color:var(--ink4);transform:none;box-shadow:none;cursor:not-allowed}\n.btn-ghost{background:var(--white);border:1.5px solid var(--s3);color:var(--ink3)}\n.btn-ghost:hover{border-color:var(--ink);color:var(--ink)}\n.btn-gold{background:var(--gold);color:var(--white)}\n.btn-gold:hover{background:#7A5C0F;transform:translateY(-1px)}\n.btn-full{width:100%;padding:12px;font-size:13.5px;border-radius:10px}\n.btn-sm{padding:5px 11px;font-size:11.5px;border-radius:7px}\n.btn-xl{padding:13px 26px;font-size:14px;border-radius:11px}\n\n\/* \u2500 INPUTS \u2500 *\/\ninput[type=text],input[type=email],textarea,select{\n  background:var(--white);border:1.5px solid var(--s3);border-radius:9px;padding:9px 13px;\n  color:var(--ink);font-family:'DM Sans',sans-serif;font-size:13px;outline:none;width:100%;transition:border-color .18s\n}\ninput:focus,textarea:focus,select:focus{border-color:var(--gold)}\ninput::placeholder,textarea::placeholder{color:var(--ink4)}\ntextarea{resize:vertical;min-height:96px;line-height:1.62}\nselect{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='%236B6966' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\");background-repeat:no-repeat;background-position:right 11px center;-webkit-appearance:none;padding-right:34px}\ninput[type=range]{width:100%;accent-color:var(--gold);cursor:pointer;margin:4px 0}\n\n\/* \u2500 CHIP SELECTOR \u2500 *\/\n.chip-group{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:18px}\n.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1.5px solid var(--s3);border-radius:8px;cursor:pointer;background:var(--white);font-size:11.5px;font-weight:600;color:var(--ink3);transition:all .15s;-webkit-tap-highlight-color:transparent;font-family:'DM Sans',sans-serif}\n.chip svg{width:12px;height:12px;stroke:var(--ink4);flex-shrink:0;transition:stroke .15s;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}\n.chip:hover{border-color:var(--gold);color:var(--ink)}\n.chip:hover svg{stroke:var(--gold)}\n.chip.on{border-color:var(--gold);background:var(--gold-s);color:var(--ink)}\n.chip.on svg{stroke:var(--gold)}\n\n\/* \u2500 PRODUCT TYPE CARD \u2500 *\/\n.ptype{background:var(--white);border:1.5px solid var(--s3);border-radius:var(--rl);padding:20px 18px;cursor:pointer;transition:all .2s;position:relative;box-shadow:var(--shadow)}\n.ptype:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--s4)}\n.ptype.sel{border-color:var(--gold);background:var(--gold-s)}\n.ptype.sel::after{content:'';position:absolute;top:10px;right:10px;width:8px;height:8px;background:var(--gold);border-radius:50%}\n.ptype-icon{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;margin-bottom:14px}\n.ptype-name{font-family:'Fraunces',serif;font-weight:700;font-size:14px;color:var(--ink);margin-bottom:5px;letter-spacing:-.1px}\n.ptype-desc{font-size:11.5px;color:var(--ink3);line-height:1.55}\n\n\/* \u2500 OUTPUT TABS \u2500 *\/\n.out-tabs{display:flex;border-bottom:1px solid var(--s3);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}\n.out-tabs::-webkit-scrollbar{display:none}\n.out-tab{padding:11px 14px;font-size:11.5px;font-weight:600;color:var(--ink3);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;flex-shrink:0;background:none;border-top:none;border-left:none;border-right:none;transition:all .15s;font-family:'DM Sans',sans-serif}\n.out-tab:hover{color:var(--ink)}\n.out-tab.on{color:var(--ink);border-bottom-color:var(--gold)}\n.out-tab-push{flex:1}\n.dl-btn{display:flex;align-items:center;gap:5px;padding:5px 11px;background:var(--ink);color:var(--white);border:none;border-radius:6px;font-size:11px;font-weight:700;cursor:pointer;flex-shrink:0;font-family:'DM Sans',sans-serif;transition:all .15s;margin:auto 0}\n.dl-btn:hover{background:#2A2924}\n.out-pane{display:none;padding:22px}\n.out-pane.on{display:block}\n\n\/* \u2500 RESULT SECTIONS \u2500 *\/\n.rsec{background:var(--s2);border:1px solid var(--s3);border-radius:10px;padding:16px;margin-bottom:10px}\n.rsec-lbl{font-family:'IBM Plex Mono',monospace;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--ink4);margin-bottom:10px;display:block}\n.rsec-title{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:4px}\n.rsec ul{list-style:none}\n.rsec ul li{font-size:12.5px;color:var(--ink2);line-height:1.72;padding:2px 0 2px 13px;position:relative}\n.rsec ul li::before{content:'';position:absolute;left:0;top:9px;width:4px;height:4px;background:var(--gold);border-radius:50%}\n.code-wrap{background:var(--side);border-radius:10px;padding:16px;margin-bottom:10px}\n.code-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}\n.code-lbl{font-family:'IBM Plex Mono',monospace;font-size:9px;color:rgba(255,255,255,.4);letter-spacing:.12em;text-transform:uppercase}\n.code-pre{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:rgba(255,255,255,.82);white-space:pre-wrap;word-break:break-word;line-height:1.65}\n.copy-btn{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.45);font-size:9px;font-weight:600;padding:3px 8px;border-radius:5px;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .15s}\n.copy-btn:hover{background:rgba(255,255,255,.16);color:var(--white)}\n\n\/* \u2500 STEP FLOW \u2500 *\/\n.flow-step{display:flex;gap:11px;margin-bottom:9px}\n.flow-n{width:24px;height:24px;min-width:24px;background:var(--ink);color:rgba(255,255,255,.7);border-radius:7px;display:grid;place-items:center;font-family:'IBM Plex Mono',monospace;font-size:9px;font-weight:600}\n.flow-txt{flex:1;background:var(--s2);border:1px solid var(--s3);border-radius:7px;padding:8px 11px;font-size:12.5px;color:var(--ink2);line-height:1.5}\n\n\/* \u2500 TOGGLE \u2500 *\/\n.tgl{width:32px;height:17px;border-radius:9px;cursor:pointer;position:relative;flex-shrink:0;transition:background .18s}\n.tgl-k{position:absolute;top:2px;width:13px;height:13px;border-radius:7px;background:var(--white);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:8px 0;border-bottom:1px solid var(--s3)}\n.cap-row:last-child{border-bottom:none;padding-bottom:0}\n.cap-label{font-size:12.5px;color:var(--ink2)}\n\n\/* \u2500 RULE ROW \u2500 *\/\n.rule-r{display:flex;gap:8px;margin-bottom:7px;align-items:flex-start}\n.rule-ic{width:16px;height:16px;border-radius:5px;background:var(--gold-s);display:grid;place-items:center;flex-shrink:0;margin-top:2px}\n.rule-txt{flex:1;background:var(--s2);border:1px solid var(--s3);border-radius:7px;padding:6px 10px;font-size:12px;color:var(--ink2);line-height:1.5}\n\n\/* \u2500 TIER CARD \u2500 *\/\n.tier-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}\n.tier-card{border-radius:10px;padding:16px;position:relative}\n\n\/* \u2500 SKEL \/ SPINNER \u2500 *\/\n.skel{background:linear-gradient(90deg,var(--s2) 25%,var(--s3) 50%,var(--s2) 75%);background-size:200% 100%;animation:shimmer 1.4s ease infinite;border-radius:8px;margin-bottom:7px}\n.spin{display:inline-block;width:12px;height:12px;border:2px solid rgba(255,255,255,.2);border-top-color:var(--white);border-radius:50%;animation:spin .6s linear infinite}\n.spin-d{border-color:rgba(0,0,0,.1);border-top-color:var(--ink)}\n\n\/* \u2500 EMPTY STATE \u2500 *\/\n.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:150px;gap:10px;color:var(--ink4);font-size:13px;text-align:center}\n.empty span{max-width:200px;line-height:1.58}\n\n\/* \u2500 TOAST \u2500 *\/\n#toast{position:fixed;bottom:22px;right:22px;background:var(--ink);color:var(--white);border-radius:9px;padding:11px 18px;font-size:12.5px;font-weight:600;box-shadow:var(--shadow-md);transform:translateY(56px);opacity:0;transition:all .26s;z-index:9999;pointer-events:none}\n\n\/* \u2500 POPUP \u2500 *\/\n.overlay{position:fixed;inset:0;background:rgba(0,0,0,.38);z-index:9999;display:flex;align-items:center;justify-content:center;animation:in .2s ease}\n.popup{background:var(--white);border:1px solid var(--s3);border-radius:20px;padding:36px;width:400px;max-width:90vw;animation:up .28s ease;box-shadow:0 24px 64px rgba(0,0,0,.14);text-align:center}\n.popup-icon{width:52px;height:52px;border-radius:14px;background:var(--gold-s);display:grid;place-items:center;margin:0 auto 16px}\n.popup-title{font-family:'Fraunces',serif;font-weight:800;font-size:21px;color:var(--ink);margin-bottom:8px;letter-spacing:-.3px}\n.popup-sub{color:var(--ink3);font-size:13px;line-height:1.65;margin-bottom:22px}\n.popup-form{display:flex;gap:8px}\n.popup-note{font-size:10.5px;color:var(--ink4);margin-top:8px}\n\n\/* \u2500 MOBILE \u2500 *\/\n.mob-bar{display:none;position:fixed;top:0;left:0;right:0;height:52px;background:var(--side);z-index:150;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid rgba(255,255,255,.07)}\n.mob-brand{display:flex;align-items:center;gap:8px}\n.mob-mark{width:26px;height:26px;border-radius:7px;background:var(--gold);display:grid;place-items:center}\n.mob-name{font-family:'Fraunces',serif;font-weight:800;font-size:16px;color:var(--white)}\n.mob-name em{font-style:normal;color:var(--gold)}\n.mob-step{font-family:'IBM Plex Mono',monospace;font-size:9.5px;color:rgba(255,255,255,.35);letter-spacing:.07em}\n.mob-menu{width:34px;height:34px;border-radius:7px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);display:grid;place-items:center;cursor:pointer}\n.mob-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.48);z-index:199;animation:in .2s}\n.mob-overlay.on{display:block}\n\n@media(max-width:900px){.side{width:206px}.main{margin-left:206px;padding:28px 22px}.g4{grid-template-columns:repeat(2,1fr)}}\n@media(max-width:680px){\n  .mob-bar{display:flex}\n  .side{transform:translateX(-100%);width:252px;z-index:200}\n  .side.open{transform:translateX(0)}\n  .main{margin-left:0;padding:68px 14px 28px}\n  .g2,.g3,.g4{grid-template-columns:1fr}\n  .pg-h1{font-size:22px!important}\n  .pg-sub{font-size:12.5px}\n  .card{padding:16px}\n  .tier-grid{grid-template-columns:1fr}\n  input,textarea,select{font-size:14px}\n}\n<\/style>\n<\/head>\n<body>\n\n<div class=\"mob-overlay\" id=\"mob-ov\" onclick=\"closeSide()\"><\/div>\n<div class=\"mob-bar\">\n  <div class=\"mob-brand\">\n    <div class=\"mob-mark\"><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#16150F\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2L2 7l10 5 10-5-10-5z\"\/><path d=\"M2 17l10 5 10-5\"\/><path d=\"M2 12l10 5 10-5\"\/><\/svg><\/div>\n    <span class=\"mob-name\">Ort<em>ive<\/em><\/span>\n  <\/div>\n  <span class=\"mob-step\" id=\"mob-label\">Construire &middot; &Eacute;tape 1<\/span>\n  <div class=\"mob-menu\" onclick=\"openSide()\"><svg width=\"15\" height=\"15\" 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\n<div class=\"wrap\">\n<aside class=\"side\" id=\"side\">\n  <div class=\"brand\">\n    <div class=\"brand-mark\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#16150F\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2L2 7l10 5 10-5-10-5z\"\/><path d=\"M2 17l10 5 10-5\"\/><path d=\"M2 12l10 5 10-5\"\/><\/svg><\/div>\n    <span class=\"brand-name\">Ort<em>ive<\/em><span class=\"brand-sub\">Studio<\/span><\/span>\n  <\/div>\n\n  <div class=\"nav-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\">D&eacute;finir + Sch&eacute;ma<\/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&eacute;s<\/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&eacute;ploiement<\/span><div class=\"nav-dot\"><\/div><\/button>\n\n  <div class=\"nav-divider\"><\/div>\n\n  <div class=\"nav-section\">Mon&eacute;tiser<\/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&eacute;finir l&rsquo;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&egrave;le de revenus<\/span><div class=\"nav-dot\"><\/div><\/button>\n\n  <div class=\"nav-foot\"><div class=\"nav-avi\">O<\/div><div><div class=\"nav-foot-name\">Ortive Studio<\/div><div class=\"nav-foot-sub\">Acc&egrave;s anticip&eacute;<\/div><\/div><\/div>\n<\/aside>\n\n<main class=\"main\">\n\n<!-- B1: PRODUCT TYPE -->\n<div class=\"view on\" id=\"v-b1\">\n  <div style=\"margin-bottom:26px\">\n    <div class=\"kicker\"><div class=\"kicker-dot\"><\/div>Construire &mdash; &Eacute;tape 1 sur 5<\/div>\n    <h1 class=\"pg-h1\">Qu&rsquo;est-ce que vous construisez&nbsp;?<\/h1>\n    <p class=\"pg-sub\">S&eacute;lectionnez un type de produit. Votre sch&eacute;ma, vos modules et votre guide de d&eacute;ploiement s&rsquo;adapteront &agrave; ce choix.<\/p>\n  <\/div>\n  <div class=\"g4\" id=\"type-grid\"><\/div>\n  <div style=\"margin-top:22px;display:flex;justify-content:flex-end\">\n    <button class=\"btn btn-dark btn-xl\" id=\"btn-next-type\" onclick=\"nav('b2')\" disabled>\n      Continuer vers le sch&eacute;ma\n      <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg>\n    <\/button>\n  <\/div>\n<\/div>\n\n<!-- B2: DEFINE + BLUEPRINT -->\n<div class=\"view\" id=\"v-b2\">\n  <div style=\"margin-bottom:26px\">\n    <div class=\"kicker\"><div class=\"kicker-dot\"><\/div>Construire &mdash; &Eacute;tape 2 sur 5<\/div>\n    <h1 class=\"pg-h1\">D&eacute;finir &amp; G&eacute;n&eacute;rer le sch&eacute;ma<\/h1>\n    <p class=\"pg-sub\">Fill in the specifics. The richer your input, the deeper the output \u2014 system prompts, tech stack, pricing tiers, cold email, and more.<\/p>\n  <\/div>\n  <div class=\"g2\" style=\"gap:20px\">\n    <div class=\"col gap14\">\n      <div class=\"card\">\n        <div class=\"row gap10\" style=\"margin-bottom:16px\">\n          <div id=\"b2-type-icon\" style=\"width:38px;height:38px;border-radius:10px;background:var(--s2);display:grid;place-items:center;flex-shrink:0\"><\/div>\n          <div><div class=\"ct\" id=\"b2-type-lbl\">Selected Type<\/div><div class=\"cs\" id=\"b2-type-desc\">Configure below<\/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\" style=\"margin-top:12px\" id=\"btn-gen-bp\" onclick=\"genBlueprint()\">\n          <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg>\n          G&eacute;n&eacute;rer le sch&eacute;ma\n        <\/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=\"36\" height=\"36\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--s4)\" stroke-width=\"1.4\" 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\"\/><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"\/><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"\/><\/svg>\n        <span>Votre sch&eacute;ma appara&icirc;tra ici &mdash; architecture, scripts, flux et mon&eacute;tisation.<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div style=\"margin-top:14px;display:flex;justify-content:flex-end\">\n    <button class=\"btn btn-dark\" onclick=\"nav('b3')\" style=\"padding:10px 22px;gap:8px\">Suivant&nbsp;: Fonctionnalit&eacute;s <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><\/button>\n  <\/div>\n<\/div>\n\n<!-- B3: CAPABILITIES -->\n<div class=\"view\" id=\"v-b3\">\n  <div style=\"margin-bottom:26px\">\n    <div class=\"kicker\"><div class=\"kicker-dot\"><\/div>Construire &mdash; &Eacute;tape 3 sur 5<\/div>\n    <h1 class=\"pg-h1\">Modules de fonctionnalit&eacute;s<\/h1>\n    <p class=\"pg-sub\">Activez ce que votre produit peut faire. Votre guide de d&eacute;ploiement r&eacute;f&eacute;rencera tout ce que vous activez ici.<\/p>\n  <\/div>\n  <div class=\"card\" style=\"margin-bottom:14px\">\n    <div class=\"between\"><div><div class=\"ct\">Modules actifs<\/div><div class=\"cs\">Combinez librement entre les cat&eacute;gories<\/div><\/div><span class=\"badge bg\" id=\"cap-badge\">0 active<\/span><\/div>\n  <\/div>\n  <div class=\"g2\" id=\"cap-grid\"><\/div>\n  <div style=\"margin-top:14px;display:flex;justify-content:flex-end\">\n    <button class=\"btn btn-dark\" onclick=\"nav('b4')\" style=\"padding:10px 22px;gap:8px\">Construire le flux <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><\/button>\n  <\/div>\n<\/div>\n\n<!-- B4: WORKFLOW -->\n<div class=\"view\" id=\"v-b4\">\n  <div style=\"margin-bottom:26px\">\n    <div class=\"kicker\"><div class=\"kicker-dot\"><\/div>Construire &mdash; &Eacute;tape 4 sur 5<\/div>\n    <h1 class=\"pg-h1\">Flux de travail<\/h1>\n    <p class=\"pg-sub\">Flux d&rsquo;ex&eacute;cution de bout en bout, canaux de diffusion et r&egrave;gles de comportement.<\/p>\n  <\/div>\n  <div class=\"card\" style=\"margin-bottom:14px\">\n    <div class=\"between\"><div><div class=\"ct\">G&eacute;n&eacute;r&eacute; automatiquement<\/div><div class=\"cs\">Se met &agrave; jour selon vos fonctionnalit&eacute;s et canaux<\/div><\/div>\n      <button class=\"btn btn-ghost btn-sm\" onclick=\"buildWorkflow()\">\n        <svg width=\"11\" height=\"11\" 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        Regenerate\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&rsquo;ex&eacute;cution<\/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&egrave;gles de comportement<\/div>\n        <div id=\"wf-rules\"><\/div>\n        <div style=\"display:flex;gap:7px;margin-top:10px\">\n          <input type=\"text\" id=\"rule-inp\" placeholder=\"Ajouter une r&egrave;gle...\" onkeydown=\"if(event.key==='Enter')addRule()\" style=\"flex:1\"\/>\n          <button class=\"btn btn-dark btn-sm\" onclick=\"addRule()\"><svg width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div style=\"margin-top:14px;display:flex;justify-content:flex-end\">\n    <button class=\"btn btn-dark\" onclick=\"nav('b5')\" style=\"padding:10px 22px;gap:8px\">Guide de d&eacute;ploiement <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><\/button>\n  <\/div>\n<\/div>\n\n<!-- B5: DEPLOYMENT MANUAL -->\n<div class=\"view\" id=\"v-b5\">\n  <div style=\"margin-bottom:26px\">\n    <div class=\"kicker\"><div class=\"kicker-dot\"><\/div>Construire &mdash; &Eacute;tape 5 sur 5<\/div>\n    <h1 class=\"pg-h1\">Guide de d&eacute;ploiement<\/h1>\n    <p class=\"pg-sub\">Outils r&eacute;els, prix r&eacute;els, phases de construction r&eacute;elles &mdash; g&eacute;n&eacute;r&eacute; depuis tout ce que vous avez configur&eacute;.<\/p>\n  <\/div>\n  <div class=\"g2\" style=\"gap:20px\">\n    <div class=\"col gap12\">\n      <div class=\"inset-gold\"><div class=\"lbl\">R&eacute;sum&eacute; de session<\/div><div id=\"b5-summary\" class=\"col gap6\"><\/div><\/div>\n      <button class=\"btn btn-dark btn-full\" id=\"btn-gen-deploy\" onclick=\"genDeploy()\">\n        <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg>\n        G&eacute;n&eacute;rer le guide de d&eacute;ploiement\n      <\/button>\n      <button class=\"btn btn-ghost btn-full\" id=\"btn-copy-deploy\" onclick=\"copyDeploy()\" disabled>\n        <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"\/><\/svg>\n        Copier le guide complet\n      <\/button>\n      <div class=\"card\" style=\"background:var(--gold-s);border-color:var(--gold-b)\">\n        <div class=\"ct\" style=\"margin-bottom:6px;font-size:13px\">Piste Construire termin&eacute;e<\/div>\n        <div class=\"body\" style=\"font-size:12px;margin-bottom:12px\">Passez &agrave; la piste Mon&eacute;tiser pour g&eacute;n&eacute;rer votre grille tarifaire, page de vente, s&eacute;quence de prospection et projections de revenus.<\/div>\n        <button class=\"btn btn-gold\" style=\"width:100%;padding:10px;font-size:12.5px\" onclick=\"nav('m1')\">Aller vers Mon&eacute;tiser &rarr;<\/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=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--s4)\" stroke-width=\"1.4\" 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\"\/><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"\/><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"\/><\/svg>\n        <span>Stack technique, phases de construction, checklist et estimations de co&ucirc;ts appara&icirc;tront ici.<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- M1: DEFINE OFFER -->\n<div class=\"view\" id=\"v-m1\">\n  <div style=\"margin-bottom:26px\">\n    <div class=\"kicker\"><div class=\"kicker-dot\"><\/div>Mon&eacute;tiser &mdash; &Eacute;tape A sur E<\/div>\n    <h1 class=\"pg-h1\">D&eacute;finir votre offre<\/h1>\n    <p class=\"pg-sub\">Le contexte de votre session de construction est pr&eacute;rempli. Ajustez avant de g&eacute;n&eacute;rer votre package complet.<\/p>\n  <\/div>\n  <div class=\"g2\" style=\"gap:20px\">\n    <div class=\"card\">\n      <div class=\"lbl\">Secteur d&rsquo;activit&eacute;<\/div>\n      <input type=\"text\" id=\"m-industry\" value=\"Sant&eacute;\" style=\"margin-bottom:13px\"\/>\n      <div class=\"lbl\">Probl&egrave;me que vous r&eacute;solvez<\/div>\n      <textarea id=\"m-problem\" rows=\"3\" style=\"margin-bottom:13px\">Patients qui manquent leurs rendez-vous, taux d&rsquo;absence &eacute;lev&eacute;, personnel perdu sur les rappels manuels<\/textarea>\n      <div class=\"lbl\">Client id&eacute;al<\/div>\n      <input type=\"text\" id=\"m-customer\" value=\"Cabinets dentaires priv&eacute;s, 3&ndash;15 employ&eacute;s, 20+ rendez-vous par jour\" style=\"margin-bottom:13px\"\/>\n      <div class=\"lbl\">Diff&eacute;renciateur cl&eacute;<\/div>\n      <input type=\"text\" id=\"m-diff\" value=\"Enti&egrave;rement autonome &mdash; fonctionne 24h\/24 sans intervention du personnel\" style=\"margin-bottom:13px\"\/>\n      <div class=\"lbl\">Mod&egrave;le tarifaire<\/div>\n      <div class=\"chip-group\" id=\"m-pricing-btns\"><\/div>\n      <div class=\"lbl\">Prix&nbsp;: <span id=\"m-price-disp\">97<\/span>&euro;\/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:14px\">Aper&ccedil;u de l&rsquo;offre<\/div>\n      <div class=\"col gap10\">\n        <div class=\"inset\"><div class=\"lbl\">Product<\/div><div style=\"font-family:'Fraunces',serif;font-weight:700;font-size:16px;color:var(--ink)\" id=\"m1-name\">&mdash;<\/div><div class=\"cs\" id=\"m1-type\">&mdash;<\/div><\/div>\n        <div class=\"inset\"><div class=\"lbl\">Tarif<\/div><div style=\"font-family:'Fraunces',serif;font-weight:800;font-size:24px;color:var(--ink)\"><span id=\"m1-price\">97<\/span><span style=\"font-size:14px;font-weight:400;color:var(--ink3)\">&euro;\/mois<\/span><\/div><div class=\"cs\" id=\"m1-model\">Abonnement<\/div><\/div>\n        <div class=\"inset\"><div class=\"lbl\">Target<\/div><div class=\"body\" style=\"font-size:12.5px\" id=\"m1-target\">Cabinets dentaires priv&eacute;s&hellip;<\/div><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div class=\"card\" style=\"margin-top:14px\">\n    <button class=\"btn btn-dark btn-full\" onclick=\"nav('m2')\">\n      <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg>\n      Continuer vers le package commercial\n    <\/button>\n  <\/div>\n<\/div>\n\n<!-- M2: SALES PACKAGE -->\n<div class=\"view\" id=\"v-m2\">\n  <div style=\"margin-bottom:26px\">\n    <div class=\"kicker\"><div class=\"kicker-dot\"><\/div>Mon&eacute;tiser &mdash; &Eacute;tape B sur E<\/div>\n    <h1 class=\"pg-h1\">Package commercial<\/h1>\n    <p class=\"pg-sub\">Nom de produit, accroche, titre h&eacute;ro, arguments de vente et grille tarifaire &mdash; con&ccedil;us depuis votre offre.<\/p>\n  <\/div>\n  <div class=\"g2\" style=\"gap:20px\">\n    <div class=\"card\"><div class=\"ct\" style=\"margin-bottom:6px\">Package commercial IA<\/div><div class=\"cs\" style=\"margin-bottom:16px\">G&eacute;n&egrave;re nom, accroche, titre, arguments et grille tarifaire depuis votre offre.<\/div>\n      <button class=\"btn btn-dark btn-full\" id=\"btn-gen-offer\" onclick=\"genOffer()\">\n        <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg>\n        G&eacute;n&eacute;rer le package commercial\n      <\/button>\n    <\/div>\n    <div class=\"card\" id=\"m2-out\" style=\"min-height:260px\"><div class=\"empty\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--s4)\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><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&eacute;ro, arguments et grille tarifaire appara&icirc;tront ici.<\/span><\/div><\/div>\n  <\/div>\n  <div style=\"margin-top:14px;display:flex;justify-content:flex-end\"><button class=\"btn btn-dark\" onclick=\"nav('m3')\" style=\"padding:10px 22px;gap:8px\">Suivant&nbsp;: Page de vente <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><\/button><\/div>\n<\/div>\n\n<!-- M3: LANDING PAGE -->\n<div class=\"view\" id=\"v-m3\">\n  <div style=\"margin-bottom:26px\">\n    <div class=\"kicker\"><div class=\"kicker-dot\"><\/div>Mon&eacute;tiser &mdash; &Eacute;tape C sur E<\/div>\n    <h1 class=\"pg-h1\">Page de vente<\/h1>\n    <p class=\"pg-sub\">H&eacute;ro, probl&egrave;me, solution, fonctionnalit&eacute;s, t&eacute;moignages, FAQ et appel &agrave; l&rsquo;action &mdash; pr&ecirc;t &agrave; coller dans n&rsquo;importe quel constructeur.<\/p>\n  <\/div>\n  <div class=\"card\" style=\"margin-bottom:14px\"><button class=\"btn btn-dark btn-full\" id=\"btn-gen-lp\" onclick=\"genLP()\"><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg>G&eacute;n&eacute;rer le contenu de la page de vente<\/button><\/div>\n  <div class=\"card\" id=\"m3-out\" style=\"min-height:180px\"><div class=\"empty\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--s4)\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\"\/><line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"\/><line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"\/><\/svg><span>Toutes les sections de la page de vente appara&icirc;tront ici.<\/span><\/div><\/div>\n  <div style=\"margin-top:14px;display:flex;justify-content:flex-end\"><button class=\"btn btn-dark\" onclick=\"nav('m4')\" style=\"padding:10px 22px;gap:8px\">Suivant&nbsp;: Prospection <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><\/button><\/div>\n<\/div>\n\n<!-- M4: OUTREACH -->\n<div class=\"view\" id=\"v-m4\">\n  <div style=\"margin-bottom:26px\">\n    <div class=\"kicker\"><div class=\"kicker-dot\"><\/div>Mon&eacute;tiser &mdash; &Eacute;tape D sur E<\/div>\n    <h1 class=\"pg-h1\">S&eacute;quence de prospection<\/h1>\n    <p class=\"pg-sub\">3 e-mails &agrave; froid &mdash; introduction, relance valeur et rupture &mdash; r&eacute;dig&eacute;s pour votre client id&eacute;al.<\/p>\n  <\/div>\n  <div class=\"card\" style=\"margin-bottom:14px\"><button class=\"btn btn-dark btn-full\" id=\"btn-gen-out\" onclick=\"genOutreach()\"><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg>G&eacute;n&eacute;rer la s&eacute;quence de 3 e-mails<\/button><\/div>\n  <div class=\"col gap12\" id=\"m4-out\"><div class=\"card\"><div class=\"empty\"><svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--s4)\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><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&ecirc;ts &agrave; envoyer appara&icirc;tront ici.<\/span><\/div><\/div><\/div>\n  <div style=\"margin-top:14px;display:flex;justify-content:flex-end\"><button class=\"btn btn-dark\" onclick=\"nav('m5')\" style=\"padding:10px 22px;gap:8px\">Suivant&nbsp;: Mod&egrave;le de revenus <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><\/button><\/div>\n<\/div>\n\n<!-- M5: REVENUE MODEL -->\n<div class=\"view\" id=\"v-m5\">\n  <div style=\"margin-bottom:26px\">\n    <div class=\"kicker\"><div class=\"kicker-dot\"><\/div>Mon&eacute;tiser &mdash; &Eacute;tape E sur E<\/div>\n    <h1 class=\"pg-h1\">Mod&egrave;le de revenus<\/h1>\n    <p class=\"pg-sub\">Ajustez vos hypoth&egrave;ses de croissance. Visualisez votre business &agrave; chaque &eacute;tape cl&eacute;.<\/p>\n  <\/div>\n  <div class=\"g2\" style=\"gap:20px\">\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:16px\">&Agrave; <span id=\"rev-pr\">97<\/span>&euro;\/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:12px\"\/>\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:12px\"\/>\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:12px\"\/>\n        <div class=\"lbl\">Taux d&rsquo;attrition mensuel (%)<\/div><input type=\"range\" id=\"rch\" min=\"0\" max=\"15\" value=\"5\" oninput=\"calcRev()\" style=\"margin-bottom:16px\"\/>\n        <div id=\"rev-out\" class=\"col gap9\"><\/div>\n      <\/div>\n    <\/div>\n    <div class=\"col gap14\">\n      <div class=\"card\" style=\"background:var(--gold-s);border-color:var(--gold-b)\">\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&egrave;te<\/div>\n        <div class=\"cs\" style=\"margin-bottom:13px\">Copiez le sch&eacute;ma, textes de vente, e-mails et projections dans votre presse-papiers.<\/div>\n        <button class=\"btn btn-dark btn-full\" onclick=\"exportAll()\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"\/><\/svg>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>\nvar KEY = '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 ';\nvar MDL = 'claude-sonnet-4-6';\nvar SHEETS = 'https:\/\/script.google.com\/macros\/s\/AKfycbyIaKOXR5FZqN2CPPugCHXQXOpsdUgftucEfQl7XqbYygHiKy48wNvzVzo9WKGB1jsbsg\/exec ';\n\n\/* \u2550\u2550 STATE \u2550\u2550 *\/\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:{'T\\u00e9l\\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  buildUses:parseInt(localStorage.getItem('os_b_fr')||'0'),\n  monetizeUses:parseInt(localStorage.getItem('os_m_fr')||'0'),\n  MAX:1\n};\n\n\/* \u2550\u2550 PRODUCT TYPES \u2550\u2550 *\/\nvar TYPES=[\n  {id:'agent',name:'Agent IA',color:'#16150F',bg:'#F2F1EE',\n   desc:'IA autonome qui qualifie, r\\u00e9serve et fait des relances 24h\/24.',\n   icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\"\/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/><circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\" stroke=\"none\"\/><\/svg>',\n   chips:['Qualification de leads','Support client','Prise de rendez-vous','Prospection commerciale','Int\\u00e9gration patients','Collecte de donn\\u00e9es','Op\\u00e9rations internes','Personnalis\\u00e9'],\n   chiplabel:'Type d\\u2019agent',\n   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:'#0E6B5E',bg:'#EAF5F3',\n   desc:'Plateforme web o\\u00f9 les clients se connectent et paient chaque mois.',\n   icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\"\/><line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"\/><line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"\/><\/svg>',\n   chips:['CRM \/ Ventes','Marketing','Productivit\\u00e9','Analytique','RH \/ People Ops','Finance \/ Facturation','DevOps \/ Infra','Personnalis\\u00e9'],\n   chiplabel:'Cat\\u00e9gorie SaaS',\n   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:'#1A3A5C',bg:'#EBF0F7',\n   desc:'Widget conversationnel int\\u00e9gr\\u00e9 sur un site ou une application.',\n   icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.7\" 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>',\n   chips:['Capture de leads','Bot FAQ','Bot support','Guide d\\u2019int\\u00e9gration','Recommandation produit','Bot de r\\u00e9servation','Sondage','Personnalis\\u00e9'],\n   chiplabel:'Objectif du chatbot',\n   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:'#8B6914',bg:'#FBF5E6',\n   desc:'Endpoint IA sans interface que d\\u2019autres produits int\\u00e8grent.',\n   icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"16 18 22 12 16 6\"\/><polyline points=\"8 6 2 12 8 18\"\/><\/svg>',\n   chips:['Scoring de CV','Analyse de sentiment','Mod\\u00e9ration de contenu','Extraction d\\u2019entit\\u00e9s','Classification','Traduction','Analyse d\\u2019image','Personnalis\\u00e9'],\n   chiplabel:\"Fonction de l\\u2019API\",\n   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:'#3D3C3A',bg:'#F3F2EE',\n   desc:'Flux de travail IA qui d\\u00e9clenche des actions dans tout votre stack.',\n   icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.7\" 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>',\n   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'],\n   chiplabel:\"Type d\\u2019automatisation\",\n   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:'#7A2010',bg:'#FBF0EC',\n   desc:\"Exp\\u00e9rience mobile native ou PWA propuls\\u00e9e par l\\u2019IA.\",\n   icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\"\/><line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\"\/><\/svg>',\n   chips:['Forme & Bien-\\u00eatre','Apprentissage des langues','Finance \/ Budget','Suivi sant\\u00e9','Productivit\\u00e9','\\u00c9ducation','Vie sociale','Personnalis\\u00e9'],\n   chiplabel:\"Cat\\u00e9gorie d\\u2019application\",\n   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:'#6B5010',bg:'#FBF5E6',\n   desc:\"Extension navigateur ou plugin CMS ajoutant l\\u2019IA \\u00e0 des outils existants.\",\n   icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.7\" 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>',\n   chips:['Extension Chrome','Plugin WordPress','App Shopify','Plugin Figma','Int\\u00e9gration Notion','Extension VS Code','App Zapier','Personnalis\\u00e9'],\n   chiplabel:'Plateforme du plugin',\n   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:'#16150F',bg:'#F2F1EE',\n   desc:\"Assistant IA int\\u00e9gr\\u00e9 dans un autre produit pour guider les utilisateurs.\",\n   icon:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.7\" 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>',\n   chips:['Copilote CRM','Assistant r\\u00e9daction','Revue de code','Analyse de donn\\u00e9es','Retour design','Analyse juridique','Conseil financier','Personnalis\\u00e9'],\n   chiplabel:'Fonction du copilote',\n   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\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\n\/* \u2550\u2550 MOBILE \u2550\u2550 *\/\nfunction openSide(){document.getElementById('side').classList.add('open');document.getElementById('mob-ov').classList.add('on');document.body.style.overflow='hidden'}\nfunction closeSide(){document.getElementById('side').classList.remove('open');document.getElementById('mob-ov').classList.remove('on');document.body.style.overflow=''}\n\n\/* \u2550\u2550 NAVIGATION \u2550\u2550 *\/\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 mlbl=document.getElementById('mob-label');\n  if(mlbl&&nEl){var lb=nEl.querySelector('.nav-label');var nb=nEl.querySelector('.nav-num');if(lb&&nb)mlbl.textContent=(nb.textContent||'').trim()+' \\xb7 '+(lb.textContent||'').trim()}\n  closeSide();\n  if(v==='b2')setupB2();\n  if(v==='b3')buildCapGrid();\n  if(v==='b4')buildWorkflow();\n  if(v==='b5')setupB5();\n  if(v==='m1')setupM1();\n  if(v==='m5'){calcRev();buildGTM()}\n  window.scrollTo(0,0);\n}\n\n\/* \u2550\u2550 B1: TYPE GRID \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\" style=\"background:'+t.bg+';color:'+t.color+'\">'+t.icon.replace('<svg','<svg width=\"20\" height=\"20\" stroke=\"'+t.color+'\"')+'<\/div><div class=\"ptype-name\">'+t.name+'<\/div><div class=\"ptype-desc\">'+t.desc+'<\/div>';\n    c.onclick=function(){\n      S.type=t.id;S.typeName=t.name;S.typeDesc=t.desc;S.typeColor=t.color;S.typeBg=t.bg;S.typeIcon=t.icon;\n      document.querySelectorAll('.ptype').forEach(function(x){x.classList.remove('sel')});c.classList.add('sel');\n      document.getElementById('btn-next-type').disabled=false;mark('b1');\n    };\n    g.appendChild(c);\n  });\n}\n\n\/* \u2550\u2550 B2: DEFINE + BLUEPRINT \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');\n  if(ic){ic.innerHTML=t.icon.replace('<svg','<svg width=\"18\" height=\"18\" stroke=\"'+t.color+'\"');ic.style.background=t.bg;}\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  \/\/ Mode chips\n  var mc=document.getElementById('b2-mode-chips');\n  if(mc){\n    mc.innerHTML='<div class=\"lbl\">'+t.chiplabel+'<\/div><div class=\"chip-group\" id=\"mode-chips-inner\"><\/div>';\n    var ci=document.getElementById('mode-chips-inner');\n    t.chips.forEach(function(chip){\n      var btn=document.createElement('button');btn.className='chip'+(S.modeChip===chip?' on':'');\n      btn.innerHTML='<svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>'+chip;\n      btn.onclick=function(){\n        document.querySelectorAll('#mode-chips-inner .chip').forEach(function(x){x.classList.remove('on')});\n        btn.classList.add('on');S.modeChip=chip;\n      };\n      ci.appendChild(btn);\n    });\n  }\n  \/\/ Extra fields\n  var df=document.getElementById('b2-fields');\n  if(!df)return;df.innerHTML='';\n  df.innerHTML+='<div class=\"lbl\" style=\"margin-top:14px\">Nom du produit<\/div><input type=\"text\" id=\"b2-name\" placeholder=\"ex.\\u00a0: DentaFlow IA\" style=\"margin-bottom:13px\"\/>';\n  t.extra.forEach(function(f){\n    var id='b2-'+f.id;\n    df.innerHTML+='<div class=\"lbl\">'+f.label+'<\/div>';\n    if(f.type==='select'){\n      var opts=(f.opts||[]).map(function(o){return'<option>'+o+'<\/option>'}).join('');\n      df.innerHTML+='<select id=\"'+id+'\" style=\"margin-bottom:13px\">'+opts+'<\/select>';\n    } else {\n      df.innerHTML+='<input type=\"text\" id=\"'+id+'\" placeholder=\"'+(f.placeholder||'')+'\" style=\"margin-bottom:13px\"\/>';\n    }\n  });\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(S.buildUses>=S.MAX){showLimit();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=[];\n  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 en cours\\u2026';\n  out.innerHTML=skelHTML();\n\n  var isAgent=S.type==='agent',isSaas=S.type==='saas',isApp=['mobile','chatbot','plugin','copilot'].includes(S.type);\n  var agentExtra=isAgent?',\"systemPrompt\":\"full 200-word system prompt, identity, behavior, constraints\",\"opening\":\"opening message + 3 qualification questions\",\"objections\":\"top 3 objections with verbatim responses\",\"handoff\":\"escalation and close sequence\"':'';\n  var saasExtra=isSaas?',\"icpDetail\":{\"firmographics\":\"company size, industry, revenue\",\"psychographics\":\"mindset, goals, pain\",\"buyingTriggers\":[\"t1\",\"t2\",\"t3\"]},\"competitors\":[{\"name\":\"c1\",\"weakness\":\"w1\",\"edge\":\"e1\"},{\"name\":\"c2\",\"weakness\":\"w2\",\"edge\":\"e2\"}],\"pricingTiers\":[{\"name\":\"Starter\",\"price\":\"X\\u20ac\/mois\",\"for\":\"who\",\"features\":[\"f1\",\"f2\",\"f3\"]},{\"name\":\"Growth\",\"price\":\"X\\u20ac\/mois\",\"for\":\"who\",\"features\":[\"f1\",\"f2\",\"f3\",\"f4\"],\"recommended\":true},{\"name\":\"Enterprise\",\"price\":\"X\\u20ac\/mois\",\"for\":\"who\",\"features\":[\"f1\",\"f2\",\"f3\",\"f4\",\"f5\"]}],\"coldEmail\":{\"subject\":\"objet de l\\u2019e-mail\",\"body\":\"e-mail de prospection de 150 mots avec [PR\\u00c9NOM] et [ENTREPRISE]\"}':'';\n\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 suppl\\u00e9mentaire: '+extras.join(' | ')+'\\n\\nRetourne UNIQUEMENT du JSON valide, sans markdown:\\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\n  try{\n    var res=await apiFetch(prompt,1600);\n    S.blueprint=res;S.buildUses++;localStorage.setItem('os_b_fr',S.buildUses);mark('b2');\n    renderBlueprint(res);\n  }catch(e){\n    out.innerHTML='<div style=\"padding:22px\"><div class=\"inset\" style=\"border-color:#f5c6c6;background:#fdf0f0\"><p style=\"color:var(--rust);font-weight:600;font-size:13px\">Error: '+e.message+'<\/p><p class=\"body\" style=\"margin-top:6px;font-size:12px\">Check your API key in the KEY variable.<\/p><\/div><\/div>';\n  }\n  btn.disabled=false;btn.innerHTML='<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg> G\\u00e9n\\u00e9rer le sch\\u00e9ma';\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=[];\n  if(isAgent)tabs=['Architecture','Scripts','Flux'];\n  else if(isSaas)tabs=['Positionnement','Grille tarifaire','Commercialisation'];\n  else tabs=['Sch\\u00e9ma','Stack technique','Plan de lancement'];\n  tabs.push('Mon\\u00e9tiser');S.bpTabs=tabs;\n\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()\"><svg width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\/><polyline points=\"7 10 12 15 17 10\"\/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"\/><\/svg> Save<\/button>';\n  tabHtml+='<\/div><div id=\"bp-panes\">';\n\n  \/\/ Pane 0\n  var p0='';\n  if(isAgent){\n    p0+=rsec('Identit\\u00e9 de l\\u2019agent','<p class=\"body\">'+r.elevator+'<\/p>');\n    var st=r.techStack||{};p0+=rsec('Stack recommand\\u00e9','<p class=\"body\" style=\"font-weight:600\">'+r.productName+'<\/p><p class=\"body\" style=\"margin-top:4px\">'+st.primary+' &bull; '+st.ai+' &bull; '+st.integrations+'<\/p>');\n    p0+=rsec('Capacit\\u00e9s principales',listHtml(r.mvpFeatures));\n    p0+=rsec('Garde-fous',listHtml(r.risks));\n  } else if(isSaas){\n    p0+=rsec('Positionnement','<p class=\"body\" style=\"font-size:16px;font-weight:700;font-family:Fraunces,serif;color:var(--ink);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','<div class=\"body\"><strong>Firmographics:<\/strong> '+r.icpDetail.firmographics+'<\/div><div class=\"body\" style=\"margin-top:6px\"><strong>Mindset:<\/strong> '+r.icpDetail.psychographics+'<\/div>'+listHtml(r.icpDetail.buyingTriggers,'D\\u00e9clencheurs d\\u2019achat'));}\n    if(r.competitors){var compHtml=r.competitors.map(function(c){return'<div class=\"inset\" style=\"margin-bottom:8px\"><p class=\"body\" style=\"font-weight:700\">'+c.name+'<\/p><p class=\"body\" style=\"margin-top:3px\"><span style=\"color:var(--rust)\">Faiblesse\\u00a0:<\/span> '+c.weakness+'<\/p><p class=\"body\" style=\"margin-top:3px\"><span style=\"color:var(--teal)\">Notre avantage\\u00a0:<\/span> '+c.edge+'<\/p><\/div>';}).join('');p0+=rsec('Paysage concurrentiel',compHtml);}\n  } else {\n    p0+=rsec('Vue d\\u2019ensemble','<p class=\"body\" style=\"font-size:16px;font-weight:700;font-family:Fraunces,serif;color:var(--ink);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    p0+=rsec('Fonctionnalit\\u00e9s MVP',listHtml(r.mvpFeatures));\n    p0+=rsec('Fonctionnalit\\u00e9s V2',listHtml(r.v2Features));\n  }\n\n  \/\/ Pane 1\n  var p1='';\n  if(isAgent){\n    if(r.systemPrompt)p1+=codeBlock('System Prompt \u2014 paste into Retell AI or any agent platform',r.systemPrompt);\n    if(r.opening)p1+=codeBlock('Opening Message + Qualifiers',r.opening);\n    if(r.objections)p1+=codeBlock('Objection Handling',r.objections);\n    if(r.handoff)p1+=codeBlock('Handoff & Close',r.handoff);\n  } else if(isSaas){\n    if(r.pricingTiers){\n      p1+='<div class=\"rsec-lbl\" style=\"display:block;margin-bottom:10px\">Grille tarifaire recommand\\u00e9e<\/div>';\n      var bg3=['var(--s2)','var(--gold)','var(--ink)'],fg3=['var(--ink)','var(--side)','var(--white)'],sub3=['var(--ink3)','rgba(22,21,15,.6)','rgba(255,255,255,.5)'];\n      p1+='<div class=\"tier-grid\">'+r.pricingTiers.map(function(t,i){\n        return'<div class=\"tier-card\" style=\"background:'+bg3[i]+'\"><div class=\"lbl\" style=\"color:'+sub3[i]+'\">'+t.name+(t.recommended?' \\u2022 Recommand\\u00e9':'')+'<\/div><div style=\"font-family:Fraunces,serif;font-weight:800;font-size:22px;color:'+fg3[i]+';margin:6px 0 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 11px;position:relative\"><span style=\"position:absolute;left:0;top:8px;width:4px;height:4px;background:var(--gold);border-radius:50%;display:block\"><\/span>'+f+'<\/li>';}).join('')+'<\/ul><\/div>';\n      }).join('')+'<\/div>';\n    }\n  } else {\n    var stk=r.techStack||{};\n    var stkKeys={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:8px;margin-bottom:12px\">';\n    Object.keys(stkKeys).forEach(function(k){if(stk[k])p1+='<div style=\"background:var(--side);border-radius:8px;padding:11px\"><div style=\"font-family:IBM Plex Mono,monospace;font-size:8.5px;color:rgba(255,255,255,.35);text-transform:uppercase;letter-spacing:.1em;margin-bottom:3px\">'+stkKeys[k]+'<\/div><div style=\"font-size:12.5px;color:rgba(255,255,255,.85)\">'+stk[k]+'<\/div><\/div>';});\n    p1+='<\/div>';\n    if(r.stackRationale)p1+=rsec('Pourquoi ce stack','<p class=\"body\">'+r.stackRationale+'<\/p>');\n  }\n\n  \/\/ Pane 2\n  var p2='';\n  if(isAgent){\n    var steps=['User triggers interaction','AI processes input & context','Knowledge base lookup','Core decision logic','Action executed (book, update, message)','Response delivered to user','Event logged to CRM','Follow-up or notification queued'];\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    if(r.coldEmail)p2+=codeBlock('ICP Cold Email \u2014 '+r.coldEmail.subject,r.coldEmail.body);\n    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\"><strong>'+s.title+'<\/strong><br>'+s.detail+'<\/div><\/div>';}).join(''));}\n    p2+=rsec('M\\u00e9triques cl\\u00e9s \\u00e0 suivre',listHtml(['Croissance du MRR','CAC vs LTV','Taux d\\u2019attrition mensuel','Taux d\\u2019activation (essai vers payant)']));\n  } else {\n    if(r.launchSteps)p2+=rsec('Feuille de route de lancement',r.launchSteps.map(function(s,i){return'<div class=\"flow-step\"><div class=\"flow-n\">'+(i+1)+'<\/div><div class=\"flow-txt\"><strong>'+s.title+'<\/strong><br>'+s.detail+'<\/div><\/div>';}).join(''));\n    if(r.risks)p2+=rsec('Risques \\u00e0 surveiller',listHtml(r.risks));\n  }\n\n  \/\/ Pane 3 \u2014 Monetize\n  var p3=renderMonetizePane();\n\n  var panes=[p0,p1,p2,p3];\n  tabHtml+=panes.map(function(p,i){return'<div class=\"out-pane'+(i===0?' on':'')+'\" id=\"bpp-'+i+'\"><div style=\"padding:4px\">'+p+'<\/div><\/div>';}).join('');\n  tabHtml+='<\/div>';\n  out.innerHTML=tabHtml;\n}\n\nfunction renderMonetizePane(){\n  return'<div class=\"rsec\" style=\"margin-bottom:10px\"><div class=\"rsec-lbl\">G\\u00e9n\\u00e9rer votre package d\\u2019offre<\/div><div class=\"g2\" style=\"gap:10px;margin-bottom:11px\"><div><div class=\"lbl\">Secteur<\/div><input type=\"text\" id=\"mp-ind\" value=\"Sant&eacute;\"\/><\/div><div><div class=\"lbl\">Probl\\u00e8me<\/div><input type=\"text\" id=\"mp-prob\" value=\"Rendez-vous manqu\\u00e9s, rappels manuels\"\/><\/div><div><div class=\"lbl\">Prix<\/div><input type=\"text\" id=\"mp-price\" value=\"297\\u20ac\/mois\"\/><\/div><div><div class=\"lbl\">Mod\\u00e8le<\/div><select id=\"mp-model\"><option>Prestation sur mesure<\/option><option>SaaS<\/option><option>Retainer<\/option><option>Service productis\\\\u00e9<\/option><\/select><\/div><\/div><button class=\"btn btn-dark btn-full\" id=\"mp-btn\" onclick=\"genMonetizeTab()\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg> G\\u00e9n\\u00e9rer le package d\\u2019offre<\/button><\/div><div id=\"mp-out\"><\/div>';\n}\n\nasync function genMonetizeTab(){\n  var ind=(document.getElementById('mp-ind')||{}).value||'';\n  var prob=(document.getElementById('mp-prob')||{}).value||'';\n  var price=(document.getElementById('mp-price')||{}).value||'';\n  var model=(document.getElementById('mp-model')||{}).value||'';\n  if(!ind||!prob||!price){toast('Remplissez tous les champs de l\\u2019offre.');return}\n  var btn=document.getElementById('mp-btn'),mout=document.getElementById('mp-out');\n  btn.disabled=true;btn.innerHTML='<span class=\"spin\"><\/span> Generating&hellip;';\n  mout.innerHTML=skelHTML();\n  var prompt='R\\u00e9ponds uniquement en fran\\u00e7ais. Strat\\u00e8ge d\\u2019offres. Product: '+S.name+' ('+S.typeName+'). Secteur: '+ind+'. Probl\\u00e8me: '+prob+'. Prix: '+price+'. Mod\\u00e8le: '+model+'.\\nRetourne UNIQUEMENT du JSON valide, sans markdown:\\n{\"name\":\"...\",\"tagline\":\"...\",\"hook\":\"accroche en 2 phrases\",\"value\":\"proposition de valeur en 3 phrases\",\"benefits\":[\"b1\",\"b2\",\"b3\",\"b4\",\"b5\"],\"coldEmail\":{\"subject\":\"...\",\"body\":\"e-mail de prospection de 150 mots avec [PR\\u00c9NOM] [ENTREPRISE]\"},\"followUp\":{\"subject\":\"...\",\"body\":\"relance de 100 mots\"},\"tiers\":[{\"name\":\"Starter\",\"price\":\"...\",\"for\":\"...\",\"features\":[\"f1\",\"f2\",\"f3\"]},{\"name\":\"Growth\",\"price\":\"2x\",\"for\":\"...\",\"features\":[\"f1\",\"f2\",\"f3\",\"f4\"],\"pop\":true},{\"name\":\"Scale\",\"price\":\"4x\",\"for\":\"...\",\"features\":[\"f1\",\"f2\",\"f3\",\"f4\",\"f5\"]}]}';\n  try{\n    var o=await apiFetch(prompt,1400);\n    var h='<div class=\"rsec\" style=\"margin-bottom:10px\"><p style=\"font-family:Fraunces,serif;font-weight:800;font-size:18px;color:var(--ink);margin-bottom:3px\">'+o.name+'<\/p><p class=\"body\" style=\"font-style:italic;margin-bottom:10px\">\"'+o.tagline+'\"<\/p><p class=\"body\" style=\"margin-bottom:8px\">'+o.hook+'<\/p><p class=\"body\">'+o.value+'<\/p><ul style=\"margin-top:10px;list-style:none\">'+(o.benefits||[]).map(function(b){return'<li style=\"font-size:12.5px;color:var(--ink2);padding:3px 0 3px 13px;position:relative\"><span style=\"position:absolute;left:0;top:9px;width:4px;height:4px;background:var(--gold);border-radius:50%;display:block\"><\/span>'+b+'<\/li>';}).join('')+'<\/ul><\/div>';\n    h+=codeBlock('Cold Email \u2014 '+(o.coldEmail?o.coldEmail.subject:''),o.coldEmail?o.coldEmail.body:'');\n    h+=codeBlock('Follow-up \u2014 '+(o.followUp?o.followUp.subject:''),o.followUp?o.followUp.body:'');\n    var bg3=['var(--s2)','var(--gold)','var(--ink)'],fg3=['var(--ink)','var(--side)','var(--white)'],sub3=['var(--ink3)','rgba(22,21,15,.6)','rgba(255,255,255,.45)'];\n    h+='<div class=\"rsec-lbl\" style=\"display:block;margin-bottom:8px;margin-top:10px\">Subscription Tiers<\/div><div class=\"tier-grid\">'+(o.tiers||[]).map(function(t,i){return'<div class=\"tier-card\" style=\"background:'+bg3[i]+'\">'+(t.pop?'<div style=\"font-size:8px;font-weight:700;color:var(--gold);font-family:IBM Plex Mono,monospace;text-transform:uppercase;letter-spacing:.1em;margin-bottom:4px\">Most Popular<\/div>':'')+'<div style=\"font-size:11px;font-weight:700;color:'+sub3[i]+';text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px\">'+t.name+'<\/div><div style=\"font-family:Fraunces,serif;font-weight:800;font-size:20px;color:'+fg3[i]+';margin-bottom:3px\">'+t.price+'<\/div><div style=\"font-size:10.5px;color:'+sub3[i]+';margin-bottom:9px\">'+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:7px;width:3px;height:3px;background:var(--gold);border-radius:50%;display:block\"><\/span>'+f+'<\/li>';}).join('')+'<\/ul><\/div>';}).join('')+'<\/div>';\n    mout.innerHTML=h;\n  }catch(e){mout.innerHTML='<div class=\"rsec\" style=\"border-color:#f5c6c6;background:#fdf0f0\"><p style=\"color:var(--rust);font-weight:600;font-size:12.5px\">Error: '+e.message+'<\/p><\/div>';}\n  btn.disabled=false;btn.innerHTML='<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg> Regenerate';\n}\n\nfunction switchBPTab(i,el){\n  document.querySelectorAll('#bp-tabs .out-tab').forEach(function(t){t.classList.remove('on')});\n  document.querySelectorAll('#bp-panes .out-pane').forEach(function(p,j){p.classList.toggle('on',j===i)});\n  if(el)el.classList.add('on');\n}\n\nfunction downloadBP(){\n  var lines=['ORTIVE STUDIO \u2014 SCH\u00c9MA','Produit: '+S.name,'Type: '+S.typeName,'Mode: '+S.modeChip,'G\\u00e9n\\u00e9r\\u00e9 le: '+new Date().toLocaleDateString('fr-FR'),''];\n  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(),'');}});\n  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\n\/* \u2550\u2550 B3: CAPS \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:Fraunces,serif;font-weight:700;font-size:13px;color:var(--ink);margin-bottom:11px;letter-spacing:-.1px\">'+cat+'<\/div>';\n    CAPS[cat].forEach(function(item){\n      var k=cat+':'+item,on=!!S.caps[k];var uid='c_'+k.replace(\/[^a-z0-9]\/gi,'_');\n      h+='<div class=\"cap-row\"><span class=\"cap-label '+(on?'':'')+'\u00bb style=\"color:'+(on?'var(--ink)':'var(--ink3)')+'\" id=\"cl_'+uid+'\">'+item+'<\/span><div class=\"tgl\" id=\"'+uid+'\" style=\"background:'+(on?'var(--ink)':'var(--s3)')+'\" onclick=\"toggleCap(\\''+cat+'\\',\\''+item+'\\')\"><div class=\"tgl-k\" style=\"left:'+(on?'17px':'2px')+'\"><\/div><\/div><\/div>';\n    });\n    card.innerHTML=h;g.appendChild(card);\n  });\n  updateCapBadge();\n}\nfunction toggleCap(cat,item){\n  var k=cat+':'+item;S.caps[k]=!S.caps[k];\n  var uid='c_'+k.replace(\/[^a-z0-9]\/gi,'_');\n  var t=document.getElementById(uid),l=document.getElementById('cl_'+uid);\n  if(t){t.style.background=S.caps[k]?'var(--ink)':'var(--s3)';t.querySelector('.tgl-k').style.left=S.caps[k]?'17px':'2px'}\n  if(l)l.style.color=S.caps[k]?'var(--ink)':'var(--ink3)';\n  updateCapBadge();\n}\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: WORKFLOW \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');\n  if(el){el.innerHTML='';WF.forEach(function(s,i){el.innerHTML+='<div class=\"flow-step\" style=\"animation:in .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');\n  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:8px 0;border-bottom:1px solid var(--s3)';row.innerHTML='<span style=\"font-size:12.5px;color:var(--ink2)\">'+name+'<\/span>';var t=document.createElement('div');t.className='tgl';t.style.background=on?'var(--ink)':'var(--s3)';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]?'var(--ink)':'var(--s3)';};row.appendChild(t);ch.appendChild(row);});}\n  renderRules();mark('b4');\n}\nfunction renderRules(){\n  var el=document.getElementById('wf-rules');if(!el)return;el.innerHTML='';\n  S.rules.forEach(function(r,i){var row=document.createElement('div');row.className='rule-r';row.innerHTML='<div class=\"rule-ic\"><svg width=\"9\" height=\"9\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--gold)\" 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:var(--ink4);padding:3px;flex-shrink:0';del.innerHTML='<svg width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg>';del.onclick=function(){S.rules.splice(i,1);renderRules();};row.appendChild(del);el.appendChild(row);});\n}\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: DEPLOY \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:6px 0;border-bottom:1px solid var(--gold-b)\"><span style=\"color:var(--ink3)\">'+r[0]+'<\/span><span style=\"font-weight:600;color:var(--ink)\">'+r[1]+'<\/span><\/div>';});\n}\nasync function genDeploy(){\n  if(S.buildUses>=S.MAX+1){showLimit();return}\n  var caps=Object.keys(S.caps).filter(function(k){return S.caps[k]}).map(function(k){return k.split(':')[1]}).join(', ')||'General';\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> Generating&hellip;';\n  out.innerHTML=skelHTML(true);\n  var prompt='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, sans markdown:\\n{\"productName\":\"...\",\"monthlyCost\":\"ex. 80\u2013$220\/mo\",\"techStack\":[{\"category\":\"Frontend\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"Backend\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"AI \/ LLM\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"Database\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"Auth\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"Payments\",\"tool\":\"...\",\"why\":\"...\",\"cost\":\"...\"},{\"category\":\"Hosting\",\"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 res=await apiFetch(prompt,2200);S.deployRaw=JSON.stringify(res);\n    var h='<div style=\"padding:22px\">';\n    h+='<div style=\"display:flex;align-items:baseline;justify-content:space-between;margin-bottom:20px\"><div style=\"font-family:Fraunces,serif;font-weight:800;font-size:19px;color:var(--ink)\">'+res.productName+' \\u2014 Guide de d\\u00e9ploiement<\/div><span class=\"badge bg\">~'+res.monthlyCost+'<\/span><\/div>';\n    h+='<div class=\"lbl\" style=\"margin-bottom:9px\">Stack technique<\/div>';\n    (res.techStack||[]).forEach(function(t){h+='<div class=\"inset\" style=\"margin-bottom:7px\"><div class=\"between\"><div><div style=\"font-family:IBM Plex Mono,monospace;font-size:8.5px;color:var(--ink4);text-transform:uppercase;letter-spacing:.1em;margin-bottom:2px\">'+t.category+'<\/div><div style=\"font-weight:700;font-size:13.5px;color:var(--ink)\">'+t.tool+'<\/div><\/div><span style=\"font-weight:600;font-size:11.5px;color:var(--gold)\">'+t.cost+'<\/span><\/div><p class=\"body\" style=\"font-size:12px;margin-top:5px\">'+t.why+'<\/p><\/div>';});\n    h+='<div class=\"lbl\" style=\"margin-top:18px;margin-bottom:9px\">Phases de construction<\/div>';\n    (res.phases||[]).forEach(function(p){h+='<div class=\"inset\" style=\"margin-bottom:8px\"><div style=\"font-weight:700;font-size:12.5px;color:var(--ink);margin-bottom:9px\">'+p.title+'<\/div>'+(p.steps||[]).map(function(s,i){return'<div style=\"display:flex;gap:8px;margin-bottom:6px\"><div style=\"width:18px;height:18px;border-radius:5px;background:var(--s2);display:grid;place-items:center;flex-shrink:0;font-size:9.5px;font-weight:700;color:var(--ink4)\">'+(i+1)+'<\/div><span class=\"body\" style=\"font-size:12px\">'+s+'<\/span><\/div>';}).join('')+'<\/div>';});\n    h+='<div class=\"lbl\" style=\"margin-top:18px;margin-bottom:9px\">Checklist de lancement<\/div><div class=\"inset\" style=\"margin-bottom:12px\">'+(res.checklist||[]).map(function(c){return'<div style=\"display:flex;gap:8px;margin-bottom:6px\"><div style=\"width:15px;height:15px;border-radius:4px;border:1.5px solid var(--s3);flex-shrink:0;margin-top:1px\"><\/div><span class=\"body\" style=\"font-size:12px\">'+c+'<\/span><\/div>';}).join('')+'<\/div>';\n    if(res.warnings&&res.warnings.length){h+='<div class=\"lbl\" style=\"margin-top:14px;margin-bottom:8px\">Avertissements<\/div><div class=\"inset-gold\">'+(res.warnings||[]).map(function(w){return'<div style=\"display:flex;gap:7px;margin-bottom:6px\"><svg width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--gold)\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"flex-shrink:0;margin-top:1px\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><span class=\"body\" style=\"font-size:12px\">'+w+'<\/span><\/div>';}).join('')+'<\/div>';}\n    h+='<\/div>';\n    out.innerHTML=h;\n    var cb=document.getElementById('btn-copy-deploy');if(cb)cb.disabled=false;\n    mark('b5');\n  }catch(e){out.innerHTML='<div style=\"padding:22px\"><div class=\"inset\" style=\"border-color:#f5c6c6;background:#fdf0f0\"><p style=\"color:var(--rust);font-weight:600;font-size:12.5px\">Error: '+e.message+'<\/p><\/div><\/div>';}\n  btn.disabled=false;btn.innerHTML='<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg> G\\u00e9n\\u00e9rer le guide de d\\u00e9ploiement';\n}\nfunction copyDeploy(){\n  if(!S.deployRaw)return;\n  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.');}\n}\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){\n    var n=S.blueprint.productName||S.name;\n    var nm=document.getElementById('m1-name');if(nm)nm.textContent=n;\n    var tp=document.getElementById('m1-type');if(tp)tp.textContent=S.typeName;\n    var ic=S.blueprint.icp;if(ic){var cu=document.getElementById('m-customer');if(cu&&!cu.dataset.edited)cu.value=ic;}\n  }\n  var pb=document.getElementById('m-pricing-btns');\n  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');\n  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');\n  if(cu){cu.oninput=function(){this.dataset.edited='1';var d=document.getElementById('m1-target');if(d)d.textContent=this.value;};}\n  mark('m1');\n}\nfunction getCtx(){\n  return{name:S.name||'Unnamed',type:S.typeName,industry:(document.getElementById('m-industry')||{}).value||'General',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};\n}\nasync function genOffer(){\n  if(S.monetizeUses>=S.MAX+2){showLimit();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> Generating&hellip;';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\\n- Produit: '+ctx.name+' ('+ctx.type+')\\n- Secteur: '+ctx.industry+'\\n- Probl\\u00e8me: '+ctx.problem+'\\n- Prix: '+ctx.price+'\\u20ac\/mois ('+ctx.model+')\\n- Client: '+ctx.customer+'\\n- Diff\\u00e9renciateur: '+ctx.diff+'\\n'+(bpCtx?'- Contexte sch\\u00e9ma: '+bpCtx:'')+'\\n\\nRetourne UNIQUEMENT du JSON valide, sans markdown:\\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,1100);S.offerData=r;S.monetizeUses++;localStorage.setItem('os_m_fr',S.monetizeUses);mark('m2');\n    var bg3=['var(--s2)','var(--gold)','var(--ink)'],fg3=['var(--ink)','var(--side)','var(--white)'],sub3=['var(--ink3)','rgba(22,21,15,.6)','rgba(255,255,255,.45)'];\n    out.innerHTML='<div style=\"font-family:Fraunces,serif;font-weight:800;font-size:22px;color:var(--ink);margin-bottom:3px\">'+r.productName+'<\/div><p class=\"body\" style=\"font-style:italic;color:var(--gold);margin-bottom:16px\">\"'+r.tagline+'\"<\/p><div class=\"inset\" style=\"margin-bottom:12px\"><div style=\"font-family:Fraunces,serif;font-weight:700;font-size:17px;color:var(--ink);margin-bottom:5px\">'+r.heroHeadline+'<\/div><p class=\"body\" style=\"margin-bottom:13px\">'+r.subHeadline+'<\/p><ul style=\"list-style:none\">'+(r.bullets||[]).map(function(b){return'<li style=\"display:flex;gap:7px;margin-bottom:6px;font-size:12.5px;color:var(--ink2)\"><svg width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--teal)\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"flex-shrink:0;margin-top:2px\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>'+b+'<\/li>';}).join('')+'<\/ul><\/div><div class=\"inset-gold\" style=\"margin-bottom:11px\"><p class=\"body\" style=\"font-size:12px\">'+r.socialProof+'<\/p><\/div><div style=\"display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px\"><div style=\"background:var(--ink);color:var(--white);font-weight:700;font-size:12.5px;padding:9px 18px;border-radius:8px\">'+r.cta+'<\/div><div style=\"background:var(--s2);border:1px solid var(--s3);font-size:11.5px;color:var(--ink3);padding:9px 13px;border-radius:8px\">'+r.urgency+'<\/div><\/div><div class=\"lbl\" style=\"margin-bottom:8px\">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-size:8px;font-weight:700;color:var(--gold);font-family:IBM Plex Mono,monospace;text-transform:uppercase;letter-spacing:.1em;margin-bottom:4px\">Recommand\\u00e9<\/div>':'')+'<div style=\"font-size:10.5px;font-weight:700;color:'+sub3[i]+';margin-bottom:3px\">'+t.name+'<\/div><div style=\"font-family:Fraunces,serif;font-weight:800;font-size:20px;color:'+fg3[i]+';margin-bottom:3px\">'+t.price+'<\/div><div style=\"font-size:10.5px;color:'+sub3[i]+';margin-bottom:9px\">'+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:7px;width:3px;height:3px;background:var(--gold);border-radius:50%;display:block\"><\/span>'+f+'<\/li>';}).join('')+'<\/ul><\/div>';}).join('')+'<\/div>';\n  }catch(e){out.innerHTML='<div class=\"inset\" style=\"border-color:#f5c6c6;background:#fdf0f0\"><p style=\"color:var(--rust);font-weight:600;font-size:12.5px\">Error: '+e.message+'<\/p><\/div>';}\n  btn.disabled=false;btn.innerHTML='<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg> Regenerate';\n}\nasync function genLP(){\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> Generating&hellip;';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 pour:\\n- Produit: '+nm+' ('+ctx.type+')\\n- Industry: '+ctx.industry+'\\n- Problem: '+ctx.problem+'\\n- Price: $'+ctx.price+'\/mo\\n- Client: '+ctx.customer+'\\n- Diff\\u00e9renciateur: '+ctx.diff+'\\n\\nRetourne UNIQUEMENT du JSON valide, sans markdown:\\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,1300);S.lpData=r;mark('m3');\n    var h='<div class=\"lbl\" style=\"margin-bottom:7px\">Hero<\/div><div class=\"inset\" style=\"margin-bottom:12px\"><div style=\"font-family:Fraunces,serif;font-weight:800;font-size:19px;color:var(--ink);margin-bottom:4px\">'+r.hero.headline+'<\/div><p class=\"body\">'+r.hero.sub+'<\/p><\/div>';\n    h+='<div class=\"lbl\" style=\"margin-bottom:7px\">Problem Section<\/div><div class=\"inset\" style=\"margin-bottom:12px\"><div style=\"font-weight:700;font-size:13.5px;color:var(--ink);margin-bottom:5px\">'+r.problem.title+'<\/div><p class=\"body\" style=\"margin-bottom:8px\">'+r.problem.body+'<\/p>'+(r.problem.pains||[]).map(function(p){return'<div style=\"display:flex;gap:6px;margin-bottom:4px;font-size:12px;color:var(--rust)\"><svg width=\"9\" height=\"9\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"flex-shrink:0;margin-top:2px\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg>'+p+'<\/div>';}).join('')+'<\/div>';\n    h+='<div class=\"lbl\" style=\"margin-bottom:7px\">Solution<\/div><div class=\"inset\" style=\"margin-bottom:12px\"><div style=\"font-weight:700;font-size:13.5px;color:var(--ink);margin-bottom:5px\">'+r.solution.title+'<\/div><p class=\"body\">'+r.solution.body+'<\/p><\/div>';\n    h+='<div class=\"lbl\" style=\"margin-bottom:7px\">Features<\/div><div class=\"g2\" style=\"gap:9px;margin-bottom:12px\">'+(r.features||[]).map(function(f){return'<div class=\"inset\"><div style=\"font-weight:700;font-size:12.5px;color:var(--ink);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:7px\">Social Proof<\/div><div class=\"inset\" style=\"margin-bottom:12px\"><div style=\"font-family:Fraunces,serif;font-weight:700;font-size:14px;color:var(--ink);margin-bottom:9px\">'+r.proof.headline+'<\/div>'+(r.proof.testimonials||[]).map(function(t){return'<div style=\"background:var(--white);border:1px solid var(--s3);border-radius:8px;padding:11px;margin-bottom:7px\"><p class=\"body\" style=\"font-style:italic;font-size:12px;margin-bottom:5px\">\"'+t.quote+'\"<\/p><div style=\"font-size:11px;font-weight:700;color:var(--ink)\">'+t.name+'<\/div><div style=\"font-size:10.5px;color:var(--ink4)\">'+t.role+'<\/div><\/div>';}).join('')+'<\/div>';\n    h+='<div class=\"lbl\" style=\"margin-bottom:7px\">FAQ<\/div>'+(r.faq||[]).map(function(f){return'<div class=\"inset\" style=\"margin-bottom:7px\"><div style=\"font-weight:700;font-size:12.5px;color:var(--ink);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:12px;margin-bottom:7px\">CTA Section<\/div><div class=\"inset-gold\"><div style=\"font-family:Fraunces,serif;font-weight:700;font-size:15px;color:var(--ink);margin-bottom:4px\">'+r.cta.headline+'<\/div><p class=\"body\" style=\"font-size:12px;margin-bottom:10px\">'+r.cta.sub+'<\/p><div style=\"background:var(--ink);color:var(--white);font-weight:700;font-size:12.5px;padding:9px 18px;border-radius:8px;display:inline-block\">'+r.cta.button+'<\/div><\/div>';\n    out.innerHTML=h;\n  }catch(e){out.innerHTML='<div class=\"inset\" style=\"border-color:#f5c6c6;background:#fdf0f0\"><p style=\"color:var(--rust);font-weight:600;font-size:12.5px\">Error: '+e.message+'<\/p><\/div>';}\n  btn.disabled=false;btn.innerHTML='<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg> Regenerate';\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> Writing emails&hellip;';\n  out.innerHTML='<div class=\"card\"><div class=\"empty\"><span class=\"spin-d\"><\/span><span>Writing 3 emails&hellip;<\/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 pour:\\n- Produit: '+nm+' ('+ctx.type+')\\n- Industry: '+ctx.industry+'\\n- Problem: '+ctx.problem+'\\n- Price: $'+ctx.price+'\/mo\\n- Client: '+ctx.customer+'\\n- Diff\\u00e9renciateur: '+ctx.diff+'\\n\\nRetourne UNIQUEMENT du JSON valide, sans markdown:\\n{\"emails\":[{\"label\":\"E-mail 1 \u2014 Introduction\",\"subject\":\"...\",\"preview\":\"...\",\"body\":\"e-mail d\\u2019intro personnalis\\u00e9 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 ou un r\\u00e9sultat sp\\u00e9cifique\"},{\"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,900);S.outreachData=r;mark('m4');out.innerHTML='';\n    (r.emails||[]).forEach(function(e,i){var card=document.createElement('div');card.className='card';card.style.cssText='margin-bottom:11px;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:9px\"><span class=\"badge bi\">'+e.label+'<\/span><button class=\"btn btn-ghost btn-sm\" onclick=\"cpText(\\''+uid+'\\')\">Copy<\/button><\/div><div style=\"font-weight:700;font-size:12.5px;color:var(--ink);margin-bottom:2px\">Subject: '+e.subject+'<\/div><div style=\"font-size:11px;color:var(--ink4);margin-bottom:9px;font-style:italic\">'+e.preview+'<\/div><div class=\"rsec\"><pre id=\"'+uid+'\" style=\"font-family:DM Sans,sans-serif;font-size:12.5px;color:var(--ink2);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:#f5c6c6;background:#fdf0f0\"><p style=\"color:var(--rust);font-weight:600;font-size:12.5px\">Error: '+e.message+'<\/p><\/div><\/div>';}\n  btn.disabled=false;btn.innerHTML='<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg> Regenerate Sequence';\n}\nfunction calcRev(){\n  var pr=parseInt(document.getElementById('m-price-slider').value)||97;\n  var c3=parseInt(document.getElementById('rc3').value)||8;\n  var c6=parseInt(document.getElementById('rc6').value)||30;\n  var c12=parseInt(document.getElementById('rc12').value)||80;\n  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 class=\"g3\" style=\"gap:9px;margin-bottom:11px\">'+[['Mois 3',m3.toLocaleString('fr-FR')+'\\u20ac',c3+' clients','var(--ink)'],['Mois 6',m6.toLocaleString('fr-FR')+'\\u20ac',c6+' clients','var(--gold)'],['Mois 12',m12.toLocaleString('fr-FR')+'\\u20ac',c12+' clients','var(--teal)']].map(function(s){return'<div class=\"inset\" style=\"text-align:center\"><div class=\"lbl\" style=\"margin-bottom:4px\">'+s[0]+'<\/div><div style=\"font-family:Fraunces,serif;font-weight:800;font-size:20px;color:'+s[3]+'\">'+s[1]+'<\/div><div class=\"body\" style=\"font-size:11px;margin-top:2px\">'+s[2]+'<\/div><\/div>';}).join('')+'<\/div><div class=\"inset\"><div class=\"between\"><span class=\"body\" style=\"font-size:12.5px\">Revenus annuels projet\\u00e9s<\/span><span style=\"font-family:Fraunces,serif;font-weight:800;font-size:17px;color:var(--ink)\">'+arr.toLocaleString('fr-FR')+'\\u20ac<\/span><\/div><div class=\"between\" style=\"margin-top:7px\"><span class=\"body\" style=\"font-size:12.5px\">MRR net apr\\u00e8s '+ch+'% d\\u2019attrition<\/span><span style=\"font-family:Fraunces,serif;font-weight:700;font-size:14px;color:var(--gold)\">'+nmrr.toLocaleString('fr-FR')+'\\u20ac\/mois<\/span><\/div><div class=\"between\" style=\"margin-top:7px\"><span class=\"body\" style=\"font-size:12.5px\">Clients nets (Mois 12)<\/span><span style=\"font-weight:700;font-size:13px;color:var(--ink)\">'+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},{t:'G\\u00e9n\\u00e9rer le sch\\u00e9ma produit',d:!!S.blueprint},{t:'Configurer les fonctionnalit\\u00e9s',d:Object.values(S.caps).some(Boolean)},{t:'D\\u00e9finir l\\u2019offre et les tarifs',d:true},{t:'G\\u00e9n\\u00e9rer le package commercial',d:!!S.offerData},{t:'G\\u00e9n\\u00e9rer la page de vente',d:!!S.lpData},{t:'G\\u00e9n\\u00e9rer la s\\u00e9quence de prospection',d:!!S.outreachData},{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:8px;padding:7px 0;border-bottom:1px solid var(--gold-b)\"><div style=\"width:16px;height:16px;border-radius:5px;border:1.5px solid '+(item.d?'var(--teal)':'var(--gold-b)')+';background:'+(item.d?'var(--teal-s)':'transparent')+';display:grid;place-items:center;flex-shrink:0\">'+(item.d?'<svg width=\"9\" height=\"9\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--teal)\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>':'')+'<\/div><span style=\"font-size:12px;color:'+(item.d?'var(--ink)':'var(--ink3)')+'\">'+item.t+'<\/span><\/div>';\n  });\n}\nfunction exportAll(){\n  var p=[],ctx=getCtx();p.push('=== ORTIVE STUDIO \u2014 FULL SESSION ===','Produit: '+S.name,'Type: '+S.typeName+' \/ Mode: '+S.modeChip,'Date: '+new Date().toLocaleDateString(),'');\n  if(S.blueprint){var b=S.blueprint;p.push('--- SCH\\u00c9MA ---','Nom: '+b.productName,'Accroche: '+b.tagline,'Pitch: '+b.elevator,'Probl\\u00e8me: '+b.coreProblem,'ICP: '+b.icp,'Revenus: '+b.revenueRange,'');if(b.systemPrompt)p.push('Prompt syst\\u00e8me:\\n'+b.systemPrompt,'');}\n  p.push('--- OFFRE ---','Secteur: '+ctx.industry,'Probl\\u00e8me: '+ctx.problem,'Client: '+ctx.customer,'Price: $'+ctx.price+'\/mo ('+ctx.model+')','Diff\\u00e9renciateur: '+ctx.diff,'');\n  if(S.offerData){p.push('--- PACKAGE COMMERCIAL ---','Produit: '+S.offerData.productName,'Tagline: '+S.offerData.tagline,'Hero: '+S.offerData.heroHeadline);(S.offerData.bullets||[]).forEach(function(b){p.push('\u2022 '+b)});p.push('');}\n  if(S.outreachData){p.push('--- S\\u00c9QUENCE DE PROSPECTION ---');(S.outreachData.emails||[]).forEach(function(e){p.push('',e.label,'Objet\\u00a0: '+e.subject,e.body)});}\n  navigator.clipboard.writeText(p.join('\\n')).then(function(){toast('Session compl\\u00e8te copi\\u00e9e.')}).catch(function(){toast('\\u00c9chec de la copie.')});\n}\n\n\/* \u2550\u2550 HELPERS \u2550\u2550 *\/\nasync function apiFetch(prompt,maxT){\n  var r=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:MDL,max_tokens:maxT,messages:[{role:'user',content:prompt}]})});\n  var d=await r.json();if(!r.ok)throw new Error(d.error?d.error.message:'Erreur API '+r.status);\n  var t=(d.content||[]).map(function(b){return b.text||''}).join('').replace(\/```json|```\/g,'').trim();\n  return JSON.parse(t);\n}\nfunction skelHTML(tall){var h='<div style=\"padding:18px\">';for(var i=0;i<(tall?8:5);i++)h+='<div class=\"skel\" style=\"height:'+(i===0?16:12)+'px;width:'+(65+Math.random()*28|0)+'%;margin-bottom:'+(i===0?12:7)+'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+'\\')\">Copy<\/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(56px)';t.style.opacity='0';},2500);}\n\n\/* \u2500\u2500 LIMIT POPUP \u2500\u2500 *\/\nfunction showLimit(){\n  var ov=document.createElement('div');ov.className='overlay';ov.id='lp-ov';\n  ov.innerHTML='<div class=\"popup\"><div class=\"popup-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--gold)\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2L2 7l10 5 10-5-10-5z\"\/><path d=\"M2 17l10 5 10-5\"\/><path d=\"M2 12l10 5 10-5\"\/><\/svg><\/div><div class=\"popup-title\">You\\'ve explored Ortive Studio<\/div><div class=\"popup-sub\">The full studio with unlimited sessions, saved projects, and team export is coming. Leave your email for early access.<\/div><div class=\"popup-form\"><input type=\"email\" id=\"lp-email\" class=\"popup-input\" placeholder=\"you@email.com\"\/><button class=\"btn btn-dark\" onclick=\"submitWait()\">Notify Me<\/button><\/div><div class=\"popup-note\">One email. When the full version launches.<\/div><button style=\"margin-top:12px;background:none;border:none;cursor:pointer;font-size:11.5px;color:var(--ink4)\" onclick=\"document.getElementById(\\'lp-ov\\').remove()\">Close<\/button><\/div>';\n  document.body.appendChild(ov);ov.onclick=function(e){if(e.target===ov)ov.remove();};\n  setTimeout(function(){var i=document.getElementById('lp-email');if(i)i.focus();},100);\n}\nfunction submitWait(){\n  var em=(document.getElementById('lp-email')||{}).value;if(!em||!em.includes('@'))return;\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()})}).finally(function(){var p=document.querySelector('.popup');if(p)p.innerHTML='<div class=\"popup-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--teal)\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div><div class=\"popup-title\">You\\'re on the list<\/div><p style=\"color:var(--ink3);font-size:13px;line-height:1.65;margin-top:8px;margin-bottom:18px\">We\\'ll notify you when the full Ortive Studio launches.<\/p><button class=\"btn btn-dark\" onclick=\"document.getElementById(\\'lp-ov\\').remove()\" style=\"width:100%;padding:11px\">Close<\/button>';});\n}\n\n\/* \u2500\u2500 INIT \u2500\u2500 *\/\n(function init(){\n  buildTypeGrid();calcRev();buildGTM();\n  var ps=document.getElementById('m-price-slider');\n  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>\n\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":13804,"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.3 - 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-04-07T17:37:51+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/angeingabire.com\/wp-content\/uploads\/2025\/06\/2.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"1500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\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\\\/2025\\\/06\\\/2.webp\",\"datePublished\":\"2026-03-25T13:13:35+00:00\",\"dateModified\":\"2026-04-07T17:37:51+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\\\/2025\\\/06\\\/2.webp\",\"contentUrl\":\"https:\\\/\\\/angeingabire.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/2.webp\",\"width\":1000,\"height\":1500,\"caption\":\"Ortive \u2014 Studio Produit IA | Concevez et Monetisez vos Produits IA\"},{\"@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-04-07T17:37:51+00:00","og_image":[{"width":1000,"height":1500,"url":"http:\/\/angeingabire.com\/wp-content\/uploads\/2025\/06\/2.webp","type":"image\/webp"}],"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\/2025\/06\/2.webp","datePublished":"2026-03-25T13:13:35+00:00","dateModified":"2026-04-07T17:37:51+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\/2025\/06\/2.webp","contentUrl":"https:\/\/angeingabire.com\/wp-content\/uploads\/2025\/06\/2.webp","width":1000,"height":1500,"caption":"Ortive \u2014 Studio Produit IA | Concevez et Monetisez vos Produits IA"},{"@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":19,"href":"https:\/\/angeingabire.com\/index.php\/wp-json\/wp\/v2\/pages\/15686\/revisions"}],"predecessor-version":[{"id":15809,"href":"https:\/\/angeingabire.com\/index.php\/wp-json\/wp\/v2\/pages\/15686\/revisions\/15809"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/angeingabire.com\/index.php\/wp-json\/wp\/v2\/media\/13804"}],"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}]}}