{"id":5194,"date":"2026-10-15T10:29:46","date_gmt":"2026-10-15T10:29:46","guid":{"rendered":"https:\/\/nubianconnections.com\/?page_id=5194"},"modified":"2026-10-15T18:41:38","modified_gmt":"2026-10-15T18:41:38","slug":"consultation-privee","status":"publish","type":"page","link":"https:\/\/nubianconnections.com\/fr\/consultation-privee\/","title":{"rendered":"Demander une consultation priv\u00e9e"},"content":{"rendered":"\n<!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>Demander une consultation priv\u00e9e | Nubian Connections<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;1,400;1,600&#038;family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,600&#038;family=Lato:wght@200;300;400;700&#038;display=swap\" rel=\"stylesheet\">\n<style> :where(#ncf-overlay), :where(#ncf-overlay) *, :where(#ncf-overlay) *::before, :where(#ncf-overlay) *::after, :where(.demo-trigger) { margin: 0; padding: 0; box-sizing: border-box; } :root { --cream: #F9F5EE; --cream-2: #F3EDE2; --cream-3: #EBE2D3; --black: #07050300; --ink: #0E0A06; --burgundy: #74131F; --burg-deep: #560E17; --burg-pale: rgba(116,19,31,0.06); --gold: #9C7230; --gold-mid: #B4883C; --gold-bright: #CCA048; --gold-light: #D4AE6A; --gold-pale: rgba(156,114,48,0.10); --gold-line: rgba(156,114,48,0.20); --gold-line-md: rgba(156,114,48,0.38); --gold-line-str: rgba(156,114,48,0.55); --text-main: #0C0806; --text-body: #2A2018; --text-sub: #5C4E3C; --text-muted: #82705A; --border: rgba(14,10,6,0.18); --border-md: rgba(14,10,6,0.28); --border-focus: rgba(156,114,48,0.65); --field-bg: rgba(14,10,6,0.04); --field-focus: rgba(156,114,48,0.06); --shadow-soft: 0 2px 8px rgba(0,0,0,0.04), 0 8px 32px rgba(0,0,0,0.08); } @keyframes grainShift { 0%,100% { transform: translate(0,0); } 20% { transform: translate(-1px, 1px); } 40% { transform: translate(1px, -1px); } 60% { transform: translate(-1px,-1px); } 80% { transform: translate(1px, 1px); } } body { background: #b8af9f; background-image: radial-gradient(ellipse at 30% 40%, rgba(116,19,31,0.12) 0%, transparent 55%), radial-gradient(ellipse at 75% 70%, rgba(156,114,48,0.10) 0%, transparent 50%); font-family: 'Lato', sans-serif; } .demo-trigger { display: block; position: relative; margin: 140px auto !important; padding: 16px 38px !important; background: var(--burgundy); color: var(--cream); font-size: 11px; letter-spacing: 4px; text-transform: uppercase; cursor: pointer; border: none; z-index: 10; font-weight: 700; transition: background 0.3s, letter-spacing 0.3s; } .demo-trigger:hover { background: var(--burg-deep); letter-spacing: 5px; } .overlay { position: fixed; inset: 0; z-index: 100; background: rgba(7,5,3,0.90); backdrop-filter: blur(14px) saturate(0.75); display: flex; align-items: center; justify-content: center; padding: 16px; opacity: 0; pointer-events: none; transition: opacity 0.55s ease; } .overlay.open { opacity: 1; pointer-events: all; } .modal { background: var(--cream); width: 100%; max-width: 780px; max-height: 92vh; overflow-y: auto; position: relative; transform: translateY(40px) scale(0.985); transition: transform 0.55s cubic-bezier(.16,.84,.44,1), opacity 0.45s ease; opacity: 0; scrollbar-width: thin; scrollbar-color: rgba(156,114,48,0.25) transparent; box-shadow: 0 0 0 1px rgba(156,114,48,0.12), 0 4px 8px rgba(0,0,0,0.06), 0 16px 48px rgba(0,0,0,0.22), 0 48px 120px rgba(0,0,0,0.32); } .overlay.open .modal { transform: translateY(0) scale(1); opacity: 1; } .modal::-webkit-scrollbar { width: 2px; } .modal::-webkit-scrollbar-thumb { background: rgba(156,114,48,0.25); } .modal-crown { display: flex; flex-direction: column; gap: 0; overflow: hidden; } .crown-line { display: block; width: 100%; } .crown-line:nth-child(1) { height: 1px; background: linear-gradient(90deg, transparent 3%, rgba(156,114,48,0.3) 25%, rgba(156,114,48,0.6) 50%, rgba(156,114,48,0.3) 75%, transparent 97%); } .crown-line:nth-child(2) { height: 4px; background: linear-gradient(90deg, transparent 2%, var(--gold-mid) 18%, var(--gold-bright) 50%, var(--gold-mid) 82%, transparent 98%); } .crown-line:nth-child(3) { height: 1px; background: linear-gradient(90deg, transparent 3%, rgba(156,114,48,0.5) 25%, rgba(202,160,72,0.9) 50%, rgba(156,114,48,0.5) 75%, transparent 97%); } .close-wrap { position: sticky; top: 0; z-index: 20; display: flex; justify-content: flex-end; padding: 18px 42px 0; background: var(--cream); } .close-btn { background: none; border: none; cursor: pointer; font-size: 8px; letter-spacing: 4px; text-transform: uppercase; color: #6A5A48; transition: color 0.25s, letter-spacing 0.25s; display: flex; align-items: center; gap: 9px; font-weight: 700; } .close-btn:hover { color: var(--gold-mid); letter-spacing: 5px; } .modal-inner { padding: 6px 64px 80px; } .modal-header { text-align: center; padding: 36px 0 52px; position: relative; margin-bottom: 0; } .modal-tag { display: inline-flex; align-items: center; gap: 16px; font-size: 7.5px; letter-spacing: 7px; color: var(--burgundy); text-transform: uppercase; margin-bottom: 28px; font-weight: 700; } .modal-tag::before, .modal-tag::after { content: ''; width: 28px; height: 1px; background: currentColor; opacity: 0.5; } .modal-title { font-family: 'Playfair Display', serif; font-size: clamp(30px, 3.8vw, 48px); font-weight: 400; color: var(--ink); line-height: 1.15; margin-bottom: 20px; letter-spacing: -0.5px; } .modal-title em { color: var(--gold); font-style: italic; font-weight: 400; } .modal-sub { font-family: 'Cormorant Garamond', serif; font-size: 18px; font-style: italic; font-weight: 400; color: #2A2018; line-height: 1.75; max-width: 460px; margin: 0 auto 0; letter-spacing: 0.2px; } .header-divider { position: absolute; bottom: 0; left: 0; right: 0; display: flex; align-items: center; justify-content: center; gap: 0; } .header-divider::before, .header-divider::after { content: ''; flex: 1; height: 1px; background: linear-gradient(to right, transparent, var(--gold-line-md)); } .header-divider::after { background: linear-gradient(to left, transparent, var(--gold-line-md)); } .header-divider-gem { font-size: 8px; color: var(--gold-mid); padding: 0 14px; letter-spacing: 6px; flex-shrink: 0; } .stepper-wrap { padding: 40px 0 44px; position: relative; } .stepper-track { position: absolute; top: 58px; left: 0; right: 0; height: 1px; background: var(--gold-line); z-index: 0; } .stepper-track-fill { position: absolute; top: 58px; left: 0; height: 1px; background: linear-gradient(to right, var(--gold-mid), var(--gold-bright)); z-index: 1; width: 0%; transition: width 0.5s cubic-bezier(.4,0,.2,1); } .stepper { display: flex; align-items: flex-start; justify-content: space-between; position: relative; z-index: 2; } .step-dot { display: flex; flex-direction: column; align-items: center; gap: 10px; cursor: pointer; flex: 1; transition: opacity 0.25s; } .step-dot:hover { opacity: 0.8; } .step-circle { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--border-md); display: flex; align-items: center; justify-content: center; background: var(--cream); position: relative; z-index: 2; transition: all 0.4s cubic-bezier(.4,0,.2,1); } .step-num { font-size: 10px; font-weight: 700; letter-spacing: 0.5px; color: #5C4E3C; transition: color 0.3s; } .step-check { display: none; font-size: 13px; color: var(--cream); font-weight: 700; } .step-label { font-size: 7px; letter-spacing: 3px; text-transform: uppercase; color: #6A5A48; font-weight: 700; text-align: center; line-height: 1.4; transition: color 0.3s; white-space: nowrap; } .step-dot.is-active .step-circle { border-color: var(--gold-mid); background: var(--cream); box-shadow: 0 0 0 6px rgba(156,114,48,0.10), 0 0 0 1px var(--gold-line-md); } .step-dot.is-active .step-num { color: var(--gold); } .step-dot.is-active .step-label { color: var(--gold-mid); } .step-dot.is-done .step-circle { border-color: var(--gold); background: linear-gradient(135deg, var(--gold-bright), var(--gold)); box-shadow: 0 2px 12px rgba(156,114,48,0.30); } .step-dot.is-done .step-num { display: none; } .step-dot.is-done .step-check { display: block; } .step-dot.is-done .step-label { color: var(--gold-mid); } .section-eyebrow { display: flex; align-items: center; gap: 14px; font-size: 8px; letter-spacing: 6px; text-transform: uppercase; color: var(--gold-mid); margin-bottom: 32px; margin-top: 0; font-weight: 700; } .section-eyebrow::before { content: '\u25c6'; font-size: 5px; color: var(--gold-bright); flex-shrink: 0; } .section-eyebrow::after { content: ''; flex: 1; height: 1px; background: linear-gradient(to right, var(--gold-line-md) 0%, transparent 100%); } .step-panel { display: none; } .step-panel.is-active { display: block; animation: revealPanel 0.42s cubic-bezier(.22,.68,0,1.1) forwards; } @keyframes revealPanel { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: translateY(0); } } .field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 18px; } .field-single { margin-bottom: 18px; } .field-label { display: block; font-size: 8.5px; letter-spacing: 4px; text-transform: uppercase; color: var(--text-main); margin-bottom: 10px; font-weight: 700; } .field-sublabel { font-weight: 300; text-transform: none; letter-spacing: 0; margin-left: 6px; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 13.5px; color: var(--text-muted); } input[type=\"text\"], input[type=\"email\"], input[type=\"tel\"], textarea, select { width: 100%; padding: 15px 20px; background: var(--field-bg); border: none; border-bottom: 1px solid var(--border-md); color: var(--text-main); font-family: 'Lato', sans-serif; font-size: 14.5px; font-weight: 400; outline: none; transition: border-color 0.3s, background 0.3s, box-shadow 0.3s; appearance: none; -webkit-appearance: none; border-radius: 0; letter-spacing: 0.2px; border-top: 1px solid transparent; border-left: 1px solid transparent; border-right: 1px solid transparent; } input:focus, select:focus, textarea:focus { border-color: var(--gold-line-md); border-bottom-color: var(--gold-mid); background: var(--field-focus); box-shadow: 0 3px 0 -1px var(--gold-line), 0 8px 24px rgba(156,114,48,0.05); } input::placeholder, textarea::placeholder { color: #8C7A64; font-size: 13.5px; font-weight: 300; font-family: 'Cormorant Garamond', serif; font-style: italic; } textarea { resize: vertical; min-height: 128px; line-height: 1.75; } select { background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='9' height='5'%3E%3Cpath d='M0 0l4.5 5 4.5-5z' fill='rgba(156,114,48,0.65)'\/%3E%3C\/svg%3E\"); background-repeat: no-repeat; background-position: right 18px center; padding-right: 42px; cursor: pointer; } select option { background: var(--cream); color: var(--text-main); } input.has-error, select.has-error, textarea.has-error { border-bottom-color: rgba(116,19,31,0.6) !important; background: rgba(116,19,31,0.025) !important; } .other-reveal { overflow: hidden; max-height: 0; opacity: 0; transition: max-height 0.4s ease, opacity 0.35s ease, margin 0.35s ease; } .other-reveal.open { max-height: 80px; opacity: 1; margin-top: 12px; } .radio-group { display: flex; gap: 12px; } .radio-group.col { flex-direction: column; gap: 10px; } .radio-card { flex: 1; padding: 15px 20px; border: 1px solid var(--border); cursor: pointer; display: flex; align-items: center; gap: 14px; transition: border-color 0.28s, background 0.28s; user-select: none; } .radio-card:hover { border-color: var(--gold-line-str); background: var(--gold-pale); } .radio-card input[type=\"radio\"] { display: none; } .radio-card.picked { border-color: var(--gold-mid); background: var(--gold-pale); } .r-ring { width: 18px; height: 18px; border-radius: 50%; flex-shrink: 0; border: 1.5px solid var(--border-md); display: flex; align-items: center; justify-content: center; transition: border-color 0.22s; } .radio-card.picked .r-ring { border-color: var(--gold); } .r-ring::after { content: ''; width: 8px; height: 8px; border-radius: 50%; background: linear-gradient(135deg, var(--gold-bright), var(--gold)); display: none; } .radio-card.picked .r-ring::after { display: block; } .r-text { font-size: 13.5px; color: #2A2018; font-weight: 400; line-height: 1.4; } .radio-card.picked .r-text { color: var(--text-main); font-weight: 700; } .intent-card { padding: 26px 30px; border: 1px solid var(--border); cursor: pointer; display: flex; align-items: flex-start; gap: 20px; transition: border-color 0.28s, background 0.28s, box-shadow 0.28s; margin-bottom: 14px; user-select: none; position: relative; overflow: hidden; } .intent-card::before { content: ''; position: absolute; left: 0; top: 8%; bottom: 8%; width: 0; background: linear-gradient(to bottom, var(--gold-bright), var(--gold)); transition: width 0.35s ease; border-radius: 0 2px 2px 0; } .intent-card:hover { border-color: var(--gold-line-str); background: var(--gold-pale); } .intent-card input[type=\"radio\"] { display: none; } .intent-card.picked { border-color: var(--gold-mid); background: var(--gold-pale); box-shadow: 0 4px 24px rgba(156,114,48,0.08); } .intent-card.picked::before { width: 3px; } .i-ring { width: 20px; height: 20px; border-radius: 50%; flex-shrink: 0; margin-top: 4px; border: 1.5px solid var(--border-md); display: flex; align-items: center; justify-content: center; transition: border-color 0.22s; } .intent-card.picked .i-ring { border-color: var(--gold); } .i-ring::after { content: ''; width: 9px; height: 9px; border-radius: 50%; background: linear-gradient(135deg, var(--gold-bright), var(--gold)); display: none; } .intent-card.picked .i-ring::after { display: block; } .intent-content { flex: 1; } .intent-badge { display: inline-block; font-size: 7px; letter-spacing: 3.5px; text-transform: uppercase; padding: 4px 11px; margin-bottom: 13px; border: 1px solid currentColor; font-weight: 700; } .badge-free { color: var(--text-muted); } .badge-premium { color: var(--gold); } .intent-content h4 { font-family: 'Playfair Display', serif; font-size: 17px; font-weight: 500; color: var(--text-main); margin-bottom: 9px; letter-spacing: -0.2px; } .intent-content p { font-size: 13.5px; color: #2A2018; line-height: 1.7; font-weight: 400; } .intent-note { margin-top: 11px !important; font-family: 'Cormorant Garamond', serif !important; font-size: 15.5px !important; font-style: italic !important; color: var(--text-sub) !important; font-weight: 300 !important; } .terms-row { display: flex; align-items: flex-start; gap: 18px; padding: 22px 26px; border: 1px solid var(--border); background: var(--cream-2); margin-top: 32px; cursor: pointer; transition: border-color 0.25s, background 0.25s; } .terms-row:hover { border-color: var(--gold-line-str); background: var(--gold-pale); } .terms-box { width: 18px; height: 18px; flex-shrink: 0; margin-top: 2px; border: 1.5px solid var(--border-md); display: flex; align-items: center; justify-content: center; transition: all 0.22s; } .terms-box.ticked { border-color: var(--gold); background: rgba(156,114,48,0.12); } .terms-box.ticked::after { content: '\u2713'; font-size: 11px; color: var(--gold); font-weight: 700; } .terms-text { font-size: 13px; color: #2A2018; line-height: 1.8; font-weight: 400; } .terms-text a { color: var(--gold-mid); text-decoration: none; font-weight: 400; border-bottom: 1px solid var(--gold-line); transition: color 0.2s; } .terms-text a:hover { color: var(--gold-bright); } .step-nav { display: flex; gap: 14px; margin-top: 44px; align-items: stretch; } .btn-prev { flex-shrink: 0; padding: 0 28px; background: transparent; border: 1px solid var(--border-md); color: #5C4E3C; font-family: 'Lato', sans-serif; font-size: 8.5px; letter-spacing: 3.5px; text-transform: uppercase; cursor: pointer; font-weight: 700; transition: all 0.25s; display: flex; align-items: center; gap: 10px; min-height: 54px; } .btn-prev:hover { border-color: var(--gold-line-str); color: var(--gold-mid); background: var(--gold-pale); } .btn-next { flex: 1; padding: 0 32px; background: var(--burgundy); color: var(--cream); font-family: 'Lato', sans-serif; font-size: 9px; letter-spacing: 5px; text-transform: uppercase; border: none; cursor: pointer; font-weight: 700; transition: background 0.3s, letter-spacing 0.3s, box-shadow 0.3s; position: relative; overflow: hidden; min-height: 54px; display: flex; align-items: center; justify-content: center; gap: 12px; } .btn-next::after { content: ''; position: absolute; top: 0; left: -100%; bottom: 0; width: 55%; background: linear-gradient(90deg, transparent, rgba(255,220,130,0.12), transparent); transition: left 0.65s ease; } .btn-next:hover { background: var(--burg-deep); letter-spacing: 6.5px; box-shadow: 0 6px 28px rgba(116,19,31,0.28); } .btn-next:hover::after { left: 160%; } .btn-submit { flex: 1; padding: 0 32px; background: var(--burgundy); color: var(--cream); font-family: 'Lato', sans-serif; font-size: 9px; letter-spacing: 5px; text-transform: uppercase; border: none; cursor: pointer; font-weight: 700; transition: background 0.3s, letter-spacing 0.3s, box-shadow 0.3s; position: relative; overflow: hidden; min-height: 54px; } .btn-submit::after { content: ''; position: absolute; top: 0; left: -100%; bottom: 0; width: 55%; background: linear-gradient(90deg, transparent, rgba(255,220,130,0.12), transparent); transition: left 0.65s ease; } .btn-submit:hover { background: var(--burg-deep); letter-spacing: 6.5px; box-shadow: 0 6px 28px rgba(116,19,31,0.28); } .btn-submit:hover::after { left: 160%; } .submit-caption { text-align: center; margin-top: 20px; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 14px; font-weight: 300; color: var(--gold-mid); letter-spacing: 1px; } .form-foot { text-align: center; margin-top: 36px; font-size: 8px; letter-spacing: 8px; color: var(--gold-line-str); } .success-view { display: none; position: relative; overflow: hidden; background: var(--ink); min-height: 560px; } .success-view.show { display: flex; flex-direction: column; align-items: center; justify-content: center; animation: successReveal 0.7s cubic-bezier(.16,.84,.44,1) forwards; } @keyframes successReveal { from { opacity: 0; } to { opacity: 1; } } .success-view::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at 20% 50%, rgba(116,19,31,0.45) 0%, transparent 55%), radial-gradient(ellipse at 80% 30%, rgba(156,114,48,0.22) 0%, transparent 50%), radial-gradient(ellipse at 55% 85%, rgba(116,19,31,0.20) 0%, transparent 45%); pointer-events: none; } .success-view::after { content: ''; position: absolute; inset: 0; background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.92' numOctaves='4' stitchTiles='stitch'\/%3E%3CfeColorMatrix type='saturate' values='0'\/%3E%3C\/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='0.055'\/%3E%3C\/svg%3E\"); pointer-events: none; } .success-inner { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; padding: 80px 64px 72px; text-align: center; } .success-diamond { width: 64px; height: 64px; position: relative; margin-bottom: 44px; animation: diamondSpin 1.2s cubic-bezier(.22,.68,0,1.2) forwards; opacity: 0; } @keyframes diamondSpin { 0% { opacity: 0; transform: rotate(-90deg) scale(0.5); } 60% { opacity: 1; transform: rotate(8deg) scale(1.05); } 100% { opacity: 1; transform: rotate(0deg) scale(1); } } .success-diamond svg { width: 64px; height: 64px; } .success-diamond .gem-outer { fill: none; stroke: var(--gold-mid); stroke-width: 1; } .success-diamond .gem-inner { fill: none; stroke: var(--gold-bright); stroke-width: 0.6; opacity: 0.6; } .success-diamond .gem-cross { stroke: rgba(202,160,72,0.35); stroke-width: 0.5; } .success-tag { font-size: 7.5px; letter-spacing: 7px; text-transform: uppercase; color: var(--gold-mid); font-weight: 700; margin-bottom: 28px; display: flex; align-items: center; gap: 14px; animation: fadeUp 0.6s 0.3s ease both; } .success-tag::before, .success-tag::after { content: ''; width: 32px; height: 1px; background: linear-gradient(to right, transparent, var(--gold-line-str)); } .success-tag::after { background: linear-gradient(to left, transparent, var(--gold-line-str)); } @keyframes fadeUp { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } } .success-headline { font-family: 'Playfair Display', serif; font-size: clamp(34px, 4.5vw, 54px); font-weight: 400; line-height: 1.12; color: var(--cream); letter-spacing: -0.5px; margin-bottom: 10px; animation: fadeUp 0.6s 0.45s ease both; } .success-headline em { color: var(--gold-bright); font-style: italic; display: block; } .success-rule { width: 1px; height: 52px; margin: 32px auto; background: linear-gradient(to bottom, transparent, var(--gold-mid), transparent); animation: fadeUp 0.6s 0.6s ease both; } .success-body { font-family: 'Cormorant Garamond', serif; font-size: 19px; font-style: italic; font-weight: 400; color: rgba(249,245,238,0.75); line-height: 1.8; max-width: 400px; margin-bottom: 14px; animation: fadeUp 0.6s 0.7s ease both; } .success-note { font-size: 11px; letter-spacing: 3px; text-transform: uppercase; color: rgba(249,245,238,0.35); font-weight: 700; margin-bottom: 52px; animation: fadeUp 0.6s 0.8s ease both; } .success-actions { display: flex; flex-direction: column; align-items: center; gap: 14px; width: 100%; max-width: 320px; animation: fadeUp 0.6s 0.9s ease both; } .success-close { width: 100%; padding: 17px 52px; background: linear-gradient(135deg, var(--gold-bright), var(--gold)); border: none; color: var(--ink); font-family: 'Lato', sans-serif; font-size: 8.5px; letter-spacing: 5px; text-transform: uppercase; cursor: pointer; font-weight: 700; transition: all 0.3s; position: relative; overflow: hidden; } .success-close::after { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, transparent 40%, rgba(255,255,255,0.12) 50%, transparent 60%); transform: translateX(-100%); transition: transform 0.5s ease; } .success-close:hover { letter-spacing: 6px; box-shadow: 0 6px 30px rgba(156,114,48,0.45); } .success-close:hover::after { transform: translateX(100%); } .success-link { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 14px; color: rgba(249,245,238,0.45); background: none; border: none; cursor: pointer; transition: color 0.25s; letter-spacing: 0.3px; } .success-link:hover { color: rgba(249,245,238,0.75); } .success-filigree { position: absolute; bottom: 28px; left: 0; right: 0; text-align: center; z-index: 2; font-size: 8px; letter-spacing: 10px; color: rgba(156,114,48,0.35); } .error-banner { background: rgba(116,19,31,0.06); border: 1px solid rgba(116,19,31,0.25); padding: 14px 20px; margin-bottom: 24px; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 15px; color: var(--burgundy); display: none; animation: revealPanel 0.3s ease; } .error-banner.show { display: block; } @media (max-width: 620px) { .modal-inner { padding: 4px 26px 60px; } .field-row { grid-template-columns: 1fr; } .radio-group { flex-direction: column; } .step-label { font-size: 6px; letter-spacing: 1.5px; } .step-circle { width: 34px; height: 34px; } .btn-prev { padding: 0 18px; } } .wordmark { font-family:'Playfair Display',serif; font-size:15px; letter-spacing:6px; text-transform:uppercase; color:var(--text-main); text-align:center; } .wordmark span { color:var(--gold); } .wordmark small { display:block; font-family:'Lato',sans-serif; font-size:8px; letter-spacing:5px; color:var(--text-muted); margin-top:6px; } .form-badge { display:inline-block; font-family:'Lato',sans-serif; font-size:9px; font-weight:700; letter-spacing:4px; text-transform:uppercase; padding:8px 16px; margin-bottom:20px; border:1px solid var(--gold-line-md); color:var(--gold); } .form-badge.paid { background:var(--gold-bright); color:#14100C; border-color:var(--gold-bright); } .paid-note { font-family:'Lato',sans-serif; font-size:12.5px; letter-spacing:.3px; color:var(--gold-light); margin-top:14px; } .theme-paid .close-wrap { background:var(--burgundy); } .theme-paid .close-btn { color:rgba(249,245,238,.75); } .theme-paid .modal-crown .crown-line { opacity:.9; } .theme-paid .modal-header { background:var(--burgundy); margin:-6px -64px 40px; padding:30px 64px 44px; } .theme-paid .modal-header .wordmark { color:#F9F5EE; } .theme-paid .modal-header .wordmark span { color:#E2C07A; } .theme-paid .modal-header .wordmark small { color:rgba(249,245,238,.6); } .theme-paid .modal-title { color:#F9F5EE; } .theme-paid .modal-title em { color:#E2C07A; } .theme-paid .modal-sub { color:rgba(249,245,238,.88); } .theme-paid .paid-note { color:#E2C07A; } .theme-paid .header-divider { opacity:.6; } .theme-paid .header-divider-gem { color:#E2C07A; } .theme-paid .form-badge.paid { background:#E2C07A; border-color:#E2C07A; color:#3A0A10; } .theme-paid .intent-card.picked { border-color:var(--burgundy); } .req { color: var(--burgundy); font-weight: 700; } .box-error .field-label { color: var(--burgundy); } input.has-error, select.has-error, textarea.has-error { border: 1px solid rgba(116,19,31,0.75) !important; background: rgba(116,19,31,0.05) !important; } .box-error .radio-card, .box-error .intent-card { border-color: rgba(116,19,31,0.6); } .terms-row.box-error { border-color: rgba(116,19,31,0.75); background: rgba(116,19,31,0.05); } .field-err { margin-top: 8px; font-family: 'Lato', sans-serif; font-size: 12.5px; font-weight: 700; color: var(--burgundy); letter-spacing: .2px; } .field-err::before { content: '! '; } .step-alert { margin: -10px 0 26px; padding: 14px 18px; border-left: 3px solid var(--burgundy); background: rgba(116,19,31,0.06); font-family: 'Lato', sans-serif; font-size: 13.5px; color: var(--burgundy); font-weight: 700; animation: revealPanel .3s ease; } @media (max-width: 620px) { .theme-paid .modal-header { margin:-4px -26px 32px; padding:26px 26px 36px; } } <\/style>\n<\/head>\n<body>\n<button class=\"demo-trigger\" onclick=\"NCF.openForm()\">Demander une consultation priv\u00e9e<\/button>\n<div class=\"overlay theme-paid\" id=\"ncf-overlay\" onclick=\"NCF.handleOverlayClick(event)\">\n<div class=\"modal\" id=\"ncf-modal\">\n<div class=\"modal-crown\">\n<span class=\"crown-line\"><\/span>\n<span class=\"crown-line\"><\/span>\n<span class=\"crown-line\"><\/span>\n<\/div>\n<div class=\"close-wrap\">\n<button class=\"close-btn\" onclick=\"NCF.closeForm()\">Fermer &nbsp; \u2715<\/button>\n<\/div>\n<div class=\"modal-inner\" id=\"ncf-form-view\">\n<div class=\"modal-header\">\n<div style=\"margin-bottom:28px;\">\n<div class=\"wordmark\">Nubian <span>Connections<\/span><small>International<\/small><\/div>\n<\/div>\n<div class=\"form-badge paid\">Services payants \u00b7 Direct Connections &amp; Prestige<\/div>\n<h2 class=\"modal-title\">Demander une<br><em>consultation priv\u00e9e.<\/em><\/h2>\n<p class=\"modal-sub\">Un \u00e9change priv\u00e9 pour comprendre vos attentes, vous pr\u00e9senter nos services et voir ensemble si nous pouvons vous aider.<span class=\"paid-note\" style=\"display:block\">Direct Connections et Prestige sont des services payants. Les tarifs vous sont expliqu\u00e9s pendant votre consultation, avant tout engagement.<\/span><\/p>\n<div class=\"header-divider\">\n<span class=\"header-divider-gem\">\u25c6 &nbsp; \u25c6 &nbsp; \u25c6<\/span>\n<\/div>\n<\/div>\n<div class=\"stepper-wrap\">\n<div class=\"stepper-track\"><\/div>\n<div class=\"stepper-track-fill\" id=\"ncf-track-fill\"><\/div>\n<div class=\"stepper\" id=\"ncf-stepper\">\n<div class=\"step-dot is-active\" data-step=\"1\" onclick=\"NCF.jumpToStep(1)\">\n<div class=\"step-circle\">\n<span class=\"step-num\">01<\/span>\n<span class=\"step-check\">\u2713<\/span>\n<\/div>\n<div class=\"step-label\">\u00c0 propos<br>de vous<\/div>\n<\/div>\n<div class=\"step-dot\" data-step=\"2\" onclick=\"NCF.jumpToStep(2)\">\n<div class=\"step-circle\">\n<span class=\"step-num\">02<\/span>\n<span class=\"step-check\">\u2713<\/span>\n<\/div>\n<div class=\"step-label\">Votre<br>demande<\/div>\n<\/div>\n<\/div>\n<\/div>\n<form id=\"ncf-nc-form\" onsubmit=\"NCF.handleSubmit(event)\" novalidate>\n<input type=\"hidden\" name=\"form_type\" value=\"Private Consultation (paid services)\">\n<input type=\"hidden\" name=\"referral\" value=\"\">\n<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\" style=\"position:absolute;left:-9999px;opacity:0;height:0;width:0\" aria-hidden=\"true\">\n<div class=\"step-panel is-active\" id=\"ncf-step-1\">\n<div class=\"section-eyebrow\">\u00c0 propos de vous<\/div>\n<div class=\"field-row\">\n<div>\n<label class=\"field-label\">Pr\u00e9nom<\/label>\n<input type=\"text\" name=\"first_name\" placeholder=\"Votre pr\u00e9nom\">\n<\/div>\n<div>\n<label class=\"field-label\">Nom<\/label>\n<input type=\"text\" name=\"last_name\" placeholder=\"Votre nom\">\n<\/div>\n<\/div>\n<div class=\"field-row\">\n<div>\n<label class=\"field-label\">E-mail<\/label>\n<input type=\"email\" name=\"email\" id=\"ncf-email-a\" placeholder=\"votre@email.com\">\n<\/div>\n<div>\n<label class=\"field-label\">Confirmez votre e-mail<\/label>\n<input type=\"email\" name=\"email_confirm\" id=\"ncf-email-b\" placeholder=\"Confirmez votre e-mail\">\n<\/div>\n<\/div>\n<div class=\"field-single\">\n<label class=\"field-label\">T\u00e9l\u00e9phone <span class=\"field-sublabel\">WhatsApp de pr\u00e9f\u00e9rence \u2014 obligatoire<\/span><\/label>\n<input type=\"tel\" name=\"phone\" id=\"ncf-phone\" placeholder=\"+33 6 00 00 00 00\">\n<\/div>\n<div class=\"field-row\">\n<div>\n<label class=\"field-label\">Ville<\/label>\n<input type=\"text\" name=\"city\" placeholder=\"Votre ville\">\n<\/div>\n<div>\n<label class=\"field-label\">Pays<\/label>\n<input type=\"text\" name=\"country\" placeholder=\"Votre pays\">\n<\/div>\n<\/div>\n<div class=\"field-single\">\n<label class=\"field-label\">Je suis\u2026<\/label>\n<div class=\"radio-group\">\n<label class=\"radio-card\" onclick=\"NCF.pickRadio(this,'gender')\">\n<input type=\"radio\" name=\"gender\" value=\"woman\">\n<div class=\"r-ring\"><\/div><span class=\"r-text\">Une femme<\/span>\n<\/label>\n<label class=\"radio-card\" onclick=\"NCF.pickRadio(this,'gender')\">\n<input type=\"radio\" name=\"gender\" value=\"man\">\n<div class=\"r-ring\"><\/div><span class=\"r-text\">Un homme<\/span>\n<\/label>\n<\/div>\n<\/div>\n<div class=\"field-single\">\n<label class=\"field-label\">Langue pr\u00e9f\u00e9r\u00e9e<\/label>\n<div class=\"radio-group\">\n<label class=\"radio-card\" onclick=\"NCF.pickRadio(this,'language')\">\n<input type=\"radio\" name=\"language\" value=\"English\">\n<div class=\"r-ring\"><\/div><span class=\"r-text\">Anglais<\/span>\n<\/label>\n<label class=\"radio-card\" onclick=\"NCF.pickRadio(this,'language')\">\n<input type=\"radio\" name=\"language\" value=\"French\" checked>\n<div class=\"r-ring\"><\/div><span class=\"r-text\">Fran\u00e7ais<\/span>\n<\/label>\n<\/div>\n<\/div>\n<div class=\"field-single\">\n<label class=\"field-label\">Date de naissance<\/label>\n<div style=\"display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;\">\n<select name=\"dob_month\">\n<option value=\"\" disabled selected>Mois<\/option>\n<option>Janvier<\/option><option>F\u00e9vrier<\/option><option>Mars<\/option>\n<option>Avril<\/option><option>Mai<\/option><option>Juin<\/option>\n<option>Juillet<\/option><option>Ao\u00fbt<\/option><option>Septembre<\/option>\n<option>Octobre<\/option><option>Novembre<\/option><option>D\u00e9cembre<\/option>\n<\/select>\n<select name=\"dob_day\">\n<option value=\"\" disabled selected>Jour<\/option>\n<script>for(let i=1;i<=31;i++) document.write(`<option>${i}<\/option>`);<\/script>\n<\/select>\n<select name=\"dob_year\">\n<option value=\"\" disabled selected>Ann\u00e9e<\/option>\n<script>for(let i=new Date().getFullYear()-18;i>=1940;i--) document.write(`<option>${i}<\/option>`);<\/script>\n<\/select>\n<\/div>\n<\/div>\n<div class=\"field-single\">\n<label class=\"field-label\">Nationalit\u00e9<\/label>\n<input type=\"text\" name=\"nationality\" placeholder=\"ex. fran\u00e7aise, ivoirienne, camerounaise, britannique\u2026\">\n<\/div>\n<div class=\"field-single\">\n<label class=\"field-label\">Situation familiale<\/label>\n<select name=\"marital_status\">\n<option value=\"\" disabled selected>Choisissez votre situation<\/option>\n<option value=\"single\">C\u00e9libataire \u2014 jamais mari\u00e9\u00b7e<\/option>\n<option value=\"divorced\">Divorc\u00e9\u00b7e<\/option>\n<option value=\"widowed\">Veuf \/ veuve<\/option>\n<option value=\"separated\">S\u00e9par\u00e9\u00b7e<\/option>\n<\/select>\n<\/div>\n<div class=\"field-single\">\n<label class=\"field-label\">Niveau d\u2019\u00e9tudes<\/label>\n<select name=\"education\" id=\"ncf-edu-select\" onchange=\"NCF.revealOther('ncf-edu-select','ncf-edu-other')\">\n<option value=\"\" disabled selected>Choisissez votre niveau le plus \u00e9lev\u00e9<\/option>\n<option value=\"secondary\">Secondaire \/ baccalaur\u00e9at<\/option>\n<option value=\"undergraduate\">Licence \/ bachelor<\/option>\n<option value=\"postgraduate\">Master<\/option>\n<option value=\"doctorate\">Doctorat<\/option>\n<option value=\"professional\">Dipl\u00f4me professionnel<\/option>\n<option value=\"other\">Autre<\/option>\n<\/select>\n<div class=\"other-reveal\" id=\"ncf-edu-other\">\n<input type=\"text\" name=\"education_other\" placeholder=\"Pr\u00e9cisez\u2026\">\n<\/div>\n<\/div>\n<div class=\"field-single\">\n<label class=\"field-label\">Profession<\/label>\n<input type=\"text\" name=\"profession\" placeholder=\"Votre profession ou secteur\">\n<\/div>\n<div class=\"step-nav\">\n<button type=\"button\" class=\"btn-next\" onclick=\"NCF.goNext(2)\">Continuer &nbsp;\u2192<\/button>\n<\/div>\n<\/div>\n<div class=\"step-panel\" id=\"ncf-step-2\">\n<div class=\"section-eyebrow\">Votre demande<\/div>\n<div class=\"error-banner\" id=\"ncf-error-banner\">\nMerci de compl\u00e9ter les champs obligatoires avant d\u2019envoyer.\n<\/div>\n<label class=\"field-label\" style=\"display:block;margin-bottom:14px;\">Quel service vous int\u00e9resse ?<\/label>\n<label class=\"intent-card\" onclick=\"NCF.pickRadio(this,'service')\">\n<input type=\"radio\" name=\"service\" value=\"Direct Connections\">\n<div class=\"i-ring\"><\/div>\n<div class=\"intent-content\">\n<div class=\"intent-badge badge-premium\">Notre service le plus accessible \u00b7 \u00c0 partir de 697 \u20ac<\/div>\n<h4>Direct Connections<\/h4>\n<p>Votre profil, r\u00e9dig\u00e9 avec soin et diffus\u00e9. Vous choisissez qui rencontrer. Nous cr\u00e9ons votre profil et votre annonce personnelle, la pr\u00e9sentons au sein de notre r\u00e9seau priv\u00e9 et sur des canaux choisis avec soin, et vous transmettons les r\u00e9ponses. Vous choisissez qui contacter.<\/p>\n<\/div>\n<\/label>\n<label class=\"intent-card\" onclick=\"NCF.pickRadio(this,'service')\">\n<input type=\"radio\" name=\"service\" value=\"Prestige\">\n<div class=\"i-ring\"><\/div>\n<div class=\"intent-content\">\n<div class=\"intent-badge badge-premium\">Notre service le plus complet<\/div>\n<h4>Prestige<\/h4>\n<p>Une recherche personnalis\u00e9e, avec un accompagnement \u00e0 chaque \u00e9tape. Nous contactons et \u00e9valuons des candidats potentiels avant de vous proposer des pr\u00e9sentations, avec un suivi personnel tout au long du parcours.<\/p>\n<\/div>\n<\/label>\n<label class=\"intent-card default\" onclick=\"NCF.pickRadio(this,'service')\">\n<input type=\"radio\" name=\"service\" value=\"Not sure yet\">\n<div class=\"i-ring\"><\/div>\n<div class=\"intent-content\">\n<div class=\"intent-badge badge-premium\">Aidez-moi \u00e0 choisir<\/div>\n<h4>Je ne sais pas encore<\/h4>\n<p>Nous vous pr\u00e9senterons les deux services pendant votre consultation et vous aiderons \u00e0 choisir.<\/p>\n<\/div>\n<\/label>\n<div class=\"field-single\">\n<label class=\"field-label\">En quelques mots, la relation que vous recherchez<\/label>\n<textarea name=\"relationship_sought\" placeholder=\"Qui vous \u00eates, la personne que vous esp\u00e9rez rencontrer, ce qui compte le plus pour vous\u2026\"><\/textarea>\n<\/div>\n<div class=\"field-single\">\n<label class=\"field-label\">Comment nous avez-vous connus ?<\/label>\n<select name=\"source\" id=\"ncf-src-select\" onchange=\"NCF.revealOther('ncf-src-select','ncf-src-other')\">\n<option value=\"\" disabled selected>Choisissez une option<\/option>\n<option value=\"friend\">Bouche-\u00e0-oreille \u2014 un\u00b7e ami\u00b7e ou un membre<\/option>\n<option value=\"instagram\">Instagram<\/option>\n<option value=\"google\">Recherche Google<\/option>\n<option value=\"linkedin\">LinkedIn<\/option>\n<option value=\"event\">Un \u00e9v\u00e9nement<\/option>\n<option value=\"press\">Presse ou m\u00e9dias<\/option>\n<option value=\"ambassador\">Un\u00b7e ambassadeur\u00b7rice ou influenceur\u00b7se<\/option>\n<option value=\"other\">Autre<\/option>\n<\/select>\n<div class=\"other-reveal\" id=\"ncf-src-other\">\n<input type=\"text\" name=\"source_other\" placeholder=\"Pr\u00e9cisez (ex. le nom de l\u2019ambassadeur\u00b7rice)\u2026\">\n<\/div>\n<\/div>\n<p class=\"intent-note\" style=\"margin:6px 0 22px;\">Les tarifs, ce qui est inclus et la dur\u00e9e du service vous sont expliqu\u00e9s pendant votre consultation, avant tout engagement.<\/p>\n<div class=\"terms-row\" onclick=\"NCF.toggleTerms()\">\n<div class=\"terms-box\" id=\"ncf-terms-box\"><\/div>\n<div class=\"terms-text\">\nJ\u2019accepte les <a href=\"https:\/\/nubianconnections.com\/fr\/conditions-generales\/\" target=\"_blank\" rel=\"noopener\" onclick=\"event.stopPropagation()\">Conditions g\u00e9n\u00e9rales<\/a> et la <a href=\"https:\/\/nubianconnections.com\/fr\/politique-de-confidentialite\/\" target=\"_blank\" rel=\"noopener\" onclick=\"event.stopPropagation()\">Politique de confidentialit\u00e9<\/a>. Mes informations seront trait\u00e9es en toute discr\u00e9tion et ne seront jamais partag\u00e9es sans mon accord.\n<\/div>\n<\/div>\n<div class=\"step-nav\">\n<button type=\"button\" class=\"btn-prev\" onclick=\"NCF.jumpToStep(1)\">\u2190 Retour<\/button>\n<button type=\"submit\" class=\"btn-submit\">Demander ma consultation<\/button>\n<\/div>\n<p class=\"submit-caption\">\u25c6 &nbsp; Un premier \u00e9change sans engagement &nbsp; \u25c6<\/p>\n<div class=\"form-foot\">\u25c6 &nbsp; \u25c6 &nbsp; \u25c6<\/div>\n<\/div>\n<\/form>\n<\/div>\n<div class=\"success-view\" id=\"ncf-success-view\">\n<div class=\"success-inner\">\n<!-- Animated diamond gem -->\n<div class=\"success-diamond\">\n<svg viewBox=\"0 0 64 64\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<!-- Outer diamond -->\n<rect class=\"gem-outer\" x=\"9\" y=\"9\" width=\"46\" height=\"46\" rx=\"1\" transform=\"rotate(45 32 32)\"\/>\n<!-- Inner diamond -->\n<rect class=\"gem-inner\" x=\"16\" y=\"16\" width=\"32\" height=\"32\" rx=\"0.5\" transform=\"rotate(45 32 32)\"\/>\n<!-- Cross lines -->\n<line class=\"gem-cross\" x1=\"32\" y1=\"2\" x2=\"32\" y2=\"62\"\/>\n<line class=\"gem-cross\" x1=\"2\" y1=\"32\" x2=\"62\" y2=\"32\"\/>\n<!-- Diagonal facet lines -->\n<line class=\"gem-cross\" x1=\"12\" y1=\"12\" x2=\"52\" y2=\"52\" opacity=\"0.4\"\/>\n<line class=\"gem-cross\" x1=\"52\" y1=\"12\" x2=\"12\" y2=\"52\" opacity=\"0.4\"\/>\n<!-- Center point -->\n<circle cx=\"32\" cy=\"32\" r=\"2\" fill=\"rgba(202,160,72,0.5)\"\/>\n<\/svg>\n<\/div>\n<div class=\"success-tag\">Nubian Connections<\/div>\n<h2 class=\"success-headline\">Votre demande<em>a bien \u00e9t\u00e9 re\u00e7ue.<\/em><\/h2>\n<div class=\"success-rule\"><\/div>\n<p class=\"success-body\">Merci. Votre demande a bien \u00e9t\u00e9 re\u00e7ue. Vous pouvez d\u00e8s maintenant choisir un cr\u00e9neau pour votre consultation priv\u00e9e, sans engagement. Un e-mail de confirmation vous a \u00e9galement \u00e9t\u00e9 envoy\u00e9.<\/p>\n<a id=\"ncf-booking-btn\" class=\"success-close\" style=\"display:none;text-decoration:none;margin-bottom:18px;\" target=\"_blank\" rel=\"noopener\">Choisir un cr\u00e9neau<\/a>\n<p class=\"success-note\">\u25c6 &nbsp; Confidentiel &nbsp;\u00b7&nbsp; Personnel &nbsp;\u00b7&nbsp; Discret &nbsp; \u25c6<\/p>\n<div class=\"success-actions\">\n<button class=\"success-close\" onclick=\"NCF.closeForm()\">Fermer cette fen\u00eatre<\/button>\n<a class=\"success-link\" href=\"https:\/\/nubianconnections.com\/fr\/\" style=\"text-decoration:none;display:inline-block;\">Retour \u00e0 Nubian Connections<\/a>\n<\/div>\n<\/div>\n<div class=\"success-filigree\">\u25c6 &nbsp; \u25c6 &nbsp; \u25c6<\/div>\n<\/div>\n<\/div>\n<\/div>\n<!-- Sending: EmailJS (same account as the member questionnaire) -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@emailjs\/browser@4.4.1\/dist\/email.min.js\"><\/script>\n<script>(function(){\nconst ROOT = () => document.getElementById('ncf-overlay');\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 SETTINGS \u2014 check these before going live \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nconst EMAILJS_PUBLIC_KEY  = 'mq94-ujfcMRRR1A2u';\nconst EMAILJS_SERVICE_ID  = 'service_54mk4qs';\nconst EMAILJS_TEMPLATE_ID = 'template_gnbpe0o';   \/\/ notification to you: it must display {{message}}\nconst EMAILJS_CONFIRM_TEMPLATE_ID = 'template_upc0p77';   \/\/ automatic confirmation to the applicant (To Email = {{to_email}})\nconst CONFIRM = {\"en\": {\"Prestige\": \"<p style=\\\"margin:0 0 14px;\\\">Thank you for your interest in our Prestige service. We have received your request and are delighted to take this first step with you.<\/p><p style=\\\"margin:0 0 14px;\\\">If you have not already done so, you can book your private consultation, without obligation, at a time that suits you: <a href=\\\"https:\/\/calendly.com\/nubianconnections\/private-consultation\\\" style=\\\"color:#9a7b2f;font-weight:600;text-decoration:underline;\\\">choose a time for your call<\/a>. This conversation will help us understand your aspirations, answer your questions and decide together whether our service meets your expectations.<\/p><p style=\\\"margin:0 0 14px;\\\">Your request will be handled with care and in complete confidentiality.<\/p>\", \"Direct Connections\": \"<p style=\\\"margin:0 0 14px;\\\">Thank you for your interest in Direct Connections. We have received your request and are delighted to take this first step with you.<\/p><p style=\\\"margin:0 0 14px;\\\">If you have not already done so, you can book your private consultation, without obligation, at a time that suits you: <a href=\\\"https:\/\/calendly.com\/nubianconnections\/private-consultation\\\" style=\\\"color:#9a7b2f;font-weight:600;text-decoration:underline;\\\">choose a time for your call<\/a>. This conversation will help us get to know you, understet la relationship you are looking for and prepare together how your profile will be presented.<\/p><p style=\\\"margin:0 0 14px;\\\">Your request will be handled with care and in complete confidentiality.<\/p>\", \"default\": \"<p style=\\\"margin:0 0 14px;\\\">Thank you for your request. We are delighted to take this first step with you.<\/p><p style=\\\"margin:0 0 14px;\\\">If you have not already done so, you can book your private consultation, without obligation, at a time that suits you: <a href=\\\"https:\/\/calendly.com\/nubianconnections\/private-consultation\\\" style=\\\"color:#9a7b2f;font-weight:600;text-decoration:underline;\\\">choose a time for your call<\/a>. We will explain Direct Connections and Prestige, answer your questions and help you choose the service that suits you best.<\/p><p style=\\\"margin:0 0 14px;\\\">Your request will be handled with care and in complete confidentiality.<\/p>\"}, \"fr\": {\"Prestige\": \"<p style=\\\"margin:0 0 14px;\\\">Merci de votre int\u00e9r\u00eat pour notre accompagnement Prestige. Nous avons bien re\u00e7u votre demande et sommes heureux de faire ce premier pas avec vous.<\/p><p style=\\\"margin:0 0 14px;\\\">Si ce n\u2019est pas d\u00e9j\u00e0 fait, vous pouvez r\u00e9server votre consultation priv\u00e9e, sans engagement, au moment qui vous convient : <a href=\\\"https:\/\/calendly.com\/nubianconnections\/private-consultation\\\" style=\\\"color:#9a7b2f;font-weight:600;text-decoration:underline;\\\">choisir un cr\u00e9neau<\/a>. Cet \u00e9change nous permettra de mieux comprendre vos aspirations, de r\u00e9pondre \u00e0 vos questions et de d\u00e9terminer ensemble si notre accompagnement correspond \u00e0 vos attentes.<\/p><p style=\\\"margin:0 0 14px;\\\">Votre d\u00e9marche sera trait\u00e9e avec attention et en toute confidentialit\u00e9.<\/p>\", \"Direct Connections\": \"<p style=\\\"margin:0 0 14px;\\\">Merci de votre int\u00e9r\u00eat pour Direct Connections. Nous avons bien re\u00e7u votre demande et sommes heureux de faire ce premier pas avec vous.<\/p><p style=\\\"margin:0 0 14px;\\\">Si ce n\u2019est pas d\u00e9j\u00e0 fait, vous pouvez r\u00e9server votre consultation priv\u00e9e, sans engagement, au moment qui vous convient : <a href=\\\"https:\/\/calendly.com\/nubianconnections\/private-consultation\\\" style=\\\"color:#9a7b2f;font-weight:600;text-decoration:underline;\\\">choisir un cr\u00e9neau<\/a>. Cet \u00e9change nous permettra de mieux vous conna\u00eetre, de comprendre la relation que vous souhaitez et de pr\u00e9parer ensemble la pr\u00e9sentation de votre profil.<\/p><p style=\\\"margin:0 0 14px;\\\">Votre d\u00e9marche sera trait\u00e9e avec attention et en toute confidentialit\u00e9.<\/p>\", \"default\": \"<p style=\\\"margin:0 0 14px;\\\">Merci pour votre demande. Nous sommes heureux de faire ce premier pas avec vous.<\/p><p style=\\\"margin:0 0 14px;\\\">Si ce n\u2019est pas d\u00e9j\u00e0 fait, vous pouvez r\u00e9server votre consultation priv\u00e9e, sans engagement, au moment qui vous convient : <a href=\\\"https:\/\/calendly.com\/nubianconnections\/private-consultation\\\" style=\\\"color:#9a7b2f;font-weight:600;text-decoration:underline;\\\">choisir un cr\u00e9neau<\/a>. Nous vous y pr\u00e9senterons Direct Connections et Prestige, r\u00e9pondrons \u00e0 vos questions et vous aiderons \u00e0 choisir l\u2019accompagnement qui vous correspond.<\/p><p style=\\\"margin:0 0 14px;\\\">Votre d\u00e9marche sera trait\u00e9e avec attention et en toute confidentialit\u00e9.<\/p>\"}};   \/\/ confirmation text by language, then by service ('default' otherwise)\nfunction confirmParams(data) {\nconst lg = (data.language === 'French' && CONFIRM.fr) ? 'fr' : 'en';\nconst set = CONFIRM[lg] || {};\nconst txt = set[data.service] || set['default'] || CONFIRM.en['default'];\nreturn lg === 'fr' ? { message_fr: txt } : { message: txt };\n}\nconst BOOKING_URL = 'https:\/\/calendly.com\/nubianconnections\/private-consultation';                            \/\/ e.g. your Calendly link \u2014 leave empty if not used\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nlet current = 1;\nconst STEPS = 2;\nlet termsTicked = false;\nconst fillPct = { 1: '0.0%', 2: '100.0%' };\nfunction openForm() {\ndocument.getElementById('ncf-overlay').classList.add('open');\ndocument.body.style.overflow = 'hidden';\n}\nfunction closeForm() {\ndocument.getElementById('ncf-overlay').classList.remove('open');\ndocument.body.style.overflow = '';\nsetTimeout(resetAll, 500);\n}\nfunction handleOverlayClick(e) {\nif (e.target === document.getElementById('ncf-overlay')) closeForm();\n}\ndocument.addEventListener('keydown', e => { if (e.key === 'Escape') closeForm(); });\nfunction renderStepper(active) {\nfor (let i = 1; i <= STEPS; i++) {\nconst dot = ROOT().querySelector(`.step-dot[data-step=\"${i}\"]`);\ndot.classList.remove('is-active', 'is-done');\nif (i < active) dot.classList.add('is-done');\nif (i === active) dot.classList.add('is-active');\n}\ndocument.getElementById('ncf-track-fill').style.width = fillPct[active];\n}\nlet COLLECT = null;   \/\/ when set, validation only lists the required fields (used to add the * marks)\nfunction fieldBox(el) { return el.closest('.field-single') || el.parentElement; }\nfunction markError(el, box, msg) {\nif (COLLECT) return;\nif (el) el.classList.add('has-error');\nbox.classList.add('box-error');\nif (!box.querySelector(':scope > .field-err')) {\nconst m = document.createElement('div'); m.className = 'field-err'; m.textContent = msg || 'Merci de compl\u00e9ter ce champ.';\nbox.appendChild(m);\n}\n}\nfunction need(names, ok) {\nnames.forEach(name => {\nconst el = ROOT().querySelector(`[name=\"${name}\"]`);\nif (!el) return;\nif (COLLECT) { COLLECT.push(fieldBox(el)); return; }\nif (!String(el.value).trim()) { markError(el, fieldBox(el)); ok = false; }\n});\nreturn ok;\n}\nfunction needRadio(name, ok) {\nconst any = ROOT().querySelector(`input[name=\"${name}\"]`);\nif (!any) return ok;\nconst box = any.closest('.field-single') || any.closest('.radio-group') || any.parentElement;\nif (COLLECT) { COLLECT.push(box); return ok; }\nif (ROOT().querySelector(`input[name=\"${name}\"]:checked`)) return ok;\nmarkError(null, box, 'Merci de choisir une option.');\nreturn false;\n}\nfunction clearErrors(scope) {\nscope.querySelectorAll('.has-error').forEach(el => el.classList.remove('has-error'));\nscope.querySelectorAll('.box-error').forEach(el => el.classList.remove('box-error'));\nscope.querySelectorAll('.field-err').forEach(el => el.remove());\nscope.querySelectorAll('.step-alert').forEach(el => el.remove());\n}\nfunction validateStep(step) {\nlet ok = true;\nconst panel = document.getElementById(`ncf-step-${step}`);\nclearErrors(panel);\nif (step === 1) {\nok = need(['first_name','last_name','email','email_confirm','phone','city','country','nationality','profession'], ok);\nconst ea = document.getElementById('ncf-email-a'), eb = document.getElementById('ncf-email-b');\nif (ea.value && eb.value && ea.value.trim().toLowerCase() !== eb.value.trim().toLowerCase()) { if (!COLLECT) markError(eb, fieldBox(eb), 'Les deux adresses e-mail ne correspondent pas.'); ok = false; }\nok = needRadio('gender', ok);\nok = needRadio('language', ok);\n}\nif (step === 2) {\nok = need(['relationship_sought'], ok);\nok = needRadio('service', ok);\nif (COLLECT) {} else if (!termsTicked) { const tr = ROOT().querySelector('.terms-row'); tr.classList.add('box-error'); if (!tr.querySelector('.field-err')) { const m = document.createElement('div'); m.className = 'field-err'; m.textContent = 'Merci d\u2019accepter les Conditions g\u00e9n\u00e9rales et la Politique de confidentialit\u00e9.'; tr.after(m); } ok = false; }\n}\nif (!COLLECT && !termsTicked && panel.querySelector('.terms-row') && !ok) {}\nif (!ok && !COLLECT) {\nconst n = panel.querySelectorAll('.box-error').length;\nconst alert = document.createElement('div');\nalert.className = 'step-alert';\nalert.textContent = n > 1 ? `Presque termin\u00e9 \u2014 ${n} champs demandent votre attention. Ils sont signal\u00e9s ci-dessous.` : 'Presque termin\u00e9 \u2014 un champ demande votre attention. Il est signal\u00e9 ci-dessous.';\npanel.insertBefore(alert, panel.querySelector('.section-eyebrow').nextSibling);\nconst first = panel.querySelector('.box-error');\nif (first) {\nfirst.scrollIntoView({ behavior: 'smooth', block: 'center' });\nconst f = first.querySelector('input:not([type=radio]):not([type=hidden]), select, textarea');\nif (f) setTimeout(() => f.focus({ preventScroll: true }), 350);\n}\n}\nreturn ok;\n}\nfunction markRequired() {\nCOLLECT = [];\nfor (let i = 1; i <= STEPS; i++) validateStep(i);\nconst boxes = COLLECT; COLLECT = null;\nboxes.forEach(b => {\nconst lab = b && (b.querySelector(':scope > .field-label') || b.querySelector('.field-label'));\nif (lab && !lab.querySelector('.req')) { const r = document.createElement('span'); r.className = 'req'; r.textContent = ' *'; lab.insertBefore(r, lab.querySelector('.field-sublabel')); }\n});\n}\n\/\/ a field turns back to normal as soon as it is filled in\ndocument.addEventListener('input', e => { const b = e.target.closest && e.target.closest('.box-error'); if (b && String(e.target.value).trim()) { b.classList.remove('box-error'); e.target.classList.remove('has-error'); b.querySelectorAll(':scope > .field-err').forEach(x => x.remove()); } });\ndocument.addEventListener('change', e => { const b = e.target.closest && e.target.closest('.box-error'); if (b && (e.target.value || e.target.checked)) { b.classList.remove('box-error'); e.target.classList.remove('has-error'); b.querySelectorAll(':scope > .field-err').forEach(x => x.remove()); } });\nfunction jumpToStep(n) {\nif (n === current) return;\ndocument.getElementById(`ncf-step-${current}`).classList.remove('is-active');\ncurrent = n;\ndocument.getElementById(`ncf-step-${current}`).classList.add('is-active');\nrenderStepper(current);\ndocument.getElementById('ncf-modal').scrollTop = 0;\n}\nfunction goNext(n) { if (validateStep(current)) jumpToStep(n); }\nfunction pickRadio(el, name) {\nROOT().querySelectorAll(`[onclick=\"NCF.pickRadio(this,'${name}')\"]`).forEach(c => c.classList.remove('picked'));\nel.classList.add('picked');\nel.querySelector('input[type=\"radio\"]').checked = true;\nconst eb = el.closest('.box-error'); if (eb) { eb.classList.remove('box-error'); eb.querySelectorAll(':scope > .field-err').forEach(x => x.remove()); }\n}\nfunction toggleTerms() {\ntermsTicked = !termsTicked;\nconst tr = ROOT().querySelector('.terms-row'); if (tr && termsTicked) { tr.classList.remove('box-error'); const nx = tr.nextElementSibling; if (nx && nx.classList.contains('field-err')) nx.remove(); }\ndocument.getElementById('ncf-terms-box').classList.toggle('ticked', termsTicked);\n}\nfunction revealOther(selId, revId) {\nconst sel = document.getElementById(selId);\ndocument.getElementById(revId).classList.toggle('open', sel.value === 'other' || sel.value === 'ambassador');\n}\n\/* Builds a readable summary of every answer *\/\nfunction collect() {\nconst form = document.getElementById('ncf-nc-form');\nconst data = {};\nnew FormData(form).forEach((v, k) => { if (k !== 'website' && k !== 'email_confirm') data[k] = v; });\nform.querySelectorAll('select').forEach(s => {\nif (s.value && s.selectedOptions[0]) data[s.name] = s.selectedOptions[0].textContent.trim();\n});\nconst lines = Object.entries(data).filter(([k, v]) => String(v).trim()).map(([k, v]) => `${k.replace(\/_\/g, ' ')}: ${v}`);\nreturn { data, message: lines.join('\\n') };\n}\nfunction showSuccess() {\ndocument.getElementById('ncf-form-view').style.display = 'none';\ndocument.getElementById('ncf-success-view').classList.add('show');\ndocument.getElementById('ncf-modal').scrollTop = 0;\nconst b = document.getElementById('ncf-booking-btn');\nif (b && BOOKING_URL) { b.href = BOOKING_URL; b.style.display = 'inline-block'; }\n}\nfunction handleSubmit(e) {\ne.preventDefault();\nconst banner = document.getElementById('ncf-error-banner');\nbanner.textContent = 'Merci de compl\u00e9ter les champs obligatoires avant d\u2019envoyer.';\nif (!validateStep(2)) return;\nbanner.classList.remove('show');\nif (ROOT().querySelector('[name=\"website\"]').value) { showSuccess(); return; }   \/\/ spam trap\nconst { data, message } = collect();\nconst btn = ROOT().querySelector('.btn-submit');\nconst label = btn.textContent;\nbtn.disabled = true; btn.textContent = 'Envoi en cours\u2026';\nconst params = Object.assign({}, data, {\nsubject: `New ${data.form_type} \u2014 ${data.first_name || ''} ${data.last_name || ''}`.trim(),\nfrom_name: `${data.first_name || ''} ${data.last_name || ''}`.trim(),\nname: `${data.first_name || ''} ${data.last_name || ''}`.trim(),\nreply_to: data.email, message: message\n});\nemailjs.send(EMAILJS_SERVICE_ID, EMAILJS_TEMPLATE_ID, params, { publicKey: EMAILJS_PUBLIC_KEY })\n.then(() => {\nshowSuccess();\nif (EMAILJS_CONFIRM_TEMPLATE_ID && data.email) {\nemailjs.send(EMAILJS_SERVICE_ID, EMAILJS_CONFIRM_TEMPLATE_ID, {\nto_email: data.email, email: data.email, to_name: data.first_name || '', name: data.first_name || '',\nform_type: data.form_type, reply_to: 'love@nubianconnections.com',\n...confirmParams(data)\n}, { publicKey: EMAILJS_PUBLIC_KEY }).catch(() => {});   \/\/ never blocks the applicant\n}\n})\n.catch(() => {\nbanner.textContent = 'D\u00e9sol\u00e9, votre demande n\u2019a pas pu \u00eatre envoy\u00e9e. Merci de r\u00e9essayer, ou d\u2019\u00e9crire \u00e0 love@nubianconnections.com.';\nbanner.classList.add('show');\ndocument.getElementById('ncf-modal').scrollTop = 0;\n})\n.finally(() => { btn.disabled = false; btn.textContent = label; });\n}\nfunction resetAll() {\ndocument.getElementById('ncf-nc-form').reset();\ndocument.getElementById('ncf-form-view').style.display = 'block';\ndocument.getElementById('ncf-success-view').classList.remove('show');\ndocument.getElementById('ncf-error-banner').classList.remove('show');\nROOT().querySelectorAll('.step-panel').forEach(p => p.classList.remove('is-active'));\ndocument.getElementById('ncf-step-1').classList.add('is-active');\nROOT().querySelectorAll('.radio-card, .intent-card').forEach(c => c.classList.remove('picked'));\nROOT().querySelectorAll('.intent-card.default').forEach(c => pickRadio(c, 'service'));\ntermsTicked = false;\ndocument.getElementById('ncf-terms-box').classList.remove('ticked');\nROOT().querySelectorAll('.other-reveal').forEach(r => r.classList.remove('open'));\nROOT().querySelectorAll('.has-error').forEach(el => el.classList.remove('has-error'));\ncurrent = 1;\nrenderStepper(1);\n}\nrenderStepper(1);\nmarkRequired();\n\/\/ ambassador tracking: ?ref=name in the link, remembered for 30 days (also set site-wide by the NC referral snippet)\n(function () {\nlet ref = '';\ntry {\nconst q = new URLSearchParams(location.search).get('ref');\nif (q) { ref = q.trim().toLowerCase().replace(\/[^a-z0-9_-]\/g, '').slice(0, 40); localStorage.setItem('nc_ref', JSON.stringify({ v: ref, t: Date.now() })); }\nelse { const st = JSON.parse(localStorage.getItem('nc_ref') || 'null'); if (st && st.v && Date.now() - st.t < 30 * 864e5) ref = st.v; }\n} catch (e) {}\nconst f = ROOT().querySelector('[name=\"referral\"]'); if (f) { if (ref) f.value = ref; }\n})();\nROOT().querySelectorAll('.intent-card.default').forEach(c => pickRadio(c, 'service'));\nwindow.addEventListener('load', () => setTimeout(openForm, 500));\nwindow.NCF = { openForm, closeForm, handleOverlayClick, jumpToStep, goNext, pickRadio, toggleTerms, revealOther, handleSubmit };\n})();\n<\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Demander une consultation priv\u00e9e | Nubian Connections Demander une consultation priv\u00e9e Fermer &nbsp; \u2715 Nubian ConnectionsInternational Services payants \u00b7 Direct Connections &amp; Prestige Demander uneconsultation priv\u00e9e. Un \u00e9change priv\u00e9 pour comprendre vos attentes, vous pr\u00e9senter nos services et voir ensemble si nous pouvons vous aider.Direct Connections et Prestige sont des services payants. Les tarifs vous &#8230; <a title=\"Demander une consultation priv\u00e9e\" class=\"read-more\" href=\"https:\/\/nubianconnections.com\/fr\/consultation-privee\/\" aria-label=\"En savoir plus sur Demander une consultation priv\u00e9e\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-5194","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/nubianconnections.com\/fr\/wp-json\/wp\/v2\/pages\/5194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nubianconnections.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nubianconnections.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nubianconnections.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nubianconnections.com\/fr\/wp-json\/wp\/v2\/comments?post=5194"}],"version-history":[{"count":1,"href":"https:\/\/nubianconnections.com\/fr\/wp-json\/wp\/v2\/pages\/5194\/revisions"}],"predecessor-version":[{"id":5208,"href":"https:\/\/nubianconnections.com\/fr\/wp-json\/wp\/v2\/pages\/5194\/revisions\/5208"}],"wp:attachment":[{"href":"https:\/\/nubianconnections.com\/fr\/wp-json\/wp\/v2\/media?parent=5194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}