{"id":14,"date":"2026-06-25T22:38:14","date_gmt":"2026-06-25T22:38:14","guid":{"rendered":"https:\/\/geoestate.net\/?page_id=14"},"modified":"2026-07-10T00:11:29","modified_gmt":"2026-07-10T00:11:29","slug":"elementor-14","status":"publish","type":"page","link":"https:\/\/geoestate.net\/","title":{"rendered":"gestate v.1"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"14\" class=\"elementor elementor-14\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ed00c03 e-con e-atomic-element e-flexbox-base e-9b036af \" data-id=\"ed00c03\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"ed00c03\" data-e-type=\"e-flexbox\" data-id=\"ed00c03\">\n    \t\t<div class=\"elementor-element elementor-element-fdbea9e elementor-widget elementor-widget-html\" data-id=\"fdbea9e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>GeoEstate \u2014 Investment Intelligence<\/title>\n<link rel=\"preload\" as=\"image\" href=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-laptop.png\">\n<link rel=\"preload\" as=\"image\" href=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-mobile.png\" media=\"(max-width:640px)\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,400;0,9..144,500;0,9..144,600;1,9..144,400;1,9..144,500&family=Inter:wght@300;400;500;600&display=swap\" rel=\"stylesheet\">\n<style>\n#geoestate-app{position:relative;width:100%;margin:0;font-family:'Inter',system-ui,-apple-system,sans-serif;isolation:isolate;}\n#geoestate-app *{box-sizing:border-box;}\n#geoestate-app .geo-phase{display:none;}\n#geoestate-app .geo-phase.is-current{display:block;}\n\n#scr-a{\n  --bg-base:#0A1424;\n  --bg-raised:#0E1B30;\n  --bg-well:#070E1A;\n  --gold:#C6A664;\n  --gold-bright:#E4C87F;\n  --gold-deep:#9C7C43;\n  --ivory:#F4F1E8;\n  --body:#C8CEDA;\n  --muted:#8A93A6;\n  --line-gold:rgba(198,166,100,.18);\n  --glass:rgba(14,27,48,.55);\n  --shadow:0 40px 120px -40px rgba(0,0,0,.8);\n  --ease:cubic-bezier(.22,.61,.36,1);\n\n  position:relative;\n  width:100%;\n  min-height:100vh;\n  min-height:100dvh;\n  margin:0;\n  background:var(--bg-base);\n  color:var(--body);\n  font-family:'Inter',system-ui,-apple-system,sans-serif;\n  font-size:16px;\n  line-height:1.5;\n  -webkit-font-smoothing:antialiased;\n  overflow:hidden;\n  isolation:isolate;\n}\n#geoestate-app *{box-sizing:border-box;margin:0;padding:0;}\n#geoestate-app button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}\n#geoestate-app input{font-family:inherit;}\n\n\/* ============ ATMOSPHERE ============ *\/\n#geoestate-app .ge-atmos{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;}\n#geoestate-app .ge-atmos::before{\n  content:\"\";position:absolute;inset:0;\n  background:\n    radial-gradient(120% 90% at 50% -10%, rgba(198,166,100,.10), transparent 55%),\n    radial-gradient(90% 70% at 80% 110%, rgba(30,58,110,.30), transparent 60%),\n    linear-gradient(180deg, #0B1626 0%, #0A1424 45%, #070E1A 100%);\n}\n#geoestate-app .ge-vignette{\n  position:absolute;inset:0;\n  box-shadow:inset 0 0 260px 40px rgba(0,0,0,.65);\n}\n#geoestate-app .ge-grain{\n  position:absolute;inset:0;opacity:.035;mix-blend-mode:overlay;\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(#n)'\/%3E%3C\/svg%3E\");\n}\n\n\/* animated gold data lines *\/\n#geoestate-app .ge-lines{position:absolute;inset:0;overflow:hidden;}\n#geoestate-app .ge-vline{\n  position:absolute;top:0;bottom:0;width:1px;\n  background:linear-gradient(180deg,transparent,var(--line-gold) 30%,var(--line-gold) 70%,transparent);\n}\n#geoestate-app .ge-vline .ge-pulse{\n  position:absolute;left:-1px;width:3px;height:130px;\n  background:linear-gradient(180deg,transparent,var(--gold-bright),transparent);\n  filter:blur(1px);opacity:.6;\n  animation:ge-drop 7s linear infinite;\n}\n@keyframes ge-drop{\n  0%{transform:translateY(-160px);opacity:0;}\n  10%{opacity:.7;}\n  90%{opacity:.7;}\n  100%{transform:translateY(105vh);opacity:0;}\n}\n\n\/* Dubai skyline silhouette *\/\n#geoestate-app .ge-skyline{\n  position:absolute;left:0;right:0;bottom:0;height:46vh;\n  opacity:.5;pointer-events:none;\n  mask-image:linear-gradient(180deg,transparent,#000 60%);\n  -webkit-mask-image:linear-gradient(180deg,transparent,#000 60%);\n}\n#geoestate-app .ge-skyline svg{display:block;width:100%;height:100%;}\n\n\/* ============ STAGE \/ SCREENS ============ *\/\n#geoestate-app .ge-stage{position:relative;z-index:2;width:100%;min-height:100vh;min-height:100dvh;}\n#geoestate-app .ge-screen{\n  position:absolute;inset:0;\n  display:flex;flex-direction:column;\n  padding:48px;\n  opacity:0;visibility:hidden;\n  transform:translateY(18px) scale(.994);\n  transition:opacity .5s var(--ease),transform .55s var(--ease),visibility .5s;\n}\n#geoestate-app .ge-screen.is-active{opacity:1;visibility:visible;transform:none;}\n\n\/* brand mark *\/\n#geoestate-app .ge-brand{display:flex;align-items:center;gap:12px;}\n#geoestate-app .ge-brand .ge-diamond{\n  width:22px;height:22px;transform:rotate(45deg);\n  border:1px solid var(--gold);position:relative;\n}\n#geoestate-app .ge-brand .ge-diamond::after{\n  content:\"\";position:absolute;inset:5px;background:var(--gold);opacity:.85;\n}\n#geoestate-app .ge-brand .ge-wordmark{\n  font-family:'Fraunces',serif;font-weight:400;font-size:19px;letter-spacing:.28em;\n  color:var(--ivory);text-transform:uppercase;padding-left:2px;\n}\n#geoestate-app .ge-brand .ge-wordmark b{color:var(--gold);font-weight:400;}\n\n\/* ============ SCREEN 1 \u2014 LANDING ============ *\/\n#geoestate-app #ge-landing{justify-content:space-between;}\n#geoestate-app .ge-top{display:flex;justify-content:space-between;align-items:center;}\n#geoestate-app .ge-top .ge-locale{\n  font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--muted);\n}\n#geoestate-app .ge-hero{\n  max-width:860px;margin:auto 0;padding-bottom:2vh;\n}\n#geoestate-app .ge-eyebrow{\n  display:inline-flex;align-items:center;gap:14px;\n  font-size:11px;letter-spacing:.42em;text-transform:uppercase;color:var(--gold);\n  margin-bottom:34px;\n}\n#geoestate-app .ge-eyebrow::before{\n  content:\"\";width:46px;height:1px;background:linear-gradient(90deg,var(--gold),transparent);\n}\n#geoestate-app .ge-h1{\n  font-family:'Fraunces',serif;font-weight:300;\n  font-size:clamp(44px,6.6vw,104px);line-height:.98;letter-spacing:-.015em;\n  color:var(--ivory);text-wrap:balance;\n}\n#geoestate-app .ge-h1 em{font-style:italic;color:var(--gold-bright);font-weight:400;}\n#geoestate-app .ge-lead{\n  margin-top:34px;max-width:520px;font-size:17px;line-height:1.65;color:var(--body);font-weight:300;\n}\n#geoestate-app .ge-cta-row{margin-top:52px;display:flex;align-items:center;gap:28px;flex-wrap:wrap;}\n#geoestate-app .ge-scroll-note{font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--muted);}\n\n\/* ============ BUTTONS ============ *\/\n#geoestate-app .ge-btn{\n  display:inline-flex;align-items:center;gap:14px;\n  font-size:13px;letter-spacing:.16em;text-transform:uppercase;font-weight:500;\n  border-radius:999px;padding:19px 38px;\n  transition:transform .35s var(--ease),box-shadow .35s var(--ease),background .35s var(--ease),color .35s var(--ease);\n  will-change:transform;\n}\n#geoestate-app .ge-btn .ge-arrow{\n  width:18px;height:18px;position:relative;transition:transform .35s var(--ease);\n}\n#geoestate-app .ge-btn .ge-arrow::before{\n  content:\"\";position:absolute;top:50%;left:0;width:100%;height:1.4px;background:currentColor;transform:translateY(-50%);\n}\n#geoestate-app .ge-btn .ge-arrow::after{\n  content:\"\";position:absolute;top:50%;right:0;width:7px;height:7px;\n  border-top:1.4px solid currentColor;border-right:1.4px solid currentColor;\n  transform:translateY(-50%) rotate(45deg);\n}\n#geoestate-app .ge-btn:hover .ge-arrow{transform:translateX(5px);}\n\n#geoestate-app .ge-btn--gold{\n  background:linear-gradient(180deg,var(--gold-bright),var(--gold) 55%,var(--gold-deep));\n  color:#231a08;\n  box-shadow:0 14px 40px -14px rgba(198,166,100,.6),inset 0 1px 0 rgba(255,255,255,.35);\n}\n#geoestate-app .ge-btn--gold:hover{\n  transform:translateY(-3px);\n  box-shadow:0 22px 54px -16px rgba(198,166,100,.75),inset 0 1px 0 rgba(255,255,255,.45);\n}\n#geoestate-app .ge-btn--glass{\n  background:var(--glass);color:var(--ivory);\n  border:1px solid var(--line-gold);\n  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);\n}\n#geoestate-app .ge-btn--glass:hover{\n  transform:translateY(-3px);border-color:rgba(198,166,100,.4);\n  background:rgba(20,36,62,.7);\n}\n#geoestate-app .ge-btn:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none;}\n\n\/* ============ SCREEN 2 \u2014 NAME ============ *\/\n#geoestate-app #ge-name{align-items:center;justify-content:center;text-align:center;}\n#geoestate-app .ge-name-inner{width:100%;max-width:640px;}\n#geoestate-app .ge-q-eyebrow{\n  font-size:11px;letter-spacing:.42em;text-transform:uppercase;color:var(--gold);margin-bottom:28px;\n}\n#geoestate-app .ge-q-h{\n  font-family:'Fraunces',serif;font-weight:300;\n  font-size:clamp(34px,4.4vw,58px);line-height:1.08;letter-spacing:-.01em;color:var(--ivory);\n}\n#geoestate-app .ge-q-h em{font-style:italic;color:var(--gold-bright);font-weight:400;}\n#geoestate-app .ge-q-sub{margin-top:22px;font-size:15px;color:var(--muted);font-weight:300;letter-spacing:.01em;}\n#geoestate-app .ge-field{\n  position:relative;margin:56px auto 0;max-width:460px;\n}\n#geoestate-app .ge-field input{\n  width:100%;background:transparent;border:none;outline:none;\n  text-align:center;color:var(--ivory);\n  font-family:'Fraunces',serif;font-weight:300;font-size:30px;letter-spacing:.01em;\n  padding:0 8px 18px;\n}\n#geoestate-app .ge-field input::placeholder{color:rgba(138,147,166,.45);font-style:italic;}\n#geoestate-app .ge-field .ge-underline{\n  height:1px;width:100%;background:var(--line-gold);position:relative;overflow:hidden;\n}\n#geoestate-app .ge-field .ge-underline::after{\n  content:\"\";position:absolute;inset:0;transform:scaleX(0);transform-origin:center;\n  background:linear-gradient(90deg,transparent,var(--gold-bright),transparent);\n  transition:transform .5s var(--ease);\n}\n#geoestate-app .ge-field.is-focus .ge-underline::after{transform:scaleX(1);}\n#geoestate-app .ge-name-nav{margin-top:56px;display:flex;align-items:center;justify-content:center;gap:18px;}\n\n\/* ============ SCREEN 3 \u2014 PRODUCT ============ *\/\n#geoestate-app #ge-product{justify-content:center;}\n#geoestate-app #ge-product .ge-prod-head{text-align:center;max-width:560px;margin:0 auto 6px;}\n#geoestate-app #ge-product .ge-prod-head .ge-q-eyebrow{margin-bottom:14px;}\n#geoestate-app .ge-prod-h{\n  font-family:'Fraunces',serif;font-weight:300;font-size:clamp(26px,3.1vw,40px);\n  line-height:1.1;color:var(--ivory);letter-spacing:-.01em;\n}\n#geoestate-app .ge-prod-h em{font-style:italic;color:var(--gold-bright);font-weight:400;}\n#geoestate-app #ge-product .ge-prod-sub{margin-top:12px;font-size:13px;color:var(--muted);font-weight:300;}\n#geoestate-app #ge-product .ge-grid{\n  margin:30px auto 0;max-width:900px;width:100%;\n  display:grid;grid-template-columns:repeat(2,1fr);gap:18px;\n}\n#geoestate-app #ge-product .ge-card{\n  position:relative;text-align:left;display:flex;flex-direction:column;align-items:flex-start;\n  padding:24px 26px 22px;border-radius:18px;\n  background:linear-gradient(180deg,rgba(18,32,56,.7),rgba(10,20,36,.6));\n  border:1px solid var(--line-gold);\n  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 24px 60px -34px rgba(0,0,0,.8);\n  transition:transform .4s var(--ease),border-color .4s var(--ease),box-shadow .4s var(--ease),background .4s var(--ease);\n  overflow:hidden;\n}\n#geoestate-app #ge-product .ge-card::before{\n  content:\"\";position:absolute;inset:0;border-radius:18px;opacity:0;\n  background:radial-gradient(90% 120% at 20% -10%,rgba(198,166,100,.16),transparent 60%);\n  transition:opacity .4s var(--ease);\n}\n#geoestate-app #ge-product .ge-card:hover{\n  transform:translateY(-5px);border-color:rgba(198,166,100,.42);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 34px 66px -34px rgba(0,0,0,.9),0 0 0 1px rgba(198,166,100,.06);\n}\n#geoestate-app .ge-card:hover::before{opacity:1;}\n#geoestate-app .ge-card.is-selected{\n  border-color:var(--gold);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 0 0 1px rgba(198,166,100,.5),0 26px 60px -26px rgba(198,166,100,.35);\n}\n#geoestate-app .ge-card.is-selected::before{opacity:1;}\n#geoestate-app #ge-product .ge-card-index{\n  position:absolute;top:22px;right:24px;\n  font-family:'Fraunces',serif;font-style:italic;font-size:13px;color:var(--muted);\n}\n#geoestate-app #ge-product .ge-card-icon{\n  display:block;width:36px;height:36px;margin-bottom:16px;color:var(--gold);\n}\n#geoestate-app .ge-card-icon svg{width:100%;height:100%;display:block;}\n#geoestate-app #ge-product .ge-card-title{\n  display:block;font-family:'Fraunces',serif;font-weight:400;font-size:19px;color:var(--ivory);letter-spacing:.005em;\n}\n#geoestate-app #ge-product .ge-card-desc{display:block;margin-top:9px;font-size:13px;line-height:1.5;color:var(--body);font-weight:300;max-width:90%;}\n#geoestate-app #ge-product .ge-card-foot{\n  margin-top:16px;display:flex;align-items:center;gap:10px;\n  font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold);\n  opacity:0;transform:translateX(-6px);transition:opacity .4s var(--ease),transform .4s var(--ease);\n}\n#geoestate-app .ge-card:hover .ge-card-foot,\n#geoestate-app .ge-card.is-selected .ge-card-foot{opacity:1;transform:none;}\n\n@media (max-width:1024px) and (min-width:761px){\n  #geoestate-app #ge-product .ge-grid{max-width:760px;gap:16px;}\n  #geoestate-app #ge-product .ge-card{padding:22px 22px 20px;}\n  #geoestate-app .ge-prod-h{font-size:clamp(24px,3.6vw,34px);}\n}\n\n\/* progress dots *\/\n#geoestate-app .ge-progress{\n  position:absolute;left:50%;bottom:34px;transform:translateX(-50%);z-index:5;\n  display:flex;gap:12px;align-items:center;\n}\n#geoestate-app .ge-dot{width:6px;height:6px;border-radius:50%;background:rgba(198,166,100,.25);transition:all .4s var(--ease);}\n#geoestate-app .ge-dot.on{width:26px;border-radius:3px;background:var(--gold);}\n\n\/* footer legal on landing *\/\n#geoestate-app .ge-foot{display:flex;justify-content:space-between;align-items:flex-end;}\n#geoestate-app .ge-foot .ge-fine{font-size:11px;letter-spacing:.06em;color:var(--muted);max-width:280px;line-height:1.6;}\n\n\/* reveal helper *\/\n#geoestate-app .ge-rise{opacity:0;transform:translateY(16px);}\n#geoestate-app .ge-screen.is-active .ge-rise{opacity:1;transform:none;transition:opacity .7s var(--ease),transform .7s var(--ease);}\n#geoestate-app .ge-screen.is-active .ge-rise{transition-delay:var(--d,0ms);}\n\n@media (max-width:760px){\n  #geoestate-app .ge-screen{padding:28px 22px;}\n  #geoestate-app #ge-product{padding-top:6px;padding-bottom:6px;}\n  #geoestate-app #ge-product .ge-prod-head{max-width:100%;}\n  #geoestate-app .ge-prod-h{font-size:clamp(22px,6.2vw,28px);}\n  #geoestate-app #ge-product .ge-prod-sub{font-size:12.5px;margin-top:8px;}\n  #geoestate-app #ge-product .ge-grid{grid-template-columns:1fr;gap:12px;margin-top:22px;}\n  #geoestate-app #ge-product .ge-card{padding:18px 20px 16px;border-radius:16px;}\n  #geoestate-app #ge-product .ge-card-icon{width:30px;height:30px;margin-bottom:10px;}\n  #geoestate-app #ge-product .ge-card-title{font-size:17px;}\n  #geoestate-app #ge-product .ge-card-desc{font-size:12.5px;margin-top:6px;}\n  #geoestate-app #ge-product .ge-card-index{top:16px;right:18px;font-size:12px;}\n  #geoestate-app .ge-lead{margin-top:24px;}\n  #geoestate-app .ge-cta-row{gap:18px;}\n  #geoestate-app .ge-foot .ge-fine{display:none;}\n}\n@media (prefers-reduced-motion:reduce){\n  #geoestate-app *{animation:none!important;}\n  #geoestate-app .ge-screen,#geoestate-app .ge-rise,#geoestate-app .ge-btn{transition-duration:.001ms!important;}\n}\n\n\n#scr-b{\n  --bg-base:#0A1424; --bg-raised:#0E1B30; --bg-well:#070E1A;\n  --gold:#C6A664; --gold-bright:#E4C87F; --gold-deep:#9C7C43;\n  --ivory:#F4F1E8; --body:#C8CEDA; --muted:#8A93A6;\n  --line-gold:rgba(198,166,100,.18);\n  --glass:rgba(14,27,48,.55);\n  --ease:cubic-bezier(.22,.61,.36,1);\n  position:relative;width:100%;min-height:100vh;min-height:100dvh;margin:0;\n  background:var(--bg-base);color:var(--body);\n  font-family:'Inter',system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.5;\n  -webkit-font-smoothing:antialiased;overflow:hidden;isolation:isolate;\n}\n#geoestate-app *{box-sizing:border-box;margin:0;padding:0;}\n#geoestate-app button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}\n#geoestate-app input{font-family:inherit;}\n#geoestate-app ::-webkit-scrollbar{width:8px;height:8px;}\n#geoestate-app ::-webkit-scrollbar-thumb{background:rgba(198,166,100,.25);border-radius:8px;}\n\n\/* ATMOSPHERE (identical to Phase 1) *\/\n#geoestate-app .ge-atmos{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;}\n#geoestate-app .ge-atmos::before{content:\"\";position:absolute;inset:0;\n  background:\n    radial-gradient(120% 90% at 50% -10%, rgba(198,166,100,.10), transparent 55%),\n    radial-gradient(90% 70% at 80% 110%, rgba(30,58,110,.30), transparent 60%),\n    linear-gradient(180deg, #0B1626 0%, #0A1424 45%, #070E1A 100%);}\n#geoestate-app .ge-vignette{position:absolute;inset:0;box-shadow:inset 0 0 260px 40px rgba(0,0,0,.65);}\n#geoestate-app .ge-grain{position:absolute;inset:0;opacity:.035;mix-blend-mode:overlay;\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(#n)'\/%3E%3C\/svg%3E\");}\n#geoestate-app .ge-lines{position:absolute;inset:0;overflow:hidden;}\n#geoestate-app .ge-vline{position:absolute;top:0;bottom:0;width:1px;\n  background:linear-gradient(180deg,transparent,var(--line-gold) 30%,var(--line-gold) 70%,transparent);}\n#geoestate-app .ge-vline .ge-pulse{position:absolute;left:-1px;width:3px;height:130px;\n  background:linear-gradient(180deg,transparent,var(--gold-bright),transparent);filter:blur(1px);opacity:.55;\n  animation:ge-drop 7s linear infinite;}\n@keyframes ge-drop{0%{transform:translateY(-160px);opacity:0;}10%{opacity:.6;}90%{opacity:.6;}100%{transform:translateY(105vh);opacity:0;}}\n#geoestate-app .ge-skyline{position:absolute;left:0;right:0;bottom:0;height:42vh;opacity:.42;pointer-events:none;\n  mask-image:linear-gradient(180deg,transparent,#000 60%);-webkit-mask-image:linear-gradient(180deg,transparent,#000 60%);}\n#geoestate-app .ge-skyline svg{display:block;width:100%;height:100%;}\n\n\/* SHELL *\/\n#geoestate-app .ge-shell{position:relative;z-index:2;width:100%;height:100vh;height:100dvh;display:flex;flex-direction:column;padding:34px 48px 30px;}\n#geoestate-app .ge-topbar{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-shrink:0;}\n#geoestate-app .ge-brand{display:flex;align-items:center;gap:12px;}\n#geoestate-app .ge-diamond{width:20px;height:20px;transform:rotate(45deg);border:1px solid var(--gold);position:relative;}\n#geoestate-app .ge-diamond::after{content:\"\";position:absolute;inset:5px;background:var(--gold);opacity:.85;}\n#geoestate-app .ge-wordmark{font-family:'Fraunces',serif;font-weight:400;font-size:17px;letter-spacing:.28em;color:var(--ivory);text-transform:uppercase;padding-left:2px;}\n#geoestate-app .ge-wordmark b{color:var(--gold);font-weight:400;}\n#geoestate-app .ge-crumb{font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--muted);}\n#geoestate-app .ge-crumb b{color:var(--gold);font-weight:500;}\n\n\/* progress *\/\n#geoestate-app .ge-progwrap{flex-shrink:0;margin-top:26px;display:flex;align-items:center;gap:18px;}\n#geoestate-app .ge-progtrack{flex:1;height:2px;background:rgba(198,166,100,.14);border-radius:2px;overflow:hidden;}\n#geoestate-app .ge-progfill{height:100%;width:0;border-radius:2px;\n  background:linear-gradient(90deg,var(--gold-deep),var(--gold-bright));\n  box-shadow:0 0 12px rgba(198,166,100,.4);transition:width .6s var(--ease);}\n#geoestate-app .ge-stepno{font-family:'Fraunces',serif;font-style:italic;font-size:13px;color:var(--muted);white-space:nowrap;letter-spacing:.02em;}\n#geoestate-app .ge-stepno b{color:var(--gold-bright);font-style:normal;font-weight:500;}\n\n\/* question body *\/\n#geoestate-app .ge-body{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;overflow-y:auto;padding:24px 0;}\n#geoestate-app .ge-q{width:100%;max-width:1000px;margin:0 auto;}\n#geoestate-app .ge-q.leaving{opacity:0;transform:translateY(-14px) scale(.994);transition:opacity .26s var(--ease),transform .26s var(--ease);}\n#geoestate-app .ge-q.entering{opacity:0;transform:translateY(16px) scale(.994);}\n#geoestate-app .ge-q.entered{opacity:1;transform:none;transition:opacity .5s var(--ease),transform .55s var(--ease);}\n\n#geoestate-app .ge-q-eyebrow{font-size:11px;letter-spacing:.42em;text-transform:uppercase;color:var(--gold);margin-bottom:20px;}\n#geoestate-app .ge-q-h{font-family:'Fraunces',serif;font-weight:300;font-size:clamp(30px,4vw,50px);line-height:1.06;letter-spacing:-.01em;color:var(--ivory);text-wrap:balance;max-width:820px;}\n#geoestate-app .ge-q-h em{font-style:italic;color:var(--gold-bright);font-weight:400;}\n#geoestate-app .ge-q-sub{margin-top:18px;font-size:15px;color:var(--muted);font-weight:300;max-width:520px;line-height:1.6;}\n\n\/* rise-in for children *\/\n#geoestate-app .ge-q .ge-rise{opacity:0;transform:translateY(14px);}\n#geoestate-app .ge-q.entered .ge-rise{opacity:1;transform:none;transition:opacity .6s var(--ease),transform .6s var(--ease);transition-delay:var(--d,0ms);}\n\n\/* OPTION CARDS *\/\n#geoestate-app .ge-opts{margin-top:44px;display:grid;grid-template-columns:repeat(2,1fr);gap:18px;}\n#geoestate-app .ge-opts.cols-1{grid-template-columns:1fr;max-width:640px;}\n#geoestate-app .ge-opts.cols-3{grid-template-columns:repeat(3,1fr);}\n#geoestate-app .ge-opt{position:relative;display:flex;align-items:flex-start;gap:20px;text-align:left;\n  padding:26px 28px;border-radius:18px;\n  background:linear-gradient(180deg,rgba(18,32,56,.62),rgba(10,20,36,.55));\n  border:1px solid var(--line-gold);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 20px 50px -34px rgba(0,0,0,.8);\n  transition:transform .38s var(--ease),border-color .38s var(--ease),box-shadow .38s var(--ease),background .38s var(--ease);overflow:hidden;}\n#geoestate-app .ge-opt::before{content:\"\";position:absolute;inset:0;opacity:0;\n  background:radial-gradient(90% 130% at 15% -10%,rgba(198,166,100,.16),transparent 60%);transition:opacity .38s var(--ease);}\n#geoestate-app .ge-opt:hover{transform:translateY(-5px);border-color:rgba(198,166,100,.42);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 34px 70px -38px rgba(0,0,0,.9);}\n#geoestate-app .ge-opt:hover::before{opacity:1;}\n#geoestate-app .ge-opt.is-selected{border-color:var(--gold);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 0 0 1px rgba(198,166,100,.5),0 26px 60px -30px rgba(198,166,100,.35);}\n#geoestate-app .ge-opt.is-selected::before{opacity:1;}\n#geoestate-app .ge-opt-icon{flex-shrink:0;width:40px;height:40px;color:var(--gold);}\n#geoestate-app .ge-opt-icon svg{width:100%;height:100%;display:block;}\n#geoestate-app .ge-opt-txt{position:relative;z-index:1;}\n#geoestate-app .ge-opt-txt{display:block;}\n#geoestate-app .ge-opt-title{display:block;font-family:'Fraunces',serif;font-weight:400;font-size:20px;color:var(--ivory);letter-spacing:.005em;}\n#geoestate-app .ge-opt-desc{display:block;margin-top:7px;font-size:13.5px;line-height:1.55;color:var(--body);font-weight:300;}\n#geoestate-app .ge-opt-check{position:absolute;top:22px;right:24px;width:20px;height:20px;border-radius:50%;\n  border:1px solid var(--line-gold);display:flex;align-items:center;justify-content:center;transition:all .3s var(--ease);z-index:1;}\n#geoestate-app .ge-opt.is-selected .ge-opt-check{border-color:var(--gold);background:var(--gold);}\n#geoestate-app .ge-opt-check::after{content:\"\";width:9px;height:5px;border-left:1.5px solid #231a08;border-bottom:1.5px solid #231a08;\n  transform:rotate(-45deg) scale(0);transition:transform .3s var(--ease);margin-top:-2px;}\n#geoestate-app .ge-opt.is-selected .ge-opt-check::after{transform:rotate(-45deg) scale(1);}\n\n\/* compact pills (bedrooms) *\/\n#geoestate-app .ge-pills{margin-top:44px;display:flex;flex-wrap:wrap;gap:14px;}\n#geoestate-app .ge-pill{min-width:104px;padding:22px 26px;border-radius:16px;text-align:center;\n  background:linear-gradient(180deg,rgba(18,32,56,.62),rgba(10,20,36,.55));border:1px solid var(--line-gold);\n  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);\n  transition:transform .35s var(--ease),border-color .35s var(--ease),box-shadow .35s var(--ease);}\n#geoestate-app .ge-pill:hover{transform:translateY(-4px);border-color:rgba(198,166,100,.42);}\n#geoestate-app .ge-pill.is-selected{border-color:var(--gold);box-shadow:0 0 0 1px rgba(198,166,100,.5),0 20px 50px -28px rgba(198,166,100,.35);}\n#geoestate-app .ge-pill-n{font-family:'Fraunces',serif;font-weight:300;font-size:30px;color:var(--ivory);line-height:1;}\n#geoestate-app .ge-pill-l{margin-top:9px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);}\n\n\/* BUTTONS (Phase 1) *\/\n#geoestate-app .ge-btn{display:inline-flex;align-items:center;gap:13px;font-size:13px;letter-spacing:.16em;text-transform:uppercase;font-weight:500;\n  border-radius:999px;padding:17px 34px;transition:transform .35s var(--ease),box-shadow .35s var(--ease),background .35s var(--ease),border-color .35s;will-change:transform;}\n#geoestate-app .ge-arrow{width:17px;height:17px;position:relative;transition:transform .35s var(--ease);}\n#geoestate-app .ge-arrow::before{content:\"\";position:absolute;top:50%;left:0;width:100%;height:1.4px;background:currentColor;transform:translateY(-50%);}\n#geoestate-app .ge-arrow::after{content:\"\";position:absolute;top:50%;right:0;width:7px;height:7px;border-top:1.4px solid currentColor;border-right:1.4px solid currentColor;transform:translateY(-50%) rotate(45deg);}\n#geoestate-app .ge-btn:hover .ge-arrow{transform:translateX(5px);}\n#geoestate-app .ge-arrow--back{transform:scaleX(-1);}\n#geoestate-app .ge-btn:hover .ge-arrow--back{transform:scaleX(-1) translateX(5px);}\n#geoestate-app .ge-btn--gold{background:linear-gradient(180deg,var(--gold-bright),var(--gold) 55%,var(--gold-deep));color:#231a08;\n  box-shadow:0 14px 40px -14px rgba(198,166,100,.6),inset 0 1px 0 rgba(255,255,255,.35);}\n#geoestate-app .ge-btn--gold:hover{transform:translateY(-3px);box-shadow:0 22px 54px -16px rgba(198,166,100,.75),inset 0 1px 0 rgba(255,255,255,.45);}\n#geoestate-app .ge-btn--glass{background:var(--glass);color:var(--ivory);border:1px solid var(--line-gold);\n  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);}\n#geoestate-app .ge-btn--glass:hover{transform:translateY(-3px);border-color:rgba(198,166,100,.4);background:rgba(20,36,62,.7);}\n#geoestate-app .ge-btn--ghost{color:var(--muted);padding:17px 20px;letter-spacing:.16em;}\n#geoestate-app .ge-btn--ghost:hover{color:var(--ivory);}\n#geoestate-app .ge-btn:disabled{opacity:.35;cursor:not-allowed;transform:none;box-shadow:none;}\n#geoestate-app .ge-nav{margin-top:46px;display:flex;align-items:center;gap:16px;}\n\n\/* SLIDER *\/\n#geoestate-app .ge-slider-wrap{margin-top:40px;max-width:720px;}\n#geoestate-app .ge-amount{font-family:'Fraunces',serif;font-weight:300;color:var(--ivory);line-height:1;display:flex;align-items:baseline;gap:14px;}\n#geoestate-app .ge-amount .ge-cur{font-size:20px;letter-spacing:.12em;color:var(--gold);text-transform:uppercase;}\n#geoestate-app .ge-amount .ge-val{font-size:clamp(46px,6vw,74px);letter-spacing:-.01em;font-variant-numeric:tabular-nums;}\n#geoestate-app .ge-amount .ge-plus{font-size:34px;color:var(--gold);}\n#geoestate-app .ge-range{-webkit-appearance:none;appearance:none;width:100%;height:2px;margin-top:40px;\n  background:rgba(198,166,100,.18);border-radius:2px;outline:none;}\n#geoestate-app .ge-range::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;border-radius:50%;\n  background:radial-gradient(circle at 35% 30%,var(--gold-bright),var(--gold-deep));cursor:pointer;\n  box-shadow:0 0 0 6px rgba(198,166,100,.14),0 8px 20px -6px rgba(0,0,0,.7);transition:box-shadow .3s var(--ease);border:1px solid var(--gold-bright);}\n#geoestate-app .ge-range::-webkit-slider-thumb:hover{box-shadow:0 0 0 10px rgba(198,166,100,.18),0 8px 20px -6px rgba(0,0,0,.7);}\n#geoestate-app .ge-range::-moz-range-thumb{width:24px;height:24px;border-radius:50%;border:1px solid var(--gold-bright);\n  background:radial-gradient(circle at 35% 30%,var(--gold-bright),var(--gold-deep));cursor:pointer;box-shadow:0 0 0 6px rgba(198,166,100,.14);}\n#geoestate-app .ge-range-legend{display:flex;justify-content:space-between;margin-top:16px;font-size:12px;color:var(--muted);letter-spacing:.04em;}\n#geoestate-app .ge-chips{margin-top:34px;display:flex;flex-wrap:wrap;gap:12px;}\n#geoestate-app .ge-chip{padding:12px 22px;border-radius:999px;font-size:13px;letter-spacing:.06em;color:var(--body);\n  background:rgba(14,27,48,.5);border:1px solid var(--line-gold);transition:all .3s var(--ease);}\n#geoestate-app .ge-chip:hover{border-color:rgba(198,166,100,.45);color:var(--ivory);transform:translateY(-2px);}\n#geoestate-app .ge-chip.is-active{background:rgba(198,166,100,.14);border-color:var(--gold);color:var(--gold-bright);}\n\n\/* SEARCH \/ PROJECT *\/\n#geoestate-app .ge-search{margin-top:40px;max-width:640px;position:relative;}\n#geoestate-app .ge-search-field{display:flex;align-items:center;gap:16px;padding:0 4px 16px;border-bottom:1px solid var(--line-gold);position:relative;}\n#geoestate-app .ge-search-field.is-focus{border-color:transparent;}\n#geoestate-app .ge-search-field .ge-uline{position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,var(--gold-bright),transparent);transform:scaleX(0);transition:transform .5s var(--ease);}\n#geoestate-app .ge-search-field.is-focus .ge-uline{transform:scaleX(1);}\n#geoestate-app .ge-search-ico{width:20px;height:20px;color:var(--gold);flex-shrink:0;}\n#geoestate-app .ge-search-field input{flex:1;background:transparent;border:none;outline:none;color:var(--ivory);\n  font-family:'Fraunces',serif;font-weight:300;font-size:26px;padding:0;}\n#geoestate-app .ge-search-field input::placeholder{color:rgba(138,147,166,.4);font-style:italic;}\n#geoestate-app .ge-dropdown{position:absolute;left:0;right:0;top:calc(100% + 14px);z-index:20;\n  background:linear-gradient(180deg,rgba(16,29,52,.96),rgba(10,20,36,.96));border:1px solid var(--line-gold);border-radius:16px;\n  box-shadow:0 40px 90px -34px rgba(0,0,0,.9);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);\n  overflow:hidden;max-height:340px;overflow-y:auto;opacity:0;transform:translateY(-8px);pointer-events:none;transition:opacity .3s var(--ease),transform .3s var(--ease);}\n#geoestate-app .ge-dropdown.is-open{opacity:1;transform:none;pointer-events:auto;}\n#geoestate-app .ge-drow{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 22px;cursor:pointer;transition:background .2s var(--ease);border-bottom:1px solid rgba(198,166,100,.07);}\n#geoestate-app .ge-drow:last-child{border-bottom:none;}\n#geoestate-app .ge-drow:hover,#geoestate-app .ge-drow.is-cursor{background:rgba(198,166,100,.1);}\n#geoestate-app .ge-drow-main{font-size:15px;color:var(--ivory);font-weight:400;}\n#geoestate-app .ge-drow-sub{font-size:12px;color:var(--muted);letter-spacing:.04em;}\n#geoestate-app .ge-drow-empty{padding:26px 22px;text-align:center;color:var(--muted);font-style:italic;font-family:'Fraunces',serif;font-size:15px;}\n#geoestate-app .ge-sec{margin-top:32px;}\n#geoestate-app .ge-sec-label{font-size:10.5px;letter-spacing:.28em;text-transform:uppercase;color:var(--muted);margin-bottom:16px;}\n#geoestate-app .ge-achips{display:flex;flex-wrap:wrap;gap:11px;}\n#geoestate-app .ge-achip{display:inline-flex;align-items:center;gap:9px;padding:11px 18px;border-radius:999px;font-size:13px;color:var(--body);\n  background:rgba(14,27,48,.5);border:1px solid var(--line-gold);transition:all .3s var(--ease);}\n#geoestate-app .ge-achip:hover{border-color:rgba(198,166,100,.45);color:var(--ivory);transform:translateY(-2px);}\n#geoestate-app .ge-achip .ge-dot{width:5px;height:5px;border-radius:50%;background:var(--gold);opacity:.7;}\n#geoestate-app .ge-achip.recent .ge-dot{background:var(--muted);}\n\n\/* NUMERIC \/ PRICE INPUT *\/\n#geoestate-app .ge-numwrap{margin-top:40px;max-width:560px;}\n#geoestate-app .ge-numfield{display:flex;align-items:baseline;gap:16px;border-bottom:1px solid var(--line-gold);padding:0 2px 18px;position:relative;}\n#geoestate-app .ge-numfield .ge-uline{position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,var(--gold-bright),transparent);transform:scaleX(0);transition:transform .5s var(--ease);}\n#geoestate-app .ge-numfield.is-focus .ge-uline{transform:scaleX(1);}\n#geoestate-app .ge-numfield .ge-cur{font-family:'Fraunces',serif;font-size:22px;color:var(--gold);letter-spacing:.1em;}\n#geoestate-app .ge-numfield input{flex:1;background:transparent;border:none;outline:none;color:var(--ivory);\n  font-family:'Fraunces',serif;font-weight:300;font-size:clamp(40px,5vw,60px);letter-spacing:-.01em;padding:0;font-variant-numeric:tabular-nums;min-width:0;}\n#geoestate-app .ge-numfield input::placeholder{color:rgba(138,147,166,.35);}\n#geoestate-app .ge-numfield .ge-unit{font-size:20px;color:var(--muted);letter-spacing:.06em;font-family:'Inter',sans-serif;font-weight:300;}\n\n\/* COMPLETION *\/\n\/* (completion summary screen removed \u2014 brief now lives inside the report) *\/\n\n\/* LAUNCHER *\/\n#geoestate-app .ge-launch{max-width:1000px;margin:0 auto;}\n#geoestate-app .ge-launch .ge-opts{margin-top:40px;}\n#geoestate-app .ge-note{position:absolute;left:48px;bottom:26px;z-index:3;font-size:11px;letter-spacing:.06em;color:var(--muted);}\n#geoestate-app .ge-note b{color:var(--gold);font-weight:500;}\n\n@media (max-width:820px){\n  #geoestate-app .ge-shell{padding:24px 22px;}\n  #geoestate-app .ge-opts,#geoestate-app .ge-opts.cols-3{grid-template-columns:1fr;}\n  #geoestate-app .ge-crumb{display:none;}\n  #geoestate-app .ge-note{left:22px;}\n}\n@media (prefers-reduced-motion:reduce){\n  #geoestate-app *{animation:none!important;}\n  #geoestate-app .ge-q,#geoestate-app .ge-rise,#geoestate-app .ge-btn,#geoestate-app .ge-progfill{transition-duration:.001ms!important;}\n}\n\n\n#scr-c{\n  --bg-base:#0A1424; --bg-raised:#0E1B30; --bg-well:#070E1A;\n  --gold:#C6A664; --gold-bright:#E4C87F; --gold-deep:#9C7C43;\n  --ivory:#F4F1E8; --body:#C8CEDA; --muted:#8A93A6;\n  --line-gold:rgba(198,166,100,.18);\n  --glass:rgba(14,27,48,.55);\n  --ease:cubic-bezier(.22,.61,.36,1);\n  position:relative;width:100%;min-height:100vh;min-height:100dvh;margin:0;\n  background:var(--bg-base);color:var(--body);\n  font-family:'Inter',system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.5;\n  -webkit-font-smoothing:antialiased;overflow:hidden;isolation:isolate;\n}\n#geoestate-app *{box-sizing:border-box;margin:0;padding:0;}\n#geoestate-app button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}\n#geoestate-app input{font-family:inherit;}\n#geoestate-app a{color:var(--gold);text-decoration:none;}\n#geoestate-app a:hover{color:var(--gold-bright);}\n#geoestate-app ::-webkit-scrollbar{width:8px;height:8px;}\n#geoestate-app ::-webkit-scrollbar-thumb{background:rgba(198,166,100,.25);border-radius:8px;}\n\n\/* ATMOSPHERE (identical to Phases 1\u20132) *\/\n#geoestate-app .ge-atmos{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;}\n#geoestate-app .ge-atmos::before{content:\"\";position:absolute;inset:0;\n  background:\n    radial-gradient(120% 90% at 50% -10%, rgba(198,166,100,.10), transparent 55%),\n    radial-gradient(90% 70% at 80% 110%, rgba(30,58,110,.30), transparent 60%),\n    linear-gradient(180deg, #0B1626 0%, #0A1424 45%, #070E1A 100%);}\n#geoestate-app .ge-vignette{position:absolute;inset:0;box-shadow:inset 0 0 260px 40px rgba(0,0,0,.65);}\n#geoestate-app .ge-grain{position:absolute;inset:0;opacity:.035;mix-blend-mode:overlay;\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(#n)'\/%3E%3C\/svg%3E\");}\n#geoestate-app .ge-lines{position:absolute;inset:0;overflow:hidden;}\n#geoestate-app .ge-vline{position:absolute;top:0;bottom:0;width:1px;\n  background:linear-gradient(180deg,transparent,var(--line-gold) 30%,var(--line-gold) 70%,transparent);}\n#geoestate-app .ge-vline .ge-pulse{position:absolute;left:-1px;width:3px;height:130px;\n  background:linear-gradient(180deg,transparent,var(--gold-bright),transparent);filter:blur(1px);opacity:.55;\n  animation:ge-drop 7s linear infinite;}\n@keyframes ge-drop{0%{transform:translateY(-160px);opacity:0;}10%{opacity:.6;}90%{opacity:.6;}100%{transform:translateY(105vh);opacity:0;}}\n#geoestate-app .ge-skyline{position:absolute;left:0;right:0;bottom:0;height:42vh;opacity:.42;pointer-events:none;\n  mask-image:linear-gradient(180deg,transparent,#000 60%);-webkit-mask-image:linear-gradient(180deg,transparent,#000 60%);}\n#geoestate-app .ge-skyline svg{display:block;width:100%;height:100%;}\n\n\/* SHELL *\/\n#geoestate-app .ge-shell{position:relative;z-index:2;width:100%;height:100vh;height:100dvh;display:flex;flex-direction:column;padding:34px 48px 30px;}\n#geoestate-app .ge-topbar{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-shrink:0;}\n#geoestate-app .ge-brand{display:flex;align-items:center;gap:12px;}\n#geoestate-app .ge-diamond{width:20px;height:20px;transform:rotate(45deg);border:1px solid var(--gold);position:relative;}\n#geoestate-app .ge-diamond::after{content:\"\";position:absolute;inset:5px;background:var(--gold);opacity:.85;}\n#geoestate-app .ge-wordmark{font-family:'Fraunces',serif;font-weight:400;font-size:17px;letter-spacing:.28em;color:var(--ivory);text-transform:uppercase;padding-left:2px;}\n#geoestate-app .ge-wordmark b{color:var(--gold);font-weight:400;}\n#geoestate-app .ge-crumb{font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--muted);}\n#geoestate-app .ge-crumb b{color:var(--gold);font-weight:500;}\n\n#geoestate-app .ge-body{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow-y:auto;padding:24px 0;}\n#geoestate-app .ge-stage{width:100%;display:flex;justify-content:center;}\n#geoestate-app .ge-scene{width:100%;display:none;}\n#geoestate-app .ge-scene.is-active{display:block;animation:ge-scene-in .6s var(--ease) both;}\n@keyframes ge-scene-in{from{opacity:0;transform:translateY(18px) scale(.994);}to{opacity:1;transform:none;}}\n#geoestate-app .ge-scene.is-leaving{animation:ge-scene-out .3s var(--ease) both;}\n@keyframes ge-scene-out{to{opacity:0;transform:translateY(-14px) scale(.994);}}\n\n#geoestate-app .ge-rise{opacity:0;transform:translateY(14px);animation:ge-rise .6s var(--ease) forwards;animation-delay:var(--d,0ms);}\n@keyframes ge-rise{to{opacity:1;transform:none;}}\n\n\/* headings *\/\n#geoestate-app .ge-eyebrow{font-size:11px;letter-spacing:.42em;text-transform:uppercase;color:var(--gold);margin-bottom:22px;}\n#geoestate-app .ge-h{font-family:'Fraunces',serif;font-weight:300;font-size:clamp(32px,4.4vw,54px);line-height:1.05;letter-spacing:-.01em;color:var(--ivory);text-wrap:balance;}\n#geoestate-app .ge-h em{font-style:italic;color:var(--gold-bright);font-weight:400;}\n#geoestate-app .ge-sub{margin-top:20px;font-size:16px;color:var(--muted);font-weight:300;line-height:1.6;}\n\n\/* BUTTONS (Phases 1\u20132) *\/\n#geoestate-app .ge-btn{display:inline-flex;align-items:center;justify-content:center;gap:13px;font-size:13px;letter-spacing:.16em;text-transform:uppercase;font-weight:500;\n  border-radius:999px;padding:18px 36px;transition:transform .35s var(--ease),box-shadow .35s var(--ease),background .35s var(--ease),border-color .35s,opacity .35s;will-change:transform;}\n#geoestate-app .ge-arrow{width:17px;height:17px;position:relative;transition:transform .35s var(--ease);}\n#geoestate-app .ge-arrow::before{content:\"\";position:absolute;top:50%;left:0;width:100%;height:1.4px;background:currentColor;transform:translateY(-50%);}\n#geoestate-app .ge-arrow::after{content:\"\";position:absolute;top:50%;right:0;width:7px;height:7px;border-top:1.4px solid currentColor;border-right:1.4px solid currentColor;transform:translateY(-50%) rotate(45deg);}\n#geoestate-app .ge-btn:hover:not(:disabled) .ge-arrow{transform:translateX(5px);}\n#geoestate-app .ge-btn--gold{background:linear-gradient(180deg,var(--gold-bright),var(--gold) 55%,var(--gold-deep));color:#231a08;\n  box-shadow:0 14px 40px -14px rgba(198,166,100,.6),inset 0 1px 0 rgba(255,255,255,.35);}\n#geoestate-app .ge-btn--gold:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 22px 54px -16px rgba(198,166,100,.75),inset 0 1px 0 rgba(255,255,255,.45);}\n#geoestate-app .ge-btn--glass{background:var(--glass);color:var(--ivory);border:1px solid var(--line-gold);\n  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);}\n#geoestate-app .ge-btn--glass:hover:not(:disabled){transform:translateY(-3px);border-color:rgba(198,166,100,.4);background:rgba(20,36,62,.7);}\n#geoestate-app .ge-btn:disabled{opacity:.32;cursor:not-allowed;transform:none;box-shadow:none;}\n#geoestate-app .ge-btn.full{width:100%;}\n\n\/* ===== PHONE GATE ===== *\/\n#geoestate-app .ge-gate{width:100%;max-width:1040px;display:grid;grid-template-columns:1.05fr 1fr;gap:64px;align-items:center;}\n#geoestate-app .ge-gate-lead{max-width:440px;}\n#geoestate-app .ge-lockmark{width:52px;height:52px;border:1px solid var(--line-gold);border-radius:14px;display:flex;align-items:center;justify-content:center;color:var(--gold);margin-bottom:30px;box-shadow:inset 0 1px 0 rgba(255,255,255,.05);}\n#geoestate-app .ge-lockmark svg{width:24px;height:24px;}\n#geoestate-app .ge-trust{margin-top:38px;display:flex;flex-direction:column;gap:16px;}\n#geoestate-app .ge-trust-row{display:flex;align-items:flex-start;gap:14px;font-size:13.5px;color:var(--body);font-weight:300;line-height:1.5;}\n#geoestate-app .ge-trust-row .ge-tick{flex-shrink:0;width:18px;height:18px;color:var(--gold);margin-top:1px;}\n\n\/* panel *\/\n#geoestate-app .ge-panel{position:relative;padding:44px;border-radius:24px;overflow:hidden;\n  background:linear-gradient(180deg,rgba(18,32,56,.72),rgba(9,17,31,.66));\n  border:1px solid var(--line-gold);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 50px 110px -46px rgba(0,0,0,.9);}\n#geoestate-app .ge-panel::before{content:\"\";position:absolute;inset:0;pointer-events:none;\n  background:radial-gradient(90% 60% at 20% -10%,rgba(198,166,100,.12),transparent 55%);}\n#geoestate-app .ge-panel-label{font-size:10.5px;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);margin-bottom:28px;position:relative;}\n#geoestate-app .ge-flabel{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:14px;display:block;}\n#geoestate-app .ge-phone{position:relative;display:flex;gap:14px;align-items:stretch;}\n#geoestate-app .ge-cc{position:relative;flex-shrink:0;}\n#geoestate-app .ge-cc-btn{height:100%;display:flex;align-items:center;gap:10px;padding:16px 18px;border-radius:14px;\n  background:rgba(7,14,26,.6);border:1px solid var(--line-gold);color:var(--ivory);font-size:16px;transition:border-color .3s var(--ease);white-space:nowrap;}\n#geoestate-app .ge-cc-btn:hover{border-color:rgba(198,166,100,.4);}\n#geoestate-app .ge-cc-btn .ge-flag{font-size:18px;line-height:1;}\n#geoestate-app .ge-cc-btn .ge-caret{width:9px;height:9px;border-right:1.4px solid var(--muted);border-bottom:1.4px solid var(--muted);transform:rotate(45deg);margin-left:2px;transition:transform .3s var(--ease);}\n#geoestate-app .ge-cc.open .ge-cc-btn .ge-caret{transform:rotate(-135deg);}\n#geoestate-app .ge-cc-menu{position:absolute;left:0;top:calc(100% + 10px);z-index:30;width:340px;max-width:82vw;\n  background:linear-gradient(180deg,rgba(16,29,52,.98),rgba(10,20,36,.98));border:1px solid var(--line-gold);border-radius:16px;\n  box-shadow:0 44px 100px -36px rgba(0,0,0,.92);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);\n  overflow:hidden;opacity:0;transform:translateY(-8px) scale(.985);transform-origin:top left;pointer-events:none;\n  transition:opacity .3s var(--ease),transform .3s var(--ease);}\n#geoestate-app .ge-cc.open .ge-cc-menu{opacity:1;transform:none;pointer-events:auto;}\n#geoestate-app .ge-cc-search{position:relative;padding:14px 16px;border-bottom:1px solid var(--line-gold);}\n#geoestate-app .ge-cc-search svg{position:absolute;left:28px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--gold);opacity:.8;}\n#geoestate-app .ge-cc-search input{width:100%;background:rgba(7,14,26,.6);border:1px solid var(--line-gold);border-radius:11px;\n  outline:none;color:var(--ivory);font-family:'Inter',sans-serif;font-size:14.5px;padding:12px 14px 12px 40px;transition:border-color .3s var(--ease);}\n#geoestate-app .ge-cc-search input::placeholder{color:rgba(138,147,166,.5);}\n#geoestate-app .ge-cc-search input:focus{border-color:rgba(198,166,100,.5);}\n#geoestate-app .ge-cc-list{max-height:296px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:6px;}\n#geoestate-app .ge-cc-item{display:flex;align-items:center;gap:13px;padding:13px 14px;cursor:pointer;font-size:14.5px;color:var(--body);\n  border-radius:10px;transition:background .18s var(--ease),color .18s var(--ease);}\n#geoestate-app .ge-cc-item:hover,#geoestate-app .ge-cc-item.cursor{background:rgba(198,166,100,.12);color:var(--ivory);}\n#geoestate-app .ge-cc-item.sel{background:rgba(198,166,100,.08);}\n#geoestate-app .ge-cc-item.sel .ge-cc-name{color:var(--gold-bright);}\n#geoestate-app .ge-cc-item .ge-flag{font-size:19px;line-height:1;flex-shrink:0;}\n#geoestate-app .ge-cc-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}\n#geoestate-app .ge-cc-item .ge-dial{color:var(--muted);margin-left:auto;padding-left:12px;font-variant-numeric:tabular-nums;flex-shrink:0;}\n#geoestate-app .ge-cc-item.sel .ge-tickmini{color:var(--gold);}\n#geoestate-app .ge-tickmini{width:15px;height:15px;flex-shrink:0;opacity:0;}\n#geoestate-app .ge-cc-item.sel .ge-tickmini{opacity:1;}\n#geoestate-app .ge-cc-empty{padding:30px 18px;text-align:center;color:var(--muted);font-style:italic;font-family:'Fraunces',serif;font-size:15px;}\n#geoestate-app .ge-cc-mark b{color:var(--gold-bright);font-weight:400;}\n#geoestate-app .ge-phone-field{flex:1;position:relative;}\n#geoestate-app .ge-phone-field input{width:100%;height:100%;background:rgba(7,14,26,.6);border:1px solid var(--line-gold);border-radius:14px;\n  outline:none;color:var(--ivory);font-family:'Inter',sans-serif;font-size:19px;letter-spacing:.04em;padding:16px 18px;transition:border-color .3s var(--ease);font-variant-numeric:tabular-nums;}\n#geoestate-app .ge-phone-field input::placeholder{color:rgba(138,147,166,.4);letter-spacing:.02em;}\n#geoestate-app .ge-phone-field input:focus{border-color:rgba(198,166,100,.5);}\n#geoestate-app .ge-phone-field.valid input{border-color:rgba(198,166,100,.55);}\n#geoestate-app .ge-phone-field .ge-vtick{position:absolute;right:16px;top:50%;transform:translateY(-50%) scale(.6);opacity:0;width:20px;height:20px;color:var(--gold);transition:all .3s var(--ease);}\n#geoestate-app .ge-phone-field.valid .ge-vtick{opacity:1;transform:translateY(-50%) scale(1);}\n\n#geoestate-app .ge-consent{margin-top:26px;display:flex;gap:14px;align-items:flex-start;cursor:pointer;position:relative;}\n#geoestate-app .ge-check{flex-shrink:0;width:22px;height:22px;border-radius:6px;border:1px solid var(--line-gold);background:rgba(7,14,26,.6);\n  display:flex;align-items:center;justify-content:center;transition:all .3s var(--ease);margin-top:1px;}\n#geoestate-app .ge-consent:hover .ge-check{border-color:rgba(198,166,100,.5);}\n#geoestate-app .ge-consent.checked .ge-check{background:var(--gold);border-color:var(--gold);}\n#geoestate-app .ge-check::after{content:\"\";width:10px;height:5px;border-left:1.6px solid #231a08;border-bottom:1.6px solid #231a08;transform:rotate(-45deg) scale(0);transition:transform .25s var(--ease);margin-top:-2px;}\n#geoestate-app .ge-consent.checked .ge-check::after{transform:rotate(-45deg) scale(1);}\n#geoestate-app .ge-consent-txt{font-size:13px;color:var(--muted);font-weight:300;line-height:1.55;}\n#geoestate-app .ge-panel .ge-btn{margin-top:32px;}\n#geoestate-app .ge-panel-fine{margin-top:20px;text-align:center;font-size:11.5px;color:var(--muted);letter-spacing:.04em;display:flex;align-items:center;justify-content:center;gap:8px;}\n#geoestate-app .ge-panel-fine .ge-lockmini{width:12px;height:12px;color:var(--gold);opacity:.8;}\n\n\/* ===== PROCESSING ===== *\/\n#geoestate-app .ge-proc{width:100%;max-width:640px;text-align:center;display:flex;flex-direction:column;align-items:center;}\n#geoestate-app .ge-rings{position:relative;width:280px;height:280px;margin-bottom:12px;}\n#geoestate-app .ge-rings::before{content:\"\";position:absolute;inset:34%;border-radius:50%;\n  background:radial-gradient(circle,rgba(198,166,100,.22),transparent 70%);filter:blur(14px);animation:ge-breathe 3.4s var(--ease) infinite;}\n@keyframes ge-breathe{0%,100%{opacity:.5;transform:scale(.9);}50%{opacity:1;transform:scale(1.08);}}\n#geoestate-app .ge-ring{position:absolute;inset:0;border-radius:50%;}\n#geoestate-app .ge-ring svg{width:100%;height:100%;display:block;}\n#geoestate-app .ge-ring circle{fill:none;}\n#geoestate-app .ge-ring.r1{animation:ge-spin 9s linear infinite;}\n#geoestate-app .ge-ring.r2{inset:34px;animation:ge-spin 6.5s linear infinite reverse;}\n#geoestate-app .ge-ring.r3{inset:70px;animation:ge-spin 4.5s linear infinite;}\n@keyframes ge-spin{to{transform:rotate(360deg);}}\n#geoestate-app .ge-ring-track{stroke:rgba(198,166,100,.1);stroke-width:1;}\n#geoestate-app .ge-ring-arc{stroke:url(#ge-arc);stroke-width:1.6;stroke-linecap:round;}\n#geoestate-app .ge-ring .dot{fill:var(--gold-bright);}\n#geoestate-app .ge-proc-core{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;}\n#geoestate-app .ge-proc-pct{font-family:'Fraunces',serif;font-weight:300;font-size:50px;color:var(--ivory);line-height:1;font-variant-numeric:tabular-nums;}\n#geoestate-app .ge-proc-pct span{font-size:22px;color:var(--gold);}\n#geoestate-app .ge-proc-core-l{margin-top:8px;font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:var(--muted);}\n#geoestate-app .ge-proc-eyebrow{font-size:11px;letter-spacing:.42em;text-transform:uppercase;color:var(--gold);margin-top:16px;}\n#geoestate-app .ge-proc-msg{height:38px;margin-top:22px;position:relative;width:100%;}\n#geoestate-app .ge-proc-msg span{position:absolute;left:0;right:0;top:0;font-family:'Fraunces',serif;font-weight:300;font-size:clamp(22px,3vw,30px);color:var(--ivory);\n  opacity:0;transform:translateY(10px);transition:opacity .5s var(--ease),transform .5s var(--ease);}\n#geoestate-app .ge-proc-msg span.on{opacity:1;transform:none;}\n#geoestate-app .ge-proc-bar{margin-top:40px;width:100%;max-width:420px;height:2px;background:rgba(198,166,100,.14);border-radius:2px;overflow:hidden;}\n#geoestate-app .ge-proc-bar-fill{height:100%;width:0;border-radius:2px;background:linear-gradient(90deg,var(--gold-deep),var(--gold-bright));box-shadow:0 0 12px rgba(198,166,100,.5);transition:width .5s var(--ease);}\n#geoestate-app .ge-proc-steps{margin-top:24px;display:flex;gap:10px;}\n#geoestate-app .ge-proc-steps i{width:22px;height:3px;border-radius:2px;background:rgba(198,166,100,.16);transition:background .5s var(--ease);}\n#geoestate-app .ge-proc-steps i.done{background:var(--gold);}\n\n\/* ===== REPORT READY ===== *\/\n#geoestate-app .ge-ready{width:100%;max-width:620px;text-align:center;display:flex;flex-direction:column;align-items:center;}\n#geoestate-app .ge-ready-seal{position:relative;width:96px;height:96px;margin-bottom:36px;}\n#geoestate-app .ge-ready-seal .halo{position:absolute;inset:-10px;border-radius:50%;background:radial-gradient(circle,rgba(198,166,100,.3),transparent 70%);filter:blur(10px);animation:ge-breathe 3s var(--ease) infinite;}\n#geoestate-app .ge-ready-seal .disc{position:absolute;inset:0;border:1px solid var(--gold);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--gold);background:rgba(9,17,31,.5);box-shadow:inset 0 1px 0 rgba(255,255,255,.08);}\n#geoestate-app .ge-ready-seal .disc svg{width:40px;height:40px;}\n#geoestate-app .ge-ready-check{stroke-dasharray:48;stroke-dashoffset:48;animation:ge-draw .7s var(--ease) .25s forwards;}\n@keyframes ge-draw{to{stroke-dashoffset:0;}}\n#geoestate-app .ge-ready .ge-btn{margin-top:40px;}\n#geoestate-app .ge-ready-tag{margin-top:26px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted);}\n#geoestate-app .ge-ready-tag b{color:var(--gold);font-weight:500;}\n\n\/* launcher *\/\n#geoestate-app .ge-note{position:absolute;left:48px;bottom:26px;z-index:3;font-size:11px;letter-spacing:.06em;color:var(--muted);}\n#geoestate-app .ge-note b{color:var(--gold);font-weight:500;}\n#geoestate-app .ge-devbar{position:absolute;right:48px;bottom:22px;z-index:5;display:flex;gap:10px;align-items:center;}\n#geoestate-app .ge-devbar .lbl{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-right:2px;}\n#geoestate-app .ge-devchip{font-size:11px;letter-spacing:.08em;color:var(--body);padding:8px 14px;border-radius:999px;background:rgba(14,27,48,.6);border:1px solid var(--line-gold);transition:all .3s var(--ease);}\n#geoestate-app .ge-devchip:hover{border-color:rgba(198,166,100,.45);color:var(--ivory);}\n\n@media (max-width:900px){\n  #geoestate-app .ge-shell{padding:24px 22px 76px;}\n  #geoestate-app .ge-gate{grid-template-columns:1fr;gap:40px;}\n  #geoestate-app .ge-gate-lead{max-width:none;}\n  #geoestate-app .ge-crumb{display:none;}\n  #geoestate-app .ge-note,#geoestate-app .ge-devbar{left:22px;right:22px;bottom:16px;}\n  #geoestate-app .ge-devbar{justify-content:flex-end;}\n  #geoestate-app .ge-panel{padding:32px 26px;}\n}\n@media (prefers-reduced-motion:reduce){\n  #geoestate-app *{animation-duration:.001ms!important;animation-iteration-count:1!important;}\n  #geoestate-app .ge-ring{animation:none!important;}\n  #geoestate-app .ge-btn,#geoestate-app .ge-proc-bar-fill{transition-duration:.001ms!important;}\n}\n\n\n#scr-d{\n  --bg-base:#0A1424; --bg-raised:#0E1B30; --bg-well:#070E1A;\n  --gold:#C6A664; --gold-bright:#E4C87F; --gold-deep:#9C7C43;\n  --ivory:#F4F1E8; --body:#C8CEDA; --muted:#8A93A6;\n  --line-gold:rgba(198,166,100,.18);\n  --glass:rgba(14,27,48,.55);\n  --ease:cubic-bezier(.22,.61,.36,1);\n  --pos:#7FB58A; --neg:#C98B7A;\n  position:relative;width:100%;min-height:100vh;margin:0;\n  background:var(--bg-base);color:var(--body);\n  font-family:'Inter',system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.5;\n  -webkit-font-smoothing:antialiased;isolation:isolate;\n}\n#geoestate-app *{box-sizing:border-box;margin:0;padding:0;}\n#geoestate-app button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}\n#geoestate-app a{color:var(--gold);text-decoration:none;}\n#geoestate-app a:hover{color:var(--gold-bright);}\n#geoestate-app ::-webkit-scrollbar{width:9px;}\n#geoestate-app ::-webkit-scrollbar-thumb{background:rgba(198,166,100,.25);border-radius:8px;}\n\n\/* fixed atmosphere *\/\n#geoestate-app .ge-atmos{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;}\n#geoestate-app .ge-atmos::before{content:\"\";position:absolute;inset:0;\n  background:radial-gradient(120% 80% at 50% -10%,rgba(198,166,100,.08),transparent 55%),\n    radial-gradient(90% 70% at 85% 110%,rgba(30,58,110,.26),transparent 60%),\n    linear-gradient(180deg,#0B1626 0%,#0A1424 45%,#070E1A 100%);}\n#geoestate-app .ge-vignette{position:absolute;inset:0;box-shadow:inset 0 0 300px 60px rgba(0,0,0,.6);}\n#geoestate-app .ge-grain{position:absolute;inset:0;opacity:.03;mix-blend-mode:overlay;\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(#n)'\/%3E%3C\/svg%3E\");}\n\n\/* top chrome *\/\n#geoestate-app .ge-chrome{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:20px;\n  padding:18px 40px;background:rgba(8,14,24,.94);border-bottom:1px solid var(--line-gold);\n  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);}\n#geoestate-app .ge-brand{display:flex;align-items:center;gap:12px;}\n#geoestate-app .ge-diamond{width:19px;height:19px;transform:rotate(45deg);border:1px solid var(--gold);position:relative;}\n#geoestate-app .ge-diamond::after{content:\"\";position:absolute;inset:5px;background:var(--gold);opacity:.85;}\n#geoestate-app .ge-wordmark{font-family:'Fraunces',serif;font-weight:400;font-size:16px;letter-spacing:.28em;color:var(--ivory);text-transform:uppercase;padding-left:2px;}\n#geoestate-app .ge-wordmark b{color:var(--gold);font-weight:400;}\n#geoestate-app .ge-chrome-meta{font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:10px;}\n#geoestate-app .ge-chrome-meta::before{content:\"\";width:6px;height:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px var(--gold);}\n\n\/* document *\/\n#geoestate-app .ge-doc{position:relative;z-index:2;max-width:960px;margin:0 auto;padding:28px 40px 120px;}\n#geoestate-app .rp{animation:rp-in .6s var(--ease) both;}\n@keyframes rp-in{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:none;}}\n\n\/* COVER *\/\n#geoestate-app .rp-cover{position:relative;overflow:hidden;border:1px solid var(--line-gold);border-radius:22px;padding:64px 56px 52px;\n  background:linear-gradient(160deg,rgba(20,35,62,.7),rgba(9,17,31,.65));box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 50px 110px -50px rgba(0,0,0,.9);}\n#geoestate-app .rp-cover::before{content:\"\";position:absolute;inset:0;pointer-events:none;background:radial-gradient(80% 60% at 85% -10%,rgba(198,166,100,.14),transparent 55%);}\n#geoestate-app .rp-conf{display:inline-flex;align-items:center;gap:10px;font-size:10.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:34px;}\n#geoestate-app .rp-conf::before{content:\"\";width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 10px var(--gold);}\n#geoestate-app .rp-cover-title{font-family:'Fraunces',serif;font-weight:300;font-size:clamp(38px,5.4vw,66px);line-height:1;letter-spacing:-.015em;color:var(--ivory);max-width:16ch;}\n#geoestate-app .rp-cover-title em{font-style:italic;color:var(--gold-bright);font-weight:400;}\n#geoestate-app .rp-cover-sub{margin-top:22px;font-size:16px;color:var(--body);font-weight:300;max-width:52ch;line-height:1.6;}\n#geoestate-app .rp-cover-meta{margin-top:44px;display:flex;flex-wrap:wrap;gap:0;border-top:1px solid var(--line-gold);}\n#geoestate-app .rp-cm{padding:22px 34px 4px 0;margin-right:34px;border-right:1px solid var(--line-gold);}\n#geoestate-app .rp-cm:last-child{border-right:none;margin-right:0;}\n#geoestate-app .rp-cm-l{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;}\n#geoestate-app .rp-cm-v{font-family:'Fraunces',serif;font-size:19px;color:var(--ivory);font-weight:400;}\n#geoestate-app .rp-cm-v.gold{color:var(--gold-bright);}\n\n\/* SECTION *\/\n#geoestate-app .rp-sec{margin-top:64px;}\n#geoestate-app .rp-sec-head{display:flex;align-items:baseline;gap:18px;margin-bottom:26px;}\n#geoestate-app .rp-sec-no{font-family:'Fraunces',serif;font-style:italic;font-size:15px;color:var(--gold);flex-shrink:0;padding-top:3px;min-width:34px;}\n#geoestate-app .rp-sec-h{font-family:'Fraunces',serif;font-weight:400;font-size:clamp(23px,2.6vw,30px);color:var(--ivory);letter-spacing:-.005em;line-height:1.15;}\n#geoestate-app .rp-sec-line{flex:1;height:1px;background:linear-gradient(90deg,var(--line-gold),transparent);align-self:center;margin-left:6px;}\n#geoestate-app .rp-lead{font-size:16.5px;line-height:1.72;color:var(--body);font-weight:300;max-width:74ch;}\n#geoestate-app .rp-lead strong{color:var(--ivory);font-weight:500;}\n#geoestate-app .rp-lead em{color:var(--gold-bright);font-style:normal;}\n#geoestate-app .rp-p{margin-top:16px;}\n\n\/* card base *\/\n#geoestate-app .rp-card{border:1px solid var(--line-gold);border-radius:18px;background:linear-gradient(180deg,rgba(18,32,56,.5),rgba(10,20,36,.45));\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);}\n\n\/* score cards row *\/\n#geoestate-app .rp-scores{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:18px;align-items:stretch;}\n#geoestate-app .rp-gauge{padding:30px 30px 28px;display:flex;flex-direction:column;align-items:center;text-align:center;}\n#geoestate-app .rp-gauge .ring{position:relative;width:158px;height:158px;margin-bottom:20px;}\n#geoestate-app .rp-gauge .ring svg{width:100%;height:100%;transform:rotate(-90deg);}\n#geoestate-app .rp-gauge .ring .core{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;}\n#geoestate-app .rp-gauge .num{font-family:'Fraunces',serif;font-weight:300;font-size:48px;color:var(--ivory);line-height:1;}\n#geoestate-app .rp-gauge .num span{font-size:19px;color:var(--muted);}\n#geoestate-app .rp-gauge .band{margin-top:6px;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);}\n#geoestate-app .rp-gauge .g-title{font-family:'Fraunces',serif;font-size:19px;color:var(--ivory);}\n#geoestate-app .rp-gauge .g-desc{margin-top:8px;font-size:13px;color:var(--muted);font-weight:300;line-height:1.5;}\n#geoestate-app .rp-mini{padding:26px 26px;display:flex;flex-direction:column;justify-content:center;}\n#geoestate-app .rp-mini .m-l{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);}\n#geoestate-app .rp-mini .m-bar{margin-top:16px;height:6px;border-radius:6px;background:rgba(198,166,100,.14);overflow:hidden;}\n#geoestate-app .rp-mini .m-bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--gold-deep),var(--gold-bright));}\n#geoestate-app .rp-mini .m-v{margin-top:14px;font-family:'Fraunces',serif;font-size:26px;color:var(--ivory);}\n#geoestate-app .rp-mini .m-v small{font-size:14px;color:var(--muted);font-family:'Inter';}\n\n\/* metric grid *\/\n#geoestate-app .rp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}\n#geoestate-app .rp-grid.g3{grid-template-columns:repeat(3,1fr);}\n#geoestate-app .rp-metric{padding:24px 24px;}\n#geoestate-app .rp-metric .l{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);}\n#geoestate-app .rp-metric .v{margin-top:14px;font-family:'Fraunces',serif;font-weight:400;font-size:30px;color:var(--ivory);line-height:1;letter-spacing:-.01em;}\n#geoestate-app .rp-metric .v small{font-size:15px;color:var(--muted);}\n#geoestate-app .rp-metric .d{margin-top:12px;font-size:12.5px;display:inline-flex;align-items:center;gap:6px;color:var(--muted);}\n#geoestate-app .rp-metric .d.up{color:var(--pos);}\n#geoestate-app .rp-metric .d.down{color:var(--neg);}\n#geoestate-app .rp-metric .d .ar{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;}\n#geoestate-app .rp-metric .d.up .ar{border-bottom:6px solid var(--pos);}\n#geoestate-app .rp-metric .d.down .ar{border-top:6px solid var(--neg);}\n\n\/* two-column *\/\n#geoestate-app .rp-two{display:grid;grid-template-columns:1fr 1fr;gap:20px;}\n#geoestate-app .rp-two.wide{grid-template-columns:1.4fr 1fr;}\n\n\/* chart *\/\n#geoestate-app .rp-chart{padding:28px 28px 22px;}\n#geoestate-app .rp-chart-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:22px;gap:14px;}\n#geoestate-app .rp-chart-title{font-family:'Fraunces',serif;font-size:18px;color:var(--ivory);}\n#geoestate-app .rp-chart-tag{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line-gold);border-radius:999px;padding:5px 11px;white-space:nowrap;}\n#geoestate-app .rp-bars{display:flex;align-items:flex-end;gap:14px;height:170px;padding-top:10px;}\n#geoestate-app .rp-bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:10px;height:100%;}\n#geoestate-app .rp-bar .col{width:100%;max-width:46px;border-radius:7px 7px 3px 3px;background:linear-gradient(180deg,var(--gold-bright),var(--gold-deep));box-shadow:0 -2px 14px -4px rgba(198,166,100,.5);position:relative;transition:height .8s var(--ease);}\n#geoestate-app .rp-bar .col.ghost{background:linear-gradient(180deg,rgba(198,166,100,.24),rgba(198,166,100,.06));box-shadow:none;}\n#geoestate-app .rp-bar .col .cap{position:absolute;top:-22px;left:0;right:0;text-align:center;font-size:11px;color:var(--body);font-variant-numeric:tabular-nums;}\n#geoestate-app .rp-bar .bl{font-size:11px;color:var(--muted);letter-spacing:.04em;}\n#geoestate-app .rp-area{width:100%;height:190px;display:block;}\n#geoestate-app .rp-legend{display:flex;gap:20px;margin-top:16px;flex-wrap:wrap;}\n#geoestate-app .rp-legend span{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);}\n#geoestate-app .rp-legend i{width:12px;height:3px;border-radius:2px;}\n\n\/* donut *\/\n#geoestate-app .rp-donut{display:flex;align-items:center;gap:26px;padding:28px;}\n#geoestate-app .rp-donut svg{width:150px;height:150px;flex-shrink:0;}\n#geoestate-app .rp-donut .keys{display:flex;flex-direction:column;gap:14px;}\n#geoestate-app .rp-donut .keys div{display:flex;align-items:center;gap:12px;font-size:13.5px;color:var(--body);}\n#geoestate-app .rp-donut .keys i{width:10px;height:10px;border-radius:3px;flex-shrink:0;}\n#geoestate-app .rp-donut .keys b{color:var(--ivory);font-weight:500;margin-left:auto;padding-left:16px;font-variant-numeric:tabular-nums;}\n\n\/* table *\/\n#geoestate-app .rp-table{overflow:hidden;}\n#geoestate-app .rp-table table{width:100%;border-collapse:collapse;}\n#geoestate-app .rp-table th{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:500;text-align:left;padding:18px 22px;border-bottom:1px solid var(--line-gold);}\n#geoestate-app .rp-table th.r,#geoestate-app .rp-table td.r{text-align:right;}\n#geoestate-app .rp-table td{padding:17px 22px;font-size:14.5px;color:var(--body);border-bottom:1px solid rgba(198,166,100,.07);font-variant-numeric:tabular-nums;}\n#geoestate-app .rp-table tr:last-child td{border-bottom:none;}\n#geoestate-app .rp-table td.name{color:var(--ivory);font-family:'Fraunces',serif;font-size:15.5px;}\n#geoestate-app .rp-table .pill{display:inline-block;font-size:11px;letter-spacing:.06em;padding:4px 12px;border-radius:999px;border:1px solid var(--line-gold);color:var(--gold-bright);}\n#geoestate-app .rp-table .stars{color:var(--gold);letter-spacing:2px;font-size:13px;}\n\n\/* reco \/ callout *\/\n#geoestate-app .rp-reco{position:relative;padding:34px 36px;border-radius:18px;overflow:hidden;border:1px solid var(--line-gold);\n  background:linear-gradient(160deg,rgba(198,166,100,.12),rgba(14,27,48,.5));box-shadow:inset 0 1px 0 rgba(255,255,255,.06);}\n#geoestate-app .rp-reco::before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--gold-bright),var(--gold-deep));}\n#geoestate-app .rp-reco .r-l{font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold);margin-bottom:14px;}\n#geoestate-app .rp-reco .r-t{font-family:'Fraunces',serif;font-weight:300;font-size:clamp(21px,2.4vw,27px);color:var(--ivory);line-height:1.3;}\n#geoestate-app .rp-reco .r-t em{font-style:italic;color:var(--gold-bright);}\n\n\/* strengths \/ risks list *\/\n#geoestate-app .rp-list{padding:28px 30px;}\n#geoestate-app .rp-list h4{font-family:'Fraunces',serif;font-size:18px;color:var(--ivory);margin-bottom:20px;display:flex;align-items:center;gap:12px;}\n#geoestate-app .rp-list h4 .ic{width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line-gold);color:var(--gold);}\n#geoestate-app .rp-list h4 .ic svg{width:14px;height:14px;}\n#geoestate-app .rp-item{display:flex;gap:14px;padding:13px 0;border-bottom:1px solid rgba(198,166,100,.07);font-size:14.5px;line-height:1.5;color:var(--body);font-weight:300;}\n#geoestate-app .rp-item:last-child{border-bottom:none;}\n#geoestate-app .rp-item .dot{flex-shrink:0;width:7px;height:7px;border-radius:50%;margin-top:7px;background:var(--gold);}\n#geoestate-app .rp-item.risk .dot{background:var(--neg);}\n#geoestate-app .rp-item .sev{margin-left:auto;padding-left:14px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap;align-self:center;}\n\n\/* verdict *\/\n#geoestate-app .rp-verdict{position:relative;overflow:hidden;border:1px solid var(--gold);border-radius:22px;padding:48px 52px;text-align:center;\n  background:linear-gradient(160deg,rgba(20,35,62,.72),rgba(9,17,31,.7));box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 40px 90px -46px rgba(198,166,100,.3);}\n#geoestate-app .rp-verdict::before{content:\"\";position:absolute;inset:0;pointer-events:none;background:radial-gradient(70% 80% at 50% -10%,rgba(198,166,100,.16),transparent 60%);}\n#geoestate-app .rp-verdict .v-l{font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:22px;}\n#geoestate-app .rp-verdict .v-badge{display:inline-flex;align-items:center;gap:12px;font-family:'Fraunces',serif;font-style:italic;font-weight:400;font-size:clamp(30px,4vw,46px);color:var(--gold-bright);margin-bottom:18px;}\n#geoestate-app .rp-verdict .v-t{font-family:'Fraunces',serif;font-weight:300;font-size:clamp(19px,2.2vw,25px);color:var(--ivory);line-height:1.45;max-width:60ch;margin:0 auto;}\n#geoestate-app .rp-verdict .v-scale{margin-top:30px;display:flex;justify-content:center;gap:8px;}\n#geoestate-app .rp-verdict .v-scale i{width:40px;height:4px;border-radius:3px;background:rgba(198,166,100,.18);}\n#geoestate-app .rp-verdict .v-scale i.on{background:var(--gold);}\n\n\/* advisor CTA *\/\n#geoestate-app .rp-cta{margin-top:56px;position:relative;overflow:hidden;border:1px solid var(--line-gold);border-radius:22px;padding:46px 48px;\n  display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap;\n  background:linear-gradient(160deg,rgba(18,32,56,.7),rgba(9,17,31,.65));}\n#geoestate-app .rp-cta::before{content:\"\";position:absolute;inset:0;pointer-events:none;background:radial-gradient(60% 80% at 90% 0%,rgba(198,166,100,.12),transparent 55%);}\n#geoestate-app .rp-cta .cta-l{position:relative;}\n#geoestate-app .rp-cta .cta-eyebrow{font-size:10.5px;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);margin-bottom:14px;}\n#geoestate-app .rp-cta .cta-h{font-family:'Fraunces',serif;font-weight:300;font-size:clamp(24px,3vw,34px);color:var(--ivory);line-height:1.15;}\n#geoestate-app .rp-cta .cta-h em{font-style:italic;color:var(--gold-bright);}\n#geoestate-app .rp-cta .cta-sub{margin-top:12px;font-size:14.5px;color:var(--muted);font-weight:300;max-width:46ch;}\n\n\/* buttons *\/\n#geoestate-app .ge-btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;font-size:13px;letter-spacing:.14em;text-transform:uppercase;font-weight:500;\n  border-radius:999px;padding:17px 32px;transition:transform .35s var(--ease),box-shadow .35s var(--ease),background .35s var(--ease),border-color .35s;white-space:nowrap;}\n#geoestate-app .ge-arrow{width:16px;height:16px;position:relative;transition:transform .35s var(--ease);}\n#geoestate-app .ge-arrow::before{content:\"\";position:absolute;top:50%;left:0;width:100%;height:1.4px;background:currentColor;transform:translateY(-50%);}\n#geoestate-app .ge-arrow::after{content:\"\";position:absolute;top:50%;right:0;width:6px;height:6px;border-top:1.4px solid currentColor;border-right:1.4px solid currentColor;transform:translateY(-50%) rotate(45deg);}\n#geoestate-app .ge-btn:hover .ge-arrow{transform:translateX(4px);}\n#geoestate-app .ge-btn--gold{background:linear-gradient(180deg,var(--gold-bright),var(--gold) 55%,var(--gold-deep));color:#231a08;\n  box-shadow:0 14px 40px -14px rgba(198,166,100,.6),inset 0 1px 0 rgba(255,255,255,.35);}\n#geoestate-app .ge-btn--gold:hover{transform:translateY(-3px);box-shadow:0 22px 54px -16px rgba(198,166,100,.75),inset 0 1px 0 rgba(255,255,255,.45);}\n#geoestate-app .ge-btn--glass{background:var(--glass);color:var(--ivory);border:1px solid var(--line-gold);\n  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);}\n#geoestate-app .ge-btn--glass:hover{transform:translateY(-3px);border-color:rgba(198,166,100,.4);background:rgba(20,36,62,.7);}\n#geoestate-app .rp-icon-btn .bi{width:16px;height:16px;}\n\n\/* actions *\/\n#geoestate-app .rp-actions{margin-top:40px;padding-top:38px;border-top:1px solid var(--line-gold);display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:center;}\n#geoestate-app .rp-actions .spacer{flex-basis:100%;height:0;}\n#geoestate-app .rp-foot{margin-top:44px;text-align:center;font-size:11px;letter-spacing:.06em;color:var(--muted);line-height:1.7;}\n#geoestate-app .rp-foot b{color:var(--gold);font-weight:500;}\n\n#geoestate-app .rp-cover-logo{display:none;}\n#geoestate-app picture.geo-logo{display:block;line-height:0;}\n#geoestate-app picture.geo-logo img{width:220px;height:auto;display:block;object-fit:contain;}\n@media (max-width:1024px){#geoestate-app picture.geo-logo img{width:180px;}}\n@media (max-width:640px){#geoestate-app picture.geo-logo img{width:150px;}}\n#geoestate-app .ge-print-header,#geoestate-app .ge-print-footer{display:none;}\n\n@media (max-width:820px){\n  #geoestate-app .ge-chrome{padding:16px 20px;flex-direction:column;align-items:stretch;gap:14px;}\n  #geoestate-app .ge-doc{padding:20px 18px 100px;}\n  #geoestate-app .rp-cover{padding:40px 26px 34px;}\n  #geoestate-app .rp-scores,#geoestate-app .rp-grid,#geoestate-app .rp-grid.g3,#geoestate-app .rp-two,#geoestate-app .rp-two.wide{grid-template-columns:1fr;}\n  #geoestate-app .rp-cm{border-right:none;padding-right:0;margin-right:0;}\n  #geoestate-app .rp-cta{padding:32px 26px;}\n}\n@media (prefers-reduced-motion:reduce){#geoestate-app *{animation:none!important;transition-duration:.001ms!important;}}\n\n\/* PRINT \u2014 confidential memorandum *\/\n#geoestate-app .ge-print-header,#geoestate-app .ge-print-footer{display:none;}\n@media print{\n  @page{\n    size:A4;margin:24mm 16mm 20mm 16mm;\n    @bottom-center{content:\"Page \" counter(page) \" of \" counter(pages);font-family:'Inter',sans-serif;font-size:8pt;letter-spacing:.08em;color:#8A93A6;}\n  }\n  html,body{background:#0A1424 !important;}\n  #geoestate-app{-webkit-print-color-adjust:exact;print-color-adjust:exact;overflow:visible;}\n  #geoestate-app .ge-chrome,#geoestate-app .rp-actions,#geoestate-app #ge-print-only{display:none !important;}\n  #geoestate-app .ge-atmos{position:absolute;}\n  #geoestate-app .ge-doc{max-width:none;padding:0;}\n  #geoestate-app .rp{animation:none;}\n\n  \/* running header + footer \u2014 position:fixed repeats on every printed page in Chrome *\/\n  #geoestate-app .ge-print-header{display:flex !important;position:fixed;top:-16mm;left:0;right:0;z-index:50;\n    align-items:center;justify-content:space-between;gap:12px;padding-bottom:6mm;border-bottom:1px solid rgba(198,166,100,.4);}\n  #geoestate-app .ge-print-header img{width:220px;height:auto;display:block;object-fit:contain;}\n  #geoestate-app .ge-print-header .ph-meta{font-size:8.5pt;letter-spacing:.16em;text-transform:uppercase;color:#8A93A6;text-align:right;line-height:1.5;}\n  #geoestate-app .ge-print-header .ph-meta b{color:#C6A664;font-weight:600;}\n  #geoestate-app .ge-print-footer{display:flex !important;position:fixed;bottom:-9mm;left:0;right:0;z-index:50;\n    align-items:center;justify-content:center;gap:12px;padding-top:4mm;border-top:1px solid rgba(198,166,100,.3);\n    font-size:8pt;letter-spacing:.05em;color:#8A93A6;text-align:center;}\n  #geoestate-app .ge-print-footer b{color:#C6A664;font-weight:600;}\n  #geoestate-app .ge-doc{counter-reset:geopage;}\n\n  \/* cover carries its own large logo; the running header still shows on it too so the mark never disappears *\/\n  #geoestate-app .rp-cover{break-after:page;position:relative;}\n  #geoestate-app .rp-cover-logo{display:block;width:260px;height:auto;margin:0 auto 30px;object-fit:contain;}\n\n  \/* avoid breaking cards\/sections awkwardly, without forcing large blank gaps *\/\n  #geoestate-app .rp-card,#geoestate-app .rp-reco,#geoestate-app .rp-gauge,#geoestate-app .rp-cta,#geoestate-app .rp-verdict{break-inside:avoid;}\n  #geoestate-app .rp-sec-head{break-after:avoid;break-inside:avoid;}\n  #geoestate-app .rp-sec{break-inside:avoid-page;}\n  #geoestate-app .rp-scores,#geoestate-app .rp-grid,#geoestate-app .rp-two{break-inside:avoid;}\n}\n\n<\/style>\n<\/head>\n<body style=\"margin:0;\">\n<template id=\"__bundler_thumbnail\" data-bg-color=\"#0A1424\">\n  <svg viewBox=\"0 0 1200 800\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n    <rect width=\"1200\" height=\"800\" fill=\"#0A1424\"\/>\n    <circle cx=\"600\" cy=\"400\" r=\"150\" fill=\"none\" stroke=\"#C6A664\" stroke-width=\"6\" opacity=\"0.5\"\/>\n    <text x=\"600\" y=\"430\" text-anchor=\"middle\" font-family=\"Georgia, serif\" font-size=\"120\" fill=\"#C6A664\">G<\/text>\n  <\/svg>\n<\/template>\n<div id=\"geoestate-app\">\n  <div id=\"scr-a\" class=\"geo-phase is-current\">\n  <!-- ATMOSPHERE -->\n  <div class=\"ge-atmos\" aria-hidden=\"true\">\n    <div class=\"ge-lines\" id=\"ge-lines\"><\/div>\n    <div class=\"ge-skyline\">\n      <svg viewBox=\"0 0 1440 400\" preserveAspectRatio=\"xMidYMax slice\">\n        <defs>\n          <linearGradient id=\"ge-sk\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n            <stop offset=\"0\" stop-color=\"#0C1A30\"\/>\n            <stop offset=\"1\" stop-color=\"#060C16\"\/>\n          <\/linearGradient>\n        <\/defs>\n        <g fill=\"url(#ge-sk)\">\n          <rect x=\"40\" y=\"250\" width=\"46\" height=\"150\"\/>\n          <rect x=\"96\" y=\"210\" width=\"34\" height=\"190\"\/>\n          <rect x=\"140\" y=\"280\" width=\"60\" height=\"120\"\/>\n          <rect x=\"210\" y=\"180\" width=\"30\" height=\"220\"\/>\n          <rect x=\"250\" y=\"300\" width=\"48\" height=\"100\"\/>\n          <rect x=\"470\" y=\"240\" width=\"40\" height=\"160\"\/>\n          <rect x=\"518\" y=\"200\" width=\"28\" height=\"200\"\/>\n          <rect x=\"560\" y=\"270\" width=\"54\" height=\"130\"\/>\n          <rect x=\"1140\" y=\"230\" width=\"44\" height=\"170\"\/>\n          <rect x=\"1194\" y=\"270\" width=\"60\" height=\"130\"\/>\n          <rect x=\"1264\" y=\"200\" width=\"30\" height=\"200\"\/>\n          <rect x=\"1304\" y=\"290\" width=\"52\" height=\"110\"\/>\n          <rect x=\"1364\" y=\"250\" width=\"40\" height=\"150\"\/>\n          <!-- Burj-like spire cluster -->\n          <polygon points=\"360,400 380,60 400,400\"\/>\n          <rect x=\"372\" y=\"120\" width=\"16\" height=\"280\"\/>\n          <polygon points=\"700,400 716,150 728,150 744,400\"\/>\n          <polygon points=\"880,400 900,110 920,400\"\/>\n          <rect x=\"892\" y=\"150\" width=\"16\" height=\"250\"\/>\n          <rect x=\"960\" y=\"240\" width=\"40\" height=\"160\"\/>\n          <rect x=\"1006\" y=\"285\" width=\"56\" height=\"115\"\/>\n        <\/g>\n      <\/svg>\n    <\/div>\n    <div class=\"ge-vignette\"><\/div>\n    <div class=\"ge-grain\"><\/div>\n  <\/div>\n\n  <!-- STAGE -->\n  <div class=\"ge-stage\">\n\n    <!-- SCREEN 1 : LANDING -->\n    <section class=\"ge-screen is-active\" id=\"ge-landing\" data-screen-label=\"Landing\">\n      <div class=\"ge-top ge-rise\" style=\"--d:80ms\">\n        <div class=\"ge-brand\">\n          <picture class=\"geo-logo\"><source media=\"print\" srcset=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-pdf.png\"><source media=\"(max-width:640px)\" srcset=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-mobile.png\"><img decoding=\"async\" src=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-laptop.png\" alt=\"GeoEstate\" onerror=\"this.onerror=null;this.src=&quot;assets\/geoestate-lockup.png&quot;;\" style=\"display:block;object-fit:contain;image-rendering:auto;filter:none;box-shadow:none;mix-blend-mode:normal;backdrop-filter:none;mask:none;opacity:1\"><\/picture>\n        <\/div>\n        <div class=\"ge-locale\">Dubai \u00b7 Private Intelligence<\/div>\n      <\/div>\n\n      <div class=\"ge-hero\">\n        <div class=\"ge-eyebrow ge-rise\" style=\"--d:180ms\">Investment Intelligence<\/div>\n        <h1 class=\"ge-h1 ge-rise\" style=\"--d:280ms\">Where capital<br>meets <em>certainty.<\/em><\/h1>\n        <p class=\"ge-lead ge-rise\" style=\"--d:420ms\">\n          A private, guided analysis of Dubai's real estate market \u2014 engineered for those who\n          measure opportunity in decades, not listings.\n        <\/p>\n        <div class=\"ge-cta-row ge-rise\" style=\"--d:560ms\">\n          <button class=\"ge-btn ge-btn--gold\" id=\"ge-start\">Start Analysis <span class=\"ge-arrow\"><\/span><\/button>\n          <span class=\"ge-scroll-note\">Confidential \u00b7 3 minutes<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"ge-foot ge-rise\" style=\"--d:700ms\">\n        <p class=\"ge-fine\">Prepared for institutional investors, private wealth and luxury developers.<\/p>\n        <p class=\"ge-fine\" style=\"text-align:right\">Est. MMXXV \u00b7 By invitation<\/p>\n      <\/div>\n    <\/section>\n\n    <!-- SCREEN 2 : NAME -->\n    <section class=\"ge-screen\" id=\"ge-name\" data-screen-label=\"Name\">\n      <div class=\"ge-name-inner\">\n        <div class=\"ge-q-eyebrow ge-rise\" style=\"--d:60ms\">Let's Begin<\/div>\n        <h2 class=\"ge-q-h ge-rise\" style=\"--d:160ms\">What should GeoEstate <em>call you?<\/em><\/h2>\n        <p class=\"ge-q-sub ge-rise\" style=\"--d:280ms\">Your report will be prepared in your name.<\/p>\n\n        <div class=\"ge-field ge-rise\" id=\"ge-field\" style=\"--d:400ms\">\n          <input type=\"text\" id=\"ge-name-input\" placeholder=\"Your name\" autocomplete=\"name\" spellcheck=\"false\">\n          <div class=\"ge-underline\"><\/div>\n        <\/div>\n\n        <div class=\"ge-name-nav ge-rise\" style=\"--d:520ms\">\n          <button class=\"ge-btn ge-btn--glass\" data-back>Back<\/button>\n          <button class=\"ge-btn ge-btn--gold\" id=\"ge-name-continue\" disabled>Continue <span class=\"ge-arrow\"><\/span><\/button>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- SCREEN 3 : PRODUCT SELECTION -->\n    <section class=\"ge-screen\" id=\"ge-product\" data-screen-label=\"Product Selection\">\n      <div class=\"ge-prod-head\">\n        <div class=\"ge-q-eyebrow ge-rise\" style=\"--d:60ms\">Your Focus<\/div>\n        <h2 class=\"ge-prod-h ge-rise\" style=\"--d:160ms\" id=\"ge-prod-h\">Which intelligence shall we <em>prepare?<\/em><\/h2>\n        <p class=\"ge-prod-sub ge-rise\" style=\"--d:260ms\">Select a module to begin your tailored analysis.<\/p>\n      <\/div>\n\n      <div class=\"ge-grid\">\n        <button class=\"ge-card ge-rise\" style=\"--d:360ms\" data-product=\"Investment Advisor\">\n          <span class=\"ge-card-index\">I<\/span>\n          <span class=\"ge-card-icon\">\n            <svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M20 4l14 8v16l-14 8-14-8V12z\"\/><path d=\"M20 12v16M12 16v8M28 16v8\" stroke-width=\"1\"\/><\/svg>\n          <\/span>\n          <span class=\"ge-card-title\">Investment Advisor<\/span>\n          <span class=\"ge-card-desc\">A personal strategy engine that aligns capital, horizon and risk with the right assets.<\/span>\n          <span class=\"ge-card-foot\">Select <span class=\"ge-arrow\"><\/span><\/span>\n        <\/button>\n\n        <button class=\"ge-card ge-rise\" style=\"--d:440ms\" data-product=\"Opportunity Radar\">\n          <span class=\"ge-card-index\">II<\/span>\n          <span class=\"ge-card-icon\">\n            <svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><circle cx=\"20\" cy=\"20\" r=\"15\"\/><circle cx=\"20\" cy=\"20\" r=\"9\" stroke-width=\"1\"\/><circle cx=\"20\" cy=\"20\" r=\"2.5\" fill=\"currentColor\" stroke=\"none\"\/><path d=\"M20 20l11-7\" stroke-width=\"1\"\/><\/svg>\n          <\/span>\n          <span class=\"ge-card-title\">Opportunity Radar<\/span>\n          <span class=\"ge-card-desc\">Surface undervalued districts and emerging corridors before the market repositions.<\/span>\n          <span class=\"ge-card-foot\">Select <span class=\"ge-arrow\"><\/span><\/span>\n        <\/button>\n\n        <button class=\"ge-card ge-rise\" style=\"--d:520ms\" data-product=\"Property Evaluation\">\n          <span class=\"ge-card-index\">III<\/span>\n          <span class=\"ge-card-icon\">\n            <svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M8 18L20 8l12 10v14H8z\"\/><path d=\"M16 32V22h8v10\" stroke-width=\"1\"\/><\/svg>\n          <\/span>\n          <span class=\"ge-card-title\">Property Evaluation<\/span>\n          <span class=\"ge-card-desc\">A rigorous valuation of any asset \u2014 yield, appreciation and true intrinsic worth.<\/span>\n          <span class=\"ge-card-foot\">Select <span class=\"ge-arrow\"><\/span><\/span>\n        <\/button>\n\n        <button class=\"ge-card ge-rise\" style=\"--d:600ms\" data-product=\"Market Intelligence\">\n          <span class=\"ge-card-index\">IV<\/span>\n          <span class=\"ge-card-icon\">\n            <svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M6 30l8-9 7 5 13-14\"\/><path d=\"M27 12h7v7\" stroke-width=\"1\"\/><path d=\"M6 34h28\" stroke-width=\"1\"\/><\/svg>\n          <\/span>\n          <span class=\"ge-card-title\">Market Intelligence<\/span>\n          <span class=\"ge-card-desc\">The macro view \u2014 liquidity, demand cycles and the forces shaping tomorrow's price.<\/span>\n          <span class=\"ge-card-foot\">Select <span class=\"ge-arrow\"><\/span><\/span>\n        <\/button>\n      <\/div>\n\n      <div class=\"ge-name-nav ge-rise\" style=\"--d:700ms;justify-content:center;margin-top:44px;\">\n        <button class=\"ge-btn ge-btn--glass\" data-back>Back<\/button>\n      <\/div>\n    <\/section>\n\n  <\/div>\n\n  <!-- PROGRESS -->\n  <div class=\"ge-progress\" aria-hidden=\"true\">\n    <span class=\"ge-dot on\" data-dot=\"0\"><\/span>\n    <span class=\"ge-dot\" data-dot=\"1\"><\/span>\n    <span class=\"ge-dot\" data-dot=\"2\"><\/span>\n  <\/div>\n<\/div>\n  <div id=\"scr-b\" class=\"geo-phase\">\n  <div class=\"ge-atmos\" aria-hidden=\"true\">\n    <div class=\"ge-lines\" id=\"ge-lines\"><\/div>\n    <div class=\"ge-skyline\">\n      <svg viewBox=\"0 0 1440 400\" preserveAspectRatio=\"xMidYMax slice\">\n        <defs><linearGradient id=\"ge-sk\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop offset=\"0\" stop-color=\"#0C1A30\"\/><stop offset=\"1\" stop-color=\"#060C16\"\/><\/linearGradient><\/defs>\n        <g fill=\"url(#ge-sk)\">\n          <rect x=\"40\" y=\"250\" width=\"46\" height=\"150\"\/><rect x=\"96\" y=\"210\" width=\"34\" height=\"190\"\/><rect x=\"140\" y=\"280\" width=\"60\" height=\"120\"\/>\n          <rect x=\"210\" y=\"180\" width=\"30\" height=\"220\"\/><rect x=\"250\" y=\"300\" width=\"48\" height=\"100\"\/><rect x=\"470\" y=\"240\" width=\"40\" height=\"160\"\/>\n          <rect x=\"518\" y=\"200\" width=\"28\" height=\"200\"\/><rect x=\"560\" y=\"270\" width=\"54\" height=\"130\"\/><rect x=\"1140\" y=\"230\" width=\"44\" height=\"170\"\/>\n          <rect x=\"1194\" y=\"270\" width=\"60\" height=\"130\"\/><rect x=\"1264\" y=\"200\" width=\"30\" height=\"200\"\/><rect x=\"1304\" y=\"290\" width=\"52\" height=\"110\"\/>\n          <rect x=\"1364\" y=\"250\" width=\"40\" height=\"150\"\/>\n          <polygon points=\"360,400 380,60 400,400\"\/><rect x=\"372\" y=\"120\" width=\"16\" height=\"280\"\/>\n          <polygon points=\"700,400 716,150 728,150 744,400\"\/><polygon points=\"880,400 900,110 920,400\"\/><rect x=\"892\" y=\"150\" width=\"16\" height=\"250\"\/>\n          <rect x=\"960\" y=\"240\" width=\"40\" height=\"160\"\/><rect x=\"1006\" y=\"285\" width=\"56\" height=\"115\"\/>\n        <\/g>\n      <\/svg>\n    <\/div>\n    <div class=\"ge-vignette\"><\/div>\n    <div class=\"ge-grain\"><\/div>\n  <\/div>\n\n  <div class=\"ge-shell\">\n    <div class=\"ge-topbar\">\n      <div class=\"ge-brand\"><picture class=\"geo-logo\"><source media=\"print\" srcset=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-pdf.png\"><source media=\"(max-width:640px)\" srcset=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-mobile.png\"><img decoding=\"async\" src=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-laptop.png\" alt=\"GeoEstate\" onerror=\"this.onerror=null;this.src=&quot;assets\/geoestate-lockup.png&quot;;\" style=\"display:block;object-fit:contain;image-rendering:auto;filter:none;box-shadow:none;mix-blend-mode:normal;backdrop-filter:none;mask:none;opacity:1\"><\/picture><\/div>\n      <div class=\"ge-crumb\" id=\"ge-crumb\">Private Consultation<\/div>\n    <\/div>\n    <div class=\"ge-progwrap\" id=\"ge-progwrap\" style=\"visibility:hidden;\">\n      <div class=\"ge-progtrack\"><div class=\"ge-progfill\" id=\"ge-progfill\"><\/div><\/div>\n      <div class=\"ge-stepno\" id=\"ge-stepno\"><\/div>\n    <\/div>\n    <div class=\"ge-body\"><div class=\"ge-q\" id=\"ge-qroot\"><\/div><\/div>\n  <\/div>\n\n  <div class=\"ge-note\" id=\"ge-note\"><\/div>\n<\/div>\n  <div id=\"scr-c\" class=\"geo-phase\">\n  <div class=\"ge-atmos\" aria-hidden=\"true\">\n    <div class=\"ge-lines\" id=\"ge-lines\"><\/div>\n    <div class=\"ge-skyline\">\n      <svg viewBox=\"0 0 1440 400\" preserveAspectRatio=\"xMidYMax slice\">\n        <defs><linearGradient id=\"ge-sk\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop offset=\"0\" stop-color=\"#0C1A30\"\/><stop offset=\"1\" stop-color=\"#060C16\"\/><\/linearGradient><\/defs>\n        <g fill=\"url(#ge-sk)\">\n          <rect x=\"40\" y=\"250\" width=\"46\" height=\"150\"\/><rect x=\"96\" y=\"210\" width=\"34\" height=\"190\"\/><rect x=\"140\" y=\"280\" width=\"60\" height=\"120\"\/>\n          <rect x=\"210\" y=\"180\" width=\"30\" height=\"220\"\/><rect x=\"250\" y=\"300\" width=\"48\" height=\"100\"\/><rect x=\"470\" y=\"240\" width=\"40\" height=\"160\"\/>\n          <rect x=\"518\" y=\"200\" width=\"28\" height=\"200\"\/><rect x=\"560\" y=\"270\" width=\"54\" height=\"130\"\/><rect x=\"1140\" y=\"230\" width=\"44\" height=\"170\"\/>\n          <rect x=\"1194\" y=\"270\" width=\"60\" height=\"130\"\/><rect x=\"1264\" y=\"200\" width=\"30\" height=\"200\"\/><rect x=\"1304\" y=\"290\" width=\"52\" height=\"110\"\/>\n          <rect x=\"1364\" y=\"250\" width=\"40\" height=\"150\"\/>\n          <polygon points=\"360,400 380,60 400,400\"\/><rect x=\"372\" y=\"120\" width=\"16\" height=\"280\"\/>\n          <polygon points=\"700,400 716,150 728,150 744,400\"\/><polygon points=\"880,400 900,110 920,400\"\/><rect x=\"892\" y=\"150\" width=\"16\" height=\"250\"\/>\n          <rect x=\"960\" y=\"240\" width=\"40\" height=\"160\"\/><rect x=\"1006\" y=\"285\" width=\"56\" height=\"115\"\/>\n        <\/g>\n      <\/svg>\n    <\/div>\n    <div class=\"ge-vignette\"><\/div>\n    <div class=\"ge-grain\"><\/div>\n  <\/div>\n\n  <div class=\"ge-shell\">\n    <div class=\"ge-topbar\">\n      <div class=\"ge-brand\"><picture class=\"geo-logo\"><source media=\"print\" srcset=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-pdf.png\"><source media=\"(max-width:640px)\" srcset=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-mobile.png\"><img decoding=\"async\" src=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-laptop.png\" alt=\"GeoEstate\" onerror=\"this.onerror=null;this.src=&quot;assets\/geoestate-lockup.png&quot;;\" style=\"display:block;object-fit:contain;image-rendering:auto;filter:none;box-shadow:none;mix-blend-mode:normal;backdrop-filter:none;mask:none;opacity:1\"><\/picture><\/div>\n      <div class=\"ge-crumb\" id=\"ge-crumb\">Private Consultation<\/div>\n    <\/div>\n\n    <div class=\"ge-body\">\n      <div class=\"ge-stage\">\n\n        <!-- PHONE GATE -->\n        <section class=\"ge-scene\" id=\"scene-gate\">\n          <div class=\"ge-gate\">\n            <div class=\"ge-gate-lead\">\n              <div class=\"ge-lockmark ge-rise\" style=\"--d:60ms\">\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"4.5\" y=\"10\" width=\"15\" height=\"10\" rx=\"2\"\/><path d=\"M8 10V7a4 4 0 018 0v3\"\/><circle cx=\"12\" cy=\"15\" r=\"1.3\" fill=\"currentColor\" stroke=\"none\"\/><\/svg>\n              <\/div>\n              <div class=\"ge-eyebrow ge-rise\" style=\"--d:120ms\">Final Step<\/div>\n              <h2 class=\"ge-h ge-rise\" style=\"--d:200ms\">Your report is <em>ready.<\/em><\/h2>\n              <p class=\"ge-sub ge-rise\" style=\"--d:300ms\">Enter your mobile number to unlock your full report. We will send a secure link and keep your analysis private.<\/p>\n              <div class=\"ge-trust ge-rise\" style=\"--d:400ms\">\n                <div class=\"ge-trust-row\"><span class=\"ge-tick\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M4 12l6 6 10-12\"\/><\/svg><\/span><span>Bank-grade confidentiality \u2014 your data is never sold or shared.<\/span><\/div>\n                <div class=\"ge-trust-row\"><span class=\"ge-tick\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M4 12l6 6 10-12\"\/><\/svg><\/span><span>Instant access to your tailored intelligence report.<\/span><\/div>\n              <\/div>\n            <\/div>\n\n            <div class=\"ge-panel ge-rise\" style=\"--d:340ms\">\n              <div class=\"ge-panel-label\">Unlock Full Report<\/div>\n              <span class=\"ge-flabel\">Mobile Number<\/span>\n              <div class=\"ge-phone\">\n                <div class=\"ge-cc\" id=\"ge-cc\">\n                  <button class=\"ge-cc-btn\" id=\"ge-cc-btn\" type=\"button\" aria-haspopup=\"listbox\" aria-expanded=\"false\" aria-label=\"Select country dialing code\"><span class=\"ge-flag\" id=\"ge-cc-flag\">\ud83c\udde6\ud83c\uddea<\/span><span id=\"ge-cc-dial\">+971<\/span><span class=\"ge-caret\"><\/span><\/button>\n                  <div class=\"ge-cc-menu\" id=\"ge-cc-menu\">\n                    <div class=\"ge-cc-search\">\n                      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><circle cx=\"10.5\" cy=\"10.5\" r=\"7\"\/><path d=\"M16 16l5 5\"\/><\/svg>\n                      <input type=\"text\" id=\"ge-cc-input\" placeholder=\"Search country or code\" autocomplete=\"off\" spellcheck=\"false\" role=\"combobox\" aria-controls=\"ge-cc-list\" aria-expanded=\"true\" aria-autocomplete=\"list\">\n                    <\/div>\n                    <div class=\"ge-cc-list\" id=\"ge-cc-list\" role=\"listbox\" aria-label=\"Countries\"><\/div>\n                  <\/div>\n                <\/div>\n                <div class=\"ge-phone-field\" id=\"ge-phone-field\">\n                  <input type=\"tel\" id=\"ge-phone\" inputmode=\"numeric\" placeholder=\"50 123 4567\" autocomplete=\"tel\">\n                  <span class=\"ge-vtick\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M4 12l6 6 10-12\"\/><\/svg><\/span>\n                <\/div>\n              <\/div>\n\n              <label class=\"ge-consent\" id=\"ge-consent\">\n                <span class=\"ge-check\"><\/span>\n                <span class=\"ge-consent-txt\">I agree to receive my report and occasional market intelligence from GeoEstate. I accept the <a href=\"#\" onclick=\"return false\">Privacy Policy<\/a> and <a href=\"#\" onclick=\"return false\">Terms<\/a>.<\/span>\n              <\/label>\n\n              <button class=\"ge-btn ge-btn--gold full\" id=\"ge-unlock\" disabled>View Full Report <span class=\"ge-arrow\"><\/span><\/button>\n              <div class=\"ge-panel-fine\"><span class=\"ge-lockmini\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><rect x=\"4.5\" y=\"10\" width=\"15\" height=\"10\" rx=\"2\"\/><path d=\"M8 10V7a4 4 0 018 0v3\"\/><\/svg><\/span>Encrypted &amp; confidential \u00b7 No spam, ever<\/div>\n            <\/div>\n          <\/div>\n        <\/section>\n\n        <!-- PROCESSING -->\n        <section class=\"ge-scene\" id=\"scene-proc\">\n          <div class=\"ge-proc\">\n            <div class=\"ge-rings\">\n              <div class=\"ge-ring r1\"><svg viewBox=\"0 0 100 100\"><defs><linearGradient id=\"ge-arc\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"#E4C87F\"\/><stop offset=\"1\" stop-color=\"#9C7C43\" stop-opacity=\"0\"\/><\/linearGradient><\/defs><circle class=\"ge-ring-track\" cx=\"50\" cy=\"50\" r=\"48\"\/><circle class=\"ge-ring-arc\" cx=\"50\" cy=\"50\" r=\"48\" stroke-dasharray=\"150 452\"\/><circle class=\"dot\" cx=\"98\" cy=\"50\" r=\"1.8\"\/><\/svg><\/div>\n              <div class=\"ge-ring r2\"><svg viewBox=\"0 0 100 100\"><circle class=\"ge-ring-track\" cx=\"50\" cy=\"50\" r=\"48\"\/><circle class=\"ge-ring-arc\" cx=\"50\" cy=\"50\" r=\"48\" stroke-dasharray=\"90 462\"\/><circle class=\"dot\" cx=\"98\" cy=\"50\" r=\"1.6\"\/><\/svg><\/div>\n              <div class=\"ge-ring r3\"><svg viewBox=\"0 0 100 100\"><circle class=\"ge-ring-track\" cx=\"50\" cy=\"50\" r=\"48\"\/><circle class=\"ge-ring-arc\" cx=\"50\" cy=\"50\" r=\"48\" stroke-dasharray=\"60 480\"\/><\/svg><\/div>\n              <div class=\"ge-proc-core\">\n                <div class=\"ge-proc-pct\" id=\"ge-pct\">0<span>%<\/span><\/div>\n                <div class=\"ge-proc-core-l\">Analysing<\/div>\n              <\/div>\n            <\/div>\n            <div class=\"ge-proc-eyebrow\">Investment Intelligence Engine<\/div>\n            <div class=\"ge-proc-msg\" id=\"ge-proc-msg\"><\/div>\n            <div class=\"ge-proc-bar\"><div class=\"ge-proc-bar-fill\" id=\"ge-proc-fill\"><\/div><\/div>\n            <div class=\"ge-proc-steps\" id=\"ge-proc-steps\"><\/div>\n          <\/div>\n        <\/section>\n\n        <!-- REPORT READY -->\n        <section class=\"ge-scene\" id=\"scene-ready\">\n          <div class=\"ge-ready\">\n            <div class=\"ge-ready-seal ge-rise\" style=\"--d:40ms\">\n              <span class=\"halo\"><\/span>\n              <span class=\"disc\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><circle cx=\"12\" cy=\"12\" r=\"10\" opacity=\".3\"\/><path class=\"ge-ready-check\" d=\"M7 12.5l3.2 3.2L17 8.5\"\/><\/svg><\/span>\n            <\/div>\n            <div class=\"ge-eyebrow ge-rise\" style=\"--d:160ms\">Analysis Complete<\/div>\n            <h2 class=\"ge-h ge-rise\" style=\"--d:240ms\">Report <em>ready.<\/em><\/h2>\n            <p class=\"ge-sub ge-rise\" style=\"--d:320ms\">Your tailored intelligence report has been prepared and secured to your number. The full report experience arrives in the next phase.<\/p>\n            <button class=\"ge-btn ge-btn--gold ge-rise\" style=\"--d:420ms\" id=\"ge-view\">Open Report <span class=\"ge-arrow\"><\/span><\/button>\n            <div class=\"ge-ready-tag ge-rise\" style=\"--d:500ms\">Your <b id=\"ge-view-product\">Investment Advisor<\/b> report is ready<\/div>\n          <\/div>\n        <\/section>\n\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"ge-note\" id=\"ge-note\">Phase 3 \u00b7 <b>Unlock &amp; Processing<\/b><\/div>\n  <div class=\"ge-devbar\">\n    <span class=\"lbl\">Preview<\/span>\n    <button class=\"ge-devchip\" data-dev=\"gate\">Phone Gate<\/button>\n    <button class=\"ge-devchip\" data-dev=\"proc\">Processing<\/button>\n    <button class=\"ge-devchip\" data-dev=\"ready\">Report Ready<\/button>\n    <button class=\"ge-devchip\" data-dev=\"reset\">Reset (New User)<\/button>\n  <\/div>\n<\/div>\n  <div id=\"scr-d\" class=\"geo-phase\">\n  <div class=\"ge-atmos\" aria-hidden=\"true\"><div class=\"ge-vignette\"><\/div><div class=\"ge-grain\"><\/div><\/div>\n\n  <div class=\"ge-chrome\">\n    <div class=\"ge-brand\"><picture class=\"geo-logo\"><source media=\"print\" srcset=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-pdf.png\"><source media=\"(max-width:640px)\" srcset=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-mobile.png\"><img decoding=\"async\" src=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-laptop.png\" alt=\"GeoEstate\" onerror=\"this.onerror=null;this.src=&quot;assets\/geoestate-lockup.png&quot;;\" style=\"display:block;object-fit:contain;image-rendering:auto;filter:none;box-shadow:none;mix-blend-mode:normal;backdrop-filter:none;mask:none;opacity:1\"><\/picture><\/div>\n    <div class=\"ge-chrome-meta\" id=\"ge-chrome-meta\">Confidential Memorandum<\/div>\n  <\/div>\n\n  <div class=\"ge-print-header\"><img decoding=\"async\" src=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-pdf.png\" alt=\"GeoEstate\" onerror=\"this.onerror=null;this.src=&quot;assets\/geoestate-lockup.png&quot;;\"><div class=\"ph-meta\" id=\"ge-print-header-meta\"><b>Investment Advisor Report<\/b><br>Confidential Investment Memorandum<\/div><\/div>\n\n  <div class=\"ge-doc\"><div class=\"rp\" id=\"ge-report\"><\/div><\/div>\n\n  <div class=\"ge-print-footer\">Strictly private &amp; confidential &nbsp;\u00b7&nbsp; Prepared for <b id=\"ge-print-footer-name\">Valued Investor<\/b> &nbsp;\u00b7&nbsp; GeoEstate Investment Intelligence<\/div>\n<\/div>\n<\/div>\n\n<script>\n\/\/ ===== GeoEstate router \u2014 coordinates the four merged phases =====\nwindow.GEO = (function(){\n  var order=['a','b','c','d'];\n  var hooks={};\n  var current=null;\n  function go(id){\n    if(order.indexOf(id)<0) return;\n    order.forEach(function(k){\n      var el=document.getElementById('scr-'+k);\n      if(el) el.classList.toggle('is-current', k===id);\n    });\n    current=id;\n    window.scrollTo(0,0);\n    if(hooks[id]) hooks[id]();\n  }\n  function onEnter(id,fn){ hooks[id]=fn; }\n  return { go:go, onEnter:onEnter, get current(){ return current; } };\n})();\n<\/script>\n\n<script>(function(){\n\n  var root = document.getElementById('scr-a');\n  if(!root) return;\n\n  var screens = ['ge-landing','ge-name','ge-product'];\n  var current = 0;\n  var state = { name:'', product:'' };\n\n  var els = {\n    dots: root.querySelectorAll('.ge-dot'),\n    nameInput: root.querySelector('#ge-name-input'),\n    nameContinue: root.querySelector('#ge-name-continue'),\n    field: root.querySelector('#ge-field'),\n    prodH: root.querySelector('#ge-prod-h')\n  };\n\n  function go(index){\n    if(index < 0 || index >= screens.length) return;\n    root.querySelector('#'+screens[current]).classList.remove('is-active');\n    current = index;\n    var next = root.querySelector('#'+screens[current]);\n    \/\/ small delay so exit + enter feel cinematic\n    requestAnimationFrame(function(){\n      next.classList.add('is-active');\n    });\n    els.dots.forEach(function(d,i){ d.classList.toggle('on', i===current); });\n\n    if(current === 1){ setTimeout(function(){ els.nameInput.focus(); }, 450); }\n    if(current === 2){\n      var first = state.name ? state.name.split(' ')[0] : '';\n      els.prodH.innerHTML = first\n        ? (first + ', which intelligence shall we <em>prepare?<\/em>')\n        : 'Which intelligence shall we <em>prepare?<\/em>';\n    }\n  }\n\n  \/\/ Landing -> Name (returning users skip straight to Product Selection)\n  root.querySelector('#ge-start').addEventListener('click', function(){\n    var returning=false, savedName='';\n    try{ returning = localStorage.getItem('ge_returning')==='1' && !!localStorage.getItem('ge_user_name'); savedName = localStorage.getItem('ge_user_name')||''; }catch(e){}\n    if(returning){ state.name = savedName; go(2); } else { go(1); }\n  });\n\n  \/\/ Back buttons\n  root.querySelectorAll('[data-back]').forEach(function(b){\n    b.addEventListener('click', function(){ go(current - 1); });\n  });\n\n  \/\/ Name field\n  els.nameInput.addEventListener('focus', function(){ els.field.classList.add('is-focus'); });\n  els.nameInput.addEventListener('blur', function(){ els.field.classList.remove('is-focus'); });\n  els.nameInput.addEventListener('input', function(){\n    state.name = this.value.trim();\n    els.nameContinue.disabled = state.name.length < 2;\n  });\n  els.nameInput.addEventListener('keydown', function(e){\n    if(e.key === 'Enter' && !els.nameContinue.disabled){ go(2); }\n  });\n  els.nameContinue.addEventListener('click', function(){ if(!this.disabled) go(2); });\n\n  \/\/ Product cards \u2014 select, glow, auto-advance\n  var locked = false;\n  root.querySelectorAll('.ge-card').forEach(function(card){\n    card.addEventListener('click', function(){\n      if(locked) return;\n      locked = true;\n      root.querySelectorAll('.ge-card').forEach(function(c){ c.classList.remove('is-selected'); });\n      card.classList.add('is-selected');\n      state.product = card.getAttribute('data-product');\n      \/\/ persist selection + hand off to the Product Journey (Phase 2)\n      try{ localStorage.setItem('ge_product', state.product); if(state.name)localStorage.setItem('ge_user_name', state.name); }catch(e){}\n      setTimeout(function(){\n        card.dispatchEvent(new CustomEvent('geoestate:selection', {\n          bubbles:true,\n          detail:{ name: state.name, product: state.product }\n        }));\n        locked = false;\n        window.GEO.go('b');\n      }, 650);\n    });\n  });\n\n  \/\/ ambient gold data lines\n  (function buildLines(){\n    var wrap = root.querySelector('#ge-lines');\n    var count = 7;\n    for(var i=0;i<count;i++){\n      var pos = (100\/(count+1))*(i+1);\n      var line = document.createElement('div');\n      line.className = 'ge-vline';\n      line.style.left = pos + '%';\n      var pulse = document.createElement('div');\n      pulse.className = 'ge-pulse';\n      pulse.style.animationDelay = (i*1.15) + 's';\n      pulse.style.animationDuration = (6 + (i%3)) + 's';\n      line.appendChild(pulse);\n      wrap.appendChild(line);\n    }\n  })();\n\n  window.GEO.onEnter('a', function(){});\n\n})();<\/script>\n\n<script>(function(){\n\n  var root=document.getElementById('scr-b');\n  if(!root) return;\n  var qroot=root.querySelector('#ge-qroot');\n  var progwrap=root.querySelector('#ge-progwrap');\n  var progfill=root.querySelector('#ge-progfill');\n  var stepno=root.querySelector('#ge-stepno');\n  var crumb=root.querySelector('#ge-crumb');\n  var noteEl=root.querySelector('#ge-note');\n\n  \/* ---------- DATA ---------- *\/\n  var AREAS=['Downtown Dubai','Dubai Marina','Palm Jumeirah','Business Bay','Jumeirah Beach Residence','Dubai Hills Estate','Emirates Hills','Jumeirah Village Circle','Dubai Creek Harbour','DIFC','City Walk','Bluewaters Island','Arabian Ranches','Jumeirah Golf Estates','Al Barari','Meydan','Dubai Islands','Tilal Al Ghaf'];\n  var POPULAR_AREAS=['Downtown Dubai','Dubai Marina','Palm Jumeirah','Business Bay','Dubai Hills Estate'];\n  var PROJECTS=[\n    {name:'Burj Khalifa Residences',dev:'Emaar'},{name:'Creek Beach',dev:'Emaar'},{name:'The Valley',dev:'Emaar'},\n    {name:'Palm Jebel Ali',dev:'Nakheel'},{name:'Sobha Hartland II',dev:'Sobha'},{name:'DAMAC Lagoons',dev:'DAMAC'},\n    {name:'Bluewaters Bay',dev:'Meraas'},{name:'Six Senses Residences',dev:'Select Group'},{name:'Marina Shores',dev:'Emaar'},\n    {name:'District One West',dev:'Nakheel'},{name:'Ellington House',dev:'Ellington'},{name:'Cavalli Tower',dev:'DAMAC'}\n  ];\n  var SUGGESTED_PROJECTS=['Burj Khalifa Residences','Palm Jebel Ali','Sobha Hartland II','DAMAC Lagoons'];\n\n  var ic={\n    profileNew:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><circle cx=\"20\" cy=\"14\" r=\"7\"\/><path d=\"M7 34c0-7 6-11 13-11s13 4 13 11\"\/><\/svg>',\n    profileSeasoned:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M20 5l3.6 7.3 8 1.2-5.8 5.6 1.4 8L20 30.6 12.8 34.3l1.4-8L8.4 20.7l8-1.2z\"\/><\/svg>',\n    institutional:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M6 16L20 7l14 9\"\/><path d=\"M9 16v16M31 16v16M16 16v16M24 16v16\"\/><path d=\"M5 34h30\"\/><\/svg>',\n    home:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M8 18L20 8l12 10v14H8z\"\/><path d=\"M16 32V22h8v10\"\/><\/svg>',\n    growth:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M6 30l8-9 7 5 13-14\"\/><path d=\"M27 12h7v7\"\/><\/svg>',\n    yield:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><circle cx=\"20\" cy=\"20\" r=\"13\"\/><path d=\"M20 13v14M17 16.5c0-1.7 1.3-2.5 3-2.5s3 .8 3 2.5-1.3 2.3-3 2.6c-1.7.3-3 1-3 2.9s1.3 2.5 3 2.5 3-.8 3-2.5\"\/><\/svg>',\n    diversify:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><rect x=\"7\" y=\"7\" width=\"11\" height=\"11\" rx=\"1.5\"\/><rect x=\"22\" y=\"7\" width=\"11\" height=\"11\" rx=\"1.5\"\/><rect x=\"7\" y=\"22\" width=\"11\" height=\"11\" rx=\"1.5\"\/><rect x=\"22\" y=\"22\" width=\"11\" height=\"11\" rx=\"1.5\"\/><\/svg>',\n    hold:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><circle cx=\"20\" cy=\"20\" r=\"13\"\/><path d=\"M20 11v9l6 4\"\/><\/svg>',\n    ready:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><rect x=\"8\" y=\"12\" width=\"24\" height=\"20\" rx=\"1.5\"\/><path d=\"M8 12l12-6 12 6M15 32V22h10v10M20 6v6\"\/><\/svg>',\n    offplan:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><rect x=\"9\" y=\"9\" width=\"22\" height=\"22\" rx=\"1.5\" stroke-dasharray=\"3 3\"\/><path d=\"M20 15v10M15 20h10\"\/><\/svg>',\n    either:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M12 15l-5 5 5 5M28 15l5 5-5 5M11 20h18\"\/><\/svg>',\n    apartment:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><rect x=\"11\" y=\"6\" width=\"18\" height=\"28\" rx=\"1\"\/><path d=\"M16 12h3M21 12h3M16 18h3M21 18h3M16 24h3M21 24h3M17 34v-5h6v5\"\/><\/svg>',\n    villa:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M6 20L20 9l14 11v14H6z\"\/><path d=\"M14 34V24h5v10M24 22h4v5h-4z\"\/><\/svg>',\n    townhouse:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M7 16l7-7 7 7v18H7zM21 20l6-5 6 5v14H21\"\/><path d=\"M12 34V26h4v8\"\/><\/svg>',\n    penthouse:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M10 34V16h20v18M10 16l10-8 10 8\"\/><path d=\"M16 34V24h8v10M14 20h2M24 20h2\"\/><\/svg>',\n    conservative:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M20 5l12 4v9c0 8-5 14-12 17-7-3-12-9-12-17V9z\"\/><path d=\"M15 20l4 4 7-8\"\/><\/svg>',\n    balanced:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M20 7v26M8 14h24\"\/><path d=\"M8 14l-3 8h6zM32 14l-3 8h6z\"\/><path d=\"M11 33h18\"\/><\/svg>',\n    aggressive:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M22 5L9 22h9l-2 13 15-19h-9z\"\/><\/svg>',\n    opportunistic:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><circle cx=\"18\" cy=\"18\" r=\"10\"\/><path d=\"M25 25l8 8\"\/><path d=\"M18 13v10M13 18h10\"\/><\/svg>',\n    buyer:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M8 14h4l3 15h13l3-11H13\"\/><circle cx=\"17\" cy=\"33\" r=\"1.6\"\/><circle cx=\"26\" cy=\"33\" r=\"1.6\"\/><path d=\"M22 6v8M18 10h8\"\/><\/svg>',\n    owner:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M8 19L20 9l12 10v13H8z\"\/><circle cx=\"20\" cy=\"20\" r=\"3\"\/><path d=\"M20 23v6\"\/><\/svg>',\n    map:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M20 34s10-9 10-16a10 10 0 10-20 0c0 7 10 16 10 16z\"\/><circle cx=\"20\" cy=\"18\" r=\"3.5\"\/><\/svg>',\n    globe:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><circle cx=\"20\" cy=\"20\" r=\"14\"\/><path d=\"M6 20h28M20 6c4 4 4 24 0 28M20 6c-4 4-4 24 0 28\"\/><\/svg>',\n    vacant:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><path d=\"M8 18L20 8l12 10v14H8z\"\/><path d=\"M16 32V23h8v9\"\/><\/svg>',\n    tenanted:'<svg viewBox=\"0 0 40 40\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\"><circle cx=\"20\" cy=\"15\" r=\"6\"\/><path d=\"M9 33c0-6 5-9 11-9s11 3 11 9\"\/><\/svg>',\n    search:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><circle cx=\"10.5\" cy=\"10.5\" r=\"7\"\/><path d=\"M16 16l5 5\"\/><\/svg>',\n    check:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"M4 12l6 6 10-12\"\/><\/svg>'\n  };\n\n  \/* ---------- QUESTION DEFINITIONS ---------- *\/\n  var Q={\n    \/* Investment Advisor *\/\n    investorProfile:{type:'cards',eyebrow:'Investor Profile',title:'How would you define <em>your standing<\/em>?',sub:'This calibrates the depth and tone of your entire analysis.',key:'Investor Profile',options:[\n      {v:'First-Time Investor',t:'First-Time Investor',d:'Entering the market with fresh capital and a long horizon.',i:ic.profileNew},\n      {v:'Seasoned Investor',t:'Seasoned Investor',d:'An established portfolio and a considered appetite for opportunity.',i:ic.profileSeasoned},\n      {v:'Institutional',t:'Institutional',d:'Deploying structured capital at meaningful scale.',i:ic.institutional},\n      {v:'End-User',t:'End-User \/ Homebuyer',d:'Acquiring a residence to hold, occupy and enjoy.',i:ic.home}\n    ]},\n    investmentGoal:{type:'cards',eyebrow:'Investment Goal',title:'What outcome should we <em>optimise for<\/em>?',key:'Investment Goal',options:[\n      {v:'Capital Appreciation',t:'Capital Appreciation',d:'Prioritising long-term growth in asset value.',i:ic.growth},\n      {v:'Rental Yield',t:'Rental Yield',d:'Steady, dependable income from day one.',i:ic.yield},\n      {v:'Diversification',t:'Portfolio Diversification',d:'Balancing exposure across assets and geographies.',i:ic.diversify},\n      {v:'Long-Term Hold',t:'Long-Term Hold',d:'Preserving and compounding wealth across decades.',i:ic.hold}\n    ]},\n    budget:{type:'slider',eyebrow:'Budget',title:'What capital shall we <em>work with<\/em>?',sub:'Drag to refine, or choose a starting figure below.',key:'Budget',min:500000,max:30000000,step:100000,def:3000000,chips:[1000000,3000000,5000000,10000000]},\n    propertyStatus:{type:'cards',cols:3,eyebrow:'Property Status',title:'Ready to move, or <em>off-plan<\/em>?',key:'Property Status',options:[\n      {v:'Ready',t:'Ready',d:'Completed and handover-ready.',i:ic.ready},\n      {v:'Off-Plan',t:'Off-Plan',d:'Under development, priced for entry.',i:ic.offplan},\n      {v:'No Preference',t:'No Preference',d:'Open to either, guided by value.',i:ic.either}\n    ]},\n    propertyType:{type:'cards',eyebrow:'Property Type',title:'Which form of asset <em>appeals<\/em>?',key:'Property Type',options:[\n      {v:'Apartment',t:'Apartment',d:'Vertical living in prime towers.',i:ic.apartment},\n      {v:'Villa',t:'Villa',d:'Private, ground-standing residences.',i:ic.villa},\n      {v:'Townhouse',t:'Townhouse',d:'Community living with generous space.',i:ic.townhouse},\n      {v:'Penthouse',t:'Penthouse',d:'The pinnacle of a landmark address.',i:ic.penthouse}\n    ]},\n    preferredArea:{type:'search',eyebrow:'Preferred Area',title:'Where should we <em>concentrate<\/em>?',sub:'Search a district, or select from Dubai\u2019s most sought-after.',key:'Preferred Area',mode:'area',placeholder:'Search a district'},\n    riskStrategy:{type:'cards',eyebrow:'Risk & Exit Strategy',title:'How boldly shall we <em>position you<\/em>?',key:'Risk & Exit Strategy',options:[\n      {v:'Conservative',t:'Conservative',d:'Capital preservation above all \u2014 measured, resilient assets.',i:ic.conservative},\n      {v:'Balanced',t:'Balanced',d:'A considered blend of stability and upside.',i:ic.balanced},\n      {v:'Aggressive',t:'Aggressive',d:'Maximising growth with a tolerance for volatility.',i:ic.aggressive},\n      {v:'Opportunistic',t:'Opportunistic',d:'Nimble entries and exits around market dislocations.',i:ic.opportunistic}\n    ]},\n\n    \/* Opportunity Radar *\/\n    maxBudget:{type:'slider',eyebrow:'Maximum Budget',title:'What is your <em>ceiling<\/em>?',sub:'We will surface opportunities beneath this figure.',key:'Maximum Budget',min:500000,max:20000000,step:100000,def:2500000,chips:[1000000,2500000,5000000,8000000]},\n    bedrooms:{type:'pills',eyebrow:'Bedrooms',title:'How much space do you <em>need<\/em>?',key:'Bedrooms',options:[\n      {v:'Studio',n:'S',l:'Studio'},{v:'1',n:'1',l:'Bedroom'},{v:'2',n:'2',l:'Bedrooms'},{v:'3',n:'3',l:'Bedrooms'},{v:'4+',n:'4+',l:'Bedrooms'}\n    ]},\n\n    \/* Property Evaluation *\/\n    ownership:{type:'cards',cols:2,eyebrow:'Property Evaluation',title:'Are you a buyer, or a <em>property owner<\/em>?',sub:'Your perspective shapes the valuation we prepare.',key:'Perspective',options:[\n      {v:'Buyer',t:'Buyer',d:'Assessing an asset before you acquire it.',i:ic.buyer},\n      {v:'Property Owner',t:'Property Owner',d:'Understanding the true worth of what you hold.',i:ic.owner}\n    ]},\n    scanProject:{type:'project',eyebrow:'Zone & Project',title:'Which address shall we <em>evaluate<\/em>?',sub:'Search by project or developer, or begin with a suggestion.',key:'Project'},\n    unitSize:{type:'number',eyebrow:'Unit Size',title:'What is the <em>built-up area<\/em>?',sub:'Enter the size, or choose a typical footprint.',key:'Unit Size',cur:'',unit:'sq ft',placeholder:'0',presets:[600,900,1400,2200]},\n    askingPrice:{type:'price',eyebrow:'Asking Price',title:'And the <em>asking price<\/em>?',sub:'Enter the figure, or select a quick amount.',key:'Asking Price',presets:[1500000,3000000,6000000,12000000]},\n    occupancy:{type:'cards',cols:3,eyebrow:'Occupancy Status',title:'How is the property <em>held today<\/em>?',key:'Occupancy',options:[\n      {v:'Vacant',t:'Vacant',d:'Available and unoccupied.',i:ic.vacant},\n      {v:'Tenanted',t:'Tenanted',d:'Currently generating rental income.',i:ic.tenanted},\n      {v:'Owner-Occupied',t:'Owner-Occupied',d:'Your own residence.',i:ic.owner}\n    ]},\n\n    \/* Market Intelligence *\/\n    reportArea:{type:'cards',cols:2,eyebrow:'Report Area',title:'How wide should we <em>cast the lens<\/em>?',sub:'A city-wide overview, or a focused neighborhood study.',key:'Report Scope',options:[\n      {v:'All Dubai',t:'All Dubai',d:'The complete macro view across every district.',i:ic.globe},\n      {v:'Specific Area',t:'Specific Area',d:'A deep, granular study of one neighborhood.',i:ic.map}\n    ]},\n    neighborhood:{type:'search',eyebrow:'Neighborhood',title:'Which neighborhood shall we <em>study<\/em>?',sub:'Search, or select a popular district.',key:'Neighborhood',mode:'area',placeholder:'Search a neighborhood'}\n  };\n\n  var PRODUCTS={\n    'Investment Advisor':{steps:['investorProfile','investmentGoal','budget','propertyStatus','propertyType','preferredArea','riskStrategy']},\n    'Opportunity Radar':{steps:['maxBudget','propertyType','bedrooms','propertyStatus','preferredArea']},\n    'Property Evaluation':{dynamic:true},\n    'Market Intelligence':{dynamic:true}\n  };\n\n  function buildSteps(product,answers){\n    if(product==='Property Evaluation'){\n      var s=['ownership'];\n      if(answers['Perspective']==='Buyer'){s=s.concat(['scanProject','propertyType','bedrooms','unitSize','askingPrice']);}\n      else if(answers['Perspective']==='Property Owner'){s=s.concat(['scanProject','propertyType','bedrooms','unitSize','propertyStatus','occupancy']);}\n      return s;\n    }\n    if(product==='Market Intelligence'){\n      var m=['reportArea'];\n      if(answers['Report Scope']==='Specific Area'){m.push('neighborhood');}\n      return m;\n    }\n    return PRODUCTS[product].steps.slice();\n  }\n\n  \/* ---------- STATE ---------- *\/\n  var state={product:null,answers:{},index:0,steps:[],recentAreas:[],recentProjects:[]};\n  try{\n    state.recentAreas=JSON.parse(localStorage.getItem('ge_recent_areas')||'[]');\n    state.recentProjects=JSON.parse(localStorage.getItem('ge_recent_projects')||'[]');\n  }catch(e){}\n\n  function saveRecent(){\n    try{\n      localStorage.setItem('ge_recent_areas',JSON.stringify(state.recentAreas.slice(0,4)));\n      localStorage.setItem('ge_recent_projects',JSON.stringify(state.recentProjects.slice(0,4)));\n    }catch(e){}\n  }\n  function pushRecent(list,val){\n    var i=list.indexOf(val); if(i>-1)list.splice(i,1); list.unshift(val);\n  }\n\n  function fmt(n){return Number(n).toLocaleString('en-US');}\n  function fmtAED(n){\n    if(n>=1000000){var m=n\/1000000;return (m%1===0?m:m.toFixed(1))+'M';}\n    if(n>=1000){return (n\/1000)+'K';}\n    return fmt(n);\n  }\n\n  \/* ---------- RENDER SWITCHBOARD ---------- *\/\n  function transition(html,cb){\n    qroot.classList.remove('entering','entered');\n    qroot.classList.add('leaving');\n    setTimeout(function(){\n      qroot.innerHTML=html;\n      qroot.classList.remove('leaving');\n      qroot.classList.add('entering');\n      void qroot.offsetWidth;\n      requestAnimationFrame(function(){qroot.classList.remove('entering');qroot.classList.add('entered');});\n      if(cb)cb();\n    },260);\n  }\n\n  function updateProgress(){\n    if(!state.product){progwrap.style.visibility='hidden';return;}\n    progwrap.style.visibility='visible';\n    var total=state.steps.length;\n    var cur=Math.min(state.index+1,total);\n    progfill.style.width=((state.index)\/(total)*100+ (100\/total)*0.001)+'%';\n    \/\/ fill reflects steps completed + current in progress\n    progfill.style.width=(((state.index)\/total)*100)+'%';\n    stepno.innerHTML='<b>'+cur+'<\/b> \/ '+total;\n    crumb.innerHTML=state.product+' &nbsp;\u00b7&nbsp; <b>Interview<\/b>';\n  }\n\n  function eyebrowHTML(def){return '<div class=\"ge-q-eyebrow ge-rise\" style=\"--d:40ms\">'+def.eyebrow+'<\/div>';}\n  function headHTML(def){\n    var h='<h2 class=\"ge-q-h ge-rise\" style=\"--d:120ms\">'+def.title+'<\/h2>';\n    if(def.sub)h+='<p class=\"ge-q-sub ge-rise\" style=\"--d:200ms\">'+def.sub+'<\/p>';\n    return h;\n  }\n  function navHTML(opts){\n    opts=opts||{};\n    var back='<button class=\"ge-btn ge-btn--glass\" data-back><span class=\"ge-arrow ge-arrow--back\"><\/span> Back<\/button>';\n    var cont=opts.cont?'<button class=\"ge-btn ge-btn--gold\" data-continue '+(opts.contDisabled?'disabled':'')+'>'+(opts.contLabel||'Continue')+' <span class=\"ge-arrow\"><\/span><\/button>':'';\n    return '<div class=\"ge-nav ge-rise\" style=\"--d:'+(opts.d||320)+'ms\">'+back+cont+'<\/div>';\n  }\n\n  function render(){\n    if(!state.product){renderLauncher();return;}\n    state.steps=buildSteps(state.product,state.answers);\n    if(state.index>=state.steps.length){finishJourney();return;}\n    var def=Q[state.steps[state.index]];\n    updateProgress();\n    var builders={cards:buildCards,pills:buildPills,slider:buildSlider,search:buildSearch,project:buildProject,number:buildNumber,price:buildPrice};\n    var built=builders[def.type](def);\n    transition(built.html,built.after);\n  }\n\n  \/* ---------- LAUNCHER ---------- *\/\n  function renderLauncher(){\n    progwrap.style.visibility='hidden';\n    crumb.innerHTML='Private Consultation';\n    var cards=[\n      {p:'Investment Advisor',d:'A personal strategy across seven considered questions.',i:ic.profileSeasoned},\n      {p:'Opportunity Radar',d:'Surface undervalued corridors in five quick steps.',i:ic.yield},\n      {p:'Property Evaluation',d:'Value any asset \u2014 as a buyer or an owner.',i:ic.owner},\n      {p:'Market Intelligence',d:'The macro view, city-wide or by neighborhood.',i:ic.globe}\n    ].map(function(c){\n      return '<button class=\"ge-opt ge-rise\" style=\"--d:'+(300+cards_i(c))+'ms\" data-launch=\"'+c.p+'\">'+\n        '<span class=\"ge-opt-icon\">'+c.i+'<\/span><span class=\"ge-opt-txt\">'+\n        '<span class=\"ge-opt-title\">'+c.p+'<\/span><span class=\"ge-opt-desc\">'+c.d+'<\/span><\/span><\/button>';\n    }).join('');\n    var html='<div class=\"ge-launch\">'+\n      '<div class=\"ge-q-eyebrow ge-rise\" style=\"--d:40ms\">Product Journey \u00b7 Preview<\/div>'+\n      '<h2 class=\"ge-q-h ge-rise\" style=\"--d:120ms\">Select a journey to <em>begin<\/em>.<\/h2>'+\n      '<p class=\"ge-q-sub ge-rise\" style=\"--d:200ms\">Each path is a private interview. Your answers shape the report to follow.<\/p>'+\n      '<div class=\"ge-opts\">'+cards+'<\/div><\/div>';\n    noteEl.innerHTML='Phase 2 \u00b7 <b>Product Journey<\/b> \u2014 flow ends before Phone Gate';\n    transition(html);\n  }\n  var _ci=0; function cards_i(){return (_ci++%4)*70;}\n\n  \/* ---------- CARDS ---------- *\/\n  function buildCards(def){\n    _ci=0;\n    var cls='ge-opts'+(def.cols===3?' cols-3':(def.cols===1?' cols-1':''));\n    var opts=def.options.map(function(o,idx){\n      return '<button class=\"ge-opt ge-rise\" style=\"--d:'+(300+idx*70)+'ms\" data-val=\"'+esc(o.v)+'\">'+\n        (o.i?'<span class=\"ge-opt-icon\">'+o.i+'<\/span>':'')+\n        '<span class=\"ge-opt-txt\"><span class=\"ge-opt-title\">'+o.t+'<\/span>'+(o.d?'<span class=\"ge-opt-desc\">'+o.d+'<\/span>':'')+'<\/span>'+\n        '<span class=\"ge-opt-check\"><\/span><\/button>';\n    }).join('');\n    var html=eyebrowHTML(def)+headHTML(def)+'<div class=\"'+cls+'\">'+opts+'<\/div>'+navHTML({d:300+def.options.length*70});\n    return {html:html,after:function(){\n      wireBack();\n      qroot.querySelectorAll('.ge-opt[data-val]').forEach(function(el){\n        el.addEventListener('click',function(){selectCard(el,def);});\n      });\n    }};\n  }\n  function selectCard(el,def){\n    if(qroot.dataset.locked)return; qroot.dataset.locked='1';\n    qroot.querySelectorAll('.ge-opt').forEach(function(o){o.classList.remove('is-selected');});\n    el.classList.add('is-selected');\n    var val=el.getAttribute('data-val');\n    setTimeout(function(){state.answers[def.key]=val;qroot.dataset.locked='';advance();},340);\n  }\n\n  \/* ---------- PILLS (bedrooms) ---------- *\/\n  function buildPills(def){\n    var pills=def.options.map(function(o,idx){\n      return '<button class=\"ge-pill ge-rise\" style=\"--d:'+(300+idx*60)+'ms\" data-val=\"'+esc(o.v)+'\">'+\n        '<div class=\"ge-pill-n\">'+o.n+'<\/div><div class=\"ge-pill-l\">'+o.l+'<\/div><\/button>';\n    }).join('');\n    var html=eyebrowHTML(def)+headHTML(def)+'<div class=\"ge-pills\">'+pills+'<\/div>'+navHTML({d:300+def.options.length*60});\n    return {html:html,after:function(){\n      wireBack();\n      qroot.querySelectorAll('.ge-pill[data-val]').forEach(function(el){\n        el.addEventListener('click',function(){\n          if(qroot.dataset.locked)return;qroot.dataset.locked='1';\n          qroot.querySelectorAll('.ge-pill').forEach(function(o){o.classList.remove('is-selected');});\n          el.classList.add('is-selected');\n          setTimeout(function(){state.answers[def.key]=el.getAttribute('data-val');qroot.dataset.locked='';advance();},320);\n        });\n      });\n    }};\n  }\n\n  \/* ---------- SLIDER ---------- *\/\n  function buildSlider(def){\n    var start=state.answers[def.key]!=null?Number(state.answers[def.key]):def.def;\n    var chips=def.chips.map(function(c){return '<button class=\"ge-chip\" data-v=\"'+c+'\">AED '+fmtAED(c)+'<\/button>';}).join('');\n    var atMax=start>=def.max;\n    var html=eyebrowHTML(def)+headHTML(def)+\n      '<div class=\"ge-slider-wrap ge-rise\" style=\"--d:280ms\">'+\n        '<div class=\"ge-amount\"><span class=\"ge-cur\">AED<\/span><span class=\"ge-val\" id=\"ge-amt\">'+fmt(start)+'<\/span><span class=\"ge-plus\" id=\"ge-plus\" style=\"display:'+(atMax?'inline':'none')+'\">+<\/span><\/div>'+\n        '<input type=\"range\" class=\"ge-range\" id=\"ge-range\" min=\"'+def.min+'\" max=\"'+def.max+'\" step=\"'+def.step+'\" value=\"'+start+'\">'+\n        '<div class=\"ge-range-legend\"><span>AED '+fmtAED(def.min)+'<\/span><span>AED '+fmtAED(def.max)+'+<\/span><\/div>'+\n        '<div class=\"ge-chips\">'+chips+'<\/div>'+\n      '<\/div>'+navHTML({cont:true,d:360});\n    return {html:html,after:function(){\n      wireBack();\n      var range=qroot.querySelector('#ge-range'),amt=qroot.querySelector('#ge-amt'),plus=qroot.querySelector('#ge-plus');\n      var chipEls=qroot.querySelectorAll('.ge-chip');\n      function syncChips(v){chipEls.forEach(function(c){c.classList.toggle('is-active',Number(c.getAttribute('data-v'))===v);});}\n      function paint(v,animate){\n        plus.style.display=(v>=def.max)?'inline':'none';\n        if(animate){tween(Number(amt.textContent.replace(\/,\/g,'')),v,amt);}else{amt.textContent=fmt(v);}\n        state.answers[def.key]=v;syncChips(v);\n      }\n      state.answers[def.key]=start;syncChips(start);\n      range.addEventListener('input',function(){paint(Number(this.value),false);});\n      chipEls.forEach(function(c){c.addEventListener('click',function(){\n        var v=Number(c.getAttribute('data-v'));range.value=v;paint(v,true);\n      });});\n      qroot.querySelector('[data-continue]').addEventListener('click',advance);\n    }};\n  }\n  function tween(from,to,el){\n    var dur=420,t0=null;\n    function step(ts){if(!t0)t0=ts;var p=Math.min((ts-t0)\/dur,1);var e=1-Math.pow(1-p,3);\n      el.textContent=fmt(Math.round(from+(to-from)*e));if(p<1)requestAnimationFrame(step);}\n    requestAnimationFrame(step);\n  }\n\n  \/* ---------- SEARCH (areas) ---------- *\/\n  function buildSearch(def){\n    var recent=state.recentAreas.slice(0,4);\n    var recentHTML=recent.length?('<div class=\"ge-sec ge-rise\" style=\"--d:400ms\"><div class=\"ge-sec-label\">Recent Searches<\/div><div class=\"ge-achips\">'+\n      recent.map(function(a){return '<button class=\"ge-achip recent\" data-pick=\"'+esc(a)+'\"><span class=\"ge-dot\"><\/span>'+a+'<\/button>';}).join('')+'<\/div><\/div>'):'';\n    var popHTML='<div class=\"ge-sec ge-rise\" style=\"--d:340ms\"><div class=\"ge-sec-label\">Most Sought-After<\/div><div class=\"ge-achips\">'+\n      POPULAR_AREAS.map(function(a){return '<button class=\"ge-achip\" data-pick=\"'+esc(a)+'\"><span class=\"ge-dot\"><\/span>'+a+'<\/button>';}).join('')+'<\/div><\/div>';\n    var html=eyebrowHTML(def)+headHTML(def)+\n      '<div class=\"ge-search ge-rise\" style=\"--d:280ms\">'+\n        '<div class=\"ge-search-field\" id=\"ge-sf\"><span class=\"ge-search-ico\">'+ic.search+'<\/span>'+\n        '<input type=\"text\" id=\"ge-si\" placeholder=\"'+def.placeholder+'\" autocomplete=\"off\" spellcheck=\"false\"><span class=\"ge-uline\"><\/span><\/div>'+\n        '<div class=\"ge-dropdown\" id=\"ge-dd\"><\/div>'+\n      '<\/div>'+popHTML+recentHTML+navHTML({d:460});\n    return {html:html,after:function(){\n      wireBack();\n      wireAreaSearch(def);\n    }};\n  }\n  function wireAreaSearch(def){\n    var field=qroot.querySelector('#ge-sf'),input=qroot.querySelector('#ge-si'),dd=qroot.querySelector('#ge-dd');\n    var cursor=-1,current=[];\n    function pick(val){\n      pushRecent(state.recentAreas,val);saveRecent();\n      state.answers[def.key]=val;advance();\n    }\n    function renderDD(list){\n      current=list;cursor=-1;\n      if(!input.value.trim()){dd.classList.remove('is-open');return;}\n      if(!list.length){dd.innerHTML='<div class=\"ge-drow-empty\">No districts match \u201c'+esc(input.value)+'\u201d<\/div>';dd.classList.add('is-open');return;}\n      dd.innerHTML=list.map(function(a,i){return '<div class=\"ge-drow\" data-i=\"'+i+'\"><span class=\"ge-drow-main\">'+hl(a,input.value)+'<\/span><span class=\"ge-drow-sub\">Dubai<\/span><\/div>';}).join('');\n      dd.classList.add('is-open');\n      dd.querySelectorAll('.ge-drow').forEach(function(r){r.addEventListener('click',function(){pick(current[Number(r.getAttribute('data-i'))]);});});\n    }\n    input.addEventListener('focus',function(){field.classList.add('is-focus');});\n    input.addEventListener('blur',function(){field.classList.remove('is-focus');setTimeout(function(){dd.classList.remove('is-open');},150);});\n    input.addEventListener('input',function(){\n      var q=this.value.trim().toLowerCase();\n      renderDD(q?AREAS.filter(function(a){return a.toLowerCase().indexOf(q)>-1;}):[]);\n    });\n    input.addEventListener('keydown',function(e){\n      var rows=dd.querySelectorAll('.ge-drow');\n      if(e.key==='ArrowDown'){e.preventDefault();cursor=Math.min(cursor+1,rows.length-1);}\n      else if(e.key==='ArrowUp'){e.preventDefault();cursor=Math.max(cursor-1,0);}\n      else if(e.key==='Enter'){if(cursor>-1&&current[cursor])pick(current[cursor]);else if(current.length===1)pick(current[0]);return;}\n      else return;\n      rows.forEach(function(r,i){r.classList.toggle('is-cursor',i===cursor);});\n    });\n    qroot.querySelectorAll('[data-pick]').forEach(function(b){b.addEventListener('click',function(){pick(b.getAttribute('data-pick'));});});\n  }\n\n  \/* ---------- PROJECT selector ---------- *\/\n  function buildProject(def){\n    var recent=state.recentProjects.slice(0,4);\n    var recentHTML=recent.length?('<div class=\"ge-sec ge-rise\" style=\"--d:420ms\"><div class=\"ge-sec-label\">Recent Projects<\/div><div class=\"ge-achips\">'+\n      recent.map(function(a){return '<button class=\"ge-achip recent\" data-pick=\"'+esc(a)+'\"><span class=\"ge-dot\"><\/span>'+a+'<\/button>';}).join('')+'<\/div><\/div>'):'';\n    var sugHTML='<div class=\"ge-sec ge-rise\" style=\"--d:340ms\"><div class=\"ge-sec-label\">Suggested Projects<\/div><div class=\"ge-achips\">'+\n      SUGGESTED_PROJECTS.map(function(a){return '<button class=\"ge-achip\" data-pick=\"'+esc(a)+'\"><span class=\"ge-dot\"><\/span>'+a+'<\/button>';}).join('')+'<\/div><\/div>';\n    var html=eyebrowHTML(def)+headHTML(def)+\n      '<div class=\"ge-search ge-rise\" style=\"--d:280ms\">'+\n        '<div class=\"ge-search-field\" id=\"ge-sf\"><span class=\"ge-search-ico\">'+ic.search+'<\/span>'+\n        '<input type=\"text\" id=\"ge-si\" placeholder=\"Project or developer\" autocomplete=\"off\" spellcheck=\"false\"><span class=\"ge-uline\"><\/span><\/div>'+\n        '<div class=\"ge-dropdown\" id=\"ge-dd\"><\/div>'+\n      '<\/div>'+sugHTML+recentHTML+navHTML({d:480});\n    return {html:html,after:function(){\n      wireBack();\n      var field=qroot.querySelector('#ge-sf'),input=qroot.querySelector('#ge-si'),dd=qroot.querySelector('#ge-dd');\n      var cursor=-1,current=[];\n      function pick(val){pushRecent(state.recentProjects,val);saveRecent();state.answers[def.key]=val;advance();}\n      function renderDD(list){\n        current=list.map(function(p){return p.name;});cursor=-1;\n        if(!input.value.trim()){dd.classList.remove('is-open');return;}\n        if(!list.length){dd.innerHTML='<div class=\"ge-drow-empty\">No projects match \u201c'+esc(input.value)+'\u201d<\/div>';dd.classList.add('is-open');return;}\n        dd.innerHTML=list.map(function(p,i){return '<div class=\"ge-drow\" data-i=\"'+i+'\"><span class=\"ge-drow-main\">'+hl(p.name,input.value)+'<\/span><span class=\"ge-drow-sub\">'+p.dev+'<\/span><\/div>';}).join('');\n        dd.classList.add('is-open');\n        dd.querySelectorAll('.ge-drow').forEach(function(r){r.addEventListener('click',function(){pick(current[Number(r.getAttribute('data-i'))]);});});\n      }\n      input.addEventListener('focus',function(){field.classList.add('is-focus');});\n      input.addEventListener('blur',function(){field.classList.remove('is-focus');setTimeout(function(){dd.classList.remove('is-open');},150);});\n      input.addEventListener('input',function(){\n        var q=this.value.trim().toLowerCase();\n        renderDD(q?PROJECTS.filter(function(p){return (p.name+' '+p.dev).toLowerCase().indexOf(q)>-1;}):[]);\n      });\n      input.addEventListener('keydown',function(e){\n        var rows=dd.querySelectorAll('.ge-drow');\n        if(e.key==='ArrowDown'){e.preventDefault();cursor=Math.min(cursor+1,rows.length-1);}\n        else if(e.key==='ArrowUp'){e.preventDefault();cursor=Math.max(cursor-1,0);}\n        else if(e.key==='Enter'){if(cursor>-1&&current[cursor])pick(current[cursor]);else if(current.length===1)pick(current[0]);return;}\n        else return;\n        rows.forEach(function(r,i){r.classList.toggle('is-cursor',i===cursor);});\n      });\n      qroot.querySelectorAll('[data-pick]').forEach(function(b){b.addEventListener('click',function(){pick(b.getAttribute('data-pick'));});});\n    }};\n  }\n\n  \/* ---------- NUMBER (unit size) ---------- *\/\n  function buildNumber(def){\n    var val=state.answers[def.key]!=null?parseInt(String(state.answers[def.key]).replace(\/\\D\/g,'')):'';\n    var chips=def.presets.map(function(p){return '<button class=\"ge-chip\" data-v=\"'+p+'\">'+fmt(p)+' sq ft<\/button>';}).join('');\n    var html=eyebrowHTML(def)+headHTML(def)+\n      '<div class=\"ge-numwrap ge-rise\" style=\"--d:280ms\">'+\n        '<div class=\"ge-numfield\" id=\"ge-nf\"><input type=\"text\" inputmode=\"numeric\" id=\"ge-ni\" placeholder=\"'+def.placeholder+'\" value=\"'+(val||'')+'\"><span class=\"ge-unit\">'+def.unit+'<\/span><span class=\"ge-uline\"><\/span><\/div>'+\n        '<div class=\"ge-chips\" style=\"margin-top:30px\">'+chips+'<\/div>'+\n      '<\/div>'+navHTML({cont:true,contDisabled:!val,d:360});\n    return {html:html,after:function(){\n      wireBack();\n      var field=qroot.querySelector('#ge-nf'),input=qroot.querySelector('#ge-ni'),cont=qroot.querySelector('[data-continue]');\n      var chipEls=qroot.querySelectorAll('.ge-chip');\n      function validate(){\n        var raw=input.value.replace(\/[^\\d]\/g,'');\n        if(raw){input.value=fmt(parseInt(raw));}\n        var ok=raw&&parseInt(raw)>0;cont.disabled=!ok;\n        chipEls.forEach(function(c){c.classList.toggle('is-active',c.getAttribute('data-v')===raw);});\n        return ok?parseInt(raw):null;\n      }\n      input.addEventListener('focus',function(){field.classList.add('is-focus');});\n      input.addEventListener('blur',function(){field.classList.remove('is-focus');});\n      input.addEventListener('input',validate);\n      chipEls.forEach(function(c){c.addEventListener('click',function(){input.value=fmt(Number(c.getAttribute('data-v')));validate();field.classList.add('is-focus');});});\n      cont.addEventListener('click',function(){var v=validate();if(v){state.answers[def.key]=fmt(v)+' sq ft';advance();}});\n      input.addEventListener('keydown',function(e){if(e.key==='Enter'&&!cont.disabled)cont.click();});\n      validate();\n    }};\n  }\n\n  \/* ---------- PRICE ---------- *\/\n  function buildPrice(def){\n    var raw=state.answers[def.key]!=null?parseInt(String(state.answers[def.key]).replace(\/\\D\/g,'')):'';\n    var chips=def.presets.map(function(p){return '<button class=\"ge-chip\" data-v=\"'+p+'\">AED '+fmtAED(p)+'<\/button>';}).join('');\n    var html=eyebrowHTML(def)+headHTML(def)+\n      '<div class=\"ge-numwrap ge-rise\" style=\"--d:280ms\">'+\n        '<div class=\"ge-numfield\" id=\"ge-nf\"><span class=\"ge-cur\">AED<\/span><input type=\"text\" inputmode=\"numeric\" id=\"ge-ni\" placeholder=\"0\" value=\"'+(raw?fmt(raw):'')+'\"><span class=\"ge-uline\"><\/span><\/div>'+\n        '<div class=\"ge-chips\" style=\"margin-top:30px\">'+chips+'<\/div>'+\n      '<\/div>'+navHTML({cont:true,contDisabled:!raw,d:360});\n    return {html:html,after:function(){\n      wireBack();\n      var field=qroot.querySelector('#ge-nf'),input=qroot.querySelector('#ge-ni'),cont=qroot.querySelector('[data-continue]');\n      var chipEls=qroot.querySelectorAll('.ge-chip');\n      function validate(){\n        var r=input.value.replace(\/[^\\d]\/g,'');\n        if(r){input.value=fmt(parseInt(r));}\n        var ok=r&&parseInt(r)>0;cont.disabled=!ok;\n        chipEls.forEach(function(c){c.classList.toggle('is-active',c.getAttribute('data-v')===r);});\n        return ok?parseInt(r):null;\n      }\n      input.addEventListener('focus',function(){field.classList.add('is-focus');});\n      input.addEventListener('blur',function(){field.classList.remove('is-focus');});\n      input.addEventListener('input',validate);\n      chipEls.forEach(function(c){c.addEventListener('click',function(){input.value=fmt(Number(c.getAttribute('data-v')));validate();field.classList.add('is-focus');});});\n      cont.addEventListener('click',function(){var v=validate();if(v){state.answers[def.key]='AED '+fmt(v);advance();}});\n      input.addEventListener('keydown',function(e){if(e.key==='Enter'&&!cont.disabled)cont.click();});\n      validate();\n    }};\n  }\n\n  \/* ---------- COMPLETION ---------- *\/\n  \/\/ No intermediate confirmation screen: persist the collected answers as the\n  \/\/ Investment Brief (read by the report) and hand off straight to the next phase.\n  function finishJourney(){\n    var items=state.steps.map(function(sid){\n      var def=Q[sid];var v=state.answers[def.key];\n      if(v==null)return null;\n      if(def.type==='slider')v='AED '+fmt(v);\n      return {label:def.key,value:String(v)};\n    }).filter(Boolean);\n    try{\n      localStorage.setItem('ge_product', state.product);\n      localStorage.setItem('ge_answers', JSON.stringify({product:state.product,items:items}));\n    }catch(e){}\n    window.GEO.go('c');\n  }\n\n  \/* ---------- NAV ---------- *\/\n  function advance(){state.index++;render();}\n  function goBack(){\n    if(state.index<=0){state.product=null;state.index=0;state.answers={};render();return;}\n    state.index--;render();\n  }\n  function wireBack(){var b=qroot.querySelector('[data-back]');if(b)b.addEventListener('click',goBack);}\n\n  \/* launcher wiring lives in transition callback; attach via delegation *\/\n  qroot.addEventListener('click',function(e){\n    var l=e.target.closest('[data-launch]');\n    if(l){state.product=l.getAttribute('data-launch');state.index=0;state.answers={};render();}\n  });\n\n  \/* ---------- utils ---------- *\/\n  function esc(s){return String(s).replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;').replace(\/\"\/g,'&quot;');}\n  function hl(text,q){\n    if(!q)return esc(text);\n    var i=text.toLowerCase().indexOf(q.toLowerCase());\n    if(i<0)return esc(text);\n    return esc(text.slice(0,i))+'<span style=\"color:var(--gold-bright)\">'+esc(text.slice(i,i+q.length))+'<\/span>'+esc(text.slice(i+q.length));\n  }\n\n  \/* ambient lines *\/\n  (function(){var wrap=root.querySelector('#ge-lines');for(var i=0;i<7;i++){var pos=(100\/8)*(i+1);\n    var line=document.createElement('div');line.className='ge-vline';line.style.left=pos+'%';\n    var p=document.createElement('div');p.className='ge-pulse';p.style.animationDelay=(i*1.15)+'s';p.style.animationDuration=(6+(i%3))+'s';\n    line.appendChild(p);wrap.appendChild(line);}})();\n\n  window.GEO.onEnter('b', function(){\n    \/\/ Always start a brand-new session on entry \u2014 even re-selecting the same\n    \/\/ product must restart from Question 1, never resume or reopen a stale report.\n    var saved=''; try{ saved=localStorage.getItem('ge_product')||''; }catch(e){}\n    state.product = (saved && PRODUCTS.hasOwnProperty(saved)) ? saved : null;\n    state.index=0; state.answers={};\n    render();\n  });\n\n})();<\/script>\n\n<script>(function(){\n\n  var root=document.getElementById('scr-c');\n  if(!root) return;\n  var crumb=root.querySelector('#ge-crumb');\n\n  \/\/ [ISO2, Name, dialCode, minNationalDigits, maxNationalDigits]\n  var CDATA=[\n    ['AF','Afghanistan','93',9,9],['AL','Albania','355',9,9],['DZ','Algeria','213',9,9],['AS','American Samoa','1',10,10],\n    ['AD','Andorra','376',6,9],['AO','Angola','244',9,9],['AI','Anguilla','1',10,10],['AG','Antigua & Barbuda','1',10,10],\n    ['AR','Argentina','54',10,11],['AM','Armenia','374',8,8],['AW','Aruba','297',7,7],['AU','Australia','61',9,9],\n    ['AT','Austria','43',10,13],['AZ','Azerbaijan','994',9,9],['BS','Bahamas','1',10,10],['BH','Bahrain','973',8,8],\n    ['BD','Bangladesh','880',10,10],['BB','Barbados','1',10,10],['BY','Belarus','375',9,9],['BE','Belgium','32',9,9],\n    ['BZ','Belize','501',7,7],['BJ','Benin','229',8,8],['BM','Bermuda','1',10,10],['BT','Bhutan','975',8,8],\n    ['BO','Bolivia','591',8,8],['BA','Bosnia & Herzegovina','387',8,8],['BW','Botswana','267',7,8],['BR','Brazil','55',10,11],\n    ['IO','British Indian Ocean Territory','246',7,7],['VG','British Virgin Islands','1',10,10],['BN','Brunei','673',7,7],\n    ['BG','Bulgaria','359',8,9],['BF','Burkina Faso','226',8,8],['BI','Burundi','257',8,8],['KH','Cambodia','855',8,9],\n    ['CM','Cameroon','237',9,9],['CA','Canada','1',10,10],['CV','Cape Verde','238',7,7],['KY','Cayman Islands','1',10,10],\n    ['CF','Central African Republic','236',8,8],['TD','Chad','235',8,8],['CL','Chile','56',9,9],['CN','China','86',11,11],\n    ['CO','Colombia','57',10,10],['KM','Comoros','269',7,7],['CG','Congo - Brazzaville','242',9,9],['CD','Congo - Kinshasa','243',9,9],\n    ['CK','Cook Islands','682',5,5],['CR','Costa Rica','506',8,8],['CI','C\u00f4te d\u2019Ivoire','225',10,10],['HR','Croatia','385',8,9],\n    ['CU','Cuba','53',8,8],['CW','Cura\u00e7ao','599',7,7],['CY','Cyprus','357',8,8],['CZ','Czechia','420',9,9],\n    ['DK','Denmark','45',8,8],['DJ','Djibouti','253',8,8],['DM','Dominica','1',10,10],['DO','Dominican Republic','1',10,10],\n    ['EC','Ecuador','593',9,9],['EG','Egypt','20',10,10],['SV','El Salvador','503',8,8],['GQ','Equatorial Guinea','240',9,9],\n    ['ER','Eritrea','291',7,7],['EE','Estonia','372',7,8],['SZ','Eswatini','268',8,8],['ET','Ethiopia','251',9,9],\n    ['FK','Falkland Islands','500',5,5],['FO','Faroe Islands','298',6,6],['FJ','Fiji','679',7,7],['FI','Finland','358',9,10],\n    ['FR','France','33',9,9],['GF','French Guiana','594',9,9],['PF','French Polynesia','689',8,8],['GA','Gabon','241',7,8],\n    ['GM','Gambia','220',7,7],['GE','Georgia','995',9,9],['DE','Germany','49',10,11],['GH','Ghana','233',9,9],\n    ['GI','Gibraltar','350',8,8],['GR','Greece','30',10,10],['GL','Greenland','299',6,6],['GD','Grenada','1',10,10],\n    ['GP','Guadeloupe','590',9,9],['GU','Guam','1',10,10],['GT','Guatemala','502',8,8],['GG','Guernsey','44',10,10],\n    ['GN','Guinea','224',9,9],['GW','Guinea-Bissau','245',7,7],['GY','Guyana','592',7,7],['HT','Haiti','509',8,8],\n    ['HN','Honduras','504',8,8],['HK','Hong Kong','852',8,8],['HU','Hungary','36',9,9],['IS','Iceland','354',7,7],\n    ['IN','India','91',10,10],['ID','Indonesia','62',9,11],['IR','Iran','98',10,10],['IQ','Iraq','964',10,10],\n    ['IE','Ireland','353',9,9],['IM','Isle of Man','44',10,10],['IL','Israel','972',9,9],['IT','Italy','39',9,11],\n    ['JM','Jamaica','1',10,10],['JP','Japan','81',10,10],['JE','Jersey','44',10,10],['JO','Jordan','962',9,9],\n    ['KZ','Kazakhstan','7',10,10],['KE','Kenya','254',9,9],['KI','Kiribati','686',5,5],['KW','Kuwait','965',8,8],\n    ['KG','Kyrgyzstan','996',9,9],['LA','Laos','856',8,10],['LV','Latvia','371',8,8],['LB','Lebanon','961',7,8],\n    ['LS','Lesotho','266',8,8],['LR','Liberia','231',8,9],['LY','Libya','218',9,9],['LI','Liechtenstein','423',7,7],\n    ['LT','Lithuania','370',8,8],['LU','Luxembourg','352',9,9],['MO','Macao','853',8,8],['MG','Madagascar','261',9,9],\n    ['MW','Malawi','265',9,9],['MY','Malaysia','60',9,10],['MV','Maldives','960',7,7],['ML','Mali','223',8,8],\n    ['MT','Malta','356',8,8],['MH','Marshall Islands','692',7,7],['MQ','Martinique','596',9,9],['MR','Mauritania','222',8,8],\n    ['MU','Mauritius','230',7,8],['YT','Mayotte','262',9,9],['MX','Mexico','52',10,10],['FM','Micronesia','691',7,7],\n    ['MD','Moldova','373',8,8],['MC','Monaco','377',8,9],['MN','Mongolia','976',8,8],['ME','Montenegro','382',8,8],\n    ['MS','Montserrat','1',10,10],['MA','Morocco','212',9,9],['MZ','Mozambique','258',9,9],['MM','Myanmar','95',8,10],\n    ['NA','Namibia','264',9,9],['NR','Nauru','674',7,7],['NP','Nepal','977',10,10],['NL','Netherlands','31',9,9],\n    ['NC','New Caledonia','687',6,6],['NZ','New Zealand','64',8,10],['NI','Nicaragua','505',8,8],['NE','Niger','227',8,8],\n    ['NG','Nigeria','234',10,10],['NU','Niue','683',4,4],['NF','Norfolk Island','672',6,6],['KP','North Korea','850',10,10],\n    ['MK','North Macedonia','389',8,8],['MP','Northern Mariana Islands','1',10,10],['NO','Norway','47',8,8],['OM','Oman','968',8,8],\n    ['PK','Pakistan','92',10,10],['PW','Palau','680',7,7],['PS','Palestine','970',9,9],['PA','Panama','507',8,8],\n    ['PG','Papua New Guinea','675',8,8],['PY','Paraguay','595',9,9],['PE','Peru','51',9,9],['PH','Philippines','63',10,10],\n    ['PL','Poland','48',9,9],['PT','Portugal','351',9,9],['PR','Puerto Rico','1',10,10],['QA','Qatar','974',8,8],\n    ['RE','R\u00e9union','262',9,9],['RO','Romania','40',9,9],['RU','Russia','7',10,10],['RW','Rwanda','250',9,9],\n    ['WS','Samoa','685',7,7],['SM','San Marino','378',10,10],['ST','S\u00e3o Tom\u00e9 & Pr\u00edncipe','239',7,7],['SA','Saudi Arabia','966',9,9],\n    ['SN','Senegal','221',9,9],['RS','Serbia','381',8,9],['SC','Seychelles','248',7,7],['SL','Sierra Leone','232',8,8],\n    ['SG','Singapore','65',8,8],['SX','Sint Maarten','1',10,10],['SK','Slovakia','421',9,9],['SI','Slovenia','386',8,8],\n    ['SB','Solomon Islands','677',7,7],['SO','Somalia','252',8,8],['ZA','South Africa','27',9,9],['KR','South Korea','82',9,10],\n    ['SS','South Sudan','211',9,9],['ES','Spain','34',9,9],['LK','Sri Lanka','94',9,9],['SD','Sudan','249',9,9],\n    ['SR','Suriname','597',7,7],['SE','Sweden','46',7,9],['CH','Switzerland','41',9,9],['SY','Syria','963',9,9],\n    ['TW','Taiwan','886',9,9],['TJ','Tajikistan','992',9,9],['TZ','Tanzania','255',9,9],['TH','Thailand','66',9,9],\n    ['TL','Timor-Leste','670',7,8],['TG','Togo','228',8,8],['TK','Tokelau','690',4,4],['TO','Tonga','676',5,7],\n    ['TT','Trinidad & Tobago','1',10,10],['TN','Tunisia','216',8,8],['TR','T\u00fcrkiye','90',10,10],['TM','Turkmenistan','993',8,8],\n    ['TC','Turks & Caicos Islands','1',10,10],['TV','Tuvalu','688',5,6],['UG','Uganda','256',9,9],['UA','Ukraine','380',9,9],\n    ['AE','United Arab Emirates','971',9,9],['GB','United Kingdom','44',10,10],['US','United States','1',10,10],['UY','Uruguay','598',8,8],\n    ['UZ','Uzbekistan','998',9,9],['VU','Vanuatu','678',7,7],['VA','Vatican City','379',10,10],['VE','Venezuela','58',10,10],\n    ['VN','Vietnam','84',9,10],['VI','U.S. Virgin Islands','1',10,10],['WF','Wallis & Futuna','681',6,6],['YE','Yemen','967',9,9],\n    ['ZM','Zambia','260',9,9],['ZW','Zimbabwe','263',9,9]\n  ];\n  function iso2flag(iso){return iso.toUpperCase().replace(\/.\/g,function(ch){return String.fromCodePoint(127397+ch.charCodeAt(0));});}\n  var COUNTRIES=CDATA.map(function(r){return {c:r[0],n:r[1],d:'+'+r[2],dial:r[2],f:iso2flag(r[0]),min:r[3],max:r[4]};});\n  var BY_ISO={};COUNTRIES.forEach(function(c){BY_ISO[c.c]=c;});\n\n  function detectCountry(){\n    try{\n      var locs=(navigator.languages&&navigator.languages.length)?navigator.languages:[navigator.language||''];\n      for(var i=0;i<locs.length;i++){\n        var loc=locs[i]||'';var region='';\n        if(window.Intl&&Intl.Locale){try{region=(new Intl.Locale(loc)).region||'';}catch(e){}}\n        if(!region){var m=loc.match(\/[-_]([A-Za-z]{2})(?:$|[-_])\/);if(m)region=m[1];}\n        if(region&&BY_ISO[region.toUpperCase()])return BY_ISO[region.toUpperCase()];\n      }\n    }catch(e){}\n    return BY_ISO['AE'];\n  }\n  var country=detectCountry();\n\n  var MESSAGES=[\n    'Reviewing market data\u2026',\n    'Calculating investment metrics\u2026',\n    'Comparing similar properties\u2026',\n    'Measuring liquidity\u2026',\n    'Building your report\u2026',\n    'Finalizing analysis\u2026'\n  ];\n\n  var scenes={gate:root.querySelector('#scene-gate'),proc:root.querySelector('#scene-proc'),ready:root.querySelector('#scene-ready')};\n  var current=null;\n  var crumbs={gate:'Unlock',proc:'Processing',ready:'Complete'};\n\n  function show(name,skipAnim){\n    if(current===name)return;\n    var next=scenes[name];\n    function mount(){\n      Object.keys(scenes).forEach(function(k){scenes[k].classList.remove('is-active','is-leaving');});\n      next.classList.add('is-active');\n      \/\/ restart child rise animations\n      next.querySelectorAll('.ge-rise').forEach(function(el){el.style.animation='none';void el.offsetWidth;el.style.animation='';});\n      current=name;\n      crumb.innerHTML='Report &nbsp;\u00b7&nbsp; <b>'+crumbs[name]+'<\/b>';\n      if(name==='proc')runProcessing();\n    }\n    var prev=current&&scenes[current];\n    if(prev&&!skipAnim){prev.classList.add('is-leaving');setTimeout(mount,300);}else{mount();}\n  }\n\n  \/* ===== PHONE GATE ===== *\/\n  var ccWrap=root.querySelector('#ge-cc'),ccBtn=root.querySelector('#ge-cc-btn'),ccMenu=root.querySelector('#ge-cc-menu'),\n      ccFlag=root.querySelector('#ge-cc-flag'),ccDial=root.querySelector('#ge-cc-dial'),\n      ccInput=root.querySelector('#ge-cc-input'),ccList=root.querySelector('#ge-cc-list'),\n      phoneField=root.querySelector('#ge-phone-field'),phone=root.querySelector('#ge-phone'),\n      consent=root.querySelector('#ge-consent'),unlock=root.querySelector('#ge-unlock');\n  var consentOK=false,ccFiltered=COUNTRIES.slice(),ccCursor=0;\n\n  function esc(s){return String(s).replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;');}\n  function ccMark(text,q){\n    if(!q)return esc(text);var i=text.toLowerCase().indexOf(q.toLowerCase());\n    if(i<0)return esc(text);\n    return '<span class=\"ge-cc-mark\">'+esc(text.slice(0,i))+'<b>'+esc(text.slice(i,i+q.length))+'<\/b>'+esc(text.slice(i+q.length))+'<\/span>';\n  }\n  function setCountry(c){\n    country=c;ccFlag.textContent=c.f;ccDial.textContent=c.d;\n    phone.setAttribute('placeholder',samplePlaceholder(c));validate();\n  }\n  function samplePlaceholder(c){\n    var n=c.max||c.min||9,s='';for(var i=0;i<n;i++)s+=(i+1)%10;\n    return s.replace(\/(\\d{2,3})(?=\\d)\/g,'$1 ').trim();\n  }\n  function renderCC(q){\n    q=(q||'').trim();var qd=q.replace(\/[^\\d]\/g,'');\n    ccFiltered=COUNTRIES.filter(function(c){\n      if(!q)return true;\n      var byName=c.n.toLowerCase().indexOf(q.toLowerCase())>-1;\n      var byIso=c.c.toLowerCase()===q.toLowerCase()||c.c.toLowerCase().indexOf(q.toLowerCase())===0;\n      var byDial=qd&&(c.dial.indexOf(qd)===0||('+'+c.dial).indexOf(q)===0);\n      return byName||byIso||byDial;\n    });\n    if(!ccFiltered.length){ccList.innerHTML='<div class=\"ge-cc-empty\">No match for \u201c'+esc(q)+'\u201d<\/div>';return;}\n    ccCursor=Math.max(0,ccFiltered.indexOf(country));if(q)ccCursor=0;\n    ccList.innerHTML=ccFiltered.map(function(c,i){\n      return '<div class=\"ge-cc-item'+(c.c===country.c?' sel':'')+(i===ccCursor?' cursor':'')+'\" role=\"option\" data-iso=\"'+c.c+'\" aria-selected=\"'+(c.c===country.c)+'\">'+\n        '<span class=\"ge-flag\">'+c.f+'<\/span><span class=\"ge-cc-name\">'+ccMark(c.n,q)+'<\/span>'+\n        '<span class=\"ge-dial\">'+c.d+'<\/span>'+\n        '<span class=\"ge-tickmini\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 12l6 6 10-12\"\/><\/svg><\/span><\/div>';\n    }).join('');\n    ccList.querySelectorAll('.ge-cc-item').forEach(function(el){\n      el.addEventListener('click',function(){setCountry(BY_ISO[el.getAttribute('data-iso')]);closeCC();});\n    });\n    revealCursor();\n  }\n  function moveCursor(delta){\n    var items=ccList.querySelectorAll('.ge-cc-item');if(!items.length)return;\n    ccCursor=Math.max(0,Math.min(items.length-1,ccCursor+delta));\n    items.forEach(function(el,i){el.classList.toggle('cursor',i===ccCursor);});\n    revealCursor();\n  }\n  function revealCursor(){\n    var el=ccList.querySelectorAll('.ge-cc-item')[ccCursor];if(!el)return;\n    var top=el.offsetTop,bot=top+el.offsetHeight;\n    if(top<ccList.scrollTop)ccList.scrollTop=top-6;\n    else if(bot>ccList.scrollTop+ccList.clientHeight)ccList.scrollTop=bot-ccList.clientHeight+6;\n  }\n  function openCC(){\n    ccWrap.classList.add('open');ccBtn.setAttribute('aria-expanded','true');\n    ccInput.value='';renderCC('');setTimeout(function(){ccInput.focus();},60);\n  }\n  function closeCC(){ccWrap.classList.remove('open');ccBtn.setAttribute('aria-expanded','false');}\n\n  ccBtn.addEventListener('click',function(e){e.stopPropagation();ccWrap.classList.contains('open')?closeCC():openCC();});\n  document.addEventListener('click',function(e){if(!ccWrap.contains(e.target))closeCC();});\n  ccInput.addEventListener('input',function(){renderCC(this.value);});\n  ccInput.addEventListener('keydown',function(e){\n    if(e.key==='ArrowDown'){e.preventDefault();moveCursor(1);}\n    else if(e.key==='ArrowUp'){e.preventDefault();moveCursor(-1);}\n    else if(e.key==='Enter'){e.preventDefault();if(ccFiltered[ccCursor]){setCountry(ccFiltered[ccCursor]);closeCC();phone.focus();}}\n    else if(e.key==='Escape'){e.preventDefault();closeCC();ccBtn.focus();}\n  });\n\n  function digits(){return phone.value.replace(\/\\D\/g,'');}\n  function validate(){\n    var d=digits();\n    var ok=d.length>=(country.min||6)&&d.length<=(country.max||15);\n    phoneField.classList.toggle('valid',ok);\n    unlock.disabled=!(ok&&consentOK);\n    return ok;\n  }\n  phone.addEventListener('input',function(){\n    \/\/ light grouping for readability\n    var d=digits().slice(0,15);\n    var grouped=d.replace(\/(\\d{2,3})(?=\\d)\/g,'$1 ').trim();\n    this.value=grouped;validate();\n  });\n  consent.addEventListener('click',function(e){e.preventDefault();consentOK=!consentOK;consent.classList.toggle('checked',consentOK);validate();});\n  unlock.addEventListener('click',function(){\n    if(unlock.disabled)return;\n    try{localStorage.setItem('ge_phone_verified','1');localStorage.setItem('ge_phone',country.d+' '+phone.value);}catch(e){}\n    show('proc');\n  });\n\n  \/* ===== PROCESSING ===== *\/\n  var pctEl=root.querySelector('#ge-pct'),fill=root.querySelector('#ge-proc-fill'),\n      msgWrap=root.querySelector('#ge-proc-msg'),stepsWrap=root.querySelector('#ge-proc-steps');\n  var procTimers=[];\n  function clearProc(){procTimers.forEach(clearTimeout);procTimers=[];if(msgWrap._raf)cancelAnimationFrame(msgWrap._raf);}\n  function runProcessing(){\n    clearProc();\n    msgWrap.innerHTML=MESSAGES.map(function(m){return '<span>'+m+'<\/span>';}).join('');\n    stepsWrap.innerHTML=MESSAGES.map(function(){return '<i><\/i>';}).join('');\n    var msgEls=msgWrap.querySelectorAll('span'),stepEls=stepsWrap.querySelectorAll('i');\n    var total=MESSAGES.length;var per=1500;var duration=total*per;\n    \/\/ rotating messages\n    msgEls[0].classList.add('on');stepEls[0].classList.add('done');\n    for(var i=1;i<total;i++){(function(i){\n      procTimers.push(setTimeout(function(){\n        msgEls.forEach(function(e){e.classList.remove('on');});\n        msgEls[i].classList.add('on');stepEls[i].classList.add('done');\n      },i*per));\n    })(i);}\n    \/\/ progress counter + bar\n    var start=performance.now();\n    function tick(now){\n      var p=Math.min((now-start)\/duration,1);\n      var e=1-Math.pow(1-p,2.2);\n      var pct=Math.round(e*100);\n      pctEl.innerHTML=pct+'<span>%<\/span>';\n      fill.style.width=(e*100)+'%';\n      if(p<1){msgWrap._raf=requestAnimationFrame(tick);}\n      else{procTimers.push(setTimeout(function(){show('ready');},650));}\n    }\n    msgWrap._raf=requestAnimationFrame(tick);\n  }\n\n  \/* ===== READY ===== *\/\n  var PRODUCT_TO_KEY={'investment advisor':'advisor','opportunity radar':'radar','property evaluation':'eval','market intelligence':'market'};\n  var savedProduct='';try{savedProduct=(localStorage.getItem('ge_product')||'').trim();}catch(e){}\n  var reportLabel=root.querySelector('#ge-view-product');\n  if(reportLabel&&savedProduct)reportLabel.textContent=savedProduct;\n  root.querySelector('#ge-view').addEventListener('click',function(){\n    window.GEO.go('d');\n  });\n\n  function initEntry(){\n    setCountry(country);\n    \/\/ New users see the Phone Gate; returning (verified) users skip straight to processing.\n    var verified=false;try{verified=localStorage.getItem('ge_phone_verified')==='1';}catch(e){}\n    clearProc();\n    if(verified){show('proc',true);}else{show('gate',true);}\n  }\n\n  \/* ambient lines *\/\n  (function(){var wrap=root.querySelector('#ge-lines');for(var i=0;i<7;i++){var pos=(100\/8)*(i+1);\n    var line=document.createElement('div');line.className='ge-vline';line.style.left=pos+'%';\n    var p=document.createElement('div');p.className='ge-pulse';p.style.animationDelay=(i*1.15)+'s';p.style.animationDuration=(6+(i%3))+'s';\n    line.appendChild(p);wrap.appendChild(line);}})();\n\n  window.GEO.onEnter('c', function(){\n    savedProduct=''; try{ savedProduct=(localStorage.getItem('ge_product')||'').trim(); }catch(e){}\n    if(reportLabel && savedProduct) reportLabel.textContent = savedProduct;\n    initEntry();\n  });\n\n})();<\/script>\n\n<script>(function(){\n\n  var root=document.getElementById('scr-d');\n  if(!root) return;\n  var mount=root.querySelector('#ge-report');\n\n  \/* ===== USER MEMORY ===== *\/\n  var user={name:'',phone:''};\n  try{\n    user.name=localStorage.getItem('ge_user_name')||'';\n    user.phone=localStorage.getItem('ge_user_phone')||localStorage.getItem('ge_phone')||'';\n  }catch(e){}\n  \/\/ On first arrival at a report the unlock is complete \u2192 persist identity + returning flag.\n  try{\n    if(user.name)localStorage.setItem('ge_user_name',user.name);\n    if(user.phone)localStorage.setItem('ge_user_phone',user.phone);\n    localStorage.setItem('ge_returning','1');\n  }catch(e){}\n  var displayName=user.name||'Valued Investor';\n  var firstName=displayName.split(' ')[0];\n\n  function today(){\n    var d=new Date();var mo=['January','February','March','April','May','June','July','August','September','October','November','December'];\n    return d.getDate()+' '+mo[d.getMonth()]+' '+d.getFullYear();\n  }\n  function refNo(seed){\n    var d=new Date();var y=d.getFullYear();\n    return 'GE-'+y+'-'+seed+'-'+String(1000+Math.floor(Math.random()*8999));\n  }\n\n  \/* ===== SVG helpers ===== *\/\n  function ring(score,size){\n    size=size||158;var r=68,c=2*Math.PI*r;var off=c*(1-score\/100);\n    return '<svg viewBox=\"0 0 158 158\">'+\n      '<circle cx=\"79\" cy=\"79\" r=\"'+r+'\" fill=\"none\" stroke=\"rgba(198,166,100,.13)\" stroke-width=\"7\"\/>'+\n      '<circle cx=\"79\" cy=\"79\" r=\"'+r+'\" fill=\"none\" stroke=\"url(#gge)\" stroke-width=\"7\" stroke-linecap=\"round\" stroke-dasharray=\"'+c+'\" stroke-dashoffset=\"'+off+'\"\/>'+\n      '<defs><linearGradient id=\"gge\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"#E4C87F\"\/><stop offset=\"1\" stop-color=\"#9C7C43\"\/><\/linearGradient><\/defs><\/svg>';\n  }\n  function gauge(score,band,title,desc){\n    return '<div class=\"rp-card rp-gauge\"><div class=\"ring\">'+ring(score)+\n      '<div class=\"core\"><div class=\"num\">'+score+'<span>\/100<\/span><\/div><div class=\"band\">'+band+'<\/div><\/div><\/div>'+\n      '<div class=\"g-title\">'+title+'<\/div><div class=\"g-desc\">'+desc+'<\/div><\/div>';\n  }\n  function mini(label,pct,val){\n    return '<div class=\"rp-card rp-mini\"><div class=\"m-l\">'+label+'<\/div><div class=\"m-bar\"><i style=\"width:'+pct+'%\"><\/i><\/div><div class=\"m-v\">'+val+'<\/div><\/div>';\n  }\n  function metric(label,val,sub,delta){\n    var d='';\n    if(delta){var dir=delta.dir;d='<div class=\"d '+dir+'\"><span class=\"ar\"><\/span>'+delta.txt+'<\/div>';}\n    else if(sub){d='<div class=\"d\">'+sub+'<\/div>';}\n    return '<div class=\"rp-card rp-metric\"><div class=\"l\">'+label+'<\/div><div class=\"v\">'+val+'<\/div>'+d+'<\/div>';\n  }\n  function metrics(list,cols){\n    return '<div class=\"rp-grid'+(cols===3?' g3':'')+'\">'+list.map(function(m){return metric(m.l,m.v,m.s,m.d);}).join('')+'<\/div>';\n  }\n  function bars(title,tag,data,ghostFrom){\n    var max=Math.max.apply(null,data.map(function(d){return d.v;}));\n    var cols=data.map(function(d,i){\n      var h=Math.round(d.v\/max*100);\n      var ghost=(ghostFrom!=null&&i>=ghostFrom)?' ghost':'';\n      return '<div class=\"rp-bar\"><div class=\"col'+ghost+'\" style=\"height:'+h+'%\"><span class=\"cap\">'+d.c+'<\/span><\/div><div class=\"bl\">'+d.l+'<\/div><\/div>';\n    }).join('');\n    return '<div class=\"rp-card rp-chart\"><div class=\"rp-chart-head\"><div class=\"rp-chart-title\">'+title+'<\/div><div class=\"rp-chart-tag\">'+tag+'<\/div><\/div><div class=\"rp-bars\">'+cols+'<\/div><\/div>';\n  }\n  function area(title,tag,points,labels,legend){\n    var W=560,H=190,pad=8,base=H-24,top=16,max=Math.max.apply(null,points),min=Math.min.apply(null,points);\n    var span=(max-min)||1;\n    var xs=points.map(function(_,i){return pad+i*((W-pad*2)\/(points.length-1));});\n    var ys=points.map(function(p){return top+(1-(p-min)\/span)*(base-top);});\n    var line='';for(var i=0;i<xs.length;i++){line+=(i?' L':'M')+xs[i].toFixed(1)+' '+ys[i].toFixed(1);}\n    var areaP=line+' L'+xs[xs.length-1].toFixed(1)+' '+base+' L'+xs[0].toFixed(1)+' '+base+' Z';\n    var grid='';for(var g=0;g<4;g++){var gy=top+g*((base-top)\/3);grid+='<line x1=\"'+pad+'\" y1=\"'+gy+'\" x2=\"'+(W-pad)+'\" y2=\"'+gy+'\" stroke=\"rgba(198,166,100,.08)\" stroke-width=\"1\"\/>';}\n    var lab=labels.map(function(l,i){return '<text x=\"'+xs[i].toFixed(1)+'\" y=\"'+(H-4)+'\" fill=\"#8A93A6\" font-size=\"10\" text-anchor=\"middle\" font-family=\"Inter\">'+l+'<\/text>';}).join('');\n    var dots='';for(var k=0;k<xs.length;k++){dots+='<circle cx=\"'+xs[k].toFixed(1)+'\" cy=\"'+ys[k].toFixed(1)+'\" r=\"2.4\" fill=\"#E4C87F\"\/>';}\n    var leg=legend?('<div class=\"rp-legend\">'+legend.map(function(l){return '<span><i style=\"background:'+l.c+'\"><\/i>'+l.t+'<\/span>';}).join('')+'<\/div>'):'';\n    return '<div class=\"rp-card rp-chart\"><div class=\"rp-chart-head\"><div class=\"rp-chart-title\">'+title+'<\/div><div class=\"rp-chart-tag\">'+tag+'<\/div><\/div>'+\n      '<svg class=\"rp-area\" viewBox=\"0 0 '+W+' '+H+'\" preserveAspectRatio=\"none\"><defs><linearGradient id=\"ar'+Math.floor(Math.random()*9999)+'\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><\/linearGradient>'+\n      '<linearGradient id=\"afill\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop offset=\"0\" stop-color=\"rgba(198,166,100,.34)\"\/><stop offset=\"1\" stop-color=\"rgba(198,166,100,0)\"\/><\/linearGradient><\/defs>'+\n      grid+'<path d=\"'+areaP+'\" fill=\"url(#afill)\"\/><path d=\"'+line+'\" fill=\"none\" stroke=\"#E4C87F\" stroke-width=\"2\"\/>'+dots+lab+'<\/svg>'+leg+'<\/div>';\n  }\n  function donut(title,segs){\n    var total=segs.reduce(function(a,s){return a+s.v;},0),acc=0,r=54,c=2*Math.PI*r,gap=2;\n    var circles=segs.map(function(s){\n      var frac=s.v\/total,len=c*frac-gap,off=c*0.25-acc*c;acc+=frac;\n      return '<circle cx=\"75\" cy=\"75\" r=\"'+r+'\" fill=\"none\" stroke=\"'+s.c+'\" stroke-width=\"16\" stroke-dasharray=\"'+len+' '+(c-len)+'\" stroke-dashoffset=\"'+off+'\"\/>';\n    }).join('');\n    var keys=segs.map(function(s){return '<div><i style=\"background:'+s.c+'\"><\/i>'+s.t+'<b>'+s.v+'%<\/b><\/div>';}).join('');\n    return '<div class=\"rp-card rp-donut\"><svg viewBox=\"0 0 150 150\">'+circles+'<\/svg><div class=\"keys\">'+keys+'<\/div><\/div>';\n  }\n  function table(cols,rows){\n    var head=cols.map(function(c){return '<th class=\"'+(c.r?'r':'')+'\">'+c.t+'<\/th>';}).join('');\n    var body=rows.map(function(r){return '<tr>'+r.map(function(cell,i){return '<td class=\"'+(cols[i].r?'r ':'')+(cell.cls||'')+'\">'+cell.v+'<\/td>';}).join('')+'<\/tr>';}).join('');\n    return '<div class=\"rp-card rp-table\"><table><thead><tr>'+head+'<\/tr><\/thead><tbody>'+body+'<\/tbody><\/table><\/div>';\n  }\n  function reco(label,text){return '<div class=\"rp-reco\"><div class=\"r-l\">'+label+'<\/div><div class=\"r-t\">'+text+'<\/div><\/div>';}\n  function listBlock(title,icon,items,isRisk){\n    var rows=items.map(function(it){\n      var sev=it.sev?'<span class=\"sev\">'+it.sev+'<\/span>':'';\n      return '<div class=\"rp-item'+(isRisk?' risk':'')+'\"><span class=\"dot\"><\/span><span>'+it.t+'<\/span>'+sev+'<\/div>';\n    }).join('');\n    return '<div class=\"rp-card rp-list\"><h4><span class=\"ic\">'+icon+'<\/span>'+title+'<\/h4>'+rows+'<\/div>';\n  }\n  function verdict(badge,text,scale){\n    var sc='';for(var i=0;i<5;i++)sc+='<i class=\"'+(i<scale?'on':'')+'\"><\/i>';\n    return '<div class=\"rp-verdict\"><div class=\"v-l\">Final Recommendation<\/div><div class=\"v-badge\">'+ICON.seal+badge+'<\/div><div class=\"v-t\">'+text+'<\/div><div class=\"v-scale\">'+sc+'<\/div><\/div>';\n  }\n  function sec(no,title,inner){\n    return '<div class=\"rp-sec\"><div class=\"rp-sec-head\"><span class=\"rp-sec-no\">'+no+'<\/span><span class=\"rp-sec-h\">'+title+'<\/span><span class=\"rp-sec-line\"><\/span><\/div>'+inner+'<\/div>';\n  }\n  function lead(html){return '<p class=\"rp-lead\">'+html+'<\/p>';}\n\n  \/\/ Investment Brief \u2014 the questionnaire answers, carried into the report instead\n  \/\/ of a separate confirmation screen; shared by all four report types.\n  function briefSection(){\n    var raw=null; try{ raw=JSON.parse(localStorage.getItem('ge_answers')||'null'); }catch(e){}\n    if(!raw||!raw.items||!raw.items.length) return '';\n    var list=metrics(raw.items.map(function(it){return {l:it.label,v:it.value};}), raw.items.length>6?4:3);\n    return sec('\u2014','Investment Brief', lead('A summary of the preferences and criteria '+firstName+' provided, prepared as the foundation for this analysis.')+'<div class=\"rp-p\">'+list+'<\/div>');\n  }\n\n  var ICON={\n    seal:'<svg viewBox=\"0 0 24 24\" width=\"30\" height=\"30\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\" style=\"opacity:.9\"><path d=\"M12 2l2.4 4.9 5.4.8-3.9 3.8.9 5.4L12 19.3 7.2 21.7l.9-5.4L4.2 8.5l5.4-.8z\"\/><\/svg>',\n    plus:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M12 5v14M5 12h14\"\/><\/svg>',\n    minus:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M5 12h14\"\/><\/svg>',\n    shield:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M12 3l7 2.4v5.2c0 4.6-3 8.3-7 9.4-4-1.1-7-4.8-7-9.4V5.4z\"\/><\/svg>',\n    pdf:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M6 3h8l4 4v14H6z\"\/><path d=\"M14 3v4h4M9 13h6M9 17h6\"\/><\/svg>',\n    refresh:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M4 12a8 8 0 0113.7-5.7L20 8M20 4v4h-4\"\/><path d=\"M20 12a8 8 0 01-13.7 5.7L4 16M4 20v-4h4\"\/><\/svg>',\n    wa:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2a10 10 0 00-8.6 15l-1.4 5 5.1-1.3A10 10 0 1012 2zm0 2a8 8 0 11-4.2 14.8l-.3-.2-3 .8.8-2.9-.2-.3A8 8 0 0112 4zm-2.9 4.3c-.2 0-.5 0-.7.4-.3.4-1 1-1 2.4s1 2.8 1.2 3c.1.2 2 3.1 4.9 4.2 2.4 1 2.9.8 3.4.7.5 0 1.6-.6 1.8-1.3.2-.6.2-1.2.2-1.3-.1-.1-.3-.2-.6-.4-.3-.1-1.7-.9-2-1-.3-.1-.5-.1-.6.2-.2.3-.7.9-.8 1-.2.2-.3.2-.6.1-.3-.2-1.2-.5-2.3-1.4-.9-.8-1.4-1.7-1.6-2-.2-.3 0-.5.1-.6l.4-.5c.2-.2.2-.3.3-.5.1-.2 0-.4 0-.5 0-.2-.6-1.6-.9-2.2-.2-.5-.4-.4-.6-.4h-.4z\"\/><\/svg>'\n  };\n\n  function actions(seed){\n    return '<div class=\"rp-cta\">'+\n      '<div class=\"cta-l\"><div class=\"cta-eyebrow\">Private Client Desk<\/div><div class=\"cta-h\">Discuss this report with <em>your advisor.<\/em><\/div>'+\n      '<div class=\"cta-sub\">Our Dubai investment specialists are available for a confidential consultation on your findings.<\/div><\/div>'+\n      '<button class=\"ge-btn ge-btn--gold\" data-act=\"advisor\">Speak to Advisor <span class=\"ge-arrow\"><\/span><\/button><\/div>'+\n      '<div class=\"rp-actions\">'+\n        '<button class=\"ge-btn ge-btn--gold rp-icon-btn\" data-act=\"pdf\"><span class=\"bi\">'+ICON.pdf+'<\/span> Save PDF<\/button>'+\n        '<button class=\"ge-btn ge-btn--glass rp-icon-btn\" data-act=\"new\"><span class=\"bi\">'+ICON.refresh+'<\/span> Start New Analysis<\/button>'+\n        '<button class=\"ge-btn ge-btn--glass rp-icon-btn\" data-act=\"advisor\"><span class=\"bi\">'+ICON.wa+'<\/span> Speak to Advisor<\/button>'+\n      '<\/div>'+\n      '<div class=\"rp-foot\">Ref. '+refNo(seed)+' &nbsp;\u00b7&nbsp; Prepared for <b>'+esc(displayName)+'<\/b> &nbsp;\u00b7&nbsp; '+today()+'<br>Strictly private &amp; confidential. This document is an illustrative analysis and does not constitute financial advice.<\/div>';\n  }\n\n  function cover(product,tagline){\n    return '<div class=\"rp-cover\"><img decoding=\"async\" class=\"rp-cover-logo\" src=\"http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-pdf.png\" alt=\"GeoEstate\" onerror=\"this.onerror=null;this.src=&quot;assets\/geoestate-lockup.png&quot;;\"><div class=\"rp-conf\">Confidential Investment Memorandum<\/div>'+\n      '<h1 class=\"rp-cover-title\">'+product+'<\/h1>'+\n      '<p class=\"rp-cover-sub\">'+tagline+'<\/p>'+\n      '<div class=\"rp-cover-meta\">'+\n        '<div class=\"rp-cm\"><div class=\"rp-cm-l\">Prepared For<\/div><div class=\"rp-cm-v gold\">'+esc(displayName)+'<\/div><\/div>'+\n        '<div class=\"rp-cm\"><div class=\"rp-cm-l\">Date of Issue<\/div><div class=\"rp-cm-v\">'+today()+'<\/div><\/div>'+\n        '<div class=\"rp-cm\"><div class=\"rp-cm-l\">Market<\/div><div class=\"rp-cm-v\">Dubai, UAE<\/div><\/div>'+\n        '<div class=\"rp-cm\"><div class=\"rp-cm-l\">Classification<\/div><div class=\"rp-cm-v\">Private<\/div><\/div>'+\n      '<\/div><\/div>';\n  }\n  function esc(s){return String(s).replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;');}\n\n  \/* ================= REPORTS ================= *\/\n  var REPORTS={};\n\n  \/* ---- 1. INVESTMENT ADVISOR ---- *\/\n  REPORTS.advisor=function(){\n    var h='';\n    h+=cover('Investment Advisor Report','A personal capital-allocation strategy across Dubai\u2019s prime residential market, calibrated to your profile, horizon and appetite for risk.');\n    h+=briefSection();\n    h+=sec('I','Executive Summary',lead(firstName+', your profile points to a <strong>balanced growth mandate<\/strong> with a 5\u20137 year horizon. We recommend concentrating capital in <em>established prime districts<\/em> with selective off-plan exposure, targeting a blended <strong>7.8% net yield<\/strong> and mid-teens capital appreciation. Overall conviction on the strategy is <em>high<\/em>.'));\n    h+=sec('II','Investor Profile & Recommended Strategy',\n      '<div class=\"rp-two wide\"><div class=\"rp-card rp-list\"><h4><span class=\"ic\">'+ICON.shield+'<\/span>Your Profile<\/h4>'+\n        '<div class=\"rp-item\"><span class=\"dot\"><\/span><span>Seasoned Investor<\/span><span class=\"sev\">Profile<\/span><\/div>'+\n        '<div class=\"rp-item\"><span class=\"dot\"><\/span><span>Capital Appreciation focus<\/span><span class=\"sev\">Goal<\/span><\/div>'+\n        '<div class=\"rp-item\"><span class=\"dot\"><\/span><span>AED 3,000,000 deployable<\/span><span class=\"sev\">Budget<\/span><\/div>'+\n        '<div class=\"rp-item\"><span class=\"dot\"><\/span><span>Balanced risk tolerance<\/span><span class=\"sev\">Risk<\/span><\/div><\/div>'+\n      reco('Recommended Strategy','A <em>core-plus<\/em> allocation \u2014 70% ready prime assets for stability, 30% off-plan in emerging corridors for outsized appreciation.')+'<\/div>');\n    h+=sec('III','Investment Score',\n      '<div class=\"rp-scores\">'+gauge(84,'Strong','Overall Investment Score','A compelling risk-adjusted opportunity aligned to your mandate.')+\n      mini('Strategy Fit',88,'88<small>\/100<\/small>')+mini('Timing',76,'76<small>\/100<\/small>')+'<\/div>');\n    h+=sec('IV','Budget Analysis',metrics([\n      {l:'Deployable Capital',v:'AED 3.0M'},{l:'Recommended Entry',v:'AED 2.4M',s:'80% deployment'},\n      {l:'Liquidity Reserve',v:'AED 0.6M',s:'20% held'},{l:'Est. Financing',v:'50% LTV',s:'Optional leverage'}\n    ]));\n    h+=sec('V','Capital Appreciation & Rental Yield',\n      '<div class=\"rp-two\">'+area('5-Year Appreciation Forecast','Illustrative',[100,108,119,127,138,151],['2026','2027','2028','2029','2030','2031'])+\n      bars('Projected Net Rental Yield','Illustrative',[{l:'Yr 1',v:6.8,c:'6.8%'},{l:'Yr 2',v:7.2,c:'7.2%'},{l:'Yr 3',v:7.6,c:'7.6%'},{l:'Yr 4',v:8.0,c:'8.0%'},{l:'Yr 5',v:8.3,c:'8.3%'}])+'<\/div>');\n    h+=sec('VI','Exit Strategy & Liquidity',\n      '<div class=\"rp-two wide\">'+donut('Recommended Holding Mix',[{t:'Long-term hold',v:60,c:'#E4C87F'},{t:'Medium-term flip',v:28,c:'#9C7C43'},{t:'Opportunistic',v:12,c:'#6E7C96'}])+\n      metrics([{l:'Optimal Exit Window',v:'Yr 5\u20137'},{l:'Liquidity Rating',v:'High'},{l:'Est. Days on Market',v:'45\u201360'},{l:'Resale Demand',v:'Strong'}])+'<\/div>');\n    h+=sec('VII','Risk Analysis & Market Position',\n      '<div class=\"rp-two\">'+listBlock('Key Risks',ICON.shield,[\n        {t:'Off-plan handover timing variance',sev:'Moderate'},{t:'Short-term supply in select corridors',sev:'Moderate'},\n        {t:'Currency & rate sensitivity',sev:'Low'},{t:'Service-charge inflation',sev:'Low'}],true)+\n      listBlock('Market Position',ICON.plus,[\n        {t:'Dubai prime trading below global peers per sqft',sev:'Tailwind'},{t:'Resilient end-user & investor demand',sev:'Tailwind'},\n        {t:'Golden Visa driving capital inflows',sev:'Tailwind'}])+'<\/div>');\n    h+=sec('VIII','Recommended Areas',table(\n      [{t:'District'},{t:'Rationale'},{t:'Yield',r:true},{t:'Fit',r:true}],\n      [[{v:'Downtown Dubai',cls:'name'},{v:'Blue-chip liquidity & prestige'},{v:'6.5%',r:true},{v:'<span class=\"pill\">Core<\/span>',r:true}],\n       [{v:'Dubai Hills Estate',cls:'name'},{v:'Family demand, steady growth'},{v:'7.1%',r:true},{v:'<span class=\"pill\">Core<\/span>',r:true}],\n       [{v:'Dubai Creek Harbour',cls:'name'},{v:'Emerging waterfront upside'},{v:'7.8%',r:true},{v:'<span class=\"pill\">Plus<\/span>',r:true}],\n       [{v:'JVC',cls:'name'},{v:'High-yield entry point'},{v:'8.4%',r:true},{v:'<span class=\"pill\">Plus<\/span>',r:true}]]));\n    h+=sec('IX','Recommended Projects & Rationale',table(\n      [{t:'Project'},{t:'Developer'},{t:'From',r:true},{t:'Rating',r:true}],\n      [[{v:'Creek Beach',cls:'name'},{v:'Emaar'},{v:'AED 1.6M',r:true},{v:'<span class=\"stars\">\u2605\u2605\u2605\u2605\u2605<\/span>',r:true}],\n       [{v:'Sobha Hartland II',cls:'name'},{v:'Sobha'},{v:'AED 2.1M',r:true},{v:'<span class=\"stars\">\u2605\u2605\u2605\u2605\u2606<\/span>',r:true}],\n       [{v:'The Valley',cls:'name'},{v:'Emaar'},{v:'AED 1.9M',r:true},{v:'<span class=\"stars\">\u2605\u2605\u2605\u2605\u2606<\/span>',r:true}]])+\n      '<div class=\"rp-p\">'+reco('Why These Projects','Selected for <em>developer track record<\/em>, handover reliability, absorption velocity and alignment with your appreciation-led mandate.')+'<\/div>');\n    h+=sec('X','Final Recommendation',verdict('Proceed \u2014 Strong Conviction','We recommend proceeding with a phased, core-plus deployment across Downtown, Dubai Hills and a selective Creek Harbour off-plan position. The strategy is well matched to '+firstName+'\u2019s balanced mandate.',4));\n    h+=actions('IA');\n    return h;\n  };\n\n  \/* ---- 2. OPPORTUNITY RADAR ---- *\/\n  REPORTS.radar=function(){\n    var h='';\n    h+=cover('Opportunity Radar Report','A curated scan of Dubai\u2019s most compelling undervalued opportunities, ranked against your budget and criteria.');\n    h+=briefSection();\n    h+=sec('I','Executive Summary',lead('We scanned <strong>1,240 active listings<\/strong> beneath your AED 2.5M ceiling and isolated <em>five standout opportunities<\/em>. The strongest candidates cluster in emerging waterfront and mid-market growth corridors, offering above-market yield with credible appreciation runway.'));\n    h+=sec('II','Search Criteria',metrics([\n      {l:'Maximum Budget',v:'AED 2.5M'},{l:'Property Type',v:'Apartment'},{l:'Bedrooms',v:'2 BR'},{l:'Status',v:'Off-Plan'}\n    ]));\n    h+=sec('III','Opportunity Score',\n      '<div class=\"rp-scores\">'+gauge(79,'Compelling','Radar Opportunity Score','A strong slate of entries with favourable entry pricing.')+\n      mini('Value Gap',82,'+12% <small>vs market<\/small>')+mini('Momentum',74,'74<small>\/100<\/small>')+'<\/div>');\n    h+=sec('IV','Best Opportunities & Investment Ranking',table(\n      [{t:'Rank'},{t:'Project'},{t:'Area'},{t:'Price',r:true},{t:'Score',r:true}],\n      [[{v:'01'},{v:'Bluewaters Bay',cls:'name'},{v:'Bluewaters'},{v:'AED 2.3M',r:true},{v:'<span class=\"pill\">92<\/span>',r:true}],\n       [{v:'02'},{v:'Creek Beach',cls:'name'},{v:'Creek Harbour'},{v:'AED 1.9M',r:true},{v:'<span class=\"pill\">88<\/span>',r:true}],\n       [{v:'03'},{v:'DAMAC Lagoons',cls:'name'},{v:'Dubailand'},{v:'AED 1.5M',r:true},{v:'<span class=\"pill\">84<\/span>',r:true}],\n       [{v:'04'},{v:'Marina Shores',cls:'name'},{v:'Dubai Marina'},{v:'AED 2.4M',r:true},{v:'<span class=\"pill\">81<\/span>',r:true}],\n       [{v:'05'},{v:'District One West',cls:'name'},{v:'MBR City'},{v:'AED 2.2M',r:true},{v:'<span class=\"pill\">78<\/span>',r:true}]]));\n    h+=sec('V','Price Comparison',bars('Price per Sq Ft vs Area Average','Illustrative',[\n      {l:'Bluewaters',v:2150,c:'2,150'},{l:'Creek',v:1780,c:'1,780'},{l:'Lagoons',v:1320,c:'1,320'},{l:'Marina',v:1980,c:'1,980'},{l:'Avg',v:1850,c:'1,850'}],4));\n    h+=sec('VI','ROI, Yield & Appreciation Potential',\n      '<div class=\"rp-two\">'+area('Projected Total ROI (5-Yr)','Illustrative',[0,9,21,34,49,66],['Now','Yr1','Yr2','Yr3','Yr4','Yr5'])+\n      metrics([{l:'Avg Net Yield',v:'8.1%',d:{dir:'up',txt:'Above market'}},{l:'5-Yr Appreciation',v:'+34%',d:{dir:'up',txt:'Forecast'}},{l:'Payback Period',v:'8.4 yrs'},{l:'Entry Discount',v:'12%',d:{dir:'up',txt:'vs resale'}}])+'<\/div>');\n    h+=sec('VII','Developer Rating & Opportunity Strength',\n      '<div class=\"rp-two wide\">'+table(\n        [{t:'Developer'},{t:'Delivery'},{t:'Rating',r:true}],\n        [[{v:'Emaar',cls:'name'},{v:'Excellent'},{v:'<span class=\"stars\">\u2605\u2605\u2605\u2605\u2605<\/span>',r:true}],\n         [{v:'Meraas',cls:'name'},{v:'Strong'},{v:'<span class=\"stars\">\u2605\u2605\u2605\u2605\u2606<\/span>',r:true}],\n         [{v:'DAMAC',cls:'name'},{v:'Good'},{v:'<span class=\"stars\">\u2605\u2605\u2605\u2606\u2606<\/span>',r:true}]])+\n      gauge(86,'Robust','Opportunity Strength','Depth of quality candidates within budget.')+'<\/div>');\n    h+=sec('VIII','Final Recommendations',verdict('Act Selectively','Bluewaters Bay and Creek Beach represent the strongest risk-adjusted entries on the current radar. We recommend early-release positioning to capture launch pricing.',4));\n    h+=actions('OR');\n    return h;\n  };\n\n  \/* ---- 3. PROPERTY EVALUATION ---- *\/\n  REPORTS.eval=function(){\n    var h='';\n    h+=cover('Property Evaluation Report','An independent, institutional-grade valuation of your selected asset \u2014 market value, price fairness and forward return.');\n    h+=briefSection();\n    h+=sec('I','Executive Summary',lead('The subject property at <strong>Creek Beach, Dubai Creek Harbour<\/strong> carries an asking price of <strong>AED 2,600,000<\/strong>. Our analysis places fair market value at <em>AED 2,480,000<\/em>, indicating the asking price is <em>~5% above<\/em> intrinsic value \u2014 within negotiable range for a quality unit.'));\n    h+=sec('II','Property Overview',metrics([\n      {l:'Project',v:'Creek Beach'},{l:'Type',v:'Apartment'},{l:'Bedrooms',v:'2 BR'},{l:'Built-up Area',v:'1,180 sqft'}\n    ]));\n    h+=sec('III','Property Score',\n      '<div class=\"rp-scores\">'+gauge(81,'Excellent','Overall Property Score','A high-quality asset with sound fundamentals.')+\n      mini('Location',90,'90<small>\/100<\/small>')+mini('Value for Money',72,'72<small>\/100<\/small>')+'<\/div>');\n    h+=sec('IV','Market Value & Asking Price Analysis',\n      '<div class=\"rp-two\">'+metrics([{l:'Asking Price',v:'AED 2.60M'},{l:'Fair Value',v:'AED 2.48M',d:{dir:'down',txt:'5% below ask'}},{l:'Price \/ Sqft',v:'AED 2,203'},{l:'Area Avg \/ Sqft',v:'AED 2,100'}])+\n      donut('Price Fairness Assessment',[{t:'Fair value',v:82,c:'#E4C87F'},{t:'Premium to market',v:18,c:'#C98B7A'}])+'<\/div>');\n    h+=sec('V','Comparable Properties',table(\n      [{t:'Comparable'},{t:'Size',r:true},{t:'Sold',r:true},{t:'Price\/Sqft',r:true}],\n      [[{v:'Creek Beach \u2013 Sunset',cls:'name'},{v:'1,150 sqft',r:true},{v:'AED 2.42M',r:true},{v:'2,104',r:true}],\n       [{v:'Creek Beach \u2013 Breeze',cls:'name'},{v:'1,210 sqft',r:true},{v:'AED 2.55M',r:true},{v:'2,107',r:true}],\n       [{v:'Address Harbour Pt',cls:'name'},{v:'1,190 sqft',r:true},{v:'AED 2.71M',r:true},{v:'2,277',r:true}],\n       [{v:'Creek Rise',cls:'name'},{v:'1,160 sqft',r:true},{v:'AED 2.36M',r:true},{v:'2,034',r:true}]]));\n    h+=sec('VI','Investment Potential, Rental & Appreciation',\n      '<div class=\"rp-two\">'+area('Appreciation Forecast (5-Yr)','Illustrative',[100,107,116,124,133,144],['2026','2027','2028','2029','2030','2031'])+\n      metrics([{l:'Est. Annual Rent',v:'AED 170K'},{l:'Gross Yield',v:'6.5%'},{l:'Net Yield',v:'5.7%'},{l:'5-Yr Appreciation',v:'+44%',d:{dir:'up',txt:'Forecast'}}])+'<\/div>');\n    h+=sec('VII','Strengths & Weaknesses',\n      '<div class=\"rp-two\">'+listBlock('Strengths',ICON.plus,[\n        {t:'Waterfront position with skyline views'},{t:'Tier-1 developer (Emaar)'},{t:'Strong rental demand & absorption'},{t:'Handover-ready, no build risk'}])+\n      listBlock('Weaknesses',ICON.minus,[\n        {t:'Asking price above area average',sev:'Minor'},{t:'Service charges above median',sev:'Minor'},{t:'Limited near-term supply upside',sev:'Watch'}],true)+'<\/div>');\n    h+=sec('VIII','Risk Assessment',listBlock('Risk Factors',ICON.shield,[\n      {t:'Handover-market rental compression',sev:'Moderate'},{t:'Interest-rate sensitivity on financing',sev:'Low'},{t:'Secondary-market liquidity at exit',sev:'Low'}],true));\n    h+=sec('IX','Final Verdict',verdict('Fairly Priced \u2014 Negotiate','A high-quality asset marginally above fair value. We recommend proceeding at or below <em>AED 2.50M<\/em>; the fundamentals support a confident acquisition within that range.',4));\n    h+=actions('PE');\n    return h;\n  };\n\n  \/* ---- 4. MARKET INTELLIGENCE ---- *\/\n  REPORTS.market=function(){\n    var h='';\n    h+=cover('Market Intelligence Report','A macro read of the Dubai residential market \u2014 pricing, liquidity, supply dynamics and the forward investment outlook.');\n    h+=briefSection();\n    h+=sec('I','Executive Summary',lead('Dubai residential remains in a <strong>mature expansion phase<\/strong>. Prices are up <em>+17% year-on-year<\/em> with transaction volumes at record highs, though the pace of growth is moderating toward a healthier, more sustainable trajectory into 2027.'));\n    h+=sec('II','Market Overview & Area Snapshot',metrics([\n      {l:'Avg Price \/ Sqft',v:'AED 1,540',d:{dir:'up',txt:'+17% YoY'}},{l:'Annual Transactions',v:'180K+',d:{dir:'up',txt:'Record'}},\n      {l:'Avg Gross Yield',v:'7.2%'},{l:'Off-Plan Share',v:'56%',d:{dir:'up',txt:'+6pts'}}\n    ]));\n    h+=sec('III','Supply & Demand',\n      '<div class=\"rp-two\">'+bars('New Supply vs Absorption','Illustrative',[\n        {l:'2024',v:38,c:'38K'},{l:'2025',v:52,c:'52K'},{l:'2026',v:64,c:'64K'},{l:'2027',v:71,c:'71K'}],null)+\n      donut('Demand Composition',[{t:'End-users',v:44,c:'#E4C87F'},{t:'Investors',v:38,c:'#9C7C43'},{t:'Overseas',v:18,c:'#6E7C96'}])+'<\/div>');\n    h+=sec('IV','Price Trends & Transaction Activity',\n      area('Price Index & Transaction Volume','Illustrative',[100,106,113,122,129,134,139],['2020','2021','2022','2023','2024','2025','2026'],\n        [{t:'Price Index',c:'#E4C87F'},{t:'Trend',c:'#9C7C43'}]));\n    h+=sec('V','Rental Performance & Capital Growth',\n      '<div class=\"rp-two\">'+bars('Rental Growth by Segment','Illustrative',[\n        {l:'Studio',v:9,c:'+9%'},{l:'1BR',v:11,c:'+11%'},{l:'2BR',v:13,c:'+13%'},{l:'Villa',v:16,c:'+16%'}])+\n      metrics([{l:'YoY Rental Growth',v:'+13%',d:{dir:'up',txt:'City-wide'}},{l:'Capital Growth',v:'+17%',d:{dir:'up',txt:'YoY'}},{l:'Occupancy',v:'92%'},{l:'Avg Void Period',v:'21 days',d:{dir:'up',txt:'Improving'}}])+'<\/div>');\n    h+=sec('VI','Market Cycle & Developer Activity',\n      '<div class=\"rp-two wide\">'+\n      '<div class=\"rp-card rp-list\"><h4><span class=\"ic\">'+ICON.refresh+'<\/span>Market Cycle Position<\/h4>'+\n        '<div class=\"rp-item\"><span class=\"dot\"><\/span><span>Recovery<\/span><span class=\"sev\">Passed<\/span><\/div>'+\n        '<div class=\"rp-item\"><span class=\"dot\"><\/span><span>Expansion<\/span><span class=\"sev\">Current<\/span><\/div>'+\n        '<div class=\"rp-item\"><span class=\"dot\"><\/span><span>Hyper-supply<\/span><span class=\"sev\">Ahead<\/span><\/div>'+\n        '<div class=\"rp-item\"><span class=\"dot\"><\/span><span>Recession<\/span><span class=\"sev\">\u2014<\/span><\/div><\/div>'+\n      gauge(74,'Favourable','Market Health Index','Strong fundamentals, moderating momentum.')+'<\/div>');\n    h+=sec('VII','Investment Outlook, Opportunities & Risks',\n      '<div class=\"rp-two\">'+listBlock('Opportunities',ICON.plus,[\n        {t:'Emerging waterfront corridors pre-maturity',sev:'High'},{t:'Branded residences commanding premiums',sev:'High'},{t:'Mid-market yield plays in growth zones',sev:'Medium'}])+\n      listBlock('Risks',ICON.shield,[\n        {t:'Supply peak in 2026\u201327',sev:'Moderate'},{t:'Global rate & liquidity shifts',sev:'Moderate'},{t:'Short-term rental regulation',sev:'Low'}],true)+'<\/div>');\n    h+=sec('VIII','Final Market Summary',verdict('Constructive \u2014 Selective','Dubai remains a <em>constructive<\/em> market for disciplined investors. We favour quality assets in maturing corridors and counsel selectivity as new supply enters through 2027.',4));\n    h+=actions('MI');\n    return h;\n  };\n\n  \/* ===== RENDER ===== *\/\n  \/\/ The report is determined solely by the completed product journey \u2014 never by manual navigation.\n  \/\/ Resolution order: ?report= \/ ?product= URL param \u2192 saved product from the journey \u2192 default.\n  var PRODUCT_TO_KEY={\n    'investment advisor':'advisor','opportunity radar':'radar',\n    'property evaluation':'eval','market intelligence':'market',\n    'advisor':'advisor','radar':'radar','eval':'eval','market':'market'\n  };\n  function resolveReportKey(){\n    try{\n      var params=new URLSearchParams(window.location.search);\n      var q=(params.get('report')||params.get('product')||'').trim().toLowerCase();\n      if(q&&PRODUCT_TO_KEY[q])return PRODUCT_TO_KEY[q];\n    }catch(e){}\n    try{\n      var saved=(localStorage.getItem('ge_product')||'').trim().toLowerCase();\n      if(saved&&PRODUCT_TO_KEY[saved])return PRODUCT_TO_KEY[saved];\n    }catch(e){}\n    return 'advisor';\n  }\n\n  var LOGO_DESKTOP='http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-laptop.png';\n  var LOGO_MOBILE='http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-mobile.png';\n  var LOGO_PDF='http:\/\/geoestate.net\/wp-content\/uploads\/2026\/07\/geoestate-pdf.png';\n  function preloadImage(url){\n    return new Promise(function(resolve){\n      var img=new Image();\n      img.onload=function(){resolve(true);};\n      img.onerror=function(){resolve(false);};\n      img.src=url;\n      if(img.complete) resolve(true);\n    });\n  }\n  \/\/ Ensure every logo currently on screen (desktop\/mobile picture + the dedicated\n  \/\/ PDF-export mark) is fully loaded before we hand off to the print engine \u2014\n  \/\/ remote images still in flight can otherwise print blank.\n  function printWithLogoReady(){\n    var onScreen=[].filter.call(document.querySelectorAll('picture.geo-logo img, .rp-cover-logo, .ge-print-header img'), function(im){return !im.complete;});\n    var waits=onScreen.map(function(im){return new Promise(function(res){im.addEventListener('load',res,{once:true});im.addEventListener('error',res,{once:true});});});\n    Promise.all([preloadImage(LOGO_PDF)].concat(waits)).then(function(){\n      setTimeout(function(){window.print();},50);\n    });\n  }\n\n  function renderReport(key){\n    mount.innerHTML=REPORTS[key]();\n    mount.style.animation='none';void mount.offsetWidth;mount.style.animation='';\n    window.scrollTo({top:0,behavior:'auto'});\n    var coverTitle=mount.querySelector('.rp-cover-title');\n    var hMeta=document.getElementById('ge-print-header-meta');\n    if(hMeta) hMeta.innerHTML='<b>'+(coverTitle?coverTitle.textContent:'Investment Report')+'<\/b><br>Confidential Investment Memorandum';\n    var fName=document.getElementById('ge-print-footer-name');\n    if(fName) fName.textContent=displayName;\n    wireActions();\n  }\n  function wireActions(){\n    mount.querySelectorAll('[data-act]').forEach(function(b){\n      b.addEventListener('click',function(){\n        var a=b.getAttribute('data-act');\n        if(a==='pdf'){printWithLogoReady();}\n        else if(a==='new'){\n          \/\/ Returning user \u2192 straight to Product Selection (name & phone already saved).\n          \/\/ Clear the just-completed analysis session so the same\/next product always\n          \/\/ restarts fresh \u2014 never reopens this report.\n          try{\n            localStorage.setItem('ge_returning','1');\n            localStorage.removeItem('ge_answers');\n            localStorage.removeItem('ge_product');\n          }catch(e){}\n          window.GEO.go('a');\n          try{\n            var startBtn=document.querySelector('#scr-a #ge-start');\n            if(startBtn) startBtn.click();\n          }catch(e){}\n        }\n        else if(a==='advisor'){\n          var msg=encodeURIComponent('Hello GeoEstate, I would like to discuss my '+\n            (root.querySelector('.rp-cover-title')?root.querySelector('.rp-cover-title').textContent:'investment')+'.');\n          window.open('https:\/\/wa.me\/9715XXXXXXXX?text='+msg,'_blank');\n        }\n      });\n    });\n  }\n\n  window.GEO.onEnter('d', function(){ renderReport(resolveReportKey()); });\n\n})();<\/script>\n\n<script>\n\/\/ boot \u2014 start at Landing\nwindow.GEO.go('a');\n<\/script>\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>GeoEstate \u2014 Investment Intelligence G Dubai \u00b7 Private Intelligence Investment Intelligence Where capitalmeets certainty. A private, guided analysis of Dubai&#8217;s real estate market \u2014 engineered for those who measure opportunity in decades, not listings. Start Analysis Confidential \u00b7 3 minutes Prepared for institutional investors, private wealth and luxury developers. Est. MMXXV \u00b7 By invitation Let&#8217;s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","footnotes":""},"class_list":["post-14","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/geoestate.net\/index.php?rest_route=\/wp\/v2\/pages\/14","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/geoestate.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/geoestate.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/geoestate.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/geoestate.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=14"}],"version-history":[{"count":33,"href":"https:\/\/geoestate.net\/index.php?rest_route=\/wp\/v2\/pages\/14\/revisions"}],"predecessor-version":[{"id":126,"href":"https:\/\/geoestate.net\/index.php?rest_route=\/wp\/v2\/pages\/14\/revisions\/126"}],"wp:attachment":[{"href":"https:\/\/geoestate.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}