{"id":50708,"date":"2026-06-07T07:06:18","date_gmt":"2026-06-07T07:06:18","guid":{"rendered":"https:\/\/zeas.immo\/?page_id=50708"},"modified":"2026-07-02T21:14:04","modified_gmt":"2026-07-02T21:14:04","slug":"pourquoi-mon-bien-immobilier-ne-se-vend-il-pas-2","status":"publish","type":"page","link":"https:\/\/zeas.immo\/fr\/why-is-my-property-not-selling\/","title":{"rendered":"Pourquoi mon bien immobilier ne se vend-il pas ?"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"50708\" class=\"elementor elementor-50708\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-29cc9bf e-flex e-con-boxed e-con e-parent\" data-id=\"29cc9bf\" 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-ef1aa4f elementor-widget elementor-widget-html\" data-id=\"ef1aa4f\" 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<!--\n  zeas.immo \u2014 Why is my property not selling? | Free Market Analysis\n  SEO: \"why is my property not selling\"\n  Standard WordPress template (WP header stays). Paste into Elementor HTML widget.\n  Set section: Full Width, padding 0. API: \/listing-api.php\n-->\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500&display=swap');\n\n#zl,#zl *,#zl *::before,#zl *::after{box-sizing:border-box !important;line-height:normal !important}\n#zl{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif !important;background:#0F0F0E !important;color:#F2F0EA !important;-webkit-font-smoothing:antialiased !important;width:100% !important}\n#zl a{text-decoration:none !important;color:inherit !important}\n#zl button{cursor:pointer !important;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif !important}\n.zl-step{display:none !important} .zl-step.active{display:block !important}\n\n\/* \u2500\u2500 Back bar \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 *\/\n.zl-back-row{padding:14px 56px !important;border-bottom:1px solid #2C2C2A !important;background:#0F0F0E !important}\n.zl-back-btn{background:none !important;border:none !important;color:#888880 !important;font-size:13px !important;display:inline-flex !important;align-items:center !important;gap:6px !important;padding:0 !important;transition:color .2s !important}\n.zl-back-btn:hover{color:#FF5C0B !important}\n\n\/* \u2500\u2500 Step 1: Hero \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 *\/\n.zl-hero{background:#0F0F0E !important;padding:64px 56px 0 !important;position:relative !important;overflow:hidden !important}\n.zl-hero::after{content:'' !important;position:absolute !important;inset:0 !important;pointer-events:none !important;background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'\/%3E%3C\/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.04'\/%3E%3C\/svg%3E\") !important}\n.zl-hero-inner{position:relative !important;z-index:1 !important;max-width:900px !important;margin:0 auto !important;padding-bottom:56px !important}\n.zl-h1-seo{position:absolute !important;width:1px !important;height:1px !important;overflow:hidden !important;clip:rect(0,0,0,0) !important;white-space:nowrap !important}\n.zl-seo-h1{font-size:clamp(12px,1.3vw,14px) !important;font-weight:600 !important;letter-spacing:.18em !important;text-transform:uppercase !important;color:#FF5C0B !important;margin-bottom:32px !important;display:flex !important;align-items:center !important;gap:12px !important}\n.zl-seo-h1::before,.zl-seo-h1::after{content:'' !important;height:1px !important;background:#FF5C0B !important;flex-shrink:0 !important;width:22px !important}\n.zl-intro-questions{margin-bottom:52px !important}\n.zl-intro-q{display:flex !important;align-items:center !important;gap:16px !important;padding:18px 0 !important;border-bottom:1px solid #1E1E1C !important;opacity:0 !important;transform:translateX(-56px) !important;transition:opacity .65s ease,transform .65s ease !important}\n.zl-intro-q.visible{opacity:1 !important;transform:translateX(0) !important}\n.zl-intro-q-arrow{font-size:18px !important;color:#FF5C0B !important;flex-shrink:0 !important;font-weight:300 !important}\n.zl-intro-q-text{font-size:clamp(22px,3vw,32px) !important;font-weight:400 !important;letter-spacing:-.02em !important;line-height:1.15 !important;color:#F2F0EA !important}\n.zl-intro-q-text em{font-style:italic !important;color:#FF5C0B !important}\n\n\/* Mode buttons *\/\n.zl-modes{display:flex !important;flex-direction:column !important;gap:12px !important}\n.zl-mode-btn{display:flex !important;align-items:center !important;justify-content:space-between !important;width:100% !important;background:transparent !important;border:1px solid #2C2C2A !important;padding:36px 44px !important;transition:all .2s !important;text-align:left !important}\n.zl-mode-btn:hover{border-color:#FF5C0B !important;background:rgba(255,92,11,.04) !important}\n.zl-mode-btn.selected{border-color:#FF5C0B !important;border-left-width:4px !important;background:rgba(255,92,11,.06) !important}\n.zl-mode-btn-main{font-size:clamp(22px,3.5vw,40px) !important;font-weight:500 !important;letter-spacing:-.02em !important;color:#F2F0EA !important;line-height:1.1 !important;display:block !important;margin-bottom:6px !important}\n.zl-mode-btn-sub{font-size:16px !important;font-weight:300 !important;color:#888880 !important;display:block !important}\n.zl-mode-btn-arrow{color:#2C2C2A !important;flex-shrink:0 !important;transition:color .2s,transform .2s !important;margin-left:20px !important}\n.zl-mode-btn:hover .zl-mode-btn-arrow,.zl-mode-btn.selected .zl-mode-btn-arrow{color:#FF5C0B !important;transform:translateX(4px) !important}\n\n\/* Stat bar *\/\n.zl-stat-bar{display:grid !important;grid-template-columns:repeat(3,1fr) !important;border-top:1px solid #2C2C2A !important;background:#0F0F0E !important;width:100% !important}\n.zl-sitem{padding:32px 24px !important;text-align:center !important;border-right:1px solid #2C2C2A !important;border-bottom:3px solid transparent !important;transition:background .25s,border-bottom-color .25s,transform .25s !important;cursor:default !important}\n.zl-sitem:hover{background:#1A1A18 !important;border-bottom-color:#FF5C0B !important;transform:translateY(-3px) !important}\n.zl-sitem:hover .zl-snum{text-shadow:0 0 40px rgba(255,92,11,.35) !important}\n.zl-sitem:last-child{border-right:none !important}\n.zl-snum{font-size:clamp(36px,5vw,56px) !important;font-weight:200 !important;line-height:1 !important;color:#F2F0EA !important;letter-spacing:-.04em !important;display:block !important}\n.zl-slbl{font-size:15px !important;font-weight:300 !important;color:#C8C6C0 !important;line-height:1.5 !important;margin-top:8px !important;display:block !important}\n\n\/* FSBO portal question *\/\n.zl-portal-q{background:#161614 !important;padding:48px 56px !important;border-top:3px solid #FF5C0B !important;display:none !important;text-align:center !important}\n.zl-portal-q.show{display:block !important}\n.zl-portal-q-title{font-size:clamp(20px,2.5vw,28px) !important;font-weight:500 !important;letter-spacing:-.02em !important;color:#F2F0EA !important;margin-bottom:10px !important}\n.zl-portal-q-sub{font-size:14px !important;font-weight:300 !important;color:#888880 !important;margin-bottom:36px !important}\n.zl-portal-btns{display:flex !important;gap:12px !important;justify-content:center !important;flex-wrap:wrap !important}\n.zl-portal-btn{background:transparent !important;border:1px solid #2C2C2A !important;color:#888880 !important;padding:16px 48px !important;font-size:16px !important;font-weight:400 !important;transition:all .2s !important;min-width:190px !important}\n.zl-portal-btn:hover{border-color:#FF5C0B !important;color:#F2F0EA !important}\n.zl-portal-btn.selected{background:#FF5C0B !important;border-color:#FF5C0B !important;color:#fff !important}\n\n\/* Input section *\/\n.zl-input-section{background:#161614 !important;padding:56px 56px !important;border-top:3px solid #FF5C0B !important;display:none !important;text-align:center !important}\n.zl-input-section.show{display:block !important}\n.zl-input-eyebrow{font-size:10px !important;font-weight:600 !important;letter-spacing:.18em !important;text-transform:uppercase !important;color:#FF5C0B !important;margin-bottom:20px !important}\n.zl-input-title{font-size:clamp(20px,2.8vw,30px) !important;font-weight:500 !important;letter-spacing:-.02em !important;color:#F2F0EA !important;margin-bottom:8px !important}\n.zl-input-sub{font-size:14px !important;font-weight:300 !important;color:#888880 !important;margin-bottom:28px !important;line-height:1.65 !important;max-width:520px !important;margin-left:auto !important;margin-right:auto !important}\n.zl-url-bar{display:flex !important;border:1px solid rgba(255,255,255,.15) !important;background:rgba(255,255,255,.05) !important;transition:border-color .2s !important;margin:0 auto 12px !important;max-width:640px !important;width:100% !important}\n.zl-url-bar:focus-within{border-color:#FF5C0B !important}\n.zl-url-inp{flex:1 !important;background:transparent !important;border:none !important;outline:none !important;color:#F2F0EA !important;font-size:14px !important;padding:14px 18px !important}\n.zl-url-inp::placeholder{color:rgba(255,255,255,.3) !important}\n.zl-url-go{background:#FF5C0B !important;color:#fff !important;border:none !important;padding:0 26px !important;font-family:'Poppins',sans-serif !important;font-size:13px !important;font-weight:500 !important;letter-spacing:.05em !important;white-space:nowrap !important;transition:background .2s !important;display:flex !important;align-items:center !important;gap:7px !important}\n.zl-url-go:hover{background:#FF6E28 !important}\n.zl-url-go:disabled{background:#444240 !important;color:#666 !important;cursor:not-allowed !important}\n.zl-or{font-size:11px !important;color:#444440 !important;text-align:center !important;margin:12px auto !important;letter-spacing:.1em !important;text-transform:uppercase !important;max-width:640px !important;display:block !important}\n.zl-manual-grid{display:grid !important;grid-template-columns:1fr 1fr 1fr !important;gap:10px !important;margin:0 auto 10px !important;max-width:640px !important;width:100% !important}\n.zl-sel{background:rgba(255,255,255,.06) !important;border:1px solid rgba(255,255,255,.15) !important;color:rgba(255,255,255,.7) !important;font-size:14px !important;padding:12px 14px !important;outline:none !important;width:100% !important;-webkit-appearance:none !important;appearance:none !important;transition:border-color .18s !important}\n.zl-sel:focus{border-color:#FF5C0B !important}\n.zl-manual-go{background:#FF5C0B !important;color:#fff !important;border:none !important;padding:14px !important;font-family:'Poppins',sans-serif !important;font-size:14px !important;font-weight:500 !important;letter-spacing:.05em !important;max-width:640px !important;width:100% !important;display:flex !important;align-items:center !important;justify-content:center !important;gap:8px !important;margin:0 auto !important;transition:background .2s !important}\n.zl-manual-go:hover{background:#FF6E28 !important}\n.zl-manual-go:disabled{background:#444240 !important;color:#666 !important;cursor:not-allowed !important}\n\n\/* \u2500\u2500 Step 2: Two-number hero \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.zl-duo{padding:80px 56px 64px !important;background:#0F0F0E !important;border-bottom:1px solid #2C2C2A !important}\n.zl-duo-agency{display:none !important}\n#zl-f3-label{display:block !important;text-align:center !important;margin-bottom:40px !important;font-size:clamp(26px,4.5vw,52px) !important;font-weight:500 !important;color:#FF5C0B !important;line-height:1.35 !important;letter-spacing:-.02em !important}\n.zl-duo-agency strong{color:#F2F0EA !important}\n.zl-duo-grid{display:grid !important;grid-template-columns:1fr auto 1fr !important;align-items:center !important;gap:0 !important;max-width:860px !important;margin:0 auto 56px !important}\n.zl-duo-col{text-align:center !important;padding:0 32px !important}\n.zl-duo-num{font-size:clamp(80px,14vw,148px) !important;font-weight:200 !important;line-height:1 !important;letter-spacing:-.055em !important;display:block !important;color:#F2F0EA !important;transition:text-shadow .3s !important}\n.zl-duo-num.alarm{color:#FF5C0B !important;animation:zpulse 3s ease-in-out infinite !important}\n.zl-duo-lbl{font-size:18px !important;font-weight:400 !important;letter-spacing:.08em !important;text-transform:uppercase !important;color:#C8C6C0 !important;margin-top:16px !important;display:block !important;line-height:1.5 !important}\n.zl-duo-sep{display:flex !important;flex-direction:column !important;align-items:center !important;gap:10px !important;padding:0 8px !important}\n.zl-duo-sep-line{width:1px !important;height:80px !important;background:#2C2C2A !important}\n.zl-duo-sep-txt{font-size:13px !important;font-weight:400 !important;letter-spacing:.08em !important;text-transform:uppercase !important;color:#888880 !important;white-space:nowrap !important}\n.zl-burning-q{text-align:center !important;max-width:760px !important;margin:0 auto !important}\n.zl-burning-q h2{font-size:clamp(26px,4.5vw,52px) !important;font-weight:500 !important;letter-spacing:-.025em !important;line-height:1.1 !important;color:#FF5C0B !important;margin:0 !important}\n\n\/* \u2500\u2500 Scroll-reveal sections \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.zl-reveal{opacity:0 !important;transform:translateY(40px) !important;transition:opacity .75s ease,transform .75s ease !important}\n.zl-reveal.visible{opacity:1 !important;transform:translateY(0) !important}\n\n.zl-section{padding:72px 56px !important;border-bottom:1px solid #2C2C2A !important}\n.zl-section-inner{max-width:800px !important;margin:0 auto !important}\n.zl-section-tag{font-size:10px !important;font-weight:600 !important;letter-spacing:.18em !important;text-transform:uppercase !important;color:#FF5C0B !important;margin-bottom:20px !important;display:flex !important;align-items:center !important;gap:12px !important}\n.zl-section-tag::after{content:'' !important;flex:1 !important;height:1px !important;background:#2C2C2A !important}\n.zl-section-h{font-size:clamp(26px,3.8vw,44px) !important;font-weight:500 !important;letter-spacing:-.025em !important;line-height:1.1 !important;color:#F2F0EA !important;margin-bottom:18px !important}\n.zl-section-body{font-size:16px !important;font-weight:300 !important;color:#888880 !important;line-height:1.8 !important;max-width:620px !important}\n.zl-section-body strong{color:#C8C6C0 !important;font-weight:500 !important}\n\n\/* \u2500\u2500 CTA \/ Offer \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 *\/\n.zl-offer{background:#161614 !important;padding:80px 56px !important;border-bottom:3px solid #FF5C0B !important}\n.zl-offer.form-open{border-bottom:none !important}\n.zl-offer-inner{max-width:700px !important;margin:0 auto !important;text-align:center !important}\n.zl-offer-tag{font-size:10px !important;font-weight:600 !important;letter-spacing:.2em !important;text-transform:uppercase !important;color:#FF5C0B !important;margin-bottom:20px !important;display:flex !important;align-items:center !important;justify-content:center !important;gap:12px !important}\n.zl-offer-tag::before,.zl-offer-tag::after{content:'' !important;width:20px !important;height:1px !important;background:#FF5C0B !important}\n.zl-offer-h{font-size:clamp(28px,4vw,50px) !important;font-weight:500 !important;letter-spacing:-.03em !important;line-height:1.08 !important;color:#F2F0EA !important;margin-bottom:16px !important}\n.zl-offer-sub{font-size:17px !important;font-weight:300 !important;color:#777470 !important;line-height:1.7 !important;margin-bottom:0 !important}\n.zl-offer-list{list-style:none !important;margin:32px auto 48px !important;padding:0 !important;text-align:left !important;display:inline-block !important;width:100% !important;max-width:560px !important}\n.zl-offer-item{font-size:15px !important;font-weight:300 !important;color:#9A9890 !important;line-height:1.6 !important;padding:12px 0 !important;border-bottom:1px solid #2C2C2A !important;display:flex !important;gap:14px !important;align-items:baseline !important}\n.zl-offer-item:last-child{border-bottom:none !important}\n.zl-offer-tick{color:#FF5C0B !important;flex-shrink:0 !important;font-size:14px !important}\n.zl-offer-item strong{color:#F2F0EA !important;font-weight:500 !important}\n.zl-btn-primary{display:inline-flex !important;align-items:center !important;gap:10px !important;background:#FF5C0B !important;color:#fff !important;padding:17px 52px !important;border:none !important;font-family:'Poppins',sans-serif !important;font-size:15px !important;font-weight:500 !important;letter-spacing:.05em !important;transition:background .2s,transform .15s !important}\n.zl-btn-primary:hover{background:#FF6E28 !important;transform:translateY(-2px) !important}\n.zl-btn-primary:disabled{background:#252523 !important;color:#555 !important;cursor:not-allowed !important;transform:none !important}\n\n\/* Lead form *\/\n.zl-form-wrap{background:#1E1E1C !important;border-bottom:3px solid #FF5C0B !important;padding:52px 56px !important;display:none !important}\n.zl-form-wrap.show{display:block !important}\n.zl-form-inner{max-width:480px !important;margin:0 auto !important}\n.zl-form-title{font-size:22px !important;font-weight:500 !important;letter-spacing:-.02em !important;color:#F2F0EA !important;margin-bottom:6px !important}\n.zl-form-sub{font-size:14px !important;font-weight:300 !important;color:#777470 !important;margin-bottom:28px !important;line-height:1.7 !important}\n.zl-field{width:100% !important;font-size:14px !important;color:#F2F0EA !important;padding:12px 14px !important;margin-bottom:10px !important;border:1.5px solid #3A3A38 !important;background:rgba(255,255,255,.05) !important;outline:none !important;transition:border-color .18s !important;display:block !important}\n.zl-field:focus{border-color:#FF5C0B !important}\n.zl-field::placeholder{color:#555552 !important}\n\n\/* Loading *\/\n.zl-loading{padding:80px 24px !important;font-size:14px !important;color:#888880 !important;display:flex;align-items:center !important;justify-content:center !important;gap:12px !important}\n.zl-loading.hidden{display:none !important}\n.zl-spin{width:18px !important;height:18px !important;border:2px solid #2C2C2A !important;border-top-color:#FF5C0B !important;border-radius:50% !important;animation:spin .8s linear infinite !important;flex-shrink:0 !important}\n\n\/* Thank you *\/\n.zl-ty{display:flex !important;flex-direction:column !important;align-items:center !important;justify-content:center !important;min-height:60vh !important;text-align:center !important;padding:80px 24px !important;background:#0F0F0E !important}\n.zl-tick{width:52px !important;height:52px !important;background:#FF5C0B !important;display:flex !important;align-items:center !important;justify-content:center !important;margin:0 auto 24px !important}\n.zl-btn-ghost{display:inline-flex !important;align-items:center !important;gap:8px !important;background:transparent !important;color:#888880 !important;border:1px solid #2C2C2A !important;padding:11px 28px !important;font-family:'Poppins',sans-serif !important;font-size:13px !important;font-weight:500 !important;letter-spacing:.04em !important;transition:border-color .2s,color .2s !important;margin-top:20px !important}\n.zl-btn-ghost:hover{border-color:#FF5C0B !important;color:#FF5C0B !important}\n\n@keyframes zpulse{0%,100%{opacity:1}50%{opacity:.72;text-shadow:0 0 52px rgba(255,92,11,.45)}}\n@keyframes spin{to{transform:rotate(360deg)}}\n\n@media(max-width:960px){\n  .zl-hero,.zl-duo,.zl-section,.zl-offer,.zl-form-wrap{padding-left:32px !important;padding-right:32px !important}\n  .zl-back-row,.zl-input-section,.zl-portal-q{padding-left:32px !important;padding-right:32px !important}\n}\n@media(max-width:600px){\n  .zl-hero,.zl-duo,.zl-section,.zl-offer,.zl-form-wrap,.zl-back-row,.zl-input-section,.zl-portal-q{padding-left:20px !important;padding-right:20px !important}\n  .zl-intro-q-text{font-size:20px !important}\n  .zl-mode-btn{padding:24px 20px !important}\n  .zl-mode-btn-main{font-size:22px !important}\n  .zl-stat-bar{grid-template-columns:1fr 1fr !important}\n  .zl-sitem:nth-child(2){border-right:none !important}\n  .zl-sitem:nth-child(3){border-top:1px solid #2C2C2A !important;grid-column:span 2 !important}\n  .zl-url-bar{flex-direction:column !important}\n  .zl-url-go{padding:13px !important;justify-content:center !important}\n  .zl-manual-grid{grid-template-columns:1fr !important}\n  .zl-duo-grid{grid-template-columns:1fr !important;gap:24px !important}\n  .zl-duo-sep{flex-direction:row !important}\n  .zl-duo-sep-line{width:60px !important;height:1px !important}\n  .zl-duo-num{font-size:clamp(64px,20vw,100px) !important}\n}\n<\/style>\n\n\n<div id=\"zl\">\n\n<!-- \u2550\u2550 STEP 1 \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"zl-1\" class=\"zl-step active\">\n\n  <h1 class=\"zl-h1-seo\">Why is my property not selling? Free market analysis for Luxembourg sellers.<\/h1>\n\n  <div class=\"zl-hero\">\n    <div class=\"zl-hero-inner\">\n      <div class=\"zl-seo-h1\">Why is my property not selling?<\/div>\n\n      <div class=\"zl-intro-questions\">\n        <div class=\"zl-intro-q\" id=\"iq1\">\n          <span class=\"zl-intro-q-arrow\">\u2192<\/span>\n          <span class=\"zl-intro-q-text\">Is your sale <em>your agent's top priority?<\/em><\/span>\n        <\/div>\n        <div class=\"zl-intro-q\" id=\"iq2\">\n          <span class=\"zl-intro-q-arrow\">\u2192<\/span>\n          <span class=\"zl-intro-q-text\">How competitive <em>is your price?<\/em><\/span>\n        <\/div>\n        <div class=\"zl-intro-q\" id=\"iq3\">\n          <span class=\"zl-intro-q-arrow\">\u2192<\/span>\n          <span class=\"zl-intro-q-text\">Would you click on <em>your own listing?<\/em><\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"zl-modes\">\n        <button class=\"zl-mode-btn\" id=\"btn-agency\" onclick=\"setMode('agency')\">\n          <div>\n            <span class=\"zl-mode-btn-main\">Selling with an agency<\/span>\n            <span class=\"zl-mode-btn-sub\">My property is listed with an estate agent<\/span>\n          <\/div>\n          <svg class=\"zl-mode-btn-arrow\" width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg>\n        <\/button>\n        <button class=\"zl-mode-btn\" id=\"btn-fsbo\" onclick=\"setMode('fsbo')\">\n          <div>\n            <span class=\"zl-mode-btn-main\">Selling on my own<\/span>\n            <span class=\"zl-mode-btn-sub\">I'm managing the sale myself<\/span>\n          <\/div>\n          <svg class=\"zl-mode-btn-arrow\" width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg>\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"zl-stat-bar\">\n    <div class=\"zl-sitem\">\n      <span class=\"zl-snum\">10<\/span>\n      <span class=\"zl-slbl\">Largest communes<br>covered in Luxembourg<\/span>\n    <\/div>\n    <div class=\"zl-sitem\">\n      <span class=\"zl-snum\">7,000+<\/span>\n      <span class=\"zl-slbl\">Active listings<br>tracked weekly<\/span>\n    <\/div>\n    <div class=\"zl-sitem\">\n      <span class=\"zl-snum\">24h<\/span>\n      <span class=\"zl-slbl\">Free property report<br>delivered within 24 hours<\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"zl-portal-q\" id=\"zl-portal-q\">\n    <div class=\"zl-input-eyebrow\" style=\"text-align:center\">Private sale \u00b7 Step 1 of 2<\/div>\n    <div class=\"zl-portal-q-title\">Have you posted your property on a portal?<\/div>\n    <div class=\"zl-portal-q-sub\">athome.lu, immotop.lu, or any other listing site<\/div>\n    <div class=\"zl-portal-btns\">\n      <button class=\"zl-portal-btn\" id=\"btn-portal-yes\" onclick=\"setPortal(true)\">Yes, I have a listing link<\/button>\n      <button class=\"zl-portal-btn\" id=\"btn-portal-no\"  onclick=\"setPortal(false)\">No, not listed online<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"zl-input-section\" id=\"zl-input-section\"><\/div>\n\n<\/div><!-- \/step 1 -->\n\n\n<!-- \u2550\u2550 STEP 2 \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"zl-2\" class=\"zl-step\">\n\n  <div class=\"zl-back-row\">\n    <button class=\"zl-back-btn\" onclick=\"goTo(1)\">\n      <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M19 12H5M12 5l-7 7 7 7\"\/><\/svg>\n      Start over\n    <\/button>\n  <\/div>\n\n  <div id=\"zl-loading\" class=\"zl-loading hidden\">\n    <div class=\"zl-spin\"><\/div> Analysing your listing\u2026\n  <\/div>\n\n  <div id=\"zl-results\" style=\"display:none\">\n\n    <!-- Two-number hero \u2014 agency attention or competition -->\n    <div class=\"zl-duo\" id=\"zl-duo\">\n      <div class=\"zl-duo-agency\" id=\"zl-duo-agency\"><\/div>\n      <div class=\"zl-duo-grid\">\n        <div class=\"zl-duo-col\">\n          <span class=\"zl-duo-num\" id=\"zl-num-left\" data-count=\"0\">0<\/span>\n          <span class=\"zl-duo-lbl\" id=\"zl-lbl-left\"><\/span>\n        <\/div>\n        <div class=\"zl-duo-sep\">\n          <div class=\"zl-duo-sep-line\"><\/div>\n          <div class=\"zl-duo-sep-txt\" id=\"zl-duo-sep-txt\">out of<\/div>\n          <div class=\"zl-duo-sep-line\"><\/div>\n        <\/div>\n        <div class=\"zl-duo-col\">\n          <span class=\"zl-duo-num\" id=\"zl-num-right\" data-count=\"0\">0<\/span>\n          <span class=\"zl-duo-lbl\" id=\"zl-lbl-right\"><\/span>\n        <\/div>\n      <\/div>\n      <div class=\"zl-burning-q\">\n        <h2 id=\"zl-burning-q-text\"><\/h2>\n      <\/div>\n    <\/div>\n\n    <!-- Finding 02: Competition \u2014 two-number section -->\n    <div class=\"zl-duo zl-reveal\" id=\"zl-f2\" style=\"background:#161614 !important;border-top:1px solid #2C2C2A !important\">\n      <div class=\"zl-duo-agency\" id=\"zl-f2-agency\"><\/div>\n      <div class=\"zl-duo-grid\">\n        <div class=\"zl-duo-col\">\n          <span class=\"zl-duo-num\" id=\"zl-comp-left\" data-count=\"0\">0<\/span>\n          <span class=\"zl-duo-lbl\" id=\"zl-comp-lbl-left\"><\/span>\n          <span id=\"zl-comp-pct-left\" style=\"display:block;font-size:20px;font-weight:400;color:#F2F0EA;opacity:.75;letter-spacing:.04em;margin-top:14px\"><\/span>\n        <\/div>\n        <div class=\"zl-duo-sep\">\n          <div class=\"zl-duo-sep-line\"><\/div>\n          <div class=\"zl-duo-sep-txt\">and<\/div>\n          <div class=\"zl-duo-sep-line\"><\/div>\n        <\/div>\n        <div class=\"zl-duo-col\">\n          <span class=\"zl-duo-num\" id=\"zl-comp-right\" data-count=\"0\">0<\/span>\n          <span class=\"zl-duo-lbl\" id=\"zl-comp-lbl-right\"><\/span>\n          <span id=\"zl-comp-pct-right\" style=\"display:block;font-size:20px;font-weight:400;color:#FF5C0B;opacity:.85;letter-spacing:.04em;margin-top:14px\"><\/span>\n        <\/div>\n      <\/div>\n      <div class=\"zl-burning-q\">\n        <h2 id=\"zl-comp-q\">Is your price competitive?<\/h2>\n      <\/div>\n    <\/div>\n\n\n\n    <!-- Finding 03: Presentation \u2014 4C -->\n    <div class=\"zl-duo zl-reveal\" id=\"zl-rev-2\" style=\"background:#0F0F0E !important;border-top:1px solid #2C2C2A !important\">\n      <div class=\"zl-duo-agency\" id=\"zl-f3-label\">Would you click on your own listing?<\/div>\n      <div style=\"text-align:center;padding:0 0 20px\">\n        <div style=\"font-size:clamp(14px,1.6vw,24px);font-weight:400;letter-spacing:.04em;line-height:1.4;color:#F2F0EA;text-align:center;max-width:900px;margin:0 auto;text-transform:uppercase\">\n          Is it Clear, Clean, Consistent and Credible?\n        <\/div>\n      <\/div>\n      <div class=\"zl-burning-q\" style=\"margin-bottom:0;margin-top:32px\">\n      <\/div>\n    <\/div>\n\n    <!-- Scroll-reveal: the offer -->\n    <div class=\"zl-offer zl-reveal\" id=\"zl-offer\">\n      <div class=\"zl-offer-inner\">\n        <h2 class=\"zl-offer-h\" style=\"color:#FF5C0B !important;font-size:clamp(24px,3.2vw,42px) !important;margin-bottom:20px !important\">\n          Do you want a detailed report on your property?\n        <\/h2>\n        <p style=\"font-size:clamp(16px,1.8vw,22px);font-weight:300;color:#F2F0EA;line-height:1.5;max-width:680px;margin:0 auto 48px\">\n          We will compare your price to similar listings and give you honest advice to help you sell.\n        <\/p>\n\n        <button class=\"zl-btn-primary\" id=\"zl-offer-btn\" onclick=\"openForm()\">\n          <span>I want the honest audit<\/span>\n          <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg>\n        <\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Form -->\n    <div class=\"zl-form-wrap\" id=\"zl-form-wrap\">\n      <div class=\"zl-form-inner\">\n        <div class=\"zl-form-title\">Where do we send it?<\/div>\n        <input id=\"zl-fname\"    class=\"zl-field\" type=\"text\"  placeholder=\"Full name\"           oninput=\"checkSubmit()\">\n        <input id=\"zl-email\"    class=\"zl-field\" type=\"email\" placeholder=\"Email address\"       oninput=\"checkSubmit()\">\n        <input id=\"zl-phone\"    class=\"zl-field\" type=\"tel\"   placeholder=\"Phone \/ WhatsApp\"    oninput=\"checkSubmit()\">\n        <input id=\"zl-zipcode\"  class=\"zl-field\" type=\"text\"  placeholder=\"Your postcode (e.g. 5972)\" inputmode=\"numeric\" maxlength=\"4\" oninput=\"this.value=this.value.replace(\/\\D\/g,'');checkSubmit()\">\n        <div id=\"zl-zip-error\" style=\"display:none;color:#FF5C0B;font-size:12px;margin:-8px 0 8px;padding:0 4px\">This postcode doesn't match the property location. Please check and try again.<\/div>\n        <input id=\"zl-form-url\" class=\"zl-field\" type=\"url\"   placeholder=\"Your listing link (if you have one)\">\n        <label style=\"display:flex;align-items:flex-start;gap:10px;cursor:pointer;padding:12px 0 4px\">\n          <input id=\"zl-tc\" type=\"checkbox\" onchange=\"checkSubmit()\" style=\"margin-top:3px;accent-color:#FF5C0B;width:15px;height:15px;flex-shrink:0\">\n          <span style=\"font-size:12px;font-weight:300;color:#777470;line-height:1.6\">I confirm this is my property and I take responsibility for the information submitted. I agree to be contacted by zeas.immo regarding this report. <span style=\"color:#555550\">[Full T&amp;C \u2014 wording to be finalised]<\/span><\/span>\n        <\/label>\n        <button id=\"zl-submit\" class=\"zl-btn-primary\" disabled onclick=\"submitLead()\" style=\"width:100%;justify-content:center;margin-top:12px\">\n          <span>Send me the honest audit<\/span>\n          <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg>\n        <\/button>\n      <\/div>\n    <\/div>\n\n  <\/div><!-- \/zl-results -->\n<\/div><!-- \/step 2 -->\n\n\n<!-- \u2550\u2550 STEP 3 \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"zl-3\" class=\"zl-step\">\n  <div class=\"zl-ty\">\n    <div class=\"zl-tick\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" stroke-width=\"2.5\" stroke-linecap=\"round\" width=\"22\" height=\"22\"><path d=\"M5 13l4 4L19 7\"\/><\/svg>\n    <\/div>\n    <div style=\"font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#FF5C0B;margin-bottom:14px;display:flex;align-items:center;gap:10px\">\n      <span style=\"width:20px;height:1px;background:#FF5C0B;display:inline-block\"><\/span>\n      Report requested\n      <span style=\"width:20px;height:1px;background:#FF5C0B;display:inline-block\"><\/span>\n    <\/div>\n    <h2 style=\"font-size:clamp(26px,3.5vw,40px);font-weight:500;letter-spacing:-.02em;color:#F2F0EA;margin-bottom:12px\">We'll be in touch within 24 hours.<\/h2>\n    <p style=\"font-size:15px;font-weight:300;color:#777470;max-width:420px;line-height:1.75;text-align:center\">\n      We'll review your listing and send you an honest assessment \u2014 what the data says, what the presentation says, and what to do about it.\n    <\/p>\n    <a href=\"https:\/\/zeas.immo\" class=\"zl-btn-ghost\" style=\"margin-top:24px\">Return to zeas.immo \u2192<\/a>\n  <\/div>\n<\/div>\n\n<\/div><!-- #zl -->\n\n\n<script>\n(function(){\n  const API = '\/listing-api.php';\n  const S   = { mode:null, listing:null, stats:null, commune:'', ptype:'', agency:'' };\n\n  \/\/ Intro animations\n  setTimeout(()=>document.getElementById('iq1').classList.add('visible'), 350);\n  setTimeout(()=>document.getElementById('iq2').classList.add('visible'), 950);\n  setTimeout(()=>document.getElementById('iq3').classList.add('visible'), 1550);\n\n  \/\/ Navigation\n  window.goTo = function(n){\n    document.querySelectorAll('.zl-step').forEach(e=>e.classList.remove('active'));\n    document.getElementById('zl-'+n).classList.add('active');\n    window.scrollTo(0,0);\n  };\n\n  \/\/ Mode\n  window.setMode = function(m){\n    S.mode=m;\n    document.getElementById('btn-agency').classList.toggle('selected',m==='agency');\n    document.getElementById('btn-fsbo').classList.toggle('selected',m==='fsbo');\n    if(m==='agency'){\n      document.getElementById('zl-portal-q').classList.remove('show');\n      buildInput(true,false);\n      show('zl-input-section');\n    } else {\n      document.getElementById('zl-input-section').classList.remove('show');\n      ['btn-portal-yes','btn-portal-no'].forEach(id=>document.getElementById(id).classList.remove('selected'));\n      show('zl-portal-q');\n    }\n    checkReady();\n  };\n\n  window.showManualFallback=function(){\n    buildInput(true,true); checkReady();\n  };\n\n  window.setPortal=function(has){\n    document.getElementById('btn-portal-yes').classList.toggle('selected',has);\n    document.getElementById('btn-portal-no').classList.toggle('selected',!has);\n    buildInput(has,true);\n    show('zl-input-section');\n    checkReady();\n  };\n\n  function show(id){\n    const el=document.getElementById(id);\n    el.classList.add('show');\n    setTimeout(()=>el.scrollIntoView({behavior:'smooth',block:'start'}),100);\n  }\n\n  \/\/ Build input section dynamically\n  function buildInput(showURL, showManual){\n    const isAgency=S.mode==='agency';\n    const sec=document.getElementById('zl-input-section');\n    const urlHtml=showURL?`\n      <div class=\"zl-url-bar\">\n        <input id=\"zl-url\" class=\"zl-url-inp\" type=\"url\" placeholder=\"Paste your athome.lu or immotop.lu listing link\u2026\" oninput=\"checkReady()\">\n        <button id=\"zl-url-go\" class=\"zl-url-go\" disabled onclick=\"analyse()\">\n          Analyse\n          <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg>\n        <\/button>\n      <\/div>\n      <div class=\"zl-or\">${!showManual?`Don't have the link? <span onclick=\"showManualFallback()\" style=\"color:#FF5C0B;cursor:pointer;text-decoration:underline;text-underline-offset:3px\">Select manually \u2192<\/span>`:'or select manually'}<\/div>\n    `:'';\n    const manualHtml=showManual?`\n      <div class=\"zl-manual-grid\">\n        <select id=\"zl-commune\" class=\"zl-sel\" onchange=\"checkReady()\">\n          <option value=\"\">Commune<\/option>\n          <option>Hesperange<\/option><option>Luxembourg<\/option><option>Esch-sur-Alzette<\/option>\n          <option>Differdange<\/option><option>Dudelange<\/option><option>P\u00e9tange<\/option>\n          <option>Sanem<\/option><option>Bettembourg<\/option><option>Schifflange<\/option><option>K\u00e4erjeng<\/option>\n        <\/select>\n        <select id=\"zl-ptype\" class=\"zl-sel\" onchange=\"checkReady()\">\n          <option value=\"\">Type<\/option>\n          <option value=\"apartment\">Apartment<\/option><option value=\"house\">House<\/option>\n        <\/select>\n        <select id=\"zl-rooms\" class=\"zl-sel\" onchange=\"checkReady()\">\n          <option value=\"\">Rooms<\/option>\n          <option>1<\/option><option>2<\/option><option>3<\/option><option>4<\/option><option>5<\/option><option value=\"6\">6+<\/option>\n        <\/select>\n      <\/div>\n      <button id=\"zl-manual-go\" class=\"zl-manual-go\" disabled onclick=\"analyse()\">\n        Show me the picture\n        <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg>\n      <\/button>\n    `:'';\n    sec.innerHTML=`\n      <div class=\"zl-input-eyebrow\">${isAgency?'Selling with an agency \u00b7 Find your listing':'Private sale \u00b7 Market analysis'}<\/div>\n      <div class=\"zl-input-title\">${showURL?'Paste your listing link':'Tell us about your property'}<\/div>\n      <div class=\"zl-input-sub\">${showURL?(isAgency?'We\\'ll identify your agency and show you what the data reveals about their focus on your property.':'Paste your listing link below or select your details manually.'):'Select your commune, property type and number of rooms.'}<\/div>\n      ${urlHtml}${manualHtml}\n    `;\n    const u=document.getElementById('zl-url');\n    if(u) u.addEventListener('input',checkReady);\n  }\n\n  \/\/ Button readiness\n  window.checkReady=function(){\n    const url=(document.getElementById('zl-url')||{value:''}).value.trim();\n    const c=(document.getElementById('zl-commune')||{value:''}).value;\n    const p=(document.getElementById('zl-ptype')||{value:''}).value;\n    const r=(document.getElementById('zl-rooms')||{value:''}).value;\n    const ok=url.length>12||(c&&p&&r);\n    ['zl-url-go','zl-manual-go'].forEach(id=>{const el=document.getElementById(id);if(el)el.disabled=!ok;});\n  };\n\n  window.checkSubmit=function(){\n    const tc=document.getElementById('zl-tc');\n    const ok=['zl-fname','zl-email','zl-phone','zl-zipcode'].every(id=>document.getElementById(id).value.trim()) && (tc&&tc.checked);\n    document.getElementById('zl-submit').disabled=!ok;\n  };\n\n  \/\/ API\n  async function post(body){\n    const ctrl=new AbortController();\n    const t=setTimeout(()=>ctrl.abort(),12000);\n    try{\n      const r=await fetch(API,{method:'POST',headers:{'Content-Type':'application\/json'},body:JSON.stringify(body),signal:ctrl.signal});\n      clearTimeout(t);\n      return r.json();\n    }catch(e){clearTimeout(t);throw e;}\n  }\n\n  function animateCount(el,target,delay){\n    setTimeout(()=>{\n      const dur=1800,t0=Date.now();\n      const tick=()=>{\n        const p=Math.min((Date.now()-t0)\/dur,1),e=1-Math.pow(1-p,4);\n        el.textContent=Math.round(e*target).toLocaleString('fr-LU');\n        if(p<1)requestAnimationFrame(tick);\n      };\n      requestAnimationFrame(tick);\n    },delay);\n  }\n\n  \/\/ Analyse\n  window.analyse=async function(){\n    const urlEl=document.getElementById('zl-url');\n    const url=urlEl?urlEl.value.trim():'';\n    const c=(document.getElementById('zl-commune')||{value:''}).value;\n    const p=(document.getElementById('zl-ptype')||{value:''}).value;\n    const r=(document.getElementById('zl-rooms')||{value:''}).value;\n\n    goTo(2);\n    const load=document.getElementById('zl-loading');\n    load.classList.remove('hidden');\n    document.getElementById('zl-results').style.display='none';\n\n    try{\n      let listing=null;\n      if(url){\n        try{const res=await post({action:'lookup',url});if(res.ok){listing=res.data;S.listing=listing;}}\n        catch(e){\/* proceed to manual *\/}\n      }\n      S.commune  =listing?listing.commune:c;\n      S.ptype    =listing?listing.property_type:p;\n      S.agency   =(S.mode==='agency'&&listing)?listing.agency_norm:'';\n\n      \/\/ Pre-fill listing URL in form\n      const formUrl=document.getElementById('zl-form-url');\n      if(formUrl&&url) formUrl.value=url;\n\n      const st=await post({\n        action:'stats', commune:S.commune, property_type:S.ptype, agency_norm:S.agency||null,\n        surface_m2: listing?listing.surface_m2:null,\n        bedrooms:   listing?listing.bedrooms:(r||null),\n      });\n      load.classList.add('hidden');\n\n      if(!S.commune||!S.ptype){\n        goTo(1);\n        buildInput(true,true);\n        const sec=document.getElementById('zl-input-section');\n        const note=document.createElement('div');\n        note.style.cssText='background:rgba(255,92,11,.08);border-left:3px solid #FF5C0B;padding:14px 18px;margin-bottom:24px;font-size:14px;color:#C8C6C0;line-height:1.6';\n        note.innerHTML='We couldn\\'t find that listing in our database \u2014 it may have been added after our last weekly update. Select your <strong style=\"color:#F2F0EA\">commune, type and rooms<\/strong> below.';\n        sec.insertBefore(note,sec.firstChild);\n        sec.classList.add('show');\n        setTimeout(()=>sec.scrollIntoView({behavior:'smooth',block:'start'}),100);\n        return;\n      }\n\n      if(!st||!st.ok){\n        document.getElementById('zl-results').innerHTML='<div style=\"padding:48px 56px;font-size:15px;font-weight:300;color:#888880;line-height:1.7\">'\n          +(st&&st.message==='DB connection failed'?'Database connection failed. Please ensure listing-api.php has the correct DB credentials.':'Could not load market data for this area. Please try again.')\n          +'<br><br><button onclick=\"goTo(1)\" style=\"background:#FF5C0B;color:#fff;border:none;padding:12px 24px;font-family:Poppins,sans-serif;font-size:13px;font-weight:500;cursor:pointer\">\u2190 Try again<\/button><\/div>';\n        document.getElementById('zl-results').style.display='block';\n        return;\n      }\n\n      S.stats=st.data;\n      render(listing,st.data);\n\n    }catch(e){\n      load.classList.add('hidden');\n      document.getElementById('zl-results').innerHTML='<div style=\"padding:48px 56px;font-size:15px;font-weight:300;color:#888880;line-height:1.7\">'\n        +(e.name==='AbortError'?'The request timed out. Please check your connection.':'Could not connect to the analysis server. Please ensure listing-api.php is deployed.')\n        +'<br><br><button onclick=\"goTo(1)\" style=\"background:#FF5C0B;color:#fff;border:none;padding:12px 24px;font-family:Poppins,sans-serif;font-size:13px;font-weight:500;cursor:pointer\">\u2190 Try again<\/button><\/div>';\n      document.getElementById('zl-results').style.display='block';\n    }\n  };\n\n  \/\/ Render Step 2\n  function render(listing,stats){\n    const commune =S.commune||'your commune';\n    const ptype   =S.ptype||'property';\n    const isAgency=S.mode==='agency';\n    const sev     =stats.agency_attention_severity||'neutral';\n    const T       =stats.agency_commune_threshold||5;\n\n    const olc=document.getElementById('ol-commune'); if(olc) olc.textContent=commune;\n    const q2c=document.getElementById('q2-commune'); if(q2c) q2c.textContent=commune;\n\n    \/\/ Agency path but no agency_norm in DB \u2014 skip F1, show competition only\n    if(isAgency && listing && !listing.agency_norm){\n      renderDuo(listing, stats, commune, ptype, false, sev, T);\n      return;\n    }\n    \/\/ Agency manual path (no listing) \u2014 show competition with note\n    if(isAgency && !listing){\n      document.getElementById('zl-results').style.display='block';\n      const note=document.createElement('div');\n      note.style.cssText='text-align:center;padding:8px 56px 32px;font-size:13px;font-weight:300;color:#555552;line-height:1.6';\n      note.innerHTML='Listing not found in our database \u2014 showing market overview for '+commune+'.';\n      document.getElementById('zl-duo').insertBefore(note, document.getElementById('zl-duo').firstChild);\n      renderDuo(null,stats,commune,ptype,false,'neutral',T);\n      return;\n    }\n    renderDuo(listing,stats,commune,ptype,isAgency,sev,T);\n  }\n\n  \/\/ Agency fallback: listing found but no agency_norm in DB\n  let _duoOriginalHTML = null; \/\/ saved before agency selector overwrites zl-duo\n  async function showAgencyFallback(commune, ptype, stats){\n    document.getElementById('zl-results').style.display='block';\n    const duo = document.getElementById('zl-duo');\n    _duoOriginalHTML = duo.innerHTML; \/\/ save so confirmAgency can restore it\n    duo.innerHTML=`\n      <div class=\"zl-duo-agency\">Listing found in <strong>${commune}<\/strong><\/div>\n      <div style=\"max-width:560px;margin:0 auto;text-align:center;padding:32px 0 48px\">\n        <div style=\"font-size:14px;font-weight:600;letter-spacing:-.01em;color:#F2F0EA;margin-bottom:10px\">Which agency is your listing with?<\/div>\n        <div style=\"font-size:14px;font-weight:300;color:#888880;margin-bottom:28px;line-height:1.6\">We found your listing but couldn't identify the agency automatically. Select yours below.<\/div>\n        <div style=\"display:flex;gap:8px;justify-content:center;flex-wrap:wrap;max-width:640px;margin:0 auto\" id=\"agency-sel-wrap\">\n          <div class=\"zl-spin\" style=\"margin:16px auto\"><\/div>\n        <\/div>\n        <button id=\"agency-confirm\" onclick=\"confirmAgency('${commune}','${ptype}')\"\n          style=\"display:none;margin-top:24px;background:#FF5C0B;color:#fff;border:none;padding:14px 40px;font-family:Poppins,sans-serif;font-size:14px;font-weight:500;letter-spacing:.05em;cursor:pointer\">\n          Show me their portfolio \u2192\n        <\/button>\n        <div style=\"margin-top:16px\">\n          <span onclick=\"skipAgency('${commune}','${ptype}')\"\n            style=\"font-size:12px;color:#444440;cursor:pointer;text-decoration:underline;text-underline-offset:3px\">\n            Skip \u2014 just show me the market competition\n          <\/span>\n        <\/div>\n      <\/div>`;\n\n    try{\n      const res=await post({action:'agencies',commune,property_type:ptype});\n      const wrap=document.getElementById('agency-sel-wrap');\n      if(res.ok&&res.data.agencies&&res.data.agencies.length){\n        wrap.innerHTML=res.data.agencies.slice(0,24).map(a=>\n          `<button onclick=\"pickAgency(this,'${a.replace(\/'\/g,\"\\'\")}')\"\n            style=\"background:transparent;border:1px solid #2C2C2A;color:#888880;padding:9px 16px;font-size:13px;font-family:'Helvetica Neue',sans-serif;cursor:pointer;transition:all .18s;white-space:nowrap\">${a}<\/button>`\n        ).join('');\n      } else {\n        wrap.innerHTML='<span style=\"font-size:13px;color:#888880\">No agencies found.<\/span>';\n      }\n    }catch(e){\n      document.getElementById('agency-sel-wrap').innerHTML='<span style=\"font-size:13px;color:#888880\">Could not load agency list.<\/span>';\n    }\n  }\n\n  window.skipAgency=function(commune,ptype){\n    \/\/ Restore duo structure then render competition numbers only\n    const duo=document.getElementById('zl-duo');\n    if(_duoOriginalHTML) duo.innerHTML=_duoOriginalHTML;\n    renderDuo(null,S.stats,commune,ptype,false,'neutral',\n      (S.stats&&S.stats.agency_commune_threshold)||5);\n  };\n\n  window.pickAgency=function(btn,name){\n    document.querySelectorAll('#agency-sel-wrap button').forEach(b=>{\n      b.style.background='transparent';b.style.borderColor='#2C2C2A';b.style.color='#888880';\n    });\n    btn.style.background='rgba(255,92,11,.1)';\n    btn.style.borderColor='#FF5C0B';\n    btn.style.color='#F2F0EA';\n    S.agency=name;\n    const cb=document.getElementById('agency-confirm');\n    if(cb)cb.style.display='inline-block';\n  };\n\n  window.confirmAgency=async function(commune,ptype){\n    if(!S.agency)return;\n    const btn=document.getElementById('agency-confirm');\n    if(btn){btn.disabled=true;btn.textContent='Loading\u2026';}\n    try{\n      const l=S.listing||{};\n      const st=await post({\n        action:'stats', commune, property_type:ptype, agency_norm:S.agency,\n        surface_m2: l.surface_m2||null,\n        bedrooms:   l.bedrooms||null,\n      });\n      if(st&&st.ok){\n        S.stats=st.data;\n        \/\/ Restore original duo DOM structure before renderDuo writes to it\n        const duo=document.getElementById('zl-duo');\n        if(_duoOriginalHTML) duo.innerHTML=_duoOriginalHTML;\n        const fakeL=Object.assign({},S.listing||{},{agency_norm:S.agency});\n        renderDuo(fakeL,st.data,commune,ptype,true,\n          st.data.agency_attention_severity||'neutral',\n          st.data.agency_commune_threshold||5);\n      }\n    }catch(e){if(btn){btn.disabled=false;btn.textContent='Show me their portfolio \u2192';}}\n  };\n\n  \/\/ Singular\/plural helper\n  function plu(n, singular){ return n===1 ? singular : singular+'s'; }\n\n  \/\/ Core render: two-number hero + competition section + scroll reveals\n  function renderDuo(listing,stats,commune,ptype,isAgency,sev,T){\n    const leftEl  =document.getElementById('zl-num-left');\n    const rightEl =document.getElementById('zl-num-right');\n    const lblLeft =document.getElementById('zl-lbl-left');\n    const lblRight=document.getElementById('zl-lbl-right');\n    const agencyEl=document.getElementById('zl-duo-agency');\n    const burnEl  =document.getElementById('zl-burning-q-text');\n    const sepEl   =document.getElementById('zl-duo-sep-txt');\n\n    \/\/ \u2500\u2500 Finding 01: Agency (top section) \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\n    if(isAgency&&stats.agency_commune_same_type!==null&&stats.agency_commune_same_type!==undefined){\n      const sc=stats.agency_commune_same_type, total=stats.agency_total||0;\n      leftEl.dataset.count=sc; rightEl.dataset.count=total;\n      leftEl.textContent='0'; rightEl.textContent='0';\n      leftEl.classList.add('alarm'); \/\/ always orange for consistency\n      if(lblLeft) lblLeft.textContent=plu(sc,ptype)+' listed by your agency in '+commune;\n      if(lblRight)lblRight.textContent=plu(total,'listing')+' across Luxembourg';\n      if(sepEl)   sepEl.textContent='out of';\n      const qMap={neutral:'The focus is there \u2014 but is it translating into results?',mild:'Is your listing getting its fair share of attention?',high:'Do you think they are focused on your property?',critical:'Do you think they are focused on your property?'};\n      if(burnEl)burnEl.textContent=qMap[sev]||qMap.high;\n    } else {\n      \/\/ FSBO or no agency \u2014 hide Finding 01, start with competition\n      const f1=document.getElementById('zl-duo');\n      if(f1) f1.style.display='none';\n    }\n\n    \/\/ \u2500\u2500 Finding 02: Competition \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\n    const sc =stats.similar_commune||0;\n    const sal=stats.similar_all||0;\n    const totC=stats.total_commune||0;\n    const totA=stats.total_all||0;\n    const compLeftEl  =document.getElementById('zl-comp-left');\n    const compRightEl =document.getElementById('zl-comp-right');\n    const compLblLeft =document.getElementById('zl-comp-lbl-left');\n    const compLblRight=document.getElementById('zl-comp-lbl-right');\n    const compPctLeft =document.getElementById('zl-comp-pct-left');\n    const compPctRight=document.getElementById('zl-comp-pct-right');\n    const compAgEl    =document.getElementById('zl-f2-agency');\n    const compQEl     =document.getElementById('zl-comp-q');\n\n    if(compLeftEl){\n      compLeftEl.dataset.count =sc;\n      compRightEl.dataset.count=sal;\n      compLeftEl.textContent   ='0';\n      compRightEl.textContent  ='0';\n      compLeftEl.classList.add('alarm');\n      if(compLblLeft) compLblLeft.textContent ='competing with yours in '+commune;\n      if(compLblRight)compLblRight.textContent='competing with yours across Luxembourg';\n      if(compPctLeft) compPctLeft.textContent = totC>0 ? Math.round(100*sc\/totC)+'% of the local market matches yours' : '';\n      if(compPctRight)compPctRight.textContent= totA>0 ? 'and '+Math.round(100*sal\/totA)+'% of the national market does too' : '';\n      if(compQEl)compQEl.textContent='Do you think your price is competitive in '+commune+'?';\n      animateCount(compLeftEl, sc,  300);\n      animateCount(compRightEl,sal, 700);\n    }\n\n    \/\/ Update q2-commune reference in text section\n    const q2c=document.getElementById('q2-commune'); if(q2c) q2c.textContent=commune;\n\n    animateCount(leftEl, parseInt(leftEl.dataset.count), 200);\n    animateCount(rightEl,parseInt(rightEl.dataset.count),600);\n    document.getElementById('zl-results').style.display='block';\n\n    const io=new IntersectionObserver((entries)=>{\n      entries.forEach(e=>{if(e.isIntersecting){e.target.classList.add('visible');io.unobserve(e.target);}});\n    },{threshold:0.18,rootMargin:'0px 0px -40px 0px'});\n    document.querySelectorAll('.zl-reveal').forEach(el=>io.observe(el));\n  }\n\n  \/\/ Form\n  window.openForm=function(){\n    document.getElementById('zl-offer').classList.add('form-open');\n    document.getElementById('zl-offer-btn').style.display='none';\n    const fw=document.getElementById('zl-form-wrap');\n    fw.classList.add('show');\n    setTimeout(()=>fw.scrollIntoView({behavior:'smooth',block:'start'}),100);\n  };\n\n  window.submitLead=async function(){\n    const btn=document.getElementById('zl-submit');\n    btn.disabled=true; btn.querySelector('span').textContent='Sending\u2026';\n    const l=S.listing||{}, st=S.stats||{};\n    const formUrl=document.getElementById('zl-form-url');\n    const listingUrl=formUrl?formUrl.value.trim():((document.getElementById('zl-url')||{value:''}).value.trim());\n    const fullName = document.getElementById('zl-fname').value.trim();\n    const email    = document.getElementById('zl-email').value.trim();\n    const phone    = document.getElementById('zl-phone').value.trim();\n    const zipcode  = document.getElementById('zl-zipcode').value.trim();\n    const zipErr   = document.getElementById('zl-zip-error');\n\n    \/\/ Step 1: validate zipcode against commune\n    try{\n      const zr = await fetch(API,{\n        method:'POST', headers:{'Content-Type':'application\/json'},\n        body:JSON.stringify({action:'validate_zipcode', zipcode, commune:S.commune}),\n      });\n      const zd = await zr.json();\n      if(zd.ok && zd.data && zd.data.valid === false){\n        if(zipErr) zipErr.style.display='block';\n        btn.disabled=false;\n        btn.querySelector('span').textContent='Send me the honest audit';\n        return;\n      }\n      if(zipErr) zipErr.style.display='none';\n    }catch(e){ \/* on error, allow through *\/ }\n\n    \/\/ Step 2: send lead via zeas-proxy\n    try{\n      const res = await fetch('\/zeas-proxy.php?action=listing_analysis_lead',{\n        method:'POST',\n        headers:{'Content-Type':'application\/json'},\n        body:JSON.stringify({\n          full_name:    fullName,\n          email:        email,\n          phone:        phone,\n          zipcode:      zipcode,\n          listing_url:  listingUrl,\n          commune:      S.commune,\n          property_type:S.ptype,\n          seller_mode:  S.mode||'agency',\n          agency_norm:  l.agency_norm||'',\n          agency_total:             st.agency_total||0,\n          agency_commune_same_type: st.agency_commune_same_type||0,\n          similar_commune:          st.similar_commune||0,\n          similar_all:              st.similar_all||0,\n          week_label:               l.week_label||'',\n        }),\n      });\n      const data = await res.json();\n      if(!data.success){\n        btn.disabled=false;\n        btn.querySelector('span').textContent='Send me the honest audit';\n        alert('Error: '+(data.error||'Something went wrong. Please try again.'));\n        return;\n      }\n      const fw=document.getElementById('zl-form-wrap');\n      fw.innerHTML='<div style=\"text-align:center;padding:64px 40px 80px\">'\n        +'<div style=\"width:52px;height:52px;border-radius:50%;background:rgba(255,92,11,.12);display:flex;align-items:center;justify-content:center;margin:0 auto 24px\">'\n        +'<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#FF5C0B\" stroke-width=\"2\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div>'\n        +'<h3 style=\"font-size:clamp(22px,3vw,32px);font-weight:500;color:#F2F0EA;margin:0 0 16px;letter-spacing:-.02em\">We are on it.<\/h3>'\n        +'<p style=\"font-size:clamp(16px,2vw,22px);font-weight:300;color:#F2F0EA;line-height:1.5;margin:0 auto\">'\n        +'Your property. <span style=\"color:#FF5C0B\">our obsession.<\/span><\/p>'\n        +'<\/div>';\n      fw.classList.add('show');\n      setTimeout(()=>fw.scrollIntoView({behavior:'smooth',block:'start'}),100);\n    }catch(e){\n      btn.disabled=false;\n      btn.querySelector('span').textContent='Send me the honest audit';\n      alert('Connection error. Please try again.');\n    }\n  };\n\n})();\n<\/script>\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>Why is my property not selling? Free market analysis for Luxembourg sellers. Why is my property not selling? \u2192 Is your sale your agent&#8217;s top priority? \u2192 How competitive is your price? \u2192 Would you click on your own listing? Selling with an agency My property is listed with an estate agent Selling on my [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-50708","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/pages\/50708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/comments?post=50708"}],"version-history":[{"count":3,"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/pages\/50708\/revisions"}],"predecessor-version":[{"id":50848,"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/pages\/50708\/revisions\/50848"}],"wp:attachment":[{"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/media?parent=50708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}