@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,500;0,600;0,700;1,500&family=Inter:wght@300;400;500;600;700&display=swap'); #jfi-lp{ --bg:#08150F; --bg2:#0C1D15; --panel:#12291E; --panel2:#1B3B2F; --gold:#C6A664; --gold-dim:#8C7644; --bronze:#A87F4C; --ivory:#F2EEE4; --body:#9DB0A3; --line:rgba(198,166,100,.16); --wa:#25D366; --maxw:1200px; } #jfi-lp *{box-sizing:border-box;margin:0;padding:0} html{scroll-behavior:smooth} #jfi-lp{ background:var(--bg); color:var(--body); font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; font-size:16.5px; line-height:1.65; -webkit-font-smoothing:antialiased; overflow-x:hidden; } #jfi-lp h1,#jfi-lp h2,#jfi-lp h3,#jfi-lp .serif{font-family:'Playfair Display',Georgia,serif;color:var(--ivory);font-weight:600;line-height:1.14} #jfi-lp h1{font-size:clamp(2.5rem,6vw,4.6rem);letter-spacing:-.02em} #jfi-lp h2{font-size:clamp(1.9rem,3.7vw,3rem);letter-spacing:-.015em} #jfi-lp h3{font-size:1.2rem;line-height:1.3} #jfi-lp a{color:inherit;text-decoration:none} #jfi-lp img{display:block;max-width:100%} #jfi-lp .wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px} #jfi-lp section{padding:clamp(72px,9vw,132px) 0;position:relative} #jfi-lp .eyebrow{ font-size:.68rem;letter-spacing:.22em;text-transform:uppercase; color:var(--gold);font-weight:600;margin-bottom:20px;display:block } #jfi-lp .lede{font-size:1.06rem;max-width:60ch} #jfi-lp .rule{height:1px;background:var(--line);border:0} #jfi-lp .gold-line{width:56px;height:2px;background:var(--gold);margin:22px 0} #jfi-lp /* ---------- buttons ---------- */ .btn{ display:inline-flex;align-items:center;gap:10px; padding:15px 26px;border-radius:999px;font-size:.9rem;font-weight:600; letter-spacing:.01em;cursor:pointer;border:1px solid transparent; transition:all .3s ease-in-out;white-space:nowrap } #jfi-lp .btn svg{width:17px;height:17px;flex:none} #jfi-lp .btn-wa{background:var(--wa);color:#04160C} #jfi-lp .btn-wa:hover{background:#1fbb59;transform:translateY(-2px);box-shadow:0 12px 30px -12px rgba(37,211,102,.6)} #jfi-lp .btn-gold{background:var(--gold);color:#14100A} #jfi-lp .btn-gold:hover{background:#d8bc80;transform:translateY(-2px);box-shadow:0 12px 30px -12px rgba(198,166,100,.55)} #jfi-lp .btn-ghost{border-color:rgba(242,238,228,.28);color:var(--ivory);background:transparent} #jfi-lp .btn-ghost:hover{border-color:var(--gold);color:var(--gold);transform:translateY(-2px)} #jfi-lp .btn-sm{padding:11px 20px;font-size:.82rem} #jfi-lp .link-gold{ color:var(--gold);font-weight:600;font-size:.88rem;display:inline-flex; align-items:center;gap:8px;border-bottom:1px solid transparent;transition:all .3s ease-in-out } #jfi-lp .link-gold:hover{border-bottom-color:var(--gold);gap:12px} #jfi-lp .link-gold svg{width:14px;height:14px;flex:none} #jfi-lp /* ---------- nav ---------- */ nav{ position:fixed;top:0;left:0;right:0;z-index:90; transition:all .3s ease-in-out;padding:16px 0; border-bottom:1px solid transparent } #jfi-lp nav.stuck{ background:rgba(8,21,15,.82);backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);border-bottom-color:var(--line);padding:11px 0 } #jfi-lp .nav-in{display:flex;align-items:center;justify-content:space-between;gap:20px} #jfi-lp .brand{display:flex;align-items:center;gap:13px} #jfi-lp .brand img{width:44px;height:44px;border-radius:50%} #jfi-lp .brand b{ font-family:'Playfair Display',serif;color:var(--ivory);font-size:1.02rem; font-weight:600;letter-spacing:.03em;line-height:1.15;display:block } #jfi-lp .brand span{font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold)} #jfi-lp .nav-links{display:flex;gap:32px;align-items:center} #jfi-lp .nav-links a{ font-size:.83rem;font-weight:500;letter-spacing:.04em;color:var(--body); position:relative;padding:4px 0;transition:color .3s ease-in-out } #jfi-lp .nav-links a::after{ content:'';position:absolute;left:0;bottom:0;width:0;height:1px; background:var(--gold);transition:width .3s ease-in-out } #jfi-lp .nav-links a:hover{color:var(--ivory)} #jfi-lp .nav-links a:hover::after{width:100%} @media(max-width:900px){#jfi-lp .nav-links{display:none}} @media(max-width:560px){#jfi-lp .brand b{font-size:.92rem;white-space:nowrap} #jfi-lp .brand span span{display:none} #jfi-lp .brand img{width:38px;height:38px} } #jfi-lp /* ---------- hero ---------- */ .hero{ min-height:100svh;display:flex;align-items:center; padding:150px 0 80px;overflow:hidden } #jfi-lp .hero-bg{position:absolute;inset:0;z-index:-2} #jfi-lp .hero-bg img{width:100%;height:100%;object-fit:cover;object-position:center 42%} #jfi-lp .hero-bg::after{ content:'';position:absolute;inset:0; background:linear-gradient(180deg,rgba(8,21,15,.90) 0%,rgba(8,21,15,.72) 42%,rgba(8,21,15,.97) 100%) } #jfi-lp .hero h1{max-width:15ch;margin-bottom:26px} #jfi-lp .hero .lede{color:#C4D2C8;max-width:56ch;font-size:1.1rem} #jfi-lp .hero-cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:38px} #jfi-lp .trustbar{ display:grid;grid-template-columns:repeat(4,1fr);gap:1px; background:var(--line);border:1px solid var(--line);border-radius:14px; overflow:hidden;margin-top:62px } #jfi-lp .trustbar div{background:rgba(12,29,21,.72);padding:22px 20px;backdrop-filter:blur(6px)} #jfi-lp .trustbar b{ display:block;font-family:'Playfair Display',serif;color:var(--gold); font-size:1.32rem;margin-bottom:5px;font-weight:600 } #jfi-lp .trustbar p{font-size:.78rem;line-height:1.45;color:#8FA396} @media(max-width:760px){#jfi-lp .trustbar{grid-template-columns:1fr 1fr}} #jfi-lp /* ---------- generic ---------- */ .dark{background:var(--bg2)} #jfi-lp .center{text-align:center} #jfi-lp .center .gold-line{margin:22px auto} #jfi-lp .center .lede{margin-left:auto;margin-right:auto} #jfi-lp .head{margin-bottom:56px} #jfi-lp /* ---------- stats ---------- */ .stats{display:grid;grid-template-columns:repeat(4,1fr);gap:20px} #jfi-lp .stat{ background:var(--panel);border:1px solid var(--line);border-radius:16px; padding:32px 26px;transition:all .3s ease-in-out } #jfi-lp .stat:hover{transform:translateY(-4px);border-color:rgba(198,166,100,.4)} #jfi-lp .stat svg{width:24px;height:24px;color:var(--gold);margin-bottom:18px} #jfi-lp .stat b{display:block;color:var(--ivory);font-size:.96rem;margin-bottom:7px;font-weight:600} #jfi-lp .stat p{font-size:.84rem;line-height:1.5} @media(max-width:860px){#jfi-lp .stats{grid-template-columns:1fr 1fr}} @media(max-width:520px){#jfi-lp .stats{grid-template-columns:1fr}} #jfi-lp /* ---------- logos ---------- */ .logos{ display:grid;grid-template-columns:repeat(5,1fr); gap:1px;background:var(--line);border:1px solid var(--line);border-radius:16px;overflow:hidden } #jfi-lp .logos div{ background:var(--bg2);display:flex;align-items:center;justify-content:center; padding:16px;min-height:118px;transition:background .3s ease-in-out } #jfi-lp .logos div:hover{background:var(--panel)} #jfi-lp .logos .plate{ width:100%;height:86px;border-radius:10px;background:#0B1A13; border:1px solid rgba(255,255,255,.05); display:flex;align-items:center;justify-content:center;padding:14px 18px; transition:all .3s ease-in-out } #jfi-lp .logos div:hover .plate{transform:translateY(-3px);box-shadow:0 14px 30px -16px #000} #jfi-lp .logos img{max-height:100%;max-width:100%;width:auto;object-fit:contain;opacity:.85;transition:opacity .3s ease-in-out} #jfi-lp .logos div:hover img{opacity:1} @media(max-width:900px){#jfi-lp .logos{grid-template-columns:repeat(3,1fr)}} @media(max-width:520px){#jfi-lp .logos{grid-template-columns:repeat(2,1fr)} #jfi-lp .logos div{padding:22px 14px;min-height:88px}} #jfi-lp /* ---------- services ---------- */ .grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px} @media(max-width:900px){#jfi-lp .grid3{grid-template-columns:1fr 1fr}} @media(max-width:600px){#jfi-lp .grid3{grid-template-columns:1fr}} #jfi-lp .svc{ background:var(--panel);border:1px solid var(--line);border-radius:16px; padding:34px 30px 28px;display:flex;flex-direction:column; transition:all .3s ease-in-out } #jfi-lp .svc:hover{transform:translateY(-5px);border-color:rgba(198,166,100,.42);box-shadow:0 22px 50px -30px #000} #jfi-lp .svc-ic{ width:44px;height:44px;border-radius:11px;background:rgba(198,166,100,.1); border:1px solid var(--line);display:grid;place-items:center;margin-bottom:22px } #jfi-lp .svc-ic svg{width:20px;height:20px;color:var(--gold)} #jfi-lp .svc h3{margin-bottom:9px} #jfi-lp .svc p{font-size:.87rem;flex:1;margin-bottom:20px} #jfi-lp /* ---------- audit funnel ---------- */ .audit{ max-width:760px;margin:0 auto;background:var(--panel); border:1px solid var(--line);border-radius:22px;overflow:hidden; box-shadow:0 40px 90px -50px #000 } #jfi-lp .audit-top{padding:26px 34px 0} #jfi-lp .prog-rail{height:3px;background:rgba(255,255,255,.07);border-radius:99px;overflow:hidden} #jfi-lp .prog-fill{ height:100%;width:20%;border-radius:99px; background:linear-gradient(90deg,#8C7644,var(--gold) 55%,#E4CE97); transition:width .45s cubic-bezier(.4,0,.2,1) } #jfi-lp .prog-meta{ display:flex;justify-content:space-between;font-size:.68rem; letter-spacing:.16em;text-transform:uppercase;color:var(--gold); margin-top:14px;font-weight:600 } #jfi-lp .audit-body{padding:34px;position:relative;min-height:400px} #jfi-lp .step{ position:absolute;inset:34px;opacity:0;transform:translateX(34px); pointer-events:none;transition:opacity .38s ease,transform .38s ease } #jfi-lp .step.on{opacity:1;transform:none;pointer-events:auto;position:relative;inset:auto} #jfi-lp .step h3{font-size:1.5rem;margin-bottom:8px} #jfi-lp .step .hint{font-size:.86rem;margin-bottom:26px} #jfi-lp .opts{display:grid;gap:11px} @media(min-width:640px){#jfi-lp .opts.two{grid-template-columns:1fr 1fr}} #jfi-lp .opt{ text-align:left;padding:17px 21px;border-radius:12px; background:var(--bg2);border:1px solid rgba(255,255,255,.07); color:var(--ivory);font-size:.92rem;font-family:inherit;font-weight:500; cursor:pointer;transition:all .3s ease-in-out;display:flex; align-items:center;justify-content:space-between;gap:12px } #jfi-lp .opt:hover{border-color:var(--gold);background:rgba(198,166,100,.09);transform:translateX(4px)} #jfi-lp .opt svg{width:16px;height:16px;color:var(--gold);opacity:0;transition:opacity .3s} #jfi-lp .opt:hover svg{opacity:1} #jfi-lp .back{ background:none;border:0;color:var(--body);font-size:.8rem;font-family:inherit; cursor:pointer;margin-top:24px;display:inline-flex;align-items:center;gap:7px; transition:color .3s ease-in-out } #jfi-lp .back:hover{color:var(--gold)} #jfi-lp .fields{display:grid;gap:13px} @media(min-width:640px){#jfi-lp .fields{grid-template-columns:1fr 1fr}} #jfi-lp .field label{ display:block;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase; color:var(--gold);margin-bottom:7px;font-weight:600 } #jfi-lp .field input{ width:100%;padding:14px 16px;border-radius:10px;background:var(--bg2); border:1px solid rgba(255,255,255,.09);color:var(--ivory); font-family:inherit;font-size:.92rem;transition:border-color .3s ease-in-out } #jfi-lp .field input:focus{outline:none;border-color:var(--gold)} #jfi-lp .field input::placeholder{color:#5C6E62} #jfi-lp .recap{ background:var(--bg2);border:1px solid var(--line);border-radius:12px; padding:16px 18px;margin-bottom:22px;font-size:.82rem } #jfi-lp .recap b{color:var(--gold);font-weight:600} #jfi-lp .done{text-align:center;padding:26px 0} #jfi-lp .done-ic{ width:66px;height:66px;border-radius:50%;background:rgba(37,211,102,.12); border:1px solid rgba(37,211,102,.4);display:grid;place-items:center;margin:0 auto 22px } #jfi-lp .done-ic svg{width:30px;height:30px;color:var(--wa)} #jfi-lp /* ---------- split ---------- */ .split{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center} @media(max-width:900px){#jfi-lp .split{grid-template-columns:1fr;gap:40px}} #jfi-lp .split img{border-radius:18px;border:1px solid var(--line)} #jfi-lp .checks{list-style:none;margin:32px 0 0;display:grid;gap:15px} #jfi-lp .checks li{display:flex;gap:13px;align-items:flex-start;font-size:.94rem} #jfi-lp .checks svg{width:19px;height:19px;color:var(--gold);flex:none;margin-top:2px} #jfi-lp .checks b{color:var(--ivory);font-weight:600} #jfi-lp /* ---------- insight cards ---------- */ .ins{ background:var(--panel);border:1px solid var(--line);border-radius:16px; overflow:hidden;transition:all .3s ease-in-out;display:flex;flex-direction:column } #jfi-lp .ins-img{aspect-ratio:16/10;overflow:hidden;border-bottom:1px solid var(--line)} #jfi-lp .ins-img img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease} #jfi-lp .ins:hover .ins-img img{transform:scale(1.06)} #jfi-lp .ins-body{padding:28px 28px 30px} #jfi-lp .ins:hover{transform:translateY(-5px);border-color:rgba(198,166,100,.42)} #jfi-lp .ins .num{ font-family:'Playfair Display',serif;font-size:.9rem;color:var(--gold); letter-spacing:.1em;margin-bottom:16px;display:block } #jfi-lp .ins h3{margin-bottom:12px} #jfi-lp .ins p{font-size:.89rem} #jfi-lp /* ---------- proof ---------- */ .quote{ background:var(--panel2);border:1px solid var(--line);border-radius:18px; padding:44px 42px;display:flex;flex-direction:column;justify-content:space-between } #jfi-lp .quote .mark{font-family:'Playfair Display',serif;font-size:3.4rem;color:var(--gold);line-height:.6;margin-bottom:22px;display:block} #jfi-lp .quote p{ font-family:'Playfair Display',serif;font-size:1.32rem;line-height:1.5; color:var(--ivory);font-style:italic;margin-bottom:30px } #jfi-lp .attrib{display:flex;align-items:center;gap:16px;padding-top:24px;border-top:1px solid var(--line)} #jfi-lp .attrib b{display:block;color:var(--ivory);font-size:.94rem;font-weight:600} #jfi-lp .attrib span{font-size:.8rem} #jfi-lp /* ---------- gallery ---------- */ .tabs{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:42px} #jfi-lp .tab{ padding:10px 20px;border-radius:999px;font-size:.82rem;font-weight:500; background:transparent;border:1px solid rgba(255,255,255,.11);color:var(--body); cursor:pointer;font-family:inherit;transition:all .3s ease-in-out } #jfi-lp .tab:hover{border-color:var(--gold);color:var(--ivory)} #jfi-lp .tab.on{background:var(--gold);border-color:var(--gold);color:#14100A;font-weight:600} #jfi-lp .gal{display:grid;grid-template-columns:repeat(3,1fr);gap:18px} @media(max-width:900px){#jfi-lp .gal{grid-template-columns:1fr 1fr}} @media(max-width:600px){#jfi-lp .gal{grid-template-columns:1fr}} #jfi-lp .shot{ position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--line); aspect-ratio:4/3;transition:opacity .35s ease,transform .35s ease } #jfi-lp .shot.hide{display:none} #jfi-lp .shot img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease} #jfi-lp .shot:hover img{transform:scale(1.06)} #jfi-lp .shot figcaption{ position:absolute;left:0;right:0;bottom:0;padding:44px 22px 20px; background:linear-gradient(180deg,transparent,rgba(6,16,11,.55) 42%,rgba(6,16,11,.97)) } #jfi-lp .shot em{ font-style:normal;font-size:.63rem;letter-spacing:.18em;text-transform:uppercase; color:var(--gold);display:block;margin-bottom:6px;font-weight:600 } #jfi-lp .shot b{font-family:'Playfair Display',serif;color:var(--ivory);font-size:1.02rem;font-weight:600} #jfi-lp /* ---------- process ---------- */ .steps{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;position:relative} @media(max-width:900px){#jfi-lp .steps{grid-template-columns:1fr 1fr}} @media(max-width:560px){#jfi-lp .steps{grid-template-columns:1fr}} #jfi-lp .pstep{position:relative;padding-top:30px} #jfi-lp .pstep::before{ content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--line) } #jfi-lp .pstep .n{ font-family:'Playfair Display',serif;color:var(--gold);font-size:.86rem; letter-spacing:.1em;display:block;margin-bottom:14px } #jfi-lp .pstep h3{font-size:1.06rem;margin-bottom:9px} #jfi-lp .pstep p{font-size:.85rem} #jfi-lp /* ---------- faq ---------- */ .faq{max-width:840px;margin:0 auto;border-top:1px solid var(--line)} #jfi-lp .qa{border-bottom:1px solid var(--line)} #jfi-lp .q{ width:100%;text-align:left;background:none;border:0;color:var(--ivory); font-family:'Playfair Display',serif;font-size:1.08rem;font-weight:600; padding:26px 44px 26px 0;cursor:pointer;position:relative; transition:color .3s ease-in-out } #jfi-lp .q:hover{color:var(--gold)} #jfi-lp .q::after{ content:'';position:absolute;right:6px;top:50%;width:11px;height:11px; border-right:1.5px solid var(--gold);border-bottom:1.5px solid var(--gold); transform:translateY(-70%) rotate(45deg);transition:transform .3s ease-in-out } #jfi-lp .qa.open .q::after{transform:translateY(-30%) rotate(-135deg)} #jfi-lp .a{max-height:0;overflow:hidden;transition:max-height .4s cubic-bezier(.4,0,.2,1)} #jfi-lp .a p{padding:0 0 26px;font-size:.93rem;max-width:70ch} #jfi-lp /* ---------- final ---------- */ .final{text-align:center;background:var(--bg2)} #jfi-lp .final h2{max-width:19ch;margin:0 auto 22px} #jfi-lp .final .hero-cta{justify-content:center;margin-top:34px} #jfi-lp /* ---------- footer ---------- */ body>footer{background:var(--bg);border-top:1px solid var(--line);padding:70px 0 30px} #jfi-lp .fgrid{display:grid;grid-template-columns:1.5fr 1fr 1.4fr;gap:52px;margin-bottom:48px} @media(max-width:820px){#jfi-lp .fgrid{grid-template-columns:1fr;gap:38px}} #jfi-lp .fgrid h4{ font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold); margin-bottom:20px;font-weight:600 } #jfi-lp .fgrid p,#jfi-lp .fgrid a:not(.btn){font-size:.87rem;color:var(--body)} #jfi-lp .flinks{display:grid;gap:11px} #jfi-lp .flinks a{transition:color .3s ease-in-out} #jfi-lp .flinks a:hover{color:var(--gold)} #jfi-lp .fcap{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap} #jfi-lp .fcap input{ flex:1;min-width:150px;padding:13px 15px;border-radius:9px;background:var(--panel); border:1px solid rgba(255,255,255,.09);color:var(--ivory);font-family:inherit;font-size:.86rem } #jfi-lp .fcap input:focus{outline:none;border-color:var(--gold)} #jfi-lp .fbot{ border-top:1px solid var(--line);padding-top:26px;display:flex; justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:.78rem } #jfi-lp /* ---------- float ---------- */ .float{ position:fixed;right:22px;bottom:22px;z-index:80;width:58px;height:58px; border-radius:50%;background:var(--wa);display:grid;place-items:center; box-shadow:0 14px 34px -10px rgba(37,211,102,.65);transition:transform .3s ease-in-out } #jfi-lp .float:hover{transform:scale(1.09)} #jfi-lp .float svg{width:29px;height:29px;color:#04160C} #jfi-lp :focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:4px} @media(prefers-reduced-motion:reduce){#jfi-lp *{animation:none!important;transition-duration:.01ms!important} html{scroll-behavior:auto} } #jfi-lp /* button text colour,#jfi-lp locked so no ancestor link rule can override it */ a.btn-gold,#jfi-lp a.btn-gold:link,#jfi-lp a.btn-gold:visited,#jfi-lp a.btn-gold:hover,#jfi-lp a.btn-gold:focus{color:#14100A} #jfi-lp a.btn-wa,#jfi-lp a.btn-wa:link,#jfi-lp a.btn-wa:visited,#jfi-lp a.btn-wa:hover,#jfi-lp a.btn-wa:focus{color:#04160C} #jfi-lp a.btn-ghost,#jfi-lp a.btn-ghost:link,#jfi-lp a.btn-ghost:visited{color:var(--ivory)} #jfi-lp a.btn-ghost:hover,#jfi-lp a.btn-ghost:focus{color:var(--gold)} #jfi-lp a.link-gold,#jfi-lp a.link-gold:link,#jfi-lp a.link-gold:visited,#jfi-lp a.link-gold:hover{color:var(--gold)} #jfi-lp .reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease} #jfi-lp .reveal.in{opacity:1;transform:none} /* break out of the theme's content container so sections go edge to edge */ #jfi-lp{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);padding:0;text-align:left;overflow-x:hidden} #jfi-lp{background:#08150F} /* negative z-index backgrounds get lost under a theme's body background, so layer explicitly */ #jfi-lp .hero{position:relative;isolation:isolate} #jfi-lp .hero-bg{z-index:0} #jfi-lp .hero>.wrap{position:relative;z-index:1} #jfi-lp *,#jfi-lp *::before,#jfi-lp *::after{box-sizing:border-box} #jfi-lp img{max-width:100%;height:auto;border-radius:0;box-shadow:none} #jfi-lp button{font-family:inherit;line-height:inherit;text-transform:none} #jfi-lp a{text-decoration:none;box-shadow:none} #jfi-lp ul{list-style:none;margin:0;padding:0} #jfi-lp p{margin:0} #jfi-lp h1,#jfi-lp h2,#jfi-lp h3,#jfi-lp h4{margin:0;text-transform:none}
JFI maintained residential community, Dubai
Commercial landscaping maintenance & landscaping AMC · Dubai & the UAE

One landscaping contractor. Zero excuses.

Since 1988, JFI has provided commercial landscaping maintenance across Dubai and the UAE under a single landscaping AMC, one team, and one point of contact. No subcontractors to chase when something goes wrong.

20

Leading UAE brands under contract

1988

Operating in the UAE since

All 7

Emirates covered

In house

Own crews, zero subcontractors

The setup most facilities managers inherit

Three vendors. One dead lawn.
Zero accountability.

Turf, irrigation, and pest control split across different contractors means three invoices and nobody owns the outcome when something fails. It is rarely the setup anyone would choose. It is just the one nobody has had time to fix.

Tell us what is not working

Already under contract elsewhere

How to switch landscaping contractors in Dubai without a gap

Most facilities managers who talk to us are not starting from zero. They are mid contract with someone else, tired of chasing them, and looking to change landscaping contractor in Dubai without leaving the site uncovered. Switching is a handover, not a restart, and we run it that way.

Step 01

Tell us your contract end date

We plan the handover around your existing notice period, not against it.

Step 02

We handle the handover conversation

Site condition, equipment, access and any outstanding issues, documented before day one.

Step 03

Zero gap in maintenance

Our crew is scheduled to start the week your current contractor stops, not after.

Talk to us about switching

Due diligence

The proof procurement actually checks

20 named accounts

Across banking, hospitality, education and industry.

Full in house team

Own crews and supervisors. No subcontractor chain to blame.

All seven emirates

Live on corporate, institutional and residential sites today.

Established 1988

Almost four decades maintaining UAE landscapes.

Trusted by

The names on our contracts

HSBC, JFI landscaping maintenance client
Marriott Executive Apartments, JFI landscaping maintenance client
GEMS Education, JFI landscaping maintenance client
Emirates NBD, JFI landscaping maintenance client
Dubai Duty Free, JFI landscaping maintenance client
Sheraton Grand Hotel Dubai, JFI landscaping maintenance client
RAKBANK, JFI landscaping maintenance client
Taj Jumeirah Lakes Towers, JFI landscaping maintenance client
Address Hotels + Resorts, JFI landscaping maintenance client
Manipal University Dubai, JFI landscaping maintenance client
FIVE Palm Jumeirah, JFI landscaping maintenance client
Habib Bank, JFI landscaping maintenance client
Middlesex University Dubai, JFI landscaping maintenance client
Joyalukkas, JFI landscaping maintenance client
Malabar Gold & Diamonds, JFI landscaping maintenance client
Ramada by Wyndham, JFI landscaping maintenance client
IFFCO, JFI landscaping maintenance client
Ducab, JFI landscaping maintenance client
Emerson, JFI landscaping maintenance client
IMT Dubai, JFI landscaping maintenance client
Who we serve

Landscaping maintenance, handled end to end

Every service below is delivered by our own in house team, the landscaping maintenance and AMC support facilities managers and office landlords across Dubai rely on. No subcontractors, no handoffs, one account manager for the life of your contract.

Softscape and planting

Seasonal planting, groundcover, shrub care and replacement across the site.

WhatsApp about this

Hardscape and walkways

Paving, edging and walkway upkeep so the built elements age as well as the planting.

WhatsApp about this

Irrigation systems

Irrigation system maintenance engineered for UAE heat: scheduling, filtration, pressure systems and fault response.

WhatsApp about this

Palm and tree care

Pruning, trimming, feeding and health checks for palms and mature trees.

WhatsApp about this

Turf, natural and artificial

Mowing, feeding, levelling and replacement across natural and artificial surfaces.

WhatsApp about this

Seasonal AMC contracts

One annual contract covering the full scope, with scheduled visits and reporting.

WhatsApp about this
60 second site audit

Get a quote built around your property

Four questions. Your answers go straight to the account manager who will handle your site, so the first conversation starts with context instead of a questionnaire.

Property typeStep 1 of 5

What type of property are you maintaining?

This sets the scope, the crew size and the visit schedule.

Do you currently have a landscaping AMC?

Switching mid contract is routine. We handle the overlap.

What is your biggest current struggle?

This tells us what to fix first, before the contract even starts.

How large is the site?

A rough figure is fine. We confirm on the site visit.

Where should we send the quote?

Or skip the form and send the same details straight to WhatsApp.

Details received

Your account manager has everything needed to prepare a scoped quote. If it is urgent, WhatsApp is the fastest route.

Rather not answer questions? Message us directly

Accountability

One contractor.
One point of contact.
No finger pointing.

  • In house team, never subcontracted. The crew on your site is on our payroll.
  • One account manager for the life of your contract, not a rotating call centre.
  • Terms agreed upfront. Scope, price, variations and payment settled before work begins.
  • Fully insured, working across all seven emirates since 1988.

Ask how account management works

JFI maintained campus grounds
Field notes

What actually keeps a site green in Dubai

JFI crew installing irrigation line on site
Irrigation

Scheduling beats volume

In this climate, consistent and well scheduled irrigation matters more than how much water goes down. Poor scheduling wastes water and stresses plants at the same time, which is why our crews set and adjust schedules seasonally rather than leaving a controller on a fixed cycle all year.

JFI crew handling a mature palm on site
Palm & tree care

Seasonal, not reactive

Palms and mature trees need care timed to the UAE seasons rather than attention only when something visibly goes wrong. Pruning, feeding and health checks run on a planned calendar, so a tree is inspected before it declines instead of after.

JFI supervisors inspecting plant stock
Preventative work

Cheaper than the callout

Catching a problem during a routine maintenance visit is faster and cheaper than an emergency callout after it has spread across the site. Every scheduled visit doubles as an inspection, and anything flagged goes into your report rather than turning into next month's surprise.

Proof, not promises

What clients say after the work is done

Thank you for your support and we are really very happy with the executed works on our main entrance. Appreciate your support on such short notice.

Sabiha Khan Finance and Office Manager, SEW Eurodrive
Our work

Real sites, not renders

SEW Eurodrive, main entrance, commercial landscaping maintenance by JFI
Corporate & industrialSEW Eurodrive, main entrance
Manipal Academy of Higher Education, commercial landscaping maintenance by JFI
Educational campusManipal Academy of Higher Education
GEMS Wellington Academy Al Khail, commercial landscaping maintenance by JFI
Educational campusGEMS Wellington Academy Al Khail
55 villa community, landscape and irrigation, commercial landscaping maintenance by JFI
Residential community55 villa community, landscape & irrigation
City Walk, landscaping and irrigation, commercial landscaping maintenance by JFI
Mixed useCity Walk, landscaping & irrigation
City Walk, terraced courtyards, commercial landscaping maintenance by JFI
Mixed useCity Walk, terraced courtyards
Irrigation plant room, pressure and filtration, commercial landscaping maintenance by JFI
EngineeringIrrigation plant room, pressure & filtration
GEMS School Dubai Sports City, commercial landscaping maintenance by JFI
Educational campusGEMS School Dubai Sports City
GEMS School Dubai Sports City, campus entrance, commercial landscaping maintenance by JFI
Educational campusGEMS School Dubai Sports City, campus entrance
GEMS School Dubai Sports City, central courtyard, commercial landscaping maintenance by JFI
Educational campusGEMS School Dubai Sports City, central courtyard
GEMS School Dubai Sports City, perimeter planting, commercial landscaping maintenance by JFI
Educational campusGEMS School Dubai Sports City, perimeter planting

See a site like yours

How it works

From first contact to first cut

Step 01

Site visit

We walk the site and assess condition, scope and access. Free, no commitment.

Step 02

Proposal and contract

Scope, price, variation terms and payment terms documented before anything starts.

Step 03

Onboarding

Your account manager takes over as the single point of contact from day one.

Step 04

Maintenance and reporting

Scheduled visits by our own crews, with reporting you can take to management.

Book a free site visit

Before you sign

Questions procurement asks

JFI does. We accept LPOs from corporate, government and institutional clients across the UAE, which is how most facilities and procurement teams prefer to raise a landscaping AMC.

All seven emirates across the UAE.

Yes. JFI carries full insurance coverage across all contracts.

Every JFI landscaping contract sets out scope of work, price and variation terms, payment terms, performance standards, security, contract duration, termination conditions and dispute resolution. All of it agreed upfront, before work begins.

A one time service is a single visit for a specific job, quoted and invoiced on its own. An AMC, or annual maintenance contract, covers the full scope of your site on a scheduled cycle, softscape, irrigation, palm and tree care, turf and general upkeep, with a named account manager, agreed visit frequency and ongoing reporting. Most commercial sites move to an AMC because it makes the cost predictable and puts one contractor in charge of the whole outcome.

We respond to emergency and reactive maintenance requests within 1 to 2 hours. Message the account manager handling your site on WhatsApp for the fastest route.

Most commercial sites in the UAE need weekly to fortnightly visits for softscape, turf and irrigation checks, with palm and tree care scheduled seasonally rather than year round. That is the core reason sites move to an AMC instead of booking one time visits, a recurring schedule is what actually keeps a property looking maintained instead of freshly fixed.

Tell us your current contract's end date and we plan the handover around it, so there is no gap in coverage and nothing needs to happen before your notice period is up. See the full switching process above, or message us directly to talk it through.

Still deciding? Message us

Ready when you are

One contractor you do not have to chase

20 leading UAE brands. Established 1988. Own crews across all seven emirates, start to finish.

(function(){ var R=document.getElementById('jfi-lp'); if(!R) return; var WA='https://wa.me/971553346225?text='; /* nav frost */ var nav=document.getElementById('jfi-nav'); function onScroll(){ nav.classList.toggle('stuck', window.scrollY>40); } onScroll(); window.addEventListener('scroll',onScroll,{passive:true}); /* reveal */ var io=new IntersectionObserver(function(es){ es.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target);} }); },{threshold:.12}); R.querySelectorAll('.reveal').forEach(function(el){io.observe(el);}); /* ---- audit funnel ---- */ var LABELS=['Property type','Current contract','Priority','Site size','Your details','Done']; var steps=[].slice.call(R.querySelectorAll('.step')); var fill=document.getElementById('jfi-pfill'), plab=document.getElementById('jfi-plabel'), pcnt=document.getElementById('jfi-pcount'); var answers=[], cur=0; function show(i){ steps.forEach(function(s,n){ s.classList.toggle('on', n===i); }); cur=i; fill.style.width=((i+1)/steps.length*100)+'%'; plab.textContent=LABELS[i]; pcnt.textContent= i===steps.length-1 ? 'Complete' : 'Step '+(i+1)+' of '+(steps.length-1); if(i===4) recap(); } function sentence(){ return 'Hi, I manage '+(answers[0]||'a property')+', '+(answers[1]||'')+ '. Main issue is '+(answers[2]||'general maintenance')+ '. Site is '+(answers[3]||'to be confirmed')+'. Please send a quote.'; } function recap(){ document.getElementById('jfi-recap').innerHTML= 'Your answers: '+(answers[0]||'')+' · '+(answers[1]||'')+' · '+(answers[2]||'')+' · '+(answers[3]||''); document.getElementById('jfi-wafinal').href=WA+encodeURIComponent(sentence()); } R.querySelectorAll('.opt').forEach(function(b){ b.addEventListener('click',function(){ answers[cur]=b.dataset.v; show(Math.min(cur+1,steps.length-1)); }); }); R.querySelectorAll('.back').forEach(function(b){ b.addEventListener('click',function(){ show(Math.max(cur-1,0)); }); }); document.getElementById('jfi-send').addEventListener('click',function(){ var n=document.getElementById('jfi-f-name').value.trim(); var m=document.getElementById('jfi-f-mail').value.trim(); if(!n||!m){ (!n?document.getElementById('jfi-f-name'):document.getElementById('jfi-f-mail')).focus(); (!n?document.getElementById('jfi-f-name'):document.getElementById('jfi-f-mail')).style.borderColor='#C6A664'; return; } show(5); }); /* ---- gallery filter ---- */ R.querySelectorAll('.tab').forEach(function(t){ t.addEventListener('click',function(){ R.querySelectorAll('.tab').forEach(function(x){x.classList.remove('on');}); t.classList.add('on'); var f=t.dataset.f; R.querySelectorAll('.shot').forEach(function(s){ s.classList.toggle('hide', f!=='all' && s.dataset.c!==f); }); }); }); /* ---- faq ---- */ R.querySelectorAll('.q').forEach(function(q){ q.addEventListener('click',function(){ var qa=q.parentElement, open=qa.classList.contains('open'); R.querySelectorAll('.qa').forEach(function(x){ x.classList.remove('open'); x.querySelector('.a').style.maxHeight=null; }); if(!open){ qa.classList.add('open'); qa.querySelector('.a').style.maxHeight=qa.querySelector('.a').scrollHeight+'px'; } }); }); var first=R.querySelector('.qa.open .a'); if(first) first.style.maxHeight=first.scrollHeight+'px'; })(); { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ {"@type":"Question","name":"Do landscaping companies in Dubai accept LPOs?","acceptedAnswer":{"@type":"Answer","text":"JFI does. We accept LPOs from corporate, government and institutional clients across the UAE, which is how most facilities and procurement teams prefer to raise a landscaping AMC."}}, {"@type":"Question","name":"Which emirates do you cover?","acceptedAnswer":{"@type":"Answer","text":"All seven emirates across the UAE."}}, {"@type":"Question","name":"Are you insured?","acceptedAnswer":{"@type":"Answer","text":"Yes. JFI carries full insurance coverage across all contracts."}}, {"@type":"Question","name":"What does the contract cover?","acceptedAnswer":{"@type":"Answer","text":"Every JFI landscaping contract sets out scope of work, price and variation terms, payment terms, performance standards, security, contract duration, termination conditions and dispute resolution, all agreed upfront before work begins."}}, {"@type":"Question","name":"What is included in a landscaping AMC versus a one time service?","acceptedAnswer":{"@type":"Answer","text":"A one time service is a single visit for a specific job, quoted and invoiced on its own. A landscaping AMC, or annual maintenance contract, covers the full scope of your site on a scheduled cycle, softscape, irrigation, palm and tree care, turf and general upkeep, with a named account manager, agreed visit frequency and ongoing reporting."}}, {"@type":"Question","name":"What is your response time for emergency or reactive maintenance?","acceptedAnswer":{"@type":"Answer","text":"We respond to emergency and reactive maintenance requests within 1 to 2 hours."}}, {"@type":"Question","name":"How often should commercial landscaping be maintained?","acceptedAnswer":{"@type":"Answer","text":"Most commercial sites in the UAE need weekly to fortnightly visits for softscape, turf and irrigation checks, with palm and tree care scheduled seasonally. This recurring schedule is why sites move to an AMC instead of booking one time visits."}}, {"@type":"Question","name":"How do I switch landscaping contractors mid contract in Dubai?","acceptedAnswer":{"@type":"Answer","text":"Share your current contract's end date and the handover is planned around it, so there is no gap in coverage and nothing needs to happen before your notice period is up."}} ] }