PageSourceSearch

https://aalisstudios.com/contact/

html aalisstudios.com collected 2026-10-06 19:08:52 UTC 73,648 bytes, 1,013 lines download raw bytes

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">&#127969;</span>Residential</button>
404        <button type="button" class="ptype-btn" data-type="Commercial"><span class="ptype-icon">&#127970;</span>Commercial</button>
405        <button type="button" class="ptype-btn" data-type="Institutional"><span class="ptype-icon">&#127979;</span>Institutional</button>
406        <button type="button" class="ptype-btn" data-type="Mixed-Use"><span class="ptype-icon">&#127961;</span>Mixed-Use</button>
407        <button type="button" class="ptype-btn" data-type="Landscape"><span class="ptype-icon">&#127807;</span>Landscape</button>
408        <button type="button" class="ptype-btn" data-type="Resort"><span class="ptype-icon">&#127748;</span>Resort</button>
409        <button type="button" class="ptype-btn" data-type="Interior Design"><span class="ptype-icon">&#128716;</span>Interior</button>
410        <button type="button" class="ptype-btn" data-type="Not Sure Yet"><span class="ptype-icon">&#128172;</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&#160;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 &amp; 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">&#9654; &nbsp;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&#160;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.