Update index.html
Browse files- index.html +473 -249
index.html
CHANGED
@@ -1,287 +1,511 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<!DOCTYPE html>
|
2 |
-
<html lang="en" class="
|
3 |
<head>
|
4 |
<meta charset="utf-8" />
|
5 |
-
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
6 |
-
<title>NeuralNomadAI —
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
-
<!--
|
9 |
-
<link
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
11 |
-
|
12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
14 |
-
<!--
|
15 |
-
<
|
16 |
-
|
17 |
-
<
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
<a
|
28 |
-
<a href="#
|
29 |
-
<a href="#
|
30 |
-
<a href="#
|
|
|
|
|
31 |
</nav>
|
32 |
-
|
33 |
-
|
34 |
-
<button class="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
</div>
|
36 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
</header>
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
<
|
42 |
-
|
43 |
-
|
44 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
|
46 |
-
|
47 |
-
<
|
48 |
-
|
49 |
-
|
|
|
|
|
|
|
|
|
50 |
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
<div class="
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
<
|
59 |
-
</
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
</div>
|
61 |
-
<div class="
|
62 |
-
<h3
|
63 |
-
<p
|
64 |
-
<
|
65 |
-
<button id="openGeminiBtn" class="btn btn-primary small">Open Preview</button>
|
66 |
-
<a id="openGeminiNewTab" class="btn btn-outline small" target="_blank" rel="noopener">Open in new tab</a>
|
67 |
-
<button id="copyGeminiLink" class="btn btn-muted small">Copy Link</button>
|
68 |
-
</div>
|
69 |
</div>
|
70 |
</div>
|
71 |
</div>
|
72 |
-
</
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
</section>
|
81 |
-
</main>
|
82 |
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
</div>
|
92 |
-
</
|
93 |
-
</footer>
|
94 |
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
<div class="modal-controls">
|
102 |
-
<button id="copyLinkModal" class="btn btn-muted small">Copy Link</button>
|
103 |
-
<a id="openNewTabModal" class="btn btn-outline small" target="_blank" rel="noopener">Open in new tab</a>
|
104 |
-
<button id="closeModal" class="btn btn-outline small" aria-label="Close preview">Close</button>
|
105 |
</div>
|
106 |
-
</header>
|
107 |
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
</div>
|
116 |
</div>
|
117 |
-
</
|
118 |
-
</div>
|
119 |
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
const copyGeminiLink = document.getElementById('copyGeminiLink');
|
128 |
-
|
129 |
-
const geminiModal = document.getElementById('geminiModal');
|
130 |
-
const iframeContainer = document.getElementById('iframeContainer');
|
131 |
-
const closeModalBtn = document.getElementById('closeModal');
|
132 |
-
const copyLinkModal = document.getElementById('copyLinkModal');
|
133 |
-
const openNewTabModal = document.getElementById('openNewTabModal');
|
134 |
-
|
135 |
-
// Set the anchor hrefs
|
136 |
-
openGeminiNewTab.href = GEMINI_URL;
|
137 |
-
openNewTabModal.href = GEMINI_URL;
|
138 |
-
|
139 |
-
// Copy helper
|
140 |
-
async function copyToClipboard(text) {
|
141 |
-
try {
|
142 |
-
await navigator.clipboard.writeText(text);
|
143 |
-
return true;
|
144 |
-
} catch (err) {
|
145 |
-
console.warn('Clipboard copy failed:', err);
|
146 |
-
return false;
|
147 |
-
}
|
148 |
-
}
|
149 |
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
// optional: handle load / error states
|
167 |
-
iframe.addEventListener('load', () => {
|
168 |
-
// hide fallback message
|
169 |
-
const fb = iframeContainer.querySelector('.iframe-fallback');
|
170 |
-
if (fb) fb.style.display = 'none';
|
171 |
-
});
|
172 |
-
|
173 |
-
iframe.addEventListener('error', () => {
|
174 |
-
const fb = iframeContainer.querySelector('.iframe-fallback');
|
175 |
-
if (fb) fb.textContent = 'Preview failed to load. You can open the share in a new tab.';
|
176 |
-
// remove iframe to avoid confusion
|
177 |
-
iframe.remove();
|
178 |
-
});
|
179 |
-
|
180 |
-
iframeContainer.appendChild(iframe);
|
181 |
-
return iframe;
|
182 |
-
}
|
183 |
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
|
190 |
-
|
191 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
192 |
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
|
|
|
|
|
|
|
|
|
|
201 |
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
|
|
|
|
|
|
|
|
|
|
206 |
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
|
|
|
|
|
|
212 |
|
213 |
-
|
214 |
-
|
215 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
function handleTrap(e) {
|
225 |
-
if (e.key !== 'Tab') return;
|
226 |
-
if (e.shiftKey && document.activeElement === first) {
|
227 |
-
e.preventDefault();
|
228 |
-
last.focus();
|
229 |
-
} else if (!e.shiftKey && document.activeElement === last) {
|
230 |
-
e.preventDefault();
|
231 |
-
first.focus();
|
232 |
-
}
|
233 |
-
}
|
234 |
-
modal._trapHandler = handleTrap;
|
235 |
-
modal.addEventListener('keydown', handleTrap);
|
236 |
-
}
|
237 |
-
function releaseFocusTrap() {
|
238 |
-
const modal = geminiModal;
|
239 |
-
if (modal && modal._trapHandler) {
|
240 |
-
modal.removeEventListener('keydown', modal._trapHandler);
|
241 |
-
modal._trapHandler = null;
|
242 |
-
}
|
243 |
-
if (previousActive && previousActive.focus) previousActive.focus();
|
244 |
-
}
|
245 |
|
246 |
-
|
247 |
-
|
248 |
-
b.addEventListener('click', closeModal);
|
249 |
-
});
|
250 |
-
|
251 |
-
// Event bindings
|
252 |
-
openGeminiBtn.addEventListener('click', openModal);
|
253 |
-
closeModalBtn.addEventListener('click', closeModal);
|
254 |
-
|
255 |
-
copyGeminiLink.addEventListener('click', async () => {
|
256 |
-
const ok = await copyToClipboard(GEMINI_URL);
|
257 |
-
const btn = copyGeminiLink;
|
258 |
-
const orig = btn.textContent;
|
259 |
-
btn.textContent = ok ? 'Copied!' : 'Copy failed';
|
260 |
-
setTimeout(() => btn.textContent = orig, 1600);
|
261 |
-
});
|
262 |
-
|
263 |
-
copyLinkModal.addEventListener('click', async () => {
|
264 |
-
const ok = await copyToClipboard(GEMINI_URL);
|
265 |
-
const btn = copyLinkModal;
|
266 |
-
const orig = btn.textContent;
|
267 |
-
btn.textContent = ok ? 'Copied!' : 'Copy failed';
|
268 |
-
setTimeout(() => btn.textContent = orig, 1600);
|
269 |
-
});
|
270 |
-
|
271 |
-
// If iframe is blocked by X-Frame-Options/CSP, the iframe will error and fallback message will show.
|
272 |
-
// The "Open in new tab" link remains available as a reliable fallback.
|
273 |
-
|
274 |
-
// Small enhancement: try to preconnect to the domain to reduce latency (non-blocking)
|
275 |
-
(function preconnect() {
|
276 |
-
try {
|
277 |
-
const l = document.createElement('link');
|
278 |
-
l.rel = 'preconnect';
|
279 |
-
l.href = 'https://g.co';
|
280 |
-
l.crossOrigin = 'anonymous';
|
281 |
-
document.head.appendChild(l);
|
282 |
-
} catch (e) { /* noop */ }
|
283 |
-
})();
|
284 |
-
})();
|
285 |
-
</script>
|
286 |
</body>
|
287 |
</html>
|
|
|
1 |
+
<!-- =========================================================
|
2 |
+
# File: index.html
|
3 |
+
# NeuralNomadAI — Fully Developed Website (HTML + CSS + JS)
|
4 |
+
# Features:
|
5 |
+
# - Mobile-first responsive layout (Tailwind via CDN)
|
6 |
+
# - Accessible navigation + keyboard support
|
7 |
+
# - Dark mode with localStorage
|
8 |
+
# - Section router + hash-based nav + scroll spy
|
9 |
+
# - Portfolio filter + image lightbox
|
10 |
+
# - Pricing table
|
11 |
+
# - Testimonials
|
12 |
+
# - Contact form (Formspree) with client-side validation
|
13 |
+
# - SEO meta tags, Open Graph, JSON-LD schema
|
14 |
+
# - Lazy-loading images, reduced motion support
|
15 |
+
# ========================================================= -->
|
16 |
<!DOCTYPE html>
|
17 |
+
<html lang="en" class="scroll-smooth">
|
18 |
<head>
|
19 |
<meta charset="utf-8" />
|
20 |
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
21 |
+
<title>NeuralNomadAI — AI Imagery & Creative Automation</title>
|
22 |
+
|
23 |
+
<!-- SEO -->
|
24 |
+
<meta name="description" content="NeuralNomadAI crafts stunning AI-generated visuals, prompt engineering, and creative automation for creators, brands, and marketers." />
|
25 |
+
<meta name="keywords" content="AI images, prompt engineering, creative automation, Stable Diffusion, Midjourney, DALL·E, brand assets" />
|
26 |
+
<link rel="canonical" href="https://example.com/" />
|
27 |
+
|
28 |
+
<!-- Open Graph -->
|
29 |
+
<meta property="og:title" content="NeuralNomadAI — AI Imagery & Creative Automation" />
|
30 |
+
<meta property="og:description" content="Get stunning AI images, documented prompts, and automation. Fast turnaround, unlimited revisions." />
|
31 |
+
<meta property="og:type" content="website" />
|
32 |
+
<meta property="og:url" content="https://example.com/" />
|
33 |
+
<meta property="og:image" content="https://images.unsplash.com/photo-1526378722484-bd91ca387e72?q=80&w=1600&auto=format&fit=crop" />
|
34 |
+
|
35 |
+
<!-- Twitter -->
|
36 |
+
<meta name="twitter:card" content="summary_large_image" />
|
37 |
+
<meta name="twitter:title" content="NeuralNomadAI — AI Imagery & Creative Automation" />
|
38 |
+
<meta name="twitter:description" content="Get stunning AI images, documented prompts, and automation. Fast turnaround, unlimited revisions." />
|
39 |
+
<meta name="twitter:image" content="https://images.unsplash.com/photo-1526378722484-bd91ca387e72?q=80&w=1600&auto=format&fit=crop" />
|
40 |
+
|
41 |
+
<!-- Favicon (replace with your own) -->
|
42 |
+
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='128' height='128'%3E%3Ctext y='1em' font-size='96'%3E🤖%3C/text%3E%3C/svg%3E">
|
43 |
+
|
44 |
+
<!-- Fonts -->
|
45 |
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
46 |
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
47 |
+
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&display=swap" rel="stylesheet" />
|
48 |
+
|
49 |
+
<!-- Tailwind (CDN) -->
|
50 |
+
<script src="https://cdn.tailwindcss.com?plugins=forms,typography,container-queries"></script>
|
51 |
+
<script>
|
52 |
+
tailwind.config = {
|
53 |
+
darkMode: 'class',
|
54 |
+
theme: {
|
55 |
+
extend: {
|
56 |
+
fontFamily: { display: ['Space Grotesk', 'system-ui', 'ui-sans-serif', 'sans-serif'] },
|
57 |
+
colors: {
|
58 |
+
primary: '#1193d4',
|
59 |
+
bgLight: '#f6f7f8',
|
60 |
+
bgDark: '#0c1418'
|
61 |
+
},
|
62 |
+
boxShadow: {
|
63 |
+
soft: '0 8px 30px rgba(2, 12, 27, 0.08)'
|
64 |
+
}
|
65 |
+
}
|
66 |
+
}
|
67 |
+
};
|
68 |
+
</script>
|
69 |
|
70 |
+
<!-- Base styles -->
|
71 |
+
<link rel="stylesheet" href="styles.css" />
|
72 |
+
|
73 |
+
<!-- Prefers reduced motion -->
|
74 |
+
<style>
|
75 |
+
@media (prefers-reduced-motion: reduce) {
|
76 |
+
* { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
|
77 |
+
}
|
78 |
+
</style>
|
79 |
+
|
80 |
+
<!-- Schema.org JSON-LD -->
|
81 |
+
<script type="application/ld+json">
|
82 |
+
{
|
83 |
+
"@context":"https://schema.org",
|
84 |
+
"@type":"ProfessionalService",
|
85 |
+
"name":"NeuralNomadAI",
|
86 |
+
"url":"https://example.com/",
|
87 |
+
"description":"AI image generation, prompt engineering, and creative automation.",
|
88 |
+
"areaServed":"Worldwide",
|
89 |
+
"image":"https://images.unsplash.com/photo-1526378722484-bd91ca387e72?q=80&w=1600&auto=format&fit=crop",
|
90 |
+
"sameAs": ["https://www.instagram.com/","https://www.linkedin.com/","https://www.fiverr.com/"],
|
91 |
+
"offers": { "@type":"Offer","priceCurrency":"USD","availability":"https://schema.org/InStock" }
|
92 |
+
}
|
93 |
+
</script>
|
94 |
+
</head>
|
95 |
|
96 |
+
<body class="bg-bgLight text-slate-800 dark:bg-bgDark dark:text-slate-200 font-display">
|
97 |
+
<!-- Theme Boot: prevent flash -->
|
98 |
+
<script>
|
99 |
+
(function(){
|
100 |
+
const ls = localStorage.getItem('nnai-theme');
|
101 |
+
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
102 |
+
if (ls === 'dark' || (!ls && prefersDark)) document.documentElement.classList.add('dark');
|
103 |
+
})();
|
104 |
+
</script>
|
105 |
|
106 |
+
<!-- Header -->
|
107 |
+
<header class="sticky top-0 z-50 backdrop-blur bg-bgLight/80 dark:bg-bgDark/80 border-b border-slate-200/60 dark:border-slate-700/50">
|
108 |
+
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between">
|
109 |
+
<a href="#home" class="flex items-center gap-3 group" data-route>
|
110 |
+
<svg width="32" height="32" viewBox="0 0 48 48" class="text-primary group-hover:scale-105 transition" aria-hidden="true">
|
111 |
+
<path fill="currentColor" d="M39.6 34.1V13.9c0 1.9-2.7 3.5-6.8 4.5-2.5.6-5.5 1-8.8 1s-6.3-.4-8.8-1c-4.1-1-6.8-2.6-6.8-4.5v20.3c0 1.9 2.7 3.5 6.8 4.5 2.5.6 5.5 1 8.8 1s6.3-.4 8.8-1c4.1-1 6.8-2.6 6.8-4.5z"/>
|
112 |
+
</svg>
|
113 |
+
<span class="text-lg font-bold">NeuralNomadAI</span>
|
114 |
+
</a>
|
115 |
+
|
116 |
+
<!-- Desktop Nav -->
|
117 |
+
<nav class="hidden md:flex items-center gap-6" aria-label="Primary">
|
118 |
+
<a class="nav-link" href="#home" data-route>Home</a>
|
119 |
+
<a class="nav-link" href="#services" data-route>Services</a>
|
120 |
+
<a class="nav-link" href="#portfolio" data-route>Portfolio</a>
|
121 |
+
<a class="nav-link" href="#pricing" data-route>Pricing</a>
|
122 |
+
<a class="nav-link" href="#testimonials" data-route>Testimonials</a>
|
123 |
+
<a class="nav-link" href="#about" data-route>About</a>
|
124 |
+
<a class="nav-link" href="#contact" data-route>Contact</a>
|
125 |
</nav>
|
126 |
+
|
127 |
+
<div class="flex items-center gap-3">
|
128 |
+
<button id="themeToggle" class="rounded-full p-2 hover:bg-slate-200/60 dark:hover:bg-slate-700/40" aria-label="Toggle dark mode">
|
129 |
+
<span class="sr-only">Toggle theme</span>
|
130 |
+
<svg class="h-5 w-5 hidden dark:block" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M21.64 13A9 9 0 1111 2.36 7 7 0 0021.64 13z"/></svg>
|
131 |
+
<svg class="h-5 w-5 dark:hidden" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M6.76 4.84l-1.8-1.79L3.17 4.84l1.79 1.79 1.8-1.79zM1 13h3v-2H1v2zm10-9h2V1h-2v3zm7.03 2.03l1.79-1.79-1.79-1.79-1.79 1.79 1.79 1.79zM20 11v2h3v-2h-3zm-8 9h2v3h-2v-3zM4.22 18.36l-1.79 1.79 1.79 1.79 1.79-1.79-1.79-1.79zM17.24 19.16l1.79 1.79 1.79-1.79-1.79-1.79-1.79 1.79z"/></svg>
|
132 |
+
</button>
|
133 |
+
<a href="#contact" data-route class="hidden sm:inline-block rounded-lg bg-primary px-4 py-2 text-sm font-bold text-white shadow hover:opacity-90 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary">Get Started</a>
|
134 |
+
|
135 |
+
<!-- Mobile menu -->
|
136 |
+
<button id="menuBtn" class="md:hidden p-2 rounded hover:bg-slate-200/60 dark:hover:bg-slate-700/40" aria-expanded="false" aria-controls="mobileMenu" aria-label="Toggle menu">
|
137 |
+
<svg class="h-6 w-6" viewBox="0 0 24 24" fill="currentColor"><path d="M3 6h18v2H3V6zm0 5h18v2H3v-2zm0 5h18v2H3v-2z"/></svg>
|
138 |
+
</button>
|
139 |
</div>
|
140 |
</div>
|
141 |
+
|
142 |
+
<!-- Mobile Drawer -->
|
143 |
+
<div id="mobileMenu" class="md:hidden hidden border-t border-slate-200 dark:border-slate-700">
|
144 |
+
<nav class="px-4 py-2 flex flex-col gap-1" aria-label="Mobile">
|
145 |
+
<a class="mobile-link" href="#home" data-route>Home</a>
|
146 |
+
<a class="mobile-link" href="#services" data-route>Services</a>
|
147 |
+
<a class="mobile-link" href="#portfolio" data-route>Portfolio</a>
|
148 |
+
<a class="mobile-link" href="#pricing" data-route>Pricing</a>
|
149 |
+
<a class="mobile-link" href="#testimonials" data-route>Testimonials</a>
|
150 |
+
<a class="mobile-link" href="#about" data-route>About</a>
|
151 |
+
<a class="mobile-link" href="#contact" data-route>Contact</a>
|
152 |
+
</nav>
|
153 |
+
</div>
|
154 |
</header>
|
155 |
|
156 |
+
<main id="app" class="min-h-[70vh]">
|
157 |
+
<!-- ======================== HOME ======================== -->
|
158 |
+
<section id="home" class="section pt-12 sm:pt-16">
|
159 |
+
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
160 |
+
<div class="relative overflow-hidden rounded-2xl shadow-soft">
|
161 |
+
<img
|
162 |
+
src="https://images.unsplash.com/photo-1526378722484-bd91ca387e72?q=80&w=1600&auto=format&fit=crop"
|
163 |
+
alt="Abstract neural aesthetic"
|
164 |
+
class="w-full aspect-[16/7] object-cover"
|
165 |
+
loading="lazy"
|
166 |
+
/>
|
167 |
+
<div class="absolute inset-0 bg-black/50 backdrop-blur-[1px]"></div>
|
168 |
+
<div class="absolute inset-0 flex items-center justify-center text-center p-6">
|
169 |
+
<div class="max-w-3xl text-white">
|
170 |
+
<h1 class="text-4xl sm:text-5xl lg:text-6xl font-bold tracking-tight">Get Stunning AI Images That Match Your Brief — Fast</h1>
|
171 |
+
<p class="mt-4 text-lg opacity-90">AI-powered visuals, custom prompts & creative automation — delivered with unlimited revisions until you’re thrilled.</p>
|
172 |
+
<div class="mt-6 flex flex-wrap justify-center gap-3">
|
173 |
+
<a href="https://formspree.io/f/your-id" class="btn-primary" rel="noopener">🔥 Hire on Fiverr →</a>
|
174 |
+
<a href="#portfolio" data-route class="btn-secondary">View Portfolio →</a>
|
175 |
+
</div>
|
176 |
+
</div>
|
177 |
+
</div>
|
178 |
+
</div>
|
179 |
|
180 |
+
<!-- Trust row -->
|
181 |
+
<div class="grid grid-cols-2 md:grid-cols-5 gap-3 text-center mt-10">
|
182 |
+
<div class="pill">✓ 5-Star Rated</div>
|
183 |
+
<div class="pill">✓ 100+ Projects</div>
|
184 |
+
<div class="pill">✓ 24-48 Hour Delivery</div>
|
185 |
+
<div class="pill">✓ Unlimited Revisions</div>
|
186 |
+
<div class="pill col-span-2 md:col-span-1">✓ Commercial License</div>
|
187 |
+
</div>
|
188 |
|
189 |
+
<!-- Mini showcase -->
|
190 |
+
<div class="py-16">
|
191 |
+
<h2 class="h2 text-center">Visual Showcase</h2>
|
192 |
+
<div class="mt-10 grid gap-6 md:grid-cols-3">
|
193 |
+
<button class="gallery-card" data-lightbox="https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?q=80&w=1600&auto=format&fit=crop" aria-label="Open Fantasy Landscape">
|
194 |
+
<img class="gallery-img" alt="AI Illustration — Fantasy Landscape" loading="lazy"
|
195 |
+
src="https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?q=80&w=1200&auto=format&fit=crop" />
|
196 |
+
<span class="gallery-caption">AI Illustration — Fantasy Landscape</span>
|
197 |
+
</button>
|
198 |
+
<button class="gallery-card" data-lightbox="https://images.unsplash.com/photo-1518779578993-ec3579fee39f?q=80&w=1600&auto=format&fit=crop" aria-label="Open Product Mockup">
|
199 |
+
<img class="gallery-img" alt="Product Photography Mockup" loading="lazy"
|
200 |
+
src="https://images.unsplash.com/photo-1518779578993-ec3579fee39f?q=80&w=1200&auto=format&fit=crop" />
|
201 |
+
<span class="gallery-caption">Product Photography — Tech Device</span>
|
202 |
+
</button>
|
203 |
+
<button class="gallery-card" data-lightbox="https://images.unsplash.com/photo-1503023345310-bd7c1de61c7d?q=80&w=1600&auto=format&fit=crop" aria-label="Open Brand Assets">
|
204 |
+
<img class="gallery-img" alt="Brand Asset Pack" loading="lazy"
|
205 |
+
src="https://images.unsplash.com/photo-1503023345310-bd7c1de61c7d?q=80&w=1200&auto=format&fit=crop" />
|
206 |
+
<span class="gallery-caption">Brand Asset Pack — Logo Variations</span>
|
207 |
+
</button>
|
208 |
</div>
|
209 |
+
<div class="callout mt-12 text-center">
|
210 |
+
<h3 class="h3">Fast & Reliable. Perfectly Tailored. Full Commercial Rights.</h3>
|
211 |
+
<p class="mt-2 opacity-80">Based in UAE timezone (GST) with responsive support and clear revisions.</p>
|
212 |
+
<a href="#services" data-route class="btn-primary mt-5">View Services & Packages</a>
|
|
|
|
|
|
|
|
|
213 |
</div>
|
214 |
</div>
|
215 |
</div>
|
216 |
+
</section>
|
217 |
+
|
218 |
+
<!-- ======================== SERVICES ======================== -->
|
219 |
+
<section id="services" class="section">
|
220 |
+
<div class="container">
|
221 |
+
<div class="text-center max-w-3xl mx-auto">
|
222 |
+
<h2 class="h2">Services & Packages</h2>
|
223 |
+
<p class="mt-3 text-lg opacity-80">Choose the perfect package. Every gig includes unlimited revisions and commercial licensing.</p>
|
224 |
+
</div>
|
225 |
|
226 |
+
<div class="grid gap-6 lg:grid-cols-2 mt-12">
|
227 |
+
<!-- Cards -->
|
228 |
+
<article class="card">
|
229 |
+
<h3 class="h4">Custom AI Image Generation</h3>
|
230 |
+
<p>Create stunning, unique AI images tailored to your brief. Ideal for marketing, social, product visuals, and concepting.</p>
|
231 |
+
<a class="link-chip" href="https://formspree.io/f/your-id">Hire on Fiverr →</a>
|
232 |
+
</article>
|
233 |
+
|
234 |
+
<article class="card">
|
235 |
+
<h3 class="h4">Professional Prompt Engineering</h3>
|
236 |
+
<p>Get expertly crafted prompts that generate exactly what you envision—repeatable and documented.</p>
|
237 |
+
<a class="link-chip" href="https://formspree.io/f/your-id">Hire on Fiverr →</a>
|
238 |
+
</article>
|
239 |
+
|
240 |
+
<article class="card">
|
241 |
+
<h3 class="h4">AI-Powered Image Transformations</h3>
|
242 |
+
<p>Elevate existing images with style transfers, background changes, upscaling, and enhancements.</p>
|
243 |
+
<a class="link-chip" href="https://formspree.io/f/your-id">Hire on Fiverr →</a>
|
244 |
+
</article>
|
245 |
+
|
246 |
+
<article class="card">
|
247 |
+
<h3 class="h4">Complete AI Brand Asset Packages</h3>
|
248 |
+
<p>Build a cohesive visual identity: logos, icons, social templates, and more—matched to your aesthetic.</p>
|
249 |
+
<a class="link-chip" href="https://formspree.io/f/your-id">Hire on Fiverr →</a>
|
250 |
+
</article>
|
251 |
+
|
252 |
+
<article class="card lg:col-span-2">
|
253 |
+
<h3 class="h4">Custom AI Workflow Automation</h3>
|
254 |
+
<p>Stop repetitive tasks. We’ll build custom automation that generates images, processes content, and scales output.</p>
|
255 |
+
<a class="link-chip" href="#contact" data-route>Contact for Custom Quote →</a>
|
256 |
+
</article>
|
257 |
+
</div>
|
258 |
+
|
259 |
+
<!-- Prompt Ideator (client-side only, mock) -->
|
260 |
+
<div class="mt-16 text-center">
|
261 |
+
<h3 class="h3">✨ AI Prompt Ideator</h3>
|
262 |
+
<p class="opacity-80">Have an idea? Expand it into a rich, detailed prompt (client-side demo).</p>
|
263 |
+
<div class="mt-6 flex flex-col sm:flex-row gap-3 max-w-xl mx-auto">
|
264 |
+
<input id="promptInput" class="input" type="text" placeholder="e.g., a cat astronaut on Mars" autocomplete="off" />
|
265 |
+
<button id="promptBtn" class="btn-primary">Generate Prompt</button>
|
266 |
+
</div>
|
267 |
+
<output id="promptOut" class="mt-4 hidden p-4 bg-primary/10 dark:bg-primary/20 rounded text-left whitespace-pre-wrap"></output>
|
268 |
+
</div>
|
269 |
+
</div>
|
270 |
</section>
|
|
|
271 |
|
272 |
+
<!-- ======================== PORTFOLIO ======================== -->
|
273 |
+
<section id="portfolio" class="section">
|
274 |
+
<div class="container">
|
275 |
+
<div class="text-center max-w-3xl mx-auto">
|
276 |
+
<h2 class="h2">Featured Work</h2>
|
277 |
+
<p class="mt-3 opacity-80">Real projects. Real results. See what NeuralNomadAI can create for you.</p>
|
278 |
+
</div>
|
279 |
+
|
280 |
+
<!-- Filters -->
|
281 |
+
<div class="mt-8 flex flex-wrap gap-2 justify-center">
|
282 |
+
<button class="filter-chip active" data-filter="*">All</button>
|
283 |
+
<button class="filter-chip" data-filter="illustration">Illustration</button>
|
284 |
+
<button class="filter-chip" data-filter="photoreal">Photoreal</button>
|
285 |
+
<button class="filter-chip" data-filter="logo">Logo/Icon</button>
|
286 |
+
<button class="filter-chip" data-filter="ui">UI Mockups</button>
|
287 |
+
</div>
|
288 |
+
|
289 |
+
<!-- Grid -->
|
290 |
+
<div id="portfolioGrid" class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-3">
|
291 |
+
<!-- Item -->
|
292 |
+
<button class="portfolio-card" data-cat="illustration" data-lightbox="https://images.unsplash.com/photo-1472214103451-9374bd1c798e?q=80&w=1600&auto=format&fit=crop" aria-label="Fantasy Character Set">
|
293 |
+
<img alt="Fantasy Game Character Set" loading="lazy"
|
294 |
+
src="https://images.unsplash.com/photo-1472214103451-9374bd1c798e?q=80&w=1200&auto=format&fit=crop" />
|
295 |
+
<div class="p-3">
|
296 |
+
<h3 class="font-semibold">Fantasy Game Character Set</h3>
|
297 |
+
<p class="text-sm opacity-80">Complete character design for an indie game.</p>
|
298 |
+
</div>
|
299 |
+
</button>
|
300 |
+
|
301 |
+
<button class="portfolio-card" data-cat="photoreal" data-lightbox="https://images.unsplash.com/photo-1483985988355-763728e1935b?q=80&w=1600&auto=format&fit=crop" aria-label="E-commerce Product Photos">
|
302 |
+
<img alt="E-commerce Product Photos" loading="lazy"
|
303 |
+
src="https://images.unsplash.com/photo-1483985988355-763728e1935b?q=80&w=1200&auto=format&fit=crop" />
|
304 |
+
<div class="p-3">
|
305 |
+
<h3 class="font-semibold">E-commerce Product Photos</h3>
|
306 |
+
<p class="text-sm opacity-80">Photorealistic product shots for Shopify.</p>
|
307 |
+
</div>
|
308 |
+
</button>
|
309 |
+
|
310 |
+
<button class="portfolio-card" data-cat="logo" data-lightbox="https://images.unsplash.com/photo-1504805572947-34fad45aed93?q=80&w=1600&auto=format&fit=crop" aria-label="Tech Startup Brand Kit">
|
311 |
+
<img alt="Tech Startup Brand Kit" loading="lazy"
|
312 |
+
src="https://images.unsplash.com/photo-1504805572947-34fad45aed93?q=80&w=1200&auto=format&fit=crop" />
|
313 |
+
<div class="p-3">
|
314 |
+
<h3 class="font-semibold">Tech Startup Brand Kit</h3>
|
315 |
+
<p class="text-sm opacity-80">Complete logo + identity system.</p>
|
316 |
+
</div>
|
317 |
+
</button>
|
318 |
+
|
319 |
+
<button class="portfolio-card" data-cat="ui" data-lightbox="https://images.unsplash.com/photo-1516542076529-1ea3854896e1?q=80&w=1600&auto=format&fit=crop" aria-label="SaaS UI Mockups">
|
320 |
+
<img alt="SaaS UI Mockups" loading="lazy"
|
321 |
+
src="https://images.unsplash.com/photo-1516542076529-1ea3854896e1?q=80&w=1200&auto=format&fit=crop" />
|
322 |
+
<div class="p-3">
|
323 |
+
<h3 class="font-semibold">SaaS UI Mockups</h3>
|
324 |
+
<p class="text-sm opacity-80">Dashboard + onboarding visuals.</p>
|
325 |
+
</div>
|
326 |
+
</button>
|
327 |
+
|
328 |
+
<button class="portfolio-card" data-cat="illustration" data-lightbox="https://images.unsplash.com/photo-1497215728101-495ebbda99b3?q=80&w=1600&auto=format&fit=crop" aria-label="Editorial Illustration Pack">
|
329 |
+
<img alt="Editorial Illustration" loading="lazy"
|
330 |
+
src="https://images.unsplash.com/photo-1497215728101-495ebbda99b3?q=80&w=1200&auto=format&fit=crop" />
|
331 |
+
<div class="p-3">
|
332 |
+
<h3 class="font-semibold">Editorial Illustration Pack</h3>
|
333 |
+
<p class="text-sm opacity-80">Magazine-friendly art direction.</p>
|
334 |
+
</div>
|
335 |
+
</button>
|
336 |
+
|
337 |
+
<button class="portfolio-card" data-cat="photoreal" data-lightbox="https://images.unsplash.com/photo-1520975916090-3105956dac38?q=80&w=1600&auto=format&fit=crop" aria-label="Lifestyle Photos">
|
338 |
+
<img alt="Lifestyle Photos" loading="lazy"
|
339 |
+
src="https://images.unsplash.com/photo-1520975916090-3105956dac38?q=80&w=1200&auto=format&fit=crop" />
|
340 |
+
<div class="p-3">
|
341 |
+
<h3 class="font-semibold">Lifestyle Photos</h3>
|
342 |
+
<p class="text-sm opacity-80">Brand-consistent live sets.</p>
|
343 |
+
</div>
|
344 |
+
</button>
|
345 |
+
</div>
|
346 |
</div>
|
347 |
+
</section>
|
|
|
348 |
|
349 |
+
<!-- ======================== PRICING ======================== -->
|
350 |
+
<section id="pricing" class="section">
|
351 |
+
<div class="container">
|
352 |
+
<div class="text-center max-w-3xl mx-auto">
|
353 |
+
<h2 class="h2">Transparent Pricing, Exceptional Value</h2>
|
354 |
+
<p class="mt-3 opacity-80">Pick a tier that matches your project. Unlimited revisions, commercial license across the board.</p>
|
|
|
|
|
|
|
|
|
355 |
</div>
|
|
|
356 |
|
357 |
+
<div class="overflow-x-auto mt-10">
|
358 |
+
<table class="w-full min-w-[720px] border-separate border-spacing-0 rounded-xl overflow-hidden">
|
359 |
+
<thead>
|
360 |
+
<tr class="bg-primary/10 dark:bg-primary/20">
|
361 |
+
<th class="th">Package Tier</th>
|
362 |
+
<th class="th text-center">Basic</th>
|
363 |
+
<th class="th text-center">Standard</th>
|
364 |
+
<th class="th text-center">Premium</th>
|
365 |
+
</tr>
|
366 |
+
</thead>
|
367 |
+
<tbody class="divide-y divide-slate-200 dark:divide-slate-700">
|
368 |
+
<tr><td class="td-section" colspan="4">Deliverables</td></tr>
|
369 |
+
<tr><td class="td">Image Count</td><td class="td text-center">3–5</td><td class="td text-center">10–15</td><td class="td text-center">20–30</td></tr>
|
370 |
+
<tr><td class="td">Resolution</td><td class="td text-center">Up to 2K</td><td class="td text-center">Up to 4K</td><td class="td text-center">Up to 8K</td></tr>
|
371 |
+
<tr><td class="td-section" colspan="4">Included</td></tr>
|
372 |
+
<tr><td class="td">Commercial License</td><td class="td text-center">✓</td><td class="td text-center">✓</td><td class="td text-center">✓</td></tr>
|
373 |
+
<tr><td class="td">Unlimited Revisions</td><td class="td text-center">✓</td><td class="td text-center">✓</td><td class="td text-center">✓</td></tr>
|
374 |
+
<tr><td class="td">Prompt Documentation</td><td class="td text-center">—</td><td class="td text-center">✓</td><td class="td text-center">✓</td></tr>
|
375 |
+
<tr><td class="td-section" colspan="4">Delivery & Support</td></tr>
|
376 |
+
<tr><td class="td">Turnaround Time</td><td class="td text-center">48–72h</td><td class="td text-center">24–48h</td><td class="td text-center">24h</td></tr>
|
377 |
+
<tr><td class="td">Priority Support</td><td class="td text-center">—</td><td class="td text-center">—</td><td class="td text-center">✓</td></tr>
|
378 |
+
</tbody>
|
379 |
+
</table>
|
380 |
</div>
|
381 |
</div>
|
382 |
+
</section>
|
|
|
383 |
|
384 |
+
<!-- ======================== TESTIMONIALS ======================== -->
|
385 |
+
<section id="testimonials" class="section">
|
386 |
+
<div class="container">
|
387 |
+
<div class="text-center max-w-3xl mx-auto">
|
388 |
+
<h2 class="h2">What Clients Say</h2>
|
389 |
+
<p class="mt-3 opacity-80">Real feedback from real projects. Your success is the north star.</p>
|
390 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
391 |
|
392 |
+
<div class="grid gap-6 md:grid-cols-3 mt-10">
|
393 |
+
<blockquote class="quote">
|
394 |
+
<p>“NeuralNomadAI delivered exactly what I envisioned—faster than expected. Unlimited revisions got us to perfect.”</p>
|
395 |
+
<footer>— Sarah M., Marketing Director</footer>
|
396 |
+
</blockquote>
|
397 |
+
<blockquote class="quote">
|
398 |
+
<p>“First time someone truly nailed our brand aesthetic. Prompt docs help us reproduce the style. Worth it.”</p>
|
399 |
+
<footer>— James K., E-commerce Founder</footer>
|
400 |
+
</blockquote>
|
401 |
+
<blockquote class="quote">
|
402 |
+
<p>“The automation tool saves me 10+ hours every week. Absolute game-changer for content ops.”</p>
|
403 |
+
<footer>— Lisa R., Creator</footer>
|
404 |
+
</blockquote>
|
405 |
+
</div>
|
406 |
+
</div>
|
407 |
+
</section>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
408 |
|
409 |
+
<!-- ======================== ABOUT ======================== -->
|
410 |
+
<section id="about" class="section">
|
411 |
+
<div class="container">
|
412 |
+
<div class="grid gap-10 lg:grid-cols-2 items-start">
|
413 |
+
<div>
|
414 |
+
<h2 class="h2">About NeuralNomadAI</h2>
|
415 |
+
<p class="mt-3 opacity-80">Where creativity shakes hands with cutting-edge AI. We craft custom imagery and automations that help brands stand out without breaking the laws of time or budget.</p>
|
416 |
+
<div class="grid mt-8 gap-4 sm:grid-cols-2">
|
417 |
+
<div class="about-card">
|
418 |
+
<h3 class="font-bold">AI Image Generation</h3>
|
419 |
+
<p class="text-sm opacity-80">Precision prompts across Midjourney, DALL·E, and Stable Diffusion.</p>
|
420 |
+
</div>
|
421 |
+
<div class="about-card">
|
422 |
+
<h3 class="font-bold">Style Adaptation</h3>
|
423 |
+
<p class="text-sm opacity-80">Photoreal, illustrative—any aesthetic, faithfully reproduced.</p>
|
424 |
+
</div>
|
425 |
+
<div class="about-card">
|
426 |
+
<h3 class="font-bold">Technical Excellence</h3>
|
427 |
+
<p class="text-sm opacity-80">High-res outputs and production-ready assets.</p>
|
428 |
+
</div>
|
429 |
+
<div class="about-card">
|
430 |
+
<h3 class="font-bold">Workflow Automation</h3>
|
431 |
+
<p class="text-sm opacity-80">Custom tooling to scale content production.</p>
|
432 |
+
</div>
|
433 |
+
</div>
|
434 |
+
</div>
|
435 |
+
<div class="relative">
|
436 |
+
<img class="rounded-xl shadow-soft" alt="Studio mood board"
|
437 |
+
src="https://images.unsplash.com/photo-1524145949-2e0ff4e04f68?q=80&w=1400&auto=format&fit=crop" loading="lazy" />
|
438 |
+
</div>
|
439 |
+
</div>
|
440 |
+
</div>
|
441 |
+
</section>
|
442 |
|
443 |
+
<!-- ======================== CONTACT ======================== -->
|
444 |
+
<section id="contact" class="section">
|
445 |
+
<div class="container">
|
446 |
+
<div class="text-center max-w-2xl mx-auto">
|
447 |
+
<h2 class="h2">Let’s Build Something Amazing</h2>
|
448 |
+
<p class="mt-3 opacity-80">Fastest path: hire on Fiverr. For custom projects, send a message below.</p>
|
449 |
+
<div class="mt-5">
|
450 |
+
<a href="https://formspree.io/f/your-id" class="btn-primary" rel="noopener">🔥 Browse My Fiverr Gigs →</a>
|
451 |
+
</div>
|
452 |
+
</div>
|
453 |
|
454 |
+
<form id="contactForm" class="mt-10 max-w-2xl mx-auto grid gap-4" action="https://formspree.io/f/your-id" method="POST" novalidate>
|
455 |
+
<div>
|
456 |
+
<label class="label" for="name">Name</label>
|
457 |
+
<input class="input" id="name" name="name" required autocomplete="name" />
|
458 |
+
</div>
|
459 |
+
<div>
|
460 |
+
<label class="label" for="email">Email</label>
|
461 |
+
<input class="input" id="email" name="email" type="email" required autocomplete="email" />
|
462 |
+
</div>
|
463 |
+
<div>
|
464 |
+
<label class="label" for="message">Project Brief</label>
|
465 |
+
<textarea class="input min-h-[140px]" id="message" name="message" required placeholder="Tell me about your goals, audience, visual style, and deliverables."></textarea>
|
466 |
+
</div>
|
467 |
|
468 |
+
<fieldset class="mt-2">
|
469 |
+
<legend class="label">Budget (USD)</legend>
|
470 |
+
<div class="flex flex-wrap gap-2 mt-2">
|
471 |
+
<label class="chip"><input type="radio" name="budget" value="500-1000" required /> <span>$500–$1k</span></label>
|
472 |
+
<label class="chip"><input type="radio" name="budget" value="1000-2500" /> <span>$1k–$2.5k</span></label>
|
473 |
+
<label class="chip"><input type="radio" name="budget" value="2500-5000" /> <span>$2.5k–$5k</span></label>
|
474 |
+
<label class="chip"><input type="radio" name="budget" value="5000+" /> <span>$5k+</span></label>
|
475 |
+
</div>
|
476 |
+
</fieldset>
|
477 |
|
478 |
+
<div class="flex items-center gap-3">
|
479 |
+
<button class="btn-primary" type="submit">Send Message</button>
|
480 |
+
<p id="formMsg" class="text-sm"></p>
|
481 |
+
</div>
|
482 |
+
</form>
|
483 |
+
</div>
|
484 |
+
</section>
|
485 |
+
</main>
|
486 |
|
487 |
+
<!-- Footer -->
|
488 |
+
<footer class="border-t border-slate-200/60 dark:border-slate-700/50">
|
489 |
+
<div class="container py-10 text-center">
|
490 |
+
<nav class="flex items-center justify-center gap-5">
|
491 |
+
<a class="link muted" href="https://formspree.io/f/your-id" rel="noopener">Fiverr</a>
|
492 |
+
<a class="link muted" href="https://www.linkedin.com/" rel="noopener">LinkedIn</a>
|
493 |
+
<a class="link muted" href="https://www.instagram.com/" rel="noopener">Instagram</a>
|
494 |
+
</nav>
|
495 |
+
<p class="text-xs opacity-70 mt-4">© 2024–2025 NeuralNomadAI. All rights reserved.</p>
|
496 |
+
<p class="text-xs opacity-60">Client files remain strictly confidential. Work appears in portfolio only with explicit permission.</p>
|
497 |
+
</div>
|
498 |
+
</footer>
|
499 |
|
500 |
+
<!-- Lightbox Modal -->
|
501 |
+
<dialog id="lightbox" class="rounded-xl p-0 backdrop:bg-black/60">
|
502 |
+
<button id="lightboxClose" class="absolute top-3 right-3 bg-black/60 text-white rounded-full p-2" aria-label="Close image">
|
503 |
+
✕
|
504 |
+
</button>
|
505 |
+
<img id="lightboxImg" class="max-h-[90vh] w-auto object-contain rounded-xl" alt="Enlarged work sample" />
|
506 |
+
</dialog>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
507 |
|
508 |
+
<!-- App Scripts -->
|
509 |
+
<script src="script.js" defer></script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
510 |
</body>
|
511 |
</html>
|