1<!DOCTYPE html> 2<html lang="en"> 3<head> 4<meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1.0"> 6<title>Contact Aalis Studios â Architecture & Design Firm Nairobi, Kenya | Start Your Project</title> 7<meta name="description" content="Contact Aalis Studios, Nairobi's award-winning BORAQS-registered architects. Start your residential, commercial or institutional project in Kenya. WhatsApp, call or fill our form. Diaspora build service available."> 8<meta name="keywords" content="contact architect Nairobi Kenya, hire architect Kenya, BORAQS registered architect Nairobi, start architecture project Kenya, architecture firm contact Kenya, diaspora build Kenya, Aalis Studios contact"> 9<meta name="author" content="Aalis Studios â Nairobi, Kenya"> 10<meta name="robots" content="index, follow"> 11<meta name="geo.region" content="KE-30"> 12<meta name="geo.placename" content="Nairobi, Kenya"> 13<meta name="geo.position" content="-1.2921;36.8219"> 14<meta name="ICBM" content="-1.2921, 36.8219"> 15<link rel="canonical" href="https://aalisstudios.com/contact/"> 16<meta property="og:type" content="website"> 17<meta property="og:title" content="Contact Aalis Studios â Award-Winning Architects in Nairobi, Kenya"> 18<meta property="og:description" content="Start your architecture or design project in Kenya. BORAQS-registered, Lexus Design Award 2020 winners. Residential, commercial, institutional and diaspora builds."> 19<meta property="og:url" content="https://aalisstudios.com/contact/"> 20<meta property="og:site_name" content="Aalis Studios"> 21<meta property="og:image" content="https://aalisstudios.com/wp-content/uploads/aalis-studios-nairobi-architects-contact.jpg"> 22<meta name="twitter:card" content="summary_large_image"> 23<meta name="twitter:title" content="Contact Aalis Studios â Architects Nairobi, Kenya"> 24<meta name="twitter:description" content="BORAQS-registered architects. Lexus Design Award 2020 winners. Start your project today."> 25
26<script type="application/ld+json">{"@context":"https://schema.org","@type":"ContactPage","name":"Contact Aalis Studios","url":"https://aalisstudios.com/contact/","mainEntity":{"@type":"ArchitecturalFirm","name":"Aalis Studios","url":"https://aalisstudios.com","telephone":"+254757743454","email":"[email protected]","address":{"@type":"PostalAddress","streetAddress":"1st Floor, Sun Dial Plaza, Eastern Bypass Off Thika Road","addressLocality":"Nairobi","addressRegion":"Nairobi County","postalCode":"00200","addressCountry":"KE"},"geo":{"@type":"GeoCoordinates","latitude":-1.2921,"longitude":36.8219},"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],"opens":"08:00","closes":"17:00"}],"areaServed":{"@type":"Country","name":"Kenya"},"award":"Lexus Design Award 2020 Grand Prix","hasCredential":["BORAQS-Registered Architects","NCA-Registered Construction Firm"]}}</script>
vendor: 1 bytes, line 26
26
27<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://aalisstudios.com"},{"@type":"ListItem","position":2,"name":"Contact","item":"https://aalisstudios.com/contact/"}]}</script>
vendor: 1 bytes, line 27
27
28<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"How quickly does Aalis Studios respond to enquiries?","acceptedAnswer":{"@type":"Answer","text":"We respond within 24 hours on business days (Mon-Fri, 08:00-17:00 EAT). For urgent matters WhatsApp us directly on +254 757 743 454."}},{"@type":"Question","name":"Is there a fee for an initial consultation?","acceptedAnswer":{"@type":"Answer","text":"Our initial consultation is completely free with no obligation. We provide transparent written fee proposals before any work begins."}},{"@type":"Question","name":"Can I start a project remotely from outside Kenya?","acceptedAnswer":{"@type":"Answer","text":"Yes. Aalis Studios has a dedicated diaspora build service with weekly video reports, a WhatsApp project channel, and full contractor management for clients in the UK, USA, Canada, Australia and the Middle East."}},{"@type":"Question","name":"What areas of Kenya does Aalis Studios serve?","acceptedAnswer":{"@type":"Answer","text":"We serve clients across all 47 counties in Kenya including Nairobi, Kiambu, Machakos, Kajiado, Nakuru, Kisumu, Mombasa, Kilifi, Nyeri, Laikipia and Kitui."}},{"@type":"Question","name":"How much do architect fees cost in Kenya?","acceptedA
28nswer":{"@type":"Answer","text":"Architect fees typically range from 5% to 10% of total construction cost for residential projects. Aalis Studios provides clear written fee proposals before any commitment."}}]}</script>
28 29 30<link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;1,300;1,400&family=Syne:wght@400;600;700;800&display=swap" rel="stylesheet">
31<script src="https://cdn.jsdelivr.net/npm/@emailjs/browser@4/dist/email.min.js"></script>
vendor: 1 bytes, line 31
31
32<script> 33 (function(){ emailjs.init({ publicKey: "70EW15RxGFXuzogeE" }); })(); 34</script>
34 35<style> 36:root{ 37 --ink:#0f0e0c;--cream:#f6f1e9;--warm:#ede5d4; 38 --gold:#b8973a;--gold-light:#d4b05a;--slate:#141924; 39 --mid:#6b6560;--border:rgba(0,0,0,0.08);--green:#25D366;--red:#c0392b; 40} 41*{margin:0;padding:0;box-sizing:border-box;} 42html{scroll-behavior:smooth;} 43body{font-family:'Cormorant Garamond',serif;background:var(--cream);color:var(--ink);overflow-x:hidden;} 44img{max-width:100%;height:auto;display:block;} 45@keyframes fadeUp{from{opacity:0;transform:translateY(20px);}to{opacity:1;transform:translateY(0);}} 46@keyframes fadeIn{from{opacity:0;}to{opacity:1;}} 47@keyframes pulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.5;transform:scale(.8);}} 48@keyframes spin{to{transform:rotate(360deg);}} 49 50/* NAV */ 51nav.topnav{position:fixed;top:0;left:0;right:0;z-index:200;display:flex;align-items:center;justify-content:space-between;padding:0 52px;height:72px;background:var(--cream);border-bottom:1px solid var(--border);transition:box-shadow .3s;} 52nav.topnav.scrolled{box-shadow:0 2px 20px rgba(0,0,0,.08);} 53.nav-logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);} 54.logo-tri{width:0;height:0;border-left:13px solid transparent;border-right:13px solid transparent;border-bottom:20px solid var(--ink);} 55.logo-name{font-family:'Syne',sans-serif;font-weight:800;font-size:18px;} 56.nav-links{display:flex;gap:28px;list-style:none;} 57.nav-links a{font-family:'Syne',sans-serif;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--mid);text-decoration:none;transition:color .2s;} 58.nav-links a:hover,.nav-links a.active{color:var(--ink);} 59.nav-cta{font-family:'Syne',sans-serif;font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:10px 22px;background:var(--gold);color:var(--slate);text-decoration:none;transition:all .25s;} 60.nav-cta:hover{background:var(--gold-light);}
61.nav-hamburger{display:none;flex-direction:column;justify-content:space-between;width:24px;height:18px;background:none;border:none;cursor:pointer;padding:0;} 62.nav-hamburger span{display:block;height:2px;background:var(--ink);border-radius:2px;transition:all .25s;} 63.nav-hamburger.open span:nth-child(1){transform:translateY(8px) rotate(45deg);} 64.nav-hamburger.open span:nth-child(2){opacity:0;} 65.nav-hamburger.open span:nth-child(3){transform:translateY(-8px) rotate(-45deg);} 66.mobile-nav{display:none;position:fixed;top:72px;left:0;right:0;z-index:199;background:var(--cream);border-bottom:2px solid var(--gold);padding:16px 20px 24px;flex-direction:column;box-shadow:0 8px 32px rgba(0,0,0,.12);} 67.mobile-nav.open{display:flex;} 68.mobile-nav a{font-family:'Syne',sans-serif;font-size:12px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--mid);text-decoration:none;padding:14px 0;border-bottom:1px solid var(--border);} 69.mobile-nav a:last-child{margin-top:16px;background:var(--gold);color:var(--slate)!important;text-align:center;padding:14px!important;border:none!important;font-weight:700!important;} 70 71/* HERO */ 72.page-hero{margin-top:72px;background:var(--slate);padding:72px 80px 60px;position:relative;overflow:hidden;} 73.page-hero::after{content:'';position:absolute;top:0;left:0;width:4px;height:100%;background:var(--gold);} 74.page-hero::before{content:'CONTACT';position:absolute;bottom:-30px;right:30px;font-family:'Syne',sans-serif;font-size:200px;font-weight:800;color:rgba(255,255,255,.02);pointer-events:none;line-height:1;white-space:nowrap;} 75.hero-eyebrow{font-family:'Syne',sans-serif;font-size:10px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--gold);margin-bottom:18px;display:flex;align-items:center;gap:12px;animation:fadeUp .6s ease both;} 76.hero-eyebrow::before{content:'';width:28px;height:1px;background:var(--gold);} 77.page-hero h1{font-family:'Cormorant Garamond',serif;font-size:clamp(32px,5vw,64px);font-weight:300;color:#fff;line-height:1.05;letter-spacing:-1.5px;margin-bottom:20px;animation:fadeUp .6s .1s ease both;} 78.page-hero h1 em{font-style:italic;color:var(--gold-light);} 79.hero-desc{font-size:17px;line-height:1.75;color:rgba(255,255,255,.48);max-width:640px;font-weight:300;animation:fadeUp .6s .2s ease both;margin-bottom:36px;} 80.response-badge{display:inline-flex;align-items:center;gap:9px;background:rgba(184,151,58,.12);border:1px solid rgba(184,151,58,.3);padding:9px 16px;animation:fadeUp .6s .3s ease both;} 81.response-dot{width:7px;height:7px;border-radius:50%;background:#4caf50;animation:pulse 2s infinite;flex-shrink:0;} 82.response-text{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--gold-light);} 83 84/* BREADCRUMB */ 85.breadcrumb{background:var(--warm);padding:13px 80px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;} 86.breadcrumb a,.breadcrumb span{font-family:'Syne',sans-serif;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--mid);text-decoration:none;} 87.breadcrumb a:hover{color:var(--ink);} 88.breadcrumb .sep{color:rgba(0,0,0,.22);} 89 90/* SEO INTRO */ 91.seo-intro{padding:44px 80px 0;} 92.seo-intro p{font-size:16px;line-height:1.85;color:var(--mid);font-weight:300;max-width:860px;} 93 94/* MAIN GRID */ 95.contact-main{display:grid;grid-template-columns:1fr 420px;gap:0;padding:48px 80px 80px;align-items:start;} 96 97/* FORM SIDE */ 98.form-side{padding-right:72px;border-right:1px solid var(--border);} 99.form-section-label{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--gold);margin-bottom:10px;display:flex;align-items:center;gap:10px;} 100.form-section-label::before{content:'';width:18px;height:1px;background:var(--gold);} 101.form-title{font-family:'Cormorant Garamond',serif;font-size:clamp(26px,3vw,40px);font-weight:300;color:var(--ink);line-height:1.12;margin-bottom:8px;} 102.form-title em{font-style:italic;color:var(--gold);} 103.form-subtitle{font-size:15px;line-height:1.75;color:var(--mid);margin-bottom:36px;max-width:480px;} 104.ptype-label{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;
104color:var(--mid);margin-bottom:10px;} 105.project-types{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:6px;} 106.ptype-btn{font-family:'Syne',sans-serif;font-size:9px;font-weight:600;letter-spacing:1px;text-transform:uppercase;padding:11px 8px;border:1px solid rgba(0,0,0,.14);background:transparent;color:var(--mid);cursor:pointer;transition:all .18s;text-align:center;line-height:1.3;} 107.ptype-btn:hover{border-color:var(--gold);color:var(--ink);} 108.ptype-btn.selected{background:var(--gold);color:var(--slate);border-color:var(--gold);font-weight:700;} 109.ptype-btn .ptype-icon{display:block;font-size:18px;margin-bottom:5px;} 110.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;} 111.form-row.full{grid-template-columns:1fr;} 112.field-wrap{display:flex;flex-direction:column;gap:6px;} 113.field-label{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--mid);} 114.field-label .req{color:var(--gold);} 115.field-input,.field-select,.field-textarea{font-family:'Cormorant Garamond',serif;font-size:16px;padding:13px 16px;border:1px solid rgba(0,0,0,.14);background:var(--warm);color:var(--ink);outline:none;transition:border-color .2s,box-shadow .2s;width:100%;} 116.field-input::placeholder,.field-textarea::placeholder{color:rgba(0,0,0,.28);} 117.field-input:focus,.field-select:focus,.field-textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(184,151,58,.08);} 118.field-input.error,.field-select.error,.field-textarea.error{border-color:var(--red);} 119.field-error{font-family:'Syne',sans-serif;font-size:9px;font-weight:600;letter-spacing:.5px;color:var(--red);display:none;} 120.field-error.show{display:block;} 121.field-select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236b6560' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;} 122.field-textarea{resize:vertical;min-height:120px;font-size:15px;line-height:1.6;} 123/* Budget */ 124.budget-display{font-family:'Cormorant Garamond',serif;font-size:20px;font-weight:400;color:var(--gold);margin-bottom:6px;} 125.budget-note{font-family:'Syne',sans-serif;font-size:8px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--mid);margin-bottom:10px;} 126.budget-slider{width:100%;height:3px;-webkit-appearance:none;appearance:none;border:none;outline:none;cursor:pointer;background:rgba(0,0,0,.12);} 127.budget-slider::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--gold);cursor:pointer;border:2px solid var(--cream);box-shadow:0 2px 8px rgba(0,0,0,.2);} 128.budget-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--gold);cursor:pointer;border:2px solid var(--cream);} 129.budget-labels{display:flex;justify-content:space-between;margin-top:6px;} 130.budget-label-text{font-family:'Syne',sans-serif;font-size:8px;font-weight:600;color:rgba(0,0,0,.28);} 131/* Contact pref */ 132.contact-pref{display:flex;gap:8px;flex-wrap:wrap;} 133.cpref-btn{font-family:'Syne',sans-serif;font-size:9px;font-weight:600;letter-spacing:1px;text-transform:uppercase;padding:8px 14px;border:1px solid rgba(0,0,0,.14);background:transparent;color:var(--mid);cursor:pointer;transition:all .18s;display:flex;align-items:center;gap:6px;} 134.cpref-btn:hover{border-color:var(--gold);color:var(--ink);} 135.cpref-btn.selected{background:var(--slate);color:#fff;border-color:var(--slate);} 136/* Diaspora toggle */ 137.diaspora-toggle{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--warm);border:1px solid var(--border);cursor:pointer;margin-bottom:14px;transition:border-color .2s;} 138.diaspora-toggle:hover{border-color:var(--gold);} 139.diaspora-toggle.active{border-color:var(--gold);background:rgba(184,151,58,.06);} 140.toggle-track{width:36px;height:20px;background:rgba(0,0,0,.15);border-radius:10px;position:relative;transition:background .2s;flex-shrink:0;} 141.toggle-track.on{background:var(--gold);} 142.toggle-thumb{position:absolute;top:3px;left:3px;width:14px;
142height:14px;border-radius:50%;background:#fff;transition:left .2s;box-shadow:0 1px 4px rgba(0,0,0,.2);} 143.toggle-track.on .toggle-thumb{left:19px;} 144.toggle-text{font-family:'Syne',sans-serif;font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--ink);} 145.toggle-sub{font-size:12px;color:var(--mid);font-family:'Cormorant Garamond',serif;font-style:italic;} 146.diaspora-fields{display:none;padding:16px;background:rgba(184,151,58,.05);border:1px solid rgba(184,151,58,.2);margin-bottom:14px;} 147.diaspora-fields.show{display:block;} 148/* Submit */ 149.submit-btn{width:100%;font-family:'Syne',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;padding:18px 32px;background:var(--gold);color:var(--slate);border:none;cursor:pointer;transition:all .22s;display:flex;align-items:center;justify-content:center;gap:10px;margin-top:24px;} 150.submit-btn:hover{background:var(--gold-light);} 151.submit-btn:disabled{opacity:.6;cursor:not-allowed;} 152.submit-btn .btn-spinner{width:16px;height:16px;border:2px solid rgba(20,25,36,.3);border-top-color:var(--slate);border-radius:50%;animation:spin .7s linear infinite;display:none;} 153.submit-btn.loading .btn-spinner{display:block;} 154.submit-btn.loading .btn-text{display:none;} 155.form-note{font-family:'Syne',sans-serif;font-size:9px;font-weight:600;letter-spacing:.5px;color:var(--mid);text-align:center;margin-top:12px;line-height:1.6;} 156/* Success */ 157.form-success{display:none;text-align:center;padding:60px 40px;animation:fadeIn .5s ease;} 158.form-success.show{display:block;} 159.success-icon{font-size:48px;margin-bottom:20px;} 160.success-title{font-family:'Cormorant Garamond',serif;font-size:36px;font-weight:300;color:var(--ink);margin-bottom:10px;} 161.success-title em{font-style:italic;color:var(--gold);} 162.success-text{font-size:16px;line-height:1.75;color:var(--mid);margin-bottom:28px;} 163.success-links{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;} 164.success-link{font-family:'Syne',sans-serif;font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:12px 22px;text-decoration:none;transition:all .2s;} 165.success-link.p{background:var(--gold);color:var(--slate);} 166.success-link.p:hover{background:var(--gold-light);} 167.success-link.o{border:1.5px solid rgba(0,0,0,.15);color:var(--mid);} 168.success-link.o:hover{border-color:var(--gold);color:var(--ink);} 169 170/* INFO SIDE */ 171.info-side{padding-left:60px;} 172.info-block{margin-bottom:36px;} 173.info-block-label{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:var(--gold);margin-bottom:14px;display:flex;align-items:center;gap:8px;} 174.info-block-label::before{content:'';width:14px;height:1px;background:var(--gold);} 175.contact-card{display:flex;align-items:center;gap:14px;padding:16px 18px;background:var(--warm);border:1px solid var(--border);margin-bottom:8px;text-decoration:none;transition:all .2s;position:relative;overflow:hidden;} 176.contact-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--gold);transform:scaleY(0);transition:transform .2s;} 177.contact-card:hover{border-color:var(--gold);background:rgba(184,151,58,.04);} 178.contact-card:hover::before{transform:scaleY(1);} 179.contact-card:hover .cc-arrow{opacity:1;transform:translateX(0);} 180.cc-icon{font-size:20px;flex-shrink:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--slate);} 181.cc-body{flex:1;} 182.cc-label{font-family:'Syne',sans-serif;font-size:8px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--mid);margin-bottom:3px;} 183.cc-value{font-family:'Cormorant Garamond',serif;font-size:17px;font-weight:400;color:var(--ink);} 184.cc-note{font-family:'Syne',sans-serif;font-size:8px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--mid);margin-top:2px;} 185.cc-arrow{font-size:16px;color:var(--gold);opacity:0;transform:translateX(-6px);transition:all .2s;flex-shrink:0;} 186.contact-card.wa{border-color:rgba(37,211,102,.3);} 187.contact-card.wa .cc-icon{background:#25D366;} 188.contact-card.wa:hover{border-color:#25D366;background:rgba(37,211,102,.04);} 189.contact-card.wa::before{background:#25D366;} 190.hours-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;background:rgba(0,0,0,.06);margin-bottom:8px;} 191.hours-cell{background:var(--warm);padding:12px 14px;border:1px solid var(--border);} 192.hours-day{font-family:'Syne',sans-serif;font-size:8px;font-weight:700;letter-spacing:1px;text-transform:uppercase;
192color:var(--mid);margin-bottom:3px;} 193.hours-time{font-family:'Cormorant Garamond',serif;font-size:16px;font-weight:400;color:var(--ink);} 194.open-now{display:inline-flex;align-items:center;gap:6px;font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#2e7d52;} 195.open-dot{width:6px;height:6px;border-radius:50%;background:#2e7d52;animation:pulse 2s infinite;flex-shrink:0;} 196.address-block{padding:16px 18px;background:var(--warm);border:1px solid var(--border);} 197.address-line{font-size:15px;line-height:1.7;color:var(--ink);} 198.address-map-link{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--gold);text-decoration:none;display:inline-flex;align-items:center;gap:5px;margin-top:10px;transition:gap .2s;} 199.address-map-link:hover{gap:8px;} 200.creds-row{display:flex;flex-wrap:wrap;gap:6px;} 201.cred-badge{font-family:'Syne',sans-serif;font-size:8px;font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:6px 12px;border:1px solid rgba(0,0,0,.12);color:var(--mid);background:var(--warm);} 202.cred-badge.award{border-color:rgba(184,151,58,.4);color:var(--gold);background:rgba(184,151,58,.06);} 203.quick-link{display:flex;align-items:center;gap:10px;padding:13px 16px;background:var(--warm);border:1px solid var(--border);text-decoration:none;margin-bottom:7px;transition:border-color .2s;} 204.quick-link:hover{border-color:var(--gold);} 205.ql-icon{font-size:18px;flex-shrink:0;} 206.ql-label{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--gold);margin-bottom:2px;} 207.ql-desc{font-size:13px;color:var(--mid);} 208.ql-arrow{margin-left:auto;color:var(--gold);font-size:14px;flex-shrink:0;} 209 210/* PROJECT IMAGES STRIP */ 211.projects-strip{padding:0 80px;} 212.strip-eyebrow{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--mid);margin-bottom:16px;display:flex;align-items:center;gap:10px;} 213.strip-eyebrow::before{content:'';width:18px;height:1px;background:var(--mid);} 214.strip-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:3px;} 215.strip-img{aspect-ratio:3/4;overflow:hidden;position:relative;background:var(--warm);} 216.strip-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease;} 217.strip-img:hover img{transform:scale(1.05);} 218.strip-img-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(20,25,36,.7) 0%,transparent 55%);opacity:0;transition:opacity .3s;} 219.strip-img:hover .strip-img-overlay{opacity:1;} 220.strip-img-label{position:absolute;bottom:12px;left:12px;right:12px;font-family:'Syne',sans-serif;font-size:8px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:#fff;opacity:0;transform:translateY(6px);transition:all .3s;} 221.strip-img:hover .strip-img-label{opacity:1;transform:translateY(0);} 222.strip-view-all{display:flex;align-items:center;justify-content:center;padding:20px 0 44px;} 223.strip-view-link{font-family:'Syne',sans-serif;font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--gold);text-decoration:none;display:inline-flex;align-items:center;gap:6px;transition:gap .2s;} 224.strip-view-link:hover{gap:10px;} 225 226/* YOUTUBE SECTION */ 227.youtube-section{padding:52px 80px;background:var(--slate);position:relative;overflow:hidden;} 228.youtube-section::before{content:'WATCH';position:absolute;bottom:-20px;right:20px;font-family:'Syne',sans-serif;font-size:160px;font-weight:800;color:rgba(255,255,255,.02);pointer-events:none;line-height:1;white-space:nowrap;} 229.yt-eyebrow{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--gold);margin-bottom:10px;display:flex;align-items:center;gap:10px;} 230.yt-eyebrow::before{content:'';width:18px;height:1px;background:var(--gold);} 231.yt-title{font-family:'Cormorant Garamond',serif;font-size:clamp(24px,3vw,38px);font-weight:300;color:#fff;line-height:1.12;margin-bottom:8px;} 232.yt-title em{font-style:italic;color:var(--gold-light);} 233.yt-desc{font-size:15px;line-height:1.75;color:rgba(255,255,255,.42);margin-bottom:36px;max-width:600px;} 234.yt-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;} 235.yt-card{position:relative;cursor:pointer;overflow:hidden;background:#000;} 236.yt-card:hover .yt-thumb{transform:scale(1.03);} 237.yt-card:hover .yt-play{transform:translate(-50%,-50%) scale(1.12);} 238.yt-thumb-wrap{aspect-ratio:16/9;position:relative;overflow:hidden;} 239.yt-thumb{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease;filter:brightness(.88);} 240.yt-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:56px;height:56px;background:rgba(255,0,0,.9);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:transform .25s;z-index:2;} 241.yt-play::after{content:'';border-style:solid;border-width:10px 0 10px 20px;border-color:transparent transparent transparent #fff;margin-left:4px;} 242.yt-card-body{padding:14px 16px 18px;} 243.yt-card-label{font-family:'Syne',sans-serif;font-size:8px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--gold);margin-bottom:5px;} 244.yt-card-title{font-family:'Cormorant Garamond',serif;font-size:19px;font-weight:400;color:#fff;line-height:1.2;margin-bottom:6px;} 245.yt-card-desc{font-size:13px;line-height:1.55;color:rgba(255,255,255,.38);} 246.yt-channel-link{display:inline-flex;align-items:center;gap:8px;margin-top:28px;font-family:'Syne',sans-serif;font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--gold);text-decoration:none;padding:12px 22px;border:1px solid rgba(184,151,58,.4);transition:all .22s;} 247.yt-channel-link:hover{background:var(--gold);color:var(--slate);} 248 249/* MAP */ 250.map-section{padding:0 80px 60px;} 251.map-wrap{position:relative;height:320px;overflow:hidden;background:var(--warm);} 252.map-wrap iframe{width:100%;height:100%;border:0;display:block;filter:grayscale(20%) contrast(1.05);} 253.map-overlay-card{position:absolute;top:20px;left:20px;background:var(--slate);padding:18px 22px;max-width:260px;z-index:2;} 254.moc-label{font-family:'Syne',sans-serif;font-size:8px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--gold);margin-bottom:6px;} 255.moc-name{font-family:'Cormorant Garamond',serif;font-size:18px;font-weight:400;color:#fff;line-height:1.2;margin-bottom:4px;} 256.moc-addr{font-size:13px;color:rgba(255,255,255,.45);line-height:1.5;} 257 258/* DIASPORA SECTION */ 259.diaspora-section{background:var(--slate);padding:64px 80px;position:relative;overflow:hidden;} 260.diaspora-section::after{content:'';position:absolute;top:0;left:0;width:4px;height:100%;background:var(--gold);} 261.diaspora-section::before{content:'DIASPORA';position:absolute;bottom:-20px;right:20px;font-family:'Syne',sans-serif;font-size:160px;font-weight:800;color:rgba(255,255,255,.02);pointer-events:none;line-height:1;white-space:nowrap;} 262.diaspora-inner{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center;} 263.dias-eyebrow{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--gold);margin-bottom:12px;display:flex;align-items:center;gap:10px;} 264.dias-eyebrow::before{content:'';width:18px;height:1px;background:var(--gold);} 265.dias-title{font-family:'Cormorant Garamond',serif;font-size:clamp(24px,3vw,40px);font-weight:300;color:#fff;line-height:1.12;margin-bottom:12px;} 266.dias-title em{font-style:italic;color:var(--gold-light);} 267.dias-desc{font-size:15px;line-height:1.8;color:rgba(255,255,255,.45);margin-bottom:28px;} 268.dias-flags{display:flex;gap:10px;margin-bottom:28px;flex-wrap:wrap;} 269.dias-flag{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:6px 12px;border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.5);display:flex;align-items:center;gap:6px;} 270.dias-flag span{font-size:16px;}
271.dias-btns{display:flex;gap:10px;flex-wrap:wrap;} 272.dias-btn{font-family:'Syne',sans-serif;font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;padding:13px 24px;text-decoration:none;transition:all .22s;} 273.dias-btn.p{background:var(--gold);color:var(--slate);} 274.dias-btn.p:hover{background:var(--gold-light);} 275.dias-btn.w{background:var(--green);color:#fff;} 276.dias-btn.w:hover{background:#1ebe5d;} 277.dias-features{display:flex;flex-direction:column;gap:0;background:rgba(255,255,255,.04);} 278.dias-feature{padding:20px 24px;border-bottom:1px solid rgba(255,255,255,.06);display:flex;gap:16px;align-items:flex-start;} 279.dias-feature:last-child{border-bottom:none;} 280.df-icon{font-size:20px;flex-shrink:0;margin-top:2px;} 281.df-title{font-family:'Syne',sans-serif;font-size:11px;font-weight:700;letter-spacing:.5px;color:#fff;margin-bottom:4px;} 282.df-desc{font-size:13px;line-height:1.6;color:rgba(255,255,255,.38);} 283 284/* FAQ */ 285.faq-section{background:var(--warm);padding:64px 80px;} 286.faq-inner{max-width:760px;margin:0 auto;} 287.faq-eyebrow{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--gold);margin-bottom:10px;display:flex;align-items:center;gap:10px;} 288.faq-eyebrow::before{content:'';width:18px;height:1px;background:var(--gold);} 289.faq-section h2{font-family:'Cormorant Garamond',serif;font-size:clamp(24px,3vw,38px);font-weight:300;color:var(--ink);line-height:1.12;margin-bottom:32px;} 290.faq-section h2 em{font-style:italic;color:var(--gold);} 291.faq-item{border-bottom:1px solid var(--border);} 292.faq-q{font-family:'Syne',sans-serif;font-size:12px;font-weight:700;letter-spacing:.3px;padding:18px 0;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;color:var(--ink);user-select:none;} 293.faq-icon{color:var(--gold);font-size:18px;flex-shrink:0;transition:transform .25s;line-height:1;} 294.faq-q.open .faq-icon{transform:rotate(45deg);} 295.faq-a{font-size:15px;line-height:1.82;color:var(--mid);padding:0 0 18px;display:none;} 296.faq-a.open{display:block;} 297.faq-a a{color:var(--gold);text-decoration:none;} 298 299/* FOOTER */ 300.fcs{display:grid;grid-template-columns:repeat(3,1fr);background:var(--slate);border-bottom:1px solid rgba(255,255,255,.05);} 301.fcs-item{display:flex;align-items:center;gap:13px;padding:20px 40px;border-right:1px solid rgba(255,255,255,.05);} 302.fcs-item:last-child{border-right:none;} 303.fcs-icon{font-size:17px;flex-shrink:0;} 304.fcs-lbl{font-family:'Syne',sans-serif;font-size:8px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:rgba(255,255,255,.25);margin-bottom:2px;} 305.fcs-val{font-size:13px;color:rgba(255,255,255,.55);} 306.fcs-val a{color:rgba(255,255,255,.55);text-decoration:none;} 307.footer-main{background:var(--slate);padding:52px 80px;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:44px;} 308.footer-brand-name{font-family:'Syne',sans-serif;font-weight:800;font-size:18px;color:#fff;margin-bottom:10px;} 309.footer-brand-text{font-size:13px;line-height:1.7;color:rgba(255,255,255,.3);} 310.footer-col-title{font-family:'Syne',sans-serif;font-size:9px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--gold);margin-bottom:16px;} 311.footer-link{display:block;font-size:13px;color:rgba(255,255,255,.4);text-decoration:none;margin-bottom:9px;transition:color .2s;} 312.footer-link:hover{color:#fff;} 313.footer-link.sub{font-size:12px;padding-left:9px;color:rgba(255,255,255,.25);} 314.footer-bottom{background:var(--slate);padding:16px 80px;border-top:1px solid rgba(255,255,255,.05);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px;} 315.footer-copy{font-family:'Syne',sans-serif;font-size:9px;letter-spacing:1px;color:rgba(255,255,255,.17);} 316 317/* FLOATERS */ 318.wa-float{position:fixed;bottom:80px;right:26px;z-index:300;display:flex;align-items:center;gap:9px;background:var(--green);color:#fff;text-decoration:none;padding:12px 18px;border-radius:50px;font-family:'Syne',sans-serif;font-size:11px;font-weight:700;box-shadow:0 4px 18px rgba(37,211,102,.32);transition:all .22s;} 319.wa-float:hover{background:#1ebe5d;transform:translateY(-2px);} 320.wa-float svg{width:20px;height:20px;fill:#fff;flex-shrink:0;} 321.back-to-top{position:fixed;bottom:26px;right:26px;z-index:300;width:44px;height:44px;background:var(--slate);border:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.6);cursor:pointer;display:none;align-items:center;justify-content:center;font-size:18px;transition:all .22s;box-shadow:0 4px 16px rgba(0,0,0,.2);} 322.back-to-top:hover{background:var(--gold);color:var(--slate);border-color:var(--gold);} 323.back-to-top.visible{display:flex;} 324 325/* RESPONSIVE */ 326@media(max-width:1100px){ 327 nav.topnav{padding:0 24px;}.nav-links,.nav-cta{display:none;}.nav-hamburger{display:flex;} 328 .page-hero{padding:52px 28px 44px;}.breadcrumb{padding:12px 28px;}.seo-intro{padding:32px 28px 0;} 329 .contact-main{grid-template-columns:1fr;padding:36px 28px 60px;} 330 .form-side{padding-right:0;border-right:none;border-bottom:1px solid var(--border);padding-bottom:48px;margin-bottom:48px;} 331 .info-side{padding-left:0;} 332 .project-types{grid-template-columns:repeat(4,1fr);} 333 .projects-strip{padding:0 28px;} 334 .strip-grid{grid-template-columns:repeat(3,1fr);} 335 .youtube-section{padding:44px 28px;}.yt-grid{grid-template-columns:1fr;} 336 .map-section{padding:0 28px 48px;} 337 .diaspora-section{padding:48px 28px;}.diaspora-inner{grid-template-columns:1fr;gap:40px;} 338 .faq-section{padding:48px 28px;} 339 .footer-main{grid-template-columns:1fr 1fr;padding:36px 28px;}.footer-bottom{padding:14px 28px;} 340 .fcs{grid-template-columns:1fr;}.fcs-item{padding:14px 28px;border-right:none;border-bottom:1px solid rgba(255,255,255,.05);} 341} 342@media(max-width:600px){ 343 .project-types{grid-template-columns:repeat(2,1fr);}.form-row{grid-template-columns:1fr;} 344 .strip-grid{grid-template-columns:1fr 1fr;}.dias-btns{flex-direction:column;} 345} 346</style> 347</head> 348<body> 349 350<!-- NAV --> 351<nav class="topnav" id="topnav"> 352 <a href="https://aalisstudios.com" class="nav-logo"><div class="logo-tri"></div><span class="logo-name">Aalis Studios</span></a> 353 <ul class="nav-links"> 354 <li><a href="https://aalisstudios.com">Home</a></li> 355 <li><a href="https://aalisstudios.com/projects-style-01/">Projects</a></li> 356 <li><a href="https://aalisstudios.com/services/">Services</a></li> 357 <li><a href="https://aalisstudios.com/about/">About</a></li> 358 <li><a href="https://aalisstudios.com/diaspora-build-kenya/">Diaspora</a></li> 359 <li><a href="https://aalisstudios.com/blog/">Blog</a></li> 360 </ul> 361 <a href="https://aalisstudios.com/contact/" class="nav-cta">Contact</a> 362 <button class="nav-hamburger" id="navHam" aria-label="Menu" aria-expanded="false"><span></span><span></span><span></span></button> 363</nav> 364<div class="mobile-nav" id="mobileNav"> 365 <a href="https://aalisstudios.com">Home</a> 366 <a href="https://aalisstudios.com/projects-style-01/">Projects</a> 367 <a href="https://aalisstudios.com/services/">Services</a> 368 <a href="https://aalisstudios.com/about/">About</a> 369 <a href="https://aalisstudios.com/diaspora-build-kenya/">Diaspora</a> 370 <a href="https://aalisstudios.com/contact/">Contact Us</a> 371</div> 372 373<!-- HERO --> 374<section class="page-hero"> 375 <div class="hero-eyebrow">Get in Touch</div> 376 <h1>Start Your Project<br><em>with Aalis Studios</em></h1> 377 <p class="hero-desc">Kenya's Lexus Design Award-winning, BORAQS-registered architecture firm. Whether you're building a family home in Nairobi, a commercial block in Westlands, or a dream home from the diaspora â we're ready to talk.</p> 378 <div class="response-badge"><span class="response-dot"></span><span class="response-text">We respond within 24 hours â Mon to Fri, 08:00â17:00 EAT</span></div> 379</section> 380 381<!-- BREADCRUMB --> 382<nav class="breadcrumb" aria-label="Breadcrumb"> 383 <a href="https://aalisstudios.com">Home</a><span class="sep">âº</span><span>Contact</span> 384</nav> 385 386<!-- SEO INTRO --> 387<div class="seo-intro"> 388 <p>Aalis Studios is a BORAQS-registered, Lexus Design Award 2020-winning architecture and interior design firm based in Nairobi, Kenya. We handle residential, commercial, institutional, mixed-use, landscape and resort architecture across all 47 counties â and we offer a dedicated remote build management service for diaspora clients in the UK, USA, Canada, Australia and the Middle East. Use the form below or contact us directly to start your project conversation.</p> 389</div> 390 391<!-- MAIN CONTACT GRID --> 392<div class="contact-main"> 393 394 <!-- FORM --> 395 <div class="form-side"> 396 <div id="contactForm"> 397 <div class="form-section-label">Send a Message</div> 398 <h2 class="form-title">Tell Us About<br><em>Your Project</em></h2> 399 <p class="form-subtitle">Fill in the form below and our team will get back to you within 24 hours. Not sure where to start? Just give us a rough idea â we'll help you build the brief.</p> 400 401 <div class="ptype-label">What type of project is this? <span style="color:var(--gold)">*</span></div> 402 <div class="project-types" id="projectTypes"> 403 <button type="button" class="ptype-btn" data-type="Residential"><span class="ptype-icon">🏡</span>Residential</button> 404 <button type="button" class="ptype-btn" data-type="Commercial"><span class="ptype-icon">🏢</span>Commercial</button> 405 <button type="button" class="ptype-btn" data-type="Institutional"><span class="ptype-icon">🏫</span>Institutional</button> 406 <button type="button" class="ptype-btn" data-type="Mixed-Use"><span class="ptype-icon">🏙</span>Mixed-Use</button> 407 <button type="button" class="ptype-btn" data-type="Landscape"><span class="ptype-icon">🌿</span>Landscape</button> 408 <button type="button" class="ptype-btn" data-type="Resort"><span class="ptype-icon">🌄</span>Resort</button> 409 <button type="button" class="ptype-btn" data-type="Interior Design"><span class="ptype-icon">🛌</span>Interior</button> 410 <button type="button" class="ptype-btn" data-type="Not Sure Yet"><span class="ptype-icon">💬</span>Not Sure</button> 411 </div> 412 <div class="field-error" id="typeError" style="margin-bottom:14px;font-size:9px;">Please select a project type.</div> 413 414 <div class="diaspora-toggle" id="diasporaToggle" role="switch" aria-checked="false"> 415 <div class="toggle-track" id="toggleTrack"><div class="toggle-thumb"></div></div> 416 <div> 417 <div class="toggle-text">Building from outside Kenya? âï¸</div> 418 <div class="toggle-sub">Enable diaspora build options</div> 419 </div> 420 </div> 421 <div class="diaspora-fields" id="diasporaFields"> 422 <div class="form-row"> 423 <div class="field-wrap"> 424 <label class="field-label" for="country">Your Country</label> 425 <select class="field-select" id="country" name="country"> 426 <option value="">Select countryâ¦</option> 427 <option>United Kingdom</option> 428 <option>United States</option> 429 <option>Canada</option> 430 <option>Australia</option> 431 <option>Germany</option> 432 <option>Netherlands</option> 433 <option>Sweden</option> 434 <option>UAE / Middle East</option> 435 <option>Other</option> 436 </select> 437 </div> 438 <div class="field-wrap"> 439 <label class="field-label" for="visitFreq">How often can you visit Kenya?</label> 440 <select class="field-select" id="visitFreq" name="visit_frequency"> 441 <option value="">Selectâ¦</option> 442 <option>Once or twice a year</option> 443 <option>Every few months</option> 444 <option>Rarely â full remote management needed</option> 445 <option>I can be present during construction</option> 446 </select> 447 </div> 448 </div> 449 </div> 450 451 <div class="form-row"> 452 <div class="field-wrap">
453 <label class="field-label" for="fname">First Name <span class="req">*</span></label> 454 <input class="field-input" type="text" id="fname" name="first_name" placeholder="e.g. James" autocomplete="given-name"> 455 <span class="field-error" id="fnameError">Please enter your first name.</span> 456 </div> 457 <div class="field-wrap"> 458 <label class="field-label" for="lname">Last Name <span class="req">*</span></label> 459 <input class="field-input" type="text" id="lname" name="last_name" placeholder="e.g. Mwangi" autocomplete="family-name"> 460 <span class="field-error" id="lnameError">Please enter your last name.</span> 461 </div> 462 </div> 463 464 <div class="form-row"> 465 <div class="field-wrap"> 466 <label class="field-label" for="email">Email Address <span class="req">*</span></label> 467 <input class="field-input" type="email" id="email" name="email" placeholder="[email protected]" autocomplete="email"> 468 <span class="field-error" id="emailError">Please enter a valid email address.</span> 469 </div> 470 <div class="field-wrap"> 471 <label class="field-label" for="phone">Phone / WhatsApp <span class="req">*</span></label> 472 <input class="field-input" type="tel" id="phone" name="phone" placeholder="+254 7XX XXX XXX" autocomplete="tel"> 473 <span class="field-error" id="phoneError">Please enter your phone number.</span> 474 </div> 475 </div> 476 477 <div class="form-row"> 478 <div class="field-wrap"> 479 <label class="field-label" for="location">Project Location / County <span class="req">*</span></label> 480 <select class="field-select" id="location" name="location"> 481 <option value="">Select locationâ¦</option> 482 <optgroup label="Nairobi"> 483 <option>Nairobi â Karen / Lang'ata</option> 484 <option>Nairobi â Westlands / Gigiri</option> 485 <option>Nairobi â Runda / Muthaiga</option> 486 <option>Nairobi â Kileleshwa / Lavington</option> 487 <option>Nairobi â Eastlands / South B / C</option> 488 <option>Nairobi â CBD / Upperhill</option> 489 <option>Nairobi â Other</option> 490 </optgroup> 491 <optgroup label="Greater Nairobi"> 492 <option>Kiambu County</option> 493 <option>Machakos / Konza</option> 494 <option>Kajiado / Kitengela / Ngong</option> 495 </optgroup> 496 <optgroup label="Other Counties"> 497 <option>Nakuru / Rift Valley</option> 498 <option>Kisumu / Western Kenya</option> 499 <option>Mombasa / Coast</option> 500 <option>Nyeri / Central Kenya</option> 501 <option>Other â I'll specify in my message</option> 502 </optgroup> 503 </select> 504 <span class="field-error" id="locationError">Please select a location.</span> 505 </div> 506 <div class="field-wrap"> 507 <label class="field-label" for="timeline">Desired Start Timeline</label> 508 <select class="field-select" id="timeline" name="timeline"> 509 <option value="">Select timelineâ¦</option> 510 <option>As soon as possible</option> 511 <option>Within 3 months</option> 512 <option>3â6 months</option> 513 <option>6â12 months</option> 514 <option>Over a year away â just exploring</option> 515 </select> 516 </div> 517 </div> 518 519 <div class="form-row full" style="margin-bottom:20px;"> 520 <div class="field-wrap"> 521 <label class="field-label">Approximate Budget (Optional)</label> 522 <div class="budget-display" id="budgetDisplay">KSh 5,000,000</div> 523 <div class="budget-note">Drag to set â this helps us tailor our proposal. All budgets welcome.</div> 524 <input type="range" class="budget-slider" id="budgetSlider" min="0" max="19" value="4" step="1"> 525 <div class="budget-labels"><span class="budget-label-text">KSh 500K</span><span class="budget-label-text">KSh 10M</span><span class="budget-label-text">KSh 100M+</span></div> 526 <input type="hidden" id="budgetValue" name="budget"> 527 </div> 528 </div> 529 530 <div class="form-row full"> 531 <div class="field-wrap"> 532 <label class="field-label" for="message">Tell Us About Your Project <span class="req">*</span></label> 533 <textarea class="field-textarea" id="message" name="message" placeholder="Describe your project â size, site details, any special requirements, or simply what you're hoping to achieve. The more detail the better, but even a few lines is fine."></textarea>
534 <span class="field-error" id="messageError">Please tell us a little about your project.</span> 535 </div> 536 </div> 537 538 <div style="margin-bottom:20px;"> 539 <div class="ptype-label" style="margin-bottom:10px;">Preferred contact method</div> 540 <div class="contact-pref" id="contactPref"> 541 <button type="button" class="cpref-btn selected" data-pref="WhatsApp">ð¬ WhatsApp</button> 542 <button type="button" class="cpref-btn" data-pref="Email">â Email</button> 543 <button type="button" class="cpref-btn" data-pref="Phone Call">ð Phone Call</button> 544 <button type="button" class="cpref-btn" data-pref="Any">ð¤ Any</button> 545 </div> 546 <input type="hidden" id="prefContact" name="preferred_contact" value="WhatsApp"> 547 </div> 548 549 <button type="button" class="submit-btn" id="submitBtn"> 550 <span class="btn-text">Send My Enquiry â</span> 551 <div class="btn-spinner"></div> 552 </button> 553 <p class="form-note">ð Your details are never shared with third parties · We respond within 24 hours on business days</p> 554 </div> 555 556 <div class="form-success" id="formSuccess"> 557 <div class="success-icon">â </div> 558 <h3 class="success-title">Thank You,<br><em>We'll Be in Touch</em></h3> 559 <p class="success-text">Your enquiry has been sent via WhatsApp and email. Our team will respond within 24 hours. In the meantime, explore our portfolio or our 2026 build cost guide.</p> 560 <div class="success-links"> 561 <a href="https://aalisstudios.com/projects-style-01/" class="success-link p">View Our Projects</a> 562 <a href="https://aalisstudios.com/blog/cost-of-building-a-house-in-kenya.html" class="success-link o">Build Cost Guide 2026</a> 563 <a href="https://wa.me/254757743454" class="success-link o" target="_blank" rel="noopener">WhatsApp Us Directly</a> 564 </div> 565 </div> 566 </div> 567 568 <!-- INFO SIDE --> 569 <div class="info-side"> 570 <div class="info-block"> 571 <div class="info-block-label">Contact Directly</div> 572 <a href="https://wa.me/254757743454" class="contact-card wa" target="_blank" rel="noopener"> 573 <div class="cc-icon">ð¬</div> 574 <div class="cc-body"><div class="cc-label">WhatsApp â Fastest Response</div><div class="cc-value">+254 757 743 454</div><div class="cc-note">Chat anytime · Photos welcome</div></div> 575 <div class="cc-arrow">â</div> 576 </a> 577 <a href="tel:+254757743454" class="contact-card"> 578 <div class="cc-icon" style="font-size:16px;">ð</div> 579 <div class="cc-body"><div class="cc-label">Phone Call</div><div class="cc-value">+254 757 743 454</div><div class="cc-note">MonâFri · 08:00â17:00 EAT</div></div> 580 <div class="cc-arrow">â</div> 581 </a> 582 <a href="/cdn-cgi/l/email-protection#b8d1d6ded7f8d9d9d4d1cbcbcccddcd1d7cb96dbd7d5" class="contact-card"> 583 <div class="cc-icon" style="font-size:16px;">â</div> 584 <div class="cc-body"><div class="cc-label">Email</div><div class="cc-value"><span class="__cf_email__" data-cfemail="e48d8a828ba48585888d97979091808d8b97ca878b89">[email protected]</span></div><div class="cc-note">Detailed enquiries welcome</div></div> 585 <div class="cc-arrow">â</div> 586 </a> 587 </div> 588 589 <div class="info-block"> 590 <div class="info-block-label">Office Hours</div> 591 <div class="hours-grid"> 592 <div class="hours-cell"><div class="hours-day">Monday â Friday</div><div class="hours-time">08:00 â 17:00</div></div> 593 <div class="hours-cell"><div class="hours-day">Saturday â Sunday</div><div class="hours-time">Closed</div></div> 594 </div> 595 <div class="open-now" id="openStatus"><span class="open-dot"></span><span id="openText">Checking hoursâ¦</span></div> 596 </div> 597 598 <div class="info-block"> 599 <div class="info-block-label">Visit Us</div> 600 <div class="address-block"> 601 <div class="address-line"><strong>Aalis Studios</strong></div> 602 <div class="address-line">1st Floor, Sun Dial Plaza</div> 603 <div class="address-line">Eastern Bypass, Off Thika Road</div> 604 <div class="address-line">Nairobi, Kenya 00200</div> 605 <a href="https://maps.google.com/?q=Sun+Dial+Plaza+Eastern+Bypass+Thika+Road+Nairobi" target="_blank" rel="noopener" class="address-map-link">Open in Google Maps â</a> 606 </div> 607 </div> 608 609 <div class="info-block"> 610 <div class="info-block-label">Credentials</div> 611 <div class="creds-row"> 612 <div class="cred-badge award">ð Lexus Design Award 2020</div> 613 <div class="cred-badge">BORAQS Registered</div> 614 <div class="cred-badge">NCA Registered</div> 615 <div class="cred-badge">EDGE Certified</div> 616 <div class="cred-badge">AAK Member</div> 617 </div> 618 </div> 619 620 <div class="info-block"> 621 <div class="info-block-label">Useful Before You Contact</div> 622 <a href="https://aalisstudios.com/blog/cost-of-building-a-house-in-kenya.html" class="quick-link">
623 <span class="ql-icon">ð</span> 624 <div><div class="ql-label">Build Cost Guide 2026</div><div class="ql-desc">Realistic KES estimates before you call</div></div> 625 <span class="ql-arrow">â</span> 626 </a> 627 <a href="https://aalisstudios.com/projects-style-01/" class="quick-link"> 628 <span class="ql-icon">ð</span> 629 <div><div class="ql-label">Our Project Portfolio</div><div class="ql-desc">100+ completed projects across Kenya</div></div> 630 <span class="ql-arrow">â</span> 631 </a> 632 </div> 633 </div> 634</div> 635 636<!-- PROJECT IMAGES STRIP --> 637<div class="projects-strip"> 638 <div class="strip-eyebrow">Our Work â A Glimpse</div> 639 <div class="strip-grid"> 640 <div class="strip-img"><img src="https://aalisstudios.com/blog/luxury-villa-kenya-stone-facade-pergola.jpg" alt="Luxury Villa Kenya Stone Facade â Aalis Studios" loading="lazy"><div class="strip-img-overlay"></div><div class="strip-img-label">Residential Villa</div></div> 641 <div class="strip-img"><img src="https://aalisstudios.com/blog/luxury-grand-mansion-kenya-glass-facade-firepit.png" alt="Grand Mansion Kenya Glass Facade â Aalis Studios" loading="lazy"><div class="strip-img-overlay"></div><div class="strip-img-label">Luxury Mansion</div></div> 642 <div class="strip-img"><img src="https://aalisstudios.com/blog/commercial-building-nairobi-night-fountain.png" alt="Commercial Building Nairobi Night â Aalis Studios" loading="lazy"><div class="strip-img-overlay"></div><div class="strip-img-label">Commercial Office</div></div> 643 <div class="strip-img"><img src="https://aalisstudios.com/blog/luxury-living-room-spiral-staircase-high-ceiling.png" alt="Luxury Interior Design Kenya â Aalis Studios" loading="lazy"><div class="strip-img-overlay"></div><div class="strip-img-label">Interior Design</div></div> 644 <div class="strip-img"><img src="https://aalisstudios.com/blog/luxury-villa-kenya-infinity-pool-sunset.png" alt="Luxury Villa Kenya Infinity Pool â Aalis Studios" loading="lazy"><div class="strip-img-overlay"></div><div class="strip-img-label">Pool Villa</div></div> 645 </div> 646 <div class="strip-view-all"><a href="https://aalisstudios.com/projects-style-01/" class="strip-view-link">View All 100+ Projects â</a></div> 647</div> 648 649<!-- YOUTUBE SECTION --> 650<section class="youtube-section"> 651 <div class="yt-eyebrow">Watch Our Work</div> 652 <h2 class="yt-title">See Aalis Studios<br><em>in Action</em></h2> 653 <p class="yt-desc">Watch project walkthroughs, 3D visualisation reveals, and behind-the-scenes construction videos from our portfolio across Kenya.</p> 654 <div class="yt-grid"> 655 <div class="yt-card" onclick="openYT('beCr03KlyQk')" role="button" tabindex="0" onkeydown="if(event.key==='Enter')openYT('beCr03KlyQk')"> 656 <div class="yt-thumb-wrap"> 657 <img class="yt-thumb" src="https://img.youtube.com/vi/beCr03KlyQk/maxresdefault.jpg" alt="Aalis Studios Architecture Project Video Kenya" loading="lazy" onerror="this.src='https://img.youtube.com/vi/beCr03KlyQk/hqdefault.jpg'"> 658 <div class="yt-play"></div> 659 </div> 660 <div class="yt-card-body"> 661 <div class="yt-card-label">Project Showcase</div> 662 <div class="yt-card-title">Architecture & Design in Kenya</div> 663 <div class="yt-card-desc">A look at our completed residential and commercial architecture projects across Nairobi and Kenya.</div> 664 </div> 665 </div> 666 <div class="yt-card" onclick="openYT('fZicRqe6yQ0')" role="button" tabindex="0" onkeydown="if(event.key==='Enter')openYT('fZicRqe6yQ0')"> 667 <div class="yt-thumb-wrap"> 668 <img class="yt-thumb" src="https://img.youtube.com/vi/fZicRqe6yQ0/maxresdefault.jpg" alt="Aalis Studios Design Process Video Kenya" loading="lazy" onerror="this.src='https://img.youtube.com/vi/fZicRqe6yQ0/hqdefault.jpg'"> 669 <div class="yt-play"></div> 670 </div> 671 <div class="yt-card-body"> 672 <div class="yt-card-label">Behind the Design</div> 673 <div class="yt-card-title">Our Design Process Revealed</div> 674 <div class="yt-card-desc">From initial brief to final handover â a behind-the-scenes look at how Aalis Studios brings projects to life.</div> 675 </div> 676 </div> 677 </div> 678 <a href="https://www.youtube.com/@aalisarchitectureanddesign7917" target="_blank" rel="noopener" class="yt-channel-link">▶ View All Videos on YouTube</a> 679</section> 680 681<!-- MAP --> 682<div class="map-section"> 683 <div class="map-wrap"> 684 <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3988.7985!2d36.89!3d-1.255!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x0!2sSun%20Dial%20Plaza%2C%20Eastern%20Bypass%2C%20Nairobi!5e0!3m2!1sen!2ske!4v1" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade" title="Aalis Studios Office â Sun Dial Plaza Nairobi"></iframe> 685 <div class="map-overlay-card"> 686 <div class="moc-label">Our Office</div> 687 <div class="moc-name">Aalis Studios</div> 688 <div class="moc-addr">1st Floor, Sun Dial Plaza<br>Eastern Bypass, Off Thika Road<br>Nairobi, Kenya</div> 689 </div> 690 </div> 691</div> 692 693<!-- DIASPORA --> 694<section class="diaspora-section"> 695 <div class="diaspora-inner"> 696 <div> 697 <div class="dias-eyebrow">International Clients</div> 698 <h2 class="dias-title">Building in Kenya<br><em>from Abroad?</em></h2> 699 <p class="dias-desc">We have extensive experience managing architecture and construction projects remotely for diaspora clients. You don't need to be in Kenya for us to deliver your project on time and on budget.</p> 700 <div class="dias-flags"> 701 <div class="dias-flag"><span>ð¬ð§</span> United Kingdom</div> 702 <div class="dias-flag"><span>ðºð¸</span> United States</div> 703 <div class="dias-flag"><span>ð¨ð¦</span> Canada</div> 704 <div class="dias-flag"><span>ð¦ðº</span> Australia</div> 705 <div class="dias-flag"><span>ð¦ðª</span> Middle East</div> 706 </div> 707 <div class="dias-btns"> 708 <a href="https://aalisstudios.com/diaspora-build-kenya/" class="dias-btn p">Learn About Diaspora Builds</a> 709 <a href="https://wa.me/254757743454" class="dias-btn w" target="_blank" rel="noopener">WhatsApp from Abroad</a> 710 </div> 711 </div> 712 <div class="dias-features"> 713 <div class="dias-feature"><div class="df-icon">ð¹</div><div><div class="df-title">Weekly Video Progress Reports</div><div class="df-desc">Full video walkthrough of your site every week â no surprises.</
713div></div></div> 714 <div class="dias-feature"><div class="df-icon">ð¬</div><div><div class="df-title">Dedicated WhatsApp Project Channel</div><div class="df-desc">Direct access to your site manager, architect and contractor â 7 days a week.</div></div></div> 715 <div class="dias-feature"><div class="df-icon">ð</div><div><div class="df-title">Full Contractor Procurement & Management</div><div class="df-desc">We vet, hire and manage all contractors on your behalf throughout the build.</div></div></div> 716 <div class="dias-feature"><div class="df-icon">ð</div><div><div class="df-title">All Approvals Handled for You</div><div class="df-desc">County planning, BORAQS drawings, NCA registration â all managed without you needing to be present.</div></div></div> 717 <div class="dias-feature"><div class="df-icon">ð</div><div><div class="df-title">Keys-Ready Handover</div><div class="df-desc">Completed, snagged and fully finished â ready for you to walk into on your next visit.</div></div></div> 718 </div> 719 </div> 720</section> 721 722<!-- FAQ --> 723<section class="faq-section"> 724 <div class="faq-inner"> 725 <div class="faq-eyebrow">Common Questions</div> 726 <h2>Questions About<br><em>Getting Started</em></h2> 727 <div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)" role="button" tabindex="0" aria-expanded="false">How quickly does Aalis Studios respond to enquiries?<span class="faq-icon">+</span></div><div class="faq-a">We respond to all enquiries within 24 hours on business days (Monday to Friday, 08:00â17:00 EAT). For urgent matters, WhatsApp us directly on +254 757 743 454 â we monitor WhatsApp throughout the day.</div></div> 728 <div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)" role="button" tabindex="0" aria-expanded="false">Is there a fee for an initial consultation?<span class="faq-icon">+</span></div><div class="faq-a">Our initial consultation is completely free with no obligation. Aalis Studios provides transparent, written fee proposals before any work begins â no hidden costs.</div></div> 729 <div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)" role="button" tabindex="0" aria-expanded="false">Can I start a project remotely from outside Kenya?<span class="faq-icon">+</span></div><div class="faq-a">Yes. We have a dedicated diaspora build service for clients in the UK, USA, Canada, Australia and the Middle East â weekly video reports, a WhatsApp project channel, full contractor management, and keys-ready handover.</div></div> 730 <div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)" role="button" tabindex="0" aria-expanded="false">What should I have ready before contacting you?<span class="faq-icon">+</span></div><div class="faq-a">Just a rough idea of project type, preferred location, approximate budget and timeline. You don't need plans â our team will help you develop the full brief as part of the free consultation.</div></div> 731 <div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)" role="button" tabindex="0" aria-expanded="false">What areas of Kenya does Aalis Studios serve?<span class="faq-icon">+</span></div><div class="faq-a">We serve clients across all 47 counties in Kenya â Nairobi, Kiambu, Machakos, Kajiado, Nakuru, Kisumu, Mombasa, Kilifi, Nyeri, Laikipia, Kitui and more. We also serve diaspora clients internationally.</div></div> 732 <div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)" role="button" tabindex="0" aria-expanded="false">How much do architect fees cost in Kenya?<span class="faq-icon">+</span></div><div class="faq-a">Architect fees typically range from 5% to 10% of total construction cost for residential projects. Aalis Studios always provides a clear written fee proposal before any commitment. See our <a href="https://aalisstudios.com/cost-of-building-a-house-in-kenya/">2026 build cost guide</a> for detailed estimates.</div></div> 733 </div> 734</section> 735 736<!-- FOOTER --> 737<footer> 738 <div class="fcs"> 739 <div class="fcs-item"><div class="fcs-icon">ð</div><div><div class="fcs-lbl">Address</div><div class="fcs-val">1st Floor Sun Dial Plaza, Eastern Bypass Off Thika Road, Nairobi</div></div></div> 740 <div class="fcs-item"><div class="fcs-icon">â</div><div><div class="fcs-lbl">Email</div><div class="fcs-val"><a href="/cdn-cgi/l/email-protection#3b52555d547b5a5a575248484f4e5f52544815585456"><span class="__cf_email__" data-cfemail="0f666169604f6e6e63667c7c7b7a6b66607c216c6062">[email protected]</span></a></div></div></div> 741 <div class="fcs-item"><div class="fcs-icon">â</div><div><div class="fcs-lbl">Call / WhatsApp</div><div class="fcs-val">+254 757 743 454</div></div></div> 742 </div> 743 <div class="footer-main"> 744 <div> 745 <div class="footer-brand-name">Aalis Studios</div> 746 <p class="footer-brand-text">Lexus Design Award 2020 winners. BORAQS-registered architecture, interior design and construction management firm in Nairobi, Kenya. NCA-registered. EDGE Certified. AAK member. Serving clients across Kenya and East Africa since 2010.</p> 747 </div> 748 <div> 749 <div class="footer-col-title">Our Work</div> 750 <a href="https://aalisstudios.com/projects-style-01/" class="footer-link">All Projects</a> 751 <a href="https://aalisstudios.com/services/" class="footer-link">Services</a> 752 <a href="https://aalisstudios.com/architectural-design-services-kenya/" class="footer-link sub">Architecture</a> 753 <a href="https://aalisstudios.com/interior-design-services-in-kenya/" class="footer-link sub">Interior Design</a> 754 <a href="https://aalisstudios.com/efficient-construction-management-solutions/" class="footer-link sub">Construction</a> 755 </div> 756 <div> 757 <div class="footer-col-title">Company</div> 758 <a href="https://aalisstudios.com/about/" class="footer-link">About Us</a> 759 <a href="https://aalisstudios.com/diaspora-build-kenya/" class="footer-link">Diaspora Service</a> 760 <a href="https://aalisstudios.com/blog/cost-of-building-a-house-in-kenya.html" class="footer-link">Build Cost Guide 2026</a> 761 <a href="https://aalisstudios.com/faq/" class="footer-link">FAQ</a> 762 <a href="https://aalisstudios.com/contact/" class="footer-link">Contact</a> 763 </div> 764 <div> 765 <div class="footer-col-title">Follow Us</div> 766 <a href="https://www.facebook.com/aalisarchitects/" class="footer-link" target="_blank" rel="noopener">Facebook</a> 767 <a href="https://x.com/AalisArchitects" class="footer-link" target="_blank" rel="noopener">X (Twitter)</a> 768 <a href="https://www.instagram.com/aalisarchitects/" class="footer-link" target="_blank" rel="noopener">Instagram</a> 769 <a href="https://www.youtube.com/@aalisarchitectureanddesign7917" class="footer-link" target="_blank" rel="noopener">YouTube</a> 770 </div> 771 </div> 772 <div class="footer-bottom"> 773 <span class="footer-copy">
773© Copyright Aalisstudios 2026. All rights reserved. · BORAQS-Registered Architects · NCA-Registered · Lexus Design Award 2020</span> 774 <span class="footer-copy">Created by Techit Technology Ltd</span> 775 </div> 776</footer> 777 778<a href="https://wa.me/254757743454" class="wa-float" target="_blank" rel="noopener" aria-label="Chat on WhatsApp"> 779 <svg viewBox="0 0 24 24"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg> 780 Chat with Us 781</a> 782<button class="back-to-top" id="backToTop" aria-label="Back to top" onclick="window.scrollTo({top:0,behavior:'smooth'})">â</button>
vendor: 111 bytes, lines 782-784
782 783 784<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
785<script> 786// ââ All form logic wrapped in DOMContentLoaded so it runs 787// after Cloudflare's script and after DOM is fully parsed ââ 788document.addEventListener('DOMContentLoaded', function() { 789 790// BUDGET SLIDER 791var BUDGETS=["KSh 500,000","KSh 1,000,000","KSh 2,000,000","KSh 3,000,000","KSh 5,000,000","KSh 7,500,000","KSh 10,000,000","KSh 15,000,000","KSh 20,000,000","KSh 30,000,000","KSh 40,000,000","KSh 50,000,000","KSh 60,000,000","KSh 70,000,000","KSh 80,000,000","KSh 90,000,000","KSh 100,000,000","KSh 150,000,000","KSh 200,000,000","KSh 200,000,000+"]; 792var slider=document.getElementById('budgetSlider'); 793var budgetDisplay=document.getElementById('budgetDisplay'); 794var budgetHidden=document.getElementById('budgetValue'); 795function updateBudget(){ 796 var v=parseInt(slider.value); 797 budgetDisplay.textContent=BUDGETS[v]; 798 budgetHidden.value=BUDGETS[v]; 799 var pct=(v/19)*100; 800 slider.style.background='linear-gradient(to right,var(--gold) 0%,var(--gold) '+pct+'%,rgba(0,0,0,.12) '+pct+'%)'; 801} 802if(slider){slider.addEventListener('input',updateBudget);updateBudget();} 803 804// PROJECT TYPE â bind via event delegation on the grid 805var selectedType=''; 806var projectTypes=document.getElementById('projectTypes'); 807if(projectTypes){ 808 projectTypes.addEventListener('click',function(e){ 809 var btn=e.target.closest('.ptype-btn'); 810 if(!btn)return; 811 document.querySelectorAll('.ptype-btn').forEach(function(b){b.classList.remove('selected');}); 812 btn.classList.add('selected'); 813 selectedType=btn.dataset.type; 814 var te=document.getElementById('typeError'); 815 if(te)te.classList.remove('show'); 816 }); 817} 818 819// DIASPORA TOGGLE â bind via event listener, not inline onclick 820var diasporaOn=false; 821var diasporaToggle=document.getElementById('diasporaToggle'); 822if(diasporaToggle){ 823 diasporaToggle.addEventListener('click',function(){ 824 diasporaOn=!diasporaOn; 825 document.getElementById('toggleTrack').classList.toggle('on',diasporaOn); 826 diasporaToggle.classList.toggle('active',diasporaOn); 827 diasporaToggle.setAttribute('aria-checked',String(diasporaOn)); 828 document.getElementById('diasporaFields').classList.toggle('show',diasporaOn); 829 }); 830 // Keyboard accessibility 831 diasporaToggle.addEventListener('keydown',function(e){ 832 if(e.key==='Enter'||e.key===' '){e.preventDefault();diasporaToggle.click();} 833 }); 834} 835 836// PREFERRED CONTACT â bind via event delegation 837var contactPref=document.getElementById('contactPref'); 838if(contactPref){ 839 contactPref.addEventListener('click',function(e){ 840 var btn=e.target.closest('.cpref-btn'); 841 if(!btn)return; 842 document.querySelectorAll('.cpref-btn').forEach(function(b){b.classList.remove('selected');}); 843 btn.classList.add('selected'); 844 document.getElementById('prefContact').value=btn.dataset.pref; 845 }); 846} 847 848// OPEN/CLOSED STATUS 849function checkHours(){ 850 var now=new Date(); 851 var eat=new Date(now.getTime()+(now.getTimezoneOffset()*60000)+(3*3600000)); 852 var day=eat.getDay(); 853 var tval=eat.getHours()*100+eat.getMinutes(); 854 var el=document.getElementById('openStatus'); 855 var txt=document.getElementById('openText'); 856 var dot=el?el.querySelector('.open-dot'):null; 857 if(!el||!txt)return; 858 if(day>=1&&day<=5&&tval>=800&&tval<1700){ 859 el.style.color='#2e7d52'; 860 if(dot){dot.style.background='#2e7d52';} 861 txt.textContent='Open now â Closes 17:00 EAT'; 862 } else { 863 el.style.color='var(--mid)'; 864 if(dot){dot.style.background='var(--mid)';dot.style.animation='none';} 865 txt.textContent=(day===0||day===6)?'Closed today â Opens Monday 08:00 EAT':'Currently closed â Opens tomorrow 08:00 EAT'; 866 } 867} 868checkHours(); 869 870// VALIDATION 871function validate(){ 872 var ok=true; 873 function chk(id,errId){ 874 var el=document.getElementById(id); 875 var er=document.getElementById(errId); 876 if(!el||!er)return; 877 if(!el.value.trim()){el.classList.add('error');er.classList.add('show');ok=false;} 878 else{el.classList.remove('error');er.classList.remove('show');} 879 } 880 if(!selectedType){document.getElementById('typeError').classList.add('show');ok=false;} 881 else{document.getElementById('typeError').classList.remove('show');} 882 chk('fname','fnameError'); 883 chk('lname','lnameError'); 884 var eEl=document.getElementById('email'); 885 var eEr=document.getElementById('emailError'); 886 var rx=/^[^\s@]+@[^\s@]+\.[^\s@]+$/; 887 if(!eEl.value.trim()||!rx.test(eEl.value)){eEl.classList.add('error');eEr.classList.add('show');ok=false;} 888 else{eEl.classList.remove('error');eEr.classList.remove('show');} 889 chk('phone','phoneError'); 890 var lEl=document.getElementById('location'); 891 var lEr=document.getElementById('locationError'); 892 if(!lEl.value){lEl.classList.add('error');lEr.classList.add('show');ok=false;} 893 else{lEl.classList.remove('error');lEr.classList.remove('show');} 894 chk('message','messageError'); 895 return ok; 896} 897 898function showSuccess(){ 899 var cf=document.getElementById('contactForm'); 900 var sf=document.getElementById('formSuccess'); 901 if(cf)cf.style.display='none'; 902 if(sf)sf.classList.add('show'); 903 var fs=document.querySelector('.form-side'); 904 if(fs)window.scrollTo({top:fs.offsetTop-100,behavior:'smooth'}); 905} 906 907// SUBMIT â bind via event listener 908var submitBtn=document.getElementById('submitBtn'); 909if(submitBtn){ 910 submitBtn.addEventListener('click',function(e){ 911 e.preventDefault(); 912 if(!validate())return; 913 914 submitBtn.classList.add('loading'); 915 submitBtn.disabled=true; 916 917 var fn=document.getElementById('fname').value.trim(); 918 var ln=document.getElementById('lname').value.trim(); 919 var em=document.getElementById('email').value.trim(); 920 var ph=document.getElementById('phone').value.trim(); 921 var lo=document.getElementById('location').value; 922 var tl=document.getElementById('timeline').value||'Not specified'; 923 var bu=document.getElementById('budgetValue').value||'Not specified'; 924 var ms=document.getElementById('message').value.trim(); 925 var pr=document.getElementById('prefContact').value;
926 var cEl=document.getElementById('country'); 927 var di=diasporaOn?'Yes ('+(cEl&&cEl.value?cEl.value:'unspecified')+')':'No'; 928 929 var wa='*New Project Enquiry â Aalis Studios*\n\n' 930 +'*Name:* '+fn+' '+ln+'\n' 931 +'*Email:* '+em+'\n' 932 +'*Phone:* '+ph+'\n' 933 +'*Project Type:* '+selectedType+'\n' 934 +'*Location:* '+lo+'\n' 935 +'*Timeline:* '+tl+'\n' 936 +'*Budget:* '+bu+'\n' 937 +'*Preferred Contact:* '+pr+'\n' 938 +'*Diaspora:* '+di+'\n\n' 939 +'*Message:*\n'+ms; 940 941 var params={ 942 from_name: fn+' '+ln, 943 from_email: em, 944 reply_to: em, 945 phone: ph, 946 project_type: selectedType, 947 location: lo, 948 timeline: tl, 949 budget: bu, 950 message: ms, 951 preferred_contact: pr, 952 diaspora: di, 953 page_url: window.location.href 954 }; 955 956 emailjs.send('service_vplrwu1','template_5ioj98m',params) 957 .then(function(){ 958 window.open('https://wa.me/254757743454?text='+encodeURIComponent(wa),'_blank','noopener,noreferrer'); 959 showSuccess(); 960 }) 961 .catch(function(err){ 962 console.error('EmailJS error:',err); 963 window.open('https://wa.me/254757743454?text='+encodeURIComponent(wa),'_blank','noopener,noreferrer'); 964 showSuccess(); 965 }) 966 .finally(function(){ 967 submitBtn.classList.remove('loading'); 968 submitBtn.disabled=false; 969 }); 970 }); 971} 972 973// YOUTUBE 974window.openYT=function(id){ 975 window.open('https://www.youtube.com/watch?v='+id,'_blank','noopener,noreferrer'); 976}; 977 978// FAQ 979function toggleFaq(el){ 980 var a=el.nextElementSibling; 981 var open=el.classList.contains('open'); 982 document.querySelectorAll('.faq-q.open').forEach(function(q){ 983 q.classList.remove('open');q.setAttribute('aria-expanded','false'); 984 if(q.nextElementSibling)q.nextElementSibling.classList.remove('open'); 985 }); 986 if(!open){el.classList.add('open');el.setAttribute('aria-expanded','true');if(a)a.classList.add('open');} 987} 988window.toggleFaq=toggleFaq; 989document.querySelectorAll('.faq-q').forEach(function(q){ 990 q.addEventListener('click',function(){toggleFaq(q);}); 991 q.addEventListener('keydown',function(e){if(e.key==='Enter'||e.key===' '){e.preventDefault();toggleFaq(q);}}); 992}); 993 994// NAV + SCROLL 995window.addEventListener('scroll',function(){ 996 var n=document.getElementById('topnav'); 997 var b=document.getElementById('backToTop'); 998 if(n)n.classList.toggle('scrolled',window.scrollY>10); 999 if(b)b.classList.toggle('visible',window.scrollY>600); 1000},{passive:true}); 1001 1002// MOBILE NAV 1003var ham=document.getElementById('navHam'); 1004var mn=document.getElementById('mobileNav'); 1005if(ham&&mn){ 1006 ham.addEventListener('click',function(){ 1007 var open=mn.classList.toggle('open'); 1008 ham.classList.toggle('open',open); 1009 }); 1010} 1011 1012}); // end DOMContentLoaded 1013</script>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.